Skip to content

Commit 954b320

Browse files
committed
Move Manager BETRIEBS_STATUS binaries from wpl_base into the WPL variants
The Manager (0x480) BETRIEBS_STATUS word is not served on every WPM-family pump: a WPE-I 08 HK 230 Premium answers the read but the word stays 0 regardless of state (verified with the panel showing Heizkreispumpe 2 running while all twelve binaries read off; the WPE-I publishes its plant status in other words instead, see the WPE-I variant). Keep wpl_base model-agnostic by moving the twelve binaries and their bit decode into wpl13/wpl17/wpl23 — no behavior change for those models.
1 parent c13f301 commit 954b320

4 files changed

Lines changed: 110 additions & 43 deletions

File tree

yaml/wpl13.yaml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,28 @@ esphome:
2727
then:
2828
- lambda: |-
2929
queueRequest(CanNode::Heizmodul, Property::kWAERMEPUMPEN_STATUS);
30+
- priority: -50
31+
then:
32+
- lambda: |-
33+
CallbackHandler::instance().addCallback(std::make_pair(CanNode::Manager,Property::kBETRIEBS_STATUS),[](const SimpleVariant& value){
34+
const std::bitset<12U> status_bits{static_cast<std::uint16_t>(value)};
35+
id(HEIZKREISPUMPE_1).publish_state(status_bits.test(0U));
36+
id(HEIZKREISPUMPE_2).publish_state(status_bits.test(1U));
37+
id(PUFFERLADEPUMPE_1).publish_state(status_bits.test(2U));
38+
id(QUELLENPUMPE).publish_state(status_bits.test(3U));
39+
id(STOERAUSGANG).publish_state(status_bits.test(4U));
40+
id(KUEHLBETRIEB).publish_state(status_bits.test(5U));
41+
id(MISCHER_AUF_HEIZKREIS_2).publish_state(status_bits.test(6U));
42+
id(MISCHER_ZU_HEIZKREIS_2).publish_state(status_bits.test(7U));
43+
id(NHZ_1).publish_state(status_bits.test(8U));
44+
id(NHZ_2).publish_state(status_bits.test(9U));
45+
id(NHZ_3).publish_state(status_bits.test(10U));
46+
id(EVU_SPERRE).publish_state(status_bits.test(11U));
47+
});
48+
- priority: -100
49+
then:
50+
- lambda: |-
51+
queueRequest(CanNode::Manager, Property::kBETRIEBS_STATUS);
3052
3153
#########################################
3254
# #
@@ -57,6 +79,20 @@ packages:
5779
PASSIVKUEHLVENTIL_HEIZEN: !include { file: templates/wp_binary.yaml, vars: { name: "PASSIVKUEHLVENTIL_HEIZEN" }}
5880
PASSIVKUEHLVENTIL_KUEHLEN: !include { file: templates/wp_binary.yaml, vars: { name: "PASSIVKUEHLVENTIL_KUEHLEN" }}
5981

82+
# Manager BETRIEBS_STATUS binaries (word not served on all models, e.g. WPE-I)
83+
HEIZKREISPUMPE_1: !include { file: templates/wp_binary.yaml, vars: { name: "HEIZKREISPUMPE_1" }}
84+
HEIZKREISPUMPE_2: !include { file: templates/wp_binary.yaml, vars: { name: "HEIZKREISPUMPE_2" }}
85+
PUFFERLADEPUMPE_1: !include { file: templates/wp_binary.yaml, vars: { name: "PUFFERLADEPUMPE_1" }}
86+
QUELLENPUMPE: !include { file: templates/wp_binary.yaml, vars: { name: "QUELLENPUMPE" }}
87+
STOERAUSGANG: !include { file: templates/wp_binary.yaml, vars: { name: "STOERAUSGANG" }}
88+
KUEHLBETRIEB: !include { file: templates/wp_binary.yaml, vars: { name: "KUEHLBETRIEB" }}
89+
MISCHER_AUF_HEIZKREIS_2: !include { file: templates/wp_binary.yaml, vars: { name: "MISCHER_AUF_HEIZKREIS_2" }}
90+
MISCHER_ZU_HEIZKREIS_2: !include { file: templates/wp_binary.yaml, vars: { name: "MISCHER_ZU_HEIZKREIS_2" }}
91+
NHZ_1: !include { file: templates/wp_binary.yaml, vars: { name: "NHZ_1" }}
92+
NHZ_2: !include { file: templates/wp_binary.yaml, vars: { name: "NHZ_2" }}
93+
NHZ_3: !include { file: templates/wp_binary.yaml, vars: { name: "NHZ_3" }}
94+
EVU_SPERRE: !include { file: templates/wp_binary.yaml, vars: { name: "EVU_SPERRE" }}
95+
6096
# DHW (Warmwasser) energy counters — models without integrated DHW (e.g. WPE-I) omit these
6197
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" }}
6298
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_KWH" , property: "EL_ENERGIEAUFNAHME_WW_SUM_MWH" , unit: "kWh", accuracy_decimals: "0", scaler: "1000", icon: "mdi:flash", target: "Heizmodul", state_class: "total_increasing" }}

