-
Notifications
You must be signed in to change notification settings - Fork 936
Description
Describe the bug
In modbus configuration it is said that the retries parameter is "Retrying sending data to the master. The values can be either: true or false"
But in PyModbus source code we can find : retries: int = 3 in the init section of all clients types (AsyncModbusSerialClient, AsyncModbusTcpClient ...)
As a result in the log file we can see (the last line):
No response received after True retries, continue with next request
So the type of the retries parameter must be reviewed to be in accordance with the pyModbus implementation.
Best regards
2025-08-29 17:01:14 - |DEBUG| - [modbus_connector.py] - modbus_connector - __poll_device - 250 - Polling Compteur 4 slave
2025-08-29 17:01:14 - |DEBUG| - [slave.py] - slave - read - 252 - Reading 98 registers from address 0 with function code 3
2025-08-29 17:01:18 - |ERROR| - [modbus_connector.py] - modbus_connector - __poll_device - 275 - Failed to poll Compteur 4 device: Modbus Error: [Input/Output] No response>
2025-08-29 17:01:18 - |DEBUG| - [modbus_connector.py] - modbus_connector - __poll_device - 276 - Exception:
Traceback (most recent call last):
File "/var/lib/thingsboard_gateway/venv/lib/python3.11/site-packages/thingsboard_gateway/connectors/modbus/modbus_connector.py", line 261, in __poll_device
slave_data = await self.__read_slave_data(slave)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/lib/thingsboard_gateway/venv/lib/python3.11/site-packages/thingsboard_gateway/connectors/modbus/modbus_connector.py", line 289, in __read_slave_data
response = await slave.read(config['functionCode'], config['address'], config['objectsCount'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/lib/thingsboard_gateway/venv/lib/python3.11/site-packages/thingsboard_gateway/connectors/modbus/slave.py", line 255, in read
result = await self.__read(function_code, address, objects_count)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/lib/thingsboard_gateway/venv/lib/python3.11/site-packages/thingsboard_gateway/connectors/modbus/slave.py", line 271, in __read
result = await self.available_functions[function_code](address=address,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/lib/thingsboard_gateway/venv/lib/python3.11/site-packages/thingsboard_gateway/connectors/modbus/entities/master.py", line 32, in wrapper
resp = await func(master, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/lib/thingsboard_gateway/venv/lib/python3.11/site-packages/thingsboard_gateway/connectors/modbus/entities/master.py", line 97, in read_holding_registers
result = await self.__client.read_holding_registers(address=address, count=count, slave=unit_id) # noqa
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/lib/thingsboard_gateway/venv/lib/python3.11/site-packages/pymodbus/transaction/transaction.py", line 190, in execute
raise ModbusIOException(txt)
pymodbus.exceptions.ModbusIOException: Modbus Error: [Input/Output] No response received after True retries, continue with next request
Connector name : Modbus connector
Versions (please complete the following information):
- OS: [e.g. Ubuntu 24.04]
- Thingsboard IoT Gateway version 3.7.7
- Python version 3.11