Skip to content

Commit 4c1a851

Browse files
committed
Introduce wxx_base.yaml as the shared base for WPL and WPE variants
address #363 The WPM family is not limited to the WPL models. The WPE-I speaks the same protocol but has no integrated DHW, and its Manager does not serve the BETRIEBS_STATUS word (verified on a WPE-I 08 HK 230 Premium, where the panel showed Heizkreispumpe 2 running while all twelve binaries stayed off). Split wpl_base.yaml the same way txx_base.yaml and thz_base.yaml are layered: - wxx_base.yaml carries everything common to WPL and WPE - wpl_base.yaml includes it and adds the WPL specific parts, namely the Manager BETRIEBS_STATUS binaries and the four DHW energy counters No behavior change for wpl13, wpl17 and wpl23: they keep including wpl_base.yaml and end up with exactly the same entities as before.
1 parent 236731a commit 4c1a851

3 files changed

Lines changed: 127 additions & 114 deletions

File tree

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,11 @@ After the pull finishes, go back to your **ESPHome Dashboard** and click **Insta
120120
121121
~~~mermaid
122122
flowchart LR
123-
core[core.yaml<br>System Core] --> wpl_base[wpl_base.yaml<br>Common WPL Base]
123+
core[core.yaml<br>System Core] --> wxx[wxx_base.yaml<br>Common WXX Base]
124124
core --> txx[txx_base.yaml<br>Common TXX Base]
125125
126+
wxx --> wpl_base[wpl_base.yaml<br>Common WPL Base]
127+
126128
wpl_base --> wpl13([wpl13.yaml<br>Manifest])
127129
wpl_base --> wpl17([wpl17.yaml<br>Manifest])
128130
wpl_base --> wpl23([wpl23.yaml<br>Manifest])

yaml/wpl_base.yaml

Lines changed: 4 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,3 @@
1-
#########################################
2-
# #
3-
# Substitutions #
4-
# #
5-
#########################################
6-
substitutions:
7-
can_bus_bit_rate: 50kbps
8-
9-
#########################################
10-
# #
11-
# CAN Bus #
12-
# #
13-
#########################################
14-
canbus:
15-
- id: !extend wp_can
16-
bit_rate: $can_bus_bit_rate
17-
181
#########################################
192
# #
203
# ESPHome Base Setup #
@@ -51,9 +34,10 @@ esphome:
5134
# #
5235
#########################################
5336
packages:
54-
CORE: !include { file: core.yaml }
55-
MANAGER: !include { file: templates/wp_can_id.yaml, vars: { can_node: "Manager" , can_id: "0x480" }}
37+
WXX_BASE: !include { file: wxx_base.yaml }
5638

39+
# Plant status bits reported by the Manager. Not every member of the WPM
40+
# family serves this word, so it stays out of the shared base.
5741
HEIZKREISPUMPE_1: !include { file: templates/wp_binary.yaml, vars: { name: "HEIZKREISPUMPE_1" }}
5842
HEIZKREISPUMPE_2: !include { file: templates/wp_binary.yaml, vars: { name: "HEIZKREISPUMPE_2" }}
5943
PUFFERLADEPUMPE_1: !include { file: templates/wp_binary.yaml, vars: { name: "PUFFERLADEPUMPE_1" }}
@@ -67,101 +51,8 @@ packages:
6751
NHZ_3: !include { file: templates/wp_binary.yaml, vars: { name: "NHZ_3" }}
6852
EVU_SPERRE: !include { file: templates/wp_binary.yaml, vars: { name: "EVU_SPERRE" }}
6953

70-
ISTTEMPERATUR_HK1: !include { file: templates/wp_temperature.yaml, vars: { property: "ISTTEMPERATUR" , name_suffix: "_HK1" , target: "HK1" }}
71-
SOLLTEMPERATUR_HK1: !include { file: templates/wp_temperature.yaml, vars: { property: "SOLLTEMPERATUR" , name_suffix: "_HK1" , target: "HK1" }}
72-
KOMFORTTEMPERATUR_HK1: !include { file: templates/wp_temperature.yaml, vars: { property: "KOMFORTTEMPERATUR" , name_suffix: "_HK1" , target: "HK1" }}
73-
ECOTEMPERATUR_HK1: !include { file: templates/wp_temperature.yaml, vars: { property: "ECOTEMPERATUR" , name_suffix: "_HK1" , target: "HK1" }}
74-
ISTTEMPERATUR_HK2: !include { file: templates/wp_temperature.yaml, vars: { property: "ISTTEMPERATUR" , name_suffix: "_HK2" , target: "HK2" }}
75-
SOLLTEMPERATUR_HK2: !include { file: templates/wp_temperature.yaml, vars: { property: "SOLLTEMPERATUR" , name_suffix: "_HK2" , target: "HK2" }}
76-
KOMFORTTEMPERATUR_HK2: !include { file: templates/wp_temperature.yaml, vars: { property: "KOMFORTTEMPERATUR" , name_suffix: "_HK2" , target: "HK2" }}
77-
ECOTEMPERATUR_HK2: !include { file: templates/wp_temperature.yaml, vars: { property: "ECOTEMPERATUR" , name_suffix: "_HK2" , target: "HK2" }}
78-
RAUMISTTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "RAUMISTTEMP" , target: "FET" }}
79-
RAUMSOLLTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "RAUMSOLLTEMP" , target: "FET" }}
80-
PUFFERISTTEMPERATUR: !include { file: templates/wp_temperature.yaml, vars: { property: "PUFFERISTTEMPERATUR" }}
81-
FROSTSCHUTZ: !include { file: templates/wp_temperature.yaml, vars: { property: "FROSTSCHUTZ" , target: "MFG" }}
82-
VORLAUFTEMP_QUELLE: !include { file: templates/wp_temperature.yaml, vars: { property: "VORLAUFTEMP_QUELLE" , target: "Heizmodul" }}
83-
RUECKLAUFTEMP_QUELLE: !include { file: templates/wp_temperature.yaml, vars: { property: "RUECKLAUFTEMP_QUELLE" , target: "Heizmodul" }}
84-
VORLAUFISTTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "VORLAUFISTTEMP" , update_interval: $interval_medium, target: "MFG" }}
85-
VORLAUFSOLLTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "VORLAUFSOLLTEMP" , target: "HK1" }}
86-
VERDAMPFERTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "VERDAMPFERTEMP" , target: "Heizmodul" }}
87-
RUECKLAUFISTTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "RUECKLAUFISTTEMP" , update_interval: $interval_medium , target: "MFG" }}
88-
MAXVORLAUFTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "MAXVORLAUFTEMP" , target: "Kessel" }}
89-
MAXRUECKLAUFTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "MAXRUECKLAUFTEMP" , target: "Kessel" }}
90-
AUSSENTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "AUSSENTEMP" , update_interval: $interval_medium , target: "Kessel" }}
91-
HEISSGAS_TEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "HEISSGAS_TEMP" , update_interval: $interval_medium , target: "Heizmodul" }}
92-
VORLAUFTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "VORLAUFTEMP" , update_interval: $interval_medium , target: "Heizmodul" }}
93-
VERFLUESSIGER_TEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "VERFLUESSIGER_TEMP" , update_interval: $interval_medium , target: "Heizmodul" }}
94-
OELSUMPFTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "OELSUMPFTEMP" , update_interval: $interval_medium , target: "Heizmodul" }}
95-
VORLAUFISTTEMP_WP: !include { file: templates/wp_temperature.yaml, vars: { property: "VORLAUFISTTEMP_WP" , update_interval: $interval_medium , target: "Kessel" }}
96-
RUECKLAUFISTTEMP_WP: !include { file: templates/wp_temperature.yaml, vars: { property: "RUECKLAUFISTTEMP_WP", update_interval: $interval_medium , target: "Kessel" }}
97-
RUECKLAUFTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "RUECKLAUFTEMP" , update_interval: $interval_medium , target: "Heizmodul" }}
98-
KUEHLEN_SOLLTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "KUEHLEN_SOLLTEMP" , update_interval: $interval_medium , target: "Kessel" }}
99-
KUEHLEN_ISTTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "KUEHLEN_ISTTEMP" , update_interval: $interval_medium , target: "Kessel" }}
100-
ISTTEMPERATUR_KK_2: !include { file: templates/wp_temperature.yaml, vars: { property: "ISTTEMPERATUR_KK_2" , update_interval: $interval_medium , target: "HK2" }}
101-
SOLLTEMPERATUR_KK_2: !include { file: templates/wp_temperature.yaml, vars: { property: "SOLLTEMPERATUR_KK_2", update_interval: $interval_medium , target: "HK2" }}
102-
ANLAGEFROST: !include { file: templates/wp_temperature.yaml, vars: { property: "ANLAGEFROST" , update_interval: $interval_medium , target: "Kessel" }}
103-
VORLAUFISTTEMP_NHZ: !include { file: templates/wp_temperature.yaml, vars: { property: "VORLAUFISTTEMP_NHZ" , update_interval: $interval_medium , target: "Kessel" }}
104-
HYSTERESE_VORLAUFTEMP_KUEHLEN: !include { file: templates/wp_temperature.yaml, vars: { property: "HYSTERESE_VORLAUFTEMP_KUEHLEN", target: "Kessel", unit: "°K" }}
105-
STARTTEMPERATUR: !include { file: templates/wp_temperature.yaml, vars: { property: "STARTTEMPERATUR" , target: "HK2" }}
106-
VERDICHTER_EINTRITTSTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "VERDICHTER_EINTRITTSTEMP", target: "Heizmodul" }}
107-
TAUPUNKTTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "TAUPUNKTTEMP", target: "HK2" }}
108-
RAUMSOLLTEMP_KUEHLEN: !include { file: templates/wp_temperature.yaml, vars: { property: "RAUMSOLLTEMP_KUEHLEN", target: "HK2" }}
109-
BIVALENZTEMPERATUR_HZG: !include { file: templates/wp_temperature.yaml, vars: { property: "BIVALENZTEMPERATUR_HZG", target: "Kessel" }}
110-
UMGEBUNGSTEMPERATUR_INVERTER: !include { file: templates/wp_temperature.yaml, vars: { property: "UMGEBUNGSTEMPERATUR_INVERTER" , target: "Heizmodul" }}
111-
UNTERK_COND: !include { file: templates/wp_temperature.yaml, vars: { property: "UNTERK_COND" , target: "Heizmodul" }}
112-
TEMPERATUR_INV_VERDICHTER: !include { file: templates/wp_temperature.yaml, vars: { property: "TEMPERATUR_INV_VERDICHTER" , target: "Heizmodul" }}
113-
IST_UEBERHITZUNG_SAUGGAS_VERDICHTER: !include { file: templates/wp_temperature.yaml, vars: { property: "IST_UEBERHITZUNG_SAUGGAS_VERDICHTER", target: "Heizmodul", unit: "°K" }}
114-
SOLL_UEBERHITZUNG_SAUGGAS_VERDICHTER: !include { file: templates/wp_temperature.yaml, vars: { property: "SOLL_UEBERHITZUNG_SAUGGAS_VERDICHTER", target: "Heizmodul", unit: "°K" }}
115-
ADAPTION_UEBERHITZUNG: !include { file: templates/wp_temperature.yaml, vars: { property: "ADAPTION_UEBERHITZUNG", target: "Heizmodul", unit: "°K" }}
116-
MINTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "MINTEMP" , target: "HK2" }}
117-
MAXTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "MAXTEMP" , target: "HK2" }}
118-
119-
EL_NACHERW_VERZ_ZEIT: !include { file: templates/wp_generic.yaml, vars: { property: "EL_NACHERW_VERZ_ZEIT", unit: "min" , target: "Kessel" }}
120-
EL_NACHERW_ANZ_STUFEN: !include { file: templates/wp_generic.yaml, vars: { property: "EL_NACHERW_ANZ_STUFEN", target: "Kessel" }}
121-
ISTDREHZAHL_VERDICHTER: !include { file: templates/wp_generic.yaml, vars: { property: "ISTDREHZAHL_VERDICHTER" , unit: "Hz", target: "Heizmodul" }}
122-
SOLLDREHZAHL_VERDICHTER: !include { file: templates/wp_generic.yaml, vars: { property: "SOLLDREHZAHL_VERDICHTER", unit: "Hz", target: "Heizmodul" }}
123-
LEISTUNG_KUEHLEN: !include { file: templates/wp_generic.yaml, vars: { property: "LEISTUNG_KUEHLEN", unit: "kW", target: "Manager" }}
124-
STEIGUNG_KUEHLKURVE: !include { file: templates/wp_generic.yaml, vars: { property: "STEIGUNG_KUEHLKURVE" , target: "HK2" , scaler: "0.1", accuracy_decimals: "2" }}
125-
LAUFZEIT_PASSIVKUEHLUNG: !include { file: templates/wp_generic.yaml, vars: { property: "LAUFZEIT_PASSIVKUEHLUNG", scaler: "10", unit: "h", target: "Heizmodul" }}
126-
RAUMFEUCHTE: !include { file: templates/wp_generic.yaml, vars: { property: "RAUMFEUCHTE" , update_interval: $interval_very_slow, unit: "%", icon: "mdi:water-percent", accuracy_decimals: "1", target: "FET" }}
127-
HEIZEN_EFFIZIENZ_TAG: !include { file: templates/wp_generic.yaml, vars: { property: "HEIZEN_EFFIZIENZ_TAG" , target: "Manager", accuracy_decimals: "2" }}
128-
HEIZEN_EFFIZIENZ_JAHR: !include { file: templates/wp_generic.yaml, vars: { property: "HEIZEN_EFFIZIENZ_JAHR" , target: "Manager", accuracy_decimals: "2" }}
129-
DRUCK_NIEDERDRUCK: !include { file: templates/wp_generic.yaml, vars: { property: "DRUCK_NIEDERDRUCK" , unit: "bar" , icon: "mdi:water-pressure", scaler: "0.1" , accuracy_decimals: "2", target: "Heizmodul" }}
130-
DRUCK_HOCHDRUCK: !include { file: templates/wp_generic.yaml, vars: { property: "DRUCK_HOCHDRUCK" , unit: "bar" , icon: "mdi:water-pressure", scaler: "0.1" , accuracy_decimals: "2", target: "Heizmodul" }}
131-
HEIZUNGSDRUCK: !include { file: templates/wp_generic.yaml, vars: { property: "HEIZUNGSDRUCK" , unit: "bar" , icon: "mdi:water-pressure" , accuracy_decimals: "2", target: "Kessel" }}
132-
QUELLENDRUCK: !include { file: templates/wp_generic.yaml, vars: { property: "QUELLENDRUCK" , unit: "bar" , icon: "mdi:water-pressure" , accuracy_decimals: "1", target: "Heizmodul" }}
133-
LEISTUNG_QUELLENPUMPE: !include { file: templates/wp_generic.yaml, vars: { property: "LEISTUNG_QUELLENPUMPE" , unit: "%" , icon: "mdi:water-percent", accuracy_decimals: "1", target: "Heizmodul" }}
134-
VOLUMENSTROM: !include { file: templates/wp_generic.yaml, vars: { property: "VOLUMENSTROM" , unit: "l/min", icon: "mdi:flow" , accuracy_decimals: "2", target: "Kessel" }}
135-
STROM_INVERTER: !include { file: templates/wp_generic.yaml, vars: { property: "STROM_INVERTER" , unit: "A" , target: "Heizmodul" , accuracy_decimals: "1" }}
136-
SPANNUNG_INVERTER: !include { file: templates/wp_generic.yaml, vars: { property: "SPANNUNG_INVERTER" , unit: "V" , target: "Heizmodul" , accuracy_decimals: "1" }}
137-
ZEITINTERVALL: !include { file: templates/wp_generic.yaml, vars: { property: "ZEITINTERVALL", scaler: "10", target: "Manager" }}
138-
STROM_MOTOR: !include { file: templates/wp_generic.yaml, vars: { property: "STROM_MOTOR" , unit: "A" , target: "Heizmodul" , accuracy_decimals: "1" }}
139-
VERDICHTERDREHZAHLGRENZE: !include { file: templates/wp_generic.yaml, vars: { property: "VERDICHTERDREHZAHLGRENZE", target: "Heizmodul" }}
140-
STEIGUNG_HEIZKURVE_HK1: !include { file: templates/wp_generic.yaml, vars: { property: "STEIGUNG_HEIZKURVE" , target: "HK1" , name_suffix: "_HK1", scaler: "0.1", accuracy_decimals: "2" }}
141-
STEIGUNG_HEIZKURVE_HK2: !include { file: templates/wp_generic.yaml, vars: { property: "STEIGUNG_HEIZKURVE" , target: "HK2" , name_suffix: "_HK2", scaler: "0.1", accuracy_decimals: "2" }}
142-
MISCHERDYNAMIK: !include { file: templates/wp_generic.yaml, vars: { property: "MISCHERDYNAMIK", target: "HK2" }}
143-
144-
RAUMEINFLUSS: !include { file: templates/wp_number.yaml, vars: { property: "RAUMEINFLUSS", target: "HK2" }}
145-
146-
VERDICHTER_STARTS: !include { file: templates/wp_generic_combined.yaml, vars: { sensor_name: "VERDICHTER_STARTS" , scaled_property: "VERDICHTER_STARTS_K" , property: "VERDICHTER_STARTS" , unit: "" , accuracy_decimals: "0", scaler: "1000", icon: "mdi:counter" , target: "Heizmodul", state_class: "total_increasing" }}
54+
# Domestic hot water. Models without an integrated DHW tank lack these.
14755
WAERMEERTRAG_WW_SUMME_MWH: !include { file: templates/wp_generic_combined.yaml, vars: { sensor_name: "WAERMEERTRAG_WW_SUMME_MWH" , scaled_property: "WAERMEERTRAG_WW_SUM_KWH" , property: "WAERMEERTRAG_WW_SUM_MWH" , unit: "MWh", accuracy_decimals: "3", icon: "mdi:fire" , target: "Heizmodul", state_class: "total_increasing" }}
148-
WAERMEERTRAG_HEIZ_SUMME_MWH: !include { file: templates/wp_generic_combined.yaml, vars: { sensor_name: "WAERMEERTRAG_HEIZ_SUMME_MWH" , scaled_property: "WAERMEERTRAG_HEIZ_SUM_KWH" , property: "WAERMEERTRAG_HEIZ_SUM_MWH" , unit: "MWh", accuracy_decimals: "3", icon: "mdi:fire" , target: "Heizmodul", state_class: "total_increasing" }}
14956
EL_ENERGIEAUFNAHME_WW_SUMME_KWH: !include { file: templates/wp_generic_combined.yaml, vars: { sensor_name: "EL_ENERGIEAUFNAHME_WW_SUMME_KWH" , scaled_property: "EL_ENERGIEAUFNAHME_WW_SUM_MWH" , property: "EL_ENERGIEAUFNAHME_WW_SUM_KWH" , unit: "kWh", accuracy_decimals: "0", scaler: "1000", icon: "mdi:flash", target: "Heizmodul", state_class: "total_increasing" }}
150-
EL_ENERGIEAUFNAHME_HEIZ_SUMME_KWH: !include { file: templates/wp_generic_combined.yaml, vars: { sensor_name: "EL_ENERGIEAUFNAHME_HEIZ_SUMME_KWH" , scaled_property: "EL_ENERGIEAUFNAHME_HEIZ_SUM_MWH" , property: "EL_ENERGIEAUFNAHME_HEIZ_SUM_KWH" , unit: "kWh", accuracy_decimals: "0", scaler: "1000", icon: "mdi:flash", target: "Heizmodul", state_class: "total_increasing" }}
151-
15257
EL_ENERGIEAUFNAHME_WW_TAG_SUMME_KWH: !include { file: templates/wp_daily_energy_combined.yaml, vars: { sensor_name: "EL_ENERGIEAUFNAHME_WW_TAG_SUMME_KWH" , property_wh: "EL_ENERGIEAUFNAHME_WW_TAG_WH" , property_kwh: "EL_ENERGIEAUFNAHME_WW_TAG_KWH" , target: "Heizmodul" }}
153-
EL_ENERGIEAUFNAHME_HEIZ_TAG_SUMME_KWH: !include { file: templates/wp_daily_energy_combined.yaml, vars: { sensor_name: "EL_ENERGIEAUFNAHME_HEIZ_TAG_SUMME_KWH" , property_wh: "EL_ENERGIEAUFNAHME_HEIZ_TAG_WH" , property_kwh: "EL_ENERGIEAUFNAHME_HEIZ_TAG_KWH" , target: "Heizmodul" }}
15458
WAERMEERTRAG_WW_TAG_SUMME_KWH: !include { file: templates/wp_daily_energy_combined.yaml, vars: { sensor_name: "WAERMEERTRAG_WW_TAG_SUMME_KWH" , property_wh: "WAERMEERTRAG_WW_TAG_WH" , property_kwh: "WAERMEERTRAG_WW_TAG_KWH" , target: "Heizmodul" }}
155-
WAERMEERTRAG_HEIZ_TAG_SUMME_KWH: !include { file: templates/wp_daily_energy_combined.yaml, vars: { sensor_name: "WAERMEERTRAG_HEIZ_TAG_SUMME_KWH" , property_wh: "WAERMEERTRAG_HEIZ_TAG_WH" , property_kwh: "WAERMEERTRAG_HEIZ_TAG_KWH" , target: "Heizmodul" }}
156-
157-
HEATPUMP_DATETIME: !include { file: templates/wp_datetime.yaml }
158-
159-
PROGRAMMSCHALTER: !include { file: templates/wp_select.yaml, vars: { property: PROGRAMMSCHALTER, target: "Manager", mapper_func_set: getBetriebsartId, mapper_func_get: getBetriebsart, options: ["Notbetrieb", "Bereitschaft", "Programm", "Komfort", "Eco", "Unbekannt"] }}
160-
161-
text:
162-
- id: !extend HK1_CAN_ID
163-
initial_value: "0x601"
164-
- id: !extend HK2_CAN_ID
165-
initial_value: "0x602"
166-
- id: !extend Heizmodul_CAN_ID
167-
initial_value: "0x514"

0 commit comments

Comments
 (0)