bonjour,
après avoir installé des sondes de température un peu partout, je me suis dis qu’un petit script pour relever les t° anormales et envoyer une notification pour chacune d’elles pourrait être utile.
le Principe : ce script vérifie toutes les deux minutes si il n’y a pas une augmentation de température anormale dans une des pièces référencées dans le tableau les_températures.
Il compare chaque température au seuil fixé par la variable seuil_notification (en °). Si une ou plusieurs températures sont supérieures à ce seuil, envoie d’une notification pour chacune d’elle.
/!\ si le seuil est fixé trop bas, cela risque de générer beaucoup de notifications et d’éventuellement bloquer les services de type pushbullet.
--[[ name : script_time_prealarme incendie auteur : papoo version : 1.10 MAJ : 16/08/2016 version 1.1 : ajout fonctionnalité envoi par mail uniquement création : 15/08/2016 Principe : ce script vérifie toutes les deux minutes si il n'y a pas une augmentation de température anormale dans une des pièces référencées dans le tableau les_températures. Il compare chaque température au seuil fixé par la variable seuil_notification (en °). Si une ou plusieurs températures sont supérieures à ce seuil, envoie d'une notification pour chacune d'elle. /!\ si le seuil est fixé trop bas, cela risque de générer beaucoup de notifications et d'éventuellement bloquer les services de type pushbullet. ]]-- -------------------------------------------- ------------ Variables à éditer ------------ -------------------------------------------- local debugging = true -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir local seuil_notification=40 -- seuil température au delà duquel les notifications d'alarme seront envoyées local les_temperatures = {"Temp ch1", "Temp ch2", "Temp ch3", "Temp Entree", "T° salon","Couloir 1er étage", "Sonde Cave", "T° tableau elec", "Temp Douche"}; local only_mail = true -- true si l'on ne souhaite être notifié que par mail, false si l'on souhaite toutes les notifications disponible. local EmailTo = 'email@email.com' -- adresse mail, séparées par ; si plusieurs -------------------------------------------- ----------- Fin variables à éditer --------- -------------------------------------------- local indexArray=0 local message = {} local alarmes = 0 commandArray = {} -------------------------------------------- ---------------- Fonctions ----------------- -------------------------------------------- function voir_les_logs (s, debugging) if (debugging) then if s ~= nil then print ("".. s .."") else print ("aucune valeur affichable") end end end now=os.date("*t") -------------------------------------------- -------------- Fin Fonctions --------------- -------------------------------------------- if now.min % 2 == 0 then voir_les_logs("--- --- --- script_time_prealarme incendie.lua --- --- ---",debugging) voir_les_logs("--- --- --- seuil de notification ".. seuil_notification .."°C",debugging) for i,d in ipairs(les_temperatures) do local v=otherdevices[d] voir_les_logs("--- --- --- device value "..d.." = "..(v or "nil"),debugging) if string.match(v, ';') then v=v:match('^(.-);') voir_les_logs("--- --- --- svalue "..d.." = "..(v or "nil"),debugging) end if v~= nil then if tonumber(v) > tonumber(seuil_notification) then alarmes = alarmes+1 table.insert(message, 'température '..d..' : '..v..'°C, supérieure au seuil fixé à '..seuil_notification..'°C
') if only_mail ~= true then commandArray[indexArray] = {['SendNotification'] = 'Alerte préalarme incendie#température '..d..' : '..v..'°C, supérieure au seuil fixé à '..seuil_notification..'°C'} indexArray=indexArray+1 end end end end if alarmes >= 1 and only_mail == true then voir_les_logs("--- --- --- Nb d'alarmes : "..alarmes,debugging) objet = 'Alerte préalarme incendie '..os.date("%H:%M") commandArray['SendEmail']= objet..'#'.. table.concat(message) .. '#' .. EmailTo voir_les_logs("--- --- --- Objet:"..objet,debugging) voir_les_logs("--- --- --- Corps du message: "..table.concat(message),debugging) voir_les_logs("--- --- --- Destinataire: "..EmailTo,debugging) end voir_les_logs("--- --- --- Fin script_time_prealarme incendie.lua --- --- ---",debugging) end -- if now return commandArray
si cela peut vous servir