CharlesO Posté(e) le 31 décembre 2024 Signaler Posté(e) le 31 décembre 2024 Salut, J'aurais besoin d'un coup de main pour créer un QuickApp qui fonctionne avec ma Unifi Dream Machine Pro (UDM Pro) et contrôle une lumière en fonction des logs d'accès. Voici ce que j'aimerais que le QuickApp fasse : Se connecter à la UDM Pro en SSH : Utiliser un nom d'utilisateur et un mot de passe pour se connecter. Écouter un fichier de log spécifique : Chemin du fichier : /data/unifi-access/log/access-log.log. Ce fichier contient les logs des accès aux portes. Déclencher une action lorsqu'une condition spécifique est remplie : Rechercher l'occurrence d'un log contenant : "result":"Access Granted" "reader_device_id":"28704e***58" "user_id":"4e6f***b976" Dès que ces conditions sont remplies, allumer une lumière. Contexte technique : J'utilise une UDM Pro pour gérer mes accès. La lumière est contrôlée via Home Center 3. Penses-tu pouvoir m’aider avec cela ? Si oui, pourrais-tu m'indiquer les étapes ou coder une base que je pourrai personnaliser ? Merci d’avance pour ton aide !
CharlesO Posté(e) le 31 décembre 2024 Auteur Signaler Posté(e) le 31 décembre 2024 exemple de ligne de log : 2024-12-31T18:15:30+02:00 INFO mqtt_events:1542 [AccessLog] {"time":"2024-12-31 18:15:30 +0200 IST","result":"Access Granted","authentication_type":"NFC","authentication_value":"4ffb1c76","hub_device_id":"f4e2c6***58","reader_device_id":"28704e***58","user_id":"4e6f***b976","user_type":"user","user_name":"Joha***ayon","policy_id":"46d5***693d","policy_name":"Defa***licy"}
CharlesO Posté(e) le 31 décembre 2024 Auteur Signaler Posté(e) le 31 décembre 2024 chat gpt ma fait ca : -- Configurations UDM Pro local udmHost = "192.168.1.1" -- Adresse IP de la UDM Pro local sshUser = "user" -- Nom d'utilisateur SSH local sshPass = "password" -- Mot de passe SSH local logFilePath = "/data/unifi-access/log/access-log.log" -- Chemin vers le fichier de logs -- Conditions pour activer la lumière local requiredResult = "Access Granted" local requiredReaderID = "28704e***58" local requiredUserID = "4e6f***b976" -- Configurations de la lumière (ID de l'appareil HC3) local lightID = 42 -- Remplace par l'ID de ta lumière -- Fonction pour établir une connexion SSH et écouter les logs function executeSSHCommandContinuous(host, user, password, command) local pipe = io.popen(string.format( "sshpass -p '%s' ssh -o StrictHostKeyChecking=no %s@%s '%s'", password, user, host, command ), "r") return pipe end -- Fonction pour traiter chaque ligne de log function processLogLine(line) local success, logData = pcall(json.decode, line) if success and logData then if logData.result == requiredResult and logData.reader_device_id == requiredReaderID and logData.user_id == requiredUserID then fibaro.debug("Condition remplie : activation de la lumière.") turnOnLight() end else fibaro.debug("Ligne ignorée ou mal formée : " .. tostring(line)) end end -- Fonction pour allumer la lumière function turnOnLight() fibaro.call(lightID, "turnOn") fibaro.debug("Lumière activée.") end -- Fonction principale pour le suivi des logs function monitorLogs() local command = string.format("tail -f %s", logFilePath) local sshPipe = executeSSHCommandContinuous(udmHost, sshUser, sshPass, command) if sshPipe then fibaro.debug("Connexion SSH établie. Suivi des logs...") while true do local line = sshPipe:read("*l") -- Lire une ligne à la fois if line then processLogLine(line) else fibaro.debug("Perte de connexion ou fin du fichier.") break end end sshPipe:close() else fibaro.debug("Impossible de se connecter en SSH.") end end -- Lancement du suivi des logs au démarrage du QuickApp monitorLogs() chat gpt ma fait ca
CharlesO Posté(e) le 31 décembre 2024 Auteur Signaler Posté(e) le 31 décembre 2024 mais cela ne marche pas
Messages recommandés