1 """Support for RainMachine devices."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
14 from .
import RainMachineConfigEntry, RainMachineData
15 from .const
import DATA_API_VERSIONS, DOMAIN
16 from .coordinator
import RainMachineDataUpdateCoordinator
19 @dataclass(frozen=True, kw_only=True)
21 """Describe a RainMachine entity."""
27 """Define a generic RainMachine entity."""
29 _attr_has_entity_name =
True
33 entry: RainMachineConfigEntry,
34 data: RainMachineData,
35 description: RainMachineEntityDescription,
38 super().
__init__(data.coordinators[description.api_category])
49 """Return device information about this controller."""
51 identifiers={(DOMAIN, self.
_data_data.controller.mac)},
53 f
"https://{self._entry.data[CONF_IP_ADDRESS]}:"
54 f
"{self._entry.data[CONF_PORT]}"
56 connections={(dr.CONNECTION_NETWORK_MAC, self.
_data_data.controller.mac)},
57 name=self.
_data_data.controller.name.capitalize(),
58 manufacturer=
"RainMachine",
60 f
"Version {self._version_coordinator.data['hwVer']} "
61 f
"(API: {self._version_coordinator.data['apiVer']})"
68 """Respond to a DataUpdateCoordinator update."""
70 self.async_write_ha_state()
73 """When entity is added to hass."""
84 """Update the state."""
DeviceInfo device_info(self)
None _handle_coordinator_update(self)
None update_from_latest_data(self)
None async_added_to_hass(self)
None __init__(self, RainMachineConfigEntry entry, RainMachineData data, RainMachineEntityDescription description)
_attr_extra_state_attributes
Callable[[], None] async_add_listener(self, CALLBACK_TYPE update_callback, Any context=None)