ConnectorIO / connectorio-addons

Dedicated repository for openHAB software extensions maintained by ConnectorIO.
Apache License 2.0
18 stars 11 forks source link

Support for jrxtx serial bridge. #31

Closed splatch closed 5 months ago

splatch commented 9 months ago

Bring back another flavor of forked rxtx code in order to limit discarted data by jmbus. This change attemps to address #28.

[manual backport of 3.0.x changes on top of most recent 4.0.x]

splatch commented 8 months ago

@JensHoRi Please try this archive: https://repository.connectorio.cloud/repository/co7io-public-snapshots/org/connectorio/addons/org.connectorio.addons.kar.wmbus/4.0.0-78c29ff-SNAPSHOT/org.connectorio.addons.kar.wmbus-4.0.0-78c29ff-20231011.223637-1.kar

Installation procedure - go to openhab console and do kar:install <url>. Addon name has been changed to co7io-wmbus.

Please use serial-jrxtx bridge instead of serial and let me know if it works any better.

JensHoRi commented 8 months ago

Hi Lukasz,

i just dropped in addons Folder, waiting for installation now.

I have no idea how to change the serial bridge.

Following are active yet: openhab> bundle:list -s | grep serial 255 x Active x 80 x 5.2.1.OH1 x nrjavaserial 292 x Active x 80 x 4.0.3 x org.openhab.core.config.discovery.usbserial 293 x Active x 80 x 4.0.3 x org.openhab.core.config.discovery.usbserial.linuxsysfs 294 x Active x 80 x 4.0.3 x org.openhab.core.config.discovery.usbserial.ser2net 295 x Active x 80 x 4.0.3 x org.openhab.core.config.serial 298 x Active x 80 x 4.0.3 x org.openhab.core.io.transport.serial 299 x Active x 80 x 4.0.3 x org.openhab.core.io.transport.serial.rxtx 300 x Active x 80 x 4.0.3 x org.openhab.core.io.transport.serial.rxtx.rfc2217

In earlier times I noticed the order of activation of addons was really important otherwise I got problems with enocean or zwave. I believe order of installation defined serial is used.

How can I switch between serial bridges? Important is, I need to be able to get back (see last paragraph).

After is installed and I found time for further checks, I will inform you about results.

splatch commented 8 months ago

You don't have to change anything with serial settings, just install co7io-wmbus binding. The serial-jrxtx bridge is specific to wmbus binding. Once you install binding there should be io.transport.serial.jrxtx module which ships jrxtx classes but rely on nrjavaserial native binding. A bit tricky but it should work. In short - binding does not touch standard serial port provider, it in fact uses it via different api.

JensHoRi commented 8 months ago

Tried to install via add-ons folder ==> Does nothing Tried via openhab console as written by you. No Error, no log entry, no installation.

I'm lost.

splatch commented 8 months ago

Please check if KAR was properly recognized with kar:list command.

If you see it there you can install whole thing with features:install openhab-binding-co7io-wmbus command.

JensHoRi commented 8 months ago

kar was listed

installed with feature:install openhab-binding-co7io-wmbus

old bridge with serial could be enabled, come online directly. Disabled old bridge

Created new bridge with jrxtx-serial: This stucks in status initialization and log shows following error:

2023-10-13 14:04:37.287 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception:
java.lang.NoClassDefFoundError: gnu/io/UnsupportedCommOperationException
        at org.openmuc.jrxtx.SerialPortBuilder.build(SerialPortBuilder.java:166) ~[?:?]
        at org.openmuc.jmbus.transportlayer.SerialLayer.open(SerialLayer.java:30) ~[?:?]
        at org.openmuc.jmbus.wireless.AbstractWMBusConnection.open(AbstractWMBusConnection.java:77) ~[?:?]
        at org.openmuc.jmbus.wireless.WMBusConnection$Builder.build(WMBusConnection.java:163) ~[?:?]
        at org.openmuc.jmbus.wireless.WMBusConnection$WMBusSerialBuilder.build(WMBusConnection.java:97) ~[?:?]
        at org.connectorio.addons.binding.wmbus.internal.handler.WMBusSerialJrxtxBridgeHandler$1.run(WMBusSerialJrxtxBridgeHandler.java:79) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.ClassNotFoundException: gnu.io.UnsupportedCommOperationException cannot be found by org.connectorio.addons.io.transport.mbus_4.0.0.78c29ff-SNAPSHOT
        at org.eclipse.osgi.internal.loader.BundleLoader.generateException(BundleLoader.java:541) ~[org.eclipse.osgi-3.18.0.jar:?]
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:536) ~[org.eclipse.osgi-3.18.0.jar:?]
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416) ~[org.eclipse.osgi-3.18.0.jar:?]
        at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168) ~[org.eclipse.osgi-3.18.0.jar:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?]
        ... 12 more
splatch commented 8 months ago

Created new bridge with jrxtx-serial: This sucks in status initialization and log shows following error:

I haven't ran into this one. I'll probably have to revisit imports on mbus transport.

splatch commented 8 months ago

@JensHoRi can you try repeating above procedure after cleaning up cache? Let me know what is configuration of addons you run, I'll need these to reproduce issue.

JensHoRi commented 8 months ago

Cleaned the cache, tried again. Still same error:

2023-10-15 11:10:14.417 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception:
java.lang.NoClassDefFoundError: gnu/io/UnsupportedCommOperationException
        at org.openmuc.jrxtx.SerialPortBuilder.build(SerialPortBuilder.java:166) ~[?:?]
        at org.openmuc.jmbus.transportlayer.SerialLayer.open(SerialLayer.java:30) ~[?:?]
        at org.openmuc.jmbus.wireless.AbstractWMBusConnection.open(AbstractWMBusConnection.java:77) ~[?:?]
        at org.openmuc.jmbus.wireless.WMBusConnection$Builder.build(WMBusConnection.java:163) ~[?:?]
        at org.openmuc.jmbus.wireless.WMBusConnection$WMBusSerialBuilder.build(WMBusConnection.java:97) ~[?:?]
        at org.connectorio.addons.binding.wmbus.internal.handler.WMBusSerialJrxtxBridgeHandler$1.run(WMBusSerialJrxtxBridgeHandler.java:79) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.ClassNotFoundException: gnu.io.UnsupportedCommOperationException cannot be found by org.connectorio.addons.io.transport.mbus_4.0.0.78c29ff-SNAPSHOT
        at org.eclipse.osgi.internal.loader.BundleLoader.generateException(BundleLoader.java:541) ~[org.eclipse.osgi-3.18.0.jar:?]
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:536) ~[org.eclipse.osgi-3.18.0.jar:?]
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416) ~[org.eclipse.osgi-3.18.0.jar:?]
        at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168) ~[org.eclipse.osgi-3.18.0.jar:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?]
        ... 12 more

List of add-ons I installed:

openhab> bundle:list -s
START LEVEL 100 , List Threshold: 50
 ID │ State  │ Lvl │ Version                │ Symbolic name
────┼────────┼─────┼────────────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────
 30 │ Active │  80 │ 2.14.1                 │ com.fasterxml.jackson.core.jackson-annotations
 31 │ Active │  80 │ 2.14.1                 │ com.fasterxml.jackson.core.jackson-core
 32 │ Active │  80 │ 2.14.1                 │ com.fasterxml.jackson.core.jackson-databind
 33 │ Active │  80 │ 2.14.1                 │ com.fasterxml.jackson.dataformat.jackson-dataformat-yaml
 34 │ Active │  80 │ 2.14.1                 │ com.fasterxml.jackson.datatype.jackson-datatype-jsr310
 35 │ Active │  80 │ 6.2.6                  │ com.fasterxml.woodstox.woodstox-core
 36 │ Active │  80 │ 2.9.1                  │ com.google.gson
 37 │ Active │  80 │ 30.1.0.jre             │ com.google.guava
 38 │ Active │  80 │ 1.0.1                  │ com.google.guava.failureaccess
 39 │ Active │  80 │ 5.0.1.v20210324-2015   │ com.google.inject
 40 │ Active │  80 │ 5.12.1                 │ com.sun.jna
 41 │ Active │  80 │ 5.12.1                 │ com.sun.jna.platform
 43 │ Active │  80 │ 4.8.149.v20220915-0556 │ io.github.classgraph
 44 │ Active │  80 │ 0.18.0                 │ io.methvin.directory-watcher
 45 │ Active │  80 │ 2.1.9                  │ io.swagger.core.v3.swagger-annotations
 46 │ Active │  80 │ 2.1.9                  │ io.swagger.core.v3.swagger-core
 47 │ Active │  80 │ 2.1.9                  │ io.swagger.core.v3.swagger-integration
 48 │ Active │  80 │ 2.1.9                  │ io.swagger.core.v3.swagger-jaxrs2
 49 │ Active │  80 │ 2.1.9                  │ io.swagger.core.v3.swagger-models
 51 │ Active │  80 │ 2.0.2                  │ jakarta.validation.jakarta.validation-api
 53 │ Active │  80 │ 2.3.3                  │ jakarta.xml.ws-api
 54 │ Active │  80 │ 1.2                    │ javax.annotation-api
 55 │ Active │  80 │ 3.5.8                  │ javax.jmdns
 56 │ Active │  80 │ 2.1.3                  │ javax.measure.unit-api
 58 │ Active │  80 │ 0.5.10                 │ jollyday
 59 │ Active │  80 │ 3.2.0.v201101311130    │ org.antlr.runtime
 60 │ Active │  80 │ 1.0.0.v201105210816    │ org.aopalliance
 61 │ Active │  80 │ 1.2.2                  │ org.apache.aries.component-dsl.component-dsl
 62 │ Active │  80 │ 1.0.1                  │ org.apache.aries.javax.jax.rs-api
 63 │ Active │  80 │ 2.0.0                  │ org.apache.aries.jax.rs.whiteboard
 64 │ Active │  80 │ 1.3.6                  │ org.apache.aries.spifly.dynamic.bundle
 65 │ Active │  80 │ 3.12.0                 │ org.apache.commons.lang3
 66 │ Active │  80 │ 3.4.5                  │ org.apache.cxf.cxf-core
 67 │ Active │  80 │ 3.4.5                  │ org.apache.cxf.cxf-rt-frontend-jaxrs
 68 │ Active │  80 │ 3.4.5                  │ org.apache.cxf.cxf-rt-rs-client
 69 │ Active │  80 │ 3.4.5                  │ org.apache.cxf.cxf-rt-rs-sse
 70 │ Active │  80 │ 3.4.5                  │ org.apache.cxf.cxf-rt-security
 71 │ Active │  80 │ 3.4.5                  │ org.apache.cxf.cxf-rt-transports-http
 77 │ Active │  80 │ 4.4.3                  │ org.apache.karaf.event
 88 │ Active │  80 │ 1.0.0.2                │ org.apache.servicemix.bundles.javax-inject
 95 │ Active │  80 │ 2.2.5                  │ org.apache.ws.xmlschema.core
 96 │ Active │  80 │ 0.9.3                  │ org.bitbucket.b_c.jose4j
 97 │ Active │  80 │ 2.17.0.v20190920-0401  │ org.eclipse.emf.common
 98 │ Active │  80 │ 2.20.0.v20190920-0401  │ org.eclipse.emf.ecore
 99 │ Active │  80 │ 2.14.0.v20190528-0725  │ org.eclipse.emf.ecore.change
100 │ Active │  80 │ 2.16.0.v20190528-0725  │ org.eclipse.emf.ecore.xmi
101 │ Active │  80 │ 3.13.0.v20200828-1034  │ org.eclipse.equinox.common
103 │ Active │  80 │ 9.4.50.v20221201       │ org.eclipse.jetty.alpn.client
104 │ Active │  80 │ 9.4.50.v20221201       │ org.eclipse.jetty.alpn.java.client
110 │ Active │  80 │ 9.4.50.v20221201       │ org.eclipse.jetty.http2.client
117 │ Active │  80 │ 9.4.50.v20221201       │ org.eclipse.jetty.proxy
125 │ Active │  80 │ 9.4.50.v20221201       │ org.eclipse.jetty.websocket.api
126 │ Active │  80 │ 9.4.50.v20221201       │ org.eclipse.jetty.websocket.client
127 │ Active │  80 │ 9.4.50.v20221201       │ org.eclipse.jetty.websocket.common
128 │ Active │  80 │ 9.4.50.v20221201       │ org.eclipse.jetty.websocket.server
129 │ Active │  80 │ 9.4.50.v20221201       │ org.eclipse.jetty.websocket.servlet
131 │ Active │  80 │ 0.19.0.v20221118-0359  │ org.eclipse.lsp4j
132 │ Active │  80 │ 0.19.0.v20221118-0359  │ org.eclipse.lsp4j.jsonrpc
133 │ Active │  80 │ 2.29.0.v20221121-0915  │ org.eclipse.xtend.lib
134 │ Active │  80 │ 2.29.0.v20221121-0915  │ org.eclipse.xtend.lib.macro
135 │ Active │  80 │ 2.29.0.v20221121-0917  │ org.eclipse.xtext
136 │ Active │  80 │ 2.29.0.v20221121-0924  │ org.eclipse.xtext.common.types
137 │ Active │  80 │ 2.29.0.v20221121-0917  │ org.eclipse.xtext.ide
138 │ Active │  80 │ 2.29.0.v20221121-0917  │ org.eclipse.xtext.util
139 │ Active │  80 │ 2.29.0.v20221121-0924  │ org.eclipse.xtext.xbase
140 │ Active │  80 │ 2.29.0.v20221121-0924  │ org.eclipse.xtext.xbase.ide
141 │ Active │  80 │ 2.29.0.v20221121-0915  │ org.eclipse.xtext.xbase.lib
145 │ Active │  80 │ 9.4.0                  │ org.objectweb.asm.commons
146 │ Active │  80 │ 9.4.0                  │ org.objectweb.asm.tree
147 │ Active │  80 │ 9.4.0                  │ org.objectweb.asm.tree.analysis
148 │ Active │  80 │ 9.4.0                  │ org.objectweb.asm.util
149 │ Active │  80 │ 1.0.0                  │ org.openhab.base-fixes
150 │ Active │  80 │ 4.0.3                  │ org.openhab.core
151 │ Active │  80 │ 4.0.3                  │ org.openhab.core.addon
152 │ Active │  80 │ 4.0.3                  │ org.openhab.core.addon.marketplace
153 │ Active │  80 │ 4.0.3                  │ org.openhab.core.addon.marketplace.karaf
154 │ Active │  80 │ 4.0.3                  │ org.openhab.core.audio
155 │ Active │  80 │ 4.0.3                  │ org.openhab.core.auth.jaas
156 │ Active │  80 │ 4.0.3                  │ org.openhab.core.auth.oauth2client
157 │ Active │  80 │ 4.0.3                  │ org.openhab.core.automation
158 │ Active │  80 │ 4.0.3                  │ org.openhab.core.automation.module.media
159 │ Active │  80 │ 4.0.3                  │ org.openhab.core.automation.module.script
160 │ Active │  80 │ 4.0.3                  │ org.openhab.core.automation.module.script.rulesupport
161 │ Active │  80 │ 4.0.3                  │ org.openhab.core.automation.rest
162 │ Active │  80 │ 4.0.3                  │ org.openhab.core.config.core
163 │ Active │  80 │ 4.0.3                  │ org.openhab.core.config.discovery
164 │ Active │  80 │ 4.0.3                  │ org.openhab.core.config.discovery.mdns
165 │ Active │  80 │ 4.0.3                  │ org.openhab.core.config.dispatch
166 │ Active │  80 │ 4.0.3                  │ org.openhab.core.ephemeris
167 │ Active │  80 │ 4.0.3                  │ org.openhab.core.id
168 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.console
169 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.console.karaf
170 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.http
171 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.http.auth
173 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.monitor
174 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.net
175 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.rest
176 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.rest.audio
177 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.rest.auth
178 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.rest.core
179 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.rest.mdns
180 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.rest.sitemap
181 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.rest.sse
182 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.rest.swagger
183 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.rest.transform
184 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.rest.ui
185 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.rest.voice
186 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.transport.mdns
187 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.websocket
188 │ Active │  80 │ 4.0.3                  │ org.openhab.core.karaf
189 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.core
190 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.item
191 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.item.ide
192 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.item.runtime
193 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.lsp
194 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.persistence
195 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.persistence.ide
196 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.persistence.runtime
197 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.rule
198 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.rule.ide
199 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.rule.runtime
200 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.script
201 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.script.ide
202 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.script.runtime
203 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.sitemap
204 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.sitemap.ide
205 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.sitemap.runtime
206 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.thing
207 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.thing.ide
208 │ Active │  80 │ 4.0.3                  │ org.openhab.core.model.thing.runtime
209 │ Active │  80 │ 4.0.3                  │ org.openhab.core.persistence
210 │ Active │  80 │ 4.0.3                  │ org.openhab.core.semantics
211 │ Active │  80 │ 4.0.3                  │ org.openhab.core.storage.json
212 │ Active │  80 │ 4.0.3                  │ org.openhab.core.thing
213 │ Active │  80 │ 4.0.3                  │ org.openhab.core.transform
214 │ Active │  80 │ 4.0.3                  │ org.openhab.core.ui
215 │ Active │  80 │ 4.0.3                  │ org.openhab.core.ui.icon
216 │ Active │  80 │ 4.0.3                  │ org.openhab.core.voice
217 │ Active │  80 │ 4.0.3                  │ org.openhab.ui
218 │ Active │  80 │ 4.0.3                  │ org.openhab.ui.iconset.classic
228 │ Active │  80 │ 1.0.0.201802012106     │ org.osgi.service.jaxrs
229 │ Active │  80 │ 1.5.0                  │ org.threeten.extra
230 │ Active │  80 │ 1.33.0                 │ org.yaml.snakeyaml
231 │ Active │  80 │ 2.1                    │ si-units
232 │ Active │  80 │ 2.1.0                  │ si.uom.si-quantity
233 │ Active │  80 │ 4.2.1                  │ stax2-api
234 │ Active │  80 │ 2.1.2                  │ tech.units.indriya
235 │ Active │  80 │ 2.1.0                  │ uom-lib-common
236 │ Active │  80 │ 1.4.20                 │ xstream
237 │ Active │  80 │ 2.27                   │ com.google.dagger
238 │ Active │  80 │ 1.2.2                  │ com.hivemq.client.mqtt
239 │ Active │  80 │ 8.0.33                 │ com.mysql.cj
240 │ Active │  80 │ 1.6.2                  │ com.sun.mail.javax.mail
241 │ Active │  80 │ 4.1.92.Final           │ io.netty.buffer
242 │ Active │  80 │ 4.1.92.Final           │ io.netty.codec
243 │ Active │  80 │ 4.1.92.Final           │ io.netty.codec-http
244 │ Active │  80 │ 4.1.92.Final           │ io.netty.codec-socks
245 │ Active │  80 │ 4.1.92.Final           │ io.netty.common
246 │ Active │  80 │ 4.1.92.Final           │ io.netty.handler
247 │ Active │  80 │ 4.1.92.Final           │ io.netty.handler-proxy
248 │ Active │  80 │ 4.1.92.Final           │ io.netty.resolver
249 │ Active │  80 │ 2.0.60.Final           │ io.netty.tcnative-classes
250 │ Active │  80 │ 4.1.92.Final           │ io.netty.transport
251 │ Active │  80 │ 4.1.92.Final           │ io.netty.transport-classes-epoll
252 │ Active │  80 │ 4.1.92.Final           │ io.netty.transport-native-unix-common
253 │ Active │  80 │ 2.2.19                 │ io.reactivex.rxjava2.rxjava
254 │ Active │  80 │ 3.27.0.GA              │ javassist
255 │ Active │  80 │ 5.2.1.OH1              │ nrjavaserial
256 │ Active │  80 │ 3.9.0                  │ org.apache.commons.commons-net
257 │ Active │  80 │ 2.1.2                  │ org.jctools.core
258 │ Active │  80 │ 2.7.1.OH1              │ org.jupnp
259 │ Active │  80 │ 4.0.3                  │ org.openhab.automation.groovyscripting
260 │ Active │  80 │ 4.0.3                  │ org.openhab.automation.jsscripting
261 │ Active │  80 │ 4.0.3                  │ org.openhab.automation.jythonscripting
262 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.astro
263 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.avmfritz
264 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.enocean
265 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.exec
266 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.http
267 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.icloud
268 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.mail
269 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.modbus
270 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.modbus.e3dc
271 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.modbus.helioseasycontrols
272 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.modbus.sbc
273 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.modbus.stiebeleltron
274 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.modbus.studer
275 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.modbus.sunspec
276 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.mqtt
277 │ Active │  81 │ 4.0.3                  │ org.openhab.binding.mqtt.espmilighthub
278 │ Active │  81 │ 4.0.3                  │ org.openhab.binding.mqtt.generic
279 │ Active │  82 │ 4.0.3                  │ org.openhab.binding.mqtt.homeassistant
280 │ Active │  82 │ 4.0.3                  │ org.openhab.binding.mqtt.homie
281 │ Active │  82 │ 4.0.3                  │ org.openhab.binding.mqtt.ruuvigateway
282 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.network
283 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.openweathermap
284 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.robonect
285 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.systeminfo
286 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.tankerkoenig
287 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.telegram
288 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.tr064
289 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.upnpcontrol
290 │ Active │  80 │ 4.0.3                  │ org.openhab.binding.zwave
291 │ Active │  80 │ 4.0.3                  │ org.openhab.core.config.discovery.upnp
292 │ Active │  80 │ 4.0.3                  │ org.openhab.core.config.discovery.usbserial
293 │ Active │  80 │ 4.0.3                  │ org.openhab.core.config.discovery.usbserial.linuxsysfs
294 │ Active │  80 │ 4.0.3                  │ org.openhab.core.config.discovery.usbserial.ser2net
295 │ Active │  80 │ 4.0.3                  │ org.openhab.core.config.serial
296 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.transport.modbus
297 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.transport.mqtt
298 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.transport.serial
299 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.transport.serial.rxtx
300 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.transport.serial.rxtx.rfc2217
301 │ Active │  80 │ 4.0.3                  │ org.openhab.core.io.transport.upnp
302 │ Active │  80 │ 4.0.3                  │ org.openhab.persistence.jdbc
303 │ Active │  75 │ 4.0.3                  │ org.openhab.transform.exec
304 │ Active │  75 │ 4.0.3                  │ org.openhab.transform.jsonpath
305 │ Active │  75 │ 4.0.3                  │ org.openhab.transform.map
306 │ Active │  75 │ 4.0.3                  │ org.openhab.transform.regex
307 │ Active │  75 │ 4.0.3                  │ org.openhab.transform.scale
308 │ Active │  75 │ 4.0.3                  │ org.openhab.transform.xpath
309 │ Active │  75 │ 4.0.3                  │ org.openhab.transform.xslt
310 │ Active │  80 │ 4.0.3                  │ org.openhab.ui.basic
311 │ Active │  80 │ 4.0.3                  │ org.openhab.voice.marytts
312 │ Active │  80 │ 4.0.3                  │ org.openhab.voice.voicerss
313 │ Active │  80 │ 1.0.3                  │ org.reactivestreams.reactive-streams
314 │ Active │  80 │ 1.5.1                  │ com.fasterxml.classmate
315 │ Active │  80 │ 4.0.0.78c29ff-SNAPSHOT │ org.connectorio.addons.binding
316 │ Active │  80 │ 4.0.0.78c29ff-SNAPSHOT │ org.connectorio.addons.binding.wmbus
317 │ Active │  80 │ 4.0.0.78c29ff-SNAPSHOT │ org.connectorio.addons.io.transport.mbus
318 │ Active │  80 │ 4.0.0.78c29ff-SNAPSHOT │ org.connectorio.addons.io.transport.serial
319 │ Active │  80 │ 4.0.0.78c29ff-SNAPSHOT │ org.connectorio.addons.io.transport.serial.jrxtx
splatch commented 8 months ago

I've rebased changes which I tested with 3.0.x to 4.0.x. I am not sure if it improves situation in any bit, since I again attempted to use nrjavaserial native lib in place of ancient rxtx binaries (they will not work with arm64). While I conducted my tests I found one device within my test lab, which didn't match expected manufacturer signature. I am not sure if that's dying battery, gibberish serial data or something else. Overall - please give one more try to 4.0.0-pr31-SNAPSHOT once it is built.

JensHoRi commented 8 months ago

Am I right, that the build failed? Cannot find build to test.

splatch commented 8 months ago

You're right, I'll fix build today.

sonarcloud[bot] commented 8 months ago

SonarCloud Quality Gate failed.    Quality Gate failed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 7 Code Smells

0.0% 0.0% Coverage
8.5% 8.5% Duplication

idea Catch issues before they fail your Quality Gate with our IDE extension sonarlint SonarLint

splatch commented 8 months ago

Ok, build have succeeded. Happy testing @JensHoRi!

JensHoRi commented 7 months ago

Looks I'm to stupid, cannot find a jar or a kar file to download. Unter the build reports I only see long lists of logs :-( May you help and provide a download link?

splatch commented 7 months ago

@JensHoRi Procedure is not well described/defined thus its not easy to know.

Please look at this: https://repository.connectorio.cloud/#browse/browse:co7io-public-snapshots:org%2Fconnectorio%2Faddons%2Forg.connectorio.addons.kar.wmbus%2F4.0.0-pr-31-SNAPSHOT%2F4.0.0-pr-31-20231109.221514-1%2Forg.connectorio.addons.kar.wmbus-4.0.0-pr-31-20231109.221514-1.kar There is separate KAR file for mbus if you would like to test it too.

This is the wmbus kar built from this PR (pr-31 indicates it is result of changes supplied in #31).

JensHoRi commented 7 months ago

Installed and checked.

Here are first results: => All wmbus-meters came to inbox with first telegram => Could add all meters => One warmwater-heating meter goes to error handler (- - - Shown in Openhab: vendor TCH, hardwareVersion 57) status uninitialized:

{deviceType=Der Wert RESERVED ist nicht in den erlaubten Optionen enthalten. Erlaubte Optionen sind: [ParameterOption [value="OTHER", label="OTHER"], ParameterOption [value="OIL_METER", label="OIL_METER"], ParameterOption [value="ELECTRICITY_METER", label="ELECTRICITY_METER"], ParameterOption [value="GAS_METER", label="GAS_METER"], ParameterOption [value="HEAT_METER", label="HEAT_METER"], ParameterOption [value="STEAM_METER", label="STEAM_METER"], ParameterOption [value="WARM_WATER_METER", label="WARM_WATER_METER"], ParameterOption [value="WATER_METER", label="WATER_METER"], ParameterOption [value="HEAT_COST_ALLOCATOR", label="HEAT_COST_ALLOCATOR"], ParameterOption [value="COMPRESSED_AIR", label="COMPRESSED_AIR"], ParameterOption [value="COOLING_METER_OUTLET", label="COOLING_METER_OUTLET"], ParameterOption [value="COOLING_METER_INLET", label="COOLING_METER_INLET"], ParameterOption [value="HEAT_METER_INLET", label="HEAT_METER_INLET"], ParameterOption [value="HEAT_COOLING_METER", label="HEAT_COOLING_METER"], ParameterOption [value="BUS_SYSTEM_COMPONENT", label="BUS_SYSTEM_COMPONENT"], ParameterOption [value="UNKNOWN", label="UNKNOWN"], ParameterOption [value="CALORIFIC_VALUE", label="CALORIFIC_VALUE"], ParameterOption [value="HOT_WATER_METER", label="HOT_WATER_METER"], ParameterOption [value="COLD_WATER_METER", label="COLD_WATER_METER"], ParameterOption [value="DUAL_REGISTER_WATER_METER", label="DUAL_REGISTER_WATER_METER"], ParameterOption [value="PRESSURE_METER", label="PRESSURE_METER"], ParameterOption [value="AD_CONVERTER", label="AD_CONVERTER"], ParameterOption [value="SMOKE_DETECTOR", label="SMOKE_DETECTOR"], ParameterOption [value="ROOM_SENSOR_TEMP_HUM", label="ROOM_SENSOR_TEMP_HUM"], ParameterOption [value="GAS_DETECTOR", label="GAS_DETECTOR"], ParameterOption [value="BREAKER_ELEC", label="BREAKER_ELEC"], ParameterOption [value="VALVE_GAS_OR_WATER", label="VALVE_GAS_OR_WATER"], ParameterOption [value="CUSTOMER_UNIT_DISPLAY_DEVICE", label="CUSTOMER_UNIT_DISPLAY_DEVICE"], ParameterOption [value="WASTE_WATER_METER", label="WASTE_WATER_METER"], ParameterOption [value="GARBAGE", label="GARBAGE"], ParameterOption [value="COM_CONTROLLER", label="COM_CONTROLLER"], ParameterOption [value="UNIDIRECTION_REPEATER", label="UNIDIRECTION_REPEATER"], ParameterOption [value="BIDIRECTION_REPEATER", label="BIDIRECTION_REPEATER"], ParameterOption [value="RADIO_CONVERTER_SYSTEM_SIDE", label="RADIO_CONVERTER_SYSTEM_SIDE"], ParameterOption [value="RADIO_CONVERTER_METER_SIDE", label="RADIO_CONVERTER_METER_SIDE"]]}

=> Three Heat meters went to configuration pending, after add encryption keys (Copied by working wmbusmeter-Configuration) those three went to 'COMMUNICATION_ERROR Wrong encryption key - could not decrypt payload. ' - - - Shown in Openhab: vendor TCH, hardwareVersion 23

=> Water meters went all to online after adding encryption keys, some first checks: => DWZ / hardware 0 some seems to work, some show still only RSSI, maybe I need to give them more time

Summary: => Stick seems to work => Some Devices unknown? Not Working? => Some work => Some I cannot say if they work or not.

Will go back to wmbusmeters meanwhile, because heating devices and warmwater-heating device are important for me.

But could go back on your binding everytime for further tests

JensHoRi commented 7 months ago

Small Addition: The Device "reserved" was found in earlier binding as (68TCH5767) which is a heat meter warm water, looks like this one: https://www.zähler-plattform.de/Waermezaehler-MULTICAL-303-TF-O-52-Eichung-2023-15-m-h-110-mm This one is read correctly by wmbusmeters as "compact5"

The other three showing an encryption error where (68TCH234) in older binding, which are recognized (correctly?) as HEAT_METER, are like this https://www.zähler-plattform.de/Waermezaehler-Engelmann-SensoStar-T-TF-52-Eichung-2020-25-ml-h

I have no idea, why there is the message about wrong key, because wmbusmeters read those as "vario451mid"

splatch commented 7 months ago

@JensHoRi I'll go over points here, however from your testing I think we can create one or two issues more.

First issue with device type RESERVED :

=> One warmwater-heating meter goes to error handler (- - - Shown in Openhab: vendor TCH, hardwareVersion 57) status uninitialized:

{deviceType=Der Wert RESERVED ist nicht in den erlaubten Optionen enthalten. Erlaubte Optionen sind: [ParameterOption [value="OTHER", label="OTHER"], ParameterOption [value="OIL_METER", label="OIL_METER"], ParameterOption [value="ELECTRICITY_METER", label="ELECTRICITY_METER"], ParameterOption [value="GAS_METER", label="GAS_METER"], ParameterOption [value="HEAT_METER", label="HEAT_METER"], ParameterOption [value="STEAM_METER", label="STEAM_METER"], ParameterOption [value="WARM_WATER_METER", label="WARM_WATER_METER"], ParameterOption [value="WATER_METER", label="WATER_METER"], ParameterOption [value="HEAT_COST_ALLOCATOR", label="HEAT_COST_ALLOCATOR"], ParameterOption [value="COMPRESSED_AIR", label="COMPRESSED_AIR"], ParameterOption [value="COOLING_METER_OUTLET", label="COOLING_METER_OUTLET"], ParameterOption [value="COOLING_METER_INLET", label="COOLING_METER_INLET"], ParameterOption [value="HEAT_METER_INLET", label="HEAT_METER_INLET"], ParameterOption [value="HEAT_COOLING_METER", label="HEAT_COOLING_METER"], ParameterOption [value="BUS_SYSTEM_COMPONENT", label="BUS_SYSTEM_COMPONENT"], ParameterOption [value="UNKNOWN", label="UNKNOWN"], ParameterOption [value="CALORIFIC_VALUE", label="CALORIFIC_VALUE"], ParameterOption [value="HOT_WATER_METER", label="HOT_WATER_METER"], ParameterOption [value="COLD_WATER_METER", label="COLD_WATER_METER"], ParameterOption [value="DUAL_REGISTER_WATER_METER", label="DUAL_REGISTER_WATER_METER"], ParameterOption [value="PRESSURE_METER", label="PRESSURE_METER"], ParameterOption [value="AD_CONVERTER", label="AD_CONVERTER"], ParameterOption [value="SMOKE_DETECTOR", label="SMOKE_DETECTOR"], ParameterOption [value="ROOM_SENSOR_TEMP_HUM", label="ROOM_SENSOR_TEMP_HUM"], ParameterOption [value="GAS_DETECTOR", label="GAS_DETECTOR"], ParameterOption [value="BREAKER_ELEC", label="BREAKER_ELEC"], ParameterOption [value="VALVE_GAS_OR_WATER", label="VALVE_GAS_OR_WATER"], ParameterOption [value="CUSTOMER_UNIT_DISPLAY_DEVICE", label="CUSTOMER_UNIT_DISPLAY_DEVICE"], ParameterOption [value="WASTE_WATER_METER", label="WASTE_WATER_METER"], ParameterOption [value="GARBAGE", label="GARBAGE"], ParameterOption [value="COM_CONTROLLER", label="COM_CONTROLLER"], ParameterOption [value="UNIDIRECTION_REPEATER", label="UNIDIRECTION_REPEATER"], ParameterOption [value="BIDIRECTION_REPEATER", label="BIDIRECTION_REPEATER"], ParameterOption [value="RADIO_CONVERTER_SYSTEM_SIDE", label="RADIO_CONVERTER_SYSTEM_SIDE"], ParameterOption [value="RADIO_CONVERTER_METER_SIDE", label="RADIO_CONVERTER_METER_SIDE"]]}

My intention with new version of binding was to support only "known" device types (it is unrelated to jrxtx), because reserved device kinds will usually report data using vendor specific encoding which can't be used to extract any meaningful information. However, because discovery process is still plain, it does not refuse these devices. The open question is - do we want to include these, even if they won't show any channels?

=> Three Heat meters went to configuration pending, after add encryption keys (Copied by working wmbusmeter-Configuration) those three went to 'COMMUNICATION_ERROR Wrong encryption key - could not decrypt payload. ' - - - Shown in Openhab: vendor TCH, hardwareVersion 23 (...) This one is read correctly by wmbusmeters as "compact5" (...) I have no idea, why there is the message about wrong key, because wmbusmeters read those as "vario451mid" Old binding covered Techem devices based on reverse engineering conducted by Kugu. I am pretty sure wmbusmeters does the same, meaning they have custom parses for data supplied by these devices. I expected custom devices to show up, that's why new binding have a discovery layer which can be used to supply other thing types through further addons or configuration files (there is very little we need to supply new thing type).

Overall, if bridge works fine and we keep receiving data I would say that this PR delivers necessary functionality and can be included.

JensHoRi commented 7 months ago

Hi, about the Device RESERVED: This is the Output of wmbusmeters, but I believe there are more values: { "media": "heat", "meter": "compact5", "name": "HeizungWW", "id": "67834746", "total_kwh": 37609, "current_kwh": 6464, "previous_kwh": 31145, "timestamp": "2023-11-12T12:20:55Z", "device": "amb8465[00000000]", "rssi_dbm": -36

current is actual year I believe.

So would be great if it would be assistedl but don't know how complicated it is. I could send you the clear text telegram if you want.

The three other HEAT_METERS work fine with wmbusmeters, but impossible to use with your binding yet. I would thought with correct key decryption should always work?

Until yet most water_meters still doesn't show the channels, only rssi is shown.

Telegrams are send by devices all 5-7 minutes (I could see with wmbusmeters)

splatch commented 5 months ago

I am closing this PR since 4.0.x branch got rebased, it contains same functionality as master which includes jrxtx bridge.