Page 3 sur 7

Re: YASDC (Yes Another Script De Chauffage) !

Publié : 31 janv. 2017, 18:59
par srill
Bonsoir,
J’essaie de mettre en place ce script pour piloter mon chauffage mais je n'ai aucune compétence en programmation :( .Je rencontre une erreur de ce type:
bad argument #1 to 'sub' (string expected, got nil) à la ligne 52 qui est la ligne :
year = string.sub(s, 1, 4)
J'ai beau chercher si j'ai fait des erreurs mais je n'en vois pas.
Savez vous d’où peut provenir?

Re: YASDC (Yes Another Script De Chauffage) !

Publié : 31 janv. 2017, 20:13
par Nissa
Bonsoir,
L'erreur ne vient pas de cette fonction ligne 52, mais sans doute dans tes déclarations de variables qui précèdent.
Vérifie bien chaque ligne local.... l'orthographe des noms est-il bien le même que sur ton domoticz ...
A+
srill a écrit :Bonsoir,
J’essaie de mettre en place ce script pour piloter mon chauffage mais je n'ai aucune compétence en programmation :( .Je rencontre une erreur de ce type:
bad argument #1 to 'sub' (string expected, got nil) à la ligne 52 qui est la ligne :
year = string.sub(s, 1, 4)
J'ai beau chercher si j'ai fait des erreurs mais je n'en vois pas.
Savez vous d’où peut provenir?

Re: YASDC (Yes Another Script De Chauffage) !

Publié : 05 févr. 2017, 11:04
par srill
Merci beaucoup!
J'ai trouvé mon erreur, j'avais mis un C majuscule à Chambre dans le tableau et un c minuscule dans les switchs et interrupteurs! ça tiend à peu de chose!!!

Re: YASDC (Yes Another Script De Chauffage) !

Publié : 23 oct. 2017, 09:36
par Nissa
Bonjour,
Mise à jour du code pour alléger un tant soit peu les boucles, quelques IF étaient inutiles.
Ce script gère la totalité des radiateurs d'une maison avec un minimum de modification en cas de rajout.

Re: YASDC (Yes Another Script De Chauffage) !

Publié : 23 oct. 2017, 20:03
par balajol
Bonjour Nissa,
Je voie que sur le premier post les thermostats sont en "bandeau rouge", si tu n'as pas modifié depuis,
J'avais le même problème et ai résolu la chose en lisant la consigne et en la "réinjectant" dans la foulée sur le thermostat..
Au cas ou :)
cdt
Bertrand

cdt
Bertrand

Code : Tout sélectionner

--Scipt-time-Bandeau-rouge-Danfoss-thermo  lecture consigne et reinjection valeur pour éviter bandeau rouge sur l'affichage
commandArray = {}
local heureSysteme = os.date("%H:%M")
ThermostaConfort=555
ThermostatEco=556
Thermostathorsgel=597
Thermostaconfortplus=608
ThermostatDanfosPieceSonde=616
ThermostatDanfossEte=792

if heureSysteme == ("03:36") then
--
consigneeco= string.match(otherdevices_svalues['Consigne-Danfoss-Eco'], "(%d+%.*%d*)")
consigneconfort= string.match(otherdevices_svalues['Consigne-Danfoss-Confort'], "(%d+%.*%d*)")
consignehorsgel= string.match(otherdevices_svalues['Consigne-Danfoss-Hors-Gel'], "(%d+%.*%d*)")
consigneconfortplus= string.match(otherdevices_svalues['Consigne-Danfoss-Confort-Plus'], "(%d+%.*%d*)")
ConsigneThermostatDanfosPieceSonde= string.match(otherdevices_svalues['Consigne_Danfoss_Piece_Sonde'], "(%d+%.*%d*)")
ConsigneThermostatDanfossEte= string.match(otherdevices_svalues['Consigne_Danfoss_Ete'], "(%d+%.*%d*)")
--
commandArray[0] = { ['UpdateDevice'] = ThermostatEco..'|0|'..consigneeco }
commandArray[1] = { ['UpdateDevice'] = ThermostaConfort..'|0|'..consigneconfort }
commandArray[2] = { ['UpdateDevice'] = Thermostathorsgel..'|0|'..consignehorsgel }
commandArray[3] = { ['UpdateDevice'] = Thermostaconfortplus..'|0|'..consigneconfortplus }
commandArray[4] = { ['UpdateDevice'] = ThermostatDanfosPieceSonde..'|0|'..ConsigneThermostatDanfosPieceSonde }
commandArray[5] = { ['UpdateDevice'] = ThermostatDanfossEte..'|0|'..ConsigneThermostatDanfossEte }
end
return commandArray

