diff --git a/homeassistant/components/xiaomi_aqara/binary_sensor.py b/homeassistant/components/xiaomi_aqara/binary_sensor.py index 13d65cb21f4..ae4059728fe 100644 --- a/homeassistant/components/xiaomi_aqara/binary_sensor.py +++ b/homeassistant/components/xiaomi_aqara/binary_sensor.py @@ -9,6 +9,7 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.event import async_call_later +from homeassistant.helpers.restore_state import RestoreEntity from . import XiaomiDevice from .const import DOMAIN, GATEWAYS_KEY @@ -181,6 +182,11 @@ class XiaomiNatgasSensor(XiaomiBinarySensor): attrs.update(super().extra_state_attributes) return attrs + async def async_added_to_hass(self) -> None: + """Handle entity which will be added.""" + await super().async_added_to_hass() + self._state = False + def parse_data(self, data, raw_data): """Parse data sent by gateway.""" if DENSITY in data: @@ -232,6 +238,11 @@ class XiaomiMotionSensor(XiaomiBinarySensor): self._state = False self.async_write_ha_state() + async def async_added_to_hass(self) -> None: + """Handle entity which will be added.""" + await super().async_added_to_hass() + self._state = False + def parse_data(self, data, raw_data): """Parse data sent by gateway. @@ -293,7 +304,7 @@ class XiaomiMotionSensor(XiaomiBinarySensor): return True -class XiaomiDoorSensor(XiaomiBinarySensor): +class XiaomiDoorSensor(XiaomiBinarySensor, RestoreEntity): """Representation of a XiaomiDoorSensor.""" def __init__(self, device, xiaomi_hub, config_entry): @@ -319,6 +330,15 @@ class XiaomiDoorSensor(XiaomiBinarySensor): attrs.update(super().extra_state_attributes) return attrs + async def async_added_to_hass(self) -> None: + """Handle entity which will be added.""" + await super().async_added_to_hass() + state = await self.async_get_last_state() + if state is None: + return + + self._state = state.state == "on" + def parse_data(self, data, raw_data): """Parse data sent by gateway.""" self._should_poll = False @@ -362,6 +382,11 @@ class XiaomiWaterLeakSensor(XiaomiBinarySensor): config_entry, ) + async def async_added_to_hass(self) -> None: + """Handle entity which will be added.""" + await super().async_added_to_hass() + self._state = False + def parse_data(self, data, raw_data): """Parse data sent by gateway.""" self._should_poll = False @@ -400,6 +425,11 @@ class XiaomiSmokeSensor(XiaomiBinarySensor): attrs.update(super().extra_state_attributes) return attrs + async def async_added_to_hass(self) -> None: + """Handle entity which will be added.""" + await super().async_added_to_hass() + self._state = False + def parse_data(self, data, raw_data): """Parse data sent by gateway.""" if DENSITY in data: