Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Community post] Show your ESPAltherma! #17

Open
raomin opened this issue Jan 21, 2021 · 235 comments
Open

[Community post] Show your ESPAltherma! #17

raomin opened this issue Jan 21, 2021 · 235 comments

Comments

@raomin
Copy link
Owner

raomin commented Jan 21, 2021

ESPAltherma Community post!

ESPAltherma is used all over the world! well... mostly in Europe... mainly in Germany ;)
Let's show each other what we did with ESPAltherma!
This will be nice to see, and will helpnew users can see what can be done with it!

Please post in this issue a small description of your installation with ESPAltherma.

PLEASE DO NOT USE THIS PAGE TO REPORT ISSUE
If you have a real problem with your ESPAltherma, please open a new issue.

Each post should contain the following information:

Model and option

  • Daikin / ROTEX model
  • ESP32 board type
  • if you use the relay or not, the Daikin LAN controller, a custom device on P1P2 etc...

View of your PCB / ESP32

just copy a picture and paste it

Monitoring / control

just copy a picture and paste it

  • Describe the solution components (Home Assistant, ioBroker, Graphana etc.)

Any other info

  • specific hacks, tips/tricks, future project etc.
  • location, contact information (optional)
  • ...
@raomin
Copy link
Owner Author

raomin commented Jan 21, 2021

Model and option

  • Daikin Altherma 3 EAVX-D6V + EPGA016DV. Underfloor heating + cooling (maybe) + DHW
  • M5StickC
  • Relay as external thermostat

PCB / ESP32

image

Monitoring & Control

image

  • Home Assistant
  • Home made MQTT ESP thermometer (DS18b20) to feed the climate entity

Any other info

  • First user of ESPAltherma :)
  • Future plans: integrate energy limiting modes to ESPAltherma to better leverage peak/off-peak hours (could be used for smart grid also), read about other optimizations - eg avoiding defrost.
  • FR, raomin [at] protonmail.com

@KalaNagHTD
Copy link

KalaNagHTD commented Jan 22, 2021

Model and option

  • Rotex HPSU Ultra = Daikin Altherma ECH2O = R(E)HSX08(06)P50(30)D2 + R(E)RGA08(06)DAV3
    („R“ = Rotex, „E“ = Daikin, „08“ or „06“ = rated power, „50“ or „30“ = DHW capacity x 10)
  • M5StickC
  • pyHPSU and CAN for the valve positions and water pressure only (not available on X10A)

PCB / ESP32

IMG_6635
Position of X10A service connector on the PCB

Zwischenablage01
Power supply by USB charger (not final)

Monitoring and control

5852E577-6B5B-4925-9791-C6A30BFC4173

  • I use ioBroker to collect and display the data
  • Each value shown here is a table widget in ioBroker Vis

With support from the ioBroker community I have built a script that derives data objects from the JSON string. With these objects I can do calculations such as thermal power, electrical power and COP.
https://forum.iobroker.net/topic/41289/gelöst-json-tabelle-in-datenobjekte-auflösen-javascript/9

@raomin
Copy link
Owner Author

raomin commented Jan 23, 2021

Good idea! We have indeed everything we need for the COP.
I've just added it to mine.
image

Do you confirm the formula?

  ((state_attr('sensor.altherma','Flow sensor (l/min)')| float * 0.06 * 1.16 * (state_attr('sensor.altherma','Leaving water temp. after BUH (R2T)') | float - state_attr('sensor.altherma','Inlet water temp.(R4T)')|float) )
    /
  (state_attr('sensor.altherma','INV primary current (A)') | float * 250 / 1000))

I'll add it to the readme.

@KalaNagHTD
Copy link

KalaNagHTD commented Jan 23, 2021 via email

@misko903
Copy link

Guys, this is awesome. I hope I will get so far one day... Mine want to be OpenHAB with Meteostick. Waiting for the parts now.

@stosoorok
Copy link

stosoorok commented Jan 25, 2021

My ESPAltherma setup: ESP32-WROOM-32D, Daikin EHBX08DA9W (ALTHERMA(LT_DA_04-08KW).h),

Home Assistant OS on Proxmox:

image

Lovelace Daikin page:

image

Daikin X10A connection:

image

ESP32-WROOM-32D:

image

@KalaNagHTD
Copy link

KalaNagHTD commented Jan 26, 2021

Fine!
I see with a Daikin I/U (not HPSU / ECH2O) you can get the water pressure.

@pengemetal
Copy link

All fine except you should use the „Leaving water temp. before BUH(R1T)“. So you can monitor the COP while heating DHW too. And: The Voltage 250V is a bit high! Best is you take the „Voltage (N-phase) (V)“ for calculation (about 230V).

Am 23.01.2021 um 17:45 schrieb Raomin @.***>:  Good idea! We have indeed everything we need for the COP. I've just added it to mine. Do you confirm the formula? ((state_attr('sensor.altherma','Flow sensor (l/min)')| float * 0.06 * 1.16 * (state_attr('sensor.altherma','Leaving water temp. after BUH (R2T)') | float - state_attr('sensor.altherma','Inlet water temp.(R4T)')|float) ) / (state_attr('sensor.altherma','INV primary current (A)') | float * 250 / 1000)) I'll add it to the readme. — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

Hi,

My „Voltage (N-phase) (V)“ is always 0.00000 I dont know why? I rewrite the COP sensor fix 228 value but sensor is still unavailable, log said: TemplateError('ZeroDivisionError: float division by zero') while processing template 'Template("{{ ((state_attr('sensor.althermasensors','Flow sensor (l/min)')| float * 0.06 * 1.16 * (state_attr('sensor.althermasensors','Leaving water temp. before BUH (R1T)') | float - state_attr('sensor.althermasensors','Inlet water temp.(R4T)')|float) ) / (state_attr('sensor.altherma','INV primary current (A)') | float * 228 / 1000)) |round(2) }}")' for attribute '_state' in entity 'sensor.espaltherma_cop'
One more question: how do you calculate "Elektr. - und Thermische Leistung"? Thx in advance

@raomin
Copy link
Owner Author

raomin commented Jan 27, 2021

My „Voltage (N-phase) (V)“ is always 0.00000 I dont know why?

First, my sensor is called sensor.altherma. Yours is probably sensor.althermasensor.

You changed most of them but the 'INV primary current (A)' one is still sensor.altherma in your formula.

If it's not this, there are 2 possible definitions for „Voltage (N-phase) (V)“ 0x21,2,101,2 and 0x21,4,101,2. You can try with the one you are not using now.

Second, 'INV primary current (A)' is 0 when the heat pump is not heating. To avoid ZeroDivisionError when the heat pump is off you can extend the formula like this:

{% if is_state_attr('sensor.althermasensors','Operation Mode', 'Heating') and is_state_attr('sensor.althermasensors','Freeze Protection', 'OFF')  %} 
{{ 
  ((state_attr('sensor.althermasensors','Flow sensor (l/min)')| float * 0.06 * 1.16 * (state_attr('sensor.althermasensors','Leaving water temp. before BUH (R1T)') | float - state_attr('sensor.althermasensors','Inlet water temp.(R4T)')|float) )
    /
  (state_attr('sensor.althermasensors','INV primary current (A)') | float * state_attr('sensor.althermasensors','Voltage (N-phase) (V)')|float / 1000))
  |round(2)
}}
{% else %} 0 {%endif%}

Like this, the formula will be calculated only when state_attr('sensor.althermasensors','Operation Mode') is Heating

One more question: how do you calculate "Elektr. - und Thermische Leistung"? Thx in advance

I'm not sure what you are after but Google translated it as electric and thermal performance.
This is the ratio done in the formula.
Thermal performance is the Delta temperature x flow (l/min x 0.06 is m3/h) x thermal capacity of water which is 1.16

--
If this project has value for you, please consider supporting it. I don't do this for money but it feels good to get some support! Thanks :)

@m-reuter
Copy link
Contributor

Hi @pengemetal
(I used the german names, but you can lookup the english easily in the files):

      espaltherma_electrial:
        friendly_name: "Electrical"
        value_template: "{{ state_attr('sensor.althermasensors','INV Primärstrom (A)')  | float * 0.23 }}"
        unit_of_measurement: 'kW'
      espaltherma_rl:
        friendly_name: "Rücklauf Temp"
        value_template: "{{ state_attr('sensor.althermasensors','R4T-Wasser Rücklauftemp. vor dem Plattenwärmetauscher') }}"
        unit_of_measurement: '°C'
      espaltherma_vl1:
        friendly_name: "Vorlauf Temp1"
        value_template: "{{ state_attr('sensor.althermasensors','Auslass Wasser Wärmetauscher Temp. (R1T)') }}"
        unit_of_measurement: '°C'
      espaltherma_durchfluss:
        friendly_name: "Durchfluss"
        value_template: "{{ state_attr('sensor.althermasensors','Durchflussmenge (l/min)') | int * 60 }}"
        unit_of_measurement: 'l/h'
      espaltherma_wl:
        friendly_name: "Wärmeleistung"
        value_template: "{{ ( states('sensor.espaltherma_vl1') | float - states('sensor.espaltherma_rl') | float ) * 0.001163 * states('sensor.espaltherma_durchfluss')  | float}}"
        unit_of_measurement: 'kW'
      espaltherma_cop:
        friendly_name: "COP"
        value_template: "{{ (  ( states('sensor.espaltherma_wl') | float *  states('sensor.espaltherma_invstrom') | float ) / ( states('sensor.espaltherma_invstrom') | float  * states('sensor.espaltherma_invstrom') | float + 0.0001 ) ) | round(2) }}"

