ESPHome Altherma - Monitor your Daikin Altherma 3 heat pump via X10A

Hello :waving_hand:

Sharing my ESPHome custom component for monitoring Daikin Altherma 3 heat pumps via the X10A connector. Inspired by ESPAltherma, but built as a native ESPHome component, so it integrates directly with Home Assistant.

Github: github.com/jjohnsen/esphome-altherma
Web install: jjohnsen.github.io/esphome-altherma

Features

  • Browser-based installation flash directly from your browser via ESP Web Tools
  • Temperature monitoring outdoor air, discharge pipe, heat exchanger, leaving water, inlet water, DHW tank, etc
  • Electrical sensors inverter current, voltage
  • Operational data compressor frequency, fan speeds, flow rate, water pressure, pump signal
  • Binary sensors defrost status, thermostat ON/OFF, silent mode, freeze protection, 3-way valve, BUH steps
  • Diagnostics operation mode, error codes and sub-codes
  • Multiple board support ESP32, ESP32-S3, M5Stack AtomS3 Lite
  • Model-specific configs modular YAML files per heat pump model
  • Mock UART mode for development/testing without hardware

Supported Hardware

Any ESP32 board with an UART, tested with:

  • Generic ESP32 DevKit
  • ESP32-S3 DevKit
  • M5Stack AtomS3 Lite
  • Old M5Stack

Wiring is just 4 wires to the X10A connector (5V, TX, RX, GND). No soldering required if using Dupont connectors.

Screenshots

Currently Supported Models

  • ERGA-D EHV/EHB/EHVZ DA series (04-08kW)
  • Community-contributed EHVX configs

Happy to answer any questions!

1 Like

Quick follow-up, even though my original post did not generate much discussion :wink:

The project has moved forward quite a bit, and ESPHome Altherma is now in active use by multiple users across more Daikin models and several ESP32 board variants.

Version 1.1.0 is out, and it adds:

  1. Experimental Register Discovery
    You can now use the Home Assistant action query_register to test registers directly and discover model-specific data points.

  2. Emoncms guide and Home Assistant blueprint
    I published a full setup guide for long-term monitoring with MyHeatpump dashboards:
    https://jjohnsen.no/2026/esphome-altherma-emoncms-setup-guide/.

Previous releases also added OTA updates and better stability by replacing the blocking UART polling loop with a non-blocking state machine. In practice, this makes the component more robust under load, especially in setups with extra sensors or less stable UART timing.

The MyHeatpump app gives you a practical way to track your heat pump’s performance over time, including COP, heat output, electricity use, and temperature trends.


ESPHome Altherma running on M5Stack Basic.


ESPHome Altherma + Emoncms and My Heatpump App

Still happy to answer any questions :wink:

1 Like

Small maintenance update: v1.1.1 is now available.

This release contains:

  • Fix for the flow rate sensor unit/name formatting after ESPHome started warning about / in entity names.
  • ESPHome version bump from 2026.4.3 to 2026.5.3 .

If Home Assistant shows a statistics repair warning for the flow sensor, choose update the unit of the historic statistic values . The numeric values are unchanged, so there should be no need to delete history.

Release:

2 Likes

Great project! Was very easy to setup, and really nice to have it in ESPHome with all my other ESPs. I’m wondering though how to interpret some values, and how I can add them in the Energy dashboard for example. I see a voltage sensor and two Inverter currents. Can I combine these to generate a power sensor for example?

Edit: I now see your EmonCMS Setup Guide which has all the fields explained and how I could create some templates in HA, thanks!

Edit 2: The voltage reading from the inverter seems to be incorrect though. When the inverter was running, it started out at 50V, and ended at 290V, which is of course impossible for something connected to 230V. It seems this Voltage represents some other metric? I have an ERGA EHBX08EA6V and use the default erga_eh_da_04_08.yaml config as that seems to match best. But I guess I would need to investigate other configs?

Hey Stefan, glad the setup went smoothly and that the EmonCMS guide filled in the gaps!

On the voltage reading, that pattern (starting around 50V and climbing to ~290V while the inverter is running) is a strong signal that this register isn’t the incoming 230V mains voltage, but might be the inverter’s DC bus voltage.

Here is a graph from my voltage for comparison(ERGA 08DAV3 / EHVH08S23DA6V):

Could you open an issue on the GitHub repo with this? Include your phase setup (single/three-phase) in the issue as well, since that could be part of what’s throwing the value off.

If you’re up for it you could allso use the query_register action to probe a few nearby registers and see if one of them reports a more sensible ~230V.

Hi, does anyone have this working with a Daikin Altherma 3 GEO unit (ground-source/brine-to-water), specifically model EGSAX10DA9W2? I don’t see GEO models in the confirmed-working list (ERGA/EHV/EHB/ERLQ series), only air-source ones.

My understanding is the GEO indoor hydraulic module may share the same controller PCB as the air-source Altherma 3 hydroboxes, just paired with a brine loop instead of an outdoor unit — so the X10A port and protocol might be identical. Has anyone confirmed this either way, or tried it and gotten garbage/no data? Want to know before I open up the unit and wire in an ESP32.

I had a look at this, and it actually looks quite promising.

ESPAltherma, which this project is based from, has a dedicated definition for the Altherma 3 GEO series (EGSAH-X / EGSAX-D 6-10kW), and I also found someone using ESPAltherma with an EGSAX10DA9W, so the same family as your EGSAX10DA9W2.

I compared the GEO definition with the default definition currently used in esphome-altherma.

Most of the indoor-side registers (0x60-0x62) are basically identical. The main differences are on the refrigeration/source side, where some of the same registers represent things like entering/leaving brine temperature and brine pump feedback instead of outdoor-unit values.

So I would expect the X10A communication itself to work. The current esphome-altherma default config would probably give you quite a lot of valid data already, but a few sensors would be incorrectly labelled and some GEO-specific values would be missing.

The following should work out of the box:
Based on the register comparison, these should work correctly out of the box with your current default config on the GEO3 unit:

  • Outdoor air temperature
  • Discharge pipe temperature
  • INV primary current
  • INV secondary current
  • INV frequency
  • DHW setpoint
  • Leaving water setpoint
  • Leaving water temp before BUH
  • Leaving water temp after BUH
  • Refrigerant liquid-side temperature
  • Inlet water temperature
  • DHW tank temperature
  • Indoor ambient temperature
  • Flow sensor
  • Water pressure
  • Water pump signal
  • Defrost operation
  • Thermostat ON/OFF
  • Freeze protection
  • Silent mode
  • 3-way valve DHW/space
  • BSH
  • BUH Step 1
  • BUH Step 2
  • Powerful DHW operation
  • Indoor unit operation mode
  • Error code
  • Error detailed code
  • Error type

I haven’t added a GEO config yet simply because nobody has confirmed one against esphome-altherma so far.

If you are willing to test it, I can add a GEO3 configuration based on the ESPAltherma definition. That would also let us add the EGSAX10DA9W2 to the confirmed-working list if everything looks

Small update: ESPHome Altherma v1.3.0 is now available :tada:

This release adds:

  • Support for EPRA D/D7 14–18 kW systems with ETV16 / ETB16 / ETVZ16
  • Improved M5Stack Core / Basic UI with Dark/Light mode, better fonts and switch control
  • Updated to ESPHome 2026.9.1
  • Updated documentation and support for additional boards/models

Thanks to everyone who has tested, reported issues and contributed mappings and improvements!

GitHub / release: