from homeassistant.components.sensor import SensorEntity from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity import DeviceInfo from homeassistant.exceptions import ConfigEntryNotReady from .coordinator import LinkyTarifCoordinator from .const import DOMAIN, CONF_IEEE, CONF_INTERVAL async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback): coordinator = LinkyTarifCoordinator( hass, ieee=entry.data[CONF_IEEE], interval=entry.options.get(CONF_INTERVAL, 300), ) try: await coordinator.async_refresh() if coordinator.last_update_success is False: raise ConfigEntryNotReady except Exception: raise ConfigEntryNotReady async_add_entities([LinkyTarifSensor(coordinator)]) class LinkyTarifSensor(SensorEntity): def __init__(self, coordinator: LinkyTarifCoordinator): self.coordinator = coordinator self._attr_unique_id = f"linky_tarif_{coordinator._ieee}" self._attr_name = "Linky Tarif Period" self._attr_icon = "mdi:flash" self._attr_device_info = DeviceInfo(identifiers={(DOMAIN, coordinator._ieee)}) @property def native_value(self): return self.coordinator.data.get("tariff") if self.coordinator.data else None @property def extra_state_attributes(self): return {"last_update": self.coordinator.data.get("last_update")} if self.coordinator.data else {} async def async_update(self): await self.coordinator.async_request_refresh()