From b00879cdfa77e85ed12938e29de1fe4cadbdc364 Mon Sep 17 00:00:00 2001 From: Michel Date: Mon, 20 Apr 2026 13:52:39 +0200 Subject: [PATCH] Consolider l'envoi de notifications --- .env | 13 ++++++++++--- app/Monitor_Meudon.py | 2 +- app/Monitor_Saclay.py | 2 +- app/gyro_control.py | 24 +++++++++++++++--------- 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/.env b/.env index cb816eb..3695dc8 100644 --- a/.env +++ b/.env @@ -12,10 +12,17 @@ MQTT_PASS=3J@bjYP0 MQTT_PORT=1883 # Synology Chat -SYNO_CHAT_WEBHOOK=https://mj91.fr/chat/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=QpLWAZEqIW1EOBHkfDkmr1LqC3P3J1SASWfqpchZdd1xPY7xGbYerS4lCADJnPrm -SYNO_CHAT_VERIFY_SSL=true -SYNO_CHAT_BOTNAME="Gestion Gyro" +SYNO_CHAT_WEBHOOK_MONITOR_SACLAY=https://mj91.fr/chat/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=QpLWAZEqIW1EOBHkfDkmr1LqC3P3J1SASWfqpchZdd1xPY7xGbYerS4lCADJnPrm +SYNO_CHAT_WEBHOOK_MONITOR_MEUDON=https://mj91.fr/chat/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=QpLWAZEqIW1EOBHkfDkmr1LqC3P3J1SASWfqpchZdd1xPY7xGbYerS4lCADJnPrm + +SYNO_CHAT_WEBHOOK_GYRO_SACLAY=https://mj91.fr/chat/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=NUqdEGbtmTBBGIN29z0AVZUeQnyZ8tskyXGpkOFqHwqOAXB8quvHxlEcewKX3Xnq +SYNO_CHAT_WEBHOOK_GYRO_MEUDON=https://mj91.fr/chat/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=NUqdEGbtmTBBGIN29z0AVZUeQnyZ8tskyXGpkOFqHwqOAXB8quvHxlEcewKX3Xnq + +SYNO_CHAT_BOTNAME_MONITOR="Injection données dans tables" +SYNO_CHAT_BOTNAME_GYRO="Gestion Gyro" + SYNO_CHAT_TIMEOUT=10 +SYNO_CHAT_VERIFY_SSL=true SYNO_CHAT_GYRO_ENABLED=1 # Boucle rapide du gyro diff --git a/app/Monitor_Meudon.py b/app/Monitor_Meudon.py index 1d7ce0e..3ab8a78 100644 --- a/app/Monitor_Meudon.py +++ b/app/Monitor_Meudon.py @@ -392,7 +392,7 @@ def depassement_depuis_30min(site: str, sonde: str, seuil: float) -> bool: def send_synology_chat(message: str, *, username: str | None = None) -> bool: webhook = ( _env_str(f"SYNO_CHAT_WEBHOOK_{SITE}") or - _env_str(f"SYNO_CHAT_WEBHOOK_{SITE.upper()}") or + _env_str(f"SYNO_CHAT_WEBHOOK_MONITOR") or _env_str("SYNO_CHAT_WEBHOOK") ) if not webhook: diff --git a/app/Monitor_Saclay.py b/app/Monitor_Saclay.py index 63b0638..e835069 100644 --- a/app/Monitor_Saclay.py +++ b/app/Monitor_Saclay.py @@ -308,7 +308,7 @@ def depassement_depuis_30min(site: str, sonde: str, seuil: float) -> bool: def send_synology_chat(message: str, *, username: str | None = None) -> bool: webhook = ( _env_str(f"SYNO_CHAT_WEBHOOK_{SITE}") or - _env_str(f"SYNO_CHAT_WEBHOOK_{SITE.upper()}") or + _env_str(f"SYNO_CHAT_WEBHOOK_MONITOR_SACLAY") or _env_str("SYNO_CHAT_WEBHOOK") ) if not webhook: diff --git a/app/gyro_control.py b/app/gyro_control.py index 77ea74c..f8497e9 100644 --- a/app/gyro_control.py +++ b/app/gyro_control.py @@ -47,15 +47,22 @@ DEF_NORMAL_CONFIRM = int(_env_str("GYRO_NORMAL_CONFIRM", "6")) def send_synology_chat(message: str, *, site: str, username: str | None = None) -> bool: webhook = ( - _env_str(f"SYNO_CHAT_WEBHOOK_{site}") - or _env_str(f"SYNO_CHAT_WEBHOOK_{site.upper()}") - or _env_str("SYNO_CHAT_WEBHOOK") + _env_str(f"SYNO_CHAT_WEBHOOK_GYRO_{site}") or + _env_str(f"SYNO_CHAT_WEBHOOK_GYRO_{site.upper()}") or + _env_str("SYNO_CHAT_WEBHOOK_GYRO") or + _env_str(f"SYNO_CHAT_WEBHOOK_{site}") or + _env_str(f"SYNO_CHAT_WEBHOOK_{site.upper()}") or + _env_str("SYNO_CHAT_WEBHOOK") ) if not webhook: log.info("[%s] Synology Chat non configuré.", site) return False - botname = username or _env_str("SYNO_CHAT_BOTNAME", "Gestion Gyro") + botname = ( + username or + _env_str("SYNO_CHAT_BOTNAME_GYRO") or + _env_str("SYNO_CHAT_BOTNAME", "Gestion Gyro") + ) timeout = int(_env_str("SYNO_CHAT_TIMEOUT", "10")) verify_ssl = _env_bool("SYNO_CHAT_VERIFY_SSL", True) @@ -63,7 +70,9 @@ def send_synology_chat(message: str, *, site: str, username: str | None = None) if botname: chat_payload["username"] = botname - form_data = {"payload": json.dumps(chat_payload, ensure_ascii=False)} + form_data = { + "payload": json.dumps(chat_payload, ensure_ascii=False) + } try: response = requests.post( @@ -80,10 +89,7 @@ def send_synology_chat(message: str, *, site: str, username: str | None = None) try: data = response.json() if isinstance(data, dict): - success = bool(data.get("success", False)) - if not success: - log.warning("[%s] Synology Chat a répondu sans succès: %s", site, data) - return success + return bool(data.get("success", False)) except ValueError: pass