Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Exemple de script LUA : boucle entre plusieurs luminosités
#1
Ma femme n'est pas fan du double-clic et encore moins du triple-clic. Pourtant, on a besoin de faire varier l'intensité lumineuse de certains éclairages. J'ai alors apprfondi un peu les scripts LUA, voici ce que j'ai fini par faire.

A. Le contexte

J'ai une lumière appelée "Mur" (rubans de LED encastrés dans le mur).
Elle est contrôlée en DALI et a l'identifiant "output_1".
C'est l'éclairage de la pièce que nous avons appelée "Coin TV".

Je souhaite faire varier sa luminosité de la manière suivante :
éteint => 25% (lecture de livres, etc) => 1% (visionnage de film, etc) => éteint
Par ailleurs, quand la lumière est dans un état non prévu, tout déclenchement doit l'éteindre (par exemple si on l'a exceptionnellement mise à 100%).

Tout cela en n'appuyant à chaque fois qu'une seule fois sur l'interrupteur.
Et tout cela doit être déclenchable à partir de plusieurs interrupteurs... enfin, deux interrupteurs, aux deux portes de la pièce, ainsi que l'interface mobile Android quand on est au fond du canapé.

B. La structure dans Calaos Installer

J'ai créé une "Scenario Variable" dans la pièce "Coin TV", nommée "Luminosité mur" que j'ai configurée comme visible (pour pouvoir agir dessus à partir de l'interface Android).

J'ai créé des règles pour chaque interrupteurs, avec :
- condition : <Nom de l'interrupteur> == true
- action : Luminosité mur / true

J'ai créé la règle suivante, dans la pièce "Coin TV" :
- condition : Luminosité mur == true
- action : script

C. Le script

Enfin, voici le script contenu dans la règle sus-mentionnée ; c'est lui qui gère entièrement la luminosité du point d'éclairage. Il n'y a aucun élément mis en œuvre ailleurs dans Calaos pour cela (pas de variable interne qui stockerait une valeur par exemple).

Code:
print("Lumière mur coin TV")

---------------------------------------------------
-- Config
MINI="1"
MAXI="25"
---------------------------------------------------

actuel = calaos:getOutputValue("output_1")
if actuel == "0" then
  calaos:setOutputValue("output_1", "set "..MAXI)
elseif actuel == MAXI then
  calaos:setOutputValue("output_1", "set "..MINI)
else
  calaos:setOutputValue("output_1", "false")
end

return true

Ce script peut être complété, par exemple si on veut quatre états différents au lieu de trois. L'action par défaut peut également être changée en modifiant les conditions des "if" ; cette action par défaut est bien sûr celle qui est mentionnée dans le bloc "else".




Qu'en pensez-vous ? Avez-vous des alternatives à cette approche ? Comment faites-vous dans vos maisons pour ce genre de besoins ?
Sébastien Maccagnoni-Munch - Maison en autorénovation, on ne garde que les murs
Automate Wago 750-849 (mais pas de KNX), centrale Beaglebone Black, Calaos 2.0, détecteurs de mouvement HC-SR501, éclairage LED, gradation DALI
Sonorisation Squeezebox avec Raspberry Pi (piCorePlayer), Kia Soul EV en charge toutes les nuits...
Reply


Messages In This Thread
Exemple de script LUA : boucle entre plusieurs luminosités - by tiramiseb - 09-25-2014, 09:57 AM

Forum Jump:


Users browsing this thread: 1 Guest(s)