@@ -53,6 +53,7 @@ def __init__(self, name, **kwargs):
5353 self .on_run = kwargs .pop ("on_run" , None )
5454 self .interval = kwargs .pop ("interval" , 1.0 )
5555 self .backoff = kwargs .pop ("backoff" , None )
56+ self .args = kwargs .pop ("args" , None )
5657 value = kwargs .pop ("value" , None )
5758 if keys := kwargs .pop ("keys" , {}):
5859 value = { # Create a complex object (with sub-records).
@@ -165,7 +166,7 @@ async def run(self, client):
165166
166167 def run_sync (self , client ):
167168 if self .on_run is not None :
168- self .on_run (client )
169+ self .on_run (client , self . args )
169170 if self .on_read is not None :
170171 self .value = self .on_read (client )
171172 if self .on_write is not None and self .on_write_scheduled :
@@ -327,7 +328,7 @@ def poll_records(self):
327328 if log_level_enabled (logging .ERROR ):
328329 logging .error (f"task: { record .name } raised exception: { str (e )} ." )
329330
330- def poll_connect (self , aiot = None ):
331+ def poll_connect (self , aiot = None , args = None ):
331332 logging .info ("Connecting to Arduino IoT cloud..." )
332333 try :
333334 self .mqtt .connect ()
@@ -343,12 +344,12 @@ def poll_connect(self, aiot=None):
343344
344345 if self .async_mode :
345346 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 )
348349 raise DoneException ()
349350 self .connected = True
350351
351- def poll_discovery (self , aiot = None ):
352+ def poll_discovery (self , aiot = None , args = None ):
352353 self .mqtt .check_msg ()
353354 if self .records .get ("thing_id" ).value is not None :
354355 self .thing_id = self .records .pop ("thing_id" ).value
@@ -372,7 +373,7 @@ def poll_discovery(self, aiot=None):
372373 if self .async_mode :
373374 raise DoneException ()
374375
375- def poll_mqtt (self , aiot = None ):
376+ def poll_mqtt (self , aiot = None , args = None ):
376377 self .mqtt .check_msg ()
377378 if self .thing_id is not None :
378379 self .senmlpack .clear ()
@@ -405,6 +406,8 @@ async def run(self, interval, backoff):
405406 try :
406407 await asyncio .gather (* self .tasks .values (), return_exceptions = False )
407408 break # All tasks are done, not likely.
409+ except KeyboardInterrupt as e :
410+ raise e
408411 except Exception as e :
409412 task_except = e
410413 pass # import traceback; traceback.print_exc()
0 commit comments