COP is just: thermal / electrical
here I did a trick to multiply both numerator and denominator by electrical and add an epsilon to the denominator to avoid division by zero. And to have zero COP if electrical usage is 0.

@stosoorok
Copy link

Yesterday I saw COP -19.43 :) Something fishy about the formula?

image

@pengemetal
Copy link

{% if is_state_attr('sensor.althermasensors','Operation Mode', 'Heating') and is_state_attr('sensor.althermasensors','Freeze Protection', 'OFF')  %} 
{{ 
  ((state_attr('sensor.althermasensors','Flow sensor (l/min)')| float * 0.06 * 1.16 * (state_attr('sensor.althermasensors','Leaving water temp. before BUH (R1T)') | float - state_attr('sensor.althermasensors','Inlet water temp.(R4T)')|float) )
    /
  (state_attr('sensor.althermasensors','INV primary current (A)') | float * state_attr('sensor.althermasensors','Voltage (N-phase) (V)')|float / 1000))
  |round(2)
}}
{% else %} 0 {%endif%}

Hi Guys,

Thank you for all of your help. I changed Voltage to 0x21,2,101,2 and it is working! But it is interesting values are between 110-117 V. I have not rewritten the if parameter yet, I used the original code.

@KalaNagHTD
Copy link

KalaNagHTD commented Jan 27, 2021

I changed Voltage to 0x21,2,101,2 and it is working! But it is interesting values are between 110-117 V.

It depends on the country you live!?

@raomin
Copy link
Owner Author

raomin commented Jan 27, 2021

Yesterday I saw COP -19.43 :) Something fishy about the formula?

You'll have this negative value when your heat pump is defrosting. It warms up the exchanger, hence giving a very negative heating performance...!

@pengemetal
Copy link

I live in Hungary, 220V thats why it is interesting :) (I wrote 2 * in the code)

@raomin
Copy link
Owner Author

raomin commented Jan 27, 2021

Thank you for all of your help. I changed Voltage to 0x21,2,101,2 and it is working! But it is interesting values are between 110-117 V. I have not rewritten the if parameter yet, I used the original code.

If this value is changing overtime it's probably not the right register, you are looking at the INV secondary current (A) value which is generally at 0x21,2.

In your case (like in every other except one), Voltage (N-phase) (V) should be in 0x21,4,101,2. Now if you have 0 maybe you have no or broken sensor (what is your model?). Anyway, if your electricity is of decent quality, it should be fairly stable and you can replace it in the formula as you did.

--
If this project has value for you, please consider supporting it. I don't do this for money but it feels good to get some support! Thanks :)

@pengemetal
Copy link

ERLQ011CV3 outdoor EHBX11CB3V indoor

@TingBrouwer
Copy link

Model and option
Daikin 08AV3 + 08CV3 (heating/cooling)

board type: M5StickC ESP32 PICO
no use off the relay function

image

image

Monitoring / control
(for now NodeRed and InfluxDB, later Grafana)

image

Describe the solution components (Home Assistant, ioBroker, Graphana etc.)
-Roomtemp. data sending to Domoticz, which also controls the 2e input off the unit. (seperate relay)

Any other info
-before used websocket

location, contact information (optional)
-Netherlands (middle)

Request: the option for a fixed IP address

@raomin
Copy link
Owner Author

raomin commented Jan 31, 2021

Nice work @TingBrouwer. Impressive nodered graph...!
You seem to have an M5StickC-Plus, @m-reuter added a platformio environment for it. Once selected the screen should work properly and use the whole resolution.
Also glad to see ESPAltherma reached Netherlands!

@rtenklooster
Copy link

rtenklooster commented Feb 5, 2021

Hi, first of all, thanx for your great effort! So far it's working great.
However is someone willing to share their HA configuration?
I can't get it to work. The MQTT autodiscovery isn't picking the data up. Tried to add the sensor manual using:
- platform: mqtt state_topic: espaltherma/ATTR name: espaltherma
However the attributes aren't listed. When listening to the topic in HA manual I see all data.

Request: The option to force a reboot using MQTT. Today ESPAltherma lost the serial connection, the log showed timeouts. I disconnected / reconnected the ESP and it came back online :)

@raomin
Copy link
Owner Author

raomin commented Feb 5, 2021

Hi @rtenklooster,

Welcome in the community!

For HA, do not declare manually, it's better to get mqtt discovery to work :)
Make sure you have it activated in your configuration.yaml with this line somewhere:

discovery:

And check HA logs, it should tell about the discovery module discovering ESPAltherma.

The disconnection is a weird behaviour. I doubt that restarting the ESP would have been enough...
You can try with an OTA update, this shall reboot the ESP remotely.

--
If this project has value for you, please consider supporting it. I don't do this for money but it feels good to get some support! Thanks :)

@eldi0s
Copy link

eldi0s commented Feb 22, 2021

First of all GREAT work raomin. Thank you very much.

I'm using Home Assistant Core and love to be in full control of my software by not using hassio ;-)

For those of you also not wanting any autodiscovery messing up your structured HA config here is how you configure the
sensors manually. As state_topic I gave it the LWT state (Online/Offline) for the main sensor which is
holding all selected values as attributes. For me this was the only reasonable value I wanted to show in
the headline. But feel free to change with a value template to whatever attribute you want to show.

Sensor showing LWT state as state_topic:

sensor:
  - platform: mqtt
    name: "althermasensors"
    state_topic: "espaltherma/LWT"
    json_attributes_topic: "espaltherma/ATTR"

Sensor showing whatever attribute you want as state_topic with value_template.

sensor:
  - platform: mqtt
    name: "althermasensors"
    state_topic: "espaltherma/ATTR"
    value_template: "{{ value_json.whatever_you_want_to_show }}"
    json_attributes_topic: "espaltherma/ATTR"

Oh, very important, if you want to extract single attributes for graphs etc. most of them are
containing spaces or if you use the German definition file "Umlaute", you have to remove
the "." after "value_json" and use ['name with spaces or Umlaute'] instead.

like this:

value_template: "{{ value_json['name with spaces or Umlaute'] }}"

Live Example:

sensor:
  - platform: mqtt
    name: "WP WT Mitteltemperatur"
    state_topic: "espaltherma/ATTR"
    value_template: "{{ value_json['Wärmetauscher Mitteltemp.'] }}"
    unit_of_measurement: °C

I don't use the relay function as I combined ESPAltherma with a Zennio Klic_DA to control the unit via KNX, but
it must be similar to this: (untested)

switch:
  - platform: mqtt
    name: "altherma"
    state_topic: "espaltherma/STATE"
    command_topic: "espaltherma/POWER"
    availability_topic: "espaltherma/LWT"
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"

@eldi0s
Copy link

eldi0s commented Feb 25, 2021

I also forgot to mention that I'm using the below listed board and had to lower Baudrate to I think 115200 or even lower (don't remember correctly) to get a connection established and having the board accepting the firmware upload.

AZDelivery ESP32 NodeMCU Module WLAN WiFi Dev Kit C Development Board mit CP2102

@FlexxFR
Copy link

FlexxFR commented Mar 2, 2021

Again, great work @raomin !!
With some help I managed to get it working.
I have a Altherma EHVX11S18CB3V and using a az-delivery-devkit-v4 / WROOM32D ESP32

Connected all 5 pins with dupont wire
image

Used several wires to extend and to place ESP outside the case
image

Temporary connection, need to fix it somewhere.
I'm using an external power source because it was not working directly connected to the X10A port.
So I only connected the TX/RX and the ground wire.
image

No fancy lovelace dashboards yet :)

@qris
Copy link

qris commented Mar 21, 2021

I haven't installed ESPAltherma on a board. However I have an EHBH08CB3V heat pump, and I'm working on a project to create a Python library and monitoring tools for this and other Daikin heat pumps. I started to painstakingly reverse-engineer the locations and types of variables in the serial port messages, but then discovered that you have already decoded them all, amazing!

So I wrote some Python code to parse the ESPAltherma C definition files and output Python code. I also plan to distribute some of those definition files, unmodified (attribution intact), as part of that project, as permitted by the MIT License.

So, many many thanks for your massive reverse-engineering effort @raomin, which will save me many hours of work!

@raomin
Copy link
Owner Author

raomin commented Mar 21, 2021

Hi @qris, nice to see my work on this project can help others :)
Good luck with your project! Let me know if you are missing some information!

@qris
Copy link

qris commented Mar 22, 2021

@raomin thank you! The one thing that would be nice to have, but definitely not essential, is the variable number given to each variable in D-Checker. You can see them in the column headings of the D-Checker CSV export. For example, O/U MPU ID (xx) is number 19.

I have been using these numbers as array indexes, and because the ESPAltherma definitions don't have them, I've had to create a synthetic ID from the definition files instead (page.offset.convid).

