Fredric Posté(e) le 23 avril 2014 Signaler Posté(e) le 23 avril 2014 [DEBUG] 22:50:21: Closing down scheduler because the scheduler is Disabled [DEBUG] 22:50:21: Closing down coplete [DEBUG] 22:54:24: Scheduler is intitialising. Loading with profile group WinterHoliday. [DEBUG] 22:55:24: Initialise Alarm alarmTime1 in room Scheduler. [DEBUG] 22:55:24: Initialise Alarm alarmTime4 in room Scheduler. [DEBUG] 22:55:24: Initialise Alarm alarmTime2 in room Scheduler. [DEBUG] 22:55:24: Initialise Alarm alarmTime3 in room Scheduler. [DEBUG] 22:55:24: Catching up actions. [DEBUG] 22:55:24: Pause for ZWave to initialise. [DEBUG] 22:56:24: Catching up finished. [DEBUG] 22:56:24: Next Run at 00:05:05 [DEBUG] 22:56:24: Correct by 19s error, [DEBUG] 22:56:24: Going to sleep for 69mins tous ça, ça te parle?
Shad Posté(e) le 24 avril 2014 Auteur Signaler Posté(e) le 24 avril 2014 Sa àl'air tout bon. Le script se mais en veille pendant une heure.
Fredric Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 Merci Shad Je vais voir si cela fonctione ce soir
fab971 Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 J'ai relu l'ensemble du sujet et je n'ai toujours pas compris. Comment cela facilite l'exécution des scènes? Comment l'utiliser dans une scène? Quelqu'un peut m'(nous) expliquer? PS: Je demande cela car dans plusieurs sujets, vous évoquez le fait d'utiliser le scheduler.
amonthet Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 C'est clair que c'est frustrant de ne pas comprendre, l'idéal serait une explication ultra simple et pour chaque ligne de code.... Messieurs (dames...) , àvos claviers
Shad Posté(e) le 24 avril 2014 Auteur Signaler Posté(e) le 24 avril 2014 Je vais surement pas comment les plus de 1000 lignes du code du scheduler lol. Je vois absolument pas ce qu'il y a de compliqué, un copier/coller de la scène, éditer les ID dans les premières ligne de la scène, et vers la fin de la scène il y a une section "ADD YOUR LINE HERE". Et là vous mettez vos commandes, il y a plein d'exemples juste au dessus du "ADD YOUR LINE HERE".
fab971 Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 Ce que j'ai pas compris c'est ou se trouve ce "ADD YOUR LINE HERE". Donc en gros, tout se passe dans le script scheduler c'est ça.
Shad Posté(e) le 24 avril 2014 Auteur Signaler Posté(e) le 24 avril 2014 Oui, cette section se situe vers la fin du code.
fab971 Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 Ce que je ne comprends pas c'est l'utilisation. Donc on colle l'ensemble du code Scene1-ID1-scheduler à chaque fois que l'on veut faire une scène? Pour exemple, si je veux fermer mes volets à 22h et les ouvrir à 6h. Comment faire concrètement?
fab971 Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 Je vais déjàinstaller le scheduler. Cela m'aidera àmieux comprendre je pense. Je vous tiens au courant.
Lazer Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 Je réfléchie àun scénario où mon script LUA aurait besoin de planifier l’exécution d'une tâche àune heure programmée. Cette heure est inconnue àl'avance, donc la ligne correspondante ne peut pas être entrée manuellement dans le code du scheduler. Il me faut quelque chose de dynamique, un peu dans le genre de ce que permet la commande UNIX "at" pour ceux qui connaissent. Shad, penses-tu que cela soit réalisable avec le scheduler ?
Shad Posté(e) le 24 avril 2014 Auteur Signaler Posté(e) le 24 avril 2014 Je vois pas trop ce que tu veux dire en fait
Lazer Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 Arf... Bon alors prenons mon exemple : J'ai un dimmer pour l'éclairage, lequel est commandé manuellement par un interrupteur mural. J'ai un Fibaro motion sensor, lequel est associé au dimmer et permet d'allumer la lumière automatiquement. Donc je peux allumer la lumière soit manuellement par l'interrupteur mural, soit automatiquement par le motion sensor. Jusque là tout va bien. Maintenant je veux gérer l'extinction automatique de cette lumière, car c'est un couloir de passage. Ma règle est la suivante : - si c'est le motion sensor qui détecte le mouvement, alors je veux éteindre la lumière au bout de 30 secondes (car quelqu'un ne fait que passer) - si c'est l'interrupteur qui est appuyé, alors je veux éteindre la lumière au bout de 5 minutes (car ce quelqu'un va rester plus longtemps dans un coin du couloir, par exemple pour fouiller dans un placard). Plutôt que d'utiliser des scènes avec des fibaro::sleep(), je pense que peut-être le Scheduler peut m'aider. C'est bien toi qui déconseille l'utilisation du Sleep en cas de coupure de courant Je crée 2 scènes qui se lancent lorsque l'un des 2 événements survient (motion ou interrupteur), et chaque scène calcule l'heure d'extiction de la lumière (30s ou 5min plus tard). Chaque scène programme alors le réveil d'une 3ème scène qui sera chargée d'éteindre la lumière. Le seul truc que je ne sais pas faire, c'est donc programmer le réveil de cette 3ème scène à une certaine heure. Est-ce que c'est plus clair ?
fab971 Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 Je suis intéressé par tes scènes actuelles car en effet je ne savais pas qu'on pouvait différencier l'allumage par détection ou par appuie sur l'interrupteur.
Lazer Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 Mes scènes actuelles n'existent que dans ma tête. Je réfléchis avant de passer àl'action En fait on ne peut pas différencier directement les 2 modes d'allumage. Mais on peut le deviner : - un trigger déclenche la scène suite àdétection de mouvement => on positionne une variable globale, puis on allume la lumière. - un trigger déclenche la scène suite àallumage de la lumière (car on a appuyé sur l'interrupteur, ou déclenchement suite àcondition précédente) => en fonction de l'état de la variable globale, on sait quel est l'élément déclencheur => on décide d'éteindre la lumière 30s ou 5min plus tard.
Shad Posté(e) le 24 avril 2014 Auteur Signaler Posté(e) le 24 avril 2014 D'accord et bien c'est tout simple alors, il suffit juste d'update la variabe globale d'une des alarmes, au changement le scheduler ce rechargera
Steven Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 Dans ta variable global, au lieu de stocker le déclencheur, tu devrais stocker la durée avant extinction. Pseudo-code Si interrupteur Alors setGlobal("extinction", 5*60*1000) --5 minutes sinon setGlobal("extinction", 30*1000) -- 30 secondes end call(..., turnOn) Ensuite tu créer un scénario que s'active au changement de la variable global *Extinction" Pseudo-code --[[ %% properties %% globals Extinction --]] sleep(tonumber(getGlobal("Extinction"))) call(.., turnOff) Et voilà
Lazer Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 @Steven : oui ça fonctionne, mais on retrouve le sleep() que je cherche à éviter... @Shad : ah ok, donc il faut utiliser une variable globable qui soit associée à une alarme dans le scheduler. Bon je vais essayer de comprendre comment ça marche les alarmes de ce scheduler. Je crois que ce scheduler va tous nous rendre fous
Steven Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 Si en appuyant sur l'interrupteur tu demande au Scheduler d'éteindre la lumière dans 5mn et que dans ces 5mn ta boxe reboot, le Scheduler ne pourra rien faire... Au même titre que le sleep. D'ailleurs le Scheduler "sleep" jusqu'àla prochaine action àeffectuer. A moins que le Scheduler stock les événements en dur quelques part, tout les événements ajoutés suite àune action ne fonctionne plus après un reboot. Ce serait vraiment cool de pouvoir stocker autre chose que des variables globales.
Lazer Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 Arf, bon et bien si le scheduler fait aussi des sleep, alors autant que je le fasse àl'ancienne, exactement comme tu me l'as proposé.
Steven Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 Shad est l'expert du Scheduler et pourra confirmer ou infirmer mes dires.
Fredric Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 bonsoir messieurs, @Shad, voici le retour de mon test: [DEBUG] 00:05:05: Schedule running at 00:05:05 [DEBUG] 00:05:05: Next Run at 07:28:05 [DEBUG] 00:05:05: Correct by 0s error, [DEBUG] 00:05:05: Going to sleep for 443mins [DEBUG] 07:28:05: Schedule running at 07:28:05 [ERROR] 07:28:05: line 1108: attempt to call field '?' (a nil value) donc, planté dés ce matin...
Shad Posté(e) le 24 avril 2014 Auteur Signaler Posté(e) le 24 avril 2014 Attend, est-ce que tu as bien configurer le scheduler avec les alarmes et virtual device. Après tu as juste à mettre un truc dans ce genre. luaDaySchedule:add(getAlarm("alarmTime1"),"4", "" , "startScene", {"All"} ,false); Et steven non, car tu ne m'est pas un sleep mais une heure.
Fredric Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 ok, donc j'ai ça maintenant, je suis au bon endroit? --<ADD YOUR LINES HERE IN POFILE SECTIONS> luaDaySchedule:add("Sunset","52", "On" , "", {"All"}, false , -30); luaDaySchedule:add("Sunrise","52", "Off" , "", {"All"}, false , 30); luaDaySchedule:add(getAlarm("alarmTime1"),"4", "" , "startScene", {"All"} ,false);
Shad Posté(e) le 24 avril 2014 Auteur Signaler Posté(e) le 24 avril 2014 C'est sa, mais la ligne que je t'ai donnée est un exemple, faut change rle numéro d'alarme et l'action.
Messages recommandés