Aller au contenu
Berale64

Numérotation Des Boutons

Recommended Posts

Je reviens sur l’excellent sujet de notre mangeur de mirabelles: http://www.domotique-fibaro.fr/index.php/topic/4504-module-virtuel-num%C3%A9rotation-des-boutons/

 

En bricolant un bout de code LUA, j'ai mis, par inadvertance, l'ID du bouton au lieu de son numéro dans un pressbutton. fibaro:call(IdModuleVirtuel, "pressButton", "4")

 

Et ça marche à  merveille.

Je ne sais pas si c'est nouveau.

Certains vont sà»rement dire que le vieux radote. :(

 

Mais c'est super cool car on peut changer l'ordre des boutons dans un VD sans ce soucier de modifier le code.

Le code est aussi beaucoup plus lisible.

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut Berale,

 

Un exemple ;-) un exemple ;-)

Moi j'avais pas fait gaffe ;-) je ne savais pas non lus, mais moi suis un vrai boulet lol

Partager ce message


Lien à poster
Partager sur d’autres sites

Ici, c'est le bouton numéro 2.

post-1115-0-78665800-1475147371_thumb.jpg

 

Donc je faisais

fibaro:call(IdModuleVirtuel, "pressButton", "2")

 

Et maintenant

fibaro:call(IdModuleVirtuel, "pressButton", "Spring")

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est cool, ca permet de modifier l'ordre des boutons ;-) sans se soucier du fonctionnement.

 

J'avas vraiment pas remarqué non plus ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon, en fait, j'ai du me mélanger les pinceaux.

Je croyais que ça marchait et ça marche plus!!! :(

 

Alors j'ai écrit ce petit bout de code.

function GetButtonNumber(VdID,BtName)
local devicesJSon = api.get("/devices/"..VdID)

local BtNum = 0;
for k, v in pairs(devicesJSon.properties.rows) do
  BtNum = BtNum + 1;
  if (v.type == "button") then
    BtNum = BtNum - 1;
    for j = 1,#v.elements do
      BtNum = BtNum + 1;
      if (v.elements[j].name == BtName) then
        return (BtNum)
      end
    end
  end
end
return 0;
end

n = GetButtonNumber(29,"Sunset");
fibaro:call(29, "pressButton", n)
fibaro:debug(n);
  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

et ca fonctionne ?

 

C'est pas mal, mais ca oblige à  mettre la fonction dans chaque scene ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

oh, zut, enfin je coyais qu'on pouvait utiliser l'ID :angry:

Partager ce message


Lien à poster
Partager sur d’autres sites

Moi aussi ! :(

Le petit morceau de code que j'ai publié fonctionne parfaitement.

J'ai juste rajouté une petit fonction pour que mes scènes restent simple et lisibles.

function PressButton(VdID,BtName);

fibaro:call(VdID,"pressButton",GetButtonNumber(VdID,BtName));
end
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

l'iédéal serait de pouvoir intégrer celààGEA

Partager ce message


Lien à poster
Partager sur d’autres sites

Là, je peux rien pour toi, mais, bien sur, mon misérable petit morceau de code est àla disposition de la communauté. :D

Mon code est un peu spaghetti, je pense que ça c'est plus propre.

function GetButtonNumber(VdID,BtName)
local devicesJSon = api.get("/devices/"..VdID)
 
local BtNum = 0;
for k, v in pairs(devicesJSon.properties.rows) do
  if (v.type == "button") then
    for j = 1,#v.elements do
      BtNum = BtNum + 1;
      if (v.elements[j].name == BtName) then
        return (BtNum)
      end
    end
   else -- slider ou label
    BtNum = BtNum + 1;
  end
end
return 0;
end
  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

est-ce qu'un admin pourrait libérer le post de mprinfo afin qu'il puisse y ajouter un lien vers celui-ci ?

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai rajouté un lien dans le tuto de mprinfo :D

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

merci patron !

Partager ce message


Lien à poster
Partager sur d’autres sites

×