Zehnder ComfoAirQ350 -- do I need ComfoConnect to control it?

They invite soonish for a next Meeting to discuss their API.
If you are a Dev and can Work in the Binding I can pull you in the Fall with Them.

Hi would be so nice to have a binding for this.
Also very interested

I received now access to the beta of their API.
Any Devs here that are interested to work on a binding?
I can also pull you in a direct contact with a Dev on their side.

Let me know.

Are there any news about that binding?

I am interested as well – any news ?

And is it possible to share what shorty707 has received as beta API description ?

Are there any news about a Binding? Maybe even as test version?

1 Like

Guys, I lost myself reading. Can you confirm if there is any way to connect to Q350 without ComfoConnect LAN C?

I think ComfoConnect KNX C module and KNX binding, described here:
Integrating Zehnder ComfoAir 350 using ComfoConnect KNX C - Tutorials & Examples - openHAB Community

I’ve created a rule to send a notification if it’s time to change your filters. At 90, 60, 30 and 7 days or less you get a notification.

Also I noticed that a few times a day the filtertime was increased with 1 and later on it was decreased with 1 again to the actual value. Don’t know what is causing this, but I coded a workaround. NB. you need to persist EQ_Ventilation_Filter_Replace_Remaining_Time for this to work. It could be caused because I restart the comfoair service every 4h, otherwise it hangs so often.

rule "13 Filters vervangen"
    Item EQ_Ventilation_Filter_Replace_Remaining_Time changed
    val filtertimePrevious = EQ_Ventilation_Filter_Replace_Remaining_Time.previousState(true).state
    logInfo("13 Filters vervangen", "Comfoair filtertime = " + EQ_Ventilation_Filter_Replace_Remaining_Time.state.toString)
    logInfo("13 Filters vervangen", "Comfoair previous filtertime = " + String::format("%.0f", (filtertimePrevious as Number).floatValue))
    if ( EQ_Ventilation_Filter_Replace_Remaining_Time.state < filtertimePrevious) {
        logInfo("13 Filters vervangen", "Comfoair filtertime is lager dan de vorige waarde.")
        if (EQ_Ventilation_Filter_Replace_Remaining_Time.state == 90 || EQ_Ventilation_Filter_Replace_Remaining_Time.state == 60 || EQ_Ventilation_Filter_Replace_Remaining_Time.state == 30 || EQ_Ventilation_Filter_Replace_Remaining_Time.state < 8) {
            val telegramAction = getActions("telegram","telegram:telegramBot:Telegram_Bot")
            telegramAction.sendTelegram("Comfoair filtertime is " + EQ_Ventilation_Filter_Replace_Remaining_Time.state.toString)
    } else {
        logInfo("13 Filters vervangen", "Comfoair filtertime is hoger dan de vorige waarde. Melding wordt genegeerd.")
1 Like

@stfn82 How have you managed the connection? I Have a Q350 with Comfo connect Lan. App is working well but i do not manage to get it in OH3. Any suggestion or acces to preview binding would be amazing.

I’m using Klaudiusz’ code, you can find the link to his github if you scroll up.

1 Like

Hi @stfn82,
What firmware version do You have on ComfoConnect LAN gateway? I had similar experience with stability, but once Zehnder released new firmware it resolved all of the stability issues. The version I use is U1.2.6. With this version You can have up to 5 simultanous connections to gateway so it’s possible to use my software and the original one concurently. But there is one issue with this firmware and it’s not resolved neither in pycomfoconnect (which I use) nor filtered in my software. Details about the issue are here Bridge connection fails regularly, followed by 0-values · Issue #44 · michaelarnauts/comfoconnect · GitHub

With this new firmware i do not need to restart nor ComfoAirQ-Homie service neither gateway. Sometimes (very rarely) i need to reconnect to the gateway or reload homie devices (most often only the latter one). Both can be done using Openhab items and rules. Respectively in example configuration in my repo using items
EQ_Ventilation_Gateway_Stay_Connected, vEQ_Ventilation_Gateway_Reload_Timer and the rule "Reload ComfoAirQ Homie"

Since I updated to the newest firmware I haven’t noticed any connection problems. But I do have issue with items becoming 0. Now I understand why. Let’s see if Zehnder gets a new firmware out.

I do not hope that this 0s issue will be resolved in the new firmware. I think that from the Zehnder point of view this is not a bug.
It may be that the original software can recognize these 0s and filters them. Perhaps some information is being sent somewhere between the gateway and the original application and we do not know anything about it

Hi, Thanks @klaudiusz223 for this cool feature. It works fine Except some remaining datetime items that are not OH3 compatible, but this is not a big issue.

I get it working with python3 -m comfoairq_homie -c ~/.local/lib/python3.7/site-packages/comfoairq_homie/comfoairq_homie.yml

But would need a little help to start it as a service automatically. I have read the Systemd service file example, but do not really know where and how to do.

Hi @cmachtel.
Regarding Systemd
Try to find howto and proceed step by step.
Maybe this one will help You. The first I found:
How to create a Systemd service in Linux.
Didn’t read to much it, but I think such Howto will be better than my explanation as I do this very occassionally
Regarding OH3 and dates. I saw Your PR on Github.
My proposal is to prepare separate rule file for OH3. Can You do another PR?
I’ve did only quick test on OH3 and but didn’t migrate my system to OH3 :-(.


Thanks for the Link. I Have done some try but have no idea what i need to put in Working Directory, Envirment Path and ExecStart to fit

python3 -m comfoairq_homie -c ~/.local/lib/python3.7/site-packages/comfoairq_homie/comfoairq_homie.yml

I have tried a few things, but it’s not working. The one from your git does not work. here one of my tries

Description=“Homie4 ComfoAirQ Service”
After=syslog.target network.target mosquitto.service openhab2.service
WorkingDirectory= cd ~/.local/lib/python3.7/site-packages/comfoairq_homie
ExecStart=python3 -m comfoairq_homie -c ~/.local/lib/python3.7/site-packages/comfoairq_homie/comfoairq_homie.yml

For OH3 Rules there are some more changes to do, as soon as it works i will do a new PR

Hi @cmachtel
Try to use full absolute paths in Your config,
should be easier.
WorkingDirectory - When working directory is set you can use relative paths. Paths should be relative to the chosen directory then.

WorkingDirectory= cd ~/.local/lib/python3.7/site-packages/comfoairq_homie

"cd" - not needed
use full path like


use full path
check python3 location in your system

which python3

then try something like that

ExecStart=/usr/bin/python3 -m comfoairq_homie -c /home/your_user_name/.local/lib/python3.7/site-packages/comfoairq_homie/comfoairq_homie.yml

or try to find comfoairq_homie (if installed)

which comfoairq_homie

if found, then try

ExecStart=/full/absolute/path/to/comfoairq_homie -c /home/your_user_name/.local/lib/python3.7/site-packages/comfoairq_homie/comfoairq_homie.yml


Thank you @klaudiusz223 , this helps a little but still not working. I now have

which comfoairq_homie did not work but which comfoairq-homie works

My file currently looks like this. But tried the comfoairq-homie and with _

Thanks for the support

Remove “/usr/bin/python3 -m” from ExecStart.
Do not mix 2 different ways of running python script into one.

Besides, check that the command you put into ExecStart works from the command line. If not, it is unlikely to work as a service.
Please do not send screnshots with the configuration because they are bulky. It’s much better if you send them as a text.