Consigne Chauffage

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Consigne Chauffage

Message par vil1driver »

si ton inter se nome toto :p

tu peux ajouter ceci juste après le 'commandArray = {}'

Code : Tout sélectionner

if (otherdevices['toto']=='On') then
	local consigne = 20
else
	local consigne = 17
end
tu pourras même du coups supprimer la ligne

Code : Tout sélectionner

local consigne = 20  --Température de consigne
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
rico891089
Messages : 27
Inscription : 09 mars 2015, 09:47

Re: Consigne Chauffage

Message par rico891089 »

Genial je test cela de suite !
rico891089
Messages : 27
Inscription : 09 mars 2015, 09:47

Re: Consigne Chauffage

Message par rico891089 »

Donc en gros, grace a cela je n'ai besoin que d'un seul interrupteur ?
Si il est On alors 20° et si il est Off alors 17°c ?

Du coup, 3 interupteurs (1 par piece) et 3 scripts (1 par interrupteur). C'est sur que sa allege le truc mdr
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Consigne Chauffage

Message par vil1driver »

Oui voila mais si à un moment 20 ne te suffit pas :+)

Au lieu de fixer 20, tu peux utiliser les setpoint de thermostat
Image

du coups ça donne quelque chose comme ceci:

Code : Tout sélectionner

if (otherdevices['toto']=='On') then
   local consigne = tonumber(otherdevices_svalues['thermostat_salon'])
else
   local consigne = 17
end
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
rico891089
Messages : 27
Inscription : 09 mars 2015, 09:47

Re: Consigne Chauffage

Message par rico891089 »

vil1driver a écrit :Oui voila mais si à un moment 20 ne te suffit pas :+)

Au lieu de fixer 20, tu peux utiliser les setpoint de thermostat
Image

du coups ça donne quelque chose comme ceci:

Code : Tout sélectionner

if (otherdevices['toto']=='On') then
   local consigne = tonumber(otherdevices_svalues['thermostat_salon'])
else
   local consigne = 17
end

Mais pour cela ce n'est plus un interrupteur que je dois creer si ?
rico891089
Messages : 27
Inscription : 09 mars 2015, 09:47

Re: Consigne Chauffage

Message par rico891089 »

Mon script foire :
2015-03-09 18:07:37.556 Error: /home/pi/domoticz/scripts/lua/script_device_salon.lua:32: attempt to perform arithmetic on global 'consigne' (a nil value)

Cela en rajoutant le code que vous m'avez indiquer et en supprimant LOCAL CONSIGNE = 20 comme indiqué precedemment.

Ps: je viens de rajouter ma consigne que j'avais supprimer et le script refonctionne.
Dernière modification par rico891089 le 09 mars 2015, 18:11, modifié 1 fois.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Consigne Chauffage

Message par vil1driver »

l'interrupteur tu le gardes, pour te permettre de switcher entre 20 et 17,

sauf que 20 ne sera plus une valeur figée dans le script.

pour créer le setpoint, il te faut créer un matériel virtuel ("dummy device") tu l'as certainement déjà fait pour créer ton interrupteur...
et sur ce matériel tu clic sur "créer capteurs virtuels", et tu choisis "consigne de thermostat"

on corrigera ton script après si tu veux bien.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
rico891089
Messages : 27
Inscription : 09 mars 2015, 09:47

Re: Consigne Chauffage

Message par rico891089 »

Yep on resumera tout sa ^^

Bon maintenant que tout est en place, je m’aperçois que quelques chose ne va pas.
Mon chauffage se met en route, puis se coupe. Pour se remettre en route.
Logiquement il devrait rester en marche tant que j’atteins pas le degré demandé, on n'est d'accord ?

Logs :

Code : Tout sélectionner

2015-03-09 18:24:31.566 LUA: -- Gestion du thermostat pour le salon --
2015-03-09 18:24:31.566 LUA: Allumage du chauffage dans le salon
2015-03-09 18:24:31.569 Script event triggered: /home/pi/domoticz/scripts/lua/script_device_salon.lua
2015-03-09 18:24:31.509 (Rfxcom) Temp + Humidity (thermostat salon)
2015-03-09 18:24:32.501 (Rfxcom) Lighting 1 (radiateur salon)
2015-03-09 18:24:54.764 (Rfxcom) Temp + Humidity (thermostat timeo)
2015-03-09 18:25:00.640 Hardware Monitor: Fetching data (System sensors)
Des que la derniere ligne apparait, cela me coupe le radiateur.

Ps: si sa ne te derange pas, mon systeme est libre d'acces, si en MP tu veux y faire un tour pour regarder, n'hesite pas a me MP
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Consigne Chauffage

Message par vil1driver »

ne t'en préoccupe pas trop :p

dès que tu as tout créé, tu poste ici le nom de tout les inter (virtuel et réel de chauffage) et thermostat et colle le script, je corrige et hop :D

si tu as le temps on fait ça de suite.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
rico891089
Messages : 27
Inscription : 09 mars 2015, 09:47

Re: Consigne Chauffage

Message par rico891089 »

Voici mes inters :

Image

et le script que j'utilise pour chaque piece (en modifiant le nom des inters bien sur)

Code : Tout sélectionner

-- Alexandre DUBOIS - 2014
-- Ce script permet de maintenir la température de salon entre 19°C et 21°C quand l'interrupteur
-- virtuel 'Thermostat salon' est activé.

--------------------------------
------ Variables à éditer ------
--------------------------------

local consigne = 20  --Température de consigne
local hysteresis = 0.5 --Valeur seuil pour éviter que le relai ne cesse de commuter dans les 2 sens
local sonde = 'thermostat salon' --Nom de la sonde de température
local thermostat = 'consigne salon 20' --Nom de l'interrupteur virtuel du thermostat
local radiateur = 'radiateur salon' --Nom du radiateur à allumer/éteindre
--------------------------------
-- Fin des variables à éditer --
--------------------------------

commandArray = {}

if (otherdevices['consigne salon']=='On') then
   local consigne = 20
else
   local consigne = 17
end

--La sonde Oregon 'thermostat salon' emet toutes les 40 secondes. Ce sera approximativement la fréquence 
-- d'exécution de ce script.
if (devicechanged[sonde]) then
	local temperature = devicechanged[string.format('%s_Temperature', sonde)] --Temperature relevée dans le salon
    --On n'agit que si le "Thermostat" est actif
    if (otherdevices[thermostat]=='On') then
        print('-- Gestion du thermostat pour le salon --')

    	if (temperature < (consigne - hysteresis) ) then
            print('Allumage du chauffage dans le salon')
            commandArray[radiateur]='Off'

	    elseif (temperature > (consigne + hysteresis)) then
	        print('Extinction du chauffage dans le salon')
            commandArray[radiateur]='On'

	    end
    end
end
return commandArray

Répondre