I finally got it running!!
My modbus.cfg
poll=1000
serial.eehtc.connection=/dev/ttyUSB99:9600:8:even:1:rtu:35:1500:none:none
serial.eehtc.id=11
serial.eehtc.type=input
serial.eehtc.start=25
serial.eehtc.length=24
serial.eehtc.valuetype=float32_swap
serial.eehtc.postundefinedonreaderror=true
serial.eehtc.updateunchangeditems=false
My modbus.items
Number MB0 “Temp [%.2f °C]” (ALL) {modbus=“eehtc:0”}
Number MB1 "Feuchte [%.2f %%rf] " (ALL) {modbus=“eehtc:1”}
Number MB2 “H²O-PD [%.2f mbar]” (ALL) {modbus=“eehtc:2”}
Number MB3 “Taupunkt [%.2f °C]” (ALL) {modbus=“eehtc:3”}
Number MB4 “FKTemp (nicht vorh.) [%.0f]” (ALL) {modbus=“eehtc:4”}
Number MB5 “H²0-Dichte [%.2f g/m³]” (ALL) {modbus=“eehtc:5”}
Number MB6 “Mischungsv. [%.2f g/kg]” (ALL) {modbus=“eehtc:6”}
Number MB7 “Enthalpie [%.2f kJ/kg]” (ALL) {modbus=“eehtc:7”}
Number MB8 “Tau-/Frostpunkt [%.2f °C]” (ALL) {modbus=“eehtc:8”}
Number MB9 “Leer [%.0f]” (ALL) {modbus=“eehtc:9”}
Number MB10 “CO² ung. [%.0f ppm]” (ALL) {modbus=“eehtc:10”}
Number MB11 “CO² [%.0f ppm]” (ALL) {modbus=“eehtc:11”}
After changing any modbus parameter the modbus service makes a restart.
But it looks as if it doesn’t close the serialport in this case.
So the port is locked after the restart - and everything breaks.
Log:
19:08:04.715 [ERROR] [et.wimpi.modbus.net.SerialConnection] - open port failed: Modbus Serial Master
19:08:04.717 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - connect try 1/3 error: open port failed: Modbus Serial Master. Connection SerialConnection@1e19c7d[portName=/dev/ttyUSB99,port=<null>]. Endpoint ModbusSerialSlaveEndpoint@1098b8e[portName=/dev/ttyUSB99]
19:08:34.754 [ERROR] [et.wimpi.modbus.net.SerialConnection] - open port failed: Modbus Serial Master
19:08:34.756 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - connect try 2/3 error: open port failed: Modbus Serial Master. Connection SerialConnection@1e19c7d[portName=/dev/ttyUSB99,port=<null>]. Endpoint ModbusSerialSlaveEndpoint@1098b8e[portName=/dev/ttyUSB99]
19:09:04.793 [ERROR] [et.wimpi.modbus.net.SerialConnection] - open port failed: Modbus Serial Master
19:09:04.795 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - connect try 3/3 error: open port failed: Modbus Serial Master. Connection SerialConnection@1e19c7d[portName=/dev/ttyUSB99,port=<null>]. Endpoint ModbusSerialSlaveEndpoint@1098b8e[portName=/dev/ttyUSB99]
19:09:04.796 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - re-connect reached max tries 3, throwing last error: open port failed: Modbus Serial Master. Connection SerialConnection@1e19c7d[portName=/dev/ttyUSB99,port=<null>]. Endpoint ModbusSerialSlaveEndpoint@1098b8e[portName=/dev/ttyUSB99]
19:09:04.798 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - Error connecting connection SerialConnection@1e19c7d[portName=/dev/ttyUSB99,port=<null>] for endpoint ModbusSerialSlaveEndpoint@1098b8e[portName=/dev/ttyUSB99]: open port failed: Modbus Serial Master
19:09:04.799 [WARN ] [.binding.modbus.internal.ModbusSlave] - ModbusSlave (eehtc): Error getting a new connection for endpoint ModbusSerialSlaveEndpoint@1098b8e[portName=/dev/ttyUSB99]. Error was: Unable to validate object
19:09:04.800 [WARN ] [.binding.modbus.internal.ModbusSlave] - ModbusSlave (eehtc) not connected -- aborting read request net.wimpi.modbus.msg.ReadInputRegistersRequest@59d9aa. Endpoint ModbusSerialSlaveEndpoint@1098b8e[portName=/dev/ttyUSB99]
19:09:35.003 [ERROR] [et.wimpi.modbus.net.SerialConnection] - open port failed: Modbus Serial Master
19:09:35.005 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - connect try 1/3 error: open port failed: Modbus Serial Master. Connection SerialConnection@1e962d4[portName=/dev/ttyUSB99,port=<null>]. Endpoint ModbusSerialSlaveEndpoint@1098b8e[portName=/dev/ttyUSB99]
since I didn’t know how to restart modbus corectly I solved the problem restarting openhab2
sudo systemctl restart openhab2
What did I learn from this (maybe it helps someone else):
First - documentation is (somehow wrong or at least irritating).
In the modbus.cfg template I found:
The number of data item to read
(optional, defaults to ‘0’ - but set it to something meaningful)
serial.slave1.length=…
My device has the following values:
Addr Item Type Val
25 0 float32 Temp
27 1 float32 RelHum
...
47 11 float32 CO2
So I thought
Start 25 (correct)
Length 12 (items – 0-11 - from reading template)
This was the problem - lenght means not “number of items” - it means “number of registers”.
After finding out this I only had to learn, that changes in modbus.cfg bring up the “port keeps open problem”.
I’m only afraid, that some problems (connection lost - or device not answering) may lead to a restart of the service - which may result in the “port already open problem”.
I guess that should be fixed somehow (closing the port if the modbus addon needs a restart).
Thank’s to every community member helping me with my “newcomer problems”.
Manfred