New binding suggestion: Wavin AHC 9000 / Jablotron AC-116

So for the ones losing sleep over this question, the answer is yes it works as is. :slight_smile:

1 Like

Thanks, also confirm it works in oh3.3.

Anybody also have those errors in log?

2023-05-19 09:05:13.887 [ERROR] [odbus.internal.factory.ModbusHandler] - Response TimeOut: Recv timeout 20025 : minLength=5 respIndex=0 #921287 cmd=01430104000405FB
2023-05-19 09:05:36.411 [ERROR] [odbus.internal.factory.ModbusHandler] - Response TimeOut: Recv timeout 20002 : minLength=5 respIndex=0 #921312 cmd=014301090503D6AA
2023-05-19 09:05:56.883 [ERROR] [odbus.internal.factory.ModbusHandler] - Response TimeOut: Recv timeout 20005 : minLength=5 respIndex=0 #921317 cmd=01430207050136EC

I have the same errors.

Recently Updated from OH3.4.0 to 3.4.4 But I am not shure, when the problem came …

some symptoms in random order:

  • (I also have small problems with IHC, but it is LAN, so should not be related)

  • My normal Wavin LCD display works fine

  • Binding seems ok

  • The bridge (ModBusSerialController) shows no error, and are online

  • when i install Wavin AHC9000 it shows as online.

  • but I cant autodetect my telestats and thermostats

  • When i reboot it shows Offline, with message: “BRIDGE_OFFLINE”

  • But Thing ModBusSerialController has status Online

  • When i try to change parameters (like connectTimeoutMillis: 30000) both things stay UNINITIALIZED:

    • and it is not accepting my custom port name /dev/ttyUSBwavin (set in 99-com.rules)
  • I change port to /dev/ttyUSB0

  • Bridge goes Online. AHC9000 changes to OFFLINE (Controller is offline)

  • i delete AHC9000 thing - and install thing again. Now it shows immidiately as offline.

  • my ComfoAir binding also uses USB, and working.

  • Serial and normal modbus binding (controlling a lot of Arduinos through rs485 (also through USB) also working.

I’m clueless and frustated


2023-05-25 11:18:45.519 [DEBUG] [us.internal.factory.ModbusActionFeed] - execFastActions (3)

2023-05-25 11:18:47.520 [DEBUG] [org.eclipse.jetty.server.HttpOutput ] - write(array) s=OPEN,api=BLOCKING,sc=false,e=null aggregated !flush DirectByteBuffer@190d1b0[p=0,l=49,c=32768,r=49]={<<<event: alive\ndata: {"type...:"ALIVE","interval":10}>>>rtmodbus:...\x00\x00\x00\x00\x00\x00\x00}

2023-05-25 11:18:47.521 [DEBUG] [org.eclipse.jetty.server.HttpChannel] - sendResponse info=null content=DirectByteBuffer@190d1b0[p=0,l=49,c=32768,r=49]={<<<event: alive\ndata: {"type...:"ALIVE","interval":10}>>>rtmodbus:...\x00\x00\x00\x00\x00\x00\x00} complete=false committing=false callback=Blocker@ee4a07{null}

2023-05-25 11:18:47.523 [DEBUG] [ ] - write: WriteFlusher@1e316ba{IDLE}->null [HeapByteBuffer@10ea155[p=0,l=6,c=1024,r=6]={<<<\r\n31\r\n>>>\n\n\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00},DirectByteBuffer@190d1b0[p=0,l=49,c=32768,r=49]={<<<event: alive\ndata: {"type...:"ALIVE","interval":10}>>>rtmodbus:...\x00\x00\x00\x00\x00\x00\x00}]

2023-05-25 11:18:48.832 [ERROR] [odbus.internal.factory.ModbusHandler] - Response TimeOut: Recv timeout 10024 : minLength=5 respIndex=0 #50 cmd=0143000000030404

Has anybody tried the binding with OH4? Is it compatible? Thanks

I tried today, but not successful:

The 3 packages (rxjava, Apache Commons IO, reactive-streams) and the bundle installs ok, and shows as active in console bundle:list

But the binding doesnt show in UI, so i cant autodetect.

No warnings/errors in log
Maybee stuff needs upgrade to java17 ?

I will stay on 3.4.4 until fixed

1 Like

Problem in post 224 solved.
It was hardware.
(i had to change the r485 interface to another type. I dont know why … )

Hi Peter, thank you! Do you mean the version for 3.4.4 works with OH 4.0.1?
Ok, I did some test with test setup and it didn’t work for me, looks like some compatibility issue with OH 4, the method DecimalType seems removed there:

2023-08-11 22:46:58.456 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception:
java.lang.NoSuchMethodError: ‘void org.openhab.core.library.types.DecimalType.(long)’
at org.openhab.binding.zmartmodbus.internal.protocol.converter.ModbusBaseConverter.fromModbusToState( ~[?:?]
at org.openhab.binding.zmartmodbus.internal.factory.ModbusFactory.lambda$0( ~[?:?]
at java.util.concurrent.CopyOnWriteArrayList.forEach( ~[?:?]
at org.openhab.binding.zmartmodbus.internal.factory.ModbusFactory.updateDataSet( ~[?:?]
at org.openhab.binding.zmartmodbus.internal.factory.ModbusFactory$2.onNext( ~[?:?]
at org.openhab.binding.zmartmodbus.internal.factory.ModbusFactory$2.onNext( ~[?:?]
at org.openhab.binding.zmartmodbus.internal.controller.ModbusController.lambda$6( ~[?:?]
at io.reactivex.internal.subscribers.LambdaSubscriber.onNext( ~[?:?]
at io.reactivex.internal.operators.flowable.FlowableFilter$FilterSubscriber.tryOnNext( ~[?:?]
at io.reactivex.internal.operators.flowable.FlowableFilter$FilterSubscriber.onNext( ~[?:?]
at io.reactivex.internal.operators.flowable.FlowablePublish$PublishSubscriber.dispatch( ~[?:?]
at io.reactivex.internal.operators.flowable.FlowablePublish$PublishSubscriber.onNext( ~[?:?]
at io.reactivex.internal.operators.flowable.FlowableCreate$BufferAsyncEmitter.drain( ~[?:?]
at io.reactivex.internal.operators.flowable.FlowableCreate$BufferAsyncEmitter.onNext( ~[?:?]
at org.openhab.binding.zmartmodbus.internal.controller.ModbusController$6.modbusMessage( ~[?:?]
at org.openhab.binding.zmartmodbus.internal.factory.ModbusHandler$1.onNext( ~[?:?]
at org.openhab.binding.zmartmodbus.internal.factory.ModbusHandler$1.onNext( ~[?:?]
at org.openhab.binding.zmartmodbus.internal.controller.ModbusController.lambda$4( ~[?:?]
at io.reactivex.internal.subscribers.LambdaSubscriber.onNext( ~[?:?]
at io.reactivex.internal.operators.flowable.FlowablePublish$PublishSubscriber.dispatch( ~[?:?]
at io.reactivex.internal.operators.flowable.FlowablePublish$PublishSubscriber.onNext( ~[?:?]
at io.reactivex.internal.operators.flowable.FlowableCreate$BufferAsyncEmitter.drain( ~[?:?]
at io.reactivex.internal.operators.flowable.FlowableCreate$BufferAsyncEmitter.onNext( ~[?:?]
at org.openhab.binding.zmartmodbus.internal.controller.ModbusController$5.modbusAction( ~[?:?]
at org.openhab.binding.zmartmodbus.internal.factory.ModbusActionFeed.lambda$3( ~[?:?]
at java.util.ArrayList.forEach( ~[?:?]
at java.util.Collections$SynchronizedCollection.forEach( ~[?:?]
at org.openhab.binding.zmartmodbus.internal.factory.ModbusActionFeed.execFastActions( ~[?:?]
at org.openhab.binding.zmartmodbus.handler.ModbusBridgeHandler$ ~[?:?]
at java.util.concurrent.Executors$ ~[?:?]
at java.util.concurrent.FutureTask.runAndReset( ~[?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker( ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$ ~[?:?]
at ~[?:?]

It only worked on 3.4.4

for OH4:
The binding from Peter needs javax.measurement
My version of the binding:

  • installs without errors
  • But when i try to add SerialBridge through UI - then binding zmartify doesnt show up :frowning:
    (I can make through SerialBridge though things-file. It shows as online - but it doesnt detect anything)

That’s a pity, hope somebody can make it OH 4 compatible.

I tried on OH3.4.5 with java17 with succes, so java17 or dependencies is not the problem.

I can make all the things/bridge manually in OH4 through file definition. They show online, and debug shows communication to be working …
But they lack some essential proporties, that they get in OH3 through Discovery (especially channel numbers). So:

a) Either I need to get OH4 to recognize the binding, so i can do thing-Discovery
b) or adjust binding, to be OH4 compatible
c) or i find a way to hack the things created through file, and add the proporties manually

I am not skilled in java, binding programming etc., so any clue would be very welcome

i did a)
I managed to adapt the code (Although all this maven, java, github-thing is way over my head)
to OH4 (the “binding” folder in src/main/resources/OH-INF (and all tags, filenames, etc. needs to be renamed to “addon”).

The binding works, i can do discovery, everything works …
Almost …
When i write to the ManualTemp-channel (to set desired temperature) , the number is accepted by OH … but then some seconds later, is readjusted to divided by 10. (22 → 2.2)
The number is also adjusted on the thermostats.
(When i adjust on the actual wavin TP-150 thermostat, the number isn’t readjusted )

I think the binding somehow doesn’t sends the value correctly to AHC9000. But debugging Peters java program, is not something i can do)

Edit: 29-10-23:
I updated all dependencies. PRoblem is the same.