[LUA] Rafraîchissement nocturne

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
jackslayter
Messages : 1040
Inscription : 30 sept. 2014, 14:40
Localisation : Isère (38)

Re: LUA : Rafraîchissement nocturne

Message par jackslayter »

moi je me suis monté un Nextion avec toute les temp, j'ai même ajouté un delta de température sur la temp extérieur toute les 10 minutes, donc comme ça je vois quand la temp commence à baisser et vu que j'ai toutes les temp en live je sais quand ouvrir
Raspberry Pi + RFLink + Domoticz Beta
Oregon - 3x Thgr122Nx / Chacon - micromodule 200w, télécommande 3b et 16b, 2x module 1000w, détecteur de fumée, contact de porte, 2x prise 3500w / OWL - CM180 / TRC02 v2 RGB 3M / Cheap - PIR, contact de porte
romain1206
Messages : 54
Inscription : 30 janv. 2019, 21:30

Re: LUA : Rafraîchissement nocturne

Message par romain1206 »

vil1driver a écrit : 12 juil. 2019, 10:59 Salut,

Remet url comme dans l'exemple et désactive le besoin de mot de pass pour le réseau local
modif faites, et ajouter le 127.0.0.1 en authent sans mot de passe

merci
Stf4
Messages : 27
Inscription : 08 sept. 2019, 18:32

Re: LUA : Rafraîchissement nocturne

Message par Stf4 »

Bonjour et bonne année

j'ai essaie d'installer votre script sans succès ,le log m'indique:


2020-01-01 14:41:01.073 Error: dzVents: Error: (2.5.3) ...omoticz/scripts/dzVents/generated_scripts/teste temp.lua:92: attempt to index a nil value (global 'otherdevices_svalues')
2020-01-01 14:41:09.494 (GATEWAY rfxcom) Temp + Humidity (TEMPERATURE SDB)
2020-01-01 14:41:09.599 Status: dzVents: <font color='#f3031d'>=========== Rafraîchissement nocturne2 (v1.05) ===========</font>
2020-01-01 14:41:09.599 Status: dzVents: <font color='#f3031d'>--- --- --- seuil de notification 25°C</font>
2020-01-01 14:41:09.599 Error: dzVents: Error: (2.5.3) ...omoticz/scripts/dzVents/generated_scripts/teste temp.lua:92: attempt to index a nil value (global 'otherdevices_svalues')
2020-01-01 14:41:21.682 (GATEWAY rfxcom) Temp + Humidity (TEMPERATURE EXTERIEUR)
2020-01-01 14:41:28.521 Status: dzVents: <font color='#f3031d'>=========== Rafraîchissement nocturne2 (v1.05) ===========</font>
2020-01-01 14:41:28.521 Status: dzVents: <font color='#f3031d'>--- --- --- seuil de notification 25°C</font>
2020-01-01 14:41:28.596 Status: dzVents: <font color='#f3031d'>=========== Rafraîchissement nocturne2 (v1.05) ===========</font>
2020-01-01 14:41:28.596 Status: dzVents: <font color='#f3031d'>--- --- --- seuil de notification 25°C</font>
2020-01-01 14:41:28.521 Error: dzVents: Error: (2.5.3) ...omoticz/scripts/dzVents/generated_scripts/teste temp.lua:92: attempt to index a nil value (global 'otherdevices_svalues')
2020-01-01 14:41:28.596 Error: dzVents: Error: (2.5.3) ...omoticz/scripts/dzVents/generated_scripts/teste temp.lua:92: attempt to index a nil value (global 'otherdevices_svalues')

Avez vous une idée sur ce qui est a l'origine de ce problème ?

STF4
Mon system domoticz en béta - RFXCOM XL 433- PHILIPS HUE- :D
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: LUA : Rafraîchissement nocturne

Message par papoo »

Bonjour et bonne année,
la derniere version de ce script n'est pas celle dont vous vous servez (v1.05) mais la v1.21
elle ce trouve à cette adresse https://github.com/papo-o/domoticz_scri ... cturne.lua
vu que tu utilise l’éditeur de script interne, commente (en ajoutant -- devant) comme indiqué les lignes

Code : Tout sélectionner

package.path = package.path..";/home/pi/domoticz/scripts/lua/fonctions/?.lua"   -- ligne à commenter en cas d'utilisation des fonctions directement dans ce script
require('fonctions_perso')                                                      -- ligne à commenter en cas d'utilisation des fonctions directement dans ce script
et décommente les lignes indiquées comme cela

