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