diff --git a/app.py b/app.py index f066e87..e7df157 100644 --- a/app.py +++ b/app.py @@ -165,8 +165,8 @@ def post_to_harting(url, verify=False, timeout=3): except requests.exceptions.RequestException: return False -def post_backup_data(): - """Send queued card data from tag.txt to Harting API""" +def post_backup_data(hostname=None, device_ip=None, name=None): + """Send queued card data from tag.txt to Harting API and log summary to monitoring server""" if not os.path.exists(TAG_FILE): return @@ -174,7 +174,12 @@ def post_backup_data(): with open(TAG_FILE, "r") as f: lines = f.readlines() + if not lines: + return + remaining = [] + posted_count = 0 + for line in lines: line = line.strip() if not line: @@ -182,7 +187,8 @@ def post_backup_data(): # Try to post the URL if post_to_harting(line): - logging.info(f"Posted backed-up data: {line}") + logging.info(f"✓ Posted backed-up data: {line}") + posted_count += 1 continue # Success, don't keep it else: remaining.append(line) # Failed, keep for retry @@ -191,6 +197,12 @@ def post_backup_data(): with open(TAG_FILE, "w") as f: for line in remaining: f.write(line + "\n") + + # Send summary to monitoring server only if backups were posted + if posted_count > 0 and hostname and device_ip and name: + summary_msg = f"Backup card data pushed to server ({posted_count} records)" + send_log_to_server(summary_msg, hostname, device_ip, name) + logging.info(f"✓ {summary_msg}") except Exception as e: logging.error(f"Error posting backup data: {e}") @@ -340,7 +352,9 @@ def process_card_events(hostname, device_ip): # Try to post if post_to_harting(url): - logging.info(f"✓ Card event posted to API: {card_id}") + logging.info(f"✓ Card {card_id} inserted - Posted to API") + # Send to monitoring server ONLY on successful API post + send_log_to_server(f"Card {card_id} inserted", hostname, device_ip, name) else: logging.warning(f"✗ Offline: Saving card {card_id} to backup") try: @@ -350,9 +364,6 @@ def process_card_events(hostname, device_ip): logging.error(f"Failed to save backup: {e}") else: logging.debug(f"Device not configured (noconfig). Skipping API post for card {card_id}") - - # ALWAYS send log to monitoring server (regardless of API post result) - send_log_to_server(f"Card {card_id} inserted", hostname, device_ip, name) # Check for removed cards card_id, timestamp = card_state.get_removed() @@ -366,7 +377,9 @@ def process_card_events(hostname, device_ip): # Try to post if post_to_harting(url): - logging.info(f"✓ Card event posted to API: {card_id}") + logging.info(f"✓ Card {card_id} removed - Posted to API") + # Send to monitoring server ONLY on successful API post + send_log_to_server(f"Card {card_id} removed", hostname, device_ip, name) else: logging.warning(f"✗ Offline: Saving card {card_id} to backup") try: @@ -376,9 +389,6 @@ def process_card_events(hostname, device_ip): logging.error(f"Failed to save backup: {e}") else: logging.debug(f"Device not configured (noconfig). Skipping API post for card {card_id}") - - # ALWAYS send log to monitoring server (regardless of API post result) - send_log_to_server(f"Card {card_id} removed", hostname, device_ip, name) # Very small sleep for fast response (10ms = check 100x per second) time.sleep(0.01) @@ -483,7 +493,7 @@ def check_internet_connection(hostname, device_ip): print("✓ Connection OK") # Try to send any backed-up data - post_backup_data() + post_backup_data(hostname, device_ip, name) # Wait 40 minutes before next check time.sleep(WIFI_CHECK_INTERVAL)