Daikin Altherma heat pump monitoring

Hi Alex,
What definition file are you using?
I got an EHSX08P50BB and the default isn’t working for me (i can see the entities for the ESP32, but nothing from the heatpump)

Edit: got it working, default works well

Hi.
Honetly I can’t remember.
I tried many and they were not so different. On my machine a couple of registers are not readable, so I’m missing some information needed for COP calculation. But if you don’t get ANY data, probably the problem is not the definition chosed…

Hello, I am using the definition file: PROTOCOL_S_ROTEX.h

with these values

#include "labeldef.h"
//  This file is a definition file for Rotex heat pump, technically looking like protocol S, but not using the same mapping.
//  Confirmed working for Rotex RDLQ014AA6V3.

LabelDef labelDefs[] = {
    // 0x50 not supported by RDLQ014AA6V3
    {0x50, 0, 103, 2, -1, "HP Sensor(kgcm2)"},
    {0x50, 1, 103, 2, -1, "XXX"},
    {0x50, 2, 103, 2, -1, "LP Sensor(kgcm2)"},


    // 0x53 seems to be a collection of booleans
    {0x53, 0, 152, 2, -1, "EV (pls)"},
    {0x53, 0, 200, 1, -1, "Umwälzpumpe"},
    {0x53, 2, 164, 1, -1, "Outdoor Fan (Upper)(rps)"},
    {0x53, 3, 164, 1, -1, "Outdoor Fan (Lower)(rps)"},
    {0x53, 3, 200, 1, -1, "Externe Heizung"},
    {0x53, 4, 200, 1, -1, "INV Comp. Frequency(Hz)"},
    {0x53, 5, 200, 1, -1, "Vorrang für Brauchwasser"},
    {0x53, 5, 200, 1, -1, "Komp. Vorwärmen"},
    {0x53, 6, 200, 1, -1, "Brenner hemmen Solaris"},
    {0x53, 6, 200, 1, -1, "52C Output"},
    {0x53, 7, 200, 1, -1, "20S (4-way) Output"},
    {0x53, 8, 200, 1, -1, "20R (SV) Output"},
    {0x53, 10, 200, 1, -1, "Kurbelgehäuseheizung"},
    {0x53, 11, 200, 1, -1, "Ener-Cut Output"},

    // Testing stuff....
    {0x54, 0, 153, 2, -1, "Kühl. Temp. flüssige Seite"},
    {0x54, 0, 103, 2, -1, "Saugluft für den Innenbereich Temp.(C)"},
    {0x54, 2, 103, 2, -1, "Innenwärmetauscher Temp.(C)"},
    {0x54, 2, 153, 2, -1, "Rücklauftemperatur(C)"},
    {0x54, 4, 153, 2, -1, "Auslass Wassertemperatur"},
    {0x54, 4, 103, 2, -1, "Außenluft temp.(C)"},
    {0x54, 6, 153, 2, -1, "Vorlauftemperatur(C)"},
    {0x54, 6, 103, 2, -1, "Außenwärmetauscher temp.(C)"},
    {0x54, 8, 153, 2, -1, "Warmwasserbehälter Temp.(C)"},
    {0x54, 8, 109, 2, -1, "Auslassrohrtemperatur(C)"},
    {0x54, 10, 103, 2, -1, "Fin Temperatur(C)"},
    {0x54, 12, 312, 1, -1, "Delta-Tr(deg)"},
    {0x54, 12, 101, 1, -1,"Delta-Tr(deg)"},
    {0x54, 12, 101, 1, -1, "Wassererwärmungstemperatur(Grad)"},
    {0x54, 13, 151, 1, -1,"R/C Sollwert(C)"},
    
    // Byte 12 seems to be a 1 byte value, evolving during day in continuous way
    // 0x1b mid-day, 0x24 mid night -> some delta temp??
    
    {0x55, 0, 201, 1, -1, "Betriebsart"},
    {0x55, 1, 204, 1, -1, "Fehlercode"},
    {0x55, 2, 204, 1, -1, "Thermo Off Error"},
    {0x55, 3, 204, 1, -1, "Warning Code"},
    {0x55, 4, 204, 1, -1, "Caution Code"},

    // TODO: seems to reply on 0x56 as well, but not used by dchecker...
    {0x56, 0, 103, 2, -1, "????"},

// Testing stuff....

    {0x54, 1, 103, 2, -1, "Andrej1"},
    {0x54, 3, 153, 2, -1, "Andrej3"},
    {0x54, 7, 153, 2, -1, "Andrej7"},
    {0x54, 14, 153, 1, -1, "andrej14"},
    {0x54, 15, 153, 1, -1, "andrej15"},
    {0x54, 16, 153, 1, -1, "andrej16"},
    {0x54, 16, 151, 1, -1, "andrej17"},
    {0x54, 16, 109, 1, -1, "andrej18"},
    {0x54, 19, 153, 1, -1, "andrej19"},
    {0x54, 20, 153, 1, -1, "andrej20"},
    {0x54, 21, 153, 1, -1, "andrej21"},
    {0x54, 22, 153, 1, -1, "andrej22"},
    {0x55, 5, 151, 1, -1, "andrej55x5"},
    {0x55, 6, 204, 1, -1, "andrej55x6"},
    {0x55, 7, 204, 1, -1, "andrej55x7"},
    {0x55, 8, 204, 1, -1, "andrej55x8"},
    {0x55, 9, 204, 1, -1, "andrej55x9"},
    {0x56, 0, 103, 2, -1, "????"},
    {0x56, 1, 103, 2, -1, "????1"},
    {0x56, 2, 103, 2, -1, "????2"},
    {0x56, 3, 103, 2, -1, "????3"},
    {0x56, 4, 103, 2, -1, "????4"},
    {0x56, 5, 103, 2, -1, "????5"},
    {0x56, 6, 103, 2, -1, "????6"},
    {0x56, 7, 103, 2, -1, "????7"},
    {0x56, 8, 103, 2, -1, "????8"},


};