Code : Tout sélectionner

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)
--------------------------------------------
function url_encode(str) -- encode la chaine str pour la passer dans une url 
   if (str) then
   str = string.gsub (str, "\n", "\r\n")
   str = string.gsub (str, "([^%w ])",
   function (c) return string.format ("%%%02X", string.byte(c)) end)
   str = string.gsub (str, " ", "+")
   end
   return str
end 
les noms de tes devices sont à rallonge tu devrait faire des tests device par device en leur donnant des noms courts, sans caractères spéciaux , ...
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Stf4
Messages : 27
Inscription : 08 sept. 2019, 18:32

Re: LUA : Rafraîchissement nocturne

Message par Stf4 »

j'ai suivi vos indications cependant j'ai toujours une erreur :

LOG:

2020-01-01 19:34:00.443 Error: dzVents: Error: (2.5.3) ...erated_scripts/script_time_rafraichissement_nocturne.lua:90: attempt to index a nil value (global 'otherdevices_svalues')
2020-01-01 19:34:01.071 Status: dzVents: =========== Rafraîchissement nocturne (v1.21) ===========
2020-01-01 19:34:01.071 Status: dzVents: --- --- --- seuil de notification 25°C
2020-01-01 19:34:01.192 Status: dzVents: =========== Rafraîchissement nocturne (v1.21) ===========
2020-01-01 19:34:01.193 Status: dzVents: --- --- --- seuil de notification 25°C
2020-01-01 19:34:01.072 Error: dzVents: Error: (2.5.3) ...erated_scripts/script_time_rafraichissement_nocturne.lua:90: attempt to index a nil value (global 'otherdevices_svalues')
2020-01-01 19:34:01.193 Error: dzVents: Error: (2.5.3) ...erated_scripts/script_time_rafraichissement_nocturne.lua:90: attempt to index a nil value (global 'otherdevices_svalues')

voila mon script:

Code : Tout sélectionner

--[[
name : script_time_rafraichissement_nocturne.lua
auteur : papoo
MAJ : 28/04/2018
création : 24/06/2017

http://pon.fr/rafraichissement-nocturne/
http://easydomoticz.com/forum/viewtopic.php?f=17&t=4343#p38107
Principe : ce script vérifie toutes les dix minutes si la température extérieure (variable temp_ext) passe en dessous de la température  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.
une seule notification par jour, réinitialisée en cours d'après midi, la période la plus chaude de la journée.
Plusieurs type de notifications, par mail, par pushbullet, sms free ou via les notifications de domoticz.
Création de la variable utilisateur de réinitialisation automatique.
tableau des températures intérieures avec définition du nombre de pièces au dessus de la température extérieure avant envoi de notification (variable Nb_pieces)

]]--
--------------------------------------------
------------ Variables à éditer ------------
-------------------------------------------- 
local debugging = true   	                                    -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local url = '192.168.xxxx'                                    -- adresse ip domoticz
local seuil_notification = 25 	        	                    -- seuil température intérieure au delà duquel les notifications d'alarme seront envoyées
local deltaT = 2                                                -- Delta T entre T° interieure et T° extérieure avant alarme 
local temp_ext = 'tempexterieur' 	                    -- nom de la sonde extérieure
local les_temperatures = {"tempsdb"}; -- Liste de vos sondes intérieures séparées par une virgule
local notif_mail = true                                         -- true si l'on  souhaite être notifié  par mail, sinon false.
local subsystem = nil                                           -- les différentes valeurs de subsystem acceptées sont : gcm;http;kodi;lms;nma;prowl;pushalot;pushbullet;pushover;pushsafer
                                                                -- pour plusieurs modes de notification séparez chaque mode par un point virgule. si subsystem = nil toutes les notifications seront activées.
