"""Binary sensors for Victron MK2 MQTT integration.""" from __future__ import annotations from typing import Any from homeassistant.components.binary_sensor import BinarySensorEntity from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant from .const import DATA_BRIDGE, DOMAIN from .coordinator import VictronMqttBridge from .entity import VictronMqttEntity async def async_setup_platform( hass: HomeAssistant, config: dict[str, Any], async_add_entities, discovery_info: dict[str, Any] | None = None, ) -> None: """Set up Victron binary sensors.""" bridge: VictronMqttBridge = hass.data[DOMAIN][DATA_BRIDGE] async_add_entities([VictronDataValidBinarySensor(bridge)]) class VictronDataValidBinarySensor(VictronMqttEntity, BinarySensorEntity): """MQTT data validity sensor.""" _attr_name = "Data Valid" _attr_entity_category = EntityCategory.DIAGNOSTIC _attr_icon = "mdi:check-network-outline" def __init__(self, bridge: VictronMqttBridge) -> None: super().__init__(bridge) self._attr_unique_id = f"{bridge.topic_root}_data_valid" @property def is_on(self) -> bool: value = self.bridge.metric("Valid") if isinstance(value, bool): return value if isinstance(value, (int, float)): return value != 0 if isinstance(value, str): normalized = value.strip().lower() return normalized in {"1", "true", "on", "yes"} return False