Aller au contenu
triossrf

Ampoule horaire

Recommended Posts

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. 

Partager ce message


Lien à poster
Partager sur d’autres sites

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)

Partager ce message


Lien à poster
Partager sur d’autres sites

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

 

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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. 

Partager ce message


Lien à poster
Partager sur d’autres sites

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.
 

Partager ce message


Lien à poster
Partager sur d’autres sites

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?

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×