Re: YASDC (Yes Another Script De Chauffage) !

Publié : 23 oct. 2017, 22:40
par Nissa
Bonsoir Balajol,
Oui, effectivement j'y touche rarement et je n'ai jamais pensé à ton astuce.
Je vais la mettre en place, merci

Re: YASDC (Yes Another Script De Chauffage) !

Publié : 31 oct. 2017, 22:10
par xav999
Bonjour,
Merci bcp pour ce script que j'ai mis en place.
ça a fonctionné mais j'ai eu des allumages / arrêts très rapprochés.
Est-ce qu'il n'y a pas un "else" en trop qui coupe le chauffage dès qu'on passe au dessus de la valeur consigne-hysterisis?

else
commandArray[radiateur]='Off'
status = 0
log = '*** Le Radiateur est arrêté'
if (debug) then print('>>>>>>>>ELSE>>>>>>>>>>>>>>>>>>>>>>>>>>>> Radiateur arrêté ! '..valeur) end
end

Re: YASDC (Yes Another Script De Chauffage) !

Publié : 31 oct. 2017, 22:43
par Nissa
xav999 a écrit :Bonjour,
Merci bcp pour ce script que j'ai mis en place.
ça a fonctionné mais j'ai eu des allumages / arrêts très rapprochés.
Est-ce qu'il n'y a pas un "else" en trop qui coupe le chauffage dès qu'on passe au dessus de la valeur consigne-hysterisis?

else
commandArray[radiateur]='Off'
status = 0
log = '*** Le Radiateur est arrêté'
if (debug) then print('>>>>>>>>ELSE>>>>>>>>>>>>>>>>>>>>>>>>>>>> Radiateur arrêté ! '..valeur) end
end
L'arrêt ou le démarrage du radiateur s'effectue toujours en cumulant la consigne et l'hystérisis (en plus pour le off et en moins pour le on).
En fonction de la dissipation de la chaleur dans la pièce, il faut ajuster l'hysteresis dans la déclaration des variables (local hystérisis = ...) pour éviter des on/off trop frequents. Pour moi je l'ai mis très bas, à 0,4 °, car ma maison est bien isolée. Il faut trouver là bonne valeur en fonction de chacun.

Re: YASDC (Yes Another Script De Chauffage) !

Publié : 01 nov. 2017, 11:28
par xav999
Oui mais là on a :
if (temperature <= (consigne - hysteresis)) then
commandArray[radiateur]='On' -- on allume le radiateur*
...
else
commandArray[radiateur]='Off'

du coup dès que la condition (temperature <= (consigne - hysteresis) ) n'est plus remplie, le radiateur s'éteint. Donc dans mon cas ou la consigne est à 19,5 et l'hysteresis à 0,4 (j'ai laissé la même valeur), dès que la température dépasse 19,1 le chauffage se coupe. Donc j'ai un cycle de chauffe hyper court puisqu'il correspond à une hausse de température de seulement 0,1°

Re: YASDC (Yes Another Script De Chauffage) !

Publié : 01 nov. 2017, 15:24
par vil1driver
+1

et le tout premier

Code : Tout sélectionner

--[[ 
est de trop ;)