[APP][Pro] Nilan Air

Hi @osku The app is in the store now - it’s been accepted.

I also own a Nilan Comfort 300LR with CTS602light and a LAN gateway. Unable to connect when trying to add the unit. Nilan mobile app works fine. I tried to do nmap from a linux host on the lan, port 502 is not open on the gateway device.
Is it currently working for you?

I have it running perfectly.

You need to check your adapter, port that it uses (usually 502) and be sure to use unit id 30, or check your unit id from service menu in case that you have different unit id (usually changed by user..)

@Kim_Kokholm I have made a big update for app (version 1.2.0)

Nilan Air App v1.2.0 (GitHub - oskarirauta/homey-nilan-app: Homey Nilan TCP Modbus driver)

This version updates CTS602 driver. Shortlog:

  • Improvements to insights
  • Support for CTS602 devices (currently supports “general” and “VP18” devices, general comes with all available data)
  • Removal of unsupported sensors/data for VP18
  • Added fan step support
  • Added possibility to change percentages of fan utilizations for fan steps (steps 1-4)

Original post:
I have a Nilan C300 LR that i’ve hook an Elfin EW11 up to, but I can’t get it to connect in Homey. Any hints on what the settings in the EW11 should be and what to enter in the Nilan Homey App when connecting? I know the IP-adress and the TCP port, but I’ve no idea what to enter for Unit ID and I’m unsure how I should configure the EW11 with respects to Baud-rate and such.

New challenge:
I actually got it to connect and it showed up in Homey as “Comfort” after I messed with the Baud rate and Parity and such in the EW11. I am able to change the fan-speed in Homey, but I can’t seem to read any temperatures or humidities or anything like that.
Do you have any idea what might be wrong or how I fix that?
Thanks in advance

Ahhh you sent the dianostics report.

@osku are you able to assist in this matter?

Yes and no..

Here is modbus documentation: homey-nilan-app/docs/2019_03_Modbus_CTS602Light_Modbus.pdf at main · oskarirauta/homey-nilan-app · GitHub

Maybe you could check values with a modbus tcp client application to see what results your device gives. Second.. Do you have CTS602 or CTS700?

I’m very sorry I haven’t replied before now. I simply didn’t see your reply before now and have been a bit busy.
I’ll look into a tcp modvus application and see if 7 can get any readings that way.
It’s a CTS602.

So I downloaded Modus Doctor and tried to communicate with the Elfin and it seemed to work just fine. I’m getting values out:

They seem to corrospond nicely with the adresses in this document for the “Comfort” plant:
[homey-nilan-app/docs/MODBUS_CTS-602_2.16-2.19_Installation-and-user-guide.pdf at main · oskarirauta/homey-nilan-app · GitHub](homey-nilan-app/docs/MODBUS_CTS-602_2.16-2.19_Installation-and-user-guide.pdf at main · oskarirauta/homey-nilan-app · GitHub)

Comfort should be a nok-specific (not supported specially), so it should expose all available features of cts602

So to get a little more specific I actually cloned the repository from github, and ran it locally. I get a lot of this in the cli, when running it (this is just a small samle of the exceptions it reports):

2026-04-19T11:41:47.491Z [log] [ManagerDrivers] [Driver:CTS602] [Device:6fdb666b-4667-4d32-8d08-98d4ca8c3f2c] Read error: UserRequestError {
  err: 'ModbusException',
  message: 'A Modbus Exception Occurred - See Response Body',
  response: ModbusTCPResponse {
    _id: 7,
    _protocol: 0,
    _bodyLength: 3,
    _unitId: 30,
    _body: ExceptionResponseBody { _fc: 3, _code: 2 }
  }
} 1  times
2026-04-19T11:41:49.687Z [log] [ManagerDrivers] [Driver:CTS602] [Device:6fdb666b-4667-4d32-8d08-98d4ca8c3f2c] Read error: UserRequestError {
  err: 'ModbusException',
  message: 'A Modbus Exception Occurred - See Response Body',
  response: ModbusTCPResponse {
    _id: 56,
    _protocol: 0,
    _bodyLength: 3,
    _unitId: 30,
    _body: ExceptionResponseBody { _fc: 4, _code: 2 }
  }
} 2  times

I’m not a javascript or Typescript developer, so I’m not exactly on home-turf in your code, as I usually only code in C#.

Another bonus question… I do not see very many flow-cards in the app. Only 5 Actions. That is correct? Is is just a question of you not having time to expand, or is it completely intentional?

There is a problem with the Modbus read method that fails catastrophically if any of the registers do not exist because it relies on Promis.All. I’ve had AI take a look at it and it had rewritten a suggestion, that I was only able to make a fork of your repo (you should be able to find it and merge it in), which will fix that problem. I’m able to get all the readings expected from my Comfort now when I run the repo locally. Could be great to have it published.

@Kim_Kokholm @osku

Hi there.
I have Nilan 300LR with the CTS602, i connected a waveshare MODBUS/IP converter, but I cant connect it in homey.

Here are my settings on my Elfin EW11. They seem to work perfectly.

Also had to do some initial fiddling with it to get it to work. Also as you can read above, I had to fix some code in the Modbus client of the Nilan Air app to make it work with my Nilan Comfort 300LR

Best of luck.

It works now.

I thought the HMI control panel was using modbus as well. so i was lazy and used the same wires, that didn’t work:-)

Great.
Are you getting all the readings out in Homey?
And do you have the touch display or the old push-button one?

The touch display, and yes I get all the readings in Homey.
I just need an action to change fan speeds.

I’d like to request a flow action card for setting the ventilation fan step (boost level).

Use case: I have a Nilan Comfort 300LR with a radon sensor in my living room. When radon levels exceed 100 Bq/m³, I want to automatically boost the ventilation to step 4 via an Advanced Flow in Homey.

What already exists: The device already exposes the capability fanstep_enum.ventilation (currently showing value "2" in my setup), as well as fan_mode.ventilation and fanstep.inlet. The data is clearly there — it just needs a flow action card to expose it.

What’s missing: A “So…” (action) flow card that allows setting fanstep_enum.ventilation to a value between 1–4, similar to how the existing “Set temperature” action card works.

Expected card:

  • Title: “Set ventilation step”

  • Argument: Dropdown or number input with values 1, 2, 3, 4

  • Capability: fanstep_enum.ventilation

This would make it possible to automate ventilation boost based on radon, CO₂, humidity or other sensor triggers.

Thanks for considering this!