Skip to content

Commit 94b4b60

Browse files
authored
Merge pull request #1951 from Andry925/fix/error-during-knx-rpc-request
fix error with incorrect rpc request handling
2 parents 093d44d + 41f4063 commit 94b4b60

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

thingsboard_gateway/connectors/knx/knx_connector.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -303,10 +303,12 @@ def __check_and_process_reserved_rpc(self, rpc_method_name, content):
303303

304304
def __process_rpc(self, content, rpc_config):
305305
try:
306-
result = {}
306+
307307
value = content.get('data', {}).get('params')
308-
self.__create_task(self.__process_rpc_request, (rpc_config, ), {
309-
'value': value, 'result': result})
308+
task = self.__create_task(self.__process_rpc_request, (rpc_config,), {
309+
'value': value})
310+
result = task.result()
311+
310312
self.__log.info('Processed RPC request with result: %r', result)
311313
self.__gateway.send_rpc_reply(content['device'],
312314
req_id=content['data'].get('id'),
@@ -318,15 +320,17 @@ def __process_rpc(self, content, rpc_config):
318320
content={'result': str(e)},
319321
success_sent=False)
320322

321-
async def __process_rpc_request(self, config, value=None, result={}):
323+
async def __process_rpc_request(self, config, value=None):
324+
result = {}
322325
if self.__client.connection_manager.connected:
323326
group_address = config['groupAddress']
324327
data_type = config.get('dataType')
325328

326329
if value is not None or config['requestType'] == 'write':
327-
result['response'] = await group_value_write(self.__client, group_address, value, data_type)
330+
result['response'] = group_value_write(self.__client, group_address, value, data_type)
328331
else:
329332
result['response'] = await read_group_value(self.__client, group_address, data_type)
333+
return {"response": result}
330334
else:
331335
self.__log.error('KNX bus is not connected')
332336

@@ -346,6 +350,7 @@ def __create_task(self, func, args, kwargs):
346350

347351
while not task.done() and not self.__stopped.is_set():
348352
sleep(.02)
353+
return task
349354

350355
@property
351356
def connector_type(self):

0 commit comments

Comments
 (0)