Intergas Xtend heat pump in Home Assistant – fully local with ESPHome (66+ sensors, no cloud)

I wanted all the data from my Intergas Xtend hybrid heat pump in Home Assistant, locally and without the cloud. The Xtend has no ethernet, only its own WiFi access point with a local API. A single ESP32 can’t sit on that network and on your home network at the same time, so I built a small bridge with two stacked ESP32 boards running ESPHome.

GitHub repo: GitHub - sanderlv/esphome-xtend-wifi-wifi · GitHub

How it works

  • ESP-1 (Xtend side) connects to the Xtend’s own WiFi access point, polls its local API every 10 seconds and forwards the JSON to ESP-2 over UART.
  • ESP-2 (home side) connects to your home WiFi, parses the data and publishes everything to Home Assistant through the native ESPHome API.

The boards are stacked on pin headers (one female row, one male row). Only one board needs power, the other is fed through the 5V pin. I use two Lolin S3 Mini boards.


Wiring

ESP-1 ESP-2 Purpose
GPIO16 (TX) GPIO16 (RX) Xtend data, ESP-1 → ESP-2
GPIO18 (RX) GPIO18 (TX) Commands, ESP-2 → ESP-1 (maintenance / restart)
GND GND
5V 5V Power one board, the other is fed through this pin

Best is to make a female soldered connector on the bottom of ESP-2 and a male on the top of ESP-1 and slide them into each other.

What you get in Home Assistant

66+ entities, including:

  • Power & energy: heat pump power, COP, total thermal power, boiler power, energy used/generated (daily and total), daily COP
  • Temperatures: CH flow, return and supply (heat pump and boiler), outside, room, setpoints
  • Refrigeration circuit: suction/discharge pressure, suction and exhaust gas temperature, condenser temperatures, subcooling, superheat, EEV position, compressor frequency, fan speed, coil temperature
  • Status & counters: operating mode, silent mode, 4-way valve, defrost cycles, compressor starts, runtime, error/lockout/notification codes
  • Boiler: modulation level, flame state, starts, flame loss, CH and DHW runtime, CH water pressure

The energy sensors work with the Home Assistant Energy dashboard.

Nice extras

  • OTA for ESP-1: ESP-1 lives on the Xtend’s network, so normal OTA can’t reach it. Press Xtend Poller Maintenance Mode in Home Assistant and ESP-1 joins your home WiFi for 10 minutes so you can flash it from the ESPHome dashboard. Any reboot sends it back to the Xtend WiFi. (The very first flash has to be done over USB.)
  • Diagnostics: Xtend Data OK goes off when no data arrived for 60 s, and the numeric sensors then go to unknown instead of freezing at their last value. There are also sensors for API reachability, the UART link and ESP-1’s WiFi signal, uptime and IP, plus a remote restart button for ESP-1.

Setup

  1. Flash esp-1.yaml over USB. Set xtend_ssid / xtend_password (your Xtend’s WiFi) and home_ssid / home_password (home WiFi, only used for OTA).
  2. Flash esp-2.yaml. Set your home WiFi and add Fallback_Hotspot to secrets.yaml.
  3. Give ESP-1 a DHCP reservation and set it as use_address so the ESPHome dashboard can find it in maintenance mode.
  4. Adopt ESP-2 in Home Assistant.

Note: ESP-1 deliberately has no api:. It can never reach Home Assistant, and with api: but no client ESPHome reboots it every 15 minutes.

Credits

See on Github

Feedback, issues and pull requests are welcome on GitHub!

(NL: Intergas Xtend hybride warmtepomp lokaal uitlezen in Home Assistant met ESPHome.)