// Override protocol
#define PROTOCOL 'S'

Thanks a lot for the great work being done. Is anyone using the EKHBX016BA3v3?

In my case these ones change very fast but i still cant correlate and understand these parameters
{0x54, 1, 103, 2, -1, “Andrej1”},
{0x54, 3, 153, 2, -1, “Andrej3”},
{0x54, 7, 153, 2, -1, “Andrej7”},

Regards

1 Like

Thanks, i’ll try
I got that working with default.h, i am now just having problems with OTA (upload fails at random % with “Error 1”
Good WiFi (stick litterally 2m from the router and signal around -45dbm)

***Solved: a flashed again from the PC and the OTA started working again

dear all…
I have setup this project with an m5cstickplus to my altherma 3 and it works flawlessly, no problems whatsoever then reading values…
Now I am struggling with the COP piece…
I am including this section in the configuration.yaml

template:

  • sensor:
    • name: “COP”
      unique_id: “espaltherma_cop”
      unit_of_measurement: ‘COP’
      state: ((state_attr(‘sensor.althermasensors’,‘Caudalímetro (l/min)’)| float * 0.06 * 1.16 * (state_attr(‘sensor.althermasensors’,‘Temp. Impulsión después de BUH (R2T)’) | float - state_attr(‘sensor.althermasensors’,‘Temp. Retorno (R4T)’)|float) )/(state_attr(‘sensor.althermasensors’,‘Corriente primaria del INV (A)’) | float * 230 / 1000))|round(2))

I was having errors so I reduced the formula to something that HA was able to list as a sensor, but no clue if the avobe piece inside the yaml file makes any sense, maybe I should declare it somewhere else…
Thins is that COP sensor is being created, but the value for it is always “unknown”…I´ve replaced the attribute in english by the one in spanish that I am currently using and the voltage piece by a fixed value of 230 that is the average on my home…

Any hint if this piece above is being declared in the right place, and why the calculation always returns “unknown”

Many thanks!

Hi.
Did anyone had sucess with EspAltherma and this pump > EKHHP300A*2V3
?

I’m planning to try @morphos - have you done anything yet? I’m going to my summerhouse in a month and hope to have time to bring a prepared ESP with me. Are there any reasons why that model shouldn’t work?

Hi. I think it’s based on the older ROTEX model, with the S protocol. But the values that comes out are wrong. Here’s my mqtt dump:

espaltherma

LWT = Online

log = Done. Waiting 29822 ms…

▼OneATTR
Circulation pump = OFF
External heater? = OFF
Priority to domestic water = OFF
Burner inhibit from solaris = OFF
Refrig. Temp. liquid side(C) = 30.2188
Inlet water temp.(C) = 212.953
Outlet Water Temp.(C) = 212.953
D(C) = 212.953
DHW tank temp.(C) = 47.8281
F(C) = 0.00390625
Delta-Tr(deg) = 0

:arrow_forward:R (1 topic, 10 messages)
Operation Mode = Fan Only
Error Code = 0
Thermo Off Error = 0
Warning Code = 0
Caution Code = 0
??? = -69.5547
ATTR =

The temp values are not realistic, except for the DHW tank temp.(C)

Any tips?