[APP][Pro] Östberg Heru

Östberg Heru

Control your Östberg Heru ventilation system.


Current version

Gen 3 with Remote

Make sure you system first has modbus enabled from the remote by going to the Service menu and log in with the code 1199.

Below is a image of two remotes in the Service menu, where the one on the left can be used to enable the modbus of the Heru unit, but the one on the right can’t. If yours does not list the Modbus option, you need to buy a Modbus remote and pair it to your ventilation system before proceeding with the integration towards Homey.

When modbus is enabled you need a TCP/IP to RS485 converter to connect to your Heru unit. I have personally confirmed it working with two different types.

  • Moxa NPORT 5232I
  • Ebyte 810-DTU V2 (By far the cheapest, about $20 on ebay)

You need to configure this converter with a IP and a port that this app will connect to. Connect the three wires (D-/A,D+/B,0/GND) to your ventilation systems Modbus interface port. Make sure the settings on the TCP/IP to RS485 converter matches your ventilation system serial settings.

I am using the following on my system (Heru 100T EC, Gen 3 with the modbus remote):

  • Baud rate: 9600
  • Data bits: 8
  • Parity: none
  • Stop bit: 1

The Modbus ID must be set to 1. That is hardcoded for now, but I might make it configurable in the future.

IQC Touch

Make sure Modbus is enabled and the correct communication settings are chosen. Go to:
Menu -> Service (with 1991 PIN) -> Communications -> Modbus -> Type
Select the type of communication you use.
TCP/IP directly towards the Heru unit (preferred), or through a TCP/IP to RS485 converter.

Make sure you are running firmware 1.09i or higher on the Heru unit. The temperatures might not display correctly if you are on a old firmware version, ref this issue

Changelog :spiral_notepad:



  • Added heater and preheater enabled/disabled functionality for IQC Touch



  • Adjustable polling interval. Modbus timeout will be half of this value.
  • Alarms can be inverted.

Bug fix

  • IQC Touch: Fixed issue where reading ECO temperature didn’t update until setting a new target temperature.


Bug fix

  • Error handling improvements


Bug fix

  • Fixed issue where ECO setpoint was not updated for IQC Touch


Bug fix

  • Fixed issue where Fan Mode Changed trigger for IQC Touch would not work



  • Added support for direct TCP/IP connection for IQC Touch unit


Bug fix

  • Fixed issue where negative numbers did not display correctly


  • Initial release

Issues and bugs :bug:

Bugs should be reported here

Donations :moneybag:

If you like this app, please consider donating through paypal


I take no responsibility for any damages caused by the use of this app.

Really happy to see that this app appeared since I last looked into this👍

I assume I will I’ll need to purchase the “Modbus Remote” for my Heru EC 180 to work, correct?

If you don’t see the modus settings in your current remote, you’ll have to do that, yes. The Modbus settings should be in the service menu which you can access with the code 1199. In addition you’ll need a tcp to rs485 converter to be able to use the app, which I bought on ebay for around $20.


I assume you ‘must’ have an external RS485 converter to use this app? I have the new HERU 160 T EC, which supports Modbus over TCP/IP native. I can’t get the app to connect;
Connected to, but got error: “Port Not Open”

I have the IQC Touch display.

It works fine with Home Assistant, via integrated Modbus over TCP/IP, so it is doable.


Both the IQC Touch and the Gen 3 Remote is currently set to use a RS485 gateway, yes. The reason for it is that when I asked the guys at Östberg, they said that it was the same for the IQC and the Gen3, with both using the serial interface. Since I only have the remote version I just had to go with what they said. If it is the case that the IQC can use TCP/IP directly I’ll of course fix that. I’ll make a test version, hopefully in a few days time, and let you know when it’s ready for you to test.

1 Like

Wow, that sounds great! Looking forward to that. Thanks! :slight_smile:

Could you try the test version?

If you still have the device added, go to the advanced settings and check the TPC/IP to change the communication type.

I kept the serial interface in case the IQC Touch unit supports that as well, but any new devices of this type will have the direct TCP/IP enabled by default.

Please note that this device is untested as I don’t have this system myself, so please report issues you find here

Awesome! That did the trick, now I have communication. :slight_smile:

Fan modes works! “Dial/data” screen crashes the Homey App on Android after 5-60 sec, but works in the web app. “Range Error: Maximum call stack size exceeded”. I have both Homey Pro 2019 and 2023, as well as several Android/Iphone devices so I’ll try the things I can and post a proper Issue Report when finished testing. I dont have any external sensors, so I won’t be able to test some of the functions/modes.

Splendid work, thanks alot!


1 Like

Good to hear it’s working-ish! :smiley: It sounds more like it’s a bug in the Homey Beta App for Android since that is crashing and not the Östberg Heru app itself, and especially since it’s working in the web app.

  1. Do you get the correct values for the target temperatuer and the feedback in either of the apps (Android/Web)?
  2. Are you able to adjust the target temperatures in either of the apps (Android/Web)?

