Aller au contenu

QuickApp UDM Pro Access Hub


Messages recommandés

Posté(e)

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 :

  1. Se connecter à la UDM Pro en SSH :

    • Utiliser un nom d'utilisateur et un mot de passe pour se connecter.
  2. É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.
  3. 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 !

Posté(e)

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"}
 

Posté(e)

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 

×
×
  • Créer...