diff --git a/orchestrateur/device_api.txt b/orchestrateur/device_api_key.txt similarity index 100% rename from orchestrateur/device_api.txt rename to orchestrateur/device_api_key.txt diff --git a/orchestrateur/main.py b/orchestrateur/main.py index 52bbae3..eda3dbb 100644 --- a/orchestrateur/main.py +++ b/orchestrateur/main.py @@ -14,6 +14,7 @@ from sensors import ultrasonicRanger, temp_hum, button, camera, buzzer, rgb_lcd, from lib.systemd_logs import get_systemd_logs from external_display_manager import DisplayManager from rgb_lcd_manager import RGBLCDManager +from web_server import start_technician_web_server rgb_lcd.setRGB(255, 255, 255, brightness=0.8) rgb_lcd.setText("SmartWave\nOrchestrateur") @@ -21,6 +22,8 @@ rgb_lcd.setText("SmartWave\nOrchestrateur") # --- CONFIGURATION CONSTANTS --- DISPLAY_DEBOUNCE_SECONDS = 3 # Seconds to wait after first change before broadcasting TECHNICIAN_MODE = False +def is_technician_mode_active() -> bool: + return TECHNICIAN_MODE # --- DB SETUP --- DB_PATH = "orchestrateur/db.sqlite" @@ -73,7 +76,7 @@ def get_device_id(): return "RPI_Orchestrateur_Default" def get_api_key(): - for path in ["api_key.txt", "/home/pi/SmartWave/orchestrateur/api_key.txt"]: + for path in ["device_api_key.txt", "/home/pi/SmartWave/orchestrateur/device_api_key.txt"]: try: with open(path, "r") as f: return f.read().strip() @@ -606,7 +609,9 @@ async def check_rfid_card_api(card_id: str) -> bool: return len(items) > 0 if isinstance(items, list) else bool(data) elif isinstance(data, list): return len(data) > 0 - + else: + print(f"[RFID Task] OData API returned status {response.status_code}: {response.json()}") + set_cloud_alert(True) # Set cloud alert on API connection failure return False except Exception as e: @@ -673,7 +678,7 @@ async def request_cloud_cooking_plan(microwave_id, sensors_data): return - plan = res_json.get("cook_plan", res_json) + plan = res_json.get("plan", {}).get("cook_plan", res_json) c_time = plan.get("cook_time_seconds") c_power = plan.get("effective_power_watts") @@ -873,7 +878,14 @@ async def main(): process_messages_task(), monitor_dish_height_task(), display_broadcast_worker_task(), - rfid_listener_task() # <-- ADDED HERE + rfid_listener_task(), + start_technician_web_server( + get_logs_cb=get_systemd_logs, + telemetry_cb=handle_telemetry_request, + is_tech_mode_cb=is_technician_mode_active, + host=config.TECHNICIAN_WEB_SERVER_HOST, + port=config.TECHNICIAN_WEB_SERVER_PORT + ) ) if __name__ == "__main__":