Aller au contenu

Trigger un script à une heure variable


Messages recommandés

Posté(e)

Bonjour à tous.

J'ai écrit un script qui se lance tous les jours à 10H et qui met à jour la variable "startH" correspondant à l'heure d'allumage du chauffage de mon jacuzzi selon divers paramètres.

J'aimerais créer un script permettant d'allumer mon chauffage à l'heure contenue dans cette variable "startH", par exempe 15H.

Ca semble simple, mais je n'y arrive pas !

 

Le contenu de ce srcipt et basique : fibaro:get(269, "turnON"), mais il faut juste le trigger à l'heure "startH"...

J'aimerais éviter de passer par une boucle "while true do" (que je n'arrive pas écrire) mais si c'est la solution, je prends :-)

 

A vot'bon coeur m'sieur dames !

 

Eric

Posté(e)

Merci pour ton intérêt.

 

Pas tout à fait, je veux allumer mon chauffage à l'heure contenue dans la variable "startH"... ca change tout :-)

PArfois il démarrera à 11H, d'autres à 15H, en fonction de la température int/ext notamment.

 

 

 

Posté(e) (modifié)
while true do
	heure = fibaro:getGlobal('startH')
	if(tonumber(os.date('%H%M'))==heure) then
		fibaro:get(269,'turnON)
	end
fibaro:sleep(60*1000)
end

Pas testé mais ça devrait faire ce que tu veux.

Modifié par Indyana
  • Like 1
Posté(e)

Merci Indyana, ça me permet de mieux comprendre le "while true do", top, je vais essayer ça ce soir.

 

 

Posté(e)

Encore merci, j'ai du fair equelques modifs suite à des test  et ca marche ! Pour info, le script qui va bien :

 

while true do
    heure = fibaro:getGlobal('startH')
 
    if(tonumber(os.date('%H%M%S')) == tonumber(heure)) then
        fibaro:call(269,"turnOn")
    end
fibaro:sleep(1*1000)

end

Posté(e) (modifié)

Quel est la différence entre les deux?

Ha j'ai trouvé une petite explication de la différence entre les deux, par contre aucun inintérêt ici me semble t'il, on ne veut pas continuer le script! Ou je me trompe sur l'utilisation de setTimeout?

Modifié par Indyana
Posté(e)

C'est ce que j'ai compris. Ici, mon script n'a rien d'autre à faire.

 

Par contre, si vous savez comment eviter un "While True do" apparemment c''est possible et consomme moins de ressources, je suis preneur.

 

Merci à tous,

Eric

 

 

Posté(e)

Tu peux l'éviter en intégrant ce code à une fonction et en utilisant le setimetout à la fin de la fonction qui va rappeler la fonction de façon récursive.

 

Mais il n'y a aucun intérêt à part se faire plaisir, ta boucle dowhile ne consomme rien pendant l'attente (sleep) soit 99,9% du temps. Le reste du temps c'est une exécution de code classique.

Posté(e)

Je n'avais pas vu les modifications que tu as faites, là oui, ta boucle peux bouffer une partie des ressources puisque tu vas tourner toutes les secondes... Quel est l'intérêt de tester sur la seconde? Ca fait une différence si ta lampe s'allume à 15h00'00 ou 15h00'13?....

 

 

 

 

 

 

 

Posté(e)

C'est sur, mais j'ai modifié ça car je ne m'intérresse qu'à la valeur des heures, hors minutes et secondes, donc je boucle toutes les heures :-)

 

Dernière version :

 

local heure

while true do
     heure = fibaro:getGlobal('startH')
        
    if(tonumber(os.date('%H')) == tonumber(heure)) then
        fibaro:call(259,"turnOn")
    end
fibaro:sleep(3600*1000)

end

×
×
  • Créer...