Aller au contenu
triossrf

Ouverture volet avec profiles

Recommended Posts

Bonjour les pros ! 

 

J'aurai besoin de vos lumières concernant une boucle, je m'explique. 

J'ai un Q.A qui gère un volet. 

Je voudrai que lorsque j'active mon profil "Présent" le volet s'ouvre. 

Pour cela j'écris cela: 

function QuickApp:OuvertureProfiles()

   if self:getVariable("Profiles", "Présent") then
        hub.call(41, 'setValue', 99)
   end

end 

évidement j'ai créer ma variable Profiles dans le Q.A. 

Etant donné que la function tourne dans un setTimeout le contact du module s'enclenche sans arrêt tant que le profiles présent est actif (logique...). 

 

Ma question est la suivante: 

Est-il possible de créer une boucle "for" qui vérifierai la valeur "Présent" et qui permettrait de sortir de la boucle si la condition est bonne? 

Les boucles gère t'elle seulement les valeurs numériques?

 

Merci de vos lumières ;) en espérant avoir été claire comme de l'eau de roche. 

 

Pour info du topic: 

@fredokl

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est pour apprendre le LUA ?
Parce que ce que tu veux faire se fait nativement dans GEA avec 1 seule règle très simple.
 

Il faut tester la valeur du volet.

Donc tu ajoutes un test supplémentaire dans ta condition avec fibaro.getValue(ID, "value") < 99

 

Par ailleurs pourquoi t'embêter avec une variable de QA ? Tu peux directement aller lire la valeur du profil en cours avec api.get("/profiles")

Partager ce message


Lien à poster
Partager sur d’autres sites

Effectivement c'est surtout pour apprendre le LUA mais aussi pour avoir un Q.A par volet. 

Ce qui me permettrait d'avoir dans mon tableau de bord une gestion individuel de chaque volet (un peu a ma sauce). 

 

Le problème c'est que si il détecte le Profil "Présent" soit par l'API ou par la variable, comme la fonction est dans une boucle, il va activer le contact a chaque fois que la boucle va valider la condition du profile "Présent". 

 

PS: J'utilise G.E.A déjà pour les autres volet ça marche du feu de dieu. Mais j'aime bien apprendre aussi :) 

Modifié par triossrf

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 3 heures, triossrf a dit :

, il va activer le contact a chaque fois que la boucle va valider la condition du profile "Présent".  

Non puisque je t'ai suggéré d'ajouter une condition sur la valeur du volet.

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Effectivement, j avais pas pensé à faire une autre condition.

Et ce système de boucle ne peu pas marcher dans ce cas ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Je ne comprends pas ta question ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Je vais essayer de me faire comprendre mais c'est pas évident car je ne maitrise pas trop... 

Est-ce qu'il est possible de créer une boucle qui ressemblerait à peu prés à cela: 

for valeur = self:getVariable("Profiles", "Présent") do  			--Ou api.get("/profiles")
	hub.call(41, 'setValue', 99)
  		break 
end

 

Comme ça, une fois qu'il a valider la boucle, il ressort et du coup il me claque pas le contact en permanence. 

J'ai l'impression que les boucles fonctionne que pour les valeurs numériques alors je fais surement fausse route. 

Partager ce message


Lien à poster
Partager sur d’autres sites

Euh.... j'ai l'impression que je n'arrive pas à me faire comprendre.

Je vais écrire un truc en LUA à l'arrache, non testé, en me basant sur ton code initial et ma suggestion :

	if self:getVariable("Profiles", "Présent") and fibaro.getValue(41, "value") < 99 then
		hub.call(41, 'setValue', 99)
	end

Tout simplement.

 

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×