Aller au contenu

Messages recommandés

Posté(e)
[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?

Posté(e)

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. 

Posté(e)

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 ;)

Posté(e)

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".

Posté(e)

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.

Posté(e)

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?

Posté(e)

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 ?

Posté(e)

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 ?

Posté(e)

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. 

Posté(e)

Mes scènes actuelles n'existent que dans ma tête. Je réfléchis avant de passer àl'action :D

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.

Posté(e)

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 ;)

Posté(e)

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à 
Posté(e)

@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 :wacko:

Posté(e)

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.

Posté(e)

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é.

Posté(e)

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...

Posté(e)

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.

Posté(e)

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);

Posté(e)

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.

×
×
  • Créer...