@@ -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