yaml/wpl17.yaml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,29 @@ esphome:
77
platformio_options:
88
build_flags:
99
- "-DWPL_17"
10+
on_boot:
11+
- priority: -50
12+
then:
13+
- lambda: |-
14+
CallbackHandler::instance().addCallback(std::make_pair(CanNode::Manager,Property::kBETRIEBS_STATUS),[](const SimpleVariant& value){
15+
const std::bitset<12U> status_bits{static_cast<std::uint16_t>(value)};
16+
id(HEIZKREISPUMPE_1).publish_state(status_bits.test(0U));
17+
id(HEIZKREISPUMPE_2).publish_state(status_bits.test(1U));
18+
id(PUFFERLADEPUMPE_1).publish_state(status_bits.test(2U));
19+
id(QUELLENPUMPE).publish_state(status_bits.test(3U));
20+
id(STOERAUSGANG).publish_state(status_bits.test(4U));
21+
id(KUEHLBETRIEB).publish_state(status_bits.test(5U));
22+
id(MISCHER_AUF_HEIZKREIS_2).publish_state(status_bits.test(6U));
23+
id(MISCHER_ZU_HEIZKREIS_2).publish_state(status_bits.test(7U));
24+
id(NHZ_1).publish_state(status_bits.test(8U));
25+
id(NHZ_2).publish_state(status_bits.test(9U));
26+
id(NHZ_3).publish_state(status_bits.test(10U));
27+
id(EVU_SPERRE).publish_state(status_bits.test(11U));
28+
});
29+
- priority: -100
30+
then:
31+
- lambda: |-
32+
queueRequest(CanNode::Manager, Property::kBETRIEBS_STATUS);
1033
1134
#########################################
1235
# #
@@ -26,6 +49,20 @@ globals:
2649
packages:
2750
wpl_base: !include { file: wpl_base.yaml }
2851

52+
# Manager BETRIEBS_STATUS binaries (word not served on all models, e.g. WPE-I)
53+
HEIZKREISPUMPE_1: !include { file: templates/wp_binary.yaml, vars: { name: "HEIZKREISPUMPE_1" }}
54+
HEIZKREISPUMPE_2: !include { file: templates/wp_binary.yaml, vars: { name: "HEIZKREISPUMPE_2" }}
55+
PUFFERLADEPUMPE_1: !include { file: templates/wp_binary.yaml, vars: { name: "PUFFERLADEPUMPE_1" }}
56+
QUELLENPUMPE: !include { file: templates/wp_binary.yaml, vars: { name: "QUELLENPUMPE" }}
57+
STOERAUSGANG: !include { file: templates/wp_binary.yaml, vars: { name: "STOERAUSGANG" }}
58+
KUEHLBETRIEB: !include { file: templates/wp_binary.yaml, vars: { name: "KUEHLBETRIEB" }}
59+
MISCHER_AUF_HEIZKREIS_2: !include { file: templates/wp_binary.yaml, vars: { name: "MISCHER_AUF_HEIZKREIS_2" }}
60+
MISCHER_ZU_HEIZKREIS_2: !include { file: templates/wp_binary.yaml, vars: { name: "MISCHER_ZU_HEIZKREIS_2" }}
61+
NHZ_1: !include { file: templates/wp_binary.yaml, vars: { name: "NHZ_1" }}
62+
NHZ_2: !include { file: templates/wp_binary.yaml, vars: { name: "NHZ_2" }}
63+
NHZ_3: !include { file: templates/wp_binary.yaml, vars: { name: "NHZ_3" }}
64+
EVU_SPERRE: !include { file: templates/wp_binary.yaml, vars: { name: "EVU_SPERRE" }}
65+
2966
WP_WASSERVOLUMENSTROM: !include { file: templates/wp_generic.yaml, vars: { property: "WP_WASSERVOLUMENSTROM", unit: "l/min", icon: "mdi:water", accuracy_decimals: "1", target: "Heizmodul" }}
3067
FET_ECO: !include { file: templates/wp_generic.yaml, vars: { property: "FET_ECO", target: "HK1" }}
3168
LUEFTERLEISTUNG_REL: !include { file: templates/wp_generic.yaml, vars: { property: "LUEFTERLEISTUNG_REL", unit: "%", icon: "mdi:fan", target: "Heizmodul" }}

