Configured my ESPHome with MCP2515 CAN-Bus for Stiebel Eltron heating pump

Hey everyone,
i have a Stibel Eltron WPL 24 and WPM Systems. I just like to emulate a FET for cooling but i dont get the code running. Maybe you have some inputs to me. Here is the LOG i get if connect the ESP to can.

check the discord there is more information about that topic and keep us up to date if you found a way to get it running :smiley:

where can i find the ā€œdiscordā€ :slight_smile: i am new in this forum :slight_smile:

Oh I thought there is a link in this thread:
Here: HA Heatpump Tecalor/Stiebel

Is this implemantion also capable of SG Ready? Or doing something similiar?

Yes. If the heat pump support sg ready over can directly you can controll it.
If not you can emulate the functionality like the ISG does. (Increase/decrease Temperaturvalues).

1 Like

Hello everybody.

We have a WPL17 ACS and I’m new at this content.
I really like what i’ve seen here and would like to integrate it on my dashboard if it’s possible.

At the moment i’ve some ESP8266 and the MCP2515 at home. I’ve NO ISG! Do i need an ISG???
Is this useful and if, how can i start? Is there anywhere an overview or something like this, to see, which yaml’s and the codes of them i need in which directory or something like that? Do i need other hardware?

If it’s helpful, i’m from germany and my german is much better than my english :sweat_smile:

where can i find the discord channel?

Were you able to solve the problem?

Have any of you run an evaluation with WPC X Cool?

Hi, can you share your code? Did you resolve missing data?

Did anyone find a way to get the cooling status?

I have most of the information i need the only exception is i’d like to see if the device is in cooling/summer mode…

Sommerbetrieb:

Kühlstatus:

Für THZ504

You sir, are a legend!

Is there a way to read the different can_id present on the bus ?
I don’t know what are the address I should use…

Great topic and loads of useful information here.

I have a THZ504 / FET / ISG (yes spent too much money here :wink: ) and reading the ISG MODBUS values to be used in HA. Now what I’m missing is the power consumption for cooling as I would like to see taht on my energy dashboard.

I hooked up an Shelly Pro 3EM so I can see in detail what the total use is per phase but that is not refined enough.

Did somebody found a way to see this on the CAN-Bus?

Also somebody able to provide a methode to turn the cooling on or off apart from tinkering with the temps? On the ISG you can turn on and off the cooling via the HK KÜHLBETRIEB (On/Off) but not in the MODBUS ISG?

answers on the above will help me to decide if I should start this project as well :slight_smile:

Hi @Xanatanos ,
I am having the same heatpump. Would it be possible to share your yaml config files. This will save me a lot of time. :slight_smile:
Thanks
Thomas

Hi again,
I got something working now. I have a WPF 10 Cool with WMPiw from 2010.

I tested all three repos mentioned.

I have a strange behaviour in all of the repos and I could not find an answer in the thread.

Values seem to be correct and are than randomly overwritten with other values that are far too high. Below are some CAN message. For example FEUCHTE is first of all ok with 42.0, than goes up to 100.8 and down again. VORLAUFSOLLTEMP goes from 27.2 (ok) to 81.6 (not ok).

