diff --git a/.env b/.env index 3ba74a9..8a1a598 100644 --- a/.env +++ b/.env @@ -74,7 +74,7 @@ ALERT_SMS_TO_SACLAY=Michel:+33759600180 ALERT_SMS_TO_MEUDON=Michel:+33759600180 ALERT_SMS_CLIENT_TO_MEUDON=Sekou:+33625903364,Damien:+33680388259 -ALERT_SMS_CLIENT_TO_SACLAY=Nicolas:+33682069405,Sabrina:+33650270939,Mirceta:+33601162960 +ALERT_SMS_CLIENT_TO_SACLAY=Nicolas:+33682069405,Sabrina:+33650270939 # Activer/désactiver globalement l’envoi client ALERT_SMS_CLIENT_ENABLED=1 # 1) couper les SMS internes diff --git a/app/Mqtt_meudon.py b/app/Mqtt_meudon.py index d25b97e..e7c5e29 100644 --- a/app/Mqtt_meudon.py +++ b/app/Mqtt_meudon.py @@ -7,7 +7,7 @@ Récupère les mesures MQTT du site Meudon et les insère dans la table Sondes.M import os import logging from logging.handlers import RotatingFileHandler - +import socket import mysql.connector from mysql.connector import Error @@ -28,10 +28,16 @@ DB_PASS = os.getenv("DB_PASS") DB_NAME = os.getenv("DB_NAME") # --- MQTT Meudon --- -MQTT_HOST = os.getenv("MQTT_HOST_MEUDON", os.getenv("MQTT_HOST")) -MQTT_USER = os.getenv("MQTT_USER_MEUDON", os.getenv("MQTT_USER")) -MQTT_PASS = os.getenv("MQTT_PASS_MEUDON", os.getenv("MQTT_PASS")) -MQTT_PORT = int(os.getenv("MQTT_PORT_MEUDON", os.getenv("MQTT_PORT", 1883))) +MQTT_HOST = os.getenv("MQTT_HOST_MEUDON") +MQTT_USER = os.getenv("MQTT_USER_MEUDON") +MQTT_PASS = os.getenv("MQTT_PASS_MEUDON") +MQTT_PORT = int(os.getenv("MQTT_PORT_MEUDON", "1883")) + +# Client ID (configurable, sinon suffixé avec le hostname) +MQTT_CLIENT_ID = os.getenv( + "MQTT_CLIENT_ID_MEUDON", + f"Mqtt_meudon_{socket.gethostname()}" +) GYRO_TOPIC_MEUDON = os.getenv("GYRO_MQTT_TOPIC_MEUDON", "Meudon/gyrophare") @@ -113,8 +119,9 @@ def insert_temperature(sonde: str, temperature: float) -> None: def on_connect(client, userdata, flags, reason_code, properties=None): if reason_code == 0: logging.info("Connecté au broker MQTT Meudon (%s)", MQTT_HOST) - client.subscribe("Meudon/mod02/#") - logging.info("Abonné au topic : Meudon/#") + # Abonnement à TOUT ce qui commence par "Meudon/" + result, mid = client.subscribe("Meudon/#") + logging.info("Abonné au topic : Meudon/# (result=%s, mid=%s)", result, mid) else: logging.error("Échec de connexion MQTT (Meudon), code retour = %s", reason_code) @@ -154,13 +161,21 @@ def main(): setup_logging() logging.info("Démarrage du script Mqtt_meudon") - # Vérif minimale des variables d'env + # Vérif minimale des variables d'env MySQL for var in ["DB_HOST", "DB_USER", "DB_PASS", "DB_NAME"]: if os.getenv(var) in (None, ""): logging.error("Variable d'environnement %s manquante !", var) + # Vérif minimale des variables d'env MQTT + if not MQTT_HOST: + logging.error("MQTT_HOST_MEUDON manquant !") + if not MQTT_USER: + logging.warning("MQTT_USER_MEUDON non défini (connexion sans login ?)") + if not MQTT_PORT or MQTT_PORT <= 0: + logging.error("MQTT_PORT_MEUDON invalide : %s", MQTT_PORT) + client = mqtt.Client( - client_id="Mqtt_meudon_client", + client_id=MQTT_CLIENT_ID, callback_api_version=CallbackAPIVersion.VERSION2 ) client.username_pw_set(MQTT_USER, MQTT_PASS)