@@ -185,10 +185,11 @@ def read_solar_generation():
185185def append_metric_to_backlog (metric ):
186186 """Append a metrics record to the backlog file as a JSON line."""
187187 try :
188- backlog_dir = os .path .dirname (metrics_backlog_file )
189- os .makedirs (backlog_dir , exist_ok = True )
188+ os .makedirs (os .path .dirname (metrics_backlog_file ), exist_ok = True )
189+ safe = dict (metric )
190+ safe .pop ("auth_key" , None )
190191 with open (metrics_backlog_file , "a" ) as f :
191- f .write (json .dumps (metric ) + "\n " )
192+ f .write (json .dumps (safe ) + "\n " )
192193 logger .info ("Appended current metric to backlog." )
193194 except Exception as e :
194195 logger .error (f"Failed to append metric to backlog: { e } " )
@@ -223,7 +224,8 @@ def send_backlog_metrics():
223224
224225 for record in records :
225226 try :
226- response = requests .post (system_metrics_url , json = record , timeout = 10 )
227+ payload = {** record , "auth_key" : auth_key }
228+ response = requests .post (system_metrics_url , json = payload , timeout = 10 )
227229 response .raise_for_status ()
228230 sent_count += 1
229231 except requests .exceptions .RequestException :
@@ -266,7 +268,8 @@ def upload_image_and_data(image_path, detection_data_list):
266268 "confidence" : float (detection_data ["Confidence Score" ]),
267269 "date" : detection_data ["Date" ],
268270 }
269- logger .info (f"Sending image data to server: { data } " )
271+ logger .info ("Sending image data to server: %s" ,
272+ {k : v for k , v in data .items () if k != "auth_key" })
270273 response = requests .post (image_server_url , files = files , data = data )
271274 response .raise_for_status ()
272275 except requests .exceptions .RequestException as e :
@@ -454,7 +457,8 @@ def gather_system_metrics():
454457 "network_received" : psutil .net_io_counters ().bytes_recv ,
455458 "uptime_seconds" : int (time .time () - psutil .boot_time ()),
456459 }
457-
460+
461+ # Sensor reads must never explode the whole job
458462 try :
459463 env = read_env (bus , SENSOR_STATE )
460464 metrics ["temperature_celsius" ] = env .get ("t_c" )
@@ -484,7 +488,8 @@ def gather_system_metrics():
484488 metrics ["vedirect_battery_voltage" ] = round (ved_v , 2 ) if ved_v is not None else None
485489 metrics ["vedirect_load_power_watts" ] = round (ved_load_p , 2 ) if ved_load_p is not None else None
486490
487- logger .info (f"System metrics gathered: { metrics } " )
491+ logger .info ("System metrics gathered: %s" ,
492+ {k : v for k , v in metrics .items () if k != "auth_key" })
488493 return metrics
489494
490495def send_system_metrics ():
@@ -503,8 +508,9 @@ def send_system_metrics():
503508 logger .info (f"Successfully sent system metrics: { response .status_code } " )
504509 except requests .exceptions .RequestException as e :
505510 logger .error (f"Failed to POST system metrics: { e } " )
506- append_metric_to_backlog (metrics )
511+ append_metric_to_backlog (metrics ) # still have 'metrics' here
507512 except Exception as e :
513+ # If we failed before 'metrics' existed, at least log it clearly
508514 logger .critical (f"send_system_metrics() unexpected error before POST: { e } " , exc_info = True )
509515
510516
@@ -627,4 +633,4 @@ def schedule_uploads():
627633 logger .warning (f"BME688 not detected or unreadable at 0x{ bme_addr :02X} ; temperature/humidity/pressure will be None." )
628634
629635 # Kick off the scheduler loop
630- schedule_uploads ()
636+ schedule_uploads ()
0 commit comments