1 """Update platform for Sensibo integration."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
8 from pysensibo.model
import SensiboDevice
13 UpdateEntityDescription,
19 from .
import SensiboConfigEntry
20 from .coordinator
import SensiboDataUpdateCoordinator
21 from .entity
import SensiboDeviceBaseEntity
26 @dataclass(frozen=True, kw_only=True)
28 """Describes Sensibo Update entity."""
30 value_version: Callable[[SensiboDevice], str |
None]
31 value_available: Callable[[SensiboDevice], str |
None]
34 DEVICE_SENSOR_TYPES: tuple[SensiboDeviceUpdateEntityDescription, ...] = (
36 key=
"fw_ver_available",
37 device_class=UpdateDeviceClass.FIRMWARE,
38 entity_category=EntityCategory.DIAGNOSTIC,
39 value_version=
lambda data: data.fw_ver,
40 value_available=
lambda data: data.fw_ver_available,
47 entry: SensiboConfigEntry,
48 async_add_entities: AddEntitiesCallback,
50 """Set up Sensibo Update platform."""
52 coordinator = entry.runtime_data
56 for description
in DEVICE_SENSOR_TYPES
57 for device_id, device_data
in coordinator.data.parsed.items()
58 if description.value_available(device_data)
is not None
63 """Representation of a Sensibo Device Update."""
65 entity_description: SensiboDeviceUpdateEntityDescription
69 coordinator: SensiboDataUpdateCoordinator,
71 entity_description: SensiboDeviceUpdateEntityDescription,
73 """Initiate Sensibo Device Update."""
74 super().
__init__(coordinator, device_id)
81 """Return version currently installed."""
86 """Return latest available version."""
SensiboDevice device_data(self)
str|None latest_version(self)
None __init__(self, SensiboDataUpdateCoordinator coordinator, str device_id, SensiboDeviceUpdateEntityDescription entity_description)
None async_setup_entry(HomeAssistant hass, SensiboConfigEntry entry, AddEntitiesCallback async_add_entities)