Page 2 sur 3

Re: listes variables

Publié : 07 juin 2016, 23:02
par Stef17
Je suppose que j'aurais pu mettre :
if (devicechanged[sonde] or devicechanged[consigne]) and (otherdevices[periode] == 'On')
a la place de
if (devicechanged[sonde] and otherdevices[periode] == 'On') or (devicechanged[consigne] and otherdevices[periode] == 'On')

Re: listes variables

Publié : 08 juin 2016, 23:14
par vil1driver
Il y a plusieurs méthodes.. Tant que tu restes logique ça ira ;)

Attention cependant au nom du script ! Pas de - après le type mais un _
script_device_thermSDB.lua
Ps: pense à utiliser la balise code dans tes messages ;)

Re: listes variables

Publié : 08 juin 2016, 23:46
par Stef17
merci c'etait une petite coquille...

Au fait tu as deja utilisé des

Code : Tout sélectionner

if (devicechanged[XXX] then etc
Y a une astuce car moi j'ai abandonné trop galere
j'ai fini par faire :

Code : Tout sélectionner

local hysteresis = 1 --Valeur seuil pour éviter que le relai ne cesse de commuter dans les 2 sens
local radiateur = 'Prise_SecheServiette' --Nom du device radiateur à allumer/éteindre
local periode = 'Periode_Chauffe_SDB' --Switch manuel permettant de valider si on est en periode de chauffage de SDB
local sonde = 'Temp_SDB' -- sonde temperature/humidite salle de bain
local planning = 'Consignes_SDB' --themostat avec plannification pour le chauffage de la salle de bain
--------------------------------
-- End of edit section --
--------------------------------
commandArray = {}
local temp, hum = otherdevices_svalues[sonde]:match("([^;]+);([^;]+)") -- recuperation de la temperature de la sonde
local temp = tonumber(temp) -- mise au format chiffre
local consigne = otherdevices_svalues[planning]  -- recuperation de la temperature du hermostat
local consigne = tonumber(consigne) -- mise au format chiffre
-- print("temperature reference "..consigne) -- utiliser pour test
-- print("temperature reel "..temp) -- utiliser pour test
if (otherdevices[periode] == 'Off' and otherdevices[radiateur] == 'On') then
    commandArray[radiateur]='Off'
    --print("Pas de chauffage en ce moment dans SDB ")
    elseif (temp <= (consigne - hysteresis) and otherdevices[periode] == 'On' and otherdevices[radiateur] == 'Off') then
    commandArray[radiateur]='On'
    print("Allumage du chauffage dans SDB ")
    elseif (temp <= (consigne - hysteresis) and otherdevices[periode] == 'Off' and otherdevices[radiateur] == 'On') then
    commandArray[radiateur]='Off'   
    --print("Attention periode hors chauffage SDB ")
    elseif (temp > (consigne + hysteresis) and otherdevices[periode] == 'On' and otherdevices[radiateur] == 'On') then
    commandArray[radiateur]='Off'
    print("Extinction du chauffage dans SDB ")
    elseif (temp > (consigne + hysteresis) and otherdevices[periode] == 'Off' and otherdevices[radiateur] == 'On') then
    commandArray[radiateur]='Off'
    --print("Attention periode hors chauffage SDB - en plus il fait trop chaud ")
    elseif (temp < (consigne + hysteresis) and temp > (consigne - hysteresis)) then
    --print("temperature ideal ")
    else 
    --print("Aucune modif necessaire ")
end
return commandArray
ça fonctionne, mais est-ce viable ?

Re: listes variables

Publié : 09 juin 2016, 00:23
par vil1driver
Oui, pas de soucis avec les devicechanged.. Mais pas pour le chauffage pour moi
Le tout est de bien les utiliser.

Ton script est du coups un script_time... Tu fais la différence n'est-ce pas ?

Ton script est compliqué

Fait une première condition juste avec ta période
Si oui tu fais tes autres conditions avec la temp/consigne..
Si non chauffage off

Ce sera plus facile à lire

Perso par sécurité je ne teste pas l'état des radiateurs je renvoie la commande systématiquement.

Pour quelqu'un qui voulait une liste de commandes tu t'en sors bien ;)

Ps: perso je n'aime pas l'hystéresis

Re: listes variables

Publié : 09 juin 2016, 09:26
par Stef17
Merci beaucoup de ton retour... je vais peaufiner alors

Re: listes variables

Publié : 09 juin 2016, 09:29
par Stef17
script_time .... c'est pour qu'il s'execute toute les minutes c'est ça et non pas a chaque changement d'un device ???

Re: listes variables

Publié : 09 juin 2016, 09:35
par Stef17
vil1driver a écrit :Oui, pas de soucis avec les devicechanged.. Mais pas pour le chauffage pour moi
Fait une première condition juste avec ta période
Si oui tu fais tes autres conditions avec la temp/consigne..
Si non chauffage off
Pas de probleme de balancer un ordre d'eteindre toute les minutes s'il est déjà en off ?

Re: listes variables

Publié : 09 juin 2016, 09:48
par Stef17
vil1driver a écrit : Fait une première condition juste avec ta période
Si oui tu fais tes autres conditions avec la temp/consigne..
Si non chauffage off
genre

Code : Tout sélectionner

if (otherdevices[periode] == 'On') then
	if (temp <= (consigne - hysteresis)) then
		commandArray[radiateur]='On'
		print("Allumage du chauffage dans SDB ")
	elseif (temp > (consigne + hysteresis)) then
		commandArray[radiateur]='Off'
		print("Extinction du chauffage dans SDB ")
	-- elseif (temp < (consigne + hysteresis) and temp > (consigne - hysteresis)) then -- pour test
		--print("temperature ideal ")
	end
else
	commandArray[radiateur]='Off'
	--print("Hors periode de chauffage de la SDB ")
end

Re: listes variables

Publié : 09 juin 2016, 10:16
par vil1driver
Alors, oui, non, exactement ;)

Re: listes variables

Publié : 09 juin 2016, 11:13
par Stef17
En promenant mon petit bout de choux... j'ai eu une idée pour éviter d'envoyer une commande inutile ;-)

Code : Tout sélectionner

if (otherdevices[periode] == 'On') then
	if (temp <= (consigne - hysteresis)) then
		commandArray[radiateur]='On'
		print("Allumage du chauffage dans SDB ")
	elseif (temp > (consigne + hysteresis)) then
		commandArray[radiateur]='Off'
		print("Extinction du chauffage dans SDB ")
	-- elseif (temp < (consigne + hysteresis) and temp > (consigne - hysteresis)) then -- pour test
		--print("temperature ideal ")
	end
elseif (otherdevices[radiateur] == 'On') then
	commandArray[radiateur]='Off'
	--print("Hors periode de chauffage de la SDB ")
end
Remplacement du else de fin par une condition qui fait qu'il envoie ordre extinction que si le radiateur est allumer.
Utile ou non ???

Peut être que tu vas me dire par précaution envoie un Off ???