diff --git a/homeassistant/components/notion/__init__.py b/homeassistant/components/notion/__init__.py index f387e820253..e9c45c62816 100644 --- a/homeassistant/components/notion/__init__.py +++ b/homeassistant/components/notion/__init__.py @@ -306,13 +306,22 @@ class NotionEntity(Entity): def update(): """Update the entity.""" self.hass.async_create_task(self._update_bridge_id()) - self.async_schedule_update_ha_state(True) + self.update_from_latest_data() + self.async_write_ha_state() self._async_unsub_dispatcher_connect = async_dispatcher_connect( self.hass, TOPIC_DATA_UPDATE, update ) + self.update_from_latest_data() + async def async_will_remove_from_hass(self): """Disconnect dispatcher listener when removed.""" if self._async_unsub_dispatcher_connect: self._async_unsub_dispatcher_connect() + self._async_unsub_dispatcher_connect = None + + @callback + def update_from_latest_data(self): + """Update the entity from the latest data.""" + raise NotImplementedError diff --git a/homeassistant/components/notion/binary_sensor.py b/homeassistant/components/notion/binary_sensor.py index 5079348e821..53a98204704 100644 --- a/homeassistant/components/notion/binary_sensor.py +++ b/homeassistant/components/notion/binary_sensor.py @@ -2,6 +2,7 @@ import logging from homeassistant.components.binary_sensor import BinarySensorDevice +from homeassistant.core import callback from . import ( BINARY_SENSOR_TYPES, @@ -75,7 +76,8 @@ class NotionBinarySensor(NotionEntity, BinarySensorDevice): if task["task_type"] == SENSOR_SMOKE_CO: return self._state != "no_alarm" - async def async_update(self): + @callback + def update_from_latest_data(self): """Fetch new state data for the sensor.""" task = self._notion.tasks[self._task_id] diff --git a/homeassistant/components/notion/sensor.py b/homeassistant/components/notion/sensor.py index 0e1c9f25cb2..918ee8c5f95 100644 --- a/homeassistant/components/notion/sensor.py +++ b/homeassistant/components/notion/sensor.py @@ -1,6 +1,8 @@ """Support for Notion sensors.""" import logging +from homeassistant.core import callback + from . import SENSOR_TEMPERATURE, SENSOR_TYPES, NotionEntity from .const import DATA_CLIENT, DOMAIN @@ -58,7 +60,8 @@ class NotionSensor(NotionEntity): """Return the unit of measurement.""" return self._unit - async def async_update(self): + @callback + def update_from_latest_data(self): """Fetch new state data for the sensor.""" task = self._notion.tasks[self._task_id]