Aller au contenu
Bono2007

Optimisation Script Lua

Recommended Posts

Bonsoir, actuellement j'ai des têtes Hemeier électrothermiques, commandées par la Fibaro. 

 

Voilà  une partie de mon code :

 

Ici on prend la température de consigne ( en fcn de l'heure, vacances, gardes...)

-- chParent
local TParent=15;
if (vacances and garde) then day="sunday";end;
if (hour>0000 and hour<0700) then TParent=19;end;
if (hour>2100 and hour<2300) then TParent=19.5;end;
if (day=="saturday" or day=="sunday") then if (hour<0910) then TParent=19;end;end
chParent.TPConsigne=TParent

Plus loin, appel de la fonction 

Hemeier(chParent,0.3)

La fonction Hemeier :   prends la température réelle de la pièce ( 2 sondes, 1 en rfxcom via jeedom, passerelle   et   1 en  fgbs-001 + ds18b20

Si TP>TConsigne, la vanne est off, sinon vanne ouverte

En complément, demande de chauffage mise à  vrai

function Hemeier(varName,h)
if max(varName.TPZ,varName.TPJ) >=varName.TPConsigne-h then varName.maCommande="turnOff" else varName.maCommande="turnOn";demande=true;end
if (demande) then fibaro:debug("demande ok") else fibaro:debug("demande off");end
fibaro:call(varName.idFGS, varName.maCommande)                
end

Suit un système bout de ficelle, mais obligatoire chez moi, la chaudière ayant un protocole eBus propriétaire et n'ayant pas d'entrée pour contact sec : 

Cette commande me permet d'utiliser mon Netatmo comme contact, et lance la chaudière si demande.

if (demande) then ifttt("Netatmo22") else ifttt("NetatmoProgram");end;

Globalement tout fonctionne bien, mais j'ai des bugs et des pb d'optimisation. 

Hier par exemple, ma chaudière a fonctionné plusieurs heures car la température d'une pièce où personne ne va était inférieure à  la TP de consigne, mais ne montait pas, donc toujours en demande...

 

Je cherche de l'aide, ne serait-ce que pour optimiser le code, voir si je peux fonctionner en pseudo-PID pour stopper par exemple la chaudière avant que la TConsigne soit atteinte ( ma tentative avec le h de la fonction Hemeier )

 

Toutes les idées sont bienvenues. Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

 

Tu as une scène par zone ?

En fait la "demande" qui est restée est celle du dressing de Madame ?

 

Peut-etre rajouter un test sur la duree de la demande ou/et sur la temperature ? et tu repasses ton varNme.commande à  turnOff

 

qqch comme ceci peut-etre, ce qui te permettrait si cela ne chauffe pas d'eteindre ta chaudiere

local duree=x;
demande=true;  
dureedemande=os.time();
if dureedemande > duree then
    if max(varName.TPZ,varName.TPJ) <=varName.TPConsigne-h then  
        varName.maCommande="turnOff"
    end
    fibaro:call(varName.idFGS, varName.maCommande)
end

Partager ce message


Lien à poster
Partager sur d’autres sites

Mais la vraie question : Pourquoi la température n'est pas montée dans cette zone ? Il vaut mieux régler le souci àla source que de mettre des rustines...

Partager ce message


Lien à poster
Partager sur d’autres sites

@Nico : pb de wifi, si le wifi se coupe ( ça arrive rarement mais ça arrive ).

@pepite : je vais étudier la question, pour l'instant j'arrive àne pas trop déclencher avec mon poële...

Partager ce message


Lien à poster
Partager sur d’autres sites

si c'est du au wifi, tu ne peux pas ameliorer le signal ?

 

Sinon, vive la buche lol

 

Pour eviter tu vas vraiment etre obligee de faire un test quel qu'il soit pour arreter la chauffe

Partager ce message


Lien à poster
Partager sur d’autres sites

Non, c'est pas un pb de portée, juste un bug aléatoire de la freebox, ça arrive 2 fois l'an. 

Et du coup mon Netatmo n'enclenche pas.

Partager ce message


Lien à poster
Partager sur d’autres sites

×