Berale64 Posté(e) le 29 septembre 2016 Signaler Posté(e) le 29 septembre 2016 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. 2
pepite Posté(e) le 29 septembre 2016 Signaler Posté(e) le 29 septembre 2016 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
Berale64 Posté(e) le 29 septembre 2016 Auteur Signaler Posté(e) le 29 septembre 2016 Ici, c'est le bouton numéro 2. Donc je faisais fibaro:call(IdModuleVirtuel, "pressButton", "2") Et maintenant fibaro:call(IdModuleVirtuel, "pressButton", "Spring")
pepite Posté(e) le 29 septembre 2016 Signaler Posté(e) le 29 septembre 2016 C'est cool, ca permet de modifier l'ordre des boutons ;-) sans se soucier du fonctionnement. J'avas vraiment pas remarqué non plus ;-)
Berale64 Posté(e) le 30 septembre 2016 Auteur Signaler Posté(e) le 30 septembre 2016 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); 2
pepite Posté(e) le 30 septembre 2016 Signaler Posté(e) le 30 septembre 2016 et ca fonctionne ? C'est pas mal, mais ca oblige à mettre la fonction dans chaque scene ;-)
jojo Posté(e) le 18 octobre 2016 Signaler Posté(e) le 18 octobre 2016 oh, zut, enfin je coyais qu'on pouvait utiliser l'ID
Berale64 Posté(e) le 19 octobre 2016 Auteur Signaler Posté(e) le 19 octobre 2016 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 1
jojo Posté(e) le 19 octobre 2016 Signaler Posté(e) le 19 octobre 2016 l'iédéal serait de pouvoir intégrer celààGEA
Berale64 Posté(e) le 19 octobre 2016 Auteur Signaler Posté(e) le 19 octobre 2016 Là, je peux rien pour toi, mais, bien sur, mon misérable petit morceau de code est àla disposition de la communauté. 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 2
jojo Posté(e) le 19 octobre 2016 Signaler Posté(e) le 19 octobre 2016 est-ce qu'un admin pourrait libérer le post de mprinfo afin qu'il puisse y ajouter un lien vers celui-ci ?
Lazer Posté(e) le 19 octobre 2016 Signaler Posté(e) le 19 octobre 2016 J'ai rajouté un lien dans le tuto de mprinfo 1
Messages recommandés