mirror of
https://github.com/home-assistant/core.git
synced 2025-08-05 13:45:12 +02:00
Updating device and state classes
This commit is contained in:
@@ -13,6 +13,8 @@ from homeassistant.const import (
|
|||||||
CONF_CLIENT_ID,
|
CONF_CLIENT_ID,
|
||||||
CONF_CLIENT_SECRET,
|
CONF_CLIENT_SECRET,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
|
UnitOfEnergy,
|
||||||
|
UnitOfFrequency,
|
||||||
UnitOfLength,
|
UnitOfLength,
|
||||||
UnitOfMass,
|
UnitOfMass,
|
||||||
UnitOfTime,
|
UnitOfTime,
|
||||||
@@ -25,7 +27,9 @@ ATTR_LAST_SAVED_AT: Final = "last_saved_at"
|
|||||||
|
|
||||||
ATTR_DURATION: Final = "duration"
|
ATTR_DURATION: Final = "duration"
|
||||||
ATTR_DISTANCE: Final = "distance"
|
ATTR_DISTANCE: Final = "distance"
|
||||||
|
ATTR_ENERGY: Final = "calories"
|
||||||
ATTR_ELEVATION: Final = "elevation"
|
ATTR_ELEVATION: Final = "elevation"
|
||||||
|
ATTR_FREQUENCY: Final = "bpm"
|
||||||
ATTR_HEIGHT: Final = "height"
|
ATTR_HEIGHT: Final = "height"
|
||||||
ATTR_WEIGHT: Final = "weight"
|
ATTR_WEIGHT: Final = "weight"
|
||||||
ATTR_BODY: Final = "body"
|
ATTR_BODY: Final = "body"
|
||||||
@@ -60,46 +64,57 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
|
|||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/activityCalories",
|
key="activities/activityCalories",
|
||||||
name="Activity Calories",
|
name="Activity Calories",
|
||||||
native_unit_of_measurement="cal",
|
native_unit_of_measurement=UnitOfEnergy.CALORIE,
|
||||||
icon="mdi:fire",
|
icon="mdi:fire",
|
||||||
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/calories",
|
key="activities/calories",
|
||||||
name="Calories",
|
name="Calories",
|
||||||
native_unit_of_measurement="cal",
|
native_unit_of_measurement=UnitOfEnergy.CALORIE,
|
||||||
icon="mdi:fire",
|
icon="mdi:fire",
|
||||||
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/caloriesBMR",
|
key="activities/caloriesBMR",
|
||||||
name="Calories BMR",
|
name="Calories BMR",
|
||||||
native_unit_of_measurement="cal",
|
native_unit_of_measurement=UnitOfEnergy.CALORIE,
|
||||||
icon="mdi:fire",
|
icon="mdi:fire",
|
||||||
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/distance",
|
key="activities/distance",
|
||||||
name="Distance",
|
name="Distance",
|
||||||
unit_type="distance",
|
native_unit_of_measurement=UnitOfLength.MILES,
|
||||||
icon="mdi:map-marker",
|
icon="mdi:map-marker",
|
||||||
device_class=SensorDeviceClass.DISTANCE,
|
device_class=SensorDeviceClass.DISTANCE,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/elevation",
|
key="activities/elevation",
|
||||||
name="Elevation",
|
name="Elevation",
|
||||||
unit_type="elevation",
|
native_unit_of_measurement=UnitOfLength.FEET,
|
||||||
icon="mdi:walk",
|
icon="mdi:walk",
|
||||||
device_class=SensorDeviceClass.DISTANCE,
|
device_class=SensorDeviceClass.DISTANCE,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/floors",
|
key="activities/floors",
|
||||||
name="Floors",
|
name="Floors",
|
||||||
native_unit_of_measurement="floors",
|
native_unit_of_measurement="floors",
|
||||||
icon="mdi:walk",
|
icon="mdi:walk",
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/heart",
|
key="activities/heart",
|
||||||
name="Resting Heart Rate",
|
name="Resting Heart Rate",
|
||||||
native_unit_of_measurement="bpm",
|
native_unit_of_measurement=UnitOfFrequency.BPM,
|
||||||
icon="mdi:heart-pulse",
|
icon="mdi:heart-pulse",
|
||||||
|
device_class=SensorDeviceClass.FREQUENCY,
|
||||||
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/minutesFairlyActive",
|
key="activities/minutesFairlyActive",
|
||||||
@@ -107,6 +122,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
|
|||||||
native_unit_of_measurement=UnitOfTime.MINUTES,
|
native_unit_of_measurement=UnitOfTime.MINUTES,
|
||||||
icon="mdi:walk",
|
icon="mdi:walk",
|
||||||
device_class=SensorDeviceClass.DURATION,
|
device_class=SensorDeviceClass.DURATION,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/minutesLightlyActive",
|
key="activities/minutesLightlyActive",
|
||||||
@@ -114,6 +130,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
|
|||||||
native_unit_of_measurement=UnitOfTime.MINUTES,
|
native_unit_of_measurement=UnitOfTime.MINUTES,
|
||||||
icon="mdi:walk",
|
icon="mdi:walk",
|
||||||
device_class=SensorDeviceClass.DURATION,
|
device_class=SensorDeviceClass.DURATION,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/minutesSedentary",
|
key="activities/minutesSedentary",
|
||||||
@@ -121,6 +138,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
|
|||||||
native_unit_of_measurement=UnitOfTime.MINUTES,
|
native_unit_of_measurement=UnitOfTime.MINUTES,
|
||||||
icon="mdi:seat-recline-normal",
|
icon="mdi:seat-recline-normal",
|
||||||
device_class=SensorDeviceClass.DURATION,
|
device_class=SensorDeviceClass.DURATION,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/minutesVeryActive",
|
key="activities/minutesVeryActive",
|
||||||
@@ -128,44 +146,53 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
|
|||||||
native_unit_of_measurement=UnitOfTime.MINUTES,
|
native_unit_of_measurement=UnitOfTime.MINUTES,
|
||||||
icon="mdi:run",
|
icon="mdi:run",
|
||||||
device_class=SensorDeviceClass.DURATION,
|
device_class=SensorDeviceClass.DURATION,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/steps",
|
key="activities/steps",
|
||||||
name="Steps",
|
name="Steps",
|
||||||
native_unit_of_measurement="steps",
|
native_unit_of_measurement="steps",
|
||||||
icon="mdi:walk",
|
icon="mdi:walk",
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/tracker/activityCalories",
|
key="activities/tracker/activityCalories",
|
||||||
name="Tracker Activity Calories",
|
name="Tracker Activity Calories",
|
||||||
native_unit_of_measurement="cal",
|
native_unit_of_measurement=UnitOfEnergy.CALORIE,
|
||||||
icon="mdi:fire",
|
icon="mdi:fire",
|
||||||
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/tracker/calories",
|
key="activities/tracker/calories",
|
||||||
name="Tracker Calories",
|
name="Tracker Calories",
|
||||||
native_unit_of_measurement="cal",
|
native_unit_of_measurement=UnitOfEnergy.CALORIE,
|
||||||
icon="mdi:fire",
|
icon="mdi:fire",
|
||||||
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/tracker/distance",
|
key="activities/tracker/distance",
|
||||||
name="Tracker Distance",
|
name="Tracker Distance",
|
||||||
unit_type="distance",
|
native_unit_of_measurement=UnitOfLength.MILES,
|
||||||
icon="mdi:map-marker",
|
icon="mdi:map-marker",
|
||||||
device_class=SensorDeviceClass.DISTANCE,
|
device_class=SensorDeviceClass.DISTANCE,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/tracker/elevation",
|
key="activities/tracker/elevation",
|
||||||
name="Tracker Elevation",
|
name="Tracker Elevation",
|
||||||
unit_type="elevation",
|
native_unit_of_measurement=UnitOfLength.FEET,
|
||||||
icon="mdi:walk",
|
icon="mdi:walk",
|
||||||
device_class=SensorDeviceClass.DISTANCE,
|
device_class=SensorDeviceClass.DISTANCE,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/tracker/floors",
|
key="activities/tracker/floors",
|
||||||
name="Tracker Floors",
|
name="Tracker Floors",
|
||||||
native_unit_of_measurement="floors",
|
native_unit_of_measurement="floors",
|
||||||
icon="mdi:walk",
|
icon="mdi:walk",
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/tracker/minutesFairlyActive",
|
key="activities/tracker/minutesFairlyActive",
|
||||||
@@ -173,6 +200,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
|
|||||||
native_unit_of_measurement=UnitOfTime.MINUTES,
|
native_unit_of_measurement=UnitOfTime.MINUTES,
|
||||||
icon="mdi:walk",
|
icon="mdi:walk",
|
||||||
device_class=SensorDeviceClass.DURATION,
|
device_class=SensorDeviceClass.DURATION,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/tracker/minutesLightlyActive",
|
key="activities/tracker/minutesLightlyActive",
|
||||||
@@ -180,6 +208,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
|
|||||||
native_unit_of_measurement=UnitOfTime.MINUTES,
|
native_unit_of_measurement=UnitOfTime.MINUTES,
|
||||||
icon="mdi:walk",
|
icon="mdi:walk",
|
||||||
device_class=SensorDeviceClass.DURATION,
|
device_class=SensorDeviceClass.DURATION,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/tracker/minutesSedentary",
|
key="activities/tracker/minutesSedentary",
|
||||||
@@ -187,6 +216,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
|
|||||||
native_unit_of_measurement=UnitOfTime.MINUTES,
|
native_unit_of_measurement=UnitOfTime.MINUTES,
|
||||||
icon="mdi:seat-recline-normal",
|
icon="mdi:seat-recline-normal",
|
||||||
device_class=SensorDeviceClass.DURATION,
|
device_class=SensorDeviceClass.DURATION,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/tracker/minutesVeryActive",
|
key="activities/tracker/minutesVeryActive",
|
||||||
@@ -194,12 +224,14 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
|
|||||||
native_unit_of_measurement=UnitOfTime.MINUTES,
|
native_unit_of_measurement=UnitOfTime.MINUTES,
|
||||||
icon="mdi:run",
|
icon="mdi:run",
|
||||||
device_class=SensorDeviceClass.DURATION,
|
device_class=SensorDeviceClass.DURATION,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="activities/tracker/steps",
|
key="activities/tracker/steps",
|
||||||
name="Tracker Steps",
|
name="Tracker Steps",
|
||||||
native_unit_of_measurement="steps",
|
native_unit_of_measurement="steps",
|
||||||
icon="mdi:walk",
|
icon="mdi:walk",
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="body/bmi",
|
key="body/bmi",
|
||||||
@@ -218,7 +250,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
|
|||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="body/weight",
|
key="body/weight",
|
||||||
name="Weight",
|
name="Weight",
|
||||||
unit_type="weight",
|
native_unit_of_measurement=UnitOfMass.POUNDS,
|
||||||
icon="mdi:human",
|
icon="mdi:human",
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
device_class=SensorDeviceClass.WEIGHT,
|
device_class=SensorDeviceClass.WEIGHT,
|
||||||
@@ -226,8 +258,9 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
|
|||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="sleep/awakeningsCount",
|
key="sleep/awakeningsCount",
|
||||||
name="Awakenings Count",
|
name="Awakenings Count",
|
||||||
native_unit_of_measurement="times awaken",
|
native_unit_of_measurement="times awakened",
|
||||||
icon="mdi:sleep",
|
icon="mdi:sleep",
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="sleep/efficiency",
|
key="sleep/efficiency",
|
||||||
@@ -242,6 +275,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
|
|||||||
native_unit_of_measurement=UnitOfTime.MINUTES,
|
native_unit_of_measurement=UnitOfTime.MINUTES,
|
||||||
icon="mdi:sleep",
|
icon="mdi:sleep",
|
||||||
device_class=SensorDeviceClass.DURATION,
|
device_class=SensorDeviceClass.DURATION,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="sleep/minutesAsleep",
|
key="sleep/minutesAsleep",
|
||||||
@@ -249,6 +283,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
|
|||||||
native_unit_of_measurement=UnitOfTime.MINUTES,
|
native_unit_of_measurement=UnitOfTime.MINUTES,
|
||||||
icon="mdi:sleep",
|
icon="mdi:sleep",
|
||||||
device_class=SensorDeviceClass.DURATION,
|
device_class=SensorDeviceClass.DURATION,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="sleep/minutesAwake",
|
key="sleep/minutesAwake",
|
||||||
@@ -256,6 +291,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
|
|||||||
native_unit_of_measurement=UnitOfTime.MINUTES,
|
native_unit_of_measurement=UnitOfTime.MINUTES,
|
||||||
icon="mdi:sleep",
|
icon="mdi:sleep",
|
||||||
device_class=SensorDeviceClass.DURATION,
|
device_class=SensorDeviceClass.DURATION,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="sleep/minutesToFallAsleep",
|
key="sleep/minutesToFallAsleep",
|
||||||
@@ -263,6 +299,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
|
|||||||
native_unit_of_measurement=UnitOfTime.MINUTES,
|
native_unit_of_measurement=UnitOfTime.MINUTES,
|
||||||
icon="mdi:sleep",
|
icon="mdi:sleep",
|
||||||
device_class=SensorDeviceClass.DURATION,
|
device_class=SensorDeviceClass.DURATION,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
FitbitSensorEntityDescription(
|
FitbitSensorEntityDescription(
|
||||||
key="sleep/startTime",
|
key="sleep/startTime",
|
||||||
@@ -275,6 +312,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
|
|||||||
native_unit_of_measurement=UnitOfTime.MINUTES,
|
native_unit_of_measurement=UnitOfTime.MINUTES,
|
||||||
icon="mdi:hotel",
|
icon="mdi:hotel",
|
||||||
device_class=SensorDeviceClass.DURATION,
|
device_class=SensorDeviceClass.DURATION,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -299,6 +337,8 @@ FITBIT_MEASUREMENTS: Final[dict[str, dict[str, str]]] = {
|
|||||||
ATTR_LIQUIDS: UnitOfVolume.FLUID_OUNCES,
|
ATTR_LIQUIDS: UnitOfVolume.FLUID_OUNCES,
|
||||||
ATTR_BLOOD_GLUCOSE: f"{UnitOfMass.MILLIGRAMS}/dL",
|
ATTR_BLOOD_GLUCOSE: f"{UnitOfMass.MILLIGRAMS}/dL",
|
||||||
ATTR_BATTERY: "",
|
ATTR_BATTERY: "",
|
||||||
|
ATTR_ENERGY: UnitOfEnergy.CALORIE,
|
||||||
|
ATTR_FREQUENCY: UnitOfFrequency.BPM,
|
||||||
},
|
},
|
||||||
"en_GB": {
|
"en_GB": {
|
||||||
ATTR_DURATION: UnitOfTime.MILLISECONDS,
|
ATTR_DURATION: UnitOfTime.MILLISECONDS,
|
||||||
@@ -310,6 +350,8 @@ FITBIT_MEASUREMENTS: Final[dict[str, dict[str, str]]] = {
|
|||||||
ATTR_LIQUIDS: UnitOfVolume.MILLILITERS,
|
ATTR_LIQUIDS: UnitOfVolume.MILLILITERS,
|
||||||
ATTR_BLOOD_GLUCOSE: "mmol/L",
|
ATTR_BLOOD_GLUCOSE: "mmol/L",
|
||||||
ATTR_BATTERY: "",
|
ATTR_BATTERY: "",
|
||||||
|
ATTR_ENERGY: UnitOfEnergy.CALORIE,
|
||||||
|
ATTR_FREQUENCY: UnitOfFrequency.BPM,
|
||||||
},
|
},
|
||||||
"metric": {
|
"metric": {
|
||||||
ATTR_DURATION: UnitOfTime.MILLISECONDS,
|
ATTR_DURATION: UnitOfTime.MILLISECONDS,
|
||||||
@@ -321,6 +363,8 @@ FITBIT_MEASUREMENTS: Final[dict[str, dict[str, str]]] = {
|
|||||||
ATTR_LIQUIDS: UnitOfVolume.MILLILITERS,
|
ATTR_LIQUIDS: UnitOfVolume.MILLILITERS,
|
||||||
ATTR_BLOOD_GLUCOSE: "mmol/L",
|
ATTR_BLOOD_GLUCOSE: "mmol/L",
|
||||||
ATTR_BATTERY: "",
|
ATTR_BATTERY: "",
|
||||||
|
ATTR_ENERGY: UnitOfEnergy.CALORIE,
|
||||||
|
ATTR_FREQUENCY: UnitOfFrequency.BPM,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user