Modbus and Energy meter

Hello !
I know that similar topics already appeared, but I think my problem is a little different.
Since last year I was using modbus binding with my ventilation system without any problem.
Yesterday I have connected OR-WE-517 3-phases energy meter:
https://www.orno.pl//t5749,1,en,3-phase-multi-tariff-indicator-of-electrical-energy-consumption-with-rs485-port-and-mid-80a,1

To be sure that there is no conflict I have disconnect current RS485 connection to ventilation and connect just a power meter.
Problem is lack od modbus docs for my energy meter. It is just written that it use 9600 bps, id is 1, parity:yes, data bit:8, final bit:1
I have added config:

modbus:serial.Voltage_L1.connection=/dev/ttyUSB0:9600:8:even:1:rtu:4500
modbus:serial.Voltage_L1.id=1
modbus:serial.Voltage_L1.start=0
modbus:serial.Voltage_L1.type=holding
modbus:serial.Voltage_L1.length=2
modbus:serial.Voltage_L1.valuetype=float32

and got errors:

2017-10-30 11:46:02.218 [ERROR] [i.modbus.io.ModbusRTUTransport] - Last request: 01 03 00 00 00 02 c4 0b
2017-10-30 11:46:02.219 [ERROR] [i.modbus.io.ModbusRTUTransport] - failed to read: Error reading response (EOF)
2017-10-30 11:46:02.222 [ERROR] [w.m.io.ModbusSerialTransaction] - execute try 3/3 error: I/O exception - failed to read. Request: net.wimpi.modbus.msg.ReadMultipleRegistersRequest@1294711 (unit id 1 & transaction 21). Serial parameters: SerialParameters@145764[portName=/dev/ttyUSB0,baudRate=9600,flowControlIn=none,flowControlOut=none,databits=8,stopbits=1,parity=even,encoding=rtu,echo=false,receiveTimeoutMillis=1500]
2017-10-30 11:46:02.224 [ERROR] [w.m.io.ModbusSerialTransaction] - execute reached max tries 3, throwing last error: I/O exception - failed to read. Request: net.wimpi.modbus.msg.ReadMultipleRegistersRequest@1294711 (unit id 1 & transaction 21). Serial parameters: SerialParameters@145764[portName=/dev/ttyUSB0,baudRate=9600,flowControlIn=none,flowControlOut=none,databits=8,stopbits=1,parity=even,encoding=rtu,echo=false,receiveTimeoutMillis=1500]

Trace file:

2017-10-30 11:46:02.226 ERROR o.o.b.m.internal.ModbusSlave[:504]- ModbusSlave (Voltage_L1): Error getting modbus data for request net.wimpi.modbus.msg.ReadMultipleRegistersRequest@1294711. Error: I/O exception - failed to read. Endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0]. Connection: SerialConnection@16ab87f[portName=/dev/ttyUSB0,port=/dev/ttyUSB0]
2017-10-30 11:46:02.228 TRACE o.o.b.m.i.p.ModbusSlaveConnectionFactoryImpl[:126]- destroyObject for connection SerialConnection@16ab87f[portName=/dev/ttyUSB0,port=/dev/ttyUSB0] and endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0] → closing the connection
2017-10-30 11:46:22.236 TRACE o.o.b.m.i.p.ModbusSlaveConnectionFactoryImpl[:86]- Created connection SerialConnection@108e83b[portName=/dev/ttyUSB0,port=] for endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0]
2017-10-30 11:46:22.255 TRACE o.o.b.m.i.p.ModbusSlaveConnectionFactoryImpl[:184]- Validating endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0] connection SerialConnection@108e83b[portName=/dev/ttyUSB0,port=/dev/ttyUSB0] → true
2017-10-30 11:46:22.257 TRACE o.o.b.m.internal.ModbusSlave[:353]- ModbusSlave (Voltage_L1): borrowing connection (got SerialConnection@108e83b[portName=/dev/ttyUSB0,port=/dev/ttyUSB0]) for endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0] took 22 ms
2017-10-30 11:46:22.258 TRACE o.o.b.m.internal.ModbusSlave[:499]- Executing modbus request net.wimpi.modbus.msg.ReadMultipleRegistersRequest@1f00322 using transaction net.wimpi.modbus.io.ModbusSerialTransaction@19a9622 (global transaction id before increment 21) to read data
2017-10-30 11:46:35.784 ERROR o.o.b.m.internal.ModbusSlave[:504]- ModbusSlave (Voltage_L1): Error getting modbus data for request net.wimpi.modbus.msg.ReadMultipleRegistersRequest@1f00322. Error: I/O exception - failed to read. Endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0]. Connection: SerialConnection@108e83b[portName=/dev/ttyUSB0,port=/dev/ttyUSB0]
2017-10-30 11:46:35.785 TRACE o.o.b.m.i.p.ModbusSlaveConnectionFactoryImpl[:126]- destroyObject for connection SerialConnection@108e83b[portName=/dev/ttyUSB0,port=/dev/ttyUSB0] and endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0] → closing the connection
2017-10-30 11:46:55.789 TRACE o.o.b.m.i.p.ModbusSlaveConnectionFactoryImpl[:86]- Created connection SerialConnection@a2ca42[portName=/dev/ttyUSB0,port=] for endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0]
2017-10-30 11:46:55.807 TRACE o.o.b.m.i.p.ModbusSlaveConnectionFactoryImpl[:184]- Validating endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0] connection SerialConnection@a2ca42[portName=/dev/ttyUSB0,port=/dev/ttyUSB0] → true
2017-10-30 11:46:55.809 TRACE o.o.b.m.internal.ModbusSlave[:353]- ModbusSlave (Voltage_L1): borrowing connection (got SerialConnection@a2ca42[portName=/dev/ttyUSB0,port=/dev/ttyUSB0]) for endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0] took 19 ms
2017-10-30 11:46:55.810 TRACE o.o.b.m.internal.ModbusSlave[:499]- Executing modbus request net.wimpi.modbus.msg.ReadMultipleRegistersRequest@1583684 using transaction net.wimpi.modbus.io.ModbusSerialTransaction@19a9622 (global transaction id before increment 24) to read data

