# \[Tutorial\]\[Pro\] Basic MQTT setup & connect Itho Daalderop NRG.watch interface

**URL:** <https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521>\
**Category:** Tutorials\
**Tags:** mqtt, virtual-device, homey-pro\
**Created:** [July 9, 2025, 7:23pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521 "2025-07-09T19:23:14Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [July 9, 2025, 7:23pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/1 "2025-07-09T19:23:14Z")

</div>

### This tutorial is about setting up a basic MQTT system.

(and yes I know there’s several other MQTT tutorials around 😬)

#### Additionally, it tries to explain how to connect a system like the NRG.watch [interface](https://www.nrgwatch.nl/product/itho-cve-rft-wifi-add-on/) for Itho airboxes

(no need for the Homey NRG.watch app)

Feel free to add missing info, or correct any possible errors.  
(This is a wiki)

### Homey:

1  
Install 3 MQTT community apps:

- MQTT Broker \[1\]
- MQTT Client
- MQTT Hub
- 
  - `¹)` The broker may run anywhere, but we stick to Homey for now

2  
Configure the broker and client;

- In this example, Homey’s IP address is `192.168.12.34` → **replace** this with _ **your Homey’s IP address** _
- Make up your own username and password
- The default MQTT portnumber is `1883`

#### MQTT Broker

 ![Screenshot_20250709_194729_Firefox](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/e/4/e455401a535e1ad7de7667688ea6affd34c19aaa.jpeg)  
.  
 ![Screenshot_20250709_202813_Gallery](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/5/c/5c21c2ab06b68957ed1b2be8b7cf92e6d5f16449.jpeg)

#### MQTT Client

_Use the same user/pw as you entered at the broker configuration_  
_Enter Homey’s IP address as broker IP_

 ![Screenshot_20250709_200203_Firefox](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/3/0/30761932c532a59c1e84cbc5dbeee434762cad1a.jpeg)

3

#### MQTT Hub

No configuration needed, but make sure it runs:

 ![Screenshot_20250709_213602_Firefox](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/5/6/56e3fab10b71e1635d5e4f45c573781474f6634f.jpeg)

Then it connects with the MQTT Client app automatically

### not-Homey:

4

#### NRG.Watch Itho interface

Use the same user/pw as you entered at the broker configuration  
Enter Homey’s IP address as broker IP

 ![Screenshot_20250709_210323_Chrome](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/e/4/e4453c8da9cf1ddea6741be9f1c5495913ffe670.jpeg)

If all’s configured well, the systems now can communicate.  
You can use the MQTT Explorer software to confirm, see Troubleshoot section below

### Homey:

5

#### MQTT Hub virtual device

With use of such a VD, you can control and monitor your airbox

- add a device, pick MQTT Hub

- no need to create anything now, just save it

- go to Settings \> Advanced settings of this device

- at Device Class select “Fan”

- now tap “Topics” at the \*Advanced section  

- Now copy this topics JSON below, and paste it into the aforementioned Topics field

```auto
{ 
  "fan_speed": {
    "capability": "fan_speed",
    "stateTopic": "itho/state",
    "setTopic": "itho/cmd",
    "valueTemplate": "round((value / 255) * 100)",
    "outputTemplate": "round((value / 100) * 255)",
    "displayName": "Fan speed control"
  },
  "fan_mode": { 
    "capability": "fan_mode", 
    "stateTopic": "itho/ithostatus", 
    "setTopic": "itho/cmd", 
    "valueTemplate": "", 
    "outputTemplate": "", 
    "displayName": "Fan presets", 
    "values": [
  { "id": "low", "title": "low" }, 
  { "id": "medium", "title": "medium" }, 
  { "id": "high", "title": "high" },
  { "id": "timer1", "title": "timer1" }, 
  { "id": "timer2", "title": "timer2" }, 
  { "id": "timer3", "title": "timer3" } 
] 
  },
  "measure_number.speedrpm": {
    "capability": "measure_number.speedrpm",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['fan-speed_rpm']",
    "outputTemplate": "",
    "displayName": "Speed (rpm)"
  },
  "measure_number.speed%": {
    "capability": "measure_number.speed%",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['speed-status']",
    "outputTemplate": "",
    "displayName": "Speed (%)"
  },
  "measure_temperature": {
    "capability": "measure_temperature",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['temp']",
    "outputTemplate": "",
    "displayName": "Temperature"
  },
  "measure_humidity": {
    "capability": "measure_humidity",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['hum']",
    "outputTemplate": "",
    "displayName": "Humidity"
  },
  "measure_string.lastcmd": {
    "capability": "measure_string.lastcmd",
    "stateTopic": "itho/lastcmd",
    "setTopic": "",
    "valueTemplate": "$['command']",
    "outputTemplate": "",
    "displayName": "Last command"
  },
"measure_number.ppmw": {
    "capability": "measure_number_ppmw",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['ppmw']",
    "outputTemplate": "",
    "displayName": "ppmw"
  },
  "measure_number.opshrs": {
    "capability": "measure_number.opshrs",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['total-operation_hours']",
    "outputTemplate": "",
    "displayName": "Running hrs"
  }
}

```

You’re free to use your own names for the values at “displayName” and “title”

##### Now you’d have a device like this:

 ![Screenshot_20250824_171735_Homey](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/c/1/c1451f397c7b05927f2c6f8252822e6b2b911a17.jpeg)

 ![Screenshot_20250824_171750_Homey](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/d/e/def28292c5fbedf84f8692bfbdc1e28901630791.jpeg)

 ![Screenshot_20250824_171803_Homey](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/b/4/b4802ced2004023147fad1dcadbb70fca841d3a0.jpeg)

.

### Flow cards

 ![Screenshot_20250824_172041_Firefox](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/d/c/dcbeafc64ee30db4b55485e53262804d4316a5be.jpeg)

 ![Screenshot_20250824_171926_Firefox](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/3/b/3bf92e8f930712088fbe65ee661df03881176e32.jpeg)

.

#### Troubleshoot

Install [MQTT Explorer](https://mqtt-explorer.com/) to view the actual topics and messages transmissions  
Again you enter the user/pw as you entered at the broker configuration, and Homey’s IP address (the broker IP):

 ![Screenshot_20250709_195331_Chrome](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/b/4/b4c4ea0a23a04c9ce87358d4f297f5f2ea7770ab.jpeg)

 ![Screenshot_20250709_195445_Chrome](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/f/4/f467c0b5637dbd71c79e0677d51a8e71abd74eb3.jpeg)

→ also available as Home Assistant add-on

## New (14 sept 2025):

When MQTT is not for you,  
A new NRG Itho Daalderop app is published:  
[https://community.homey.app/t/app-pro-itho-daalderop-make-ventilation-smart-with-homey-and-nrg-watch/142944](https://community.homey.app/t/app-pro-itho-daalderop-make-ventilation-smart-with-homey-and-nrg-watch/142944)

* * *

1. Footnotes

---

<div class="post-metadata">

**Author:** ![Sipke\_D](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sipke_d/32/16600_2.png) [@Sipke\_D](https://community.homey.app/u/Sipke_D)\
**Post date:** [July 30, 2025, 1:43pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/2 "2025-07-30T13:43:21Z")

</div>

Thanks Peter!

It works immediately and controls the Itho perfect.

So good after trying in vain to connect the NRG wifi-controller to the NRG watch app.

There is a small detail that doesn’t work. That’s the indicator for Speed rpm and Speed %.

See below:

 ![Scherm­afbeelding 2025-07-30 om 11.15.29](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/d/9/d9928be07b5a0baf017533d13130d8505aa65fb8.jpeg)

The other functions do all work fine.

Any suggestion how to fix that?

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [July 30, 2025, 2:06pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/3 "2025-07-30T14:06:10Z")

</div>

Thanks for confirming the manual makes sense, Sipke 🤪😉

Can you show the MQTT Explorer screen with the `itho/ithostatus` topic? Especially the `speed-status `and `fan-speed_rpm` (or something similar), like this:

 ![1000001055](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/c/5/c5045690317ca351815fe6ad2de9dab1b59a62c3.jpeg)

 ![1000001053](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/1/6/165ab4fe6f1bfdaf242268aacec938d786e9339f.jpeg)

Because it shouldn’t, but it could be possible they’re not named exactly the same with our NRG add-ons….

The point is, these names should match with the ones of the valueTemplates in the MQTT device:

 ![Screenshot_20250730_155803_Chrome](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/d/0/d0ea5bf842466178ce8c5e167d860752f392826c.jpeg)

When the names appear to be different at MQTT Explorer, you should adjust the ones in MQTT device topics to have it matching.

Does this make sense? Just ask when things are unclear.

---

<div class="post-metadata">

**Author:** ![Sipke\_D](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sipke_d/32/16600_2.png) [@Sipke\_D](https://community.homey.app/u/Sipke_D)\
**Post date:** [July 31, 2025, 8:53am UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/4 "2025-07-31T08:53:12Z")

</div>

It’s fixed, Peter!

I had to adjust the two names and now the speed indicators are OK.

Thanks for your quick reaction, Sipke.

---

<div class="post-metadata">

**Author:** ![co.noordhoek](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/co.noordhoek/32/25556_2.png) [@co.noordhoek](https://community.homey.app/u/co.noordhoek)\
**Post date:** [August 1, 2025, 9:05am UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/5 "2025-08-01T09:05:52Z")

</div>

Peter,

de beschreven installatie is voor mij te ingewikkeld. Er is echter een NRG litho app maar die krijg ik niet geinstalleerd op mijn Homey Pro 2019 is daar een oorzaak bekend? Ook met ip adres lukt het niet.

Groetjes Co Noordhoek

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [August 1, 2025, 8:40pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/6 "2025-08-01T20:40:27Z")

</div>

Hi Co,

Ah that’s annoying. On my 2 Pro 2019s, the NRG Watch app cannot find the module either.

It is a known problem, but unfortunately the app maker hasn’t found an opportunity to publish a fix yet.

> [@Aansturen Itho Daalderop Centrale mechanische ventilatie](https://community.homey.app/t/aansturen-itho-daalderop-centrale-mechanische-ventilatie/91708/56):
>
> De app bouwer is op de hoogte Zien jullie dingen als ‘not available’ voorbijkomen als je deze URL opent? [http://nrg.local/api.html?get=ithostatus](http://nrg.local/api.html?get=ithostatus) Of [http://ip.adres.hier/api.html?get=ithostatus](http://ip.adres.hier/api.html?get=ithostatus)

---

<div class="post-metadata">

**Author:** ![co.noordhoek](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/co.noordhoek/32/25556_2.png) [@co.noordhoek](https://community.homey.app/u/co.noordhoek)\
**Post date:** [August 2, 2025, 1:28pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/7 "2025-08-02T13:28:09Z")

</div>

Peter,

Als ik deze link ( [http://ip.adres.hier/api.html?get=ithostatus](http://ip.adres.hier/api.html?get=ithostatus) ) met mijn ip adres invoer krijg ik het onderstaande, krijg blijkbaar dan toch verbinding, de aanwezige fout kan niet zo heel groot zijn denk ik, maar ik heb te weinig kennis om te zien wat er fout gaat.

Heb de app nogmaals geprobeerd en zie iets voorbij flitsen waarna de foutmelding verschijnt

Groetjes Co Noordhoek

{“temp”:25.4,“hum”:47.8,“ppmw”:9807,“Ventilation setpoint (%)”:4,“Fan setpoint (rpm)”:652,“Fan speed (rpm)”:809,“Error”:0,“Selection”:7,“Startup counter”:150,“Total operation (hours)”:38443,“Absence (min)”:0,“Highest CO2 concentration (ppm)”:“not available”,“Highest RH concentration (%)”:“not available”,“RelativeHumidity”:“not available”,“Temperature”:“not available”}

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [August 2, 2025, 5:24pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/8 "2025-08-02T17:24:52Z")

</div>

> [@co.noordhoek](#):
>
> “Temperature”:“not available”

Hi Co,

Indeed, I have. Everything works except pairing with the Homey NRG. Watch app.

The app maker [wrote](https://github.com/tobyworks/com.tobybonhof.nrg/issues/1) last October, that these “not available” values, probably throw a spanner in the works:

 ![Screenshot_20250802_191315_GitHub](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/6/c/6c83f259ca216dcdbd6b73f8e641755517aa6a65.jpeg)

Been fiddling with the app code myself, but unfortunately no luck yet (am really a 🥔 in terms of (app) code).

---

<div class="post-metadata">

**Author:** ![Robo09](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/robo09/32/114185_2.png) [@Robo09](https://community.homey.app/u/Robo09)\
**Post date:** [August 12, 2025, 10:06pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/10 "2025-08-12T22:06:21Z")

</div>

@Peter_Kawa Thanks for your tutorial! I have the MQTT Hub, Broker, and Client up and running, and everything is set correctly in the NRG Watch interface.

Now here’s the thing — I have other parameters I can read… but I don’t see any data coming in.  
In MQTT Explorer I see this (also in NRG’s web interface, by the way).

```json
{
   "Operating mode":2,
   "Operating phase IBS":0,
   "Operating status":0,
   "Setting":0,
   "RH extractor (%)":0,
   "RH kitchen (%)":0,
   "RH toilet 1 (%)":0,
   "RH living room 1 (%)":0,
   "RH living room 2 (%)":0,
   "RH laundry room (%)":0,
   "RH bathroom 1 (%)":73,
   "RH bathroom 2 (%)":0,
   "RH bedroom 1 (%)":0,
   "RH bedroom 2 (%)":0,
   "RH bedroom 3 (%)":0,
   "RH bedroom 4 (%)":0,
   "exhaust fan (%)":12,
   "supply fan (%)":5,
   "CO2 plenum (ppm)":805,
   "CO2 calculated (ppm)":808,
   "Calculated CO2 extractor (ppm)":808,
   "Calculated CO2 kitchen (ppm)":1098,
   "Calculated CO2 toilet1 (ppm)":639,
   "Calculated CO2 living room 1 (ppm)":815,
   "Calculated CO2 living room 2 (ppm)":0,
   "Calculated CO2 washroom (ppm)":468,
   "Calculated CO2 bathroom1 (ppm)":726,
   "Calculated CO2 bath2 + toilet2 (ppm)":0,
   "Calculated CO2 bedroom 1 (ppm)":419,
   "Calculated CO2 bedroom 2 (ppm)":584,
   "Calculated CO2 bedroom 3 (ppm)":946,
   "Calculated CO2 bedroom 4 (ppm)":0,
   "Calculated pos valve extractor":9,
   "calculated pos flap kitchen":9,
   "Calculated pos flap toilet 1":9,
   "Calculated pos flap living room 1":9,
   "Calculated pos flap living room 2":0,
   "Calculated pos flap laundry room":9,
   "Calculated pos flap bathroom1":13,
   "Calculated pos valve bath2+toilet2":0,
   "Calculated pos valve bedroom1":0,
   "Calculated pos flap bedroom 2":100,
   "Calculated pos flap bedroom 3":9,
   "Calculated pos damper bedroom 4":0,
   "Calculated Flow extractor hood (m3_h)":5,
   "Calculated Flow kitchen (m3_h)":5,
   "Calculated Flow toilet 1 (m3_h)":5,
   "Calculated Flow living room 1 (m3_h)":5,
   "Calculated Flow living room 2 (m3_h)":0,
   "Calculated Flow laundry room (m3_h)":5,
   "Calculated Flow bathroom 1 (m3_h)":7,
   "Calculated Flow bath2+toilet2 (m3_h)":0,
   "Calculated Flow bedroom1 (m3_h)":0,
   "Calculated Flow bedroom 2 (m3_h)":25,
   "Calculated Flow bedroom 3 (m3_h)":5,
   "Calculated Flow bedroom 4 (m3_h)":0,
   "Error":0,
   "Measuring interval (sec)":88,
   "Timer extractor (sec)":0,
   "Time increase bathroom 1 (sec)":0,
   "Time increment bathroom 2 (sec)":0,
   "3_6_9 hours DemandFlow timer (sec)":0,
   "CO2 measurement room":10,
   "Measurement method":1,
   "Flow adjusted":0,
   "Status normal":1,
   "Status high extractor hood":0,
   "Status high bathroom":0,
   "Status high extractor hood and bathr.":0,
   "Status timer":0,
   "Status manual control":0,
   "Status reserved":0,
   "Status eco comfort":0,
   "Status limited ventilation":0,
   "Status not at home":0
}

```

I can’t get the JSON adjusted so that I can read, for example, some of these parameters.

Aside from that — I see that people create flows with GET requests to retrieve data and write it to a number. Do I also need to do this to keep the data updating, or am I missing something?

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [August 12, 2025, 11:31pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/11 "2025-08-12T23:31:11Z")

</div>

Hi Robo09!

You’re welcome! (please keep the topic in English)

You have a rather “extended” Itho unit it seems?  
Oh and would you please edit your post and format the JSON output by the API as code? (just add three backtics ``` above and below) → F.i. now it’s full of fancy _"_ double quotes, which are unusable with copy/paste actions. In js code & JSON only straight `"` (double) quotes are allowed.

Okay, back to work: it is possible to brew a JSON from it for the MQTT device, can you specify which values you want to see (to start with) in Homey?  
Fan speed _should_ just work…

I now picked a few values from your API output and added them to the JSON below; Could you copy/paste this JSON into the virtual MQTT device? I’m curious if it’ll (partly) work:

```auto
{
    "fan_speed": {
    "capability": "fan_speed",
    "stateTopic": "itho/state",
    "setTopic": "itho/cmd",
    "valueTemplate": "round((value / 255) * 100)",
    "outputTemplate": "round((value / 100) * 255)",
    "displayName": "Fan Speed"
  },
  "fan_mode.timer": { 
    "capability": "fan_mode.timer", 
    "stateTopic": "itho/ithostatus", 
    "setTopic": "itho/cmd", 
    "valueTemplate": "", 
    "outputTemplate": "", 
    "displayName": "Timer mode", 
    "values": [
 { "id": "timer1", "title": "30m boost" }, 
{ "id": "timer2", "title": "60m boost" }, 
{ "id": "timer3", "title": "120m boost" } 
] 
  },
  "fan_mode": { 
    "capability": "fan_mode", 
    "stateTopic": "itho/ithostatus", 
    "setTopic": "itho/cmd", 
    "valueTemplate": "", 
    "outputTemplate": "", 
    "displayName": "Fan mode", 
    "values": [
 { "id": "low", "title": "Low" }, 
{ "id": "medium", "title": "Medium" }, 
{ "id": "high", "title": "High" } 
] 
  },
  "measure_number.supplyfan": {
    "capability": "measure_number.supplyfan",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['supply fan (%)']",
    "outputTemplate": "",
    "displayName": "Supply Fan %"
  },
  "measure_number.exhfan": {
    "capability": "measure_number.exhfan",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['exhaust fan (%)']",
    "outputTemplate": "",
    "displayName": "Exhaust Fan %"
  },
  "measure_humidity.bathr1": {
    "capability": "measure_humidity.bathr1",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['RH bathroom 1 (%)']",
    "outputTemplate": "",
    "displayName": "Rel.Humidity Bathr.1"
  },
  "measure_co2.room": {
    "capability": "measure_co2.room",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['CO2 measurement room']",
    "outputTemplate": "",
    "displayName": "CO2 Room measured"
  }
}

```

You should / could notice changing values at the `itho/cmd` and `itho/state` topics, when you send commands per MQTT  
.

> [@Robo09](#):
>
> ik zie dat mensen flows maken met GET requests om data op te halen en weg te schrijven op een nummer? moet dit ook om de data te blijven updaten of? ik mis waarschijnlijk iets 🙂

That’s an non-MQTT related alternative way to also control/read the itho unit using direct commands. When you browse to [http://nrg.local](http://nrg.local) (or the IP address of the unit) and tap ‘API’ on the menu on the left, you’ll get all info. Also you’ll find all info I found @ the [wiki](https://github.com/arjenhiemstra/ithowifi/wiki) and the [manual (download)](https://github.com/arjenhiemstra/ithowifi/raw/master/manual.pdf)

 ![Screenshot_20250813_003039_Chrome](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/5/6/56aa4873b9710dde458c54838511e67a84557807.jpeg)

But let’s start a separate topic for the API part.

---

<div class="post-metadata">

**Author:** ![Robo09](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/robo09/32/114185_2.png) [@Robo09](https://community.homey.app/u/Robo09)\
**Post date:** [August 13, 2025, 8:22am UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/12 "2025-08-13T08:22:25Z")

</div>

@Peter_Kawa legend! sorry for my messy post 😉 was doing this on my phone and that is not ideal.. I edited the post in English + code block

Your sample works like a charm - e.g. the measures. The remote control probably not (not tested it) but I want to add some JSON so I can use the virtual remotes that I created in NRG watch.

So the goal is - measures, I know how I can do this now 🙂 so I am going to pick the values I want and add them. The other part I want to do is make use of the virtual remotes I added. So per room I added a virtual remote that I can set the Itho to High , Low or Auto 😉 This is especially interesting for the bathroom, it is not working well now.

I figured that the API was a alternative way.. I am doubting which one works best for my situation.. not sure yet

Oh btw - I have a HRU eco (looks like the HRU350) but on top of that I have a plenum with a demandflow controller… the NRG is on the Demandflow controller - this thing is controlling my ventilation unit. If I put the NRG in the HRU350 directly.. I get different measures like outside temp etc

---

<div class="post-metadata">

**Author:** ![Robo09](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/robo09/32/114185_2.png) [@Robo09](https://community.homey.app/u/Robo09)\
**Post date:** [August 13, 2025, 12:59pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/13 "2025-08-13T12:59:07Z")

</div>

```json
{
  "measure_number.supplyfan": {
    "capability": "measure_number.supplyfan",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['supply fan (%)']",
    "outputTemplate": "",
    "displayName": "Supply Fan %"
  },
  "measure_number.exhfan": {
    "capability": "measure_number.exhfan",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['exhaust fan (%)']",
    "outputTemplate": "",
    "displayName": "Exhaust Fan %"
  },
  "measure_humidity.bathr1": {
    "capability": "measure_humidity.bathr1",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['RH bathroom 1 (%)']",
    "outputTemplate": "",
    "displayName": "Rel.Humidity Bathr.1"
  },
  "measure_co2.room_kitchen": {
    "capability": "measure_co2.room",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['Calculated CO2 kitchen (ppm)']",
    "outputTemplate": "",
    "displayName": "CO2 Kitchen"
  },
  "measure_co2.room_livingroom1": {
    "capability": "measure_co2.room",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['Calculated CO2 living room 1 (ppm)']",
    "outputTemplate": "",
    "displayName": "CO2 Living Room"
  },
  "measure_co2.room_bathroom": {
    "capability": "measure_co2.room",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['Calculated CO2 bathroom1 (ppm)']",
    "outputTemplate": "",
    "displayName": "CO2 Bathroom"
  },
  "measure_co2.room_toilet": {
    "capability": "measure_co2.room",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['Calculated CO2 toilet1 (ppm)']",
    "outputTemplate": "",
    "displayName": "CO2 Toilet"
  },
  "measure_co2.room_washroom": {
    "capability": "measure_co2.room",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['Calculated CO2 washroom (ppm)']",
    "outputTemplate": "",
    "displayName": "CO2 Washingroom"
  },
  "measure_co2.room_bedroom1": {
    "capability": "measure_co2.room",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['Calculated CO2 bedroom 1 (ppm)']",
    "outputTemplate": "",
    "displayName": "CO2 Bedroom1"
  },
  "measure_co2.room_bedroom2": {
    "capability": "measure_co2.room",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['Calculated CO2 bedroom 2 (ppm)']",
    "outputTemplate": "",
    "displayName": "CO2 Bedroom2"
  },
  "measure_co2.room_bedroom3": {
    "capability": "measure_co2.room",
    "stateTopic": "itho/ithostatus",
    "setTopic": "",
    "valueTemplate": "$['Calculated CO2 bedroom 3 (ppm)']",
    "outputTemplate": "",
    "displayName": "CO2 Bedroom3"
  },
  "fan_mode.wasruimte": {
    "capability": "fan_mode",
    "stateTopic": "itho/ithostatus",
    "setTopic": "itho/cmd",
    "valueTemplate": "",
    "outputTemplate": "{\"id\": \"3D,B6,50\", \"cmd\": \"[[value]]\"}",
    "displayName": "Wasruimte Mode",
    "values": [
      { "id": "auto", "title": "Auto" },
      { "id": "low", "title": "Low" },
      { "id": "high", "title": "High" }
    ]
  },
  "fan_mode.badkamer": {
    "capability": "fan_mode",
    "stateTopic": "itho/ithostatus",
    "setTopic": "itho/cmd",
    "valueTemplate": "",
    "outputTemplate": "{\"id\": \"3D,B6,51\", \"cmd\": \"[[value]]\"}",
    "displayName": "Badkamer Mode",
    "values": [
      { "id": "auto", "title": "Auto" },
      { "id": "low", "title": "Low" },
      { "id": "high", "title": "High" }
    ]
  }
}

```

With the code above, I can read all the measures I want – that’s great! Now I actually want a few simple buttons, for example, as a test here for the laundry room and bathroom. The virtual remote in NRG works well (laundry room and bathroom added), and there are buttons like Auto – High – Low, etc. For now, I only want High, Low, and Auto as buttons in Homey on that virtual remote.

With the code above, I have a nice dropdown with laundry room and bathroom – and the three buttons – but as soon as I click on them, I get:  
“Missing Capability Listener: fan\_mode.laundry\_room”

PS – the code is Gemini – works reasonably well but I’m probably missing something, which is why it doesn’t work now.

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [August 13, 2025, 7:59pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/14 "2025-08-13T19:59:46Z")

</div>

(please translate your posts to English)

Looking good, Robo.

The mode “trick” should work like this (no “outputTemplate” value); because you declared `fan_mode` capability twice, it errors.  
Add a subcapability like `fan_mode.badkamer`:

```auto
  "fan_mode.wasruimte": {
    "capability": "fan_mode.wasruimte",
    "stateTopic": "itho/ithostatus",
    "setTopic": "itho/cmd",
    "valueTemplate": "",
    "outputTemplate": "",
    "displayName": "Wasruimte Mode",
    "values": [
      { "id": "auto", "title": "Auto" },
      { "id": "low", "title": "Low" },
      { "id": "high", "title": "High" }
    ]
},
  "fan_mode.badkamer": { 
    "capability": "fan_mode.badkamer", 
    "stateTopic": "itho/ithostatus", 
    "setTopic": "itho/cmd", 
    "valueTemplate": "", 
    "outputTemplate": "", 
    "displayName": "Badkamer Mode", 
    "values": [
      { "id": "auto", "title": "Auto" },
      { "id": "low", "title": "Low" },
      { "id": "high", "title": "High" }
    ]
  }

```

Hope this works!

---

<div class="post-metadata">

**Author:** ![Robo09](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/robo09/32/114185_2.png) [@Robo09](https://community.homey.app/u/Robo09)\
**Post date:** [August 13, 2025, 8:35pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/15 "2025-08-13T20:35:39Z")

</div>

thanks! (translated my post) - at first it gave the same error “Missing Capability Listener” but I read on another topic that a restart might solve this.

The error is gone - but the buttons unfortunately don’t work. If I click my virtual remote in NRG on High (for example the laundry room) then I hear the Itho fan making a lot of noise 🙂 - when I click Auto it becomes silent again so for me is an indication the buttons work.

The buttons in Homey are not triggering this ☹ been talking to Gemini all night but we can’t solve it yet hehe

also this part:

```auto
  "outputTemplate": "{\"id\": \"3D,B6,51\", \"cmd\": \"[[value]]\"}"

```

this is where I thought I could trigger the Virtual remote (it has an ID) so the Demandflow knows what to do

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [August 13, 2025, 9:18pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/16 "2025-08-13T21:18:57Z")

</div>

Cool, thx for translating.

To make sure we talk about the same: what do you mean by “virtual remote” exactly?  
I consider the virtual MQTT device to be a virtual remote, which doesn’t need the output template you (or Gemini) proposed.

.

> [@Robo09](#):
>
> a HRU eco (looks like the HRU350) but on top of that I have a plenum with a demandflow controller… the NRG is on the Demandflow controller

Hmmmm, when searching for stuff I took a closer look to [the support matrix](https://github.com/arjenhiemstra/ithowifi/wiki). It says (to me) you can’t control the Demandflow controller:

 ![Screenshot_20250813_230911_Chrome](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/f/e/fe718c3dc7a521f93af11ff7d132630530e65b30.jpeg)

---

<div class="post-metadata">

**Author:** ![Robo09](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/robo09/32/114185_2.png) [@Robo09](https://community.homey.app/u/Robo09)\
**Post date:** [August 13, 2025, 10:55pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/17 "2025-08-13T22:55:55Z")

</div>

Not sure why that is in the Github still 🙂

Virtual remote - I put the demandflow unit in learning mode and then created a virtual remote in NRG web interface en send a join from there. This way I could get every room as “virtual remote“ in NRG. In NRG I have buttons per room that I can click and the demandflow is responding to this.

So I think it works fine (also Arjen himself told me that via Tweakers :)). So the problem lies in the fact that I can’t reach this Virtual Remote via MQTT yet. It must be possible but not sure how..

 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/3/9/39be17d17863f7a4df6ca377ac44e0be988e2b95.png)

Maybe good to add - on the demandflow I have per room an indicator light. With the physical remote I could go from room A to B and join via the webinterface. Then I gave it a name (the ID is being filled based on the Join I think - it is different per room)

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [August 14, 2025, 10:14pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/18 "2025-08-14T22:14:40Z")

</div>

Ah, that’s way clearer.  
Well, after lots and lots of searching and reading, I came to the conclusion it should work like this:

For non-CVE units, to control the fan speed, there’s only `low/medium/high/timer` (no `auto` and no 1-100% range available):  
@ web interface, you only need to

- copy one physical remote as virtual remote
- give it a different name
- make sure the right remote (`remtype`) is selected
- press the Join button  
 → _all within 2 minutes after powering up the box._  
(you probably knew this part already)

Now you’d be able to control the fan speed with this JSON inside the MQTT device:

```auto
  "fan_mode.generic": { 
    "capability": "fan_mode.generic", 
    "stateTopic": "itho/ithostatus", 
    "setTopic": "itho/cmd", 
    "valueTemplate": "", 
    "outputTemplate": "", 
    "displayName": "Fan mode (Generic)", 
    "values": [
 { "id": "low", "title": "Low" }, 
{ "id": "medium", "title": "Medium" }, 
{ "id": "high", "title": "High" } 
] 
  },

```

.  
[https://github.com/arjenhiemstra/ithowifi/wiki/Non-CVE-units-support#how-to-configure](https://github.com/arjenhiemstra/ithowifi/wiki/Non-CVE-units-support#how-to-configure)

 ![Screenshot_20250814_235851_Chrome](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/0/6/069bc48e176b27e932e9e03cd4229c04f5a8d761.jpeg)

---

<div class="post-metadata">

**Author:** ![Martin\_Tolseinde](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/martin_tolseinde/32/63453_2.png) [@Martin\_Tolseinde](https://community.homey.app/u/Martin_Tolseinde)\
**Post date:** [August 17, 2025, 2:27pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/19 "2025-08-17T14:27:16Z")

</div>

Hey, I’ve tried the Tutorial but got stuck on ‘step 4’. When I hit save the MQTT setup gives me the following in orange: Client Unauthorized.

 ![1000004830](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/4/a/4a62233cd551d9c44ee2d02511a497cd02e00645.png)

Does anybody know what to do? I don’t have any experience with MQTT 😁

Also the following from Homey:

 ![1000004831](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/3/8/3833c6292c5f6a566db15dec76546900f69e648b.png)

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [August 17, 2025, 7:09pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/20 "2025-08-17T19:09:49Z")

</div>

Hi Martin,

Did you configure the MQTT broker, step 2?

Just to make sure: When you run the broker @ Homey, is this Homey’s IP address?

 ![Screenshot_20250817_210256_Chrome](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/7/3/73b9b66ce1ecf368a2cbabec1513221fa709991e.jpeg)

Make sure to reserve an IP address at your DHCP server (usually your ISP’s router) for Homey, it should never change.

However, the error message “_unauthorised_” says the user and/or password are not the same as the one(s) you entered @ the Broker configuration;  
User / passwords are case sensitive; `Martin` is not the same as `martin` for example.  
Often mobile devices auto capitalize the first word in a user / password field.

---

<div class="post-metadata">

**Author:** ![Martin\_Tolseinde](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/martin_tolseinde/32/63453_2.png) [@Martin\_Tolseinde](https://community.homey.app/u/Martin_Tolseinde)\
**Post date:** [August 18, 2025, 5:17pm UTC](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521/21 "2025-08-18T17:17:56Z")

</div>

Thanks for your reply. It works now 🥳 except for the speed rpm/%. I already saw this in an earlier post, so I need to try this out. If I’m correct; I need MQTT Explorer to check for the correct names: the following:

 ![1000004838](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/9/e/9e8b634d4e2764e5ceb4a03e266d666ec20e5959.png)

But now I not sure what needs to be changed 😁

[Next page](https://community.homey.app/t/tutorial-pro-basic-mqtt-setup-connect-itho-daalderop-nrg-watch-interface/139521.md?page=2)
