@@ -53,6 +53,7 @@ def __init__(self, name, **kwargs):
53
53
self .on_run = kwargs .pop ("on_run" , None )
54
54
self .interval = kwargs .pop ("interval" , 1.0 )
55
55
self .backoff = kwargs .pop ("backoff" , None )
56
+ self .args = kwargs .pop ("args" , None )
56
57
value = kwargs .pop ("value" , None )
57
58
if keys := kwargs .pop ("keys" , {}):
58
59
value = { # Create a complex object (with sub-records).
@@ -165,7 +166,7 @@ async def run(self, client):
165
166
166
167
def run_sync (self , client ):
167
168
if self .on_run is not None :
168
- self .on_run (client )
169
+ self .on_run (client , self . args )
169
170
if self .on_read is not None :
170
171
self .value = self .on_read (client )
171
172
if self .on_write is not None and self .on_write_scheduled :
@@ -327,7 +328,7 @@ def poll_records(self):
327
328
if log_level_enabled (logging .ERROR ):
328
329
logging .error (f"task: { record .name } raised exception: { str (e )} ." )
329
330
330
- def poll_connect (self , aiot = None ):
331
+ def poll_connect (self , aiot = None , args = None ):
331
332
logging .info ("Connecting to Arduino IoT cloud..." )
332
333
try :
333
334
self .mqtt .connect ()
@@ -343,12 +344,12 @@ def poll_connect(self, aiot=None):
343
344
344
345
if self .async_mode :
345
346
if self .thing_id is None :
346
- self .register ("discovery" , on_run = self .poll_discovery , interval = 0.200 )
347
- self .register ("mqtt_task" , on_run = self .poll_mqtt , interval = 0.100 )
347
+ self .register ("discovery" , on_run = self .poll_discovery , interval = 0.500 )
348
+ self .register ("mqtt_task" , on_run = self .poll_mqtt , interval = 1.0 )
348
349
raise DoneException ()
349
350
self .connected = True
350
351
351
- def poll_discovery (self , aiot = None ):
352
+ def poll_discovery (self , aiot = None , args = None ):
352
353
self .mqtt .check_msg ()
353
354
if self .records .get ("thing_id" ).value is not None :
354
355
self .thing_id = self .records .pop ("thing_id" ).value
@@ -372,7 +373,7 @@ def poll_discovery(self, aiot=None):
372
373
if self .async_mode :
373
374
raise DoneException ()
374
375
375
- def poll_mqtt (self , aiot = None ):
376
+ def poll_mqtt (self , aiot = None , args = None ):
376
377
self .mqtt .check_msg ()
377
378
if self .thing_id is not None :
378
379
self .senmlpack .clear ()
@@ -405,6 +406,8 @@ async def run(self, interval, backoff):
405
406
try :
406
407
await asyncio .gather (* self .tasks .values (), return_exceptions = False )
407
408
break # All tasks are done, not likely.
409
+ except KeyboardInterrupt as e :
410
+ raise e
408
411
except Exception as e :
409
412
task_except = e
410
413
pass # import traceback; traceback.print_exc()
0 commit comments