I will try to reproduce the issue with a simulator later, but this should be reported to Athom through their bug report in the Android app (home page).

I was unable to reproduce the crash. I did however see that the ECO setpoint was not updated (fixed in v1.1.2) and would most likely have been out of range, which I guess could have caused the “Range Error: Maximum callstack size exceeded” in their mobile app, but this is something I assume they should catch, so I would recommend to report it to them.


Yes, I think you might be correct here. I didnt’t get the crash on iPhone either (Or web app). I actually got the same error on another Homey app after seeing this the first time with your app. (Airthings, has been flawless with the non beta version) The temp adjustments seems to work fine. If I change temp on the IQC, same number appears in app, and vice verse.The same with Fan Modes, it works fine, as I mentioned earlier.

I’ll be more than happy to try out other things if you wish.

I think I will mainly use this to switch on Boost mode, based on the sensors in my Airthings devices (VOC/CO2), and I will also put up some buttons in each bathroom to trigger Boost mode, on demand. Maybe some moisture sensor that detects bath/shower activites.

Great work!

I am trying to connect the app, and it briefly seems to work for a couple of seconds after adding the device in Homey.
But then almost immediately, the device gives the error “Device Unavailale - Modbus Timeout”.
In the Vircom utility that I can use to manage the Waweshare device I see TXD packages, but no RXD packages.

I am really a noob in the world of Modbus and serial communication, so please bear with me, and all help is highly appreciated.
My setup:
Heru 180 with a new v3.11 remote
Waweshare RS232/485/422 TO POE ETH (B)

The Waweshare have more ports/connectors than the Hero, but I have tried to connect like this:

Heru Waweshare
0 PE

And also like this:

Heru Waweshare
0 PE

Still same behaviour, at lot of TXD packages, but nothing received.

Can anyone try to help me out here on how this should be connected?

I don’t know if it is related to my Waweshare config, but I think I have gotten it all right in there by now:

Based on this it seems it should be connected (Waveshare → Heru) like:

  • TA → A
  • TB → B
  • PE → 0

A few things:

  1. I assume you have confirmed that the Modbus settings on the Heru unit are:
    – Baud rate: 9600
    – Data bits: 8
    – Parity: none
    – Stop bit: 1

  2. What are your IP/port settings for the Heru device in Homey?

Can you send a diagnostics report and provide me the id?

Now I have made sure that the wires are correctly connected. Also the settings for the serial interface in the Waveshare are as described above.

I have generated a diagnostic report with the id: d7ccf9aa-e381-45b2-801f-6304ea4c8a3d

I see you have two devices, one with IP which is unable to connect to anything, and one with IP, which connects to the IP to RS485 gateway, but is unable to get a reply from the modbus, as you’ve stated.

  • Have you checked the Modbus settings in the Heru remote control? If modbus is not enabled by the ventilation systems remote, this will not work.

You could also try to up the “Instruction Time out” setting from 224 to 1000ms. Not sure what it does, but I’m sure it won’t hurt to up it a bit.

The .188 device I only added to see if it would give the same error, with a faulty IP. As expected it gave a “cannot correct” or similar error fro that one.
The inly Modbus settings I see in the remote are these:

I did try to change the timeout, but it seems to make no difference.
And I’ve found these additional settings for the RS485:

Not sure if they will make any difference🤔

Have you tried disabling the Multi-Host setting?

At least now I have tested to disable the Multi-Host, with the same result.

What bothers me is the fact that te Device in VirCom shows TX activity but no RX.

I guess that could mean that the the communication from the Heru is not working at all.
Like faulty Heru or I made a general mistake when hooking it up? But how hard can it be to get 3 wires correct?

From the diagnostics report I could see it connect to the gateway and it attempts to send a modbus request, but that times out due to no response, as you’ve said as well. So TX blinking and not RX makes sense. If you remove the Homey Heru device, I assume the TX stops?

I don’t think it’s a faulty unit, that would be a rare case. I’m assuming it’s either wiring or some settings that’s incorrect, but it’s hard to say which. You just have to try alot of different things, I guess. Note that the wiring I mentioned earlier might not be correct either, I just quickly skimmed the page I linked and compared with how mine is wired.

This is my Ebyte 810-DTU V2 deviec and it’s configuration:

RS485 converter → Heru
A → A
B → B
GND → 0

Thanks a lot for your feedback💐
You were right, if I remote the device in Homey the TX stops at once.

I will continue the troubleshooting tomorrow.

1 Like

I’ve been reading a bit more here and it says “RS485 must be connected by the positive pole to the TA, the negative pole to the TB” which is the opposite of the RS485 standard which says “A for negative and B for positive” which could mean that you need to change your TA/TB wiring to:

Waveshare → Heru

  • TA → B
  • TB → A

Further it says: By default, the data between the serial port and network port is transparently transmitted. You shouldn’t need to enable any of the advanced features, since the app already writes modbus RTU over the TCP connection, it just needs the gateway for converting it from TCP/IP to serial (RS485).