[LUA] Thermostat simple

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.
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

[LUA] Thermostat simple

Message par marsflow »

Bonsoir,

je vous partage mon thermostat de chauffage, j'apprend encore le lua, si c'est brouillon soyez indulgent

Code : Tout sélectionner

 --[[
mon script permet le démarrage d'un poele à granulee par infrarouge (broadlink rm2) et 
allume le chauffage dans une hysteresis, c'est une amélioration de ce que j'ai trouvé sur le forum
les points que j'ai amélioré sont : 
- l'amélioration du devicechanged	sonde avec mon interrupteur OnOff pour empêcher que le script s'execute 
à chaque réception de la température sonde
- de l'extinction du chauffage avec mon interrupteur OnOff 

--]]

 --------------------------------
 ------ Start of edit section ------
 -------------------------------- 
 
 local consigne = tonumber(otherdevices_svalues['thermostat granulee'])  -- Température thermostat
 local hysteresis = 2 --Valeur seuil pour éviter que le relais ne cesse de commuter dans les 2 sens
 local sonde = 'RM2Temp' --Nom de la sonde de température
 local OnOff = 'marche regulation thermostat' --Nom de l'inter virtuel de démarrage de la régulation hysteresis
 local radiateur = 'autorisation M ' --Nom du radiateur à allumer/éteindre
 
 --------------------------------
 -- End of edit section --
 --------------------------------

commandArray = {}
--ma sonde de température qui arrive du broadlink RM2 toutes les 2 min et un interrupteur virtuel autorise le démarrage du script
--pour chauffer ou non.
if (devicechanged[sonde]) and (otherdevices[OnOff]=='On') then
  
   
   local temperature = devicechanged[string.format('%s_Temperature', sonde)] --Temperature relevée
    
    if (otherdevices[OnOff]=='On') then -- si mon interrupteur est en on tout est ok pour chauffer
        print ('-- régulation chauffage actif --')
        print ('consigne : ' .. consigne)
		print ('hysteresis : ' .. hysteresis)
		print ('température : ' .. temperature)
           if (temperature < (consigne - hysteresis) and otherdevices[radiateur]=='Off') then
            print('Allumage du chauffage')
            commandArray[radiateur]='On'
            
           elseif (temperature > (consigne + hysteresis) and otherdevices[radiateur]=='On') then
           print('Extinction du chauffage')
            commandArray[radiateur]='Off'

            end
    end
	-- si je met mon interrupteur en off 2 choix
	--1er si mon radiateur fonctionne il le coupe
	--2ème si mon chauffage ne fonctionne pas parce que la température de la pièce est dans l'hysteresis.
	-- il m'indique juste qu'il est coupé je crois qu'il ne sert à rien le second choix mais c'est carré.
 
 elseif (devicechanged[OnOff]=='Off') and (otherdevices[radiateur]=='On') then 
    commandArray[radiateur]='Off'
	print ('chauffage extinction')
 elseif (devicechanged[OnOff]=='Off') and (otherdevices[radiateur]=='Off') then
    print ('chauffage arrêté')
     

end
 

return commandArray
Dernière modification par marsflow le 29 nov. 2017, 17:36, modifié 1 fois.
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: thermostat simple

Message par marsflow »

j'ai une question comment on fait pour mettre
print ('-- régulation chauffage actif --')
print ('consigne : ' .. consigne)
print ('hysteresis : ' .. hysteresis)
print ('température : ' .. temperature)
en log si on veut les afficher dans le journal ou pas ???
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: thermostat simple

Message par marsflow »

marsflow a écrit :j'ai une question comment on fait pour mettre
print ('-- régulation chauffage actif --')
print ('consigne : ' .. consigne)
print ('hysteresis : ' .. hysteresis)
print ('température : ' .. temperature)
en log si on veut les afficher dans le journal ou pas ???
j'ai trouvé

dans la partie edit section j'ai mit
local debug = false
ou
local debug = true

et dans mon script j'ai mit

Code : Tout sélectionner

if debug then
			print ('-- régulation chauffage actif --')
            print ('consigne : ' .. consigne)
		    print ('hysteresis : ' .. hysteresis)
		    print ('température : ' .. temperature)
		    end
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

Re: thermostat simple

Message par marsflow »

mon script modifié

Code : Tout sélectionner

--[[
mon script permet le démarrage d'un poele à granulee par infrarouge (broadlink rm2) et 
allume le chauffage dans une hysteresis, c'est une amélioration de ce que j'ai trouvé sur le forum
les points que j'ai amélioré sont : 
- l'amélioration du devicechanged	sonde avec mon interrupteur OnOff pour empêcher que le script s'execute 
à chaque réception de la température sonde
- de l'extinction du chauffage avec mon interrupteur OnOff 

--]]

 --------------------------------
 ------ Start of edit section ------
 -------------------------------- 
 
 local consigne = tonumber(otherdevices_svalues['thermostat granulee'])  -- Température thermostat
 local hysteresis = tonumber(otherdevices_svalues['hysteresisReg']) --Valeur seuil pour éviter que le relais ne cesse de commuter dans les 2 sens
 local sonde = 'RM2Temp' --Nom de la sonde de température
 local OnOff = 'marche regulation thermostat' --Nom de l'inter virtuel de démarrage de la régulation hysteresis
 local radiateur = 'autorisation M' --Nom du radiateur à allumer/éteindre
 local debug = true --true pour voir le log ou false pour pas l'afficher
 --------------------------------
 -- End of edit section --
 --------------------------------

commandArray = {}
--ma sonde de température qui arrive du broadlink RM2 toutes les 2 min et un interrupteur virtuel autorise le démarrage du script
--pour chauffer ou non.
if (devicechanged[sonde]) and (otherdevices[OnOff]=='On') then
  
   
   local temperature = devicechanged[string.format('%s_Temperature', sonde)] --Temperature relevée
    
    if (otherdevices[OnOff]=='On') then -- si mon interrupteur est en on tout est ok pour chauffer
            print ('-- régulation chauffage actif --')
		if debug then
			print ('-- régulation chauffage actif --')
            print ('consigne : ' .. consigne)
		    print ('hysteresis : ' .. hysteresis)
		    print ('température : ' .. temperature)
		    end
            if (temperature < (consigne - hysteresis) and otherdevices[radiateur]=='Off') then
                
				print('Allumage du chauffage')
                 commandArray[radiateur]='On'
            
           elseif (temperature > (consigne + hysteresis) and otherdevices[radiateur]=='On') then
                 print('Extinction du chauffage')
                 commandArray[radiateur]='Off'

           end
    end
	-- si je met mon interrupteur en off 2 choix
	--1er si mon radiateur fonctionne il le coupe
	--2ème si mon chauffage ne fonctionne pas parce que la température de la pièce est dans l'hysteresis.
	-- il m'indique juste qu'il est coupé je crois qu'il ne sert à rien le second choix mais c'est carré.
 
 elseif (devicechanged[OnOff]=='Off') and (otherdevices[radiateur]=='On') then 
    commandArray[radiateur]='Off'
	print ('chauffage extinction')
 elseif (devicechanged[OnOff]=='Off') and (otherdevices[radiateur]=='Off') then
    print ('chauffage arrêté')
     

end
 

return commandArray
QcVictor
Messages : 79
Inscription : 17 janv. 2015, 14:52

Re: thermostat simple

Message par QcVictor »

Merci ton partage, tu ma appris a faire fonctionner la fonction interrupteur OnOff
Répondre