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.
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?
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?
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
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.
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"
when
Item EQ_Ventilation_Filter_Replace_Remaining_Time changed
then
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.")
}
end