Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Support for IHC sensors."""
2 
3 from __future__ import annotations
4 
5 from ihcsdk.ihccontroller import IHCController
6 
7 from homeassistant.components.sensor import SensorDeviceClass, SensorEntity
8 from homeassistant.const import CONF_UNIT_OF_MEASUREMENT
9 from homeassistant.core import HomeAssistant
10 from homeassistant.helpers.entity_platform import AddEntitiesCallback
11 from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
12 from homeassistant.util.unit_system import TEMPERATURE_UNITS
13 
14 from .const import DOMAIN, IHC_CONTROLLER
15 from .entity import IHCEntity
16 
17 
19  hass: HomeAssistant,
20  config: ConfigType,
21  add_entities: AddEntitiesCallback,
22  discovery_info: DiscoveryInfoType | None = None,
23 ) -> None:
24  """Set up the IHC sensor platform."""
25  if discovery_info is None:
26  return
27  devices = []
28  for name, device in discovery_info.items():
29  ihc_id = device["ihc_id"]
30  product_cfg = device["product_cfg"]
31  product = device["product"]
32  # Find controller that corresponds with device id
33  controller_id = device["ctrl_id"]
34  ihc_controller: IHCController = hass.data[DOMAIN][controller_id][IHC_CONTROLLER]
35  unit = product_cfg[CONF_UNIT_OF_MEASUREMENT]
36  sensor = IHCSensor(ihc_controller, controller_id, name, ihc_id, unit, product)
37  devices.append(sensor)
38  add_entities(devices)
39 
40 
42  """Implementation of the IHC sensor."""
43 
44  def __init__(
45  self,
46  ihc_controller: IHCController,
47  controller_id: str,
48  name: str,
49  ihc_id: int,
50  unit: str,
51  product=None,
52  ) -> None:
53  """Initialize the IHC sensor."""
54  super().__init__(ihc_controller, controller_id, name, ihc_id, product)
55  self._attr_native_unit_of_measurement_attr_native_unit_of_measurement = unit
56  if unit in TEMPERATURE_UNITS:
57  self._attr_device_class_attr_device_class = SensorDeviceClass.TEMPERATURE
58 
59  def on_ihc_change(self, ihc_id, value):
60  """Handle IHC resource change."""
61  self._attr_native_value_attr_native_value = value
62  self.schedule_update_ha_stateschedule_update_ha_state()
None __init__(self, IHCController ihc_controller, str controller_id, str name, int ihc_id, str unit, product=None)
Definition: sensor.py:52
def on_ihc_change(self, ihc_id, value)
Definition: sensor.py:59
None schedule_update_ha_state(self, bool force_refresh=False)
Definition: entity.py:1244
def add_entities(account, async_add_entities, tracked)
Definition: sensor.py:40
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)
Definition: sensor.py:23