Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Exemple de script LUA : boucle entre plusieurs luminosités
#2
Salut,

Ce que tu as besoin c'est une machine a etat.

Voila ce que je ferais:

Declare ca comme IO:
- Un variable interne int (on l'appelle "etat")
- Un timer pour remettre l'etat suivant a 0

Puis les regles suivantes pour definir tes etats.

Etat 0, la lampe est eteinte
Code:
Si etat == 0
Faire Mur = false

Etat ou la lampe est a 25%
Code:
Si etat == 1
Faire Mur = set 25

Etat pour les films 1%
Code:
Si etat == 2
Faire Mur = set 1

On ajoute la regle pour eteindre et retour a l'etat 0
Cette regle est la fin du cycle de bouclage (etat0 -> etat1 -> etat2 ->etat0)
Code:
Si etat == 3
Faire etat = 0

On rajoute encore le dernier etat (4) qui ne fait rien, il sert a basculer au prochain click sur l'etat 0
Code:
Si etat > 4
Faire etat = 0

Ensuite tu ajoute une regle pour dire a la lampe de demarrer le timer qui va passer a l'etat 4 apres un certain temps (genre 2-3s) Ca va permettre de rebasculer a l'etat 0 (eteint) au click suivant. (a chaque fois que la lumiere est allumé le timer est relancé)
Code:
Si Mur != 0
Faire timer = start

Lorsque le timer est ecoulé, on se met a l'etat 4. (ne rien faire)
Code:
Si timer == true
Faire etat = 4

La logique est en place, maintenant il manque plus que les regles pour les inter, bouton etc...

Les regles sont super simple, il faut juste incrémenter la valeur de l'etat pour passer a l'etat suivant.
Code:
Si Inter1 == true
Faire etat = inc 1

Et ca marche pour tout les inter/boutons/scenario:
Code:
Si Scenario == true
Faire etat = inc 1

Ensuite tu peux simplement mettre a un etat particulier en changeant la valeur de la variable etat.

Avec ca tu auras le fonctionement suivant:
Chaque click passe a l'etat suivant.
Etat0(eteint) -> Etat1(25%) -> Etat2(1%) -> Etat0

En reglant le temps du timer tu vas choisir le temps avant que l'etat ne bascule sur l'Etat4. Comme ca au prochain click l'etat repassera a Etat0(eteint).
Et ca marche meme si tu pilotes ta lumieres directement (avec la page web par ex.) car on a mis la regle qui demarre le timer sur le changement d'etat a allumé de la lumiere.
Raoul,
Calaos Core Dev.
Calaos git sur NUC NUC5PPYH | Wago 750-849 | DALI RGB | Sondes NTC sur 750-464 | Sondes 1Wire DS18B20 avec adaptateur USB DS9490R | Nodes MySensors avec gateway USB | Ecran tactile ELO avec adaptateur USB/RS232 | Squeezebox Duet et Radio | Logitech Harmony Ultimate | Ampli Pioneer VSX921
Reply


Messages In This Thread
RE: Exemple de script LUA : boucle entre plusieurs luminosités - by raoulh - 09-25-2014, 04:49 PM

Forum Jump:


Users browsing this thread: 3 Guest(s)