diff --git a/homeassistant/core.py b/homeassistant/core.py index a8613dade59..3bfe3c3660c 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -1539,6 +1539,7 @@ class Config: def _async_create_timer(hass: HomeAssistant) -> None: """Create a timer that will start on HOMEASSISTANT_START.""" handle = None + timer_context = Context() def schedule_tick(now: datetime.datetime) -> None: """Schedule a timer tick when the next second rolls around.""" @@ -1553,12 +1554,14 @@ def _async_create_timer(hass: HomeAssistant) -> None: """Fire next time event.""" now = dt_util.utcnow() - hass.bus.async_fire(EVENT_TIME_CHANGED, {ATTR_NOW: now}) + hass.bus.async_fire(EVENT_TIME_CHANGED, {ATTR_NOW: now}, context=timer_context) # If we are more than a second late, a tick was missed late = monotonic() - target if late > 1: - hass.bus.async_fire(EVENT_TIMER_OUT_OF_SYNC, {ATTR_SECONDS: late}) + hass.bus.async_fire( + EVENT_TIMER_OUT_OF_SYNC, {ATTR_SECONDS: late}, context=timer_context + ) schedule_tick(now) diff --git a/tests/test_core.py b/tests/test_core.py index 884c5e98125..01a751b6570 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -1090,9 +1090,20 @@ def test_timer_out_of_sync(mock_monotonic, loop): ): callback(target) - event_type, event_data = hass.bus.async_fire.mock_calls[1][1] - assert event_type == EVENT_TIMER_OUT_OF_SYNC - assert abs(event_data[ATTR_SECONDS] - 2.433333) < 0.001 + _, event_0_args, event_0_kwargs = hass.bus.async_fire.mock_calls[0] + event_context_0 = event_0_kwargs["context"] + + event_type_0, _ = event_0_args + assert event_type_0 == EVENT_TIME_CHANGED + + _, event_1_args, event_1_kwargs = hass.bus.async_fire.mock_calls[1] + event_type_1, event_data_1 = event_1_args + event_context_1 = event_1_kwargs["context"] + + assert event_type_1 == EVENT_TIMER_OUT_OF_SYNC + assert abs(event_data_1[ATTR_SECONDS] - 2.433333) < 0.001 + + assert event_context_0 == event_context_1 assert len(funcs) == 2 fire_time_event, _ = funcs