[LUA] YASDC (Yes Another Script De Chauffage) !

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
srill
Messages : 29
Inscription : 15 sept. 2016, 13:20

Re: YASDC (Yes Another Script De Chauffage) !

Message 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?
RPi3 - RFLink Gateway - Mysensors Gateway - Broadlink RM mini 3 - Xiaomi Gateway
Nissa
Messages : 96
Inscription : 21 déc. 2015, 23:38
Localisation : Bordeaux

Re: YASDC (Yes Another Script De Chauffage) !

Message 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?
Domoticz sur RPI4 / Rflink / Rftrxcom / Sondes thermo sur 1Wire / Volets Somfy rts / Divers modules 433 mhz pas chers / Poele à pellets Ravelli domotisé / Volets Bubendorf / SonOff / Arrosage enterré sur SonOff 4 / Robot piscine domotisé
srill
Messages : 29
Inscription : 15 sept. 2016, 13:20

Re: YASDC (Yes Another Script De Chauffage) !

Message 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!!!
RPi3 - RFLink Gateway - Mysensors Gateway - Broadlink RM mini 3 - Xiaomi Gateway
Nissa
Messages : 96
Inscription : 21 déc. 2015, 23:38
Localisation : Bordeaux

Re: YASDC (Yes Another Script De Chauffage) !

Message 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.
Domoticz sur RPI4 / Rflink / Rftrxcom / Sondes thermo sur 1Wire / Volets Somfy rts / Divers modules 433 mhz pas chers / Poele à pellets Ravelli domotisé / Volets Bubendorf / SonOff / Arrosage enterré sur SonOff 4 / Robot piscine domotisé
balajol
Messages : 864
Inscription : 13 nov. 2015, 18:54
Localisation : 62

Re: YASDC (Yes Another Script De Chauffage) !

Message 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
2024.6 PC Windows10 ; 2ème DEBIAN 10;DANFOSS LC13, Topp; Senseurs univ FIBARO FGBS001, Flood Sensor, ZMNHBD1 Flush 2 Relays ; FIBARO FGS222-FGS212;RFXCOM-RFXtrx433 USB 433.92MHz , Prises Phénix, Prises et Eclairage DI-O, SOMFY RTS,Sonoff ..
Nissa
Messages : 96
Inscription : 21 déc. 2015, 23:38
Localisation : Bordeaux

Re: YASDC (Yes Another Script De Chauffage) !

Message 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
Domoticz sur RPI4 / Rflink / Rftrxcom / Sondes thermo sur 1Wire / Volets Somfy rts / Divers modules 433 mhz pas chers / Poele à pellets Ravelli domotisé / Volets Bubendorf / SonOff / Arrosage enterré sur SonOff 4 / Robot piscine domotisé
xav999
Messages : 3
Inscription : 31 oct. 2017, 22:06

Re: YASDC (Yes Another Script De Chauffage) !

Message 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
Nissa
Messages : 96
Inscription : 21 déc. 2015, 23:38
Localisation : Bordeaux

Re: YASDC (Yes Another Script De Chauffage) !

Message 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.
Domoticz sur RPI4 / Rflink / Rftrxcom / Sondes thermo sur 1Wire / Volets Somfy rts / Divers modules 433 mhz pas chers / Poele à pellets Ravelli domotisé / Volets Bubendorf / SonOff / Arrosage enterré sur SonOff 4 / Robot piscine domotisé
xav999
Messages : 3
Inscription : 31 oct. 2017, 22:06

Re: YASDC (Yes Another Script De Chauffage) !

Message 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°
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: YASDC (Yes Another Script De Chauffage) !

Message par vil1driver »

+1

et le tout premier

Code : Tout sélectionner

--[[ 
est de trop ;)
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
Répondre