explaingit

splattner/oekoboiler-uart-reverse-engineering

Analysis updated 2026-05-18

5PythonAudience · developerComplexity · 4/5Setup · hard

TLDR

A detailed writeup on reverse engineering a water heater's internal wiring to build a cloud-free ESPHome sensor for temperature, mode, and solar boost.

Mindmap

mindmap
  root((oekoboiler reverse eng))
    What it does
      Reads internal UART bus
      Extracts temperature and mode
      Unlocks hidden solar feature
    Tech stack
      Python
      ESPHome
      ESP32
    Use cases
      Local water heater sensor
      Home Assistant integration
      Protocol reverse engineering
    Audience
      Electronics hobbyists
      Home automation enthusiasts

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Build a local, cloud-free Home Assistant sensor for an Okoboiler water heater

USE CASE 2

Learn how to reverse engineer an unfamiliar single-wire UART protocol on an appliance

USE CASE 3

Unlock a hidden solar boost feature on the cheaper model of the same water heater

What is it built with?

PythonESPHomeESP32Home Assistant

How does it compare?

splattner/oekoboiler-uart-reverse-engineering1ncendium/aibusteraaronmayeux/ha-hurricane-tracker
Stars555
LanguagePythonPythonPython
Setup difficultyhardmoderateeasy
Complexity4/53/52/5
Audiencedeveloperops devopsgeneral

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1day+

Requires soldering into the appliance's internal bus and an ESP32 running ESPHome.

The README does not state a license, so usage rights are unclear.

In plain English

This repository documents how the author reverse engineered the internal wiring of an older Okoboiler heat pump water heater that had no built in smart features at all. Inside the appliance, a display panel and a main control board talk to each other over a single serial wire, and the author tapped into that wire with a cheap ESP32 microcontroller to listen in on the conversation between the two boards. By capturing and studying the raw data on that wire, the author figured out the format of the messages being sent, including how they are scrambled and checksummed, and used that to pull out three useful pieces of information: the exact water tank temperature, the current operating mode such as heating or defrosting, and whether solar boost mode is active. Notably, the water temperature turned out to be more precise than what the front panel display shows. One interesting side discovery is that a solar boost feature advertised only on a pricier version of the same water heater is actually built into the firmware of the cheaper model too, just missing the physical trigger. The author enabled that hidden setting and wired in a small relay controlled by a solar monitoring system, effectively unlocking the feature. The end result feeds into ESPHome, a tool for building custom smart home sensors, so the extracted readings can show up in Home Assistant as ordinary sensors, without needing any cloud service or manufacturer app. This project is aimed at electronics hobbyists and home automation enthusiasts who are comfortable with soldering, reading protocol data, and working with ESPHome or Home Assistant. It documents the reverse engineering process in detail, which also makes it a useful reference for anyone reverse engineering a similar single wire serial bus on other appliances.

Copy-paste prompts

Prompt 1
Explain how the XOR mask and CRC checksum used on this UART bus work
Prompt 2
Help me adapt this ESPHome sensor setup to a different appliance's serial bus
Prompt 3
Walk me through wiring an ESP32 to sniff a single-wire UART bus safely
Prompt 4
Summarize how the water temperature byte was decoded from the raw frames

Frequently asked questions

What is oekoboiler-uart-reverse-engineering?

A detailed writeup on reverse engineering a water heater's internal wiring to build a cloud-free ESPHome sensor for temperature, mode, and solar boost.

What language is oekoboiler-uart-reverse-engineering written in?

Mainly Python. The stack also includes Python, ESPHome, ESP32.

What license does oekoboiler-uart-reverse-engineering use?

The README does not state a license, so usage rights are unclear.

How hard is oekoboiler-uart-reverse-engineering to set up?

Setup difficulty is rated hard, with roughly 1day+ to a first successful run.

Who is oekoboiler-uart-reverse-engineering for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.