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

Hi Peter,

I’ve installed your latest binding and had a chance to do some testing today vs what the Wavin screen shows. To install I removed the TP150s and re-discovered, also removed screen when testing openhab.

Doesn’t quote map correctly in my case yet…

Screen shows_________________________PaperUI Control Page
Living Room is set to Schedule____________Manual
Kitchen is set to Eco____________________Manual

events.log all showing as coming through as 0 upon startup:

  • LivingRoom_ThemostatMode changed from NULL to 0
  • Kitchen_ThemostatMode changed from NULL to 0

Ok - Steve, I will look into. Next weekend so we can get it fixed :slight_smile:

Hi Peter,

Couple of other things I’ve noticed:

  • My Hall zone desired temp always comes through as a zero even though all other zones are ok. Wavin display shows it is set.
  • I get a lot of these exceptions upon reboots and service restarts:
2019-11-19 20:02:09.119 [INFO ] [internal.controller.ModbusController] - Starting ModbusFunction controller org.openhab.binding.zmartmodbus.handler.ModbusBridgeHandler@7db82e - {}

2019-11-19 20:02:09.227 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: 

java.util.ConcurrentModificationException: null

	at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1561) ~[?:?]

	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) ~[?:?]

	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) ~[?:?]

	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[?:?]

	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]

	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566) ~[?:?]

	at org.eclipse.smarthome.io.transport.serial.internal.SerialPortRegistry.getPortProvidersForPortName(SerialPortRegistry.java:86) ~[?:?]

	at org.eclipse.smarthome.io.transport.serial.internal.SerialPortManagerImpl.getIdentifier(SerialPortManagerImpl.java:85) ~[?:?]

	at org.openhab.binding.zmartmodbus.internal.transceiver.ModbusSerialTransceiver.connect(ModbusSerialTransceiver.java:70) ~[?:?]

	at org.openhab.binding.zmartmodbus.handler.ModbusBridgeHandler.initTransceiver(ModbusBridgeHandler.java:127) ~[?:?]

	at org.openhab.binding.zmartmodbus.handler.ModbusBridgeHandler$1.run(ModbusBridgeHandler.java:109) ~[?:?]

	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:?]

	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) ~[?:?]

	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) ~[?:?]

	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) ~[?:?]

	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]

	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]

	at java.lang.Thread.run(Thread.java:748) [?:?]

2019-11-19 20:02:09.373 [INFO ] [artmodbus.handler.ModbusThingHandler] - Initialize Bridge OFFLINE for thing zmartmodbus:jablotron_actuator:3dfdc0b0:chn5

2019-11-19 20:02:09.381 [INFO ] [artmodbus.handler.ModbusThingHandler] - Initialize Bridge OFFLINE for thing zmartmodbus:jablotron_actuator:3dfdc0b0:chn6

Was there anything you wanted me to test?

hi Peter,

Did you manage to track down that concurrent exception upon start up?

Hi Steve, I have made some changes which should solve it. I will make a new release available tomorrow afternoon

best regards,
Peter

Great, happy to test, just let me know!

Hi,

I checked your github recently, is there an update?

1 Like

@zmartify Hello Peter,

Is this still being developed or is there another binding for this ?

Thanks.

Hi Thomas, I am right now updating it for OpenHAB 3
Rgds,
Peter

2 Likes

Is this binding working well with the ahc 9000. I’m considering getting it because of the binding.

I never managed to make 2.x binding to work, hopefully we’ll have a wavin binding for oh3 soon!

1.I have tried to compile your zip, to .jar using maven and VScode:

2. copy 2 resulting .jar files (from ‘target’ dir) in /usr/share/openhab/addons

But bundle is not resesolved, (only installed) … according to console.
openhab> bundle:diag 233

openHAB Add-ons :: Bundles :: ZmartModbus Binding (233)
-------------------------------------------------------
Status: Installed
Unsatisfied Requirements:
osgi.wiring.package; filter:="(&(osgi.wiring.package=io.reactivex)(&(version>=2.2.0)(!(version>=3.0.0))))"
osgi.wiring.package; filter:="(&(osgi.wiring.package=io.reactivex.disposables)(&(version>=2.2.0)(!(version>=3.0.0))))"
osgi.wiring.package; filter:="(&(osgi.wiring.package=io.reactivex.flowables)(&(version>=2.2.0)(!(version>=3.0.0))))"
osgi.wiring.package; filter:="(&(osgi.wiring.package=io.reactivex.functions)(&(version>=2.2.0)(!(version>=3.0.0))))"
Declarative Services

I’m using it everyday :slight_smile:

1 Like

Hi Peter,

Will you share the binding of OH3?
Sorry I’m not technical and don’t know how to compile the project…

Thanks

Hi Mai,
Here is a link to zip file, which contains 3 jar files. Decompress the zip and put the 3 jar files in the addons folder and you should be up and running. If not - get back to me :wink:

https://github.com/zmartify/org.openhab.binding.zmartmodbus/blob/master/zmartmodbus%20-%20to%20addons%20folder.zip

Best regards,
Peter

Hi Peter, thanks a lot for the binding! I think I managed to get it work now. Will report is any issue. Just two quick question: I see two types of things:
(1) Wavin Actuator Channel XX
(2) Wavin TP-150 Channel XX Element XX - looks like temperatures settings are here.
What is (1) used for?

In the previous version the channel “ThermostatActive” indicate if heating is active or not. In this version which channel should I use?
Thanks in advance!

Just add all channels I can see below:

Hi zmartify (Peter Kristensen)

I’m So glad that you have made this bindingfor OH3 so thank you for that :slight_smile:

I’m that happy user of Openhab who is currently in use with 2 IHC installation and 4 Velux windows and my next endeavour is to get my 2 Wavin AHC 9000 units connected to the OpenHab 3 system… So your work is definately “water on my mill” so to speak… Very Happy! :slight_smile:

However i have some trouble setting it up… I have tried to carefully read the thread in here but i cant find what i’m looking for…

  • I currently have done a fresh installation of OH3 on a Raspberry PI 3B+ (my test setup so the live setup is not disturbed until thoroughly tested)
  • I have installed bindings for IHC and Velux but not set them up yet
  • I have copied the 3 files from your Github repository to /addonfolder under Openhab
  • I have connected the AHC 9000 to the RPI via an USB to RS485 adapter and can see activity in datalines (LED blinking on adapter and measurement with oscilloscope)
  • I have rebooted the RPI after copying the 3 jar files
    But… i cannot see any things or bindings comming up in hte OH3 interface…

What am i missing??

a things file containing:
Bridge Port=serial /dev/ttyUSB0 id=1 Baud=384000…??

A little lost here… Looking forward to your help :slight_smile:

Br
M Klitgaard

Hi again

I have taken your TCP Example code and modified it to:

Bridge modbus:serial[ port="/dev/ttyUSB0", id=2, baud=38400, stopBits=“1.0”, parity=“none”, dataBits=8, encoding=“rtu”] {
// read-write for coils. Reading 4 coils, with index 4, and 5.
// These correspond to input register numbers 000005, and 000005
Bridge poller coils [ start=4, length=2, refresh=1000, type=“coil” ] {
// Note the zero based indexing: first coil is index 0.
Thing data do4 [ readStart=“4”, readValueType=“bit”, writeStart=“4”, writeValueType=“bit”, writeType=“coil” ]
Thing data do5 [ readStart=“5”, readValueType=“bit”, writeStart=“5”, writeValueType=“bit”, writeType=“coil” ]
}
// read-write for holding registers. Reading 4 registers, with index 1500, 1501, 1502, 1503.
// These correspond to holding register numbers 401501, 401502, 401503, 401504.
Bridge poller holding [ start=1500, length=4, refresh=1000, type=“holding” ] {
Thing data holding1500 [ readStart=“1500”, readValueType=“float32”, writeStart=“1500”, writeValueType=“float32”, writeType=“holding” ]
Thing data holding1502 [ readStart=“1502”, readValueType=“float32”, writeStart=“1502”, writeValueType=“float32”, writeType=“holding” ]
}
// read-only for input registers. Reading 4 registers, with index 1500, 1501, 1502, 1503.
// These correspond to input register numbers 301501, 301502, 301503, 301504.
Bridge poller inputRegisters [ start=1500, length=4, refresh=1000, type=“input” ] {
Thing data input1500 [ readStart=“1500”, readValueType=“float32” ]
Thing data input1502 [ readStart=“1502”, readValueType=“float32” ]

    // Extract high or low byte of the 16-bit register as unsigned 8-bit integer (uint8)
    Thing data input1502lo [ readStart="1502.0", readValueType="uint8" ]
    Thing data input1502hi [ readStart="1502.1", readValueType="uint8" ]

    // Extract individual bits of the 16-bit register
    // bit 0 is the least significant bit, and bit 15 is the most significant bit
    Thing data input1502bit0 [ readStart="1502.0", readValueType="bit" ]
    Thing data input1502bit1 [ readStart="1502.1", readValueType="bit" ]
    Thing data input1502bit2 [ readStart="1502.2", readValueType="bit" ]
}

// read-only for discrete inputs. Reading 4 discrete inputs, with index 1200, 1201, 1202, 1203.
// These correspond to input register numbers 101201, 101202, 101203, 101204.
Bridge poller discreteInputs [ start=1200, length=4, refresh=1000, type="discrete" ] {
    Thing data di1200 [ readStart="1200", readValueType="bit" ]
    Thing data di1201 [ readStart="1201", readValueType="bit" ]
}

// Write-only entry: thing is child of tcp directly. No readStart etc. need to be defined.
// Note that the openHAB state might differ from the physical slave since it is not refreshed at all
Thing data holding5write [ writeStart="5", writeValueType="int16", writeType="holding" ]

}

Is this right?

Thanks in advance :slight_smile: