diff --git a/homeassistant/components/homematicip_cloud/device.py b/homeassistant/components/homematicip_cloud/device.py index b086eaa29c75f78825fc609ec39ea372bc163d99..71855d7c3f5a4a4df65598f4b5d7a7d8ae38f656 100644 --- a/homeassistant/components/homematicip_cloud/device.py +++ b/homeassistant/components/homematicip_cloud/device.py @@ -76,8 +76,16 @@ class HomematicipGenericDevice(Entity): def _async_device_changed(self, *args, **kwargs): """Handle device state changes.""" - _LOGGER.debug("Event %s (%s)", self.name, self._device.modelType) - self.async_schedule_update_ha_state() + # Don't update disabled entities + if self.enabled: + _LOGGER.debug("Event %s (%s)", self.name, self._device.modelType) + self.async_schedule_update_ha_state() + else: + _LOGGER.debug( + "Device Changed Event for %s (%s) not fired. Entity is disabled.", + self.name, + self._device.modelType, + ) @property def name(self) -> str: diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py index dc2e46cc6b22fe13fa837a40c28d037bf3e5d4a2..1aa405326e565b14962fc7d5ae271f0c69a27317 100644 --- a/homeassistant/helpers/entity.py +++ b/homeassistant/helpers/entity.py @@ -229,6 +229,11 @@ class Entity: # are used to perform a very specific function. Overwriting these may # produce undesirable effects in the entity's operation. + @property + def enabled(self): + """Return if the entity is enabled in the entity registry.""" + return self.registry_entry is None or not self.registry_entry.disabled + @callback def async_set_context(self, context): """Set the context the entity currently operates under.""" diff --git a/tests/helpers/test_entity.py b/tests/helpers/test_entity.py index 3c89a5c65379d6f77c19704fa96dd700d6c6def8..18cedf1c46ac5a491be16fc1c1128a646f65d7fb 100644 --- a/tests/helpers/test_entity.py +++ b/tests/helpers/test_entity.py @@ -552,8 +552,10 @@ async def test_disabled_in_entity_registry(hass): await hass.async_block_till_done() assert entry2 != entry assert ent.registry_entry == entry2 + assert ent.enabled is True entry3 = registry.async_update_entity("hello.world", disabled_by="user") await hass.async_block_till_done() assert entry3 != entry2 assert ent.registry_entry == entry3 + assert ent.enabled is False