Pré-alarme incendie en lua

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.
prealarme
/!\ 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

Laisser un commentaire