Tiemme 4Heat Stove WiFi Controller

Tiemme technical manual in Italian for the NG21 board.

The smoke fan speed can be set by Volt or r.p.m. If you choose Volt, the display will show Vol, and if you select r.p.m, it will show r.p.m, the same as in 30025.

To find the water pump status and airflow data points on your stove and setup, see my post 181 from May 2023, which shows what I did to find them on my test. you also needs a dattalogger for instance Leoshusar dattalogger

1 Like

Hallo everybody, I have a normal esp32board (esp32dev)
I cannot have this project working. I don’t know if it is my board, the small ttl to rs232 module or the configuration. Dos somebody have the same espboard and can share the configuraion with me? Thanks

I accidentally found at first try that I can get it at J40016 where there are binary sensors from outputs. 0 is off, 1 is on. This is on KEPO stove. Might be also other positions of the J40016 mean some outputs.

  - id: water_pump_state   
    platform: fourheat
    name: Water pump
    datapoint: J40016
    parser: return data[data.size() - 8] == '1';

I wonder that my stove might not have an air flow meter, because there is no reading nowhere on the display unit. Thanks for the advice tho! :slight_smile:

Can you please post your Yaml File? Thanks

@ebagnoli
I don’t think there’s a universal yaml, but you have to customize it for your stove/board, and the datapoints you can use are those you can see on the display.

For instance, the Leoshusar datapoint has airflow, not rpm, while the Kellerman datapoint has rpm, not airflow.

Also, very important parameters like the set room temperature: on some boards it’s 20493 and on others it’s 21700, while on others the boiler target temperature is 20180 and on others it’s 20199

Edit

An example of the latter in Spanish

https://www.solarweb.net/forosolar/attachments/usuarios-biomasa/32487d1742399323-comunicacion-rs232-wifi-4heat-tiemme-sustitucion-esp-tiemme2.docx

1 Like

I couldn’t send you a PM, so I’m gonna reply here in English.

Pretty much everything is explained here. Also the fact that 4heat integration is a crap for 200€ and only useful to find the datapoints for specific stove.

About the devices, I use one ESP32 relayboard at the stove end, like this:


This switches the NO relay on and off. Also the uart of this is connected to this ttl->rs232 adapter:
and then to the RS232 port on the stove. This is the main controller itself.

The other part is my indoor thermostat on another ESP32 which uses AHT20 for temperature input, this toggles the other ESP32. I use HTTP GET requests for toggling the other ESP32 (so it works even without HA) and a simple thermostat configuration.

I used @catdogmaus yaml file, pretty much every datapoint is found here in this topic, except for the Pump status, which I luckily found myself.

Hi All,

I recently bought and installed a Teba TP30-F. Now I’m trying to get the stove connected to HomeAssistant using ESPHome. Some things are working, some aren’t. Not all the datapoints seem to match my stove. I Can anyone help me?

Attached is also a photo of the motherboard; I suspect it’s a Tiemme MB100.

This is a great manual and can be used to understand all the parameters on the board. Also NG01, MB250 and SY250 manuals can be used to understand things. But is there available the specific manual for the NG21 (non-AIR) version?

I have the MB100 manual and found some information there.
After reading this forum and another one about the 4Heat app, I discovered that the “power” is in register “B20816” instead of “B20364.”
Now I’m still looking for the correct data point for the water pressure sensor; “J30020” doesn’t work for me.

20119: remaining time for cleaning (hour)

20225: puffer target

Regards,
Franco

@kellerman

I don’t have the NG21 hydro manual, but if you like the wiring diagram,

I think the board most similar to the NG21 is the MB100 Hydro, which can use the remote control with a display, but the NB100 has two firmware versions: one for use with the radio control display and one without as Ng21.

MB100 Hydro Manual in edit 7 my post 229

To use the manual, you need the password. If you don’t have it, send the datapoint:

A20182000000000000

The board responds with

B2018200000000VXYZ

VXYZ is the password

Hello, good afternoon. I’m trying to integrate my Dielle hydrostove. After several attempts, I managed to add the integration.

Unfortunately, once installed, when I configure it, the following error appears in the log.

Registrador: homeassistant.config_entries
Fuente: config_entries.py:749
OcurriĂł por primera vez: 14:30:23 (1 ocurrencia)
Última vez registrado: 14:30:23

Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/config_entries.py”, line 749, in __async_setup_with_context
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/config/custom_components/4heat/init.py”, line 100, in async_setup_entry
hass.config_entries.async_forward_entry_setup(entry, “sensor”)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: ‘ConfigEntries’ object has no attribute ‘async_forward_entry_setup’. Did you mean: ‘async_forward_entry_setups’?

ÂżCan you help me?

I have homeasistatn 16
Supervisor 2025.08.3
Core 2025.8.3

I wanted to know the datapoints that work for my stove and setup. To solve this, made a procedure my post 186, final result is the Excel file.

The hardware is the same as for the esphome integration plus a datalogger.

