mirror of
https://github.com/home-assistant/core.git
synced 2025-07-26 22:57:17 +00:00
Fire config changed event during start (#36812)
This commit is contained in:
parent
b8c9f67533
commit
de12c21ce7
@ -249,9 +249,19 @@ async def async_setup(hass, config):
|
|||||||
|
|
||||||
await hassio.update_hass_api(config.get("http", {}), refresh_token)
|
await hassio.update_hass_api(config.get("http", {}), refresh_token)
|
||||||
|
|
||||||
|
last_timezone = None
|
||||||
|
|
||||||
async def push_config(_):
|
async def push_config(_):
|
||||||
"""Push core config to Hass.io."""
|
"""Push core config to Hass.io."""
|
||||||
await hassio.update_hass_timezone(str(hass.config.time_zone))
|
nonlocal last_timezone
|
||||||
|
|
||||||
|
new_timezone = str(hass.config.time_zone)
|
||||||
|
|
||||||
|
if new_timezone == last_timezone:
|
||||||
|
return
|
||||||
|
|
||||||
|
last_timezone = new_timezone
|
||||||
|
await hassio.update_hass_timezone(new_timezone)
|
||||||
|
|
||||||
hass.bus.async_listen(EVENT_CORE_CONFIG_UPDATE, push_config)
|
hass.bus.async_listen(EVENT_CORE_CONFIG_UPDATE, push_config)
|
||||||
|
|
||||||
|
@ -263,11 +263,11 @@ class HomeAssistant:
|
|||||||
This method is a coroutine.
|
This method is a coroutine.
|
||||||
"""
|
"""
|
||||||
_LOGGER.info("Starting Home Assistant")
|
_LOGGER.info("Starting Home Assistant")
|
||||||
self.state = CoreState.starting
|
|
||||||
|
|
||||||
setattr(self.loop, "_thread_ident", threading.get_ident())
|
setattr(self.loop, "_thread_ident", threading.get_ident())
|
||||||
self.bus.async_fire(EVENT_HOMEASSISTANT_START)
|
|
||||||
|
self.state = CoreState.starting
|
||||||
self.bus.async_fire(EVENT_CORE_CONFIG_UPDATE)
|
self.bus.async_fire(EVENT_CORE_CONFIG_UPDATE)
|
||||||
|
self.bus.async_fire(EVENT_HOMEASSISTANT_START)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Only block for EVENT_HOMEASSISTANT_START listener
|
# Only block for EVENT_HOMEASSISTANT_START listener
|
||||||
@ -293,8 +293,9 @@ class HomeAssistant:
|
|||||||
return
|
return
|
||||||
|
|
||||||
self.state = CoreState.running
|
self.state = CoreState.running
|
||||||
_async_create_timer(self)
|
self.bus.async_fire(EVENT_CORE_CONFIG_UPDATE)
|
||||||
self.bus.async_fire(EVENT_HOMEASSISTANT_STARTED)
|
self.bus.async_fire(EVENT_HOMEASSISTANT_STARTED)
|
||||||
|
_async_create_timer(self)
|
||||||
|
|
||||||
def add_job(self, target: Callable[..., Any], *args: Any) -> None:
|
def add_job(self, target: Callable[..., Any], *args: Any) -> None:
|
||||||
"""Add job to the executor pool.
|
"""Add job to the executor pool.
|
||||||
|
@ -104,7 +104,7 @@ async def test_hassio_discovery_startup_done(hass, aioclient_mock, hassio_client
|
|||||||
await async_setup_component(hass, "hassio", {})
|
await async_setup_component(hass, "hassio", {})
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
assert aioclient_mock.call_count == 3
|
assert aioclient_mock.call_count == 2
|
||||||
assert mock_mqtt.called
|
assert mock_mqtt.called
|
||||||
mock_mqtt.assert_called_with(
|
mock_mqtt.assert_called_with(
|
||||||
{
|
{
|
||||||
|
@ -22,12 +22,14 @@ from homeassistant.const import (
|
|||||||
EVENT_HOMEASSISTANT_CLOSE,
|
EVENT_HOMEASSISTANT_CLOSE,
|
||||||
EVENT_HOMEASSISTANT_FINAL_WRITE,
|
EVENT_HOMEASSISTANT_FINAL_WRITE,
|
||||||
EVENT_HOMEASSISTANT_START,
|
EVENT_HOMEASSISTANT_START,
|
||||||
|
EVENT_HOMEASSISTANT_STARTED,
|
||||||
EVENT_HOMEASSISTANT_STOP,
|
EVENT_HOMEASSISTANT_STOP,
|
||||||
EVENT_SERVICE_REGISTERED,
|
EVENT_SERVICE_REGISTERED,
|
||||||
EVENT_SERVICE_REMOVED,
|
EVENT_SERVICE_REMOVED,
|
||||||
EVENT_STATE_CHANGED,
|
EVENT_STATE_CHANGED,
|
||||||
EVENT_TIME_CHANGED,
|
EVENT_TIME_CHANGED,
|
||||||
EVENT_TIMER_OUT_OF_SYNC,
|
EVENT_TIMER_OUT_OF_SYNC,
|
||||||
|
MATCH_ALL,
|
||||||
__version__,
|
__version__,
|
||||||
)
|
)
|
||||||
import homeassistant.core as ha
|
import homeassistant.core as ha
|
||||||
@ -1333,3 +1335,35 @@ async def test_additional_data_in_core_config(hass, hass_storage):
|
|||||||
}
|
}
|
||||||
await config.async_load()
|
await config.async_load()
|
||||||
assert config.location_name == "Test Name"
|
assert config.location_name == "Test Name"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_start_events(hass):
|
||||||
|
"""Test events fired when starting Home Assistant."""
|
||||||
|
hass.state = ha.CoreState.not_running
|
||||||
|
|
||||||
|
all_events = []
|
||||||
|
|
||||||
|
@ha.callback
|
||||||
|
def capture_events(ev):
|
||||||
|
all_events.append(ev.event_type)
|
||||||
|
|
||||||
|
hass.bus.async_listen(MATCH_ALL, capture_events)
|
||||||
|
|
||||||
|
core_states = []
|
||||||
|
|
||||||
|
@ha.callback
|
||||||
|
def capture_core_state(_):
|
||||||
|
core_states.append(hass.state)
|
||||||
|
|
||||||
|
hass.bus.async_listen(EVENT_CORE_CONFIG_UPDATE, capture_core_state)
|
||||||
|
|
||||||
|
await hass.async_start()
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
assert all_events == [
|
||||||
|
EVENT_CORE_CONFIG_UPDATE,
|
||||||
|
EVENT_HOMEASSISTANT_START,
|
||||||
|
EVENT_CORE_CONFIG_UPDATE,
|
||||||
|
EVENT_HOMEASSISTANT_STARTED,
|
||||||
|
]
|
||||||
|
assert core_states == [ha.CoreState.starting, ha.CoreState.running]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user