|[12:16:40.120][I][processCanMessage():107]: 180:|VERDAMPFERTEMP:|18|(et_byte)|
|---|---|---|---|
|[12:16:40.139][I][processCanMessage():107]: 180:|UHRZEIT:|13:40|(et_zeit)|
|[12:16:40.347][I][processCanMessage():107]: 302:|KESSELSOLLTEMP:|3116.8|(et_dec_val)|
|[12:16:40.449][I][processCanMessage():107]: 302:|INDEX_NOT_FOUND:|3121|(et_default)|
|[12:16:40.484][I][processCanMessage():107]: 180:|KOLLEKTORTEMP:|-255|(et_dec_val)|
|[12:16:40.492][I][processCanMessage():107]: 180:|KOLLEKTORTEMP:|-255|(et_dec_val)|
|[12:16:40.583][I][processCanMessage():107]: 302:|FEUCHTE:|42.0|(et_dec_val)|
|[12:16:43.538][I][processCanMessage():107]: 302:|INITIALISIERUNG:|2051|(et_little_endian)|
|[12:16:43.546][I][processCanMessage():107]: 302:|INITIALISIERUNG:|1|(et_little_endian)|
|[12:16:43.589][I][processCanMessage():107]: 302:|INDEX_NOT_FOUND:|766|(et_default)|
|[12:16:44.579][I][processCanMessage():107]: 302:|VORLAUFSOLLTEMP:|27.2|(et_dec_val)|
|[12:16:44.937][I][processCanMessage():107]: 180:|BITSCHALTER:|0|(et_default)|
|[12:16:45.540][I][processCanMessage():107]: 302:|KESSELSOLLTEMP:|32.2|(et_dec_val)|
|[12:16:45.592][I][processCanMessage():107]: 302:|MISCHER_ZU:|2|(et_little_endian)|
|[12:16:45.644][I][processCanMessage():107]: 302:|HEIZKREIS_STATUS_PROGSTELL:|512|(et_default)|
|[12:16:47.562][I][processCanMessage():107]: 302:|MISCHER_ZU:|4102|(et_little_endian)|
|[12:16:47.568][I][processCanMessage():107]: 302:|MISCHER_ZU:|2|(et_little_endian)|
|[12:16:47.633][I][processCanMessage():107]: 302:|MAX_TEMP_HZK:|256.0|(et_dec_val)|
|[12:16:47.683][I][processCanMessage():107]: 302:|KP:|7680|(et_default)|
|[12:16:47.701][I][processCanMessage():107]: 302:|KP:|7680|(et_default)|
|[12:16:47.756][I][processCanMessage():107]: 302:|FEUCHTE:|100.8|(et_dec_val)|
|[12:16:47.762][I][processCanMessage():107]: 302:|FEUCHTE:|42.0|(et_dec_val)|
|[12:16:47.806][I][processCanMessage():107]: 302:|INDEX_NOT_FOUND:|0|(et_default)|
|[12:16:47.812][I][processCanMessage():107]: 302:|RAUMEINFLUSS:|0|(et_default)|
|[12:16:47.922][I][processCanMessage():107]: 302:|SPEICHERSOLLTEMP:|326.4|(et_dec_val)|
|[12:16:48.024][I][processCanMessage():107]: 302:|INDEX_NOT_FOUND:|-3328|(et_default)|
|[12:16:48.093][I][processCanMessage():107]: 302:|VORLAUFISTTEMP:|-3121.6|(et_dec_val)|
|[12:16:48.133][I][processCanMessage():107]: 302:|VORLAUFSOLLTEMP:|81.6|(et_dec_val)|
|[12:16:48.915][I][processCanMessage():107]: 180:|GERAETEKONFIGURATION:|-15704|(et_default)|
|[12:16:48.946][I][processCanMessage():107]: 180:|AUSSENTEMP:|836.2|(et_dec_val)|
|[12:16:48.962][I][processCanMessage():107]: 180:|RUECKLAUFISTTEMP:|28.2|(et_dec_val)|
|[12:16:48.987][I][processCanMessage():107]: 180:|FESTSTOFFKESSELTEMP:|97.8|(et_dec_val)|
|[12:16:48.999][I][processCanMessage():107]: 180:|SPEICHERISTTEMP:|458.5|(et_dec_val)|
|[12:16:49.017][I][processCanMessage():107]: 180:|TEILVORRANG_WW:|0|(et_default)|
|[12:16:49.036][I][processCanMessage():107]: 180:|MISCHER_AUF:|8|(et_little_endian)|
|[12:16:49.090][I][processCanMessage():107]: 180:|SCHALTFKT_IWS:|31070|(et_default)|
|[12:16:49.109][I][processCanMessage():107]: 180:|SPEICHERISTTEMP:|1281.8|(et_dec_val)|

Same is with other values and the apex graphs look something like this (example of AUSSENTEMP)