The software is one I made using the Arduino IDE and dattalogger. For instance you can use leoshussar dattalogger (post 207) without the TTL-RS232 converter.

In your case, if you run the program first on Power 2 with the stove off, you’ll see a datapoint ending in 2 and the water pressure. If you run it again on Power 5, you’ll see a datapoint ending in 5 and another ending with the new water pressure value.

These are the datapoints you are looking for.

Hi all,
I’m connected to a Tiemme SY400 controller via RS-232 (RJ11) and I can read values from the stove and puffer successfully.

Transport/frame I’m using (serial 9600 8N1):
0x08 + <18-char ASCII CMD> + \r

Read commands that work

  • Generic RO read: I<DP>000000000000 → response J<DP>… (or B<DP>…)
    Examples I use:
    • Stove state: I30001000000000000
    • Error code: I30002000000000000
    • Internal stove temp: I30017000000000000
    • Buffer top/bottom: I30018000000000000, I30019000000000000
  • RW query (for RW datapoints): A<DP>000000000000 → response B<DP>…

What I observe when changing the stove target temperature from the stove’s front panel

When I set the target to 69°C on the display, these datapoints reflect the change (mirrors/slots; some are ×100):

DP 20128 = 69
DP 20384 = 6900
DP 20640 = 69
DP 20896 = 69
DP 21152 = 6900
DP 21408 = 6900
DP 21664 = 69
DP 21920 = 6900
DP 30128 = 69
DP 30384 = 6900
DP 50128 = 6900

(So there are multiple mirrors at +256 offsets and also a 50xxx bank that looks like value×100.)

What I tried for writing the target

  • Write format: B<DP><12-digit right-justified payload> (e.g., 69 → ...000000000069, 690 → ...000000000690, 6900 → ...000000006900)
  • I attempted writes on:
    • All the mirrors above (20128, 20384, 20640, 20896, 21152, 21408, 21664, 21920, 30128, 30384, and also 50128),
    • The usual candidates from community posts: 20180 and 20199,
  • I tested scales 1/10/100 (69 / 690 / 6900).
  • I confirm using A<DP>… right after the write, and I also watch all the mirrors for a few seconds.

Result:

  • On some mirrors (e.g. 20128) I do get an immediate ACK (A20128…69) after B20128…69, but the actual value quickly reverts to the previous target (73 in my case), and the mirrors remain at 73.
  • Writing 20180/20199 doesn’t seem to take effect either (also tried with and without doing a small C/E/G handshake).
  • I also tried J30255… (which I understand is clear error/ack, not a general unlock), and ensured the setpoint is within min/max range.

My questions

  1. Which exact DP and scale should be used on SY400 to set the stove target temperature via RS-232? Is it 20180 (scale 1) on this board, or another 20xxx/50xxx DP (e.g. 50128 with ×100)?
  2. Is there a required sequence (e.g. enter installer mode, specific “unlock” DP, or handshake) before a write to the setpoint sticks?
  3. Does the chrono/scheduler mode or certain operating phases (Ignition/Safety) prevent setpoint changes? From OFF/Standby I can change the target on the front panel; I’d expect the bus write to be allowed too.
  4. For min/max stove thermostat range, are B20005/B20006 the correct write DPs on SY400? (If yes, what are the definitive readback DPs for this board to verify after writing?)

If anyone has a confirmed write example for SY400 (the exact Bxxxxx… that persists and the corresponding Axxxxx… readback that shows the new value) I’d really appreciate it.
Thanks!

******** UPDATE *******
now I can read and write the stove setpoint and its min/max range reliably.

Data points (DP) that control setpoint & range

  • DP 20068 → minimum boiler setpoint (°C)
  • DP 20069 → maximum boiler setpoint (°C)
  • DP 20076 → target boiler setpoint (°C)
    command examples
    read
    TX: A20076000000000000
    RX: B20076…69 example

write
TX: B20076000000000069
RX: A20076000000000069

After updating esphome from 2025.5.0 to 2025.9.0 it no longer works and I can no longer see the sensors.

HELPME

Good morning, I wanted to share my misadventure with you. I have a boiler with an NG21 board. For the configuration, I used the catdogmaus yaml file and the hardware was a D1 Mini and an RS232-TTL converter. Once connected, everything worked right away, but only for a day. After that, the RS232 port on the NG21 board went offline. The boiler board port burned out. Now I’m forced to replace the entire boiler board. I don’t understand what I did wrong. Could you please explain my error? Here’s the diagram of my configuration. Thanks for your help

Hard to tell, I would say there are 2 possible options.

  1. wiring from TTL to RS232 was wrong
  2. faulty board(s)

In your diagram there is data not from TTL to RS232 but to rj11 socket. rj11 should actually connect NG21 board to RS232 outside. I personally would not trust that this manufacturers rj11 wiring follows any standard. RS232, if present should however be standardized. We use for connection only rx, tx and GND. However in RS232 side also vcc is present! Error here could end badly.

However, considering that it actually worked, I would lean to faulty board. I have never used that particular board so it is impossible to say for sure.
Both versions are plausible.