Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Support for OpenTherm Gateway sensors."""
2 
3 from dataclasses import dataclass
4 
5 import pyotgw.vars as gw_vars
6 
8  SensorDeviceClass,
9  SensorEntity,
10  SensorEntityDescription,
11  SensorStateClass,
12 )
13 from homeassistant.config_entries import ConfigEntry
14 from homeassistant.const import (
15  CONF_ID,
16  PERCENTAGE,
17  EntityCategory,
18  UnitOfPower,
19  UnitOfPressure,
20  UnitOfTemperature,
21  UnitOfTime,
22  UnitOfVolumeFlowRate,
23 )
24 from homeassistant.core import HomeAssistant, callback
25 from homeassistant.helpers.entity_platform import AddEntitiesCallback
26 
27 from .const import (
28  BOILER_DEVICE_DESCRIPTION,
29  DATA_GATEWAYS,
30  DATA_OPENTHERM_GW,
31  GATEWAY_DEVICE_DESCRIPTION,
32  THERMOSTAT_DEVICE_DESCRIPTION,
33  OpenThermDataSource,
34 )
35 from .entity import OpenThermEntityDescription, OpenThermStatusEntity
36 
37 SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION = 1
38 
39 
40 @dataclass(frozen=True, kw_only=True)
42  SensorEntityDescription, OpenThermEntityDescription
43 ):
44  """Describes an opentherm_gw sensor entity."""
45 
46 
47 SENSOR_DESCRIPTIONS: tuple[OpenThermSensorEntityDescription, ...] = (
49  key=gw_vars.DATA_CONTROL_SETPOINT,
50  translation_key="control_setpoint_n",
51  translation_placeholders={"circuit_number": "1"},
52  device_class=SensorDeviceClass.TEMPERATURE,
53  state_class=SensorStateClass.MEASUREMENT,
54  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
55  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
56  device_description=BOILER_DEVICE_DESCRIPTION,
57  ),
59  key=gw_vars.DATA_CONTROL_SETPOINT_2,
60  translation_key="control_setpoint_n",
61  translation_placeholders={"circuit_number": "2"},
62  device_class=SensorDeviceClass.TEMPERATURE,
63  state_class=SensorStateClass.MEASUREMENT,
64  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
65  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
66  device_description=BOILER_DEVICE_DESCRIPTION,
67  ),
69  key=gw_vars.DATA_SLAVE_MEMBERID,
70  translation_key="manufacturer_id",
71  device_description=BOILER_DEVICE_DESCRIPTION,
72  ),
74  key=gw_vars.DATA_SLAVE_OEM_FAULT,
75  translation_key="oem_fault_code",
76  device_description=BOILER_DEVICE_DESCRIPTION,
77  ),
79  key=gw_vars.DATA_COOLING_CONTROL,
80  translation_key="cooling_control",
81  state_class=SensorStateClass.MEASUREMENT,
82  native_unit_of_measurement=PERCENTAGE,
83  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
84  device_description=BOILER_DEVICE_DESCRIPTION,
85  ),
87  key=gw_vars.DATA_SLAVE_MAX_RELATIVE_MOD,
88  translation_key="max_relative_mod_level",
89  state_class=SensorStateClass.MEASUREMENT,
90  native_unit_of_measurement=PERCENTAGE,
91  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
92  device_description=BOILER_DEVICE_DESCRIPTION,
93  ),
95  key=gw_vars.DATA_SLAVE_MAX_CAPACITY,
96  translation_key="max_capacity",
97  state_class=SensorStateClass.MEASUREMENT,
98  device_class=SensorDeviceClass.POWER,
99  native_unit_of_measurement=UnitOfPower.KILO_WATT,
100  device_description=BOILER_DEVICE_DESCRIPTION,
101  ),
103  key=gw_vars.DATA_SLAVE_MIN_MOD_LEVEL,
104  translation_key="min_mod_level",
105  state_class=SensorStateClass.MEASUREMENT,
106  native_unit_of_measurement=PERCENTAGE,
107  device_description=BOILER_DEVICE_DESCRIPTION,
108  ),
110  key=gw_vars.DATA_REL_MOD_LEVEL,
111  translation_key="relative_mod_level",
112  state_class=SensorStateClass.MEASUREMENT,
113  native_unit_of_measurement=PERCENTAGE,
114  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
115  device_description=BOILER_DEVICE_DESCRIPTION,
116  ),
118  key=gw_vars.DATA_CH_WATER_PRESS,
119  translation_key="central_heating_pressure",
120  device_class=SensorDeviceClass.PRESSURE,
121  state_class=SensorStateClass.MEASUREMENT,
122  native_unit_of_measurement=UnitOfPressure.BAR,
123  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
124  device_description=BOILER_DEVICE_DESCRIPTION,
125  ),
127  key=gw_vars.DATA_DHW_FLOW_RATE,
128  translation_key="hot_water_flow_rate",
129  device_class=SensorDeviceClass.VOLUME_FLOW_RATE,
130  state_class=SensorStateClass.MEASUREMENT,
131  native_unit_of_measurement=UnitOfVolumeFlowRate.LITERS_PER_MINUTE,
132  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
133  device_description=BOILER_DEVICE_DESCRIPTION,
134  ),
136  key=gw_vars.DATA_CH_WATER_TEMP,
137  translation_key="central_heating_temperature_n",
138  translation_placeholders={"circuit_number": "1"},
139  device_class=SensorDeviceClass.TEMPERATURE,
140  state_class=SensorStateClass.MEASUREMENT,
141  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
142  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
143  device_description=BOILER_DEVICE_DESCRIPTION,
144  ),
146  key=gw_vars.DATA_CH_WATER_TEMP_2,
147  translation_key="central_heating_temperature_n",
148  translation_placeholders={"circuit_number": "2"},
149  device_class=SensorDeviceClass.TEMPERATURE,
150  state_class=SensorStateClass.MEASUREMENT,
151  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
152  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
153  device_description=BOILER_DEVICE_DESCRIPTION,
154  ),
156  key=gw_vars.DATA_DHW_TEMP,
157  translation_key="hot_water_temperature_n",
158  translation_placeholders={"circuit_number": "1"},
159  device_class=SensorDeviceClass.TEMPERATURE,
160  state_class=SensorStateClass.MEASUREMENT,
161  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
162  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
163  device_description=BOILER_DEVICE_DESCRIPTION,
164  ),
166  key=gw_vars.DATA_DHW_TEMP_2,
167  translation_key="hot_water_temperature_n",
168  translation_placeholders={"circuit_number": "2"},
169  device_class=SensorDeviceClass.TEMPERATURE,
170  state_class=SensorStateClass.MEASUREMENT,
171  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
172  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
173  device_description=BOILER_DEVICE_DESCRIPTION,
174  ),
176  key=gw_vars.DATA_RETURN_WATER_TEMP,
177  translation_key="return_water_temperature",
178  device_class=SensorDeviceClass.TEMPERATURE,
179  state_class=SensorStateClass.MEASUREMENT,
180  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
181  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
182  device_description=BOILER_DEVICE_DESCRIPTION,
183  ),
185  key=gw_vars.DATA_SOLAR_STORAGE_TEMP,
186  translation_key="solar_storage_temperature",
187  device_class=SensorDeviceClass.TEMPERATURE,
188  state_class=SensorStateClass.MEASUREMENT,
189  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
190  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
191  device_description=BOILER_DEVICE_DESCRIPTION,
192  ),
194  key=gw_vars.DATA_SOLAR_COLL_TEMP,
195  translation_key="solar_collector_temperature",
196  device_class=SensorDeviceClass.TEMPERATURE,
197  state_class=SensorStateClass.MEASUREMENT,
198  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
199  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
200  device_description=BOILER_DEVICE_DESCRIPTION,
201  ),
203  key=gw_vars.DATA_EXHAUST_TEMP,
204  translation_key="exhaust_temperature",
205  device_class=SensorDeviceClass.TEMPERATURE,
206  state_class=SensorStateClass.MEASUREMENT,
207  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
208  device_description=BOILER_DEVICE_DESCRIPTION,
209  ),
211  key=gw_vars.DATA_SLAVE_DHW_MAX_SETP,
212  translation_key="max_hot_water_setpoint_upper",
213  device_class=SensorDeviceClass.TEMPERATURE,
214  state_class=SensorStateClass.MEASUREMENT,
215  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
216  device_description=BOILER_DEVICE_DESCRIPTION,
217  ),
219  key=gw_vars.DATA_SLAVE_DHW_MIN_SETP,
220  translation_key="max_hot_water_setpoint_lower",
221  device_class=SensorDeviceClass.TEMPERATURE,
222  state_class=SensorStateClass.MEASUREMENT,
223  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
224  device_description=BOILER_DEVICE_DESCRIPTION,
225  ),
227  key=gw_vars.DATA_SLAVE_CH_MAX_SETP,
228  translation_key="max_central_heating_setpoint_upper",
229  device_class=SensorDeviceClass.TEMPERATURE,
230  state_class=SensorStateClass.MEASUREMENT,
231  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
232  device_description=BOILER_DEVICE_DESCRIPTION,
233  ),
235  key=gw_vars.DATA_SLAVE_CH_MIN_SETP,
236  translation_key="max_central_heating_setpoint_lower",
237  device_class=SensorDeviceClass.TEMPERATURE,
238  state_class=SensorStateClass.MEASUREMENT,
239  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
240  device_description=BOILER_DEVICE_DESCRIPTION,
241  ),
243  key=gw_vars.DATA_DHW_SETPOINT,
244  translation_key="hot_water_setpoint",
245  device_class=SensorDeviceClass.TEMPERATURE,
246  state_class=SensorStateClass.MEASUREMENT,
247  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
248  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
249  device_description=BOILER_DEVICE_DESCRIPTION,
250  ),
252  key=gw_vars.DATA_MAX_CH_SETPOINT,
253  translation_key="max_central_heating_setpoint",
254  device_class=SensorDeviceClass.TEMPERATURE,
255  state_class=SensorStateClass.MEASUREMENT,
256  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
257  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
258  device_description=BOILER_DEVICE_DESCRIPTION,
259  ),
261  key=gw_vars.DATA_OEM_DIAG,
262  translation_key="oem_diagnostic_code",
263  device_description=BOILER_DEVICE_DESCRIPTION,
264  ),
266  key=gw_vars.DATA_TOTAL_BURNER_STARTS,
267  translation_key="total_burner_starts",
268  state_class=SensorStateClass.TOTAL,
269  native_unit_of_measurement="starts",
270  device_description=BOILER_DEVICE_DESCRIPTION,
271  ),
273  key=gw_vars.DATA_CH_PUMP_STARTS,
274  translation_key="central_heating_pump_starts",
275  state_class=SensorStateClass.TOTAL,
276  native_unit_of_measurement="starts",
277  device_description=BOILER_DEVICE_DESCRIPTION,
278  ),
280  key=gw_vars.DATA_DHW_PUMP_STARTS,
281  translation_key="hot_water_pump_starts",
282  state_class=SensorStateClass.TOTAL,
283  native_unit_of_measurement="starts",
284  device_description=BOILER_DEVICE_DESCRIPTION,
285  ),
287  key=gw_vars.DATA_DHW_BURNER_STARTS,
288  translation_key="hot_water_burner_starts",
289  state_class=SensorStateClass.TOTAL,
290  native_unit_of_measurement="starts",
291  device_description=BOILER_DEVICE_DESCRIPTION,
292  ),
294  key=gw_vars.DATA_TOTAL_BURNER_HOURS,
295  translation_key="total_burner_hours",
296  device_class=SensorDeviceClass.DURATION,
297  state_class=SensorStateClass.TOTAL,
298  native_unit_of_measurement=UnitOfTime.HOURS,
299  device_description=BOILER_DEVICE_DESCRIPTION,
300  ),
302  key=gw_vars.DATA_CH_PUMP_HOURS,
303  translation_key="central_heating_pump_hours",
304  device_class=SensorDeviceClass.DURATION,
305  state_class=SensorStateClass.TOTAL,
306  native_unit_of_measurement=UnitOfTime.HOURS,
307  device_description=BOILER_DEVICE_DESCRIPTION,
308  ),
310  key=gw_vars.DATA_DHW_PUMP_HOURS,
311  translation_key="hot_water_pump_hours",
312  device_class=SensorDeviceClass.DURATION,
313  state_class=SensorStateClass.TOTAL,
314  native_unit_of_measurement=UnitOfTime.HOURS,
315  device_description=BOILER_DEVICE_DESCRIPTION,
316  ),
318  key=gw_vars.DATA_DHW_BURNER_HOURS,
319  translation_key="hot_water_burner_hours",
320  device_class=SensorDeviceClass.DURATION,
321  state_class=SensorStateClass.TOTAL,
322  native_unit_of_measurement=UnitOfTime.HOURS,
323  device_description=BOILER_DEVICE_DESCRIPTION,
324  ),
326  key=gw_vars.DATA_SLAVE_OT_VERSION,
327  translation_key="opentherm_version",
328  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
329  device_description=BOILER_DEVICE_DESCRIPTION,
330  ),
332  key=gw_vars.DATA_SLAVE_PRODUCT_TYPE,
333  translation_key="product_type",
334  device_description=BOILER_DEVICE_DESCRIPTION,
335  ),
337  key=gw_vars.DATA_SLAVE_PRODUCT_VERSION,
338  translation_key="product_version",
339  device_description=BOILER_DEVICE_DESCRIPTION,
340  ),
342  key=gw_vars.OTGW_MODE,
343  translation_key="operating_mode",
344  device_description=GATEWAY_DEVICE_DESCRIPTION,
345  ),
347  key=gw_vars.OTGW_DHW_OVRD,
348  translation_key="hot_water_override_mode",
349  device_description=GATEWAY_DEVICE_DESCRIPTION,
350  ),
352  key=gw_vars.OTGW_ABOUT,
353  translation_key="firmware_version",
354  device_description=GATEWAY_DEVICE_DESCRIPTION,
355  ),
357  key=gw_vars.OTGW_BUILD,
358  translation_key="firmware_build",
359  device_description=GATEWAY_DEVICE_DESCRIPTION,
360  ),
362  key=gw_vars.OTGW_CLOCKMHZ,
363  translation_key="clock_speed",
364  device_description=GATEWAY_DEVICE_DESCRIPTION,
365  ),
367  key=gw_vars.OTGW_LED_A,
368  translation_key="led_mode_n",
369  translation_placeholders={"led_id": "A"},
370  device_description=GATEWAY_DEVICE_DESCRIPTION,
371  ),
373  key=gw_vars.OTGW_LED_B,
374  translation_key="led_mode_n",
375  translation_placeholders={"led_id": "B"},
376  device_description=GATEWAY_DEVICE_DESCRIPTION,
377  ),
379  key=gw_vars.OTGW_LED_C,
380  translation_key="led_mode_n",
381  translation_placeholders={"led_id": "C"},
382  device_description=GATEWAY_DEVICE_DESCRIPTION,
383  ),
385  key=gw_vars.OTGW_LED_D,
386  translation_key="led_mode_n",
387  translation_placeholders={"led_id": "D"},
388  device_description=GATEWAY_DEVICE_DESCRIPTION,
389  ),
391  key=gw_vars.OTGW_LED_E,
392  translation_key="led_mode_n",
393  translation_placeholders={"led_id": "E"},
394  device_description=GATEWAY_DEVICE_DESCRIPTION,
395  ),
397  key=gw_vars.OTGW_LED_F,
398  translation_key="led_mode_n",
399  translation_placeholders={"led_id": "F"},
400  device_description=GATEWAY_DEVICE_DESCRIPTION,
401  ),
403  key=gw_vars.OTGW_GPIO_A,
404  translation_key="gpio_mode_n",
405  translation_placeholders={"gpio_id": "A"},
406  device_description=GATEWAY_DEVICE_DESCRIPTION,
407  ),
409  key=gw_vars.OTGW_GPIO_B,
410  translation_key="gpio_mode_n",
411  translation_placeholders={"gpio_id": "B"},
412  device_description=GATEWAY_DEVICE_DESCRIPTION,
413  ),
415  key=gw_vars.OTGW_SB_TEMP,
416  translation_key="setback_temperature",
417  device_class=SensorDeviceClass.TEMPERATURE,
418  state_class=SensorStateClass.MEASUREMENT,
419  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
420  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
421  device_description=GATEWAY_DEVICE_DESCRIPTION,
422  ),
424  key=gw_vars.OTGW_SETP_OVRD_MODE,
425  translation_key="room_setpoint_override_mode",
426  device_description=GATEWAY_DEVICE_DESCRIPTION,
427  ),
429  key=gw_vars.OTGW_SMART_PWR,
430  translation_key="smart_power_mode",
431  device_description=GATEWAY_DEVICE_DESCRIPTION,
432  ),
434  key=gw_vars.OTGW_THRM_DETECT,
435  translation_key="thermostat_detection_mode",
436  device_description=GATEWAY_DEVICE_DESCRIPTION,
437  ),
439  key=gw_vars.OTGW_VREF,
440  translation_key="reference_voltage",
441  device_description=GATEWAY_DEVICE_DESCRIPTION,
442  ),
444  key=gw_vars.DATA_MASTER_MEMBERID,
445  translation_key="manufacturer_id",
446  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
447  ),
449  key=gw_vars.DATA_ROOM_SETPOINT_OVRD,
450  translation_key="room_setpoint_override",
451  device_class=SensorDeviceClass.TEMPERATURE,
452  state_class=SensorStateClass.MEASUREMENT,
453  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
454  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
455  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
456  ),
458  key=gw_vars.DATA_ROOM_SETPOINT,
459  translation_key="room_setpoint_n",
460  translation_placeholders={"setpoint_id": "1"},
461  device_class=SensorDeviceClass.TEMPERATURE,
462  state_class=SensorStateClass.MEASUREMENT,
463  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
464  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
465  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
466  ),
468  key=gw_vars.DATA_ROOM_SETPOINT_2,
469  translation_key="room_setpoint_n",
470  translation_placeholders={"setpoint_id": "2"},
471  device_class=SensorDeviceClass.TEMPERATURE,
472  state_class=SensorStateClass.MEASUREMENT,
473  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
474  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
475  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
476  ),
478  key=gw_vars.DATA_ROOM_TEMP,
479  translation_key="room_temperature",
480  device_class=SensorDeviceClass.TEMPERATURE,
481  state_class=SensorStateClass.MEASUREMENT,
482  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
483  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
484  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
485  ),
487  key=gw_vars.DATA_OUTSIDE_TEMP,
488  translation_key="outside_temperature",
489  device_class=SensorDeviceClass.TEMPERATURE,
490  state_class=SensorStateClass.MEASUREMENT,
491  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
492  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
493  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
494  ),
496  key=gw_vars.DATA_MASTER_OT_VERSION,
497  translation_key="opentherm_version",
498  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
499  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
500  ),
502  key=gw_vars.DATA_MASTER_PRODUCT_TYPE,
503  translation_key="product_type",
504  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
505  ),
507  key=gw_vars.DATA_MASTER_PRODUCT_VERSION,
508  translation_key="product_version",
509  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
510  ),
512  key=gw_vars.DATA_CONTROL_SETPOINT,
513  translation_key="control_setpoint_n",
514  translation_placeholders={"circuit_number": "1"},
515  device_class=SensorDeviceClass.TEMPERATURE,
516  state_class=SensorStateClass.MEASUREMENT,
517  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
518  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
519  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
520  ),
522  key=gw_vars.DATA_CONTROL_SETPOINT_2,
523  translation_key="control_setpoint_n",
524  translation_placeholders={"circuit_number": "2"},
525  device_class=SensorDeviceClass.TEMPERATURE,
526  state_class=SensorStateClass.MEASUREMENT,
527  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
528  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
529  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
530  ),
532  key=gw_vars.DATA_SLAVE_MEMBERID,
533  translation_key="manufacturer_id",
534  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
535  ),
537  key=gw_vars.DATA_SLAVE_OEM_FAULT,
538  translation_key="oem_fault_code",
539  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
540  ),
542  key=gw_vars.DATA_COOLING_CONTROL,
543  translation_key="cooling_control",
544  state_class=SensorStateClass.MEASUREMENT,
545  native_unit_of_measurement=PERCENTAGE,
546  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
547  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
548  ),
550  key=gw_vars.DATA_SLAVE_MAX_RELATIVE_MOD,
551  translation_key="max_relative_mod_level",
552  state_class=SensorStateClass.MEASUREMENT,
553  native_unit_of_measurement=PERCENTAGE,
554  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
555  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
556  ),
558  key=gw_vars.DATA_SLAVE_MAX_CAPACITY,
559  translation_key="max_capacity",
560  state_class=SensorStateClass.MEASUREMENT,
561  device_class=SensorDeviceClass.POWER,
562  native_unit_of_measurement=UnitOfPower.KILO_WATT,
563  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
564  ),
566  key=gw_vars.DATA_SLAVE_MIN_MOD_LEVEL,
567  translation_key="min_mod_level",
568  state_class=SensorStateClass.MEASUREMENT,
569  native_unit_of_measurement=PERCENTAGE,
570  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
571  ),
573  key=gw_vars.DATA_REL_MOD_LEVEL,
574  translation_key="relative_mod_level",
575  state_class=SensorStateClass.MEASUREMENT,
576  native_unit_of_measurement=PERCENTAGE,
577  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
578  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
579  ),
581  key=gw_vars.DATA_CH_WATER_PRESS,
582  translation_key="central_heating_pressure",
583  device_class=SensorDeviceClass.PRESSURE,
584  state_class=SensorStateClass.MEASUREMENT,
585  native_unit_of_measurement=UnitOfPressure.BAR,
586  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
587  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
588  ),
590  key=gw_vars.DATA_DHW_FLOW_RATE,
591  translation_key="hot_water_flow_rate",
592  device_class=SensorDeviceClass.VOLUME_FLOW_RATE,
593  state_class=SensorStateClass.MEASUREMENT,
594  native_unit_of_measurement=UnitOfVolumeFlowRate.LITERS_PER_MINUTE,
595  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
596  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
597  ),
599  key=gw_vars.DATA_CH_WATER_TEMP,
600  translation_key="central_heating_temperature_n",
601  translation_placeholders={"circuit_number": "1"},
602  device_class=SensorDeviceClass.TEMPERATURE,
603  state_class=SensorStateClass.MEASUREMENT,
604  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
605  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
606  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
607  ),
609  key=gw_vars.DATA_CH_WATER_TEMP_2,
610  translation_key="central_heating_temperature_n",
611  translation_placeholders={"circuit_number": "2"},
612  device_class=SensorDeviceClass.TEMPERATURE,
613  state_class=SensorStateClass.MEASUREMENT,
614  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
615  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
616  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
617  ),
619  key=gw_vars.DATA_DHW_TEMP,
620  translation_key="hot_water_temperature_n",
621  translation_placeholders={"circuit_number": "1"},
622  device_class=SensorDeviceClass.TEMPERATURE,
623  state_class=SensorStateClass.MEASUREMENT,
624  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
625  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
626  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
627  ),
629  key=gw_vars.DATA_DHW_TEMP_2,
630  translation_key="hot_water_temperature_n",
631  translation_placeholders={"circuit_number": "2"},
632  device_class=SensorDeviceClass.TEMPERATURE,
633  state_class=SensorStateClass.MEASUREMENT,
634  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
635  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
636  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
637  ),
639  key=gw_vars.DATA_RETURN_WATER_TEMP,
640  translation_key="return_water_temperature",
641  device_class=SensorDeviceClass.TEMPERATURE,
642  state_class=SensorStateClass.MEASUREMENT,
643  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
644  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
645  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
646  ),
648  key=gw_vars.DATA_SOLAR_STORAGE_TEMP,
649  translation_key="solar_storage_temperature",
650  device_class=SensorDeviceClass.TEMPERATURE,
651  state_class=SensorStateClass.MEASUREMENT,
652  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
653  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
654  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
655  ),
657  key=gw_vars.DATA_SOLAR_COLL_TEMP,
658  translation_key="solar_collector_temperature",
659  device_class=SensorDeviceClass.TEMPERATURE,
660  state_class=SensorStateClass.MEASUREMENT,
661  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
662  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
663  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
664  ),
666  key=gw_vars.DATA_EXHAUST_TEMP,
667  translation_key="exhaust_temperature",
668  device_class=SensorDeviceClass.TEMPERATURE,
669  state_class=SensorStateClass.MEASUREMENT,
670  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
671  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
672  ),
674  key=gw_vars.DATA_SLAVE_DHW_MAX_SETP,
675  translation_key="max_hot_water_setpoint_upper",
676  device_class=SensorDeviceClass.TEMPERATURE,
677  state_class=SensorStateClass.MEASUREMENT,
678  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
679  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
680  ),
682  key=gw_vars.DATA_SLAVE_DHW_MIN_SETP,
683  translation_key="max_hot_water_setpoint_lower",
684  device_class=SensorDeviceClass.TEMPERATURE,
685  state_class=SensorStateClass.MEASUREMENT,
686  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
687  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
688  ),
690  key=gw_vars.DATA_SLAVE_CH_MAX_SETP,
691  translation_key="max_central_heating_setpoint_upper",
692  device_class=SensorDeviceClass.TEMPERATURE,
693  state_class=SensorStateClass.MEASUREMENT,
694  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
695  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
696  ),
698  key=gw_vars.DATA_SLAVE_CH_MIN_SETP,
699  translation_key="max_central_heating_setpoint_lower",
700  device_class=SensorDeviceClass.TEMPERATURE,
701  state_class=SensorStateClass.MEASUREMENT,
702  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
703  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
704  ),
706  key=gw_vars.DATA_DHW_SETPOINT,
707  translation_key="hot_water_setpoint",
708  device_class=SensorDeviceClass.TEMPERATURE,
709  state_class=SensorStateClass.MEASUREMENT,
710  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
711  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
712  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
713  ),
715  key=gw_vars.DATA_MAX_CH_SETPOINT,
716  translation_key="max_central_heating_setpoint",
717  device_class=SensorDeviceClass.TEMPERATURE,
718  state_class=SensorStateClass.MEASUREMENT,
719  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
720  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
721  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
722  ),
724  key=gw_vars.DATA_OEM_DIAG,
725  translation_key="oem_diagnostic_code",
726  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
727  ),
729  key=gw_vars.DATA_TOTAL_BURNER_STARTS,
730  translation_key="total_burner_starts",
731  state_class=SensorStateClass.TOTAL,
732  native_unit_of_measurement="starts",
733  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
734  ),
736  key=gw_vars.DATA_CH_PUMP_STARTS,
737  translation_key="central_heating_pump_starts",
738  state_class=SensorStateClass.TOTAL,
739  native_unit_of_measurement="starts",
740  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
741  ),
743  key=gw_vars.DATA_DHW_PUMP_STARTS,
744  translation_key="hot_water_pump_starts",
745  state_class=SensorStateClass.TOTAL,
746  native_unit_of_measurement="starts",
747  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
748  ),
750  key=gw_vars.DATA_DHW_BURNER_STARTS,
751  translation_key="hot_water_burner_starts",
752  state_class=SensorStateClass.TOTAL,
753  native_unit_of_measurement="starts",
754  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
755  ),
757  key=gw_vars.DATA_TOTAL_BURNER_HOURS,
758  translation_key="total_burner_hours",
759  device_class=SensorDeviceClass.DURATION,
760  state_class=SensorStateClass.TOTAL,
761  native_unit_of_measurement=UnitOfTime.HOURS,
762  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
763  ),
765  key=gw_vars.DATA_CH_PUMP_HOURS,
766  translation_key="central_heating_pump_hours",
767  device_class=SensorDeviceClass.DURATION,
768  state_class=SensorStateClass.TOTAL,
769  native_unit_of_measurement=UnitOfTime.HOURS,
770  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
771  ),
773  key=gw_vars.DATA_DHW_PUMP_HOURS,
774  translation_key="hot_water_pump_hours",
775  device_class=SensorDeviceClass.DURATION,
776  state_class=SensorStateClass.TOTAL,
777  native_unit_of_measurement=UnitOfTime.HOURS,
778  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
779  ),
781  key=gw_vars.DATA_DHW_BURNER_HOURS,
782  translation_key="hot_water_burner_hours",
783  device_class=SensorDeviceClass.DURATION,
784  state_class=SensorStateClass.TOTAL,
785  native_unit_of_measurement=UnitOfTime.HOURS,
786  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
787  ),
789  key=gw_vars.DATA_SLAVE_OT_VERSION,
790  translation_key="opentherm_version",
791  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
792  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
793  ),
795  key=gw_vars.DATA_SLAVE_PRODUCT_TYPE,
796  translation_key="product_type",
797  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
798  ),
800  key=gw_vars.DATA_SLAVE_PRODUCT_VERSION,
801  translation_key="product_version",
802  device_description=THERMOSTAT_DEVICE_DESCRIPTION,
803  ),
805  key=gw_vars.DATA_MASTER_MEMBERID,
806  translation_key="manufacturer_id",
807  device_description=BOILER_DEVICE_DESCRIPTION,
808  ),
810  key=gw_vars.DATA_ROOM_SETPOINT_OVRD,
811  translation_key="room_setpoint_override",
812  device_class=SensorDeviceClass.TEMPERATURE,
813  state_class=SensorStateClass.MEASUREMENT,
814  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
815  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
816  device_description=BOILER_DEVICE_DESCRIPTION,
817  ),
819  key=gw_vars.DATA_ROOM_SETPOINT,
820  translation_key="room_setpoint_n",
821  translation_placeholders={"setpoint_id": "1"},
822  device_class=SensorDeviceClass.TEMPERATURE,
823  state_class=SensorStateClass.MEASUREMENT,
824  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
825  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
826  device_description=BOILER_DEVICE_DESCRIPTION,
827  ),
829  key=gw_vars.DATA_ROOM_SETPOINT_2,
830  translation_key="room_setpoint_n",
831  translation_placeholders={"setpoint_id": "2"},
832  device_class=SensorDeviceClass.TEMPERATURE,
833  state_class=SensorStateClass.MEASUREMENT,
834  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
835  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
836  device_description=BOILER_DEVICE_DESCRIPTION,
837  ),
839  key=gw_vars.DATA_ROOM_TEMP,
840  translation_key="room_temperature",
841  device_class=SensorDeviceClass.TEMPERATURE,
842  state_class=SensorStateClass.MEASUREMENT,
843  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
844  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
845  device_description=BOILER_DEVICE_DESCRIPTION,
846  ),
848  key=gw_vars.DATA_OUTSIDE_TEMP,
849  translation_key="outside_temperature",
850  device_class=SensorDeviceClass.TEMPERATURE,
851  state_class=SensorStateClass.MEASUREMENT,
852  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
853  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
854  device_description=BOILER_DEVICE_DESCRIPTION,
855  ),
857  key=gw_vars.DATA_MASTER_OT_VERSION,
858  translation_key="opentherm_version",
859  suggested_display_precision=SENSOR_FLOAT_SUGGESTED_DISPLAY_PRECISION,
860  device_description=BOILER_DEVICE_DESCRIPTION,
861  ),
863  key=gw_vars.DATA_MASTER_PRODUCT_TYPE,
864  translation_key="product_type",
865  device_description=BOILER_DEVICE_DESCRIPTION,
866  ),
868  key=gw_vars.DATA_MASTER_PRODUCT_VERSION,
869  translation_key="product_version",
870  device_description=BOILER_DEVICE_DESCRIPTION,
871  ),
872 )
873 
874 
876  hass: HomeAssistant,
877  config_entry: ConfigEntry,
878  async_add_entities: AddEntitiesCallback,
879 ) -> None:
880  """Set up the OpenTherm Gateway sensors."""
881  gw_hub = hass.data[DATA_OPENTHERM_GW][DATA_GATEWAYS][config_entry.data[CONF_ID]]
882 
885  gw_hub,
886  description,
887  )
888  for description in SENSOR_DESCRIPTIONS
889  )
890 
891 
893  """Representation of an OpenTherm sensor."""
894 
895  _attr_entity_category = EntityCategory.DIAGNOSTIC
896  entity_description: OpenThermSensorEntityDescription
897 
898  @callback
899  def receive_report(self, status: dict[OpenThermDataSource, dict]) -> None:
900  """Handle status updates from the component."""
901  self._attr_native_value_attr_native_value = status[
902  self.entity_descriptionentity_description.device_description.data_source
903  ].get(self.entity_descriptionentity_description.key)
904  self.async_write_ha_stateasync_write_ha_state()
None receive_report(self, dict[OpenThermDataSource, dict] status)
Definition: sensor.py:899
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)
Definition: sensor.py:879