Skip to content

[BUG]Modbus Connector retries parameter type mismatch #1953

@nabil-rejeb

Description

@nabil-rejeb

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions