Hello,
Firstly I will explain my setup-up: I have an Intel NUC with Ubuntu 22.04 that has telegraf, influxdb and Node-red installed. The connection to the different hardware goes by Wifi to a Modbus RTU-TCP converter “USR-W610”. Then I have connected over Modbus, 3 energy meters “Circutor MK LCD”, 2 “STEPS Data Loggers”, 1 “Seneca Z-key-mbus” (transforms mbus to modbus) that reads 2 “Sharky 775” energy meters, 1 Seneca Z-D-Out and a Heat Pump.
I’m having an issue with Telegraf in where the data is being read correctly but time to time the “Error in plugin: slave 10: modbus: response data size ‘11’ does not match count '18” will pop up witch doesn’t affect the data collection or at least not in an important way, the real issue comes after a random period of time that could be of hours or a day when somehow the system goes haywire and telegraf only receives Error in plugin: read tcp i/o timeout, disconnecting all the equipment’s 1 by 1 I found out that the haywire hardware was 1 of the Circutor energy meters but I replaced it and the issue happens again with the replacement of the energy meter or one of the remaining 2.
I really don’t know if the cause of the error is something not program correctly in the telegraf.conf, or even if the error has any relation with the energy meter going haywire. Below, I will add my telegraf.conf maybe someone might be able to help or give any idea.
Thanks a lot beforehand. And sorry, this is my first project using this softwares
interval = “10s”
round_interval = true
metric_batch_size = 10000
metric_buffer_limit = 10000
collection_jitter = “0s”
flush_interval = “11s”
flush_jitter = “1s”
precision = “0s”
hostname = “”
omit_hostname = false
urls = [“http://localhost:8086”]
token = “OwLI7aJ5DB08lbDZdweA4Z0qhEBMr-HFH-9-6YpA8UstkrdPJV55K1q1guidWp8a8TZab-_Xu4dIXzO55232tw==”
organization = “test”
bucket = “test”
[[inputs.modbus]]
name = “DLs”
slave_id = 1
timeout = “2s”
controller = “tcp://10.10.100.254:8899”
configuration_type = “request”
[[inputs.modbus.request]]
slave_id = 9
byte_order = “ABCD”
register = “input”
fields = [
{ address=3, name=“T-10”, type=“INT16”, scale=0.1 },
{ address=4, name=“T-11”, type=“INT16”, scale=0.1 },
{ address=6, name=“Pd-01”, type=“INT16”, scale=0.1 },
{ address=12, name=“Int_Hum”, type=“INT16”, scale=0.1 },
{ address=14, name=“Int_Temp”, type=“INT16”, scale=0.1 },
]
[[inputs.modbus.request]]
slave_id = 9
byte_order = “ABCD”
register = “holding”
fields = [
{ address=164, name=“Exterior_lights”, type=“INT16”, scale=1.0 },
{ address=168, name=“PM02”, type=“INT16”, scale=1.0 },
]
[[inputs.modbus.request]]
slave_id = 5
byte_order = “ABCD”
register = “coil”
fields = [
{ address=0, name=“FanCoilHighSpeed”, type=“INT16”, scale=1.0 },
]
[[inputs.modbus.request]]
slave_id = 10
byte_order = “ABCD”
register = “input”
fields = [
{ address=3, name="T-01", type="INT16", scale=0.1 },
{ address=4, name="T-02", type="INT16", scale=0.1 },
{ address=5, name="T-03", type="INT16", scale=0.1 },
{ address=6, name="T-04", type="INT16", scale=0.1 },
{ address=7, name="T-05", type="INT16", scale=0.1 },
{ address=8, name="T-06", type="INT16", scale=0.1 },
{ address=9, name="T-07", type="INT16", scale=0.1 },
{ address=10, name="T-08", type="INT16", scale=0.1 },
{ address=11, name="T-09", type="INT16", scale=0.1 },
]
[[inputs.modbus.request]]
slave_id = 10
byte_order = “ABCD”
register = “holding”
fields = [
{ address=164, name=“EV01”, type=“INT16”, scale=1.0 },
{ address=167, name=“EV02”, type=“INT16”, scale=1.0 },
]
[[inputs.modbus.request]]
slave_id = 20
byte_order = “ABCD”
register = “holding”
fields = [
{ address=0, name=“Grid_Voltage”, type=“INT32”, scale=0.1 },
{ address=2, name=“Grid_Current”, type=“INT32”, scale=0.001 },
{ address=4, name=“Grid_Energy”, type=“INT32”, scale=1.0 },
{ address=6, name=“Grid_Frequency”, type=“INT32”, scale=0.1 },
]
[[inputs.modbus.request]]
slave_id = 2
byte_order = “ABCD”
register = “holding”
fields = [
{ address=0, name=“PV_Voltage”, type=“INT32”, scale=0.1 },
{ address=2, name=“PV_Current”, type=“INT32”, scale=0.001 },
{ address=4, name=“PV_Energy”, type=“INT32”, scale=1.0 },
{ address=6, name=“PV_Frequency”, type=“INT32”, scale=0.1 },
]
[[inputs.modbus.request]]
slave_id = 64
byte_order = “ABCD”
register = “holding”
optimization = “shrink”
fields = [
{ address=0, name=“Load_Voltage”, type=“INT32”, scale=0.1 },
{ address=2, name=“Load_Current”, type=“INT32”, scale=0.001 },
{ address=4, name=“Load_Energy”, type=“INT32”, scale=1.0 },
{ address=6, name=“Load_Frequency”, type=“INT32”, scale=0.1 },
]
[[inputs.modbus.request]]
slave_id = 11
byte_order = “ABCD”
register = “holding”
optimization = “shrink”
fields = [
{ address=200, name=“Pump_mode”, type=“INT16” },
{ address=444, name=“Water_flow”, type=“INT16”, scale=0.1},
{ address=1001, name=“Set_point_1_cooling”, type=“INT16”, scale=0.1 },
{ address=1002, name=“Set_point_1_heating”, type=“INT16”, scale=0.1 },
{ address=1004, name=“Set_point_2_cooling”, type=“INT16”, scale=0.1 },
{ address=1005, name=“Set_point_2_heating”, type=“INT16”, scale=0.1 },
{ address=253, name=“Evaporation_temperature”, type=“INT16” },
{ address=254, name=“Condesation_temperature”, type=“INT16” },
{ address=305, name=“Compressor_working_hours”, type=“INT16” },
{ address=406, name=“High_pressure”, type=“INT16” },
{ address=414, name=“Low_pressure”, type=“INT16” },
{ address=400, name=“Water_inlet_temp”, type=“INT16”, scale=0.1 },
{ address=401, name=“Water_outlet_temp”, type=“INT16”, scale=0.1 },
{ address=428, name=“HP_External_temp”, type=“INT16”, scale=0.1 },
{ address=949, name=“Alarms_1”, type=“INT16” },
{ address=951, name=“Alarms_2”, type=“INT16” },
{ address=952, name=“Alarms_3”, type=“INT16” },
{ address=953, name=“Alarms_4”, type=“INT16” },
{ address=954, name=“Alarms_5”, type=“INT16” },
{ address=955, name=“Alarms_6”, type=“INT16” },
{ address=956, name=“Alarms_7”, type=“INT16” },
]
[[inputs.modbus.request]]
slave_id = 1
byte_order = “ABCD”
register = “holding”
optimization = “shrink”
fields = [
{ address=0, name=“HP_Meter_Energy”, type=“INT16”, scale=1.0 },
{ address=2, name=“HP_Meter_Volume”, type=“INT16”, scale=0.001 },
{ address=6, name=“HP_Meter_Error”, type=“INT16”, scale=1.0 },
{ address=7, name=“HP_Meter_Volume_Flow”, type=“INT16”, scale=0.001 },
{ address=8, name=“HP_Meter_Power”, type=“INT16”, scale=0.001 },
{ address=9, name=“HP_Meter_Flow_Temperature”, type=“INT16”, scale=0.1 },
{ address=10, name=“HP_Meter_Return_Temperature”, type=“INT16”, scale=0.1 },
{ address=11, name=“HP_Meter_Temperature_Difference”, type=“INT16”, scale=0.1 },
{ address=12, name=“FC_Meter_Energy”, type=“INT16”, scale=1.0 },
{ address=14, name=“FC_Meter_Volume”, type=“INT16”, scale=0.001 },
{ address=18, name=“FC_Meter_Error”, type=“INT16”, scale=1.0 },
{ address=19, name=“FC_Meter_Volume_Flow”, type=“INT16”, scale=0.001 },
{ address=20, name=“FC_Meter_Power”, type=“INT16”, scale=0.001 },
{ address=21, name=“FC_Meter_Flow_Temperature”, type=“INT16”, scale=0.1 },
{ address=22, name=“FC_Meter_Return_Temperature”, type=“INT16”, scale=0.1 },
{ address=23, name=“FC_Meter_Temperature_Difference”, type=“INT16”, scale=0.1 },
]
[inputs.modbus.workarounds]
pause_between_requests = “50ms”
pause_after_connect = “50ms”
close_connection_after_gather = true