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.
La version 2 nous permettait entre autre :
– 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é.
…
La version 3 nous apporte quelques changements supplémentaires :
toujours la gestion de la température, mais aussi l’hygrométrie.
Les seuils montant mais aussi descendant. Pour définir des alarmes température ou hygrométrie basse.
Le gros défaut des scripts précédent était l’envoi ininterrompu de notifications en cas de dépassement. C’est maintenant résolu. Vous pouvez fixer un délai en minutes entre deux notification pour une même alarme. ce délai est unique et valable pour l’ensemble des notifications.
Vous pouvez aussi être notifié uniquement par mail
le script complet
--[[ alarmeTemperatureHygrometrie.lua auteur : papoo MAJ : 26/01/2019 création : 15/08/2016 Principe : ce script vérifie toutes les minutes si il n'y a pas une augmentation (ou une diminution) de température (ou d'hygrométrie) anormale sur les sondes de températures/hygrométrie référencées dans le tableau les_devices. vous pouvez définir un seuil de température (en °C) ou d'humidité (en %hr) par sonde, par groupe ou par défaut, actuellement 5 groupes disponible : ambiance, frigo, congel, materiel et humidite le seuil défini par sonde est prioritaire sur le seuil par groupe qui est prioritaire sur le seuil par défaut. Vous pouvez définir le 'sens' de déclenchement augmentation de la valeur en dessus du seuil ou diminution de la valeur en dessous du seuil comparaison de chaque valeur au seuil fixé et envoi d'une notification si dépassement du seuil. Si plusieurs valeurs de sonde dépassent le(s) seuil(s), envoie d'une notification pour chacune d'elle. définir le délai en minutes entre deux notifications d'une même alarme, par défaut delai configuré à 1440 minutes = 24 heures (modifiable) url blog : https://pon.fr/dzvents-alarme-temperature-et-hygrometrie-v3 URL post : https://easydomoticz.com/forum/viewtopic.php?f=17&t=7947&p=65092 URL github : https://github.com/papo-o/domoticz_scripts/blob/master/dzVents/scripts/alarmeTemperatureHygrometrie.lua --]] -------------------------------------------- ------------ Variables à éditer ------------ -------------------------------------------- local email = false -- true si l'on ne souhaite être notifié que par mail, false si l'on souhaite local notification = true -- mettre à false si vous ne voulez pas de notification local adresseMail = 'votre.adresse@mail.com' -- adresse mail, séparées par ; si plusieurs local defaut_seuil = '45' -- seuil en °C par défaut avant notification pour tous 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 = '25' -- seuil en °C par défaut avant notification pour les devices du groupe refrigerateur local seuil_congel = '-10' -- seuil en °C par défaut avant notification pour les devices du groupe congelateur local seuil_materiel = '75' -- seuil en °C par défaut avant notification pour les devices du groupe materiel local seuil_humidite = '70' -- seuil en % hr par défaut avant notification pour les devices du groupe humidite local delai = '1440' -- nombre de minutes entre deux notifications d'une même alarme (1440 pour une seule notification par jour) local sujet = "/!\\ Attention, alarme /!\\" -- sujet des notifications local les_devices = { -- comment remplir le tableau les_devices ? -- ['nom'] = le nom du dispositif à surveiller -- ['groupe'] = le nom du groupe auquel appartient le device à surveiller : ambiance, frigo, congel, humidite. 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 ['groupe'] = 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 ['systemeNotification'] = nil toutes les notifications seront activées. -- { ['nom'] ="", ['groupe'] ="", ['type'] = "temperature, ['seuil'] = nil, ['sens'] = 'augmentation', ['systemeNotification'] = nil} { ['nom'] = 'Temperature Salon', ['groupe'] = 'ambiance', ['type'] = 'temperature', ['seuil'] = 35, ['sens'] = 'augmentation',}, { ['nom'] = 'Temperature Salon', ['groupe'] = 'humidite', ['type'] = 'humidite', ['seuil'] = 70, ['sens'] = 'augmentation',}, { ['nom'] = 'Temperature Salon', ['groupe'] = 'humidite', ['type'] = 'humidite', ['seuil'] = 25, ['sens'] = 'diminution' ,}, { ['nom'] = 'Temperature Cave', ['groupe'] = 'ambiance', ['type'] = 'temperature', ['seuil'] = nil, ['sens'] = 'augmentation',}, { ['nom'] = 'Temperature Parents', ['groupe'] = 'ambiance', ['type'] = 'temperature', ['seuil'] = nil, ['sens'] = 'augmentation',}, { ['nom'] = 'Temperature Bureau', ['groupe'] = 'ambiance', ['type'] = 'temperature', ['seuil'] = nil, ['sens'] = 'augmentation',}, { ['nom'] = 'Temperature Cuisine', ['groupe'] = 'ambiance', ['type'] = 'temperature', ['seuil'] = nil, ['sens'] = 'augmentation',}, { ['nom'] = 'Temperature Douche', ['groupe'] = 'ambiance', ['type'] = 'temperature', ['seuil'] = nil, ['sens'] = 'augmentation',}, { ['nom'] = 'Temperature Douche', ['groupe'] = 'humidite', ['type'] = 'humidite', ['seuil'] = 70, ['sens'] = 'augmentation',}, { ['nom'] = 'Temperature Garage', ['groupe'] = 'ambiance', ['type'] = 'temperature', ['seuil'] = nil, ['sens'] = 'augmentation',}, { ['nom'] = 'Temperature Cellier', ['groupe'] = 'ambiance', ['type'] = 'temperature', ['seuil'] = nil, ['sens'] = 'augmentation',}, { ['nom'] = 'Temperature Entree', ['groupe'] = 'ambiance', ['type'] = 'temperature', ['seuil'] = nil, ['sens'] = 'augmentation',}, { ['nom'] = 'Temperature Raspberry', ['groupe'] = 'materiel', ['type'] = 'temperature', ['seuil'] = nil, ['sens'] = 'augmentation',}, { ['nom'] = 'Synology Temp', ['groupe'] = 'materiel', ['type'] = 'temperature', ['seuil'] = 50, ['sens'] = 'augmentation',}, }; -------------------------------------------- ----------- Fin variables à éditer --------- -------------------------------------------- local nomScript = 'Alarme T° et HR' local versionScript = '3.0' return { active = true, on = { timer = {'every minute'} }, logging = { -------------------------------------------- ------------- Niveau log à éditer ---------- -------------------------------------------- -- level = domoticz.LOG_DEBUG, -- level = domoticz.LOG_INFO, -- Seulement un niveau peut être actif; commenter les autres -- level = domoticz.LOG_ERROR, -- Only one level can be active; comment others -- level = domoticz.LOG_MODULE_EXEC_INFO, -------------------------------------------- ----------- Fin niveau log à éditer -------- -------------------------------------------- marker = nomScript..' v'..versionScript }, data = { envoiNotification = { history = true, maxMinutes = tonumber(delai)-1 }}, execute = function(domoticz) -------------------------------------------- ---------- Notifications à éditer ---------- -------------------------------------------- local tableNotification = { -- tableau avec un ou plusieurs systèmes de notification. -- décommentez le(s) système(s) de notification que vous souhaitez utiliser. -- domoticz.NSS_GOOGLE_CLOUD_MESSAGING, -- domoticz.NSS_PUSHOVER, -- domoticz.NSS_HTTP, -- domoticz.NSS_KODI, -- domoticz.NSS_LOGITECH_MEDIASERVER, -- domoticz.NSS_NMA, -- domoticz.NSS_PROWL, -- domoticz.NSS_PUSHALOT, domoticz.NSS_PUSHBULLET, -- domoticz.NSS_PUSHOVER, -- domoticz.NSS_PUSHSAFER, domoticz.NSS_TELEGRAM, } -------------------------------------------- -------- Fin Notifications à éditer -------- -------------------------------------------- for i, deviceToCheck in pairs(les_devices) do local nom = deviceToCheck['nom'] local groupe = deviceToCheck['groupe'] local seuil = deviceToCheck['seuil'] if seuil == nil then if groupe ~= nil then if groupe == 'humidite' then seuil = tonumber(seuil_humidite) elseif groupe == 'frigo' then seuil = tonumber(seuil_frigo) elseif seuil == 'congel' then seuil = tonumber(seuil_congel) elseif groupe == 'ambiance' then seuil = tonumber(seuil_ambiance) elseif groupe == 'materiel' then seuil = tonumber(seuil_materiel) elseif groupe == nil then seuil = tonumber(defaut_seuil) end end end local Type = deviceToCheck['type'] domoticz.log("groupe : "..tostring(groupe).." type : "..tostring(Type).." seuil : "..tostring(seuil), domoticz.LOG_DEBUG) local valeur = '' if Type == 'humidite' then valeur = tonumber(domoticz.devices(nom).humidity) else valeur = tonumber(domoticz.devices(nom).temperature) end valeur = domoticz.utils.round(valeur,1) local sens = deviceToCheck['sens'] if sens == 'diminution' then declench = 'inférieur' else declench = 'supérieur' end local systemeNotification = deviceToCheck['systemeNotification'] if Type == 'humidite' then message = "La sonde ".. tostring(nom) .." avec un seuil d\'alarme "..tostring(declench).." à "..tostring(seuil).." %, est à "..tostring(valeur).." %" else message = "La sonde ".. tostring(nom) .." avec un seuil d\'alarme "..tostring(declench).." à "..tostring(seuil)..", est à "..tostring(valeur).." °C" end nomtype = string.gsub (nom..Type, " ", "") if (valeur >= seuil and sens == 'augmentation') or (valeur <= seuil and sens == 'diminution') then domoticz.data.envoiNotification.forEach(function(item) if item.data == nomtype then timeNotif = tonumber(item.time.minutesAgo) end end) domoticz.log("dernière notification de l\'alarme sonde "..tostring(nom).." : "..tostring(timeNotif).." minutes", domoticz.LOG_INFO) if timeNotif == nil or (timeNotif ~= nil and timeNotif >= tonumber(delai)) then if email then domoticz.email(sujet,message,adresseMail) end if notification then domoticz.notify(sujet, message, domoticz.PRIORITY_NORMAL, domoticz.SOUND_INTERMISSION,"", tableNotification ) end domoticz.data.envoiNotification.add(nomtype) end end timeNotif = nil end -- for end }
retrouver la dernière version de ce script sur