triossrf Posté(e) le 25 janvier 2022 Signaler Posté(e) le 25 janvier 2022 Salut à tous! Je cherche à améliorer un code LUA concernant un éclairage branché sur un Walli Dimmer FGWDEU-111, je trouve mon code n'est pas très propre. Je m'explique: Lorsque j'appuis sur mon bouton, je veux que de 06H a 23H mon ampoule s'illumine à 80 % Puis de 23H à 06H je veux qu'elle s'éclaire seulement à 30 % ce qui est suffisant pour les levées nocturnes. Pour cela j'utilise le code suivant: function QuickApp:onInit() self:debug("onInit") self:WalliLu() self:loop() end local WalliDimmer = 545 function QuickApp:WalliLu() local currentTime = os.date("%H:%M:%S") local APIState = api.get("/devices/"..WalliDimmer).properties.state if (currentTime >= "06:00:00") and (currentTime <= "23:00:00") and APIState == true then fibaro.call(WalliDimmer, 'setValue', 80) self:debug("ETAT BOUTON:" ..tostring(APIState)) end if (currentTime >= "23:00:00") and (currentTime <= "05:59:00") and APIState == true then fibaro.call(WalliDimmer, 'setValue', 30) self:debug("ETAT BOUTON:" ..tostring(APIState)) end end function QuickApp:loop() self:WalliLu() fibaro.setTimeout(1*5000, function() self:loop() end) end Est-il possible d'utiliser le bouton comme un trigger? Si oui comment? (cela éviterai de boucler tout les 5 secondes lorsque l'état du bouton est à true) Si vous avez des idées pour un codage plus propre je suis preneur. Merci de votre support.
Lazer Posté(e) le 25 janvier 2022 Signaler Posté(e) le 25 janvier 2022 Il faut utiliser l'API refreshStates : Mais pas super facile.... je me demande si pour un scénario aussi simple, il ne serait pas préférable de toute simplement faire une scène, avec comme trigger ton bouton, et qui exécute l'action. Même pas besoin de boucle infinie. Ou GEA (en 2 lignes)
mprinfo Posté(e) le 26 janvier 2022 Signaler Posté(e) le 26 janvier 2022 Comme quoi les scènes sont encore utiles J'ai quelques scènes simple qui me permettent de lancer un bout de code qui ne sera utilé qu'une fois par jour comme par exemple le levé ou coucher du soleil ou pour le démarrage de la box.Pour moi les scènes sont encore utile si on utilise les triggers De plus GEA je n'utilise pas car du jour au lendemain cela peu s'arrêter. D'ailleurs heureusement que@Lazer a porté GEA sur hc3. Envoyé de mon BLA-L29 en utilisant Tapatalk
triossrf Posté(e) le 26 janvier 2022 Auteur Signaler Posté(e) le 26 janvier 2022 Effectivement, il est plus simple d utiliser une scène magique ou G.E.A pour ce genre d'utilisation. Cependant, je voulais essayer de coder en LUA pour m entraîner. Si cela n est pas une chose facile à faire comme le prétend @LazerL je vais donc laisser l'idée de côté pour le jour où je maitriserai mieux le codage LUA.
Lazer Posté(e) le 26 janvier 2022 Signaler Posté(e) le 26 janvier 2022 Ben disons que l'utilisation de l'API refreshStates, c'est pas ce qu'il y a de plus facile à appréhender. Tu peux déjà lire le lien que je t'ai donné, et voir si ça te semble compréhensible.
triossrf Posté(e) le 26 janvier 2022 Auteur Signaler Posté(e) le 26 janvier 2022 Merci. Je vais étudier ça, mais comme tu l as constaté je suis un débutant dans ce monde. Il y a que cette solution pour exploiter un trigger en lua?
Lazer Posté(e) le 26 janvier 2022 Signaler Posté(e) le 26 janvier 2022 Ce n'est pas le LUA le problème. C'est le QuickApp. Fibaro n'a pas permis d'utiliser de trigger dans les QuickApp, uniquement dans les scènes. On a finalement trouvé que cette fameuse API refreshStates permet de détecter les événements, et de réagir instantanément. Ce ne sont pas des triggers, mais c'est tout comme. 1
Messages recommandés