I don't mean to ask you to do any significant work, but if you had these variable numbers available and simply didn't put them into the header file because espaltherma doesn't need them, then I would find them useful, thank you :)

@thehijacker
Copy link

No way. It works :). I have EHVH08S26C9W. Connected one of my spare ESP32 to the serial port and I am getting readings. First thing I done is to buy you a beer. Well deserved!

I ordered M5StickC ESP32 and will replace it with that one and put inside the unit. Currently I put dupont connector to serial pins and extended it with UTP cable outside the unit where I put my ESP32.

Got some additional questions on how to proceed if you cen help me:

  • How to figure out what readings my unit can report and what are they? I am interested in power usage (in W), current outside temperature, current set temperature, temperature of in and out water that goes into my floor, etc...
  • I wish to separate readings for floor heating pump (turned off in summer) and for sanitary water (always on). Which reading is which? I am not native English speaker and all this fancy variables are confusing :).
  • How to get that fancy display in HA? That graphic diagram with readings. That looks so cool.

Thank you for support and this great project. Never knew I have all parts already at home that will allow me to read from my Daikin.

@mmmichl
Copy link
Contributor

mmmichl commented Jun 25, 2023

@raomin Don't worry, I wasn't as clear as I could be. Here my now working prototype (with optocouplers decouple and level adaption). I took the oc idea from Daikin's interface adapter. ESP8266 Altherma

@THK56
Nice board, can you please share a diagram and a parts list? I too would like to use optocouplers to control the smart-grid features (later also the impulse counter). But when it comes to hardware I am a bloody beginner.

@THK56
Copy link

THK56 commented Jun 26, 2023

@mmmichl
Does this help?
20210429 Altherma Interface.pdf
IMG_6262

@mmmichl
Copy link
Contributor

mmmichl commented Jun 26, 2023

@THK56 Thank you very much for the fast reply, it actually helped a ton! It was not exactly what I was hoping for, but it helped me to undo a knot :)

@bugac
Copy link

bugac commented Jun 29, 2023

Hi everyone!

Great job raomin! Thank you very much. I've found Espaltherma by chance looking at forum thread "Heat pumps" from polish forum "Murator"

My daikin pump: indoor EHVH08S23EJ9W, outdoor ERGA06EAV3, 2021, Czech Republic plant I'm using ESP32 wroom, with def/ALTHERMA(LT_CA_CB_04-08KW) file, no relay. At beginning I tried to use esp8266 NodeMCU v3 (which I had at home) but without success.

Some photos: P20919-084433 P20919-083149 P20919-084133

I'm a bit old fasioned so I'm sending data from mqtt to domoticz using node red, all running on cheap orangepi zero 2.

node

PC=Heat Pump, CWU=DHW

PC

PC2

I couldn't only retrieve Voltage (on both registers: 0 or strange value) so I'm using 235V as average voltage to calculate COP.

Regards, Grzegorz

hi, thank you, i'm on exactly same heat pump. But also cant find how to retrieve grid volt (V) parameter from daikin. Maybe now you found answer to this question?

@mikevchq
Copy link

mikevchq commented Sep 24, 2023

Model and option
Daikin EBLQ016CA3V3 Monobloc
Definition: ALTHERMA(MONOBLOC_CA_05-07KW)

ESP32 board type
M5StickC no relay yet but in the plans to be added

View of your PCB / ESP32

image

image

image

image

Monitoring / Control

image

Home Assistant with MQTT

Cannot read the Voltage value
COP is calculated using the power consumption reading from a Shelly device
Next is to figure out how to connect the relay to control the ON/OFF. There is already an external thermostat connected if I understand correct

Many thanks raomin! Regards from Greece!

@seb-koch
Copy link

seb-koch commented Oct 9, 2023

Hi @pengemetal (I used the german names, but you can lookup the english easily in the files):

      espaltherma_electrial:
        friendly_name: "Electrical"
        value_template: "{{ state_attr('sensor.althermasensors','INV Primärstrom (A)')  | float * 0.23 }}"
        unit_of_measurement: 'kW'
      espaltherma_rl:
        friendly_name: "Rücklauf Temp"
        value_template: "{{ state_attr('sensor.althermasensors','R4T-Wasser Rücklauftemp. vor dem Plattenwärmetauscher') }}"
        unit_of_measurement: '°C'
      espaltherma_vl1:
        friendly_name: "Vorlauf Temp1"
        value_template: "{{ state_attr('sensor.althermasensors','Auslass Wasser Wärmetauscher Temp. (R1T)') }}"
        unit_of_measurement: '°C'
      espaltherma_durchfluss:
        friendly_name: "Durchfluss"
        value_template: "{{ state_attr('sensor.althermasensors','Durchflussmenge (l/min)') | int * 60 }}"
        unit_of_measurement: 'l/h'
      espaltherma_wl:
        friendly_name: "Wärmeleistung"
        value_template: "{{ ( states('sensor.espaltherma_vl1') | float - states('sensor.espaltherma_rl') | float ) * 0.001163 * states('sensor.espaltherma_durchfluss')  | float}}"
        unit_of_measurement: 'kW'
      espaltherma_cop:
        friendly_name: "COP"
        value_template: "{{ (  ( states('sensor.espaltherma_wl') | float *  states('sensor.espaltherma_invstrom') | float ) / ( states('sensor.espaltherma_invstrom') | float  * states('sensor.espaltherma_invstrom') | float + 0.0001 ) ) | round(2) }}"

COP is just: thermal / electrical here I did a trick to multiply both numerator and denominator by electrical and add an epsilon to the denominator to avoid division by zero. And to have zero COP if electrical usage is 0.

Dear @m-reuter
I am a HA config noob and struggle to structure my config to represent the individual attributes as entities. I got everything working and I do use the german layout too.
I'd be grateful if you could post all the relevant ESPaltherma config brackets - that would help here on my end.
Thanks in advance and kind regards from Landsberg am Lech :-)

@nicx
Copy link

nicx commented Oct 17, 2023

  • I use ioBroker to collect and display the data
  • Each value shown here is a table widget in ioBroker Vis

With support from the ioBroker community I have built a script that derives data objects from the JSON string. With these objects I can do calculations such as thermal power, electrical power and COP.

@KalaNagHTD how do you calculate the "WW-Bereitungen", "Abtauprozesse" and "Verdichter Starts"?

@KalaNagHTD
Copy link

KalaNagHTD commented Oct 25, 2023

@KalaNagHTD how do you calculate the "WW-Bereitungen", "Abtauprozesse" and "Verdichter Starts"?

„WW-Bereitungen“ and „Abtauprozesse“ can be calculated by counting the DHW and Defrost events indicated by ESPAltherma. „Verdichter Starts“ can be calculated by counting the events where the compressor frequency changes from zero to any positive value.

@nicx
Copy link

nicx commented Oct 26, 2023

@KalaNagHTD thanks, but where is the DHW event indicated? Which attribute of ESPaltherma do you use?

@mx-vatte
Copy link

You could use 0x10,0,217,1 Operation Mode --> "Heating + DHW" or 0x60,12,306,1 3way valve(On:DHW_Off:Space) --> "ON".

@xalex75
Copy link

xalex75 commented Oct 26, 2023

Hi.
I've not been around since few months, next weekend I'll update my Esp32.
Did someone find a fix/workaround to be able to read 0x62 & 0x63 registries on Compact models?

@DieterB61
Copy link

DieterB61 commented Oct 28, 2023

Hi all,

first I want to thank all contributors to this project, above all @raomin for ESPAltherma and @javimurcia for X85A support.

My heat pump is a Daikin EHBH08E9W (8kWh, LT) with a Daikin ERGA08EVA outdoor unit. This units don't have modbus.

I started my ESPAltherma heat pump "upgrade" with an ESP-32 development board but changed after half a year to a 4-relay-board to control energy levels using X85A port. The relay-board was delivered with an ESP-12F instead of an ordered ESP-32. Nevertheless I got it working and now I can read all important values of my heat pump and can limit the power consumption of the heat pump to 4 predefined levels (using the appropriate SG feature).

The on/off switching of the heat pump and the control of two zone valves for two independent heating circuits (2 floors) are done by room thermostats and a Siemens Logo with additional wifi switches to overrule the thermostats if necessary (e.g. to automatically switch the heat pump on when there is solar power available). The heating is mainly done by radiators (yes it works well, if radiators are large enough!), there is only one underfloor heating in a bathroom.

The main functions of the overall system (heat pump, hot water from solar thermal energy or heat pump, photovoltaics, etc.) are controlled by hardware but wider possibilities can be controlled by my ioBroker smarthome system.

But now some pictures:
mainboard
This is the main pcb with my relay-board at bottom right.

relais
The relay-board which is connected to X10A for ESPAltherma and to X85A for energy control.

connector
X10A (green) and X85A (red) connectors.

2023-10-28 16 24 56
ioBroker visualisation and control of my heating system.

@DieterB61
Copy link

DieterB61 commented Oct 28, 2023

Bye the way: X85A connector and X10A connector were ordered by Conrad. You get single peaces there:

X85A (wrong picture):
https://www.conrad.at/de/p/jst-buchsengehaeuse-kabel-polzahl-gesamt-6-rastermass-2-mm-pap-06v-s-1-st-1426228.html

Pins for X85A:
https://www.conrad.at/de/p/jst-crimpkontakt-polzahl-gesamt-1-rastermass-2-mm-spa-001t-p0-5-1-st-1426284.html

X10A:
https://www.conrad.at/de/p/jst-buchsengehaeuse-kabel-eh-polzahl-gesamt-5-ehr-5-1-st-1217310.html

Pins for X10A:
https://www.conrad.at/de/p/jst-crimpkontakt-eh-beh-001t-p0-6-1-st-1217316.html

Order enough pins, crimping the contacts is a nightmare.

@xalex75
Copy link

xalex75 commented Oct 30, 2023

Hi.
Yesterday I finally installed the additiona ouside temperature sensor and I activated it instead of the one included in the external unit.

The default one was "Outdoor air temp." and in espaltherma it reported the same temp shown on the display.
For the external one, I used "Outdoor Ambient or Ext Sensor", but I read very strange values.
I activated external sensor reading on the PDC and display shows the correct value.

For example yesterday morning "Outdoor air temp." was 15°C (correct), while "Outdoor Ambient or Ext Sensor" was 9°C (they are near at the moment). On the PDC display I configured to use the external sensor, and value on display is aligned (few decimal of difference) with the internal, the wrong reading comes only from espaltherma.
In the evening "Outdoor Ambient or Ext Sensor" was showing something around 22°C, while "Outdoor air temp." was around 13°C (correct). External value read on display was correct again.

Is someone using the external sensor?
Is the espaltherma sensor I used the correct one?

@irecord
Copy link

irecord commented Oct 30, 2023

Is someone using the external sensor? Is the espaltherma sensor I used the correct one?

I'm using the external sensor too, I tried loads of values to see if they came out correctly, but couldn't find one, I gave up.

@xalex75
Copy link

xalex75 commented Oct 30, 2023

Is someone using the external sensor? Is the espaltherma sensor I used the correct one?

I'm using the external sensor too, I tried loads of values to see if they came out correctly, but couldn't find one, I gave up.

Thanks for your feedback, so I'll not invest more time in this.
For my automations the internal is enough, the external will be used directly from the PDC.

@habitoti
Copy link

Hi. Yesterday I finally installed the additiona ouside temperature sensor and I activated it instead of the one included in the external unit.

Are you using the original (read: expensive) Daikin sensor, or are there 3rd party devices that can be used also?
While the standard outdoor sensor is not too far off generally, it is for some strange reason that I don't understand placed right over the intake cooling fins. When the fan starts blowing, temperature instantly drops by 2-3 degrees (when humidity on sensor housing starts to evaporate...). Accordingly, outdoor temp and LW temperatures computed from that are showing a pretty "wobbly" characteristics. I switched on 12h averaging for outdoor temp. reading, but it doesn't seem to do much (if any) to that...

@xalex75
Copy link

xalex75 commented Oct 30, 2023

I installed it because of that, reading were influenced by fan activity.
I bought the original OT1 (for HPSU Compact).
I found it "second-hand" from a guy that bought the wrong model for his unit, and sold it to me for 30€.

@THK56
Copy link

THK56 commented Oct 30, 2023

I'm using the external sensor. It works fine. I had to configure it in the parameters (in my case [0C-08] = 1 before getting correct values. The sensor itself is a thermistor: the higher the measured temperature the lower its electrical resistance (see table). Therefor you can use any type that correspond with that curve.
Bildschirmfoto 2023-10-30 um 18 47 08

@xalex75
Copy link

xalex75 commented Oct 31, 2023

Sorry, I didn't understand.
The sensor is working fine on the unit, after enabling external sensor.
The problem is reading its value in espaltherma, it doesn't correspond to the value read on the display.

@THK56
Copy link

THK56 commented Oct 31, 2023

Sorry. Wrong thread, open an issue to get help.

@sanderpleijers
Copy link

I have good results with an ASTRA br4g8al (you can buy on Aliexpress)


And a logic level shifter inserted in the cable;

It has 4 relays, so SG functions are there ;)

Two important modifications in the config (setup.h):

#define RX_PIN    13// Pin connected to the TX pin of X10A 
#define TX_PIN    14// Pin connected to the RX pin of X10A

And in platformio.ini:

[env:esp32doit-devkit-v1]
platform = espressif32
board = esp32doit-devkit-v1
framework = arduino
monitor_speed = 115200
upload_speed = 115200
; Uncomment this line to allow for remote upgrade. If name resolution does not work for you, replace with the IP of ESPAltherma
upload_port = 192.168.1.112
; upload_port = ESPAltherma.local
; Uncomment this line if you want to define the protocol. Autodetected otherwise.
; upload_protocol = espota
lib_deps =
	PubSubClient