local notif_all = true                                          -- true si l'on  souhaite être notifié  via le système de notification domoticz, sinon false.
local EmailTo = 'xxxxx@gmail.com'                            -- adresse mail, séparées par ; si plusieurs (pour la notification par mail)
local var_notif = 'Notification_ouverture_fenetres'             -- nom de la variable de limite de notification
local Nb_pieces = 1                                             -- Définissez le nombre de pièces minimum dont la T° est supérieure à la température extérieure avant l'envoi des notifications
local ResetHeure = 14                                           -- Heure à laquelle vous souhaitez réinitialiser les notifications
local ResetMinute = 25                                          -- Minute à laquelle vous souhaitez réinitialiser les notifications
local OS = "linux"                                              -- Définissez l'os sous lequel fonctionne ce script. "linux" ou "windows"
local sms_free_user = nil                                       -- nom d'utilisateur freemobile popur l'envoi d'alerte par SMS, sinon nil 
local sms_free_pass = nil                                       -- mot de passe freemobile popur l'envoi d'alerte par SMS, sinon nil

--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local nom_script = 'Rafraîchissement nocturne'
local version = '1.21'
local message = {}
local alarme = 0
local notification = '' 
commandArray = {}
--------------------------------------------
---------------- Fonctions -----------------
--------------------------------------------

--json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Linux
--curl = '/usr/bin/curl -m 5 -u domoticzUSER:domoticzPSWD '		 	-- ne pas oublier l'espace à la fin


--package.path = package.path..";/home/pi/domoticz/scripts/lua/fonctions/?.lua"   -- ligne à commenter en cas d'utilisation des fonctions directement dans ce script
--require('fonctions_perso')                                                      -- ligne à commenter en cas d'utilisation des fonctions directement dans ce script

-- ci-dessous les lignes à décommenter en cas d'utilisation des fonctions directement dans ce script( supprimer --[[ et --]])
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)
--------------------------------------------
function url_encode(str) -- encode la chaine str pour la passer dans une url 
   if (str) then
   str = string.gsub (str, "\n", "\r\n")
   str = string.gsub (str, "([^%w ])",
   function (c) return string.format ("%%%02X", string.byte(c)) end)
   str = string.gsub (str, " ", "+")
   end
   return str
end 
--]]
--------------------------------------------
-------------- Fin Fonctions ---------------
--------------------------------------------
time=os.date("*t")
  
