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

Hi,
as I mentioned earlier please restart only ComfoAirQ-Homie. Not the whole system. During system restarting this known bug is revealed. You can restart it by invoking
systemctl restart comfoairq_homie.service
Or You can use also reload feature of ComfoAirQ-Homie by publishing true to `homie/zehnderq450gateway/controls/reload/set’ topic.

Please use for example MQTT explorer or any other MQTT client and connect to MQTT broker to see all devices and sensors. You will see 2 Homie devices one zehnder450 and other zehnder450gateway. zehnder450 is the main device which is responsible for publishing sensors values and controlling ventilation unit. zehnder450gateway is an administrative device which can be used to for example to disconnect from ComfoConnect LAN C gateway without stopping ComfoAirQ-Homie. It is impossible to use mobile app and ComfoAirQ-Homie in the same time so this switch deactivates connection.

[comfoconnect] [INFO] Unhandled CnNodeNotificationType

It is not an error it’s info and comes from pycomfoconnect library. It’s normal behavior.

My apologies, I didn’t see, or realise what I was reading.

I haven’t done anything more with any of the Things.

But…

I’m very happy to report that simply restarting the Python script did the trick.

systemctl restart comfoairq.service

I must have been changing / fiddling with something else that upset it.

Thanks for persevering with this.

I do really appreciate your time and effort.

Hello,

i am completely new to the Zehnder Q350 and openhab.

Recently (a week ago) I installed my Zehnder in a house in restoration state (at the moment nobody lives there).
I also installed the Comfoconnect LAN C and I am able to control it via the App (Phone and tablet) from everywere via VPN.

Because an app is not my final suggested solution, I prefer a webinterface which I can call from every device (even a PC) i searched the web and foud the solutions here via openhab.

Completely new to this topic yesterday I setup a VM (ubuntu 18.4) and set up openhab, mosquitto and even Klaudiusz scripts / brokers / items and what all :slight_smile:

My first goal was to read values from the device. Cause Paper UI is annoying I set up basic UI, items and a sitemap. WOW, I can read the values :slight_smile:

Now my goal is to set values and here are the questions:

The away Mode is read in seconds. The app asks for a end date. Will there be a good and comfortable way to set it up to transmit an end-date? With some switches I now set up Buttons like “+1 Week” “+1 day” “+1 Month”. With a rule it works :slight_smile:

The bypass is controllable manually but the standard time is ever set to 60 minutes and the value is not changeable. In the app I can set 1-24h. Is it correct, that writing this time is actually not working? Or did someone got it managed?

Thank you for all that work, so my Comfoconnect LAN c is more usable :slight_smile:

Dirk
Zehnder|509x500

1 Like

Hi,

The away Mode is read in seconds. The app asks for a end date. Will there be a good and comfortable way to set it up to transmit an end-date? With some switches I now set up Buttons like “+1 Week” “+1 day” “+1 Month”. With a rule it works :slight_smile:

The easiest solution is to use setpoint in the sitemap. You don’t need to use rules but in one element You can have only one time period ( i.g. 1h, 1day, 1week). There is no simple date time picker in OpenHAB. Custom widget is needed. Maybe You can search the forum to find suitable solution.

The bypass is controllable manually but the standard time is ever set to 60 minutes and the value is not changeable. In the app I can set 1-24h. Is it correct, that writing this time is actually not working? Or did someone got it managed?

Check new version in the repo. I implemented this feature adding two additional controls. There is also an example of the sitemap.

Thank you, it is working great. Setpoints are enough for me :slightly_smiling_face:
So, the most important things are now realized

Thank you :wink:
Dirk

Hello,

First thanks to everyone for the great work !

I have configured everything and see my Zehnder Q450 in Openhab.

Problem is that it is switching between “online” and “online configuration error” in openhab.

Does anyone know this problem or does someone know what to check ?

Thanks!

Hello,

Problem solved, i used the wrong PIN.

It is not the PIN of your Zehnder Q (installer password), but the PIN which you configured when installing the comfoconnect box !

1 Like

Are you interested to createn an actual openhab Binding for the Q series?

Cheers

does it work with OH3?

1 Like

Yes, it works with OH3.
You have to configure in WebUI mqtt broker and add 2 Homie devices.

All items should be auto discovered but You can also use Items definitions from my repo for example to import them in WebUI from textual definiton.

Early OH2.5 versions had issues with Homie devices so I hope with OH3 it will be more stable. I started migration to OH3 a couple days ago. For now i have not noticed any issues.

It’s not on my priority list:-) I think I couldn’t spend to much time for that.
Are You considering starting implementation native OH binding?

If I had your skills I would start :-S for me probably too diddicult.
I thought maybe a java version of the existing stuff would be feasible.
so if its easier to leave the MQTT binding would be ok.
But instead of PHP stuff just 1 binding that connects to the Lanconnect and puts it on mqtt without the other manual steps php + homie etc.

But I am following this thread so long now and there were people like bitweasel that actually had it already up and running that I at some point just implement any solution that works at all.

Recently I installed this ComfoAirQ-Homie tool from @klaudiusz223 on OH 2.5.11 for my Zehnder Q350. Most part is working fine, I did make some small changes to the mqtt publish code, and some DateTime code (.calendar.timeInMillis to .zonedDateTime.toInstant.toEpochMilli), plus added some NULL checks.

I also had this error:

2021-01-19 18:31:03.913 [ERROR] [ansport.mqtt.internal.ClientCallback] - MQTT message received. MqttMessageSubscriber#processMessage() implementation failure
java.lang.IllegalArgumentException: Value must be between 0 and 100
        at org.eclipse.smarthome.core.library.types.PercentType.validateValue(PercentType.java:57) ~[?:?]
        at org.eclipse.smarthome.core.library.types.PercentType.<init>(PercentType.java:52) ~[?:?]
        at org.eclipse.smarthome.core.library.types.DecimalType.as(DecimalType.java:152) ~[?:?]
        at org.eclipse.smarthome.core.internal.items.ItemStateConverterImpl.convertToAcceptedState(ItemStateConverterImpl.java:64) ~[?:?]
        at org.eclipse.smarthome.core.thing.internal.profiles.ProfileCallbackImpl.sendUpdate(ProfileCallbackImpl.java:134) ~[?:?]
        at org.eclipse.smarthome.core.thing.internal.profiles.SystemDefaultProfile.onStateUpdateFromHandler(SystemDefaultProfile.java:53) ~[?:?]
        at org.eclipse.smarthome.core.thing.internal.CommunicationManager.lambda$9(CommunicationManager.java:467) ~[?:?]
        at org.eclipse.smarthome.core.thing.internal.CommunicationManager.lambda$11(CommunicationManager.java:487) ~[?:?]
        at java.lang.Iterable.forEach(Iterable.java:75) ~[?:1.8.0_275]
        at org.eclipse.smarthome.core.thing.internal.CommunicationManager.handleCallFromHandler(CommunicationManager.java:483) ~[?:?]
        at org.eclipse.smarthome.core.thing.internal.CommunicationManager.stateUpdated(CommunicationManager.java:465) ~[?:?]
        at org.eclipse.smarthome.core.thing.internal.ThingManagerImpl$1.stateUpdated(ThingManagerImpl.java:168) ~[?:?]
        at org.eclipse.smarthome.core.thing.binding.BaseThingHandler.updateState(BaseThingHandler.java:245) ~[?:?]
        at org.openhab.binding.mqtt.generic.AbstractMQTTThingHandler.updateChannelState(AbstractMQTTThingHandler.java:274) ~[?:?]
        at org.openhab.binding.mqtt.generic.ChannelState.processMessage(ChannelState.java:204) ~[?:?]
        at org.eclipse.smarthome.io.transport.mqtt.internal.ClientCallback.lambda$3(ClientCallback.java:96) ~[?:?]
        at java.util.ArrayList.forEach(ArrayList.java:1259) ~[?:1.8.0_275]
        at org.eclipse.smarthome.io.transport.mqtt.internal.ClientCallback.messageArrived(ClientCallback.java:96) ~[?:?]
        at org.eclipse.smarthome.io.transport.mqtt.internal.ClientCallback.messageArrived(ClientCallback.java:71) ~[?:?]
        at com.hivemq.client.internal.mqtt.mqtt3.Mqtt3AsyncClientView.lambda$callbackView$1(Mqtt3AsyncClientView.java:73) ~[bundleFile:?]
        at com.hivemq.client.internal.mqtt.MqttAsyncClient$CallbackSubscriber.onNext(MqttAsyncClient.java:227) [bundleFile:?]
        at com.hivemq.client.internal.mqtt.MqttAsyncClient$CallbackSubscriber.onNext(MqttAsyncClient.java:212) [bundleFile:?]
        at com.hivemq.client.rx.FlowableWithSingle$SingleFutureSubscriber.onNext(FlowableWithSingle.java:377) [bundleFile:?]
        at com.hivemq.client.internal.rx.operators.FlowableWithSingleCombine$SplitSubscriber$Default.tryOnNextActual(FlowableWithSingleCombine.java:206) [bundleFile:?]
        at com.hivemq.client.internal.rx.operators.FlowableWithSingleCombine$SplitSubscriber.tryOnNext(FlowableWithSingleCombine.java:171) [bundleFile:?]
        at io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnConditionalSubscriber.runAsync(FlowableObserveOn.java:649) [bundleFile:?]
        at io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176) [bundleFile:?]
        at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66) [bundleFile:?]
        at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57) [bundleFile:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_275]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_275]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_275]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_275]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_275]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_275]

After some trail and error it seems to be caused by the dimmer items (eg. EQ_Ventilation_Supply_Duty). For now I have changed them to Number:Dimensionless and everything seems to work fine. I hope it can help others who are trying to set this up.

hey since there is now this python and jython stuff available as part of openhab scripting is there a way to actually get this “closer” to openhab standards?

best

There is now an official API.
They even Show openhab as example at Minute 8

Now … Who integrates it in a Binding? :slight_smile:

edit
they also have a web portal

1 Like

Zehnder offered to give 1:1 Session to Talk about the API and openhab Integration.
Somebody want to Join? Possibly in German as My Mails with Them were in German.
@klaudiusz223 @stfn82 @michaelarnauts
Interested?

Thnx for the heads up. Would be interesting to see how this develops. Unfortunately I have no coding experience.

I’m also interested. But as @stfn82 I have also very little coding experience. By the way Zehnder shows they have integration with OH. Is it only plans or they already have something?

Hi. Also Interesses with very little coding expertise as well.
Some questions on the way Zender shows it in their video with “OH support” ? What exactly are they claiming to provide ?
RoL

Are you still in contact with Zehnder on the API and is there anything I can help ?