Skip to content

Commit

Permalink
Add energy device class to (kilo)calories sensors (#4698)
Browse files Browse the repository at this point in the history
- Add energy device class to sensors which report calories, which was added in core 2024.10
 - Fix Wear daily calories unit
  • Loading branch information
jpelgrom authored Oct 7, 2024
1 parent 83d8079 commit ad97d02
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ class HealthConnectSensorManager : SensorManager {
commonR.string.basic_sensor_name_active_calories_burned,
commonR.string.sensor_description_active_calories_burned,
"mdi:fire",
"energy",
unitOfMeasurement = "kcal",
entityCategory = SensorManager.ENTITY_CATEGORY_DIAGNOSTIC,
updateType = SensorManager.BasicSensor.UpdateType.WORKER
Expand All @@ -43,6 +44,7 @@ class HealthConnectSensorManager : SensorManager {
commonR.string.basic_sensor_name_total_calories_burned,
commonR.string.sensor_description_total_calories_burned,
"mdi:fire",
"energy",
unitOfMeasurement = "kcal",
entityCategory = SensorManager.ENTITY_CATEGORY_DIAGNOSTIC,
updateType = SensorManager.BasicSensor.UpdateType.WORKER
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -704,6 +704,7 @@ class IntegrationRepositoryImpl @AssistedInject constructor(
val canRegisterDeviceClassDistance = server.version?.isAtLeast(2022, 10, 0) == true
val canRegisterNullProperties = server.version?.isAtLeast(2023, 2, 0) == true
val canRegisterDeviceClassEnum = server.version?.isAtLeast(2023, 1, 0) == true
val canRegisterDeviceClassEnergyCalories = server.version?.isAtLeast(2024, 10, 0) == true

val registrationData = SensorRegistrationRequest(
sensorRegistration.uniqueId,
Expand All @@ -721,6 +722,13 @@ class IntegrationRepositoryImpl @AssistedInject constructor(
when (sensorRegistration.deviceClass) {
"distance" -> if (canRegisterDeviceClassDistance) sensorRegistration.deviceClass else null
"enum" -> if (canRegisterDeviceClassEnum) sensorRegistration.deviceClass else null
"energy" -> if (
canRegisterDeviceClassEnergyCalories || sensorRegistration.unitOfMeasurement !in listOf("cal", "kcal")
) {
sensorRegistration.deviceClass
} else {
null
}
else -> sensorRegistration.deviceClass
},
sensorRegistration.unitOfMeasurement,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ class HealthServicesSensorManager : SensorManager {
commonR.string.sensor_name_daily_calories,
commonR.string.sensor_description_daily_calories,
"mdi:fire",
unitOfMeasurement = "kcal",
"energy",
unitOfMeasurement = "cal",
entityCategory = SensorManager.ENTITY_CATEGORY_DIAGNOSTIC,
updateType = SensorManager.BasicSensor.UpdateType.WORKER
)
Expand Down

0 comments on commit ad97d02

Please sign in to comment.