Skip to content

Commit

Permalink
Merge pull request #1625 from samson0v/master
Browse files Browse the repository at this point in the history
Fixed processing SET modbus RPC
  • Loading branch information
imbeacon authored Dec 18, 2024
2 parents d811346 + 7c78245 commit 7c0074a
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 4 deletions.
16 changes: 15 additions & 1 deletion thingsboard_gateway/connectors/modbus/modbus_connector.py
Original file line number Diff line number Diff line change
Expand Up @@ -475,7 +475,21 @@ def __get_rpc_config(device: Slave, content):
rpc_method = content['data']['method']
if rpc_method == 'get' or rpc_method == 'set':
params = {}
for param in content['data']['params'].split(';'):

if rpc_method == 'set':
input_params_and_value_list = content['data']['params'].split(' ')
if len(input_params_and_value_list) < 2:
raise ValueError('Invalid RPC request format. '
'Expected RPC request format: '
'set param_name1=param_value1;param_name2=param_value2;...; value')

(input_params, input_value) = input_params_and_value_list
content['data']['params'] = input_value

if rpc_method == 'get':
input_params = content.get('data', {}).get('params', {})

for param in input_params.split(';'):
try:
(key, value) = param.split('=')
except ValueError:
Expand Down
10 changes: 7 additions & 3 deletions thingsboard_gateway/connectors/modbus/slave.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,19 @@ def __init__(self, connector, logger, config):
self.stopped = False
self._log = logger
self.connector = connector
self.name = "Modbus slave processor for unit " + str(config['unitId']) + " on host " + str(
config['host']) + ":" + str(config['port']) + ' ' + config['deviceName']
self.type = config.get('type', 'tcp').lower()

if self.type == 'serial':
self.name = "Modbus slave processor for unit " + str(config['unitId']) + " on port " + str(config['port']) + ' ' + config['deviceName']
else:
self.name = "Modbus slave processor for unit " + str(config['unitId']) + " on host " + str(
config.get('host')) + ":" + str(config['port']) + ' ' + config['deviceName']

self.callback = connector.callback

self.unit_id = config['unitId']
self.host = config.get('host')
self.port = config['port']
self.type = config.get('type', 'tcp').lower()
self.method = config['method']
self.tls = config.get('tls', {})
self.timeout = config.get('timeout')
Expand Down

0 comments on commit 7c0074a

Please sign in to comment.