Hello community,
I am still in the process of migrating to OH3. For this purpose, I use two identical RPI4, one runs OH 2.5 (production) and the other one OH3. The OH3 RPI is a cloned version of the production system which I upgraded using openhabian. I got the OH3 RPI running so far, and yesterday I swapped SD-cards to test OH3 with all hardware connected.
Doing this, I encountered a problem with the smartmeter binding. I use two Serial-USB adapters to read counters for heating power and regular power. To avoid confusion with USB-Ports, I created a udev-rule which creates symlinks based on the serial numbers of the USB-adapters. This setup is identical in the OH3 RPI.
After I swapped SD-cards to the production RPI yesterday evening, smartmeters first were working fine and got updated. I usually have some log entries in openhab.log regarding CRC-errors, but this also occurs on the 2.5 system and after some retries values are always populated nicely.
But in OH3, after about 15 minutes, the following happend:
2020-12-30 22:06:24.921 [WARN ] [ding.smartmeter.internal.MeterDevice] - Failed to read: No provider for port /dev/ttyUSB.COM found. Closing connection and trying again in 2 seconds...; smartmeter:meter:5476e3cb
java.lang.IllegalStateException: No provider for port /dev/ttyUSB.COM found
at org.openhab.binding.smartmeter.internal.sml.SmlSerialConnector.openConnection(SmlSerialConnector.java:137) ~[bundleFile:?]
at org.openhab.binding.smartmeter.internal.MeterDevice.lambda$1(MeterDevice.java:168) ~[bundleFile:?]
at io.reactivex.internal.operators.flowable.FlowableDoOnLifecycle$SubscriptionLambdaSubscriber.onSubscribe(FlowableDoOnLifecycle.java:63) [bundleFile:?]
at io.reactivex.internal.operators.flowable.FlowableTimeoutTimed.subscribeActual(FlowableTimeoutTimed.java:47) [bundleFile:?]
at io.reactivex.Flowable.subscribe(Flowable.java:14479) [bundleFile:?]
at io.reactivex.internal.operators.flowable.FlowableDoOnLifecycle.subscribeActual(FlowableDoOnLifecycle.java:38) [bundleFile:?]
at io.reactivex.Flowable.subscribe(Flowable.java:14479) [bundleFile:?]
at io.reactivex.internal.operators.flowable.FlowableDoOnEach.subscribeActual(FlowableDoOnEach.java:50) [bundleFile:?]
at io.reactivex.Flowable.subscribe(Flowable.java:14479) [bundleFile:?]
at io.reactivex.internal.operators.flowable.FlowableDoOnLifecycle.subscribeActual(FlowableDoOnLifecycle.java:38) [bundleFile:?]
at io.reactivex.Flowable.subscribe(Flowable.java:14479) [bundleFile:?]
at io.reactivex.internal.operators.flowable.FlowableDoOnEach.subscribeActual(FlowableDoOnEach.java:50) [bundleFile:?]
at io.reactivex.Flowable.subscribe(Flowable.java:14479) [bundleFile:?]
at io.reactivex.internal.operators.flowable.FlowablePublish.connect(FlowablePublish.java:130) [bundleFile:?]
at io.reactivex.internal.operators.flowable.FlowableRefCount.subscribeActual(FlowableRefCount.java:91) [bundleFile:?]
at io.reactivex.Flowable.subscribe(Flowable.java:14479) [bundleFile:?]
at io.reactivex.Flowable.subscribe(Flowable.java:14426) [bundleFile:?]
at io.reactivex.internal.operators.flowable.FlowableRepeatWhen$WhenReceiver.onNext(FlowableRepeatWhen.java:100) [bundleFile:?]
at io.reactivex.internal.operators.flowable.FlowableRetryWhen.subscribeActual(FlowableRetryWhen.java:62) [bundleFile:?]
at io.reactivex.Flowable.subscribe(Flowable.java:14479) [bundleFile:?]
at io.reactivex.Flowable.subscribe(Flowable.java:14426) [bundleFile:?]
at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82) [bundleFile:?]
at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:260) [bundleFile:?]
at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:225) [bundleFile:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
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:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
The same happend to the second smartmeter connected. Worth to mention, the hardware is the same as with OH 2.5 I just swapped the SD-cards.
After a reboot, things work normal again for a couple of minutes, then the problem occurs again.
Switching the Thing to the ârealâ USB port instead of the symling (e.g. /dev/ttyUSB0) also does not bring the Thing back to life, only a reboot helps.
I checked /var/log/syslog and /var/log/messages for any entries regarding tty-devices at the same time, but no entries found.
Any ideas what could be wrong?