Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Support for OpenTherm Gateway binary sensors."""
2 
3 from dataclasses import dataclass
4 
5 from pyotgw import vars as gw_vars
6 
8  BinarySensorDeviceClass,
9  BinarySensorEntity,
10  BinarySensorEntityDescription,
11 )
12 from homeassistant.config_entries import ConfigEntry
13 from homeassistant.const import CONF_ID, EntityCategory
14 from homeassistant.core import HomeAssistant, callback
15 from homeassistant.helpers.entity_platform import AddEntitiesCallback
16 
17 from .const import (
18  BOILER_DEVICE_DESCRIPTION,
19  DATA_GATEWAYS,
20  DATA_OPENTHERM_GW,
21  GATEWAY_DEVICE_DESCRIPTION,
22  THERMOSTAT_DEVICE_DESCRIPTION,
23  OpenThermDataSource,
24 )
25 from .entity import OpenThermEntityDescription, OpenThermStatusEntity
26 
27 
28 @dataclass(frozen=True, kw_only=True)
30  OpenThermEntityDescription, BinarySensorEntityDescription
31 ):
32  """Describes opentherm_gw binary sensor entity."""
33 
34 
35 BINARY_SENSOR_DESCRIPTIONS: tuple[OpenThermBinarySensorEntityDescription, ...] = (
37  key=gw_vars.DATA_SLAVE_FAULT_IND,
38  translation_key="fault_indication",
39  device_class=BinarySensorDeviceClass.PROBLEM,
40  device_description=BOILER_DEVICE_DESCRIPTION,
41  ),
43  key=gw_vars.DATA_SLAVE_CH_ACTIVE,
44  translation_key="central_heating_n",
45  translation_placeholders={"circuit_number": "1"},
46  device_class=BinarySensorDeviceClass.RUNNING,
47  device_description=BOILER_DEVICE_DESCRIPTION,
48  ),
50  key=gw_vars.DATA_SLAVE_CH2_ACTIVE,
51  translation_key="central_heating_n",
52  translation_placeholders={"circuit_number": "2"},
53  device_class=BinarySensorDeviceClass.RUNNING,
54  device_description=BOILER_DEVICE_DESCRIPTION,
55  ),
57  key=gw_vars.DATA_SLAVE_DHW_ACTIVE,
58  translation_key="hot_water",
59  device_class=BinarySensorDeviceClass.RUNNING,
60  device_description=BOILER_DEVICE_DESCRIPTION,
61  ),
63  key=gw_vars.DATA_SLAVE_FLAME_ON,
64  translation_key="flame",
65  device_class=BinarySensorDeviceClass.HEAT,
66  device_description=BOILER_DEVICE_DESCRIPTION,
67  ),
69  key=gw_vars.DATA_SLAVE_COOLING_ACTIVE,
70  translation_key="cooling",
71  device_class=BinarySensorDeviceClass.RUNNING,
72  device_description=BOILER_DEVICE_DESCRIPTION,
73  ),
75  key=gw_vars.DATA_SLAVE_DIAG_IND,
76  translation_key="diagnostic_indication",
77  device_class=BinarySensorDeviceClass.PROBLEM,
78  device_description=BOILER_DEVICE_DESCRIPTION,
79  ),
81  key=gw_vars.DATA_SLAVE_DHW_PRESENT,
82  translation_key="supports_hot_water",
83  device_description=BOILER_DEVICE_DESCRIPTION,
84  ),
86  key=gw_vars.DATA_SLAVE_CONTROL_TYPE,
87  translation_key="control_type",
88  device_description=BOILER_DEVICE_DESCRIPTION,
89  ),
91  key=gw_vars.DATA_SLAVE_COOLING_SUPPORTED,
92  translation_key="supports_cooling",
93  device_description=BOILER_DEVICE_DESCRIPTION,
94  ),
96  key=gw_vars.DATA_SLAVE_DHW_CONFIG,
97  translation_key="hot_water_config",
98  device_description=BOILER_DEVICE_DESCRIPTION,
99  ),
101  key=gw_vars.DATA_SLAVE_MASTER_LOW_OFF_PUMP,
102  translation_key="supports_pump_control",
103  device_description=BOILER_DEVICE_DESCRIPTION,
104  ),
106  key=gw_vars.DATA_SLAVE_CH2_PRESENT,
107  translation_key="supports_ch_2",
108  device_description=BOILER_DEVICE_DESCRIPTION,
109  ),
111  key=gw_vars.DATA_SLAVE_SERVICE_REQ,
112  translation_key="service_required",
113  device_class=BinarySensorDeviceClass.PROBLEM,
114  device_description=BOILER_DEVICE_DESCRIPTION,
115  ),
117  key=gw_vars.DATA_SLAVE_REMOTE_RESET,
118  translation_key="supports_remote_reset",
119  device_description=BOILER_DEVICE_DESCRIPTION,
120  ),
122  key=gw_vars.DATA_SLAVE_LOW_WATER_PRESS,
123  translation_key="low_water_pressure",
124  device_class=BinarySensorDeviceClass.PROBLEM,
125  device_description=BOILER_DEVICE_DESCRIPTION,
126  ),
128  key=gw_vars.DATA_SLAVE_GAS_FAULT,
129  translation_key="gas_fault",
130  device_class=BinarySensorDeviceClass.PROBLEM,
131  device_description=BOILER_DEVICE_DESCRIPTION,
132  ),
134  key=gw_vars.DATA_SLAVE_AIR_PRESS_FAULT,
135  translation_key="air_pressure_fault",
136  device_class=BinarySensorDeviceClass.PROBLEM,
137  device_description=BOILER_DEVICE_DESCRIPTION,
138  ),
140  key=gw_vars.DATA_SLAVE_WATER_OVERTEMP,
141  translation_key="water_overtemperature",
142  device_class=BinarySensorDeviceClass.PROBLEM,
143  device_description=BOILER_DEVICE_DESCRIPTION,
144  ),
146  key=gw_vars.DATA_REMOTE_TRANSFER_MAX_CH,
147  translation_key="supports_central_heating_setpoint_transfer",
148  device_description=BOILER_DEVICE_DESCRIPTION,
149  ),
151  key=gw_vars.DATA_REMOTE_RW_MAX_CH,
152  translation_key="supports_central_heating_setpoint_writing",
153  device_description=BOILER_DEVICE_DESCRIPTION,
154  ),
156  key=gw_vars.DATA_REMOTE_TRANSFER_DHW,
157  translation_key="supports_hot_water_setpoint_transfer",
158  device_description=BOILER_DEVICE_DESCRIPTION,
159  ),
161  key=gw_vars.DATA_REMOTE_RW_DHW,
162  translation_key="supports_hot_water_setpoint_writing",
163  device_description=BOILER_DEVICE_DESCRIPTION,
164  ),
166  key=gw_vars.OTGW_GPIO_A_STATE,
167  translation_key="gpio_state_n",
168  translation_placeholders={"gpio_id": "A"},
169  device_description=GATEWAY_DEVICE_DESCRIPTION,
170  ),
172  key=gw_vars.OTGW_GPIO_B_STATE,
173  translation_key="gpio_state_n",
174  translation_placeholders={"gpio_id": "B"},
175  device_description=GATEWAY_DEVICE_DESCRIPTION,
176  ),
178  key=gw_vars.OTGW_IGNORE_TRANSITIONS,
179  translation_key="ignore_transitions",
180  device_description=GATEWAY_DEVICE_DESCRIPTION,
181  ),
183  key=gw_vars.OTGW_OVRD_HB,
184  translation_key="override_high_byte",
185  device_description=GATEWAY_DEVICE_DESCRIPTION,
186  ),
188  key=gw_vars.DATA_MASTER_CH_ENABLED,
189  translation_key="central_heating_n",
190  translation_placeholders={"circuit_number": "1"},
191  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
192  ),
194  key=gw_vars.DATA_MASTER_CH2_ENABLED,
195  translation_key="central_heating_n",
196  translation_placeholders={"circuit_number": "2"},
197  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
198  ),
200  key=gw_vars.DATA_MASTER_DHW_ENABLED,
201  translation_key="hot_water",
202  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
203  ),
205  key=gw_vars.DATA_MASTER_COOLING_ENABLED,
206  translation_key="cooling",
207  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
208  ),
210  key=gw_vars.DATA_MASTER_OTC_ENABLED,
211  translation_key="outside_temp_correction",
212  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
213  ),
215  key=gw_vars.DATA_ROVRD_MAN_PRIO,
216  translation_key="override_manual_change_prio",
217  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
218  ),
220  key=gw_vars.DATA_ROVRD_AUTO_PRIO,
221  translation_key="override_program_change_prio",
222  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
223  ),
225  key=gw_vars.DATA_SLAVE_FAULT_IND,
226  translation_key="fault_indication",
227  device_class=BinarySensorDeviceClass.PROBLEM,
228  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
229  ),
231  key=gw_vars.DATA_SLAVE_CH_ACTIVE,
232  translation_key="central_heating_n",
233  translation_placeholders={"circuit_number": "1"},
234  device_class=BinarySensorDeviceClass.RUNNING,
235  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
236  ),
238  key=gw_vars.DATA_SLAVE_CH2_ACTIVE,
239  translation_key="central_heating_n",
240  translation_placeholders={"circuit_number": "2"},
241  device_class=BinarySensorDeviceClass.RUNNING,
242  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
243  ),
245  key=gw_vars.DATA_SLAVE_DHW_ACTIVE,
246  translation_key="hot_water",
247  device_class=BinarySensorDeviceClass.RUNNING,
248  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
249  ),
251  key=gw_vars.DATA_SLAVE_FLAME_ON,
252  translation_key="flame",
253  device_class=BinarySensorDeviceClass.HEAT,
254  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
255  ),
257  key=gw_vars.DATA_SLAVE_COOLING_ACTIVE,
258  translation_key="cooling",
259  device_class=BinarySensorDeviceClass.RUNNING,
260  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
261  ),
263  key=gw_vars.DATA_SLAVE_DIAG_IND,
264  translation_key="diagnostic_indication",
265  device_class=BinarySensorDeviceClass.PROBLEM,
266  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
267  ),
269  key=gw_vars.DATA_SLAVE_DHW_PRESENT,
270  translation_key="supports_hot_water",
271  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
272  ),
274  key=gw_vars.DATA_SLAVE_CONTROL_TYPE,
275  translation_key="control_type",
276  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
277  ),
279  key=gw_vars.DATA_SLAVE_COOLING_SUPPORTED,
280  translation_key="supports_cooling",
281  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
282  ),
284  key=gw_vars.DATA_SLAVE_DHW_CONFIG,
285  translation_key="hot_water_config",
286  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
287  ),
289  key=gw_vars.DATA_SLAVE_MASTER_LOW_OFF_PUMP,
290  translation_key="supports_pump_control",
291  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
292  ),
294  key=gw_vars.DATA_SLAVE_CH2_PRESENT,
295  translation_key="supports_ch_2",
296  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
297  ),
299  key=gw_vars.DATA_SLAVE_SERVICE_REQ,
300  translation_key="service_required",
301  device_class=BinarySensorDeviceClass.PROBLEM,
302  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
303  ),
305  key=gw_vars.DATA_SLAVE_REMOTE_RESET,
306  translation_key="supports_remote_reset",
307  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
308  ),
310  key=gw_vars.DATA_SLAVE_LOW_WATER_PRESS,
311  translation_key="low_water_pressure",
312  device_class=BinarySensorDeviceClass.PROBLEM,
313  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
314  ),
316  key=gw_vars.DATA_SLAVE_GAS_FAULT,
317  translation_key="gas_fault",
318  device_class=BinarySensorDeviceClass.PROBLEM,
319  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
320  ),
322  key=gw_vars.DATA_SLAVE_AIR_PRESS_FAULT,
323  translation_key="air_pressure_fault",
324  device_class=BinarySensorDeviceClass.PROBLEM,
325  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
326  ),
328  key=gw_vars.DATA_SLAVE_WATER_OVERTEMP,
329  translation_key="water_overtemperature",
330  device_class=BinarySensorDeviceClass.PROBLEM,
331  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
332  ),
334  key=gw_vars.DATA_REMOTE_TRANSFER_MAX_CH,
335  translation_key="supports_central_heating_setpoint_transfer",
336  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
337  ),
339  key=gw_vars.DATA_REMOTE_RW_MAX_CH,
340  translation_key="supports_central_heating_setpoint_writing",
341  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
342  ),
344  key=gw_vars.DATA_REMOTE_TRANSFER_DHW,
345  translation_key="supports_hot_water_setpoint_transfer",
346  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
347  ),
349  key=gw_vars.DATA_REMOTE_RW_DHW,
350  translation_key="supports_hot_water_setpoint_writing",
351  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
352  ),
354  key=gw_vars.DATA_MASTER_CH_ENABLED,
355  translation_key="central_heating_n",
356  translation_placeholders={"circuit_number": "1"},
357  device_description=BOILER_DEVICE_DESCRIPTION,
358  ),
360  key=gw_vars.DATA_MASTER_CH2_ENABLED,
361  translation_key="central_heating_n",
362  translation_placeholders={"circuit_number": "2"},
363  device_description=BOILER_DEVICE_DESCRIPTION,
364  ),
366  key=gw_vars.DATA_MASTER_DHW_ENABLED,
367  translation_key="hot_water",
368  device_description=BOILER_DEVICE_DESCRIPTION,
369  ),
371  key=gw_vars.DATA_MASTER_COOLING_ENABLED,
372  translation_key="cooling",
373  device_description=BOILER_DEVICE_DESCRIPTION,
374  ),
376  key=gw_vars.DATA_MASTER_OTC_ENABLED,
377  translation_key="outside_temp_correction",
378  device_description=BOILER_DEVICE_DESCRIPTION,
379  ),
381  key=gw_vars.DATA_ROVRD_MAN_PRIO,
382  translation_key="override_manual_change_prio",
383  device_description=BOILER_DEVICE_DESCRIPTION,
384  ),
386  key=gw_vars.DATA_ROVRD_AUTO_PRIO,
387  translation_key="override_program_change_prio",
388  device_description=BOILER_DEVICE_DESCRIPTION,
389  ),
390 )
391 
392 
394  hass: HomeAssistant,
395  config_entry: ConfigEntry,
396  async_add_entities: AddEntitiesCallback,
397 ) -> None:
398  """Set up the OpenTherm Gateway binary sensors."""
399  gw_hub = hass.data[DATA_OPENTHERM_GW][DATA_GATEWAYS][config_entry.data[CONF_ID]]
400 
402  OpenThermBinarySensor(gw_hub, description)
403  for description in BINARY_SENSOR_DESCRIPTIONS
404  )
405 
406 
408  """Represent an OpenTherm Gateway binary sensor."""
409 
410  _attr_entity_category = EntityCategory.DIAGNOSTIC
411  entity_description: OpenThermBinarySensorEntityDescription
412 
413  @callback
414  def receive_report(self, status: dict[OpenThermDataSource, dict]) -> None:
415  """Handle status updates from the component."""
416  state = status[self.entity_descriptionentity_description.device_description.data_source].get(
417  self.entity_descriptionentity_description.key
418  )
419  self._attr_is_on_attr_is_on = None if state is None else bool(state)
420  self.async_write_ha_stateasync_write_ha_state()
None receive_report(self, dict[OpenThermDataSource, dict] status)
web.Response get(self, web.Request request, str config_key)
Definition: view.py:88
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)