Hello
After switching to openhab 2.5.7, the Modbus binding, after unsuccessful read attempts, simply stopped. On version 2.5.6, warnings were recorded in the logs, but the binding continued to work. These errors did not bother me much, but a complete stop is of course different.
An attempt to reinstall openhab to 2.5.6, oddly enough, did not lead to a positive result.
Openhab 2.5.7. Installed in a Proxmox container. Openhabian.
Interrogates the OM310
Via USR-D404
Fragment of thing
Bridge modbus:tcp:om310 [ host="192.168.88.27", port=8899, id=1, timeBetweenTransactionsMillis=60,reconnectAfterMillis=60000 ] //USR-D404
{
// Токи
Bridge poller current [ start=100, length=4, refresh=20000, type="holding" ] {
Thing data if1 [ readStart="100", readValueType="uint16"]
Thing data if2 [ readStart="101", readValueType="uint16"]
Thing data if3 [ readStart="102", readValueType="uint16"]
Thing data if0 [ readStart="103", readValueType="uint16"]
}
Bridge poller current1 [ start=104, length=7, refresh=10000, type="holding" ] {
Thing data is1 [ readStart="104", readValueType="uint16"]
Thing data is2 [ readStart="105", readValueType="uint16"]
Thing data is3 [ readStart="106", readValueType="uint16"]
Thing data in1 [ readStart="107", readValueType="uint16"]
Thing data in2 [ readStart="108", readValueType="uint16"]
Thing data in3 [ readStart="109", readValueType="uint16"]
Thing data iop [ readStart="110", readValueType="uint16"]
}
Bridge poller slave1 [ start=111, length=3, refresh=10000, type="holding", updateUnchangedValuesEveryMillis=0 ] {
Thing data s1 [ readStart="111", readValueType="uint16"]
Thing data s2 [ readStart="112", readValueType="uint16"]
Thing data s3 [ readStart="113", readValueType="uint16"]
}
*********************************
// setting4
Bridge poller setting4 [ start=183, length=6, refresh=120000, type="holding" ] {
Thing data att [ readStart="183", readValueType="uint16"]
Thing data arr [ readStart="184", readValueType="uint16"]
Thing data apd [ readStart="185", readValueType="uint16"]
Thing data acd [ readStart="186", readValueType="uint16"]
Thing data t5i [ readStart="187", readValueType="uint16"]
Thing data sin [ readStart="188", readValueType="uint16"]
}
}
Here’s an example of an error.
2020-07-26 13:46:35.169 [WARN ] [rt.modbus.internal.ModbusManagerImpl] - Try 1 out of 3 failed when executing request (ModbusPollerThingHandler.ModbusPollerReadRequest@cb6566[slaveId=1,functionCode=READ_MULTIPLE_REGISTERS,start=111,length=3,maxTries=3]). Will try again soon. Error was I/O error, so reseting the connection. Error details: net.wimpi.modbus.ModbusIOException I/O exception: SocketTimeoutException Read timed out [operation ID e963fc31-fb7a-43de-b2a7-a611c57c047d]
2020-07-26 13:46:35.173 [WARN ] [rt.modbus.internal.ModbusManagerImpl] - Error invalidating connection in pool for endpoint ModbusTCPSlaveEndpoint@468d48[address=192.168.88.27,port=8899]. Error was: java.lang.NullPointerException null
java.lang.NullPointerException: null
at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936) ~[?:1.8.0_232]
at org.openhab.io.transport.modbus.internal.pooling.ModbusSlaveConnectionFactoryImpl$PooledConnection.maybeResetConnection(ModbusSlaveConnectionFactoryImpl.java:87) ~[?:?]
at org.openhab.io.transport.modbus.internal.pooling.ModbusSlaveConnectionFactoryImpl.passivateObject(ModbusSlaveConnectionFactoryImpl.java:223) ~[?:?]
at org.openhab.io.transport.modbus.internal.pooling.ModbusSlaveConnectionFactoryImpl.passivateObject(ModbusSlaveConnectionFactoryImpl.java:1) ~[?:?]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.addIdleObject(GenericKeyedObjectPool.java:1272) ~[?:?]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.addObject(GenericKeyedObjectPool.java:1255) ~[?:?]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.invalidateObject(GenericKeyedObjectPool.java:589) ~[?:?]
at org.openhab.io.transport.modbus.internal.ModbusManagerImpl.lambda$1(ModbusManagerImpl.java:407) ~[?:?]
at java.util.Optional.ifPresent(Optional.java:159) ~[?:1.8.0_232]
at org.openhab.io.transport.modbus.internal.ModbusManagerImpl.invalidate(ModbusManagerImpl.java:405) ~[?:?]
at org.openhab.io.transport.modbus.internal.ModbusManagerImpl.lambda$9(ModbusManagerImpl.java:642) ~[?:?]
at org.openhab.io.transport.modbus.internal.SimpleStopWatch.timeConsumer(SimpleStopWatch.java:169) ~[?:?]
at org.openhab.io.transport.modbus.internal.ModbusManagerImpl.executeOperation(ModbusManagerImpl.java:642) ~[?:?]
at org.openhab.io.transport.modbus.internal.ModbusManagerImpl.access$2(ModbusManagerImpl.java:525) ~[?:?]
at org.openhab.io.transport.modbus.internal.ModbusManagerImpl$ModbusCommunicationInterfaceImpl.lambda$1(ModbusManagerImpl.java:782) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_232]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:1.8.0_232]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_232]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:1.8.0_232]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_232]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_232]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]
There are several topics on the forum with similar errors, but I did not notice a similar problem - the binding stops.
How can I fix the situation?