diff --git a/homeassistant/components/fitbit/sensor.py b/homeassistant/components/fitbit/sensor.py index 767d550809e..f9dc74fc328 100644 --- a/homeassistant/components/fitbit/sensor.py +++ b/homeassistant/components/fitbit/sensor.py @@ -195,8 +195,9 @@ def setup_platform( if int(time.time()) - expires_at > 3600: authd_client.client.refresh_token() + user_profile = authd_client.user_profile_get()["user"] if (unit_system := config[CONF_UNIT_SYSTEM]) == "default": - authd_client.system = authd_client.user_profile_get()["user"]["locale"] + authd_client.system = user_profile["locale"] if authd_client.system != "en_GB": if hass.config.units.is_metric: authd_client.system = "metric" @@ -211,6 +212,7 @@ def setup_platform( entities = [ FitbitSensor( authd_client, + user_profile, config_path, description, hass.config.units.is_metric, @@ -224,6 +226,7 @@ def setup_platform( [ FitbitSensor( authd_client, + user_profile, config_path, FITBIT_RESOURCE_BATTERY, hass.config.units.is_metric, @@ -345,6 +348,7 @@ class FitbitSensor(SensorEntity): def __init__( self, client: Fitbit, + user_profile: dict[str, Any], config_path: str, description: FitbitSensorEntityDescription, is_metric: bool, @@ -358,8 +362,12 @@ class FitbitSensor(SensorEntity): self.is_metric = is_metric self.clock_format = clock_format self.extra = extra + + self._attr_unique_id = f"{user_profile['encodedId']}_{description.key}" if self.extra is not None: self._attr_name = f"{self.extra.get('deviceVersion')} Battery" + self._attr_unique_id = f"{self._attr_unique_id}_{self.extra.get('id')}" + if (unit_type := description.unit_type) == "": split_resource = description.key.rsplit("/", maxsplit=1)[-1] try: