Modernize fitbit sensors (#101179)

* Improve fitbit sensors with state class and entiy category

* Revert sensor format changes
This commit is contained in:
Allen Porter 2023-10-02 07:56:46 -07:00 committed by GitHub
parent cab30085c5
commit 74b3c5c690
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 76 additions and 0 deletions

View File

@ -29,6 +29,7 @@ from homeassistant.const import (
CONF_TOKEN, CONF_TOKEN,
CONF_UNIT_SYSTEM, CONF_UNIT_SYSTEM,
PERCENTAGE, PERCENTAGE,
EntityCategory,
UnitOfLength, UnitOfLength,
UnitOfMass, UnitOfMass,
UnitOfTime, UnitOfTime,
@ -137,6 +138,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
native_unit_of_measurement="cal", native_unit_of_measurement="cal",
icon="mdi:fire", icon="mdi:fire",
scope="activity", scope="activity",
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/calories", key="activities/calories",
@ -144,6 +147,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
native_unit_of_measurement="cal", native_unit_of_measurement="cal",
icon="mdi:fire", icon="mdi:fire",
scope="activity", scope="activity",
state_class=SensorStateClass.TOTAL_INCREASING,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/caloriesBMR", key="activities/caloriesBMR",
@ -152,6 +156,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
icon="mdi:fire", icon="mdi:fire",
scope="activity", scope="activity",
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/distance", key="activities/distance",
@ -161,6 +167,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
value_fn=_distance_value_fn, value_fn=_distance_value_fn,
unit_fn=_distance_unit, unit_fn=_distance_unit,
scope="activity", scope="activity",
state_class=SensorStateClass.TOTAL_INCREASING,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/elevation", key="activities/elevation",
@ -169,6 +176,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
device_class=SensorDeviceClass.DISTANCE, device_class=SensorDeviceClass.DISTANCE,
unit_fn=_elevation_unit, unit_fn=_elevation_unit,
scope="activity", scope="activity",
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/floors", key="activities/floors",
@ -176,6 +185,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
native_unit_of_measurement="floors", native_unit_of_measurement="floors",
icon="mdi:walk", icon="mdi:walk",
scope="activity", scope="activity",
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/heart", key="activities/heart",
@ -184,6 +195,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
icon="mdi:heart-pulse", icon="mdi:heart-pulse",
value_fn=lambda result: int(result["value"]["restingHeartRate"]), value_fn=lambda result: int(result["value"]["restingHeartRate"]),
scope="heartrate", scope="heartrate",
state_class=SensorStateClass.MEASUREMENT,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/minutesFairlyActive", key="activities/minutesFairlyActive",
@ -192,6 +204,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
icon="mdi:walk", icon="mdi:walk",
device_class=SensorDeviceClass.DURATION, device_class=SensorDeviceClass.DURATION,
scope="activity", scope="activity",
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/minutesLightlyActive", key="activities/minutesLightlyActive",
@ -200,6 +214,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
icon="mdi:walk", icon="mdi:walk",
device_class=SensorDeviceClass.DURATION, device_class=SensorDeviceClass.DURATION,
scope="activity", scope="activity",
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/minutesSedentary", key="activities/minutesSedentary",
@ -208,6 +224,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
icon="mdi:seat-recline-normal", icon="mdi:seat-recline-normal",
device_class=SensorDeviceClass.DURATION, device_class=SensorDeviceClass.DURATION,
scope="activity", scope="activity",
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/minutesVeryActive", key="activities/minutesVeryActive",
@ -216,6 +234,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
icon="mdi:run", icon="mdi:run",
device_class=SensorDeviceClass.DURATION, device_class=SensorDeviceClass.DURATION,
scope="activity", scope="activity",
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/steps", key="activities/steps",
@ -223,6 +243,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
native_unit_of_measurement="steps", native_unit_of_measurement="steps",
icon="mdi:walk", icon="mdi:walk",
scope="activity", scope="activity",
state_class=SensorStateClass.TOTAL_INCREASING,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/tracker/activityCalories", key="activities/tracker/activityCalories",
@ -231,6 +252,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
icon="mdi:fire", icon="mdi:fire",
scope="activity", scope="activity",
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/tracker/calories", key="activities/tracker/calories",
@ -239,6 +262,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
icon="mdi:fire", icon="mdi:fire",
scope="activity", scope="activity",
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/tracker/distance", key="activities/tracker/distance",
@ -249,6 +274,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
unit_fn=_distance_unit, unit_fn=_distance_unit,
scope="activity", scope="activity",
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/tracker/elevation", key="activities/tracker/elevation",
@ -258,6 +285,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
unit_fn=_elevation_unit, unit_fn=_elevation_unit,
scope="activity", scope="activity",
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/tracker/floors", key="activities/tracker/floors",
@ -266,6 +295,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
icon="mdi:walk", icon="mdi:walk",
scope="activity", scope="activity",
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/tracker/minutesFairlyActive", key="activities/tracker/minutesFairlyActive",
@ -275,6 +306,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
device_class=SensorDeviceClass.DURATION, device_class=SensorDeviceClass.DURATION,
scope="activity", scope="activity",
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/tracker/minutesLightlyActive", key="activities/tracker/minutesLightlyActive",
@ -284,6 +317,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
device_class=SensorDeviceClass.DURATION, device_class=SensorDeviceClass.DURATION,
scope="activity", scope="activity",
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/tracker/minutesSedentary", key="activities/tracker/minutesSedentary",
@ -293,6 +328,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
device_class=SensorDeviceClass.DURATION, device_class=SensorDeviceClass.DURATION,
scope="activity", scope="activity",
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/tracker/minutesVeryActive", key="activities/tracker/minutesVeryActive",
@ -302,6 +339,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
device_class=SensorDeviceClass.DURATION, device_class=SensorDeviceClass.DURATION,
scope="activity", scope="activity",
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="activities/tracker/steps", key="activities/tracker/steps",
@ -310,6 +349,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
icon="mdi:walk", icon="mdi:walk",
scope="activity", scope="activity",
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="body/bmi", key="body/bmi",
@ -320,6 +361,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
value_fn=_body_value_fn, value_fn=_body_value_fn,
scope="weight", scope="weight",
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="body/fat", key="body/fat",
@ -330,6 +372,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
value_fn=_body_value_fn, value_fn=_body_value_fn,
scope="weight", scope="weight",
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="body/weight", key="body/weight",
@ -347,6 +390,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
native_unit_of_measurement="times awaken", native_unit_of_measurement="times awaken",
icon="mdi:sleep", icon="mdi:sleep",
scope="sleep", scope="sleep",
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="sleep/efficiency", key="sleep/efficiency",
@ -355,6 +400,7 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
icon="mdi:sleep", icon="mdi:sleep",
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
scope="sleep", scope="sleep",
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="sleep/minutesAfterWakeup", key="sleep/minutesAfterWakeup",
@ -363,6 +409,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
icon="mdi:sleep", icon="mdi:sleep",
device_class=SensorDeviceClass.DURATION, device_class=SensorDeviceClass.DURATION,
scope="sleep", scope="sleep",
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="sleep/minutesAsleep", key="sleep/minutesAsleep",
@ -371,6 +419,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
icon="mdi:sleep", icon="mdi:sleep",
device_class=SensorDeviceClass.DURATION, device_class=SensorDeviceClass.DURATION,
scope="sleep", scope="sleep",
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="sleep/minutesAwake", key="sleep/minutesAwake",
@ -379,6 +429,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
icon="mdi:sleep", icon="mdi:sleep",
device_class=SensorDeviceClass.DURATION, device_class=SensorDeviceClass.DURATION,
scope="sleep", scope="sleep",
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="sleep/minutesToFallAsleep", key="sleep/minutesToFallAsleep",
@ -387,6 +439,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
icon="mdi:sleep", icon="mdi:sleep",
device_class=SensorDeviceClass.DURATION, device_class=SensorDeviceClass.DURATION,
scope="sleep", scope="sleep",
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
FitbitSensorEntityDescription( FitbitSensorEntityDescription(
key="sleep/timeInBed", key="sleep/timeInBed",
@ -395,6 +449,8 @@ FITBIT_RESOURCES_LIST: Final[tuple[FitbitSensorEntityDescription, ...]] = (
icon="mdi:hotel", icon="mdi:hotel",
device_class=SensorDeviceClass.DURATION, device_class=SensorDeviceClass.DURATION,
scope="sleep", scope="sleep",
state_class=SensorStateClass.TOTAL_INCREASING,
entity_category=EntityCategory.DIAGNOSTIC,
), ),
) )
@ -404,6 +460,7 @@ SLEEP_START_TIME = FitbitSensorEntityDescription(
name="Sleep Start Time", name="Sleep Start Time",
icon="mdi:clock", icon="mdi:clock",
scope="sleep", scope="sleep",
entity_category=EntityCategory.DIAGNOSTIC,
) )
SLEEP_START_TIME_12HR = FitbitSensorEntityDescription( SLEEP_START_TIME_12HR = FitbitSensorEntityDescription(
key="sleep/startTime", key="sleep/startTime",
@ -411,6 +468,7 @@ SLEEP_START_TIME_12HR = FitbitSensorEntityDescription(
icon="mdi:clock", icon="mdi:clock",
value_fn=_clock_format_12h, value_fn=_clock_format_12h,
scope="sleep", scope="sleep",
entity_category=EntityCategory.DIAGNOSTIC,
) )
FITBIT_RESOURCE_BATTERY = FitbitSensorEntityDescription( FITBIT_RESOURCE_BATTERY = FitbitSensorEntityDescription(
@ -418,6 +476,7 @@ FITBIT_RESOURCE_BATTERY = FitbitSensorEntityDescription(
name="Battery", name="Battery",
icon="mdi:battery", icon="mdi:battery",
scope="settings", scope="settings",
entity_category=EntityCategory.DIAGNOSTIC,
) )
FITBIT_RESOURCES_KEYS: Final[list[str]] = [ FITBIT_RESOURCES_KEYS: Final[list[str]] = [

View File

@ -6,6 +6,7 @@
'attribution': 'Data provided by Fitbit.com', 'attribution': 'Data provided by Fitbit.com',
'friendly_name': 'Activity Calories', 'friendly_name': 'Activity Calories',
'icon': 'mdi:fire', 'icon': 'mdi:fire',
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
'unit_of_measurement': 'cal', 'unit_of_measurement': 'cal',
}), }),
'fitbit-api-user-id-1_activities/activityCalories', 'fitbit-api-user-id-1_activities/activityCalories',
@ -18,6 +19,7 @@
'attribution': 'Data provided by Fitbit.com', 'attribution': 'Data provided by Fitbit.com',
'friendly_name': 'Calories', 'friendly_name': 'Calories',
'icon': 'mdi:fire', 'icon': 'mdi:fire',
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
'unit_of_measurement': 'cal', 'unit_of_measurement': 'cal',
}), }),
'fitbit-api-user-id-1_activities/calories', 'fitbit-api-user-id-1_activities/calories',
@ -30,6 +32,7 @@
'attribution': 'Data provided by Fitbit.com', 'attribution': 'Data provided by Fitbit.com',
'friendly_name': 'Steps', 'friendly_name': 'Steps',
'icon': 'mdi:walk', 'icon': 'mdi:walk',
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
'unit_of_measurement': 'steps', 'unit_of_measurement': 'steps',
}), }),
'fitbit-api-user-id-1_activities/steps', 'fitbit-api-user-id-1_activities/steps',
@ -82,6 +85,7 @@
'attribution': 'Data provided by Fitbit.com', 'attribution': 'Data provided by Fitbit.com',
'friendly_name': 'Awakenings Count', 'friendly_name': 'Awakenings Count',
'icon': 'mdi:sleep', 'icon': 'mdi:sleep',
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
'unit_of_measurement': 'times awaken', 'unit_of_measurement': 'times awaken',
}), }),
'fitbit-api-user-id-1_sleep/awakeningsCount', 'fitbit-api-user-id-1_sleep/awakeningsCount',
@ -108,6 +112,7 @@
'device_class': 'duration', 'device_class': 'duration',
'friendly_name': 'Minutes After Wakeup', 'friendly_name': 'Minutes After Wakeup',
'icon': 'mdi:sleep', 'icon': 'mdi:sleep',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>, 'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
}), }),
'fitbit-api-user-id-1_sleep/minutesAfterWakeup', 'fitbit-api-user-id-1_sleep/minutesAfterWakeup',
@ -121,6 +126,7 @@
'device_class': 'duration', 'device_class': 'duration',
'friendly_name': 'Sleep Minutes Asleep', 'friendly_name': 'Sleep Minutes Asleep',
'icon': 'mdi:sleep', 'icon': 'mdi:sleep',
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>, 'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
}), }),
'fitbit-api-user-id-1_sleep/minutesAsleep', 'fitbit-api-user-id-1_sleep/minutesAsleep',
@ -134,6 +140,7 @@
'device_class': 'duration', 'device_class': 'duration',
'friendly_name': 'Sleep Minutes Awake', 'friendly_name': 'Sleep Minutes Awake',
'icon': 'mdi:sleep', 'icon': 'mdi:sleep',
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>, 'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
}), }),
'fitbit-api-user-id-1_sleep/minutesAwake', 'fitbit-api-user-id-1_sleep/minutesAwake',
@ -147,6 +154,7 @@
'device_class': 'duration', 'device_class': 'duration',
'friendly_name': 'Sleep Minutes to Fall Asleep', 'friendly_name': 'Sleep Minutes to Fall Asleep',
'icon': 'mdi:sleep', 'icon': 'mdi:sleep',
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>, 'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
}), }),
'fitbit-api-user-id-1_sleep/minutesToFallAsleep', 'fitbit-api-user-id-1_sleep/minutesToFallAsleep',
@ -160,6 +168,7 @@
'device_class': 'distance', 'device_class': 'distance',
'friendly_name': 'Distance', 'friendly_name': 'Distance',
'icon': 'mdi:map-marker', 'icon': 'mdi:map-marker',
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
'unit_of_measurement': <UnitOfLength.KILOMETERS: 'km'>, 'unit_of_measurement': <UnitOfLength.KILOMETERS: 'km'>,
}), }),
'fitbit-api-user-id-1_activities/distance', 'fitbit-api-user-id-1_activities/distance',
@ -184,6 +193,7 @@
'device_class': 'duration', 'device_class': 'duration',
'friendly_name': 'Sleep Time in Bed', 'friendly_name': 'Sleep Time in Bed',
'icon': 'mdi:hotel', 'icon': 'mdi:hotel',
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>, 'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
}), }),
'fitbit-api-user-id-1_sleep/timeInBed', 'fitbit-api-user-id-1_sleep/timeInBed',
@ -197,6 +207,7 @@
'device_class': 'distance', 'device_class': 'distance',
'friendly_name': 'Elevation', 'friendly_name': 'Elevation',
'icon': 'mdi:walk', 'icon': 'mdi:walk',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfLength.METERS: 'm'>, 'unit_of_measurement': <UnitOfLength.METERS: 'm'>,
}), }),
'fitbit-api-user-id-1_activities/elevation', 'fitbit-api-user-id-1_activities/elevation',
@ -209,6 +220,7 @@
'attribution': 'Data provided by Fitbit.com', 'attribution': 'Data provided by Fitbit.com',
'friendly_name': 'Floors', 'friendly_name': 'Floors',
'icon': 'mdi:walk', 'icon': 'mdi:walk',
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
'unit_of_measurement': 'floors', 'unit_of_measurement': 'floors',
}), }),
'fitbit-api-user-id-1_activities/floors', 'fitbit-api-user-id-1_activities/floors',
@ -221,6 +233,7 @@
'attribution': 'Data provided by Fitbit.com', 'attribution': 'Data provided by Fitbit.com',
'friendly_name': 'Resting Heart Rate', 'friendly_name': 'Resting Heart Rate',
'icon': 'mdi:heart-pulse', 'icon': 'mdi:heart-pulse',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'bpm', 'unit_of_measurement': 'bpm',
}), }),
'fitbit-api-user-id-1_activities/heart', 'fitbit-api-user-id-1_activities/heart',
@ -234,6 +247,7 @@
'device_class': 'duration', 'device_class': 'duration',
'friendly_name': 'Minutes Fairly Active', 'friendly_name': 'Minutes Fairly Active',
'icon': 'mdi:walk', 'icon': 'mdi:walk',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>, 'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
}), }),
'fitbit-api-user-id-1_activities/minutesFairlyActive', 'fitbit-api-user-id-1_activities/minutesFairlyActive',
@ -247,6 +261,7 @@
'device_class': 'duration', 'device_class': 'duration',
'friendly_name': 'Minutes Lightly Active', 'friendly_name': 'Minutes Lightly Active',
'icon': 'mdi:walk', 'icon': 'mdi:walk',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>, 'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
}), }),
'fitbit-api-user-id-1_activities/minutesLightlyActive', 'fitbit-api-user-id-1_activities/minutesLightlyActive',
@ -260,6 +275,7 @@
'device_class': 'duration', 'device_class': 'duration',
'friendly_name': 'Minutes Sedentary', 'friendly_name': 'Minutes Sedentary',
'icon': 'mdi:seat-recline-normal', 'icon': 'mdi:seat-recline-normal',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>, 'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
}), }),
'fitbit-api-user-id-1_activities/minutesSedentary', 'fitbit-api-user-id-1_activities/minutesSedentary',
@ -273,6 +289,7 @@
'device_class': 'duration', 'device_class': 'duration',
'friendly_name': 'Minutes Very Active', 'friendly_name': 'Minutes Very Active',
'icon': 'mdi:run', 'icon': 'mdi:run',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>, 'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
}), }),
'fitbit-api-user-id-1_activities/minutesVeryActive', 'fitbit-api-user-id-1_activities/minutesVeryActive',