From 86e2c2f36182c1d770a55a595da07fa939d0ad80 Mon Sep 17 00:00:00 2001 From: Manu <4445816+tr4nt0r@users.noreply.github.com> Date: Thu, 9 Oct 2025 17:48:44 +0200 Subject: [PATCH] Add jet lag prevention event support to Sleep as Android integration (#154075) --- .../components/sleep_as_android/event.py | 10 ++++ .../components/sleep_as_android/icons.json | 3 + .../components/sleep_as_android/strings.json | 11 ++++ .../snapshots/test_event.ambr | 58 +++++++++++++++++++ .../components/sleep_as_android/test_event.py | 4 ++ 5 files changed, 86 insertions(+) diff --git a/homeassistant/components/sleep_as_android/event.py b/homeassistant/components/sleep_as_android/event.py index 20a3690a0a5..4c50b915e01 100644 --- a/homeassistant/components/sleep_as_android/event.py +++ b/homeassistant/components/sleep_as_android/event.py @@ -38,6 +38,7 @@ class SleepAsAndroidEvent(StrEnum): SLEEP_PHASE = "sleep_phase" SLEEP_TRACKING = "sleep_tracking" SOUND_EVENT = "sound_event" + JET_LAG_PREVENTION = "jet_lag_prevention" EVENT_DESCRIPTIONS: tuple[SleepAsAndroidEventEntityDescription, ...] = ( @@ -120,6 +121,15 @@ EVENT_DESCRIPTIONS: tuple[SleepAsAndroidEventEntityDescription, ...] = ( "apnea_alarm", ], ), + SleepAsAndroidEventEntityDescription( + key=SleepAsAndroidEvent.JET_LAG_PREVENTION, + translation_key=SleepAsAndroidEvent.JET_LAG_PREVENTION, + event_types=[ + "jet_lag_start", + "jet_lag_stop", + ], + entity_registry_enabled_default=False, + ), ) diff --git a/homeassistant/components/sleep_as_android/icons.json b/homeassistant/components/sleep_as_android/icons.json index 0565716a5f1..8fd915933f2 100644 --- a/homeassistant/components/sleep_as_android/icons.json +++ b/homeassistant/components/sleep_as_android/icons.json @@ -24,6 +24,9 @@ }, "sleep_health": { "default": "mdi:heart-pulse" + }, + "jet_lag_prevention": { + "default": "mdi:airplane-clock" } }, "sensor": { diff --git a/homeassistant/components/sleep_as_android/strings.json b/homeassistant/components/sleep_as_android/strings.json index f36b26e5b58..3aa5a38b380 100644 --- a/homeassistant/components/sleep_as_android/strings.json +++ b/homeassistant/components/sleep_as_android/strings.json @@ -117,6 +117,17 @@ } } } + }, + "jet_lag_prevention": { + "name": "Jet lag prevention", + "state_attributes": { + "event_type": { + "state": { + "jet_lag_start": "[%key:component::sleep_as_android::entity::event::lullaby::state_attributes::event_type::state::start%]", + "jet_lag_stop": "[%key:common::state::stopped%]" + } + } + } } }, "sensor": { diff --git a/tests/components/sleep_as_android/snapshots/test_event.ambr b/tests/components/sleep_as_android/snapshots/test_event.ambr index 27e789351a3..2fe6494f140 100644 --- a/tests/components/sleep_as_android/snapshots/test_event.ambr +++ b/tests/components/sleep_as_android/snapshots/test_event.ambr @@ -65,6 +65,64 @@ 'state': 'unknown', }) # --- +# name: test_setup[event.sleep_as_android_jet_lag_prevention-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'event_types': list([ + 'jet_lag_start', + 'jet_lag_stop', + ]), + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'event', + 'entity_category': None, + 'entity_id': 'event.sleep_as_android_jet_lag_prevention', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Jet lag prevention', + 'platform': 'sleep_as_android', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': , + 'unique_id': '01JRD840SAZ55DGXBD78PTQ4EF_jet_lag_prevention', + 'unit_of_measurement': None, + }) +# --- +# name: test_setup[event.sleep_as_android_jet_lag_prevention-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'event_type': None, + 'event_types': list([ + 'jet_lag_start', + 'jet_lag_stop', + ]), + 'friendly_name': 'Sleep as Android Jet lag prevention', + }), + 'context': , + 'entity_id': 'event.sleep_as_android_jet_lag_prevention', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unknown', + }) +# --- # name: test_setup[event.sleep_as_android_lullaby-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ diff --git a/tests/components/sleep_as_android/test_event.py b/tests/components/sleep_as_android/test_event.py index 4e3a94f919b..89f21e20335 100644 --- a/tests/components/sleep_as_android/test_event.py +++ b/tests/components/sleep_as_android/test_event.py @@ -27,6 +27,7 @@ def event_only() -> Generator[None]: yield +@pytest.mark.usefixtures("entity_registry_enabled_by_default") @freeze_time("2025-01-01T03:30:00.000Z") async def test_setup( hass: HomeAssistant, @@ -123,8 +124,11 @@ async def test_setup( "value2": "label", }, ), + ("jet_lag_prevention", {"event": "jet_lag_start"}), + ("jet_lag_prevention", {"event": "jet_lag_stop"}), ], ) +@pytest.mark.usefixtures("entity_registry_enabled_by_default") @freeze_time("2025-01-01T03:30:00.000+00:00") async def test_webhook_event( hass: HomeAssistant,