Problem with communicating Modbus to InfluxDB.

I want to collect real time data from the Lumel ND30Iot power quality analyzer via Modbus TCP/IP and display it on SCADA Grafana.
I tried to do this: From Lumel, data is downloaded to InfluxDB via the Telegraf plugin.
I don't know if I'm doing it correctly. Influx there read a register that i want, but the value is constant and equal to 0.01. (I want to measure voltage, so it should be 230V).
Is there any easier way? I also tried through NodeRed but it seemed even more difficult.


From the ND30IoT's Service Manual ( do pobrania/ND30IoT/ND30IoT_service_manual.pdf), Register 4002 is described as "Voltage on terminal 2" with a range of only 0...2 (0 - first L1 phase voltage, 1 - second L2 phase voltage, 2 - third L3 phase voltage). This register seems to set how "terminal 2" is configured. It is not the actual voltage.

Take a look at Table 21 on page 74 in the above manual. I think this table has the registers you want. Keep in mind, though, they are 32-bit floating point numbers. For example, "L1 phase voltage" can be accesses in one of three ways:
  1. Registers 6000 and 6001 (The 32-bit floating point value is comprised of two 16-bit register values, least significant register first, i.e. CDAB or 1-0-3-2 byte order)
  2. Registers 8000 and 8001 (The 32-bit floating point value is comprised of two 16-bit register values, most significant register first, i.e. ABCD or 3-2-1-0 byte order)
  3. Register 7500 (This appears to be a 32-bit floating point "Enron/Daniels" register)

So in your Telegraf configuration script, if you leave the "byte_order" at "ABCD", you'll want to access registers in the 8000-8970 range on the ND30IoT. You'll also need to change the "type" to "FLOAT32" in your register definition in the "fields" section and do not apply any additional scaling (i.e. get rid of the "scale" field).