Aller au contenu
Bono2007

Petit Problème De Lua

Recommended Posts

Bonsoir, je suis crevé ce soir, je n'arrive pas à  connecter les fils de mon cerveau pour résoudre ce petit problème :

J'ai un script pour gérer mon chauffage en utilisant le thermostat Netatmo comme contact sec par ifttt. Grosse magouille mais qui fonctionne par le bout de code suivant :

if (demande) then ifttt("Netatmo22") else ifttt("NetatmoProgram");end;
Le truc fonctionne. Le souci c'est que lorsque la température arrive autour de la température de consigne fixée, j'ai la variable demande qui passe à  true, false, true, false... en très peu de temps, donc la chaudière se relance à  chaque fois avec surconso. 
 
Je voudrais donc que, la 1e fois ou ifttt("Netatmo22") est exécuté, le test ci-dessus ne soit plus testé pendant 15 minutes. 
Comme ça, quand la 1e demande est faite, il n'y a qu'un seul allumage de la chaudière qui dure 15 minutes. 
 
Je veux éviter les lancement de chaudières intempestifs quand la tp est atteinte. 
 
Je ne sais pas si j'ai été assez clair ^^ . Merci !

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

 

Suis pas dev, mais une piste, si tu faisais une difference du genre

if (demande) then
     ifttt("Netatmo22")
     local t = os.time()
end

if os.difftime(os.time(), t) == 900     then
    ifttt("NetatmoProgram")
end

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut, ma première idée, mais le if (demande) est testé dès qu'il y a un changement dans l'une des températures des zones. 

Donc parfois, plusieurs fois par minutes.

Et je ne peux pas raccourcir ce temps de test par un sleep par exemple, puisque je m'en sers aussi pour ouvrir mes vannes.

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

 

Et si tu utilisais setTimeout ?  et  initialiser une autre variable par exemple

local toto = false

function titi()
    if (demande) and (not toto)then
        ifttt("Netatmo22")
        toto = true
        return toto
       else ifttt("NetatmoProgram")
    end
end

if toto then
    setTimeout(titi, 15*60)
    toto = false
end
titi()
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah, je ne connaissais pas la fonction setTimeout. Je regarde à  ton script dès que je peux. 

Pas mal pour un non développeur ! Ca me semble tordu ^^

Partager ce message


Lien à poster
Partager sur d’autres sites

×