Skip to content

Commit 2822833

Browse files
committed
Merge PR #18 — POINTTAPI optional entity discovery, appliance status, zone program selects
Contributed by @jfhautenauven. Conditional entity creation (energy efficiency, return temp, zigbee firmware, electricity annual goal), appliance status sensor backed by a manufacturer display/cause code table, per-zone assigned-program selects and optimum-start sensors, thermal-disinfect switch on/off mapping, and translation updates across all 7 locales.
2 parents e126632 + 88e88f6 commit 2822833

13 files changed

Lines changed: 2145 additions & 198 deletions

File tree

custom_components/bosch/number.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
)
2121
from .pointtapi_entities import (
2222
BoschPoinTTAPINumberEntity,
23-
POINTTAPI_NUMBER_DESCRIPTIONS,
23+
_pointtapi_number_descriptions,
2424
)
2525

2626

@@ -31,11 +31,12 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
3131
coordinator = rt_data.coordinator
3232
if coordinator:
3333
uuid = config_entry.data.get(UUID)
34+
descriptions = _pointtapi_number_descriptions(coordinator.data or {})
3435
async_add_entities([
3536
BoschPoinTTAPINumberEntity(
3637
coordinator, config_entry.entry_id, uuid, description
3738
)
38-
for description in POINTTAPI_NUMBER_DESCRIPTIONS
39+
for description in descriptions
3940
])
4041
else:
4142
async_add_entities([])

custom_components/bosch/pointtapi_entities.py

Lines changed: 661 additions & 149 deletions
Large diffs are not rendered by default.

custom_components/bosch/select.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
)
1919
from .pointtapi_entities import (
2020
BoschPoinTTAPISelectEntity,
21-
POINTTAPI_SELECT_DESCRIPTIONS,
21+
_pointtapi_select_descriptions,
2222
)
2323

2424

@@ -29,11 +29,12 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
2929
coordinator = rt_data.coordinator
3030
if coordinator:
3131
uuid = config_entry.data.get(UUID)
32+
descriptions = _pointtapi_select_descriptions(coordinator.data or {})
3233
async_add_entities([
3334
BoschPoinTTAPISelectEntity(
3435
coordinator, config_entry.entry_id, uuid, desc
3536
)
36-
for desc in POINTTAPI_SELECT_DESCRIPTIONS
37+
for desc in descriptions
3738
])
3839
else:
3940
async_add_entities([])

custom_components/bosch/strings.json

