@@ -77,7 +77,8 @@ async def _collect_objects(
7777 ping : bool ,
7878 device_kwargs : Dict [str , Any ],
7979 ):
80- device_kwargs .setdefault ("poll" , 0 )
80+ device_kwargs .setdefault ("poll" , - 1 )
81+ device_kwargs .setdefault ("auto_save" , False )
8182
8283 logger .error (f"starting with { ip = } { ping = } " )
8384 async with BAC0 .start (ip = ip , ping = ping ) as bacnet :
@@ -119,14 +120,19 @@ async def _collect_objects(
119120
120121 for (address , device_id , _ ) in discovered_entries :
121122 device = await BAC0 .device (address , device_id , bacnet , ** device_kwargs )
122- objects : List [Dict [str , Any ]] = []
123-
124- for bobj in device .points :
125- obj = bobj .properties .asdict
126- self ._clean_object (obj )
127- objects .append (obj )
128-
129- self .objects [(address , device_id )] = objects
123+ try :
124+ objects : List [Dict [str , Any ]] = []
125+
126+ for bobj in device .points :
127+ obj = bobj .properties .asdict
128+ self ._clean_object (obj )
129+ objects .append (obj )
130+
131+ self .objects [(address , device_id )] = objects
132+ finally :
133+ disconnect_task = device .disconnect (save_on_disconnect = False )
134+ if disconnect_task is not None :
135+ await disconnect_task
130136
131137 def _clean_object (self , obj : Dict [str , Any ]):
132138 if "name" in obj :
0 commit comments