Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

Il faut juste que tu récupére la valeur de ta lampe

Si allumé alors éteindre

Si éteint alors allumé

Envoyé de mon SM-G900F en utilisant Tapatalk

Posté(e)

Voilà!

elseif (val == 30) then
--fibaro:debug("Simple clic bouton cercle");
    if (fibaro:getValue(ID,"value") == "1") then
        fibaro:call(ID,"turnOff");
    else
       fibaro:call(ID,"turnOn");
    end
Posté(e)

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
Posté(e)

Ouf..... ca devient une usine àgaz (en tout cas pour moi). Je vais comme meme tenter d'utiliser ce bout de code, merci àtoi tranquill666

Posté(e)

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 .....?

Posté(e)

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.

Posté(e)
--[[ 
%% 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

Posté(e)

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.

Posté(e)

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

Posté(e)

@ 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
Posté(e)

Oui. Je n'arrive pas a remettre la main sur le topic de la nouvelle commande pour les télécommande

Envoyé de mon SM-G900F en utilisant Tapatalk

×
×
  • Créer...