Page 1 sur 1

[LUA] Thermostat simple

Publié : 28 nov. 2017, 23:58
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

Re: thermostat simple

Publié : 29 nov. 2017, 00:45
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 ???

Re: thermostat simple

Publié : 29 nov. 2017, 18:01
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

Re: thermostat simple

Publié : 29 nov. 2017, 18:08
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

Re: thermostat simple

Publié : 26 janv. 2018, 01:14
par QcVictor
Merci ton partage, tu ma appris a faire fonctionner la fonction interrupteur OnOff