if ((time.min-1) % 1) == 0 then -- Déclenchement du script toutes les 10 minutes en commençant à HH:01 
--if time.min % 1 == 0 then -- pour test
    voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)
	voir_les_logs("--- --- --- seuil de notification ".. seuil_notification .."°C",debugging)
    temperature_exterieure = string.match(otherdevices_svalues[temp_ext], "%d+%.*%d*")
    temperature_exterieure = temperature_exterieure 
    voir_les_logs("--- --- --- Temperature exterieure ".. temperature_exterieure .."°C",debugging)
    
    if var_notif ~= nil then -- le nom de la variable utilisateur a t'il été renseigné ?
        if(uservariables[var_notif] == nil) then -- Création de la variable  car elle n'existe pas
            voir_les_logs("--- --- --- La Variable " .. var_notif .." n'existe pas --- --- --- ",debugging)
            commandArray['OpenURL']=url..'/json.htm?type=command&param=saveuservariable&vname='..url_encode(var_notif)..'&vtype=2&vvalue=0'
            adresse = url_encode(var_notif)
            voir_les_logs("--- --- --- adresse " .. adresse .."  --- --- --- ",debugging);
            voir_les_logs("--- --- --- Création de la Variable " .. var_notif .." manquante --- --- --- ",debugging)
            print('script supendu')
        else
        voir_les_logs("--- --- --- La Variable " .. var_notif .." est à : ".. uservariables[var_notif],debugging)
        notification = uservariables[var_notif] 
            if tonumber(notification) > 0 then
            voir_les_logs("--- --- --- Une notification a déjà été envoyée aujourd\'hui",debugging)
            else 
            voir_les_logs("--- --- --- Aucune notification n\'a été envoyée aujourd\'hui",debugging)
            end
        end  
    else 
        voir_les_logs("--- --- --- Le nom de la variable utilisateur n'a pas été correctement défini",debugging)
    end        
            
    for i,d in ipairs(les_temperatures) do
		
		local v=otherdevices[d]                        
			voir_les_logs("--- --- --- device value "..d.." = "..(v or "nil"),debugging)
            if v~= nil then
			
                if string.match(v, ';')  then
                    v=v:match('^(.-);')
                    voir_les_logs("--- --- --- svalue "..d.." = "..(v or "nil").."°C moins le delta T : "..tonumber(v)-tonumber(deltaT).."°C",debugging)
                    local temp_int = tonumber(v)-tonumber(deltaT)
                else
                    voir_les_logs("--- --- --- svalue "..d.." = "..(v or "nil").."°C moins le delta T : "..tonumber(v)-tonumber(deltaT).."°C",debugging)
                end			
			
				if ((tonumber(v)-tonumber(deltaT)) > tonumber(temperature_exterieure)) and (tonumber(v) > tonumber(seuil_notification)) and  (tonumber(temperature_exterieure) >= (tonumber(seuil_notification)-3)) then
                    alarme = tonumber(alarme) + 1
                    voir_les_logs("--- --- --- Température corrigée : "..(tonumber(v)-tonumber(deltaT)).."°C supérieure à la Température exterieure : "..tonumber(temperature_exterieure).."°C, valeur de la variable alarme : ".. alarme,debugging)
                    table.insert(message, 'température '..d..' : '..v..'°C, supérieure à la température exterieure '.. temperature_exterieure ..'°C et au seuil fixé à '.. seuil_notification ..'°C <br>')
				end
                
			end                                            
	end

	if alarme >= tonumber(Nb_pieces)  then
        if notification == 0 then
        voir_les_logs("--- --- --- valeur de la variable alarme :".. alarme .." supérieure ou égale à la valeur de nbPieces :" ..Nb_pieces,debugging)
            if notif_mail == true then
                voir_les_logs("--- --- --- Nb d'alarme(s) : "..alarme,debugging)
                objet = 'Ouverture fenetres recommandee '..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)
            else
                voir_les_logs("--- --- --- Notification par mail désactivée",debugging)  
            end -- if notif_mail
               
            if sms_free_user ~= nil and sms_free_pass ~=nil then
                voir_les_logs("--- --- --- Notification SMS free",debugging)            
                commandArray['OpenURL']='https://smsapi.free-mobile.fr/sendmsg?user='.. sms_free_user ..'&pass='.. sms_free_pass ..'&msg=Ouverture des fenetres recommandée la temperature interieure est de '.. temperature_exterieure ..'°C'
            end 
            
            if subsystem ~= nil then
                    commandArray['SendNotification'] = 'Ouverture des fenetres recommandée#la température exterieure est de '.. temperature_exterieure ..'°C#0###'.. subsystem ..''
                elseif notif_all == true then
                    commandArray[#commandArray+1] = {['SendNotification'] = 'Ouverture des fenetres recommandée#la température exterieure est de '.. temperature_exterieure ..'°C'}
                    voir_les_logs("--- --- --- Notification domoticz",debugging) 
                else
                    voir_les_logs("--- --- --- Notification domoticz désactivée",debugging)  
            end --notif_all
                commandArray['Variable:'.. var_notif] = tostring(1) -- mise à jour de la variable utilisateur
                voir_les_logs("--- --- --- Mise à jour de la variable:".. var_notif .." à 1",debugging)
        end
	else
        voir_les_logs("--- --- --- valeur de la variable alarme :".. alarme .." inférieure ou égale à la valeur de nbPieces :" ..Nb_pieces..", pas de notification",debugging)   
    end
    voir_les_logs("========= Fin ".. nom_script .." (v".. version ..") =========",debugging)
end -- if time
if time.hour == ResetHeure and time.min == ResetMinute then
    commandArray['Variable:'.. var_notif] = tostring(0) -- mise à jour de la variable utilisateur 
    voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)
    voir_les_logs("--- --- --- Mise à jour de la variable:".. var_notif .." à 0",debugging)
    voir_les_logs("========= Fin ".. nom_script .." (v".. version ..") =========",debugging)
end
return commandArray
Qu'est ce que j'ai oublier ?
Dernière modification par vil1driver le 01 janv. 2020, 21:53, modifié 1 fois.
Raison : Ajoute balises code
Mon system domoticz en béta - RFXCOM XL 433- PHILIPS HUE- :D
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: LUA : Rafraîchissement nocturne

Message par papoo »

quel est le type de tes capteurs de température?
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Stf4
Messages : 27
Inscription : 08 sept. 2019, 18:32

Re: LUA : Rafraîchissement nocturne

Message par Stf4 »

Voila les infos sur les capteurs , j'ai deux modèle différents:

