diff --git a/homeassistant/components/myq/binary_sensor.py b/homeassistant/components/myq/binary_sensor.py index aa6c886286c..e5f8fbd057e 100644 --- a/homeassistant/components/myq/binary_sensor.py +++ b/homeassistant/components/myq/binary_sensor.py @@ -14,6 +14,7 @@ from homeassistant.components.binary_sensor import ( DEVICE_CLASS_CONNECTIVITY, BinarySensorEntity, ) +from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import DOMAIN, MYQ_COORDINATOR, MYQ_GATEWAY @@ -35,12 +36,12 @@ async def async_setup_entry(hass, config_entry, async_add_entities): async_add_entities(entities, True) -class MyQBinarySensorEntity(BinarySensorEntity): +class MyQBinarySensorEntity(CoordinatorEntity, BinarySensorEntity): """Representation of a MyQ gateway.""" def __init__(self, coordinator, device): """Initialize with API object, device id.""" - self._coordinator = coordinator + super().__init__(coordinator) self._device = device @property @@ -56,7 +57,7 @@ class MyQBinarySensorEntity(BinarySensorEntity): @property def is_on(self): """Return if the device is online.""" - if not self._coordinator.last_update_success: + if not self.coordinator.last_update_success: return False # Not all devices report online so assume True if its missing @@ -64,15 +65,16 @@ class MyQBinarySensorEntity(BinarySensorEntity): MYQ_DEVICE_STATE_ONLINE, True ) + @property + def available(self) -> bool: + """Entity is always available.""" + return True + @property def unique_id(self): """Return a unique, Home Assistant friendly identifier for this entity.""" return self._device.device_id - async def async_update(self): - """Update status of cover.""" - await self._coordinator.async_request_refresh() - @property def device_info(self): """Return the device_info of the device.""" @@ -87,14 +89,3 @@ class MyQBinarySensorEntity(BinarySensorEntity): device_info["model"] = model return device_info - - @property - def should_poll(self): - """Return False, updates are controlled via coordinator.""" - return False - - async def async_added_to_hass(self): - """Subscribe to updates.""" - self.async_on_remove( - self._coordinator.async_add_listener(self.async_write_ha_state) - ) diff --git a/homeassistant/components/myq/cover.py b/homeassistant/components/myq/cover.py index 9a44234e747..cccce36f314 100644 --- a/homeassistant/components/myq/cover.py +++ b/homeassistant/components/myq/cover.py @@ -32,6 +32,7 @@ from homeassistant.const import ( from homeassistant.core import callback from homeassistant.helpers import config_validation as cv from homeassistant.helpers.event import async_call_later +from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import ( DOMAIN, @@ -82,12 +83,12 @@ async def async_setup_entry(hass, config_entry, async_add_entities): ) -class MyQDevice(CoverEntity): +class MyQDevice(CoordinatorEntity, CoverEntity): """Representation of a MyQ cover.""" def __init__(self, coordinator, device): """Initialize with API object, device id.""" - self._coordinator = coordinator + super().__init__(coordinator) self._device = device self._last_action_timestamp = 0 self._scheduled_transition_update = None @@ -108,7 +109,7 @@ class MyQDevice(CoverEntity): @property def available(self): """Return if the device is online.""" - if not self._coordinator.last_update_success: + if not self.coordinator.last_update_success: return False # Not all devices report online so assume True if its missing @@ -173,11 +174,7 @@ class MyQDevice(CoverEntity): async def _async_complete_schedule_update(self, _): """Update status of the cover via coordinator.""" self._scheduled_transition_update = None - await self._coordinator.async_request_refresh() - - async def async_update(self): - """Update status of cover.""" - await self._coordinator.async_request_refresh() + await self.coordinator.async_request_refresh() @property def device_info(self): @@ -204,15 +201,10 @@ class MyQDevice(CoverEntity): self.async_write_ha_state() - @property - def should_poll(self): - """Return False, updates are controlled via coordinator.""" - return False - async def async_added_to_hass(self): """Subscribe to updates.""" self.async_on_remove( - self._coordinator.async_add_listener(self._async_consume_update) + self.coordinator.async_add_listener(self._async_consume_update) ) async def async_will_remove_from_hass(self):