[19:22:44.793][D][CAN:250]: Can message received with CANId 0x0180
[19:22:44.809][I][Communication:217]: Message received: Read/Write ID 0x60 0x79(0x339) for property AUSSENTEMP (0x000c) with raw value: 177
[19:22:44.811][V][sensor:079]: 'AUSSENTEMP': Received new state 17.700001
[19:22:44.814][D][sensor:131]: 'AUSSENTEMP': Sending state 17.70000 °C with 1 decimals of accuracy
[19:22:44.829][D][canbus:076]: received can message (#3) std can_id=0x180 size=7
[19:22:44.830][V][canbus:084]:   can_message.data[0]=60
[19:22:44.831][V][canbus:084]:   can_message.data[1]=79
[19:22:44.837][V][canbus:084]:   can_message.data[2]=16
[19:22:44.849][V][canbus:084]:   can_message.data[3]=11
[19:22:44.854][V][canbus:084]:   can_message.data[4]=15
[19:22:44.856][V][canbus:084]:   can_message.data[5]=00
[19:22:44.875][V][canbus:084]:   can_message.data[6]=00
[19:22:55.829][D][CAN:250]: Can message received with CANId 0x0180
[19:22:55.836][I][Communication:217]: Message received: Read/Write ID 0x60 0x79(0x339) for property AUSSENTEMP (0x000c) with raw value: 177
[19:22:55.853][V][sensor:079]: 'AUSSENTEMP': Received new state 17.700001
[19:22:55.855][D][sensor:131]: 'AUSSENTEMP': Sending state 17.70000 °C with 1 decimals of accuracy
[19:22:55.856][D][canbus:076]: received can message (#3) std can_id=0x180 size=7
[19:22:55.858][V][canbus:084]:   can_message.data[0]=60
[19:22:55.862][V][canbus:084]:   can_message.data[1]=79
[19:22:55.871][V][canbus:084]:   can_message.data[2]=16
[19:22:55.873][V][canbus:084]:   can_message.data[3]=01
[19:22:55.875][V][canbus:084]:   can_message.data[4]=15
[19:22:55.877][V][canbus:084]:   can_message.data[1]=79
[19:22:55.945][I][Communication:217]: Message received: Read/Write ID 0x60 0x79(0x339) for property UNKNOWN (0x005e) with raw value: 4096
[19:22:55.964][VV][api.service:012]: send_message sensor_state_response: SensorStateResponse {
[19:22:55.964][VV][api.service:012]:   key: 1887103022
[19:22:55.964][VV][api.service:012]:   state: 17.7
[19:22:55.964][VV][api.service:012]:   missing_state: NO
[19:22:55.964][VV][api.service:012]:  }
[19:22:55.964][VV][api.service:012]: send_message sensor_state_response: SensorStateResponse {
[19:22:55.964][VV][api.service:012]:   key: 936222225
[19:22:55.964][VV][api.service:012]:   state: 27.7
[19:22:55.964][VV][api.service:012]:   missing_state: NO
[19:22:55.964][VV][api.service:012]:  }
[19:22:55.964][VV][api.service:012]: send_message sensor_state_response: SensorStateResponse {
[19:22:55.964][VV][api.service:012]:   key: 2214192880
[19:22:55.964][VV][api.service:012]:   state: 464.1
[19:22:55.964][VV][api.service:012]:   missing_state: NO
[19:22:55.964][VV][api.service:012]:  }
[19:23:39.821][D][CAN:250]: Can message received with CANId 0x0180
[19:23:39.834][I][Communication:217]: Message received: Read/Write ID 0x60 0x79(0x339) for property AUSSENTEMP (0x000c) with raw value: 8369
[19:23:39.842][V][sensor:079]: 'AUSSENTEMP': Received new state 836.900024
[19:23:39.854][D][canbus:076]: received can message (#3) std can_id=0x180 size=7
[19:23:39.856][V][canbus:084]:   can_message.data[0]=60
[19:23:39.857][V][canbus:084]:   can_message.data[1]=79
[19:23:39.861][V][canbus:084]:   can_message.data[2]=16
[19:23:39.870][V][canbus:084]:   can_message.data[1]=7b
[19:23:39.884][V][canbus:084]:   can_message.data[2]=1c
[19:23:39.884][D][canbus:076]: received can message (#5) std can_id=0x180 size=7
[19:23:39.893][V][canbus:084]:   can_message.data[1]=79
[19:23:39.893][V][canbus:084]:   can_message.data[2]=5e
[19:23:39.907][VV][api.service:012]: send_message sensor_state_response: SensorStateResponse {
[19:23:39.907][VV][api.service:012]:   key: 1887103022
[19:23:39.907][VV][api.service:012]:   state: 836.9
[19:23:39.907][VV][api.service:012]:   missing_state: NO
[19:23:39.907][VV][api.service:012]:  }
[19:23:39.913][VV][api.service:012]: send_message sensor_state_response: SensorStateResponse {
[19:23:39.913][VV][api.service:012]:   key: 936222225
[19:23:39.913][VV][api.service:012]:   state: 27.7
[19:23:39.913][VV][api.service:012]:   missing_state: NO
[19:23:39.913][VV][api.service:012]:  }
[19:23:39.963][VV][api.service:012]: send_message sensor_state_response: SensorStateResponse {
[19:23:39.963][VV][api.service:012]:   key: 1887103022
[19:23:39.963][VV][api.service:012]:   state: 836.9
[19:23:39.963][VV][api.service:012]:   missing_state: NO
[19:23:39.963][VV][api.service:012]:  }
[19:23:39.964][VV][api.service:012]: send_message sensor_state_response: SensorStateResponse {
[19:23:39.964][VV][api.service:012]:   key: 936222225
[19:23:39.964][VV][api.service:012]:   state: 27.7
[19:23:39.964][VV][api.service:012]:   missing_state: NO
[19:23:39.964][VV][api.service:012]:  }

I already thought about ā€œfilteringā€ too high values. But would be glad if someone can give me some hints.
Thanks and regards
Thomas

Hey there,

I use this Github Repo/Hardware: GitHub - jss-devops01/ESP32-C6_THZ-504 and just startet to intergrate my THZ504 in my HA, basicially it works like a charm, however, I have an issue with the remote-control-panel.

I tried to adapt/check some settings, but after a few clicks the panel got stuck/hangs and does nothing. The communication/settings via HA are working fine, as far as I see it.

I thaught it might be a wiring issues. According to the installation manual and the description here, the ESP32/SN65HVD230 has to be connected to the XD04 board on the CAN2 section to CAN-H and CAN-L. In my case, there was already a cable connected there ( I assume that’s the remote control panel in my hallway. So I used a 3-pin WAGO and just connected the ESP to the same port, see picture attached.
In generall this is working well as said, however the remote-panel seems to have issues. Can it be a problem with termination resistors? Do I need to add a resistor somewhere?

Thanks for any hints!

You can connect more than one device to same connector. Have this Too without any resistor.
Change the CAN id of the ESP32. If still reduce bus traffic from the ESP side.

How would I reduce Bus traffic?