1 """Melnor integration models."""
3 from collections.abc
import Callable
5 from melnor_bluetooth.device
import Device, Valve
12 from .const
import DOMAIN
13 from .coordinator
import MelnorDataUpdateCoordinator
17 """Base class for melnor entities."""
20 _attr_has_entity_name =
True
24 coordinator: MelnorDataUpdateCoordinator,
26 """Initialize a melnor base entity."""
33 manufacturer=
"Melnor",
40 """Handle updated data from the coordinator."""
42 self.async_write_ha_state()
46 """Return True if entity is available."""
51 """Base class for valves that define themselves as child devices."""
57 coordinator: MelnorDataUpdateCoordinator,
58 entity_description: EntityDescription,
61 """Initialize a valve entity."""
65 f
"{self._device.mac}-zone{valve.id}-{entity_description.key}"
72 identifiers={(DOMAIN, f
"{self._device.mac}-zone{self._valve.id}")},
73 manufacturer=
"Melnor",
74 name=f
"Zone {valve.id + 1}",
79 def get_entities_for_valves[_T: EntityDescription](
80 coordinator: MelnorDataUpdateCoordinator,
81 descriptions: list[_T],
84 CoordinatorEntity[MelnorDataUpdateCoordinator],
86 ) -> list[CoordinatorEntity[MelnorDataUpdateCoordinator]]:
87 """Get descriptions for valves."""
88 entities: list[CoordinatorEntity[MelnorDataUpdateCoordinator]] = []
92 valve = coordinator.data[f
"zone{i}"]
96 function(valve, description)
for description
in descriptions
None _handle_coordinator_update(self)
None __init__(self, MelnorDataUpdateCoordinator coordinator)
None __init__(self, MelnorDataUpdateCoordinator coordinator, EntityDescription entity_description, Valve valve)