iRT bus modification


All iRT-capable boards have sold out two years ago. This page is for reference only. I do had some requests lately and yes, you can modify the latest V3 EMS interface board for iRT yourself. See below for the info. I do not accept returns for modified boards. It is not plug and play to make this work. I cannot give support.


Old boilers like the Nefit Ecomline and the Buderus GB112 don’t use the EMS bus but the iRT bus. The EMS interface board can be modified to work with the iRT bus (But it is still a poor signal detector for iRT, but OKish for most situations).

Victor-Mo reverse engineered large parts of the iRT protocol and adapted the EMS-ESP firmware to work with iRT.


The firmware and hardware modification is experimental. It may not work on your boiler. It will probably not work on the the first try anyway. It may also need additional testing on your side. Maybe with an oscillocope or signal analyzer. It is NOT plug and play. I cannot provide support. I do not have an iRT boiler and the iRT firmware was created by someone else. For support visit Victor-Mo’s Github repository [1]. Do not send me 10 emails that you can’t make it work and asking me for solutions. I don’t have them.


What also does not work is using the Bosch Easycontrol Connect device on these boilers to convert from iRT to EMS and connect an EMS gateway to the EMS side. It does not provide any meaningful data on the EMS bus.

Supported boilers

Boilers with the iRT bus are f.i. the Nefit Ecomline, Buderus GB112 and other boilers with an UBA 1.0 / UBA 4000 and UBA 1.5 / UBA 4001.

old UBA models


To interface with the iRT bus you need a modified EMS interface board. You also need a Wemos D1 Mini (or other ESP8266 board) with the iRT firmware on it.

iRT modified base board (NOT available anymore)

I do not sell these base boards anymore

The EMS interface base board is of course created for interfacing with the EMS bus. To make it work for iRT, SMD resistor R5 needs to be removed and a 1,5MOhm resistor needs to be placed on R21 or R22. If you purchased the iRT modified base board these modifications are already done.

iRT modified board

R22 (for through hole resistors) is placed in parallel with R21 in case you need to change the 1,5MOhm resistance.

If you ever want to revert back to EMS, you can remove R21/R22 and place a 100kOhm resistor on either R5 or R23. R23 is in parallel with R5.

iRT modified board

I do not sell these base boards anymore

EMS interface board V3

Although not that easy, it is possible to modify the latest EMS interface board V3 and V3.1 for iRT. You need to remove R22 and place a 1,5MOhm resistor between the solder pad of R22 (the pad going to R6) and connect the other pin to 3V3 to create a pull up.

iRT modified V3.1 board


I repeat once again: Modify an EMS interface board if you want to, but I cannot give support on converting the board other than the info provided on this page.


If the 1.5MOhm value does not work, you may have to try out a few different other values. If you stil can’t make it work you need to check the signal with an oscilloscope. It is not plug and play, you have to dig into it to make it work for your own situation.

Wemos D1 Mini

As a microcontroller you have to use an ESP8266-based Wemos D1 Mini or other ESP8266 module. Get the original one from Lolin, some clones have issues. You cannot use the ESP32 as the firmware cannot be built for that target.

The iRT firmware

The iRT firmware is based on the very old and now unsupported EMS-ESP 1.9.5 for the ESP8266 (EMS-ESP for the ESP32 is already at 3.5.0).

To upload the firmware it’s probably the easiest to download the bin file from Victor-Mo’s Github repository [1] and use the NodeMCU method described Updating the Gateway firmware to EMS-ESP V2 [2].

Operating modes

There are two operating modes, passive mode and active mode. In passive mode the firmware can decode the water temperature, if the boiler is running, what mode: heating or warm water, and if the pump is running.

In the (very experimental) active mode it will start the burner and sets a max water temp. The burner power is a fixed value depended on the water temperature you set, ‘set_water 35’ will set a maximum water temperature of 35 degrees Celsius and a very low burner power. ‘set_water 90’ will run the boiler at full power and a maximum water temperature of 90 degrees Celsius. For active mode you need to remove the thermostat because iRT does not support more than one device on the bus.

You can find more information on Victor-Mo’s Github repository [1].

Available parameters

iRT-ESP delivers a handful of parameters, most of which are dependant on the thermostat model. See below for an example:

Boiler stats:
Hot tap water: off
Central heating: active
Warm Water activated: on
Warm Water selected temperature: 40.0 C
Warm Water current temperature: 62.0 C
Warm Water 3-way valve: off
Selected flow temperature: 40 C
Current flow temperature: 44.0 C
Return temperature: 37.0 C
Gas: on
Boiler pump: on
Fan: on
Ignition: off
Burner selected max power: 30 %
System service code: -H (83)
Heating temperature setting on the boiler: 55 C
Outside temperature: 12.0 C
Flow temp. PID: 1.00 0.10 0.00
Max. flow temp.: 60 C

With the telnet command ‘log m’ you can show the MQTT messages that are being send, this is from an example system: {“wWSelTemp”:40, “selFlowTemp”:40, “selBurnPow”:30, “outdoorTemp”:12, “wWCurTmp”:62, “curFlowTemp”:44, “retTemp”:37, “wWActivated”:”on”, “burnGas”:”on”, “heatPmp”:”on”, “fanWork”:”on”, “ignWork”:”off”, “heating_temp”:55, “wWHeat”:”off”, “ServiceCode”:”-H”, “ServiceCodeNumber”:83}

Home Assistant integration

To get the info from iRT-ESP into Home Assistant you have to use the MQTT interface.

For each sensor add a new one manually in your configuration.yaml file like below.

- platform: mqtt
  name: "Outdoor temperature"
  state_topic: "irt-esp/boiler_data"
  device_class: "temperature"
  value_template: "{{ value_json.outdoorTemp }}"
  qos: 0
  unit_of_measurement: "°C"
  icon: mdi:coolant-temperature
  unique_id: "boiler_outdoorTemp"`