Script LUA gradateur de lumière automatique

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
nlbdp
Messages : 1
Inscription : 12 févr. 2023, 01:47

Script LUA gradateur de lumière automatique

Message par nlbdp »

Bonjour,
Je cherche à réaliser un gradateur de lumière automatique, qui serait lancé par un appui sur un bouton (dans le futur il sera lancé automatiquement par Plex au début du film).
Je souhaite que la lumière s'éteigne progressivement comme au cinéma. J'ai essayé en Blockly mais je n'y suis pas arrivé.
J'ai donc essayé en LUA. Voici mon script LUA :

Code : Tout sélectionner

commandArray = {}
local socket = require("socket")
if (devicechanged['Bouton Salon'] == 'single') then
   commandArray['Bande LED TV']='Set Level:100' 
   socket.sleep(2)
   commandArray['Bande LED TV']='Set Level:80'
   socket.sleep(2)
   commandArray['Bande LED TV']='Set Level:40'
   socket.sleep(2)
   commandArray['Bande LED TV']='Set Level:20'
   
   end
   
return commandArray
Le script ne fonctionne pas, il passe de 100 à 20 directement avec un temps de pause. Lorsque je réduit le script à level 100 et level 80, il fonctionne en respectant le socket.sleep(2). Dès que je rajoute un level, il passe du premier level au deuxième level directement. Dans le futur il y aura plus de step (tous les 10 % je pense). Si quelqu'un a une solution en LUA ou autre je suis intéressé.
Je débute en LUA, merci pour votre aide.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Script LUA gradateur de lumière automatique

Message par Keros »

Bonjour nlbdp et bienvenu sur le forum :)

Un code LUA ne lance pas les commandes commandArray[XXX] séquentiellement, mais toutes en même temps à la fin.
Si tu souhaites envoyer des commandes différentes, il faut que tes XXX dans commandArray[XXX] soient tous différents. Regarde les exemples, tu verras qu'il y a un code qui permet "d'incrémenter" les XXX (désolé, je ne l'ai pas l'exemple sous la main).

Ton idée de pause ne fonctionne pas en LUA : il faut différer les actions. Tu peux avoir des exemples .

J'ai écrit des petits guides dans ma présentation (lien dans ma signature) dont un concernant les débuts en programmation.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Répondre