Aller au contenu

Messages recommandés

Posté(e)

Oui, j'ai compris, ça revient au même.

Tu mets ce code dans le bouton et en fonction de celle que tu veux afficher le numéro de l'icone est une variable. Pour moi tu auras la bonne icône après appui du bouton par GEA

du genre : 

 

fibaro:call(idVD, "setProperty","currentIcon",icone)
Posté(e)

@pepite ... ok, j'ai compris la différence entre un Dieu du Forum et un Membre passionné...  le Dieu il comprend tout plus vite et mieux :lol::13:

(j'avoue que je n'ai toujours pas compris ce que Felig veut faire )

  • Upvote 1
Posté(e)

Moque toi @Cardane ;-)

 

En fait je crois qu'il n'a qu'un seul bouton sur son VD et ses conditions sont gérées par GEA. 

Donc ce que j'ai compris, par exemple : 

 - Si Présent, mode confort, appui bouton VD, icône confort

 - Si absent, mode confort -1, appui bouton VD, icône confort - 1

 

Evidemment, je me trompe peut-être 

Posté(e)

Merci pour votre patience :)

Voici l'icone que je veux changer, c'est l'icone d'un bouton du VD. Je ne veux pas changer l'icone du VD, ca je sais faire.

Pour l'icone du bouton, je peux le faire manuellement en appuyant sur le bouton "Change Icon", mais je me demandais si il y avait un moyen de faire ça automatiquement en code lua.

Capture.PNG

Posté(e)

@pepite   rhooo, loin de moi l'idée de me moquer d'un Dieu du Forum :P

(bon, pour une fois qu'un p'tit Belge peut taquiner un Français ...  )

non, sérieusement j'avais rien compris, surtout que si c'est ce que tu dis ci-dessus, moi j'aurais fait plusieurs boutons et faire le choix du bouton via GEA, ca me paraît plus souple et générique...  

j'espère pour @Felig que ton explication est la bonne et qu'il pourra faire son changement d'icône :-)

Posté(e)

Exactement Pépite, j'ai un seul bouton pour allumer (celui que j'ai collé n'est pas le bon, c'est juste pour l'exemple). Bref vous avez bien compris.

Je peux le gérer autrement, avec des if dans le code du bouton par exemple, mais je cherchais un truc plus élégant tordu :). Une question pour un maitre Yoda du Lua ?

Posté(e)

@Felig  bon, ca va encore faire rire @pepite, mais je suis encore plus perdu :lol:

 

si tu changes l'icône de ce bouton, même via LUA, c'est comme si tu change l'icône du VD puisque une fois que tu pousses sur un bouton, l'icône du VD est remplacé par celui du bouton qui vient d'être poussé...

donc le code de @pepite fonctionne bien...

Posté(e) (modifié)
il y a 23 minutes, pepite a dit :

Oui, j'ai compris, ça revient au même.

Tu mets ce code dans le bouton et en fonction de celle que tu veux afficher le numéro de l'icone est une variable. Pour moi tu auras la bonne icône après appui du bouton par GEA

du genre : 

 


fibaro:call(idVD, "setProperty","currentIcon",icone)

Oui ca marche aussi, mais il faut une variable globale juste pour ca.

 

Edit: Merci pour votre aide, je sais que c'est tordu et que je peux résoudre mon pb facilement de différentes manières. J'étais juste curieux de savoir si on pouvait accéder à la propriété "icone" d'un bouton de VD. Je suis en vacances alors je cherche des trucs compliqués pour m'occuper je suppose...

Modifié par Felig
Posté(e)

Hihi, j'adore ;-) 

 

Non pas une variable globale Felig. Tu peux faire comme ceci : 

local icone = {
    confort = XXXX, 
    Auto = yyyyy
}

fibaro:call(idVD, "setProperty","currentIcon",icone[mode])

la methode de @Cardane est simple ;-) et efficace

 

Posté(e) (modifié)

Ah ça j'aime, c'est élégant sans être tordu, et c'est une syntaxe que je n'utilise pas encore. Merci Pépite!

 

PS: Si quelqu'un connait le moyen de changer l'icone du bouton directement par une API ou autre, ça m'intéresse quand même, juste par curiosité!

 

Edit: voici pour info le code de mon bouton "avant Pépite". Avec une variable icone{} et une variable modefp{} ca sera beaucoup mieux

 

local self = fibaro:getSelfId()
local conf = fibaro:get(self,"ui.LbConf.value")

if conf == "Confort -1°" then
  local modefp = "50"   -- fil pilote 41-50
  fibaro:call(self,"setProperty","currentIcon",1015)
elseif conf == "Confort -2°" then
  local modefp = "35"   -- fil pilote 31-40
  fibaro:call(self,"setProperty","currentIcon",1016)
else
  local modefp = "100"  -- mode confort par défaut 51-100
  fibaro:call(self,"setProperty","currentIcon",1014)
end  

fibaro:call(170,"setValue",modefp)
fibaro:call(177,"setValue",modefp)

 

Modifié par Felig
Posté(e)

@pepite...  je le savais, il suffit de lancer un défi en appelant un Maître Yoda du forum pour que le Dieu trouve une solution... ok ok  :98::lol:

sinon comme tu dis, je suis partisan du simple et efficace...  facile à maintenir, facile à comprendre ce qu'on a fait même 6 mois après... mais bon, 30 ans dans l'IT, ca déforme :-)

  • Upvote 1
Posté(e)

@Cardane Je te rassure, je sais que ta méthode est la plus logique, et c'est comme ça que j'avais commencé. Mais comme je suis dans "l'optimisation outrancière du à une oisiveté excessive", je voulais réduire le nombre de boutons sur le VD, sachant qu'il y en déjà beaucoup pour l'utilisateur. Donc si j'en ajoute aussi plein juste pour GEA, le VD va être brouillon.

Posté(e)

@Felig  pas de problème, c'est aussi intéressant et intellectuellement motivant de comprendre les limites du LUA et de notre box... c'est juste que je n'avais pas compris ce que tu voulais faire au départ et que je taquinais un peu petite par la même occasion :-) et je te rassure, j'ai aussi des VD un peu tordu pour gagner 3 lignes de codes :lol:

en plus, ca confirme ce que je pensais....  les congés ca n'a rien de bon :P

Posté(e)

Madame dort dans la pièce à côté et n'a aucune demande, le wifi est peu encombré la nuit (hotel oblige) ... trop tentant !

  • Upvote 1
Posté(e)

Avec l'api :

 

local VD = xx
local reponse = api.get("/virtualDevices/"..VD)
figaro:debug("Num Icone : " ..reponse.properties.currentIcon)

 

Posté(e) (modifié)

Oui mais ça c'est l'icone du VD, pas du bouton ? Mais ça me donne une idée.

 

Edit: Voilà, j'ai trouvé ça en avec un json.encode sur le VD:

{"type":"button","elements":[{"lua":true,"empty":false,"msg":"local mode = \"Auto\"\nlocal glob = \"chaufssol\" -- variable globale\nlocal self = fibaro:getSelfId()\nfibaro:setGlobal(glob,mode)\nfibaro:call(self,\"setProperty\",\"ui.LbAuto.value\",mode)\n\n-- passage en Auto sera détecté par GEA qui prend le relais","caption":"Auto","name":"Button2","main":false,"favourite":false,"buttonIcon":1013,"id":2,"waitForResponse":false}

Vous voyez le "buttonIcon":1013 à la fin ? C'est ça que je veux modifier. Comment je fais en évitant de me planter dans le réencodage de l'API (pas le moment de planter ma HC2 vu que suis à plusieurs milliers de km de distance ...)

Modifié par Felig
Posté(e)

Bon je me rapproche: le code ci-dessous donne le numéro de l'icone du bouton 1 sur la 6ème ligne du VD.

local reponse = api.get("/virtualDevices/"..195)
numicone = reponse.properties.rows[6].elements[1].buttonIcon

 

Posté(e)

Bonjour, pour moi inutile d'aller aussi loin, changer le currentIcon du VD revient au meme que changer le bouton du VD.
Aucune icone derriere le bouton et en fonction des conditions tu changes le currentIcon.

Envoyé de mon Nexus 5X en utilisant Tapatalk

Posté(e) (modifié)

@pepite Oui, j'ai résolu mon pb comme ça effectivement, merci.

Mais j'aurais bien aimé savoir faire quand même (le boulet qui lâche pas :2:).

Ca permettrait d'éviter le double changement d'icone (appui sur le bouton -> icone vierge -> code lua pour mettre la bonne), sachant que j'utilise un module de Steven qui se déclenche à chaque changement d'icone pour les enregistrer et les restaurer ensuite. On pourrait aussi utiliser les icones des boutons pour remplacer des variables globales (en fonction de l'icone du bouton, action différente pour le bouton) et ... euh ... ok, rien de tout ça est super utile, j'avoue :huh:

 

PS: Mais si quelqu'un trouve ...  (ok, je sors vraiment)

 

Edit: lien du module de Steven (et non pas Lazer, pardon!)

 

https://www.domotique-fibaro.fr/topic/4135-test-icone-utilisã©e-dans-un-vd/?do=findComment&comment=68049

Modifié par Felig
×
×
  • Créer...