From 883711fb35948d83962e5a679b422caf9a58b7ee Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Sun, 21 Jan 2024 21:34:44 +0100 Subject: [PATCH] Add icon translations to Withings (#108385) * Add icon translations to Withings * Add icon translations to Withings * Add icon translations to Withings * Add icon translations to Withings * Add icon translations to Withings --- .../components/withings/binary_sensor.py | 1 - homeassistant/components/withings/icons.json | 124 ++++++++++++++++++ homeassistant/components/withings/sensor.py | 23 ---- .../withings/snapshots/test_sensor.ambr | 23 ---- 4 files changed, 124 insertions(+), 47 deletions(-) create mode 100644 homeassistant/components/withings/icons.json diff --git a/homeassistant/components/withings/binary_sensor.py b/homeassistant/components/withings/binary_sensor.py index 1317befcf3f..12583ba4758 100644 --- a/homeassistant/components/withings/binary_sensor.py +++ b/homeassistant/components/withings/binary_sensor.py @@ -47,7 +47,6 @@ async def async_setup_entry( class WithingsBinarySensor(WithingsEntity, BinarySensorEntity): """Implementation of a Withings sensor.""" - _attr_icon = "mdi:bed" _attr_translation_key = "in_bed" _attr_device_class = BinarySensorDeviceClass.OCCUPANCY coordinator: WithingsBedPresenceDataUpdateCoordinator diff --git a/homeassistant/components/withings/icons.json b/homeassistant/components/withings/icons.json new file mode 100644 index 00000000000..f76761ce953 --- /dev/null +++ b/homeassistant/components/withings/icons.json @@ -0,0 +1,124 @@ +{ + "entity": { + "binary_sensor": { + "in_bed": { + "default": "mdi:bed-outline", + "state": { + "on": "mdi:bed", + "off": "mdi:bed-empty" + } + } + }, + "sensor": { + "bone_mass": { + "default": "mdi:bone" + }, + "heart_pulse": { + "default": "mdi:heart-pulse" + }, + "hydration": { + "default": "mdi:water" + }, + "deep_sleep": { + "default": "mdi:sleep" + }, + "time_to_sleep": { + "default": "mdi:sleep" + }, + "time_to_wakeup": { + "default": "mdi:sleep-off" + }, + "average_heart_rate": { + "default": "mdi:heart-pulse" + }, + "maximum_heart_rate": { + "default": "mdi:heart-pulse" + }, + "minimum_heart_rate": { + "default": "mdi:heart-pulse" + }, + "light_sleep": { + "default": "mdi:sleep" + }, + "rem_sleep": { + "default": "mdi:sleep" + }, + "sleep_score": { + "default": "mdi:medal" + }, + "wakeup_count": { + "default": "mdi:sleep-off" + }, + "wakeup_time": { + "default": "mdi:sleep-off" + }, + "activity_steps_today": { + "default": "mdi:shoe-print" + }, + "activity_distance_today": { + "default": "mdi:map-marker-distance" + }, + "activity_elevation_today": { + "default": "mdi:stairs-up" + }, + "step_goal": { + "default": "mdi:shoe-print" + }, + "sleep_goal": { + "default": "mdi:bed-clock" + }, + "workout_distance": { + "default": "mdi:map-marker-distance" + }, + "workout_type": { + "state": { + "walk": "mdi:walk", + "run": "mdi:run", + "hiking": "mdi:hiking", + "skating": "mdi:skateboarding", + "bicycling": "mdi:bike", + "swimming": "mdi:swim", + "surfing": "mdi:surfing", + "kitesurfing": "mdi:kitesurfing", + "windsurfing": "mdi:kitesurfing", + "tennis": "mdi:tennis", + "table_tennis": "mdi:table-tennis", + "squash": "mdi:racquetball", + "badminton": "mdi:badminton", + "lift_weights": "mdi:weight-lifter", + "basket_ball": "mdi:basketball", + "soccer": "mdi:soccer", + "football": "mdi:football", + "rugby": "mdi:rugby", + "volley_ball": "mdi:volleyball", + "waterpolo": "mdi:water-polo", + "horse_riding": "mdi:horse-human", + "golf": "mdi:golf", + "yoga": "mdi:yoga", + "dancing": "mdi:human-female-dance", + "boxing": "mdi:boxing-glove", + "fencing": "mdi:fencing", + "martial_arts": "mdi:karate", + "skiing": "mdi:ski", + "snowboarding": "mdi:snowboard", + "rowing": "mdi:rowing", + "baseball": "mdi:baseball", + "handball": "mdi:handball", + "hockey": "mdi:hockey-sticks", + "ice_hockey": "mdi:hockey-sticks", + "climbing": "mdi:carabiner", + "ice_skating": "mdi:skate" + } + }, + "workout_elevation": { + "default": "mdi:stairs-up" + }, + "workout_pause_duration": { + "default": "mdi:timer-pause" + }, + "workout_duration": { + "default": "mdi:timer" + } + } + } +} diff --git a/homeassistant/components/withings/sensor.py b/homeassistant/components/withings/sensor.py index de053d6a894..d882cd8cddd 100644 --- a/homeassistant/components/withings/sensor.py +++ b/homeassistant/components/withings/sensor.py @@ -107,7 +107,6 @@ MEASUREMENT_SENSORS: dict[ key="bone_mass_kg", measurement_type=MeasurementType.BONE_MASS, translation_key="bone_mass", - icon="mdi:bone", native_unit_of_measurement=UnitOfMass.KILOGRAMS, suggested_display_precision=2, device_class=SensorDeviceClass.WEIGHT, @@ -173,7 +172,6 @@ MEASUREMENT_SENSORS: dict[ measurement_type=MeasurementType.HEART_RATE, translation_key="heart_pulse", native_unit_of_measurement=UOM_BEATS_PER_MINUTE, - icon="mdi:heart-pulse", state_class=SensorStateClass.MEASUREMENT, ), MeasurementType.SP02: WithingsMeasurementSensorEntityDescription( @@ -189,7 +187,6 @@ MEASUREMENT_SENSORS: dict[ translation_key="hydration", native_unit_of_measurement=UnitOfMass.KILOGRAMS, device_class=SensorDeviceClass.WEIGHT, - icon="mdi:water", state_class=SensorStateClass.MEASUREMENT, entity_registry_enabled_default=False, ), @@ -283,7 +280,6 @@ SLEEP_SENSORS = [ value_fn=lambda sleep_summary: sleep_summary.deep_sleep_duration, translation_key="deep_sleep", native_unit_of_measurement=UnitOfTime.SECONDS, - icon="mdi:sleep", device_class=SensorDeviceClass.DURATION, state_class=SensorStateClass.MEASUREMENT, ), @@ -292,7 +288,6 @@ SLEEP_SENSORS = [ value_fn=lambda sleep_summary: sleep_summary.sleep_latency, translation_key="time_to_sleep", native_unit_of_measurement=UnitOfTime.SECONDS, - icon="mdi:sleep", device_class=SensorDeviceClass.DURATION, state_class=SensorStateClass.MEASUREMENT, entity_registry_enabled_default=False, @@ -302,7 +297,6 @@ SLEEP_SENSORS = [ value_fn=lambda sleep_summary: sleep_summary.wake_up_latency, translation_key="time_to_wakeup", native_unit_of_measurement=UnitOfTime.SECONDS, - icon="mdi:sleep-off", device_class=SensorDeviceClass.DURATION, state_class=SensorStateClass.MEASUREMENT, entity_registry_enabled_default=False, @@ -312,7 +306,6 @@ SLEEP_SENSORS = [ value_fn=lambda sleep_summary: sleep_summary.average_heart_rate, translation_key="average_heart_rate", native_unit_of_measurement=UOM_BEATS_PER_MINUTE, - icon="mdi:heart-pulse", state_class=SensorStateClass.MEASUREMENT, entity_registry_enabled_default=False, ), @@ -321,7 +314,6 @@ SLEEP_SENSORS = [ value_fn=lambda sleep_summary: sleep_summary.max_heart_rate, translation_key="maximum_heart_rate", native_unit_of_measurement=UOM_BEATS_PER_MINUTE, - icon="mdi:heart-pulse", state_class=SensorStateClass.MEASUREMENT, entity_registry_enabled_default=False, ), @@ -330,7 +322,6 @@ SLEEP_SENSORS = [ value_fn=lambda sleep_summary: sleep_summary.min_heart_rate, translation_key="minimum_heart_rate", native_unit_of_measurement=UOM_BEATS_PER_MINUTE, - icon="mdi:heart-pulse", state_class=SensorStateClass.MEASUREMENT, entity_registry_enabled_default=False, ), @@ -339,7 +330,6 @@ SLEEP_SENSORS = [ value_fn=lambda sleep_summary: sleep_summary.light_sleep_duration, translation_key="light_sleep", native_unit_of_measurement=UnitOfTime.SECONDS, - icon="mdi:sleep", device_class=SensorDeviceClass.DURATION, state_class=SensorStateClass.MEASUREMENT, entity_registry_enabled_default=False, @@ -349,7 +339,6 @@ SLEEP_SENSORS = [ value_fn=lambda sleep_summary: sleep_summary.rem_sleep_duration, translation_key="rem_sleep", native_unit_of_measurement=UnitOfTime.SECONDS, - icon="mdi:sleep", device_class=SensorDeviceClass.DURATION, state_class=SensorStateClass.MEASUREMENT, entity_registry_enabled_default=False, @@ -383,7 +372,6 @@ SLEEP_SENSORS = [ value_fn=lambda sleep_summary: sleep_summary.sleep_score, translation_key="sleep_score", native_unit_of_measurement=SCORE_POINTS, - icon="mdi:medal", state_class=SensorStateClass.MEASUREMENT, entity_registry_enabled_default=False, ), @@ -406,7 +394,6 @@ SLEEP_SENSORS = [ value_fn=lambda sleep_summary: sleep_summary.wake_up_count, translation_key="wakeup_count", native_unit_of_measurement=UOM_FREQUENCY, - icon="mdi:sleep-off", state_class=SensorStateClass.MEASUREMENT, entity_registry_enabled_default=False, ), @@ -415,7 +402,6 @@ SLEEP_SENSORS = [ value_fn=lambda sleep_summary: sleep_summary.total_time_awake, translation_key="wakeup_time", native_unit_of_measurement=UnitOfTime.SECONDS, - icon="mdi:sleep-off", device_class=SensorDeviceClass.DURATION, state_class=SensorStateClass.MEASUREMENT, entity_registry_enabled_default=False, @@ -435,7 +421,6 @@ ACTIVITY_SENSORS = [ key="activity_steps_today", value_fn=lambda activity: activity.steps, translation_key="activity_steps_today", - icon="mdi:shoe-print", native_unit_of_measurement="steps", state_class=SensorStateClass.TOTAL, ), @@ -444,7 +429,6 @@ ACTIVITY_SENSORS = [ value_fn=lambda activity: activity.distance, translation_key="activity_distance_today", suggested_display_precision=0, - icon="mdi:map-marker-distance", native_unit_of_measurement=UnitOfLength.METERS, device_class=SensorDeviceClass.DISTANCE, state_class=SensorStateClass.TOTAL, @@ -453,7 +437,6 @@ ACTIVITY_SENSORS = [ key="activity_floors_climbed_today", value_fn=lambda activity: activity.elevation, translation_key="activity_elevation_today", - icon="mdi:stairs-up", native_unit_of_measurement=UnitOfLength.METERS, device_class=SensorDeviceClass.DISTANCE, state_class=SensorStateClass.TOTAL, @@ -532,7 +515,6 @@ GOALS_SENSORS: dict[str, WithingsGoalsSensorEntityDescription] = { STEP_GOAL: WithingsGoalsSensorEntityDescription( key="step_goal", value_fn=lambda goals: goals.steps, - icon="mdi:shoe-print", translation_key="step_goal", native_unit_of_measurement="steps", state_class=SensorStateClass.MEASUREMENT, @@ -540,7 +522,6 @@ GOALS_SENSORS: dict[str, WithingsGoalsSensorEntityDescription] = { SLEEP_GOAL: WithingsGoalsSensorEntityDescription( key="sleep_goal", value_fn=lambda goals: goals.sleep, - icon="mdi:bed-clock", translation_key="sleep_goal", native_unit_of_measurement=UnitOfTime.SECONDS, suggested_unit_of_measurement=UnitOfTime.HOURS, @@ -592,13 +573,11 @@ WORKOUT_SENSORS = [ device_class=SensorDeviceClass.DISTANCE, native_unit_of_measurement=UnitOfLength.METERS, suggested_display_precision=0, - icon="mdi:map-marker-distance", ), WithingsWorkoutSensorEntityDescription( key="workout_floors_climbed", value_fn=lambda workout: workout.elevation, translation_key="workout_elevation", - icon="mdi:stairs-up", native_unit_of_measurement=UnitOfLength.METERS, device_class=SensorDeviceClass.DISTANCE, ), @@ -611,7 +590,6 @@ WORKOUT_SENSORS = [ key="workout_pause_duration", value_fn=lambda workout: workout.pause_duration or 0, translation_key="workout_pause_duration", - icon="mdi:timer-pause", device_class=SensorDeviceClass.DURATION, native_unit_of_measurement=UnitOfTime.SECONDS, suggested_unit_of_measurement=UnitOfTime.MINUTES, @@ -622,7 +600,6 @@ WORKOUT_SENSORS = [ workout.end_date - workout.start_date ).total_seconds(), translation_key="workout_duration", - icon="mdi:timer", device_class=SensorDeviceClass.DURATION, native_unit_of_measurement=UnitOfTime.SECONDS, suggested_unit_of_measurement=UnitOfTime.MINUTES, diff --git a/tests/components/withings/snapshots/test_sensor.ambr b/tests/components/withings/snapshots/test_sensor.ambr index 4ca4093e3b8..08d2786fae9 100644 --- a/tests/components/withings/snapshots/test_sensor.ambr +++ b/tests/components/withings/snapshots/test_sensor.ambr @@ -34,7 +34,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'henk Average heart rate', - 'icon': 'mdi:heart-pulse', 'state_class': , 'unit_of_measurement': 'bpm', }), @@ -79,7 +78,6 @@ 'attributes': ReadOnlyDict({ 'device_class': 'weight', 'friendly_name': 'henk Bone mass', - 'icon': 'mdi:bone', 'state_class': , 'unit_of_measurement': , }), @@ -121,7 +119,6 @@ 'attributes': ReadOnlyDict({ 'device_class': 'duration', 'friendly_name': 'henk Deep sleep', - 'icon': 'mdi:sleep', 'state_class': , 'unit_of_measurement': , }), @@ -151,7 +148,6 @@ 'attributes': ReadOnlyDict({ 'device_class': 'distance', 'friendly_name': 'henk Distance travelled last workout', - 'icon': 'mdi:map-marker-distance', 'unit_of_measurement': , }), 'context': , @@ -166,7 +162,6 @@ 'attributes': ReadOnlyDict({ 'device_class': 'distance', 'friendly_name': 'henk Distance travelled today', - 'icon': 'mdi:map-marker-distance', 'last_reset': '2023-10-20T00:00:00-07:00', 'state_class': , 'unit_of_measurement': , @@ -183,7 +178,6 @@ 'attributes': ReadOnlyDict({ 'device_class': 'distance', 'friendly_name': 'henk Elevation change last workout', - 'icon': 'mdi:stairs-up', 'unit_of_measurement': , }), 'context': , @@ -198,7 +192,6 @@ 'attributes': ReadOnlyDict({ 'device_class': 'distance', 'friendly_name': 'henk Elevation change today', - 'icon': 'mdi:stairs-up', 'last_reset': '2023-10-20T00:00:00-07:00', 'state_class': , 'unit_of_measurement': , @@ -273,7 +266,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'henk Heart pulse', - 'icon': 'mdi:heart-pulse', 'state_class': , 'unit_of_measurement': 'bpm', }), @@ -304,7 +296,6 @@ 'attributes': ReadOnlyDict({ 'device_class': 'weight', 'friendly_name': 'henk Hydration', - 'icon': 'mdi:water', 'state_class': , 'unit_of_measurement': , }), @@ -351,7 +342,6 @@ 'attributes': ReadOnlyDict({ 'device_class': 'duration', 'friendly_name': 'henk Last workout duration', - 'icon': 'mdi:timer', 'unit_of_measurement': , }), 'context': , @@ -442,7 +432,6 @@ 'attributes': ReadOnlyDict({ 'device_class': 'duration', 'friendly_name': 'henk Light sleep', - 'icon': 'mdi:sleep', 'state_class': , 'unit_of_measurement': , }), @@ -457,7 +446,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'henk Maximum heart rate', - 'icon': 'mdi:heart-pulse', 'state_class': , 'unit_of_measurement': 'bpm', }), @@ -486,7 +474,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'henk Minimum heart rate', - 'icon': 'mdi:heart-pulse', 'state_class': , 'unit_of_measurement': 'bpm', }), @@ -547,7 +534,6 @@ 'attributes': ReadOnlyDict({ 'device_class': 'duration', 'friendly_name': 'henk Pause during last workout', - 'icon': 'mdi:timer-pause', 'unit_of_measurement': , }), 'context': , @@ -577,7 +563,6 @@ 'attributes': ReadOnlyDict({ 'device_class': 'duration', 'friendly_name': 'henk REM sleep', - 'icon': 'mdi:sleep', 'state_class': , 'unit_of_measurement': , }), @@ -608,7 +593,6 @@ 'attributes': ReadOnlyDict({ 'device_class': 'duration', 'friendly_name': 'henk Sleep goal', - 'icon': 'mdi:bed-clock', 'state_class': , 'unit_of_measurement': , }), @@ -623,7 +607,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'henk Sleep score', - 'icon': 'mdi:medal', 'state_class': , 'unit_of_measurement': 'points', }), @@ -694,7 +677,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'henk Step goal', - 'icon': 'mdi:shoe-print', 'state_class': , 'unit_of_measurement': 'steps', }), @@ -709,7 +691,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'henk Steps today', - 'icon': 'mdi:shoe-print', 'last_reset': '2023-10-20T00:00:00-07:00', 'state_class': , 'unit_of_measurement': 'steps', @@ -755,7 +736,6 @@ 'attributes': ReadOnlyDict({ 'device_class': 'duration', 'friendly_name': 'henk Time to sleep', - 'icon': 'mdi:sleep', 'state_class': , 'unit_of_measurement': , }), @@ -771,7 +751,6 @@ 'attributes': ReadOnlyDict({ 'device_class': 'duration', 'friendly_name': 'henk Time to wakeup', - 'icon': 'mdi:sleep-off', 'state_class': , 'unit_of_measurement': , }), @@ -827,7 +806,6 @@ StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'henk Wakeup count', - 'icon': 'mdi:sleep-off', 'state_class': , 'unit_of_measurement': 'times', }), @@ -843,7 +821,6 @@ 'attributes': ReadOnlyDict({ 'device_class': 'duration', 'friendly_name': 'henk Wakeup time', - 'icon': 'mdi:sleep-off', 'state_class': , 'unit_of_measurement': , }),