Make Withings sleep sensor only show last night (#101993)

pull/102575/head
Joost Lekkerkerker 2023-10-23 10:39:17 +02:00 committed by GitHub
parent 30ba78cf82
commit a6ade59133
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 38 additions and 16 deletions

View File

@ -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]):

View File

@ -42,7 +42,7 @@
'entity_id': 'sensor.henk_average_heart_rate',
'last_changed': <ANY>,
'last_updated': <ANY>,
'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': <ANY>,
'last_updated': <ANY>,
'state': '10',
'state': '9',
})
# ---
# name: test_all_entities[sensor.henk_deep_sleep]
@ -116,7 +116,7 @@
'entity_id': 'sensor.henk_deep_sleep',
'last_changed': <ANY>,
'last_updated': <ANY>,
'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': <ANY>,
'last_updated': <ANY>,
'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': <ANY>,
'last_updated': <ANY>,
'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': <ANY>,
'last_updated': <ANY>,
'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': <ANY>,
'last_updated': <ANY>,
'state': '17280',
'state': '2400',
})
# ---
# name: test_all_entities[sensor.henk_skin_temperature]
@ -481,7 +481,7 @@
'entity_id': 'sensor.henk_sleep_score',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': '90',
'state': '37',
})
# ---
# name: test_all_entities[sensor.henk_snoring]
@ -494,7 +494,7 @@
'entity_id': 'sensor.henk_snoring',
'last_changed': <ANY>,
'last_updated': <ANY>,
'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': <ANY>,
'last_updated': <ANY>,
'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': <ANY>,
'last_updated': <ANY>,
'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': <ANY>,
'last_updated': <ANY>,
'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': <ANY>,
'last_updated': <ANY>,
'state': '8',
'state': '1',
})
# ---
# name: test_all_entities[sensor.henk_wakeup_time]
@ -701,7 +701,7 @@
'entity_id': 'sensor.henk_wakeup_time',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': '3468',
'state': '3060',
})
# ---
# name: test_all_entities[sensor.henk_weight]

View File

@ -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