Aller au contenu

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci beaucoup, je vais tenter de le mettre en place ...

Partager ce message


Lien à poster
Partager sur d’autres sites

Super merci encore.

C'est possible en actionnant plusieurs modules ...?

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Non il adore jouer avec des tables c'est plus générique

Envoyé de mon SM-G900F en utilisant Tapatalk

  • Upvote 1

Partager ce message


Lien à poster
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 .....?

Partager ce message


Lien à poster
Partager sur d’autres sites

et donc ??

Si je la degrise, le debug me sort une erreur

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Et la 8 aussi en commentaire, c'est juste ?

Partager ce message


Lien à poster
Partager sur d’autres sites

@ vilajeal

Oui, par contre elle ne sert plus a rien. Elle est remplacée par la 19. Rem's s'en sert peut-être de pense bête, ou il l'a oubliée.

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai testé en mettant après la ligne 19: val = 30

ça marche très bien.

Donc voir au niveau de la télécommande.

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Super explications

Oui il y a une nouvelle commande ou l'on mets le numéro du bouton

Envoyé de mon SM-G900F en utilisant Tapatalk

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

×