@@ -262,8 +262,10 @@ def __init__(self, authData):
262
262
self .stations = { d ['_id' ] : d for d in self .rawData }
263
263
self .modules = dict ()
264
264
for i in range (len (self .rawData )):
265
- for m in self .rawData [i ]['modules' ]:
266
- self .modules [ m ['_id' ] ] = m
265
+ # Loop on external modules if they are present
266
+ if 'modules' in self .rawData [i ]:
267
+ for m in self .rawData [i ]['modules' ]:
268
+ self .modules [ m ['_id' ] ] = m
267
269
self .default_station = list (self .stations .values ())[0 ]['station_name' ]
268
270
269
271
def modulesNamesList (self , station = None ):
@@ -309,20 +311,21 @@ def lastData(self, station=None, exclude=0):
309
311
# Define oldest acceptable sensor measure event
310
312
limit = (time .time () - exclude ) if exclude else 0
311
313
ds = s ['dashboard_data' ]
312
- if ds [ 'time_utc' ] > limit :
314
+ if ds . get ( 'time_utc' , limit + 10 ) > limit :
313
315
lastD [s ['module_name' ]] = ds .copy ()
314
- lastD [s ['module_name' ]]['When' ] = lastD [s ['module_name' ]].pop ("time_utc" )
316
+ lastD [s ['module_name' ]]['When' ] = lastD [s ['module_name' ]].pop ("time_utc" ) if 'time_utc' in lastD [ s [ 'module_name' ]] else time . time ()
315
317
lastD [s ['module_name' ]]['wifi_status' ] = s ['wifi_status' ]
316
- for module in s ["modules" ]:
317
- ds = module ['dashboard_data' ]
318
- if ds ['time_utc' ] > limit :
319
- # If no module_name has been setup, use _id by default
320
- if "module_name" not in module : module ['module_name' ] = module ["_id" ]
321
- lastD [module ['module_name' ]] = ds .copy ()
322
- lastD [module ['module_name' ]]['When' ] = lastD [module ['module_name' ]].pop ("time_utc" )
323
- # For potential use, add battery and radio coverage information to module data if present
324
- for i in ('battery_vp' , 'rf_status' ) :
325
- if i in module : lastD [module ['module_name' ]][i ] = module [i ]
318
+ if 'modules' in s :
319
+ for module in s ["modules" ]:
320
+ ds = module ['dashboard_data' ]
321
+ if ds .get ('time_utc' ,limit + 10 ) > limit :
322
+ # If no module_name has been setup, use _id by default
323
+ if "module_name" not in module : module ['module_name' ] = module ["_id" ]
324
+ lastD [module ['module_name' ]] = ds .copy ()
325
+ lastD [s ['module_name' ]]['When' ] = lastD [s ['module_name' ]].pop ("time_utc" ) if 'time_utc' in lastD [s ['module_name' ]] else time .time ()
326
+ # For potential use, add battery and radio coverage information to module data if present
327
+ for i in ('battery_vp' , 'rf_status' ) :
328
+ if i in module : lastD [module ['module_name' ]][i ] = module [i ]
326
329
return lastD
327
330
328
331
def checkNotUpdated (self , station = None , delay = 3600 ):
0 commit comments