Aller au contenu

Numérotation Des Boutons


Berale64

Messages recommandés

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
Lien vers le commentaire
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
Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

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
Lien vers le commentaire
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
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...