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
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 ???