Lines changed: 108 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
"wifi_firmware_version": {
2020
"name": "WiFi firmware version"
2121
},
22+
"zigbee_firmware_version": {
23+
"name": "Zigbee firmware version"
24+
},
2225
"energy_efficiency": {
2326
"name": "Energy efficiency"
2427
},
@@ -44,14 +47,14 @@
4447
"name": "Gas total this hour"
4548
},
4649
"blocking_error": {
47-
"name": "Blocking error",
50+
"name": "Blocking fault code",
4851
"state": {
4952
"false": "No error",
5053
"true": "Error"
5154
}
5255
},
5356
"locking_error": {
54-
"name": "Locking error",
57+
"name": "Locking fault code",
5558
"state": {
5659
"false": "No error",
5760
"true": "Error"
@@ -68,7 +71,92 @@
6871
"name": "Display code"
6972
},
7073
"cause_code": {
71-
"name": "Cause code"
74+
"name": "Service code"
75+
},
76+
"appliance_status": {
77+
"name": "Boiler status",
78+
"state": {
79+
"unknown": "Unknown",
80+
"locking_fault_code_active": "Locking fault code active",
81+
"blocking_fault_code_active": "Blocking fault code active",
82+
"standby_no_heat_demand": "Standby - no heat demand",
83+
"heating_operation": "Heating operation",
84+
"hot_water_operation": "Hot water operation",
85+
"anti_cycle_delay": "Anti-cycling delay",
86+
"dhw_post_heating_lockout": "DHW post-heating lockout active",
87+
"system_pressure_too_low": "System pressure too low",
88+
"flue_gas_test_heat_demand": "Heat demand due to flue gas test",
89+
"flue_gas_thermostat_or_air_pressure_active": "Flue gas thermostat or air pressure controller active",
90+
"safety_supply_temp_rising_too_fast": "Safety/supply temperature rising too fast",
91+
"heating_gradient_limitation": "Heating gradient limitation",
92+
"dhw_gradient_limitation": "DHW gradient limitation",
93+
"supply_return_temp_difference_too_high": "Supply/return temperature difference too high",
94+
"pump_no_pressure_difference": "Circulation pump does not generate pressure difference",
95+
"fan_stopped_during_safety_time": "Fan stopped during safety time",
96+
"fan_stopped_during_operation": "Fan stopped during operation",
97+
"fan_speed_too_low": "Fan speed too low",
98+
"fan_speed_too_high": "Fan speed too high",
99+
"fan_malfunction": "Fan malfunction",
100+
"air_pressure_monitor_fault": "Air pressure monitor fault",
101+
"supply_temp_too_high": "Supply temperature too high",
102+
"safety_sensor_temp_too_high": "Safety sensor temperature too high",
103+
"safety_sensor_short_circuit": "Safety sensor short circuit",
104+
"safety_sensor_disconnected": "Safety sensor disconnected",
105+
"supply_sensor_short_circuit": "Supply sensor short circuit",
106+
"supply_sensor_disconnected": "Supply sensor disconnected",
107+
"safety_limiter_active": "Safety thermostat/temperature limiter active",
108+
"communication_or_internal_signal_fault": "Communication or internal signal fault",
109+
"internal_monitoring_fault": "Internal monitoring fault",
110+
"no_flame_after_ignition": "No flame detected after ignition",
111+
"unexpected_flame_signal": "Flame signal present when no flame expected",
112+
"flame_detected_after_gas_shutdown": "Flame detected after gas shutdown",
113+
"ionization_signal_lost": "Ionization signal lost during operation",
114+
"invalid_ionization_signal": "Invalid ionization signal",
115+
"mains_voltage_fault_or_power_loss": "Mains voltage fault or power outage",
116+
"first_safety_time_fault": "First safety-time timeout fault",
117+
"restart_attempt_time_fault": "Restart-attempt timeout fault",
118+
"external_cutoff_switch_active": "External cutoff switch active",
119+
"external_controller_fault": "External controller fault",
120+
"gas_valve_communication_fault": "Communication fault with gas valve",
121+
"gas_valve_not_recognized": "Gas valve not recognized",
122+
"kim_not_recognized": "KIM not recognized",
123+
"internal_electronics_fault": "Internal electronics fault",
124+
"equipment_fault_relay_error": "Equipment fault relay error",
125+
"device_internal_fault": "Internal device fault",
126+
"return_sensor_short_circuit": "Return sensor short circuit",
127+
"return_sensor_disconnected": "Return sensor disconnected",
128+
"internal_communication_fault": "Internal communication fault",
129+
"sensor_or_electronics_fault": "Sensor or electronics fault",
130+
"communication_fault": "Communication fault",
131+
"internal_controller_fault": "Internal controller fault",
132+
"regulation_system_internal_fault": "Internal regulation system fault",
133+
"ignition_or_flame_fault": "Ignition or flame fault",
134+
"flame_fault": "Flame fault",
135+
"regulation_system_test": "Regulation system test",
136+
"boiler_startup_preventilation": "Boiler startup/pre-ventilation",
137+
"burner_operation_monitoring": "Burner operation monitoring",
138+
"flame_monitoring": "Flame monitoring",
139+
"safety_shutdown_after_24h_continuous_operation": "Safety shutdown after 24h continuous burner/fan operation",
140+
"burner_startup_phase": "Burner startup phase",
141+
"fan_starting": "Fan starting",
142+
"startup_delay": "Startup delay",
143+
"pump_or_flow_insufficient": "Pump/circulation flow insufficient",
144+
"purge_function_active": "Purge function active",
145+
"pump_or_three_way_valve_anti_seizure": "Pump/3-way valve anti-seizure active",
146+
"internal_error_service_required": "Internal error - service required",
147+
"burner_starting": "Burner starting",
148+
"heat_demand_below_min_power": "Heat demand below minimum power",
149+
"gas_valve_opening": "Gas valve opening",
150+
"gas_valve_open_burner_startup": "Gas valve open / burner startup",
151+
"boiler_starting": "Boiler starting",
152+
"supply_temp_above_setpoint": "Supply temperature above setpoint",
153+
"dhw_sensor_temp_too_high": "DHW sensor temperature too high",
154+
"main_controller_fault": "Main controller fault",
155+
"regulation_system_fault": "Regulation system fault",
156+
"internal_fault": "Internal fault",
157+
"electronic_fault": "Electronic fault",
158+
"internal_system_fault": "Internal system fault"
159+
}
72160
},
73161
"firmware_version": {
74162
"name": "Firmware version"
@@ -85,6 +173,14 @@
85173
"actual_modulation": {
86174
"name": "Actual modulation"
87175
},
176+
"heat_demand_type": {
177+
"name": "Demand type",
178+
"state": {
179+
"off": "No demand",
180+
"ch": "Heating",
181+
"dhw": "Domestic hot water"
182+
}
183+
},
88184
"collector_temperature": {
89185
"name": "Collector temperature"
90186
},
@@ -133,6 +229,9 @@
133229
"assigned_program": {
134230
"name": "Assigned program"
135231
},
232+
"optimum_start_state": {
233+
"name": "Optimum start state"
234+
},
136235
"electricity_day_average": {
137236
"name": "Electricity day average"
138237
},
@@ -197,6 +296,9 @@
197296
},
198297
"annual_gas_goal": {
199298
"name": "Annual gas goal"
299+
},
300+
"annual_electricity_goal": {
301+
"name": "Annual electricity goal"
200302
}
201303
},
202304
"binary_sensor": {
@@ -255,6 +357,9 @@
255357
"manual": "Manual"
256358
}
257359
},
360+
"assigned_program_select": {
361+
"name": "Assigned program"
362+
},
258363
"pir_sensitivity": {
259364
"name": "PIR sensitivity",
260365
"state": {

custom_components/bosch/translations/de.json

Lines changed: 108 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
"wifi_firmware_version": {
2020
"name": "WLAN-Firmwareversion"
2121
},
22+
"zigbee_firmware_version": {
23+
"name": "Zigbee-Firmwareversion"
24+
},
2225
"energy_efficiency": {
2326
"name": "Energieeffizienz"
2427
},
@@ -35,14 +38,14 @@
3538
"name": "Kesselleistung"
3639
},
3740
"blocking_error": {
38-
"name": "Blockierender Fehler",
41+
"name": "Blockierender Fehlercode",
3942
"state": {
4043
"false": "Kein Fehler",
4144
"true": "Fehler"
4245
}
4346
},
4447
"locking_error": {
45-
"name": "Sperrfehler",
48+
"name": "Sperrender Fehlercode",
4649
"state": {
4750
"false": "Kein Fehler",
4851
"true": "Fehler"
@@ -59,7 +62,92 @@
5962
"name": "Anzeigecode"
6063
},
6164
"cause_code": {
62-
"name": "Ursachencode"
65+
"name": "Servicecode"
66+
},
67+
"appliance_status": {
68+
"name": "Kesselstatus",
69+
"state": {
70+
"unknown": "Unbekannt",
71+
"locking_fault_code_active": "Sperrender Fehlercode aktiv",
72+
"blocking_fault_code_active": "Blockierender Fehlercode aktiv",
73+
"standby_no_heat_demand": "Standby - keine Wärmeanforderung",
74+
"heating_operation": "Heizbetrieb",
75+
"hot_water_operation": "Warmwasserbetrieb",
76+
"anti_cycle_delay": "Taktsperre",
77+
"dhw_post_heating_lockout": "Warmwasser-Nachhaltezeit aktiv",
78+
"system_pressure_too_low": "Systemdruck zu niedrig",
79+
"flue_gas_test_heat_demand": "Wärmeanforderung durch Abgastest",
80+
"flue_gas_thermostat_or_air_pressure_active": "Abgasthermostat oder Luftdruckregler aktiv",
81+
"safety_supply_temp_rising_too_fast": "Sicherheits-/Vorlauftemperatur steigt zu schnell",
82+
"heating_gradient_limitation": "Gradientenbegrenzung im Heizbetrieb",
83+
"dhw_gradient_limitation": "Gradientenbegrenzung im Warmwasserbetrieb",
84+
"supply_return_temp_difference_too_high": "Differenz zwischen Vorlauf- und Rücklauftemperatur zu hoch",
85+
"pump_no_pressure_difference": "Die Umwälzpumpe erzeugt keine Druckdifferenz",
86+
"fan_stopped_during_safety_time": "Lüfter während der Sicherheitszeit gestoppt",
87+
"fan_stopped_during_operation": "Lüfter während des Betriebs gestoppt",
88+
"fan_speed_too_high": "Lüfterdrehzahl zu hoch",
89+
"fan_speed_too_low": "Lüfterdrehzahl zu niedrig",
90+
"fan_malfunction": "Lüfter funktioniert nicht korrekt",
91+
"air_pressure_monitor_fault": "Luftdrucküberwachung oder Pressostatfehler",
92+
"supply_temp_too_high": "Vorlauftemperatur zu hoch",
93+
"safety_sensor_temp_too_high": "Sicherheitsfühlertemperatur zu hoch",
94+
"safety_sensor_short_circuit": "Kurzschluss am Sicherheitsfühler",
95+
"safety_sensor_disconnected": "Sicherheitsfühler getrennt",
96+
"supply_sensor_short_circuit": "Kurzschluss am Vorlauffühler",
97+
"supply_sensor_disconnected": "Vorlauffühler getrennt",
98+
"safety_limiter_active": "Sicherheitsthermostat/Temperaturbegrenzer aktiv",
99+
"communication_or_internal_signal_fault": "Kommunikations- oder internes Signalfehler",
100+
"internal_monitoring_fault": "Interner Überwachungsfehler",
101+
"no_flame_after_ignition": "Keine Flamme nach der Zündung erkannt",
102+
"unexpected_flame_signal": "Flammensignal vorhanden, obwohl keine Flamme erwartet wird",
103+
"flame_detected_after_gas_shutdown": "Flamme nach Gasabschaltung erkannt",
104+
"ionization_signal_lost": "Ionisationssignal während des Betriebs verloren",
105+
"invalid_ionization_signal": "Ungültiges Ionisationssignal",
106+
"mains_voltage_fault_or_power_loss": "Netzspannungsfehler oder Stromausfall",
107+
"first_safety_time_fault": "Zeitfehler für die erste Sicherheitszeit",
108+
"restart_attempt_time_fault": "Zeitfehler für den Wiederanlaufversuch",
109+
"external_cutoff_switch_active": "Externer Abschaltschalter aktiv",
110+
"external_controller_fault": "Fehler des externen Reglers",
111+
"gas_valve_communication_fault": "Kommunikationsfehler mit dem Gasventil",
112+
"gas_valve_not_recognized": "Gasventil nicht erkannt",
113+
"kim_not_recognized": "KIM nicht erkannt",
114+
"internal_electronics_fault": "Interner Elektronikfehler",
115+
"equipment_fault_relay_error": "Fehler am Störungsrelais",
116+
"device_internal_fault": "Interner Gerätefehler",
117+
"return_sensor_short_circuit": "Kurzschluss am Rücklauffühler",
118+
"return_sensor_disconnected": "Rücklauffühler getrennt",
119+
"internal_communication_fault": "Interner Kommunikationsfehler",
120+
"sensor_or_electronics_fault": "Sensor- oder Elektronikfehler",
121+
"communication_fault": "Kommunikationsfehler",
122+
"internal_controller_fault": "Interner Reglerfehler",
123+
"regulation_system_internal_fault": "Interner Fehler des Regelsystems",
124+
"ignition_or_flame_fault": "Zünd- oder Flammenfehler",
125+
"flame_fault": "Flammenfehler",
126+
"regulation_system_test": "Test des Regelsystems",
127+
"boiler_startup_preventilation": "Kesselstart oder Vorlüftung",
128+
"burner_operation_monitoring": "Überwachung des Brennerbetriebs",
129+
"flame_monitoring": "Flammenüberwachung",
130+
"safety_shutdown_after_24h_continuous_operation": "Sicherheitsabschaltung nach 24 h Dauerbetrieb von Brenner/Lüfter",
131+
"burner_startup_phase": "Brenner in der Startphase",
132+
"fan_starting": "Lüfterstart",
133+
"startup_delay": "Startverzögerung",
134+
"pump_or_flow_insufficient": "Pumpe oder Durchfluss unzureichend",
135+
"purge_function_active": "Entlüftungsfunktion aktiv",
136+
"pump_or_three_way_valve_anti_seizure": "Blockierschutz für Pumpe/3-Wege-Ventil aktiv",
137+
"internal_error_service_required": "Interner Fehler - Service erforderlich",
138+
"burner_starting": "Brenner startet",
139+
"heat_demand_below_min_power": "Wärmeanforderung unter Mindestleistung",
140+
"gas_valve_opening": "Gasventil wird geöffnet",
141+
"gas_valve_open_burner_startup": "Gasventil offen oder Brennerstart",
142+
"boiler_starting": "Kessel startet",
143+
"supply_temp_above_setpoint": "Vorlauftemperatur über Sollwert",
144+
"dhw_sensor_temp_too_high": "Warmwasserfühler-Temperatur zu hoch",
145+
"main_controller_fault": "Fehler des Hauptreglers",
146+
"regulation_system_fault": "Fehler des Regelsystems",
147+
"internal_fault": "Interner Fehler",
148+
"electronic_fault": "Elektronikfehler",
149+
"internal_system_fault": "Interner Systemfehler"
150+
}
63151
},
64152
"actual_supply_temperature": {
65153
"name": "Vorlauftemperatur"
@@ -70,6 +158,9 @@
70158
"assigned_program": {
71159
"name": "Zugewiesenes Programm"
72160
},
161+
"optimum_start_state": {
162+
"name": "Status optimaler Start"
163+
},
73164
"electricity_day_average": {
74165
"name": "Tagesdurchschnitt Strom"
75166
},
@@ -79,6 +170,14 @@
79170
"actual_modulation": {
80171
"name": "Aktuelle Modulationsleistung"
81172
},
173+
"heat_demand_type": {
174+
"name": "Anforderungsart",
175+
"state": {
176+
"off": "Keine Anforderung",
177+
"ch": "Heizung",
178+
"dhw": "Warmwasser"
179+
}
180+
},
82181
"gas_heating_today": {
83182
"name": "Gas Heizung heute"
84183
},
@@ -176,6 +275,9 @@
176275
},
177276
"annual_gas_goal": {
178277
"name": "Jährliches Gasziel"
278+
},
279+
"annual_electricity_goal": {
280+
"name": "Jährliches Stromziel"
179281
}
180282
},
181283
"binary_sensor": {
@@ -234,6 +336,9 @@
234336
"manual": "Manuell"
235337
}
236338
},
339+
"assigned_program_select": {
340+
"name": "Zugewiesenes Programm"
341+
},
237342
"pir_sensitivity": {
238343
"name": "Empfindlichkeit des Bewegungsmelders",
239344
"state": {

0 commit comments

Comments
 (0)