Dans la version 1 de ce script il était possible de comparer la valeur de sondes de température ambiante à un seuil d’alarme unique.
Ceci afin d’etre prévenu en cas d’augmentation anormale d’une température ambiante assimilable à une pré-alarme incendie.
Les principaux inconvénients :
– limités aux seuls températures ambiantes
– un seul seuil de température
La version 2 permet :
– d’utiliser n’importe quelle sonde de température
– de définir un seuil personnalisé par sonde
– de définir des seuils par groupe (type) de sondes
– de définir un seuil par défaut pour les sondes sans groupe ni seuil personnalisé.
– de définir pour chacune des sondes un système de notification différent
– de modifier le délai d’exécution du script simplement
– d’activer/désactiver simplement l’exécution du script
vous pouvez définir un seuil de température (en °C) par sonde ou par groupe ou par défaut, actuellement 3 groupes disponible : ambiance, frigo, congel
le seuil défini par sonde est prioritaire sur le seuil par groupe qui est prioritaire sur le seuil par défaut
comparaison de chaque température au seuil fixé et envoi d’une notification si dépassement du seuil.
Si plusieurs températures sont supérieures au(x) seuil(s), 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 éventuellement bloquer les services de type pushbullet.
comment remplir le tableau les_devices ?
device = le nom du dispositif à surveiller
type_device = le nom du groupe auquel appartient le device à surveiller : ambiance, frigo, congel. Si aucun groupe particulier, nil.
seuil = seuil particulier à n’utiliser que sur le device concerné, inhibe le seuil affecté au groupe et le seuil par défaut . Si aucun seuil particulier, nil.
si type_device = nil et seuil = nil le seuil defaut_seuil sera appliqué.
Pour activer un ou plusieurs mode de notifications particuliers renseigner subsystem
les différentes valeurs de subsystem acceptées sont : gcm;http;kodi;lms;nma;prowl;pushbullet;pushover;pushsafer;telegram
pour plusieurs modes de notification séparez chaque mode par un point virgule. si subsystem = nil toutes les notifications seront activées.
--[[ script_time_alarme_temperature.lua auteur : papoo MAJ : 13/03/2018 création : 15/08/2016 Principe : ce script vérifie toutes les deux minutes (modifiable via la variable delai) si il n'y a pas une augmentation de température anormale sur les sondes de températures référencées dans le tableau les_devices. vous pouvez définir un seuil de température (en °C) par sonde ou par groupe ou par defaut, actuellement 3 groupes disponible : ambiance, frigo, congel le seuil défini par sonde est prioritaire sur le seuil par groupe qui est prioritaire sur le seuil par défaut comparaison de chaque température au seuil fixé. 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 éventuellement bloquer les services de type pushbullet. url blog : https://pon.fr/lua-alarme-augmentation-temperature-v2 http://easydomoticz.com/forum/viewtopic.php?f=17&t=6205 URL github : https://github.com/papo-o/domoticz_scripts/blob/master/Lua/script_time_alarme_temperature.lua --]] -------------------------------------------- ------------ Variables à éditer ------------ -------------------------------------------- local debugging = true -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir local script_actif = true -- active (true) ou désactive (false) ce script simplement local delai = 2 -- délai d'exécution de ce script en minutes de 1 à 59 local only_mail = false -- true si l'on ne souhaite être notifié que par mail, false si l'on souhaite toutes les notifications disponible. local EmailTo = 'votre@mail.com' -- adresse mail, séparées par ; si plusieurs local defaut_seuil = "45" -- seuil en °C par défaut avant notification pour tout les devices non personnalisés local seuil_ambiance = "40" -- seuil en °C par défaut avant notification pour les devices du groupe ambiance local seuil_frigo = "12" -- seuil en °C par défaut avant notification pour les devices du groupe réfrigérateur local seuil_congel = '-5' -- seuil en °C par défaut avant notification pour les devices du groupe lumières local les_devices = {}; -- comment remplir le tableau les_devices ? -- device = le nom du dispositif à surveiller -- type_device = le nom du groupe auquel appartient le device à surveiller : ambiance, frigo, congel. -- seuil = seuil particulier à n'utiliser que sur le device concerné, inhibe le seuil affecté au groupe. si aucun seuil particulier, nil. -- si type_device = nil et seuil = nil le seuil defaut_seuil sera appliqué. -- Pour activer un ou plusieurs mode de notifications particuliers renseigner subsystem -- les différentes valeurs de subsystem acceptées sont : gcm;http;kodi;lms;nma;prowl;pushbullet;pushover;pushsafer;telegram -- pour plusieurs modes de notification séparez chaque mode par un point virgule. si subsystem = nil toutes les notifications seront activées. -- les_devices[#les_devices+1] = {device="", type_device ="", seuil = nil, subsystem = nil} les_devices[#les_devices+1] = {device="Temperature Salon", type_device = "ambiance", seuil = nil, subsystem = "pushbullet"} -- 1er device, seuil en °C les_devices[#les_devices+1] = {device="Temperature Cave", type_device = "ambiance", seuil = nil, subsystem = nil} -- 2eme device les_devices[#les_devices+1] = {device="Temperature Parents", type_device = "ambiance", seuil = nil, subsystem = nil} -- 3eme device les_devices[#les_devices+1] = {device="Temperature Bureau", type_device = "ambiance", seuil = nil, subsystem = nil} -- 4eme device les_devices[#les_devices+1] = {device="Temperature Cuisine", type_device = "ambiance", seuil = nil, subsystem = nil} -- 5eme device les_devices[#les_devices+1] = {device="Temperature Douche", type_device = "ambiance", seuil = nil, subsystem = nil} -- 6eme device les_devices[#les_devices+1] = {device="Réfrigérateur", type_device = "frigo", seuil = nil, subsystem = "telegram"} -- 7eme device les_devices[#les_devices+1] = {device="Congélateur", type_device = "congel", seuil = nil, subsystem = "telegram"} -- 8eme device -------------------------------------------- ----------- Fin variables à éditer --------- -------------------------------------------- local nom_script = "Alarme température" local version = "2.0" local message = {} local alarmes = 0 local seuil_notification = nil commandArray = {} -------------------------------------------- ---------------- Fonctions ----------------- -------------------------------------------- function voir_les_logs (s, debugging) -- nécessite la variable local debugging if (debugging) then if s ~= nil then print ("".. s .."") else print ("aucune valeur affichable") end end end -- usage voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging) -------------------------------------------- -------------- Fin Fonctions --------------- -------------------------------------------- time=os.date("*t") if script_actif == true then if ((time.min-1) % delai) == 0 then -- toutes les xx minutes en commençant par xx:01. xx définissable via la variable delai voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging) for k,v in pairs(les_devices) do local Vtype = v.type_device local Vseuil = v.seuil local V=otherdevices_temperature[v.device] if v.seuil ~= nil then seuil_notification = v.seuil else if Vtype ~= nil then if Vtype == "ambiance" then seuil_notification = seuil_ambiance elseif Vtype == "frigo" then seuil_notification = seuil_frigo elseif Vtype == "congel" then seuil_notification = seuil_congel end else seuil_notification = defaut_seuil end voir_les_logs("--- --- --- seuil de notification : ".. seuil_notification .."°C",debugging) end voir_les_logs("--- --- --- device value "..v.device.." = "..(V or "nil"),debugging) if V~= nil then if string.match(V, ';') then V=V:match('^(.-);') voir_les_logs("--- --- --- svalue "..v.device.." = "..(V or "nil"),debugging) end if tonumber(seuil_notification) < tonumber(V) then alarmes = alarmes+1 table.insert(message, 'température '..v.device..' : '..V..'°C, supérieure au seuil fixé à '..seuil_notification..'°C
') if only_mail ~= true then if v.subsystem ~= nil then commandArray['SendNotification'] = 'Attention#température '..v.device..' : '..V..'°C, supérieure au seuil fixé à '..seuil_notification..'°C!#0###'.. v.subsystem ..'' else commandArray['SendNotification'] = 'Attention#température '..v.device..' : '..V..'°C, supérieure au seuil fixé à '..seuil_notification..'°C!' end end end end end if alarmes >= 1 then if only_mail == true and EmailTo ~= nil then voir_les_logs("--- --- --- Nb d'alarmes : "..alarmes,debugging) objet = 'Alerte température '..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 end voir_les_logs("========= Fin ".. nom_script .." (v".. version ..") =========",debugging) end -- if time end -- if script actif return commandArray
Retrouvez la dernière version de ce script sur [homepage]https://github.com/papo-o/domoticz_scripts/blob/master/Lua/script_time_alarme_temperature.lua[/homepage]
bonjour super script et qui fonctionne super bien.