On other forum I found a person who was able to connect to this power meter via his python script, I have used it and got proper answer with power parameters, so connection is fine.
He told me that I should use RTU, parity: even all registers are holding and floats and I should use “read 03” to read. He also informed me that problem with this power meter is that it request ca 40ms brake after reading each byte, if this is not met then it is read error.
Can I set such parameter ? As I understand there is only possible to set delay after whole registry, but what about 1 byte ?

Any other suggestion what I am doing wrong ?

I am also not sure If I use correct registry address, since description is very poor:

I have tested with binding version 1.8.3 and latest 1.11, same result.
When I changed RTU to ASCII I dont receive error, but data is not imported.

Using PC soft for Modbus I was able to read values.
I used profile: 9600:8:even:1:rtu, so this is good in my config.

I changed registry id to 14 (which is equal to 0E, which should give me Voltage L1):

modbus:serial.Voltage_L1.start=14

This soft read (where write is registry address, read is a value):

19:00:35:994  Write: 01 03 00 0E 00 02 A5 C8 
19:00:36:540  Read: 01 03 04 43 60 B3 33 DA 8C 
19:00:36:883  Over

and program gave me:
224,7 V
binding with same address gave:

> 2017-10-30 19:13:38.640 [ERROR] [i.modbus.io.ModbusRTUTransport] - Last request: 01 03 00 0e 00 02 a5 c8
> 2017-10-30 19:13:38.641 [ERROR] [i.modbus.io.ModbusRTUTransport] - failed to read: Error reading response (EOF)
> 2017-10-30 19:13:38.644 [ERROR] [w.m.io.ModbusSerialTransaction] - execute try 3/3 error: I/O exception - failed to read. Request: net.wimpi.modbus.msg.ReadMultipleRegistersRequest@19de726 (unit id 1 & transaction 3). Serial parameters: SerialParameters@385e25[portName=/dev/ttyUSB0,baudRate=9600,flowControlIn=none,flowControlOut=none,databits=8,stopbits=1,parity=even,encoding=rtu,echo=false,receiveTimeoutMillis=1500]
> 2017-10-30 19:13:38.646 [ERROR] [w.m.io.ModbusSerialTransaction] - execute reached max tries 3, throwing last error: I/O exception - failed to read. Request: net.wimpi.modbus.msg.ReadMultipleRegistersRequest@19de726 (unit id 1 & transaction 3). Serial parameters: SerialParameters@385e25[portName=/dev/ttyUSB0,baudRate=9600,flowControlIn=none,flowControlOut=none,databits=8,stopbits=1,parity=even,encoding=rtu,echo=false,receiveTimeoutMillis=1500]
> 2017-10-30 19:14:00.187 [ERROR] [i.modbus.io.ModbusRTUTransport] - Last request: 01 03 00 0e 00 02 a5 c8

so how to understand “01 03 04 43 60 B3 33 DA 8C” (which means 224,7)
Is it a holding with float32 ?

Guys any ideas ?

Yesterday I have run new instance of Openhab 1.8.3 on my PC, connect via same USB/RS485 interface and it worked. In fact in the beggining it was not working then I change in config modbus name from capital letter to small and it started to work.
Today I backed to Pi, change letters, so config is same (except COM and ttyUSB0) and still “failed to read: Error reading response” :frowning_face::frowning_face:
I have removed all other modbus config, just left new one for meter same result.
connection is working, because when I launch python script it is working.

Continuing the discussion from Modbus and Energy meter:

How can you please convert the data 43 60 B3 33 to 224.7?

See Wikipedia for IEEE754 single precision floating number.
Or https://www.binaryconvert.com/result_float.html?hexadecimal=4360B333