Aller au contenu

Scene Télécommande


Rem's

Recommended Posts

Bonjour à  tous,

je voudrai sur le code de la minimote faire que :

 

1 appui = lampe On

à  nouveau 1 appui = lampe Off.

 

J'avais vu passer ce bout de code sur le forum mais impossible de remettre la main dessus .....

 

D'avance merci pour votre aide

Lien vers le commentaire
Partager sur d’autres sites

Pour 1 module (remplacer ID par l'id du module) :

elseif (val == 30) then
-- fibaro:debug("Simple clic bouton cercle")

-- inversion de l'état du module
local inverse = {"turnOn", "turnOff"}
fibaro:call(ID, inverse[tonumber(fibaro:getValue(ID, "value")) + 1])

end

Pour plusieurs modules (remplir listeclairage par les id concernés) :

-- fonction d'inversion de l'état du module
local eclairage = function(liste)
local inverse = {"turnOn", "turnOff"}
	for index,valeur in pairs(liste) do
		fibaro:call(valeur, inverse[tonumber(fibaro:getValue(valeur, "value")) + 1])
	end	
end



-------------------------------

elseif (val == 30) then
-- fibaro:debug("Simple clic bouton cercle");

-- liste des modules
listeclairage = {79,81}
-- lancement de la fonction
eclairage(listeclairage)

end
-------------------------------
  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

J'ai fait ca, mais rien ne se passe dans le debug

--[[ 
%% properties 
287 sceneActivation 
%% globals 
--]]
 
-- local ButtonPressed = fibaro:getValue(287, "sceneActivation")
local eclairage = function(liste)

local inverse = {"turnOn", "turnOff"}

for index,valeur in pairs(liste) do
	fibaro:call(valeur, inverse[tonumber(fibaro:getValue(valeur, "value")) + 1])
end	
end

-------------------------------
local val = tonumber(fibaro:getValue(287, "sceneActivation"))
if (val == 30) then
-- fibaro:debug("Simple clic bouton cercle");
-- liste des modules

  listeclairage = {13,309}
-- lancement de la fonction
eclairage(listeclairage)


end

-------------------------------

Une idée .....?

Lien vers le commentaire
Partager sur d’autres sites

Il faut retirer les "--" devant fibaro:debug("Simple clic bouton cercle");

 

Comme Berale24 l'a dit précédemment, si il y a "--" devant un texte, celui correspond à  un commentaire, il ne sert pas pour la programmation. Ce que tu as fait à  la ligne 8.

 

Si la condition du if (val == 30) est validée, le message dans la parenthèse du debug va s'afficher, dans ton cas "Simple clic bouton cercle" .

 

Ici il ne s'agira pas d'un message d'erreur, mais plutôt d'information.

Lien vers le commentaire
Partager sur d’autres sites

--[[ 
%% properties 
287 sceneActivation 
%% globals 
--]]
 
-- local ButtonPressed = fibaro:getValue(287, "sceneActivation")
local eclairage = function(liste)

local inverse = {"turnOn", "turnOff"}

for index,valeur in pairs(liste) do
	fibaro:call(valeur, inverse[tonumber(fibaro:getValue(valeur, "value")) + 1])
end	
end

-------------------------------
local val = tonumber(fibaro:getValue(287, "sceneActivation"))
if (val == 30) then
fibaro:debug("Simple clic bouton cercle");
-- liste des modules

  listeclairage = {13,309}
-- lancement de la fonction
eclairage(listeclairage)


end

-------------------------------

de pense bête, mais je n'arrive toujours pas àdéclencher quelques chose

Lien vers le commentaire
Partager sur d’autres sites

Places des debug tout le long de ton programme pour savoir jusqu'où il tourne.

N'y a t'il pas eu un changement de ligne de commande pour les lignes avec sceneactivation avec les nouvelles version de firmware ? Mprinfo ou JoJo doivent être au courant.

Tu utilises laquelle ?

es-tu sà»r pour la valeur vall == 30

 

test le programme en plaçant "--" devant les lignes 19, 20 et 29. Puis clic sur "démarrer" en dessous de la ligne de code. Si ça fonctionne le problème vient de ces lignes. Sinon, j'ai peut-être zappé une ligne en copiant collant le code, car je l'utilise depuis longtemps, et il fonctionne nickel.

Lien vers le commentaire
Partager sur d’autres sites

ca y est j'ai trouvé ...!!

if tonumber(fibaro:getValue(287, "sceneActivation"))
 then
fibaro:debug("Simple clic bouton cercle");

Apparemment, pour la minimote, val==30, c'est bof

Donc j'ai fait un mix des 2.

 

En tout cas merci à  vous, car j'ai utilisé les conseils de vous 3 pour analyser et trouver mon soucis

Lien vers le commentaire
Partager sur d’autres sites

@ Rem's

 

Désolé de te casser le moral, mais tu n'as pas résolu ton problème, tu l'as juste retardé.

 

La ligne :

if tonumber(fibaro:getValue(287, "sceneActivation")) then

ne sert à  rien car tu ne tests pas la valeur de retour précise de la sceneActivation du module 287, tu tests seulement si il y a en une.

 

Explication :

 

Ta scène est lancé grâce à  ce trigger :

--[[ 
%% properties 
287 sceneActivation 
%% globals 
--]]

Ta condition sera donc toujours VRAI, car la scène s'est lancé de par l'existence d'une valeur du module 287.

 

Pour résumer ton test : Si VRAI alors ...   , ce test est donc inutile.

 

Je ne sais pas si j'explique bien, mais pour résumer, quelque soit le bouton appuyé sur ta télécommande, la condition sera vrai et le code sera exécuté.

 

Il faut donc trouver la valeur de chaque bouton, d'où ton "val == 30 " qui ne doit pas être le bon.

 

Voici un exemple de scène pour trouver la valeur de retour de chaque bouton à  placer à  la place de 30 :

--[[
%% properties
287 sceneActivation 
%% globals
--]]
fibaro:debug(tonumber(fibaro:getValue(287, "sceneActivation")))

La valeur de ta touche apparaîtra dans le debug.

 

Ton programme sera fonctionnel.

 

Par contre j'ai vu sur le forum il y a quelque temps une nouvelle façon de lire le résultat des "scenactivation" dans les dernières mise à  jour. A vérifier.

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...