diff --git a/homeassistant/components/withings/coordinator.py b/homeassistant/components/withings/coordinator.py index 3b39dddb27e..7964a755b4d 100644 --- a/homeassistant/components/withings/coordinator.py +++ b/homeassistant/components/withings/coordinator.py @@ -15,7 +15,6 @@ from aiowithings import ( WithingsUnauthorizedError, aggregate_measurements, ) -from aiowithings.helpers import aggregate_sleep_summary from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant @@ -145,7 +144,9 @@ class WithingsSleepDataUpdateCoordinator( SleepSummaryDataFields.TOTAL_TIME_AWAKE, ], ) - return aggregate_sleep_summary(response) + if not response: + return None + return response[0] class WithingsBedPresenceDataUpdateCoordinator(WithingsDataUpdateCoordinator[None]): diff --git a/tests/components/withings/snapshots/test_sensor.ambr b/tests/components/withings/snapshots/test_sensor.ambr index cf8ff0a462b..75d87a23a9c 100644 --- a/tests/components/withings/snapshots/test_sensor.ambr +++ b/tests/components/withings/snapshots/test_sensor.ambr @@ -42,7 +42,7 @@ 'entity_id': 'sensor.henk_average_heart_rate', 'last_changed': , 'last_updated': , - 'state': '83', + 'state': '103', }) # --- # name: test_all_entities[sensor.henk_average_respiratory_rate] @@ -100,7 +100,7 @@ 'entity_id': 'sensor.henk_breathing_disturbances_intensity', 'last_changed': , 'last_updated': , - 'state': '10', + 'state': '9', }) # --- # name: test_all_entities[sensor.henk_deep_sleep] @@ -116,7 +116,7 @@ 'entity_id': 'sensor.henk_deep_sleep', 'last_changed': , 'last_updated': , - 'state': '26220', + 'state': '5820', }) # --- # name: test_all_entities[sensor.henk_diastolic_blood_pressure] @@ -315,7 +315,7 @@ 'entity_id': 'sensor.henk_light_sleep', 'last_changed': , 'last_updated': , - 'state': '58440', + 'state': '10440', }) # --- # name: test_all_entities[sensor.henk_maximum_heart_rate] @@ -330,7 +330,7 @@ 'entity_id': 'sensor.henk_maximum_heart_rate', 'last_changed': , 'last_updated': , - 'state': '108', + 'state': '120', }) # --- # name: test_all_entities[sensor.henk_maximum_respiratory_rate] @@ -359,7 +359,7 @@ 'entity_id': 'sensor.henk_minimum_heart_rate', 'last_changed': , 'last_updated': , - 'state': '58', + 'state': '70', }) # --- # name: test_all_entities[sensor.henk_minimum_respiratory_rate] @@ -435,7 +435,7 @@ 'entity_id': 'sensor.henk_rem_sleep', 'last_changed': , 'last_updated': , - 'state': '17280', + 'state': '2400', }) # --- # name: test_all_entities[sensor.henk_skin_temperature] @@ -481,7 +481,7 @@ 'entity_id': 'sensor.henk_sleep_score', 'last_changed': , 'last_updated': , - 'state': '90', + 'state': '37', }) # --- # name: test_all_entities[sensor.henk_snoring] @@ -494,7 +494,7 @@ 'entity_id': 'sensor.henk_snoring', 'last_changed': , 'last_updated': , - 'state': '1044', + 'state': '1080', }) # --- # name: test_all_entities[sensor.henk_snoring_episode_count] @@ -507,7 +507,7 @@ 'entity_id': 'sensor.henk_snoring_episode_count', 'last_changed': , 'last_updated': , - 'state': '87', + 'state': '18', }) # --- # name: test_all_entities[sensor.henk_soft_activity_today] @@ -613,7 +613,7 @@ 'entity_id': 'sensor.henk_time_to_sleep', 'last_changed': , 'last_updated': , - 'state': '780', + 'state': '540', }) # --- # name: test_all_entities[sensor.henk_time_to_wakeup] @@ -629,7 +629,7 @@ 'entity_id': 'sensor.henk_time_to_wakeup', 'last_changed': , 'last_updated': , - 'state': '996', + 'state': '1140', }) # --- # name: test_all_entities[sensor.henk_total_calories_burnt_today] @@ -685,7 +685,7 @@ 'entity_id': 'sensor.henk_wakeup_count', 'last_changed': , 'last_updated': , - 'state': '8', + 'state': '1', }) # --- # name: test_all_entities[sensor.henk_wakeup_time] @@ -701,7 +701,7 @@ 'entity_id': 'sensor.henk_wakeup_time', 'last_changed': , 'last_updated': , - 'state': '3468', + 'state': '3060', }) # --- # name: test_all_entities[sensor.henk_weight] diff --git a/tests/components/withings/test_sensor.py b/tests/components/withings/test_sensor.py index 1acfc324d81..1a405dd4844 100644 --- a/tests/components/withings/test_sensor.py +++ b/tests/components/withings/test_sensor.py @@ -243,3 +243,24 @@ async def test_activity_sensors_created_when_receive_activity_data( await hass.async_block_till_done() assert hass.states.get("sensor.henk_steps_today") is not None + + +@pytest.mark.usefixtures("entity_registry_enabled_by_default") +async def test_no_sleep( + hass: HomeAssistant, + snapshot: SnapshotAssertion, + withings: AsyncMock, + polling_config_entry: MockConfigEntry, + freezer: FrozenDateTimeFactory, +) -> None: + """Test no sleep found.""" + await setup_integration(hass, polling_config_entry, False) + + withings.get_sleep_summary_since.return_value = [] + freezer.tick(timedelta(minutes=10)) + async_fire_time_changed(hass) + await hass.async_block_till_done() + + state = hass.states.get("sensor.henk_average_respiratory_rate") + assert state is not None + assert state.state == STATE_UNAVAILABLE