yaml/wpl23.yaml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,29 @@ esphome:
77
platformio_options:
88
build_flags:
99
- "-DWPL_23"
10+
on_boot:
11+
- priority: -50
12+
then:
13+
- lambda: |-
14+
CallbackHandler::instance().addCallback(std::make_pair(CanNode::Manager,Property::kBETRIEBS_STATUS),[](const SimpleVariant& value){
15+
const std::bitset<12U> status_bits{static_cast<std::uint16_t>(value)};
16+
id(HEIZKREISPUMPE_1).publish_state(status_bits.test(0U));
17+
id(HEIZKREISPUMPE_2).publish_state(status_bits.test(1U));
18+
id(PUFFERLADEPUMPE_1).publish_state(status_bits.test(2U));
19+
id(QUELLENPUMPE).publish_state(status_bits.test(3U));
20+
id(STOERAUSGANG).publish_state(status_bits.test(4U));
21+
id(KUEHLBETRIEB).publish_state(status_bits.test(5U));
22+
id(MISCHER_AUF_HEIZKREIS_2).publish_state(status_bits.test(6U));
23+
id(MISCHER_ZU_HEIZKREIS_2).publish_state(status_bits.test(7U));
24+
id(NHZ_1).publish_state(status_bits.test(8U));
25+
id(NHZ_2).publish_state(status_bits.test(9U));
26+
id(NHZ_3).publish_state(status_bits.test(10U));
27+
id(EVU_SPERRE).publish_state(status_bits.test(11U));
28+
});
29+
- priority: -100
30+
then:
31+
- lambda: |-
32+
queueRequest(CanNode::Manager, Property::kBETRIEBS_STATUS);
1033
1134
#########################################
1235
# #
@@ -26,6 +49,20 @@ globals:
2649
packages:
2750
wpl_base: !include { file: wpl_base.yaml }
2851

52+
# Manager BETRIEBS_STATUS binaries (word not served on all models, e.g. WPE-I)
53+
HEIZKREISPUMPE_1: !include { file: templates/wp_binary.yaml, vars: { name: "HEIZKREISPUMPE_1" }}
54+
HEIZKREISPUMPE_2: !include { file: templates/wp_binary.yaml, vars: { name: "HEIZKREISPUMPE_2" }}
55+
PUFFERLADEPUMPE_1: !include { file: templates/wp_binary.yaml, vars: { name: "PUFFERLADEPUMPE_1" }}
56+
QUELLENPUMPE: !include { file: templates/wp_binary.yaml, vars: { name: "QUELLENPUMPE" }}
57+
STOERAUSGANG: !include { file: templates/wp_binary.yaml, vars: { name: "STOERAUSGANG" }}
58+
KUEHLBETRIEB: !include { file: templates/wp_binary.yaml, vars: { name: "KUEHLBETRIEB" }}
59+
MISCHER_AUF_HEIZKREIS_2: !include { file: templates/wp_binary.yaml, vars: { name: "MISCHER_AUF_HEIZKREIS_2" }}
60+
MISCHER_ZU_HEIZKREIS_2: !include { file: templates/wp_binary.yaml, vars: { name: "MISCHER_ZU_HEIZKREIS_2" }}
61+
NHZ_1: !include { file: templates/wp_binary.yaml, vars: { name: "NHZ_1" }}
62+
NHZ_2: !include { file: templates/wp_binary.yaml, vars: { name: "NHZ_2" }}
63+
NHZ_3: !include { file: templates/wp_binary.yaml, vars: { name: "NHZ_3" }}
64+
EVU_SPERRE: !include { file: templates/wp_binary.yaml, vars: { name: "EVU_SPERRE" }}
65+
2966
ZWISCHENEINSPRITZUNGSTEMP: !include { file: templates/wp_temperature.yaml, vars: { property: "ZWISCHENEINSPRITZUNGSTEMP", target: "Heizmodul" }}
3067
REKUPERATORTEMPERATUR: !include { file: templates/wp_temperature.yaml, vars: { property: "REKUPERATORTEMPERATUR", target: "Heizmodul" }}
3168