upload_protocol = espota

Converting to ESPAltherma is simple;

  1. Connect to wifi with the allready installed 'Tasmota' firmware
  2. Build your version of ESPAltherma, upload the .bin to the Tasmota update page.
  3. Done. Further updating can be done via espota

@raomin
Copy link
Owner Author

raomin commented Jan 17, 2024

@sanderpleijers That's looks like a very nice device and a perfect candidate for EspAltherma indeed!

@bashers222
Copy link

Sorry, I didn't understand. The sensor is working fine on the unit, after enabling external sensor. The problem is reading its value in espaltherma, it doesn't correspond to the value read on the display.

Ive raised this as #390 as i also just get a reading of 128 on this register

@stefo8
Copy link

stefo8 commented Mar 4, 2024

@nosfaratu

Model and option

Daikin ERWQ02AAV3 + EKHHP300AC2V3 WROOM DEVKIT esp32 Beelink U59, Unraid + VM HomeAssistant

Hi, I have the same model as you,
Please which model did you choose?
because there is no ERWQ model,
I tried with other ERGA, ERLA ...
but it doesn't work. Thank you!!

@vdiogo
Copy link

vdiogo commented Mar 22, 2024

Daikin Altherma EDHQ16BB6W1 with 8 pin

Used M5Sticks Plus 2 powered by the 5v pin of the 8 pin connector
image

Used the EPGA D EAB-EAV-EAVZ D(J) series 11-16kW include as it seemed the closest to mine (according to Gemini at least)

My HA attributes are as follow (didn't knew for sure which ones were available, so used common sense to uncomment the ones I felt could be supported. Seems will need to exclude some:
image

My final setup looks like this:
image

Now off to create some templates and buy a coffee to our lead mentor @raomin

@joonasvaabel
Copy link

Daikin Altherma EHVX08S26CB (2nd Generation, installed 2015)

I have bunch of Wemos D1 (ESP8266 chip) boards lying around. I uploaded the software with ALTHERMA(LT_CA_CB_04-08KW).h
Connected the DuPont cables and started to collect data without any problem.

I initially checked with MQTT Explorer that data started to flow, then I had some fiddling with HA since automatically sensor Entity ID became "sensor.none_althermasensors".

Probably need to uncomment some more parameters to get correct COP value

image

@my-SmarthomeGmx
Copy link

Thanks a lot to Raomin for the work on EspAltherma. It runs for me quite nicely together with HomeAssistant for an Altherma 3 H HT.
Here some pictures on the setup. I am using it with a "dual relay" to control the 2 SmartGrid contacts.

As I was not happy with the dupont pins on the connector pins, here a ready to use Adapter cable which fits on the Daikin Connector (JST EH) and with dupont connectors for the M5Stick.
https://www.taja-elektronik.de/Adapterkabel-JST-EH-auf-Dupont-5-polig-50-cm-AWG-24

In addition I am using the dual realy from M5Stack which can be easily connected to the M5Stick.
e.g. https://www.berrybase.de/m5stack-2-channel-spst-relay-unit?number=M5-U131&utm_source=google&utm_medium=cpc&gad_source=1&gclid=CjwKCAjw5v2wBhBrEiwAXDDoJd9-eSuCv5QNnYklMIIeZE3icKV3Vf3Ot8uZGSj7ygBgU2McsAOXTRoCtQcQAvD_BwE

20240415_105422

20240415_105508

@ledermann
Copy link

@my-SmarthomeGmx Are you sure that the link to taja-elektronik.de is correct? It seems to me that this adapter has female pins, but the M5Stick requires male pins.

I'm currently looking for the right cable to connect a Daikin Altherma 3 H MT ECH2O to a M5StickC Plus 2.

@my-SmarthomeGmx
Copy link

@my-SmarthomeGmx Are you sure that the link to taja-elektronik.de is correct? It seems to me that this adapter has female pins, but the M5Stick requires male pins.

I'm currently looking for the right cable to connect a Daikin Altherma 3 H MT ECH2O to a M5StickC Plus 2.

Yes, the adapter in the link has unfortunately only female dupont connectors on the m5Stick side. (I was not able to find one with a 5pin JST EH on one side and with male dupont pins on the other side. (If you do find, please paste a link). But it can anyway properly connected to the M5Stick using single male/male "Stift" connectors (similar to picture below). This is what I used . You just need to make sure that the stift connector pins are long on both sides to fit well in the dupont female connectors.
For me it was important to have a proper connector to the X10A.

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests