1 """Generic Plugwise Entity Class."""
3 from __future__
import annotations
5 from plugwise.constants
import GwEntityData
9 CONNECTION_NETWORK_MAC,
15 from .const
import DOMAIN
16 from .coordinator
import PlugwiseDataUpdateCoordinator
20 """Represent a PlugWise Entity."""
22 _attr_has_entity_name =
True
26 coordinator: PlugwiseDataUpdateCoordinator,
29 """Initialise the gateway."""
33 configuration_url: str |
None =
None
34 if entry := self.coordinator.config_entry:
35 configuration_url = f
"http://{entry.data[CONF_HOST]}"
37 data = coordinator.data.devices[device_id]
39 if mac := data.get(
"mac_address"):
40 connections.add((CONNECTION_NETWORK_MAC, mac))
41 if mac := data.get(
"zigbee_mac_address"):
42 connections.add((CONNECTION_ZIGBEE, mac))
45 configuration_url=configuration_url,
46 identifiers={(DOMAIN, device_id)},
47 connections=connections,
48 manufacturer=data.get(
"vendor"),
49 model=data.get(
"model"),
50 model_id=data.get(
"model_id"),
51 name=coordinator.data.gateway[
"smile_name"],
52 sw_version=data.get(
"firmware"),
53 hw_version=data.get(
"hardware"),
56 if device_id != coordinator.data.gateway[
"gateway_id"]:
59 ATTR_NAME: data.get(
"name"),
62 str(self.coordinator.data.gateway[
"gateway_id"]),
69 """Return if entity is available."""
71 self.
_dev_id_dev_id
in self.coordinator.data.devices
72 and (
"available" not in self.
devicedevice
or self.
devicedevice[
"available"]
is True)
78 """Return data for this device."""
79 return self.coordinator.data.devices[self.
_dev_id_dev_id]
82 """Subscribe to updates."""
83 self._handle_coordinator_update()
None async_added_to_hass(self)
None __init__(self, PlugwiseDataUpdateCoordinator coordinator, str device_id)
GwEntityData device(self)