Aller au contenu

Messages recommandés

Posté(e)

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

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

Posté(e)

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")

Posté(e)

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

 

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

Posté(e)

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
  • 3 semaines après...
Posté(e)

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

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

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

×
×
  • Créer...