Hi,
I’ve setup Modbus TCP to read out 2 DAT11 devices. I can read out the holding registers just fine but after a few days it stops. We get this error in the poller:
Error with read: org.openhab.core.io.transport.modbus.internal.ModbusSlaveIOExceptionImpl: Modbus IO Error with cause=ModbusIOException, EOF=false, message='I/O exception - failed to write: Broken pipe', cause2=null
And this in the openhab.log:
2024-09-03 12:29:11.577 [ERROR] [rt.modbus.internal.ModbusManagerImpl] - Last try 1 failed when executing request (ModbusReadRequestBlueprint [slaveId=255, functionCode=READ_MULTIPLE_REGISTERS, start=0, length=9, maxTries=1]). Aborting. Error was I/O error, so resetting the connection. Error details: net.wimpi.modbus.ModbusIOException I/O exception - failed to write: Broken pipe [operation ID f5988cac-492c-4462-8dcf-db5d76b869f0]
When OH is generating these errors, I can read out the register just fine with QModMaster.
When I stop.start the Modbus TCP or Poller thing, the error remains.
If I reboot OH, the issue is resolved.
When we reboot the DAT11 device, the error is gone. Perhaps this is because something resets in OH and therefore it works again. As the DAT11 just keeps working during this errors.
What could be the cause of this? Is it a bug in OH?
Slave
UID: modbus:tcp:cea7a1d77b
label: PavoneSystems - DAT11 - Y - Slave
thingTypeUID: modbus:tcp
configuration:
rtuEncoded: false
connectMaxTries: 1
reconnectAfterMillis: 5000
timeBetweenTransactionsMillis: 1000
port: 1800
timeBetweenReconnectMillis: 5000
connectTimeoutMillis: 30000
host: 192.168.111.22
afterConnectionDelayMillis: 5000
id: 255
enableDiscovery: false
Poller
UID: modbus:poller:cea7a1d77b:850c5d06fc
label: PavoneSystems - DAT11 - Y - Poll
thingTypeUID: modbus:poller
configuration:
length: 9
start: 0
refresh: 10000
maxTries: 1
cacheMillis: 0
type: holding
bridgeUID: modbus:tcp:cea7a1d77b
Data
UID: modbus:data:27284b8263
label: PavoneSystems - DAT11 - Y - Gross weight (MSB)
thingTypeUID: modbus:data
configuration:
readValueType: uint16
readTransform: default
writeTransform: default
writeType: holding
readStart: "2"
updateUnchangedValuesEveryMillis: 1000
writeValueType: int16
writeMultipleEvenWithSingleRegisterOrCoil: false
writeMaxTries: 3
writeStart: "100"
bridgeUID: modbus:poller:cea7a1d77b:850c5d06fc
channels:
- id: number
channelTypeUID: modbus:number-type
label: Value as Number
description: Number item channel
configuration: {}
Kind regards,
Bastiaan