1 """Support for OpenTherm Gateway binary sensors."""
3 from dataclasses
import dataclass
5 from pyotgw
import vars
as gw_vars
8 BinarySensorDeviceClass,
10 BinarySensorEntityDescription,
18 BOILER_DEVICE_DESCRIPTION,
21 GATEWAY_DEVICE_DESCRIPTION,
22 THERMOSTAT_DEVICE_DESCRIPTION,
25 from .entity
import OpenThermEntityDescription, OpenThermStatusEntity
28 @dataclass(frozen=True, kw_only=True)
30 OpenThermEntityDescription, BinarySensorEntityDescription
32 """Describes opentherm_gw binary sensor entity."""
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,
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,
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,
57 key=gw_vars.DATA_SLAVE_DHW_ACTIVE,
58 translation_key=
"hot_water",
59 device_class=BinarySensorDeviceClass.RUNNING,
60 device_description=BOILER_DEVICE_DESCRIPTION,
63 key=gw_vars.DATA_SLAVE_FLAME_ON,
64 translation_key=
"flame",
65 device_class=BinarySensorDeviceClass.HEAT,
66 device_description=BOILER_DEVICE_DESCRIPTION,
69 key=gw_vars.DATA_SLAVE_COOLING_ACTIVE,
70 translation_key=
"cooling",
71 device_class=BinarySensorDeviceClass.RUNNING,
72 device_description=BOILER_DEVICE_DESCRIPTION,
75 key=gw_vars.DATA_SLAVE_DIAG_IND,
76 translation_key=
"diagnostic_indication",
77 device_class=BinarySensorDeviceClass.PROBLEM,
78 device_description=BOILER_DEVICE_DESCRIPTION,
81 key=gw_vars.DATA_SLAVE_DHW_PRESENT,
82 translation_key=
"supports_hot_water",
83 device_description=BOILER_DEVICE_DESCRIPTION,
86 key=gw_vars.DATA_SLAVE_CONTROL_TYPE,
87 translation_key=
"control_type",
88 device_description=BOILER_DEVICE_DESCRIPTION,
91 key=gw_vars.DATA_SLAVE_COOLING_SUPPORTED,
92 translation_key=
"supports_cooling",
93 device_description=BOILER_DEVICE_DESCRIPTION,
96 key=gw_vars.DATA_SLAVE_DHW_CONFIG,
97 translation_key=
"hot_water_config",
98 device_description=BOILER_DEVICE_DESCRIPTION,
101 key=gw_vars.DATA_SLAVE_MASTER_LOW_OFF_PUMP,
102 translation_key=
"supports_pump_control",
103 device_description=BOILER_DEVICE_DESCRIPTION,
106 key=gw_vars.DATA_SLAVE_CH2_PRESENT,
107 translation_key=
"supports_ch_2",
108 device_description=BOILER_DEVICE_DESCRIPTION,
111 key=gw_vars.DATA_SLAVE_SERVICE_REQ,
112 translation_key=
"service_required",
113 device_class=BinarySensorDeviceClass.PROBLEM,
114 device_description=BOILER_DEVICE_DESCRIPTION,
117 key=gw_vars.DATA_SLAVE_REMOTE_RESET,
118 translation_key=
"supports_remote_reset",
119 device_description=BOILER_DEVICE_DESCRIPTION,
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,
128 key=gw_vars.DATA_SLAVE_GAS_FAULT,
129 translation_key=
"gas_fault",
130 device_class=BinarySensorDeviceClass.PROBLEM,
131 device_description=BOILER_DEVICE_DESCRIPTION,
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,
140 key=gw_vars.DATA_SLAVE_WATER_OVERTEMP,
141 translation_key=
"water_overtemperature",
142 device_class=BinarySensorDeviceClass.PROBLEM,
143 device_description=BOILER_DEVICE_DESCRIPTION,
146 key=gw_vars.DATA_REMOTE_TRANSFER_MAX_CH,
147 translation_key=
"supports_central_heating_setpoint_transfer",
148 device_description=BOILER_DEVICE_DESCRIPTION,
151 key=gw_vars.DATA_REMOTE_RW_MAX_CH,
152 translation_key=
"supports_central_heating_setpoint_writing",
153 device_description=BOILER_DEVICE_DESCRIPTION,
156 key=gw_vars.DATA_REMOTE_TRANSFER_DHW,
157 translation_key=
"supports_hot_water_setpoint_transfer",
158 device_description=BOILER_DEVICE_DESCRIPTION,
161 key=gw_vars.DATA_REMOTE_RW_DHW,
162 translation_key=
"supports_hot_water_setpoint_writing",
163 device_description=BOILER_DEVICE_DESCRIPTION,
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,
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,
178 key=gw_vars.OTGW_IGNORE_TRANSITIONS,
179 translation_key=
"ignore_transitions",
180 device_description=GATEWAY_DEVICE_DESCRIPTION,
183 key=gw_vars.OTGW_OVRD_HB,
184 translation_key=
"override_high_byte",
185 device_description=GATEWAY_DEVICE_DESCRIPTION,
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,
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,
200 key=gw_vars.DATA_MASTER_DHW_ENABLED,
201 translation_key=
"hot_water",
202 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
205 key=gw_vars.DATA_MASTER_COOLING_ENABLED,
206 translation_key=
"cooling",
207 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
210 key=gw_vars.DATA_MASTER_OTC_ENABLED,
211 translation_key=
"outside_temp_correction",
212 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
215 key=gw_vars.DATA_ROVRD_MAN_PRIO,
216 translation_key=
"override_manual_change_prio",
217 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
220 key=gw_vars.DATA_ROVRD_AUTO_PRIO,
221 translation_key=
"override_program_change_prio",
222 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
225 key=gw_vars.DATA_SLAVE_FAULT_IND,
226 translation_key=
"fault_indication",
227 device_class=BinarySensorDeviceClass.PROBLEM,
228 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
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,
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,
245 key=gw_vars.DATA_SLAVE_DHW_ACTIVE,
246 translation_key=
"hot_water",
247 device_class=BinarySensorDeviceClass.RUNNING,
248 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
251 key=gw_vars.DATA_SLAVE_FLAME_ON,
252 translation_key=
"flame",
253 device_class=BinarySensorDeviceClass.HEAT,
254 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
257 key=gw_vars.DATA_SLAVE_COOLING_ACTIVE,
258 translation_key=
"cooling",
259 device_class=BinarySensorDeviceClass.RUNNING,
260 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
263 key=gw_vars.DATA_SLAVE_DIAG_IND,
264 translation_key=
"diagnostic_indication",
265 device_class=BinarySensorDeviceClass.PROBLEM,
266 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
269 key=gw_vars.DATA_SLAVE_DHW_PRESENT,
270 translation_key=
"supports_hot_water",
271 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
274 key=gw_vars.DATA_SLAVE_CONTROL_TYPE,
275 translation_key=
"control_type",
276 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
279 key=gw_vars.DATA_SLAVE_COOLING_SUPPORTED,
280 translation_key=
"supports_cooling",
281 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
284 key=gw_vars.DATA_SLAVE_DHW_CONFIG,
285 translation_key=
"hot_water_config",
286 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
289 key=gw_vars.DATA_SLAVE_MASTER_LOW_OFF_PUMP,
290 translation_key=
"supports_pump_control",
291 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
294 key=gw_vars.DATA_SLAVE_CH2_PRESENT,
295 translation_key=
"supports_ch_2",
296 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
299 key=gw_vars.DATA_SLAVE_SERVICE_REQ,
300 translation_key=
"service_required",
301 device_class=BinarySensorDeviceClass.PROBLEM,
302 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
305 key=gw_vars.DATA_SLAVE_REMOTE_RESET,
306 translation_key=
"supports_remote_reset",
307 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
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,
316 key=gw_vars.DATA_SLAVE_GAS_FAULT,
317 translation_key=
"gas_fault",
318 device_class=BinarySensorDeviceClass.PROBLEM,
319 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
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,
328 key=gw_vars.DATA_SLAVE_WATER_OVERTEMP,
329 translation_key=
"water_overtemperature",
330 device_class=BinarySensorDeviceClass.PROBLEM,
331 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
334 key=gw_vars.DATA_REMOTE_TRANSFER_MAX_CH,
335 translation_key=
"supports_central_heating_setpoint_transfer",
336 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
339 key=gw_vars.DATA_REMOTE_RW_MAX_CH,
340 translation_key=
"supports_central_heating_setpoint_writing",
341 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
344 key=gw_vars.DATA_REMOTE_TRANSFER_DHW,
345 translation_key=
"supports_hot_water_setpoint_transfer",
346 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
349 key=gw_vars.DATA_REMOTE_RW_DHW,
350 translation_key=
"supports_hot_water_setpoint_writing",
351 device_description=THERMOSTAT_DEVICE_DESCRIPTION,
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,
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,
366 key=gw_vars.DATA_MASTER_DHW_ENABLED,
367 translation_key=
"hot_water",
368 device_description=BOILER_DEVICE_DESCRIPTION,
371 key=gw_vars.DATA_MASTER_COOLING_ENABLED,
372 translation_key=
"cooling",
373 device_description=BOILER_DEVICE_DESCRIPTION,
376 key=gw_vars.DATA_MASTER_OTC_ENABLED,
377 translation_key=
"outside_temp_correction",
378 device_description=BOILER_DEVICE_DESCRIPTION,
381 key=gw_vars.DATA_ROVRD_MAN_PRIO,
382 translation_key=
"override_manual_change_prio",
383 device_description=BOILER_DEVICE_DESCRIPTION,
386 key=gw_vars.DATA_ROVRD_AUTO_PRIO,
387 translation_key=
"override_program_change_prio",
388 device_description=BOILER_DEVICE_DESCRIPTION,
395 config_entry: ConfigEntry,
396 async_add_entities: AddEntitiesCallback,
398 """Set up the OpenTherm Gateway binary sensors."""
399 gw_hub = hass.data[DATA_OPENTHERM_GW][DATA_GATEWAYS][config_entry.data[CONF_ID]]
403 for description
in BINARY_SENSOR_DESCRIPTIONS
408 """Represent an OpenTherm Gateway binary sensor."""
410 _attr_entity_category = EntityCategory.DIAGNOSTIC
411 entity_description: OpenThermBinarySensorEntityDescription
415 """Handle status updates from the component."""
None receive_report(self, dict[OpenThermDataSource, dict] status)
None async_write_ha_state(self)
web.Response get(self, web.Request request, str config_key)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)