Bono2007 Posté(e) le 8 novembre 2016 Signaler Posté(e) le 8 novembre 2016 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 !
pepite Posté(e) le 8 novembre 2016 Signaler Posté(e) le 8 novembre 2016 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
Bono2007 Posté(e) le 9 novembre 2016 Auteur Signaler Posté(e) le 9 novembre 2016 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.
pepite Posté(e) le 9 novembre 2016 Signaler Posté(e) le 9 novembre 2016 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() 1
Bono2007 Posté(e) le 9 novembre 2016 Auteur Signaler Posté(e) le 9 novembre 2016 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 ^^
Messages recommandés