yaml/wpl_base.yaml

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -15,36 +15,6 @@ canbus:
1515
- id: !extend wp_can
1616
bit_rate: $can_bus_bit_rate
1717

18-
#########################################
19-
# #
20-
# ESPHome Base Setup #
21-
# #
22-
#########################################
23-
esphome:
24-
on_boot:
25-
- priority: -50
26-
then:
27-
- lambda: |-
28-
CallbackHandler::instance().addCallback(std::make_pair(CanNode::Manager,Property::kBETRIEBS_STATUS),[](const SimpleVariant& value){
29-
const std::bitset<12U> status_bits{static_cast<std::uint16_t>(value)};
30-
id(HEIZKREISPUMPE_1).publish_state(status_bits.test(0U));
31-
id(HEIZKREISPUMPE_2).publish_state(status_bits.test(1U));
32-
id(PUFFERLADEPUMPE_1).publish_state(status_bits.test(2U));
33-
id(QUELLENPUMPE).publish_state(status_bits.test(3U));
34-
id(STOERAUSGANG).publish_state(status_bits.test(4U));
35-
id(KUEHLBETRIEB).publish_state(status_bits.test(5U));
36-
id(MISCHER_AUF_HEIZKREIS_2).publish_state(status_bits.test(6U));
37-
id(MISCHER_ZU_HEIZKREIS_2).publish_state(status_bits.test(7U));
38-
id(NHZ_1).publish_state(status_bits.test(8U));
39-
id(NHZ_2).publish_state(status_bits.test(9U));
40-
id(NHZ_3).publish_state(status_bits.test(10U));
41-
id(EVU_SPERRE).publish_state(status_bits.test(11U));
42-
});
43-
- priority: -100
44-
then:
45-
- lambda: |-
46-
queueRequest(CanNode::Manager, Property::kBETRIEBS_STATUS);
47-
4818
#########################################
4919
# #
5020
# Packages #
@@ -54,19 +24,6 @@ packages:
5424
CORE: !include { file: core.yaml }
5525
MANAGER: !include { file: templates/wp_can_id.yaml, vars: { can_node: "Manager" , can_id: "0x480" }}
5626

57-
HEIZKREISPUMPE_1: !include { file: templates/wp_binary.yaml, vars: { name: "HEIZKREISPUMPE_1" }}
58-
HEIZKREISPUMPE_2: !include { file: templates/wp_binary.yaml, vars: { name: "HEIZKREISPUMPE_2" }}
59-
PUFFERLADEPUMPE_1: !include { file: templates/wp_binary.yaml, vars: { name: "PUFFERLADEPUMPE_1" }}
60-
QUELLENPUMPE: !include { file: templates/wp_binary.yaml, vars: { name: "QUELLENPUMPE" }}
61-
STOERAUSGANG: !include { file: templates/wp_binary.yaml, vars: { name: "STOERAUSGANG" }}
62-
KUEHLBETRIEB: !include { file: templates/wp_binary.yaml, vars: { name: "KUEHLBETRIEB" }}
63-
MISCHER_AUF_HEIZKREIS_2: !include { file: templates/wp_binary.yaml, vars: { name: "MISCHER_AUF_HEIZKREIS_2" }}
64-
MISCHER_ZU_HEIZKREIS_2: !include { file: templates/wp_binary.yaml, vars: { name: "MISCHER_ZU_HEIZKREIS_2" }}
65-
NHZ_1: !include { file: templates/wp_binary.yaml, vars: { name: "NHZ_1" }}
66-
NHZ_2: !include { file: templates/wp_binary.yaml, vars: { name: "NHZ_2" }}
67-
NHZ_3: !include { file: templates/wp_binary.yaml, vars: { name: "NHZ_3" }}
68-
EVU_SPERRE: !include { file: templates/wp_binary.yaml, vars: { name: "EVU_SPERRE" }}
69-
7027
ISTTEMPERATUR_HK1: !include { file: templates/wp_temperature.yaml, vars: { property: "ISTTEMPERATUR" , name_suffix: "_HK1" , target: "HK1" }}
7128
SOLLTEMPERATUR_HK1: !include { file: templates/wp_temperature.yaml, vars: { property: "SOLLTEMPERATUR" , name_suffix: "_HK1" , target: "HK1" }}
7229
KOMFORTTEMPERATUR_HK1: !include { file: templates/wp_temperature.yaml, vars: { property: "KOMFORTTEMPERATUR" , name_suffix: "_HK1" , target: "HK1" }}

0 commit comments

Comments
 (0)