Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Switcher integration Sensor platform."""
2 
3 from __future__ import annotations
4 
5 from aioswitcher.device import DeviceCategory
6 
8  SensorDeviceClass,
9  SensorEntity,
10  SensorEntityDescription,
11  SensorStateClass,
12 )
13 from homeassistant.config_entries import ConfigEntry
14 from homeassistant.const import UnitOfElectricCurrent, UnitOfPower
15 from homeassistant.core import HomeAssistant, callback
16 from homeassistant.helpers.dispatcher import async_dispatcher_connect
17 from homeassistant.helpers.entity_platform import AddEntitiesCallback
18 from homeassistant.helpers.typing import StateType
19 
20 from .const import SIGNAL_DEVICE_ADD
21 from .coordinator import SwitcherDataUpdateCoordinator
22 from .entity import SwitcherEntity
23 
24 POWER_SENSORS: list[SensorEntityDescription] = [
26  key="power_consumption",
27  native_unit_of_measurement=UnitOfPower.WATT,
28  device_class=SensorDeviceClass.POWER,
29  state_class=SensorStateClass.MEASUREMENT,
30  ),
32  key="electric_current",
33  native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
34  device_class=SensorDeviceClass.CURRENT,
35  state_class=SensorStateClass.MEASUREMENT,
36  ),
37 ]
38 TIME_SENSORS: list[SensorEntityDescription] = [
40  key="remaining_time",
41  translation_key="remaining_time",
42  ),
44  key="auto_off_set",
45  translation_key="auto_shutdown",
46  entity_registry_enabled_default=False,
47  ),
48 ]
49 TEMPERATURE_SENSORS: list[SensorEntityDescription] = [
51  key="temperature",
52  translation_key="temperature",
53  ),
54 ]
55 
56 POWER_PLUG_SENSORS = POWER_SENSORS
57 WATER_HEATER_SENSORS = [*POWER_SENSORS, *TIME_SENSORS]
58 THERMOSTAT_SENSORS = TEMPERATURE_SENSORS
59 
60 
62  hass: HomeAssistant,
63  config_entry: ConfigEntry,
64  async_add_entities: AddEntitiesCallback,
65 ) -> None:
66  """Set up Switcher sensor from config entry."""
67 
68  @callback
69  def async_add_sensors(coordinator: SwitcherDataUpdateCoordinator) -> None:
70  """Add sensors from Switcher device."""
71  if coordinator.data.device_type.category == DeviceCategory.POWER_PLUG:
73  SwitcherSensorEntity(coordinator, description)
74  for description in POWER_PLUG_SENSORS
75  )
76  elif coordinator.data.device_type.category == DeviceCategory.WATER_HEATER:
78  SwitcherSensorEntity(coordinator, description)
79  for description in WATER_HEATER_SENSORS
80  )
81  elif coordinator.data.device_type.category == DeviceCategory.THERMOSTAT:
83  SwitcherSensorEntity(coordinator, description)
84  for description in THERMOSTAT_SENSORS
85  )
86 
87  config_entry.async_on_unload(
88  async_dispatcher_connect(hass, SIGNAL_DEVICE_ADD, async_add_sensors)
89  )
90 
91 
93  """Representation of a Switcher sensor entity."""
94 
95  def __init__(
96  self,
97  coordinator: SwitcherDataUpdateCoordinator,
98  description: SensorEntityDescription,
99  ) -> None:
100  """Initialize the entity."""
101  super().__init__(coordinator)
102  self.entity_descriptionentity_description = description
103 
104  self._attr_unique_id_attr_unique_id = (
105  f"{coordinator.device_id}-{coordinator.mac_address}-{description.key}"
106  )
107 
108  @property
109  def native_value(self) -> StateType:
110  """Return value of sensor."""
111  return getattr(self.coordinator.data, self.entity_descriptionentity_description.key) # type: ignore[no-any-return]
None __init__(self, SwitcherDataUpdateCoordinator coordinator, SensorEntityDescription description)
Definition: sensor.py:99
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:65
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)
Definition: dispatcher.py:103