195 GATEWAY rfxcom D101 1 temptony Temp + Humidity Rubicson/IW008T/TX95 19.3 C, 44 %
52 TEMP_EXTERIEUR_MAISON 14084 1 tempmaison Temp LaCrosse TX3 20.8 C
Mon system domoticz en béta - RFXCOM XL 433- PHILIPS HUE- :D
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: LUA : Rafraîchissement nocturne

Message par papoo »

ligne 24 tu déclare le nom de la temperature exterieure

Code : Tout sélectionner

local temp_ext = 'tempexterieur' 
mais tu m'indique qu'elle s'appelle TEMP_EXTERIEUR_MAISON
les deux noms ne correspondent pas
essai avec l'idx comme cela peut etre

Code : Tout sélectionner

local temp_ext = 52 
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Stf4
Messages : 27
Inscription : 08 sept. 2019, 18:32

Re: LUA : Rafraîchissement nocturne

Message par Stf4 »

Merci d'essayer de m'aider , mais même en remplaçant local temp_ext = 52 il a une erreur:

2020-01-03 14:11:27.504 Status: dzVents: =========== Rafraîchissement nocturne (v1.21) ===========
2020-01-03 14:11:27.505 Status: dzVents: --- --- --- seuil de notification 25°C
2020-01-03 14:11:27.591 Status: dzVents: =========== Rafraîchissement nocturne (v1.21) ===========
2020-01-03 14:11:27.591 Status: dzVents: --- --- --- seuil de notification 25°C
2020-01-03 14:11:27.666 Status: dzVents: =========== Rafraîchissement nocturne (v1.21) ===========
2020-01-03 14:11:27.666 Status: dzVents: --- --- --- seuil de notification 25°C
2020-01-03 14:11:27.505 Error: dzVents: Error: (2.5.3) ...erated_scripts/script_time_rafraichissement_nocturne.lua:90: attempt to index a nil value (global 'otherdevices_svalues')
2020-01-03 14:11:27.591 Error: dzVents: Error: (2.5.3) ...erated_scripts/script_time_rafraichissement_nocturne.lua:90: attempt to index a nil value (global 'otherdevices_svalues')
2020-01-03 14:11:27.666 Error: dzVents: Error: (2.5.3) ...erated_scripts/script_time_rafraichissement_nocturne.lua:90: attempt to index a nil value (global 'otherdevices_svalues')
2020-01-03 14:11:38.658 Status: dzVents: =========== Rafraîchissement nocturne (v1.21) ===========
2020-01-03 14:11:38.660 Status: dzVents: --- --- --- seuil de notification 25°C
2020-01-03 14:11:38.660 Error: dzVents: Error: (2.5.3) ...erated_scripts/script_time_rafraichissement_nocturne.lua:90: attempt to index a nil value (global 'otherdevices_svalues')

une autre idée ?
Mon system domoticz en béta - RFXCOM XL 433- PHILIPS HUE- :D
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: LUA : Rafraîchissement nocturne

Message par papoo »

je viens de réaliser une version plus simple de ce script en DZvents si tu souhaite la tester

Code : Tout sélectionner

--[[
rafraichissementNocturne.lua
author/auteur = papoo
update/mise à jour = 02/01/2020
creation = 24/06/2017
github https://github.com/papo-o/domoticz_scripts/blob/master/dzVents/scripts/rafraichissementNocturne.lua
blog https://pon.fr/
forum https://easydomoticz.com/forum/viewtopic.php?f=17&t=4343&p=76999#p76999
ce script utilise la fonction de notification universelle https://pon.fr/dzvents-fonction-de-notification-universelle/
--]]

local scriptName        		= 'Rafraichissement nocturne'
local scriptVersion     		= '2.0'
local seuil_notification 		= 25 	        	                    -- seuil température intérieure au delà duquel les notifications seront envoyées
local deltaT 					= 2                                                -- Delta T entre T° interieure et T° extérieure avant notification 
local frequency_notifications 	= 3600
local quiet_hours 				= "23:00-07:15"
local subSystems				= "TELEGRAM" --NSS_GOOGLE_CLOUD_MESSAGING, NSS_HTTP, NSS_KODI, NSS_LOGITECH_MEDIASERVER, NSS_NMA,NSS_PROWL, NSS_PUSHALOT, NSS_PUSHBULLET, NSS_PUSHOVER, NSS_PUSHSAFER, NSS_TELEGRAM
local temp_ext 					= 'TempExterieur' 	                    -- nom de la sonde extérieure
local les_temperatures 			= {
								'tempsdb',
								'tempmaison',
								'temptony'
		} -- Liste de vos sondes intérieures séparées par une virgule
local subject               	= "\xE2\x9A\xA0 /!\\ Ouverture des fenetres recommandee /!\\ \xE2\x9A\xA0" 

return {
    active = true,
    on = { timer =   {'every 10 minutes'}},
	--on = { timer =   {'every minute'}},
    logging =   {    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,
                marker = scriptName..' v'..scriptVersion },
				
	

    execute = function(dz)
		local round = dz.utils.round
		--local _ = require('lodash')
		local function logWrite(str,level)             -- Support function for shorthand debug log statements
			dz.log(tostring(str),level or dz.LOG_DEBUG)
		end
		
		local function split(s, delimiter)
			if s ~= nil then
				result = {};
				for match in (s..delimiter):gmatch("(.-)"..delimiter) do
					table.insert(result, match);
				end
			else
				result = {""};
			end
			return result;
		end


		local function notificationTable(str)
		--NSS_GOOGLE_CLOUD_MESSAGING, NSS_HTTP, NSS_KODI, NSS_LOGITECH_MEDIASERVER, NSS_NMA,NSS_PROWL, NSS_PUSHALOT, NSS_PUSHBULLET, NSS_PUSHOVER, NSS_PUSHSAFER, NSS_TELEGRAM
			if (str) then
			str = string.gsub (str,"GCM", dz.NSS_GOOGLE_CLOUD_MESSAGING)
			str = string.gsub (str,"GOOGLE_CLOUD_MESSAGING", dz.NSS_GOOGLE_CLOUD_MESSAGING)
			str = string.gsub (str,"HTTP", dz.NSS_HTTP)
			str = string.gsub (str,"LMS", dz.NSS_LOGITECH_MEDIASERVER)
			str = string.gsub (str,"LOGITECH_MEDIASERVER", dz.NSS_LOGITECH_MEDIASERVER)
			str = string.gsub (str,"NMA", dz.NSS_NMA)
			str = string.gsub (str,"PROWL", dz.NSS_PROWL)
			str = string.gsub (str,"PUSHALOT", dz.NSS_PUSHALOT)
			str = string.gsub (str,"PUSHOVER", dz.NSS_PUSHOVER)
			str = string.gsub (str,"PUSHSAFER", dz.NSS_PUSHSAFER)
			str = string.gsub (str,"PUSHBULLET", dz.NSS_PUSHBULLET)
			str = string.gsub (str,"TELEGRAM", dz.NSS_TELEGRAM)
			end
			return (split(str,','))
		end
		
		local tempExt = round(dz.devices(temp_ext).temperature,2)
			  logWrite("le device  : "..tostring(dz.devices(temp_ext).name).." indique une température de "..tostring(tempExt).."°C")		
		local i = 0
		local tempsInt = 0
        for _, name in ipairs(les_temperatures) do
			i = i + 1
			local dev = dz.devices(name)
            if dev.temperature then
				logWrite("le device  : "..tostring(dev.name).." indique une température de "..tostring(round(dev.temperature,2)).."°C")
				tempsInt = tempsInt + dev.temperature
			end
        end
		logWrite("nombre de sondes intérieures parcourues est de "..tostring(i))
		tempsInt = round(tempsInt/i)
		logWrite("la moyenne ambiante intérieure est de  "..tostring(tempsInt).."°C")
		if (tempsInt + deltaT) > tempExt and seuil_notification < tempExt then 
			logWrite("la moyenne ambiante intérieure moins le deltat T est de  "..tostring(tempsInt - deltaT).."°C")
			dz.helpers.managedNotify(dz, subject, "Ouverture des fenêtres recommandée, la température moyenne ambiante intérieure est supérieure de "..deltaT.."°C à la temperature extérieure" , notificationTable(subSystems), frequency_notifications , quiet_hours)
		end
	        -- dz.devices(les_temperatures).forEach(
				-- function(device)
					-- logWrite("le device  : "..tostring(device.name).." a une température de "..tostring(device.temperature))


				-- end
			-- )
	-- local temp = dz.devices().filter(function(device)
		-- return _.includes(les_temperatures, device.name)
	-- end)
-- print_table(temp)
    end -- execute function
}

Dernière modification par papoo le 05 janv. 2020, 10:39, modifié 2 fois.
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Répondre