diff --git a/homeassistant/components/overkiz/entity.py b/homeassistant/components/overkiz/entity.py index 0880440d393a4a..89472ef3d5188b 100644 --- a/homeassistant/components/overkiz/entity.py +++ b/homeassistant/components/overkiz/entity.py @@ -2,7 +2,7 @@ from typing import cast -from pyoverkiz.enums import OverkizAttribute, OverkizState +from pyoverkiz.enums import APIType, OverkizAttribute, OverkizCommandParam, OverkizState from pyoverkiz.models import Device from homeassistant.helpers.device_registry import DeviceInfo @@ -44,7 +44,20 @@ def __init__( @property def available(self) -> bool: """Return True if entity is available.""" - return self.device.available and super().available + if self.device.available: + return super().available + + # Workaround: local API may incorrectly report available=False (Somfy-TaHoma-Developer-Mode#217) + if self.coordinator.client.api_type != APIType.LOCAL: + return False + + if status_state := self.device.states.get(OverkizState.CORE_STATUS): + return ( + status_state.value == OverkizCommandParam.AVAILABLE + and super().available + ) + + return False @property def is_sub_device(self) -> bool: