Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Support for Gogogate2 garage Doors."""
2 
3 from __future__ import annotations
4 
5 from itertools import chain
6 
7 from ismartgate.common import AbstractDoor, get_configured_doors
8 
10  SensorDeviceClass,
11  SensorEntity,
12  SensorStateClass,
13 )
14 from homeassistant.config_entries import ConfigEntry
15 from homeassistant.const import PERCENTAGE, EntityCategory, UnitOfTemperature
16 from homeassistant.core import HomeAssistant
17 from homeassistant.helpers.entity_platform import AddEntitiesCallback
18 
19 from .common import get_data_update_coordinator, sensor_unique_id
20 from .coordinator import DeviceDataUpdateCoordinator
21 from .entity import GoGoGate2Entity
22 
23 SENSOR_ID_WIRED = "WIRE"
24 
25 
27  hass: HomeAssistant,
28  config_entry: ConfigEntry,
29  async_add_entities: AddEntitiesCallback,
30 ) -> None:
31  """Set up the config entry."""
32  data_update_coordinator = get_data_update_coordinator(hass, config_entry)
33 
34  sensors = chain(
35  [
36  DoorSensorBattery(config_entry, data_update_coordinator, door)
37  for door in get_configured_doors(data_update_coordinator.data)
38  if door.sensorid and door.sensorid != SENSOR_ID_WIRED
39  ],
40  [
41  DoorSensorTemperature(config_entry, data_update_coordinator, door)
42  for door in get_configured_doors(data_update_coordinator.data)
43  if door.sensorid and door.sensorid != SENSOR_ID_WIRED
44  ],
45  )
46  async_add_entities(sensors)
47 
48 
50  """Base class for door sensor entities."""
51 
52  @property
54  """Return the state attributes."""
55  attrs = super().extra_state_attributes
56  door = self.doordoor
57  if door.sensorid is not None:
58  attrs["sensor_id"] = door.sensorid
59  return attrs
60 
61 
63  """Battery sensor entity for gogogate2 door sensor."""
64 
65  _attr_entity_category = EntityCategory.DIAGNOSTIC
66  _attr_device_class = SensorDeviceClass.BATTERY
67  _attr_state_class = SensorStateClass.MEASUREMENT
68  _attr_native_unit_of_measurement = PERCENTAGE
69 
70  def __init__(
71  self,
72  config_entry: ConfigEntry,
73  data_update_coordinator: DeviceDataUpdateCoordinator,
74  door: AbstractDoor,
75  ) -> None:
76  """Initialize the object."""
77  unique_id = sensor_unique_id(config_entry, door, "battery")
78  super().__init__(config_entry, data_update_coordinator, door, unique_id)
79 
80  @property
81  def name(self):
82  """Return the name of the door."""
83  return f"{self.door.name} battery"
84 
85  @property
86  def native_value(self):
87  """Return the state of the entity."""
88  return self.doordoor.voltage # This is a percentage, not an absolute voltage
89 
90 
92  """Temperature sensor entity for gogogate2 door sensor."""
93 
94  _attr_device_class = SensorDeviceClass.TEMPERATURE
95  _attr_state_class = SensorStateClass.MEASUREMENT
96  _attr_native_unit_of_measurement = UnitOfTemperature.CELSIUS
97 
98  def __init__(
99  self,
100  config_entry: ConfigEntry,
101  data_update_coordinator: DeviceDataUpdateCoordinator,
102  door: AbstractDoor,
103  ) -> None:
104  """Initialize the object."""
105  unique_id = sensor_unique_id(config_entry, door, "temperature")
106  super().__init__(config_entry, data_update_coordinator, door, unique_id)
107 
108  @property
109  def name(self):
110  """Return the name of the door."""
111  return f"{self.door.name} temperature"
112 
113  @property
114  def native_value(self):
115  """Return the state of the entity."""
116  return self.doordoor.temperature
None __init__(self, ConfigEntry config_entry, DeviceDataUpdateCoordinator data_update_coordinator, AbstractDoor door)
Definition: sensor.py:75
None __init__(self, ConfigEntry config_entry, DeviceDataUpdateCoordinator data_update_coordinator, AbstractDoor door)
Definition: sensor.py:103
str sensor_unique_id(ConfigEntry config_entry, AbstractDoor door, str sensor_type)
Definition: common.py:84
DeviceDataUpdateCoordinator get_data_update_coordinator(HomeAssistant hass, ConfigEntry config_entry)
Definition: common.py:46
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:30