diff --git a/thingsboard_gateway/connectors/modbus/modbus_connector.py b/thingsboard_gateway/connectors/modbus/modbus_connector.py index 6fc513f8..d7c69ff9 100644 --- a/thingsboard_gateway/connectors/modbus/modbus_connector.py +++ b/thingsboard_gateway/connectors/modbus/modbus_connector.py @@ -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: diff --git a/thingsboard_gateway/connectors/modbus/slave.py b/thingsboard_gateway/connectors/modbus/slave.py index d7ab231a..ddac21fd 100644 --- a/thingsboard_gateway/connectors/modbus/slave.py +++ b/thingsboard_gateway/connectors/modbus/slave.py @@ -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')