From bda997efe954263c8032d4cf8f9a5ff43f527e7b Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Fri, 1 Apr 2022 17:28:50 +0200 Subject: [PATCH] Fix utility_meter startup (#69064) --- homeassistant/components/utility_meter/sensor.py | 10 ++++++---- tests/components/utility_meter/test_sensor.py | 8 +++++++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/utility_meter/sensor.py b/homeassistant/components/utility_meter/sensor.py index 92656fd0769..8df009a2a04 100644 --- a/homeassistant/components/utility_meter/sensor.py +++ b/homeassistant/components/utility_meter/sensor.py @@ -20,7 +20,6 @@ from homeassistant.const import ( CONF_NAME, ENERGY_KILO_WATT_HOUR, ENERGY_WATT_HOUR, - EVENT_HOMEASSISTANT_START, STATE_UNAVAILABLE, STATE_UNKNOWN, ) @@ -33,6 +32,7 @@ from homeassistant.helpers.event import ( async_track_state_change_event, ) from homeassistant.helpers.restore_state import RestoreEntity +from homeassistant.helpers.start import async_at_start from homeassistant.helpers.template import is_number from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType import homeassistant.util.dt as dt_util @@ -426,6 +426,10 @@ class UtilityMeterSensor(RestoreEntity, SensorEntity): ) tariff_entity_state = self.hass.states.get(self._tariff_entity) + if not tariff_entity_state: + # The utility meter is not yet added + return + self._change_status(tariff_entity_state.state) return @@ -439,9 +443,7 @@ class UtilityMeterSensor(RestoreEntity, SensorEntity): self.hass, [self._sensor_source_id], self.async_reading ) - self.hass.bus.async_listen_once( - EVENT_HOMEASSISTANT_START, async_source_tracking - ) + async_at_start(self.hass, async_source_tracking) @property def name(self): diff --git a/tests/components/utility_meter/test_sensor.py b/tests/components/utility_meter/test_sensor.py index 2ee2f0b1c74..63dc0523e6d 100644 --- a/tests/components/utility_meter/test_sensor.py +++ b/tests/components/utility_meter/test_sensor.py @@ -37,7 +37,7 @@ from homeassistant.const import ( STATE_UNAVAILABLE, STATE_UNKNOWN, ) -from homeassistant.core import State +from homeassistant.core import CoreState, State from homeassistant.setup import async_setup_component import homeassistant.util.dt as dt_util @@ -418,6 +418,9 @@ async def test_device_class(hass, yaml_config, config_entry_configs): ) async def test_restore_state(hass, yaml_config, config_entry_config): """Test utility sensor restore state.""" + # Home assistant is not runnit yet + hass.state = CoreState.not_running + last_reset = "2020-12-21T00:00:00.013073+00:00" mock_restore_cache( hass, @@ -668,6 +671,9 @@ async def test_non_net_consumption(hass, yaml_config, config_entry_config, caplo ) async def test_delta_values(hass, yaml_config, config_entry_config, caplog): """Test utility meter "delta_values" mode.""" + # Home assistant is not runnit yet + hass.state = CoreState.not_running + now = dt_util.utcnow() with alter_time(now): if yaml_config: