Closed JensHoRi closed 6 months ago
Hello Jens, Thank you for bringing issue. I also noticed that use of openHAB serial port API in place of jrxtx librar (as it is done in wmbus binding you tested), caused jmbus to discard large amounts of data. This issue is likely related to how internal implementation of serial port listener in jmbus works with retrieved data. As a side note - jmbus serial transport can discard a ton of data on its own, however its clear that probability of discarding is much higher with OH transport than with jrxtx.
I'll bring a jrxtx "bridge" in order to provide a quick testing possibility.
Never decided for a special serial handler. But this combination works fine, as I use enocean, zwave (Gen5) and zwave (Gen7) in parallel, and furthermore wmbus.
jrxtx Bridge seems to work now,
While looking on devices an channels, looks like a lot of telegrams are dicarded. Devices seems to work, but updates take really long times. Is there a special paket I should debug to get this confirmed and understood?
Very interesting: Deactivating wmbus-Stick and activate again let the channels apear from earlier discovered and added devices.
Strange. Should work without disable and enable stick, that channels appears
While looking on devices an channels, looks like a lot of telegrams are dicarded. Devices seems to work, but updates take really long times. Is there a special paket I should debug to get this confirmed and understood? Strange. Should work without disable and enable stick, that channels appears
The serial port listener from jmbus can discard data on its own as it sometimes have troubles scanning "beginning" of frame and then keeps jumping blindly over data stream. I remember that sometimes it was sufficient to close and open port (that's what disable/enable cycle of bridge does) to restart listener and let it catch fresh breath.
For debugging purposes the old binding included a special "tool" I've made to log all received telegrams. Current binding does not have it. I did an early draft of such tool (called "communication inspector") together with wmbus binding with intention to make it useful for other bindings too. Obviously wmbus binding is first candidate to benefit from it. :-)
Another implication is - some wmbus devices can report two kinds of frames (or even more). For example Karmstrup devices have "short" frame which is reported frequently and "long" one which is reported every 30 minutes, or even less often. Each consist different payload resulting in different update frequency.
In order to debug received payloads you can enable debug output for org.connectorio.addons.binding.wmbus.internal.transport.WMBusMessageListenerAdapter
. It drops each and every message properly recognized by jmbus library.
Yes, but the binding and the things were active for hours and still most meters don't have channels shown in UI.
Maybe because I used customIDs adding the things?
Well, if everything is configured, all channels are sometime there, the devices working got actual data.
So only issue left is: It tooks a lot of time (restart Stick oder openhab helps somehow) until channels are up.
All watermeters working fine and stable now.
But beware: With PR31 if I add my wmbus Stick with normal serial instead of jrxtx, openhab is directly killed without any log entry and restarts. After that dev/wmbus is stuck, so busy: Only a full reboot works.
So my opinion: Erase possibility for normal serial stick, better use jrxtx serial ;-)
following io-bundles installed and active (searched for .io.):
binding gives following output in debug mode: