ebouilleur Posté(e) le 22 mars 2019 Signaler Posté(e) le 22 mars 2019 Bonjour, J'essayer de faire un truc, mais je n'y arrive pas et ca commence a me souler Pour info, je suis partis du VD Volets V2.0b que j'ai pas mal retravailler. Ce que j'essaye de faire, c'est d'afficher dans une étiquette la valeur concaténé de 2 variable obtenu a parti de clic sur des boutons Genre : bouton 1 : Ouvrir bouton 2 : salon et je souhaite que mon étiquette affiche "Ouvrir salon" C'est possible? une piste svp? Merci
Franco268 Posté(e) le 22 mars 2019 Signaler Posté(e) le 22 mars 2019 Tu mets bouton 1 dans une variable global bouton 2 dans une autre. et lorsque tu affiches tu fais VG1..VG2 c’est ça ?
ebouilleur Posté(e) le 23 mars 2019 Auteur Signaler Posté(e) le 23 mars 2019 Pour le coup, non je l'ai pas mis dans une variable globale, j'espère que ça marcherai sans au seins du même module. Si pas le choix je vais faire ça. merci
J3R3M Posté(e) le 23 mars 2019 Signaler Posté(e) le 23 mars 2019 (modifié) Bonjour @ebouilleur Je vais essayer de récapituler point par point ce que je pense avoir compris. Ainsi, réajuste chacune de mes affirmations si nécessaire, cela permettra à tout le monde de mieux comprendre ton besoin. - Tu es parti d'un VD existant que tu as modifié. (Peux-tu éventuellement mettre un lien vers la page de ce VD? Je ne l'ai pas trouvé) - Tu as rajouté un champ "Etiquette" dans ce VD - Tu as bien veillé à ce que ça ne perturbe pas le fonctionnement du VD : Ordre des boutons appuyés - Sur ce VD, lorsque tu appuies sur des boutons, ça te modifie la valeur de deux variables - Cela semble donc être une variable LUA classique. Mais où est déclarée et modifiée cette variable? Dans la mainloop du VD? Admettons que tes variables soient dans la mainloop, tu devrais les afficher dans une étiquette de la manière suivante : local var1 = "ouvrir"; local var2 = "salon"; fibaro:call(fibaro:getSelfId(), "setProperty", "ui.NomLabel.value", var1.." "..var2); Modifié le 23 mars 2019 par J3R3M
ebouilleur Posté(e) le 23 mars 2019 Auteur Signaler Posté(e) le 23 mars 2019 (modifié) Voici le VD d'origine : http://blog-fibaro.fr/tuto-ouvrants-telecommande-universel-pour-volets-roulant/ (il est aussi présent sur le forum je l'avait aperçu) J'ai rajouté en effet un nouveau champ étiquettes pour des raisons de simplicité (et j'aurais supprimer les autres après) Je n'ai rien dans la mainloop du VD. En fait sur mon 2eme bouton (qui est le bouton ouvrir), c'est là que je veux faire la concaténation, mais je pense que la variable n'existe pas. je fais donc : local VoletsNameZone = " Ouvrir " .. Var_NameZone ; fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label4.value", VoletsNameZone ) Modifié le 23 mars 2019 par ebouilleur
J3R3M Posté(e) le 23 mars 2019 Signaler Posté(e) le 23 mars 2019 Peux-tu mettre ici le code complet de ton bouton s'il-te-plaît (en utilisant les balises code en LUA) ? Egalement, peux-tu faire un screenshot de ton VD ? L'étiquette que tu cherche à modifier s'appelle bien "Label4" dans ton VD ?
ebouilleur Posté(e) le 24 mars 2019 Auteur Signaler Posté(e) le 24 mars 2019 (modifié) Voici le code du bouton "Maison" : -- Nom du Programme + id des volets ex : {"RDC", 8, 15, 23} local Var_Id = {"Maison", 11, 9, 5, 7, 20} -- Ne Rien Modifier en dessous de cette ligne --------------- local Var_NameZone = (tostring(Var_Id[1])) -- Nom de la Zone ex : "RDC = " fibaro:setGlobal('VoletsNameZone',Var_NameZone); -- Sauvegarde des id dans la variable globale fibaro:setGlobal('VoletsZone',json.encode(Var_Id)); local Var_Name = "" for i = 2,#Var_Id do local TempName = fibaro:getName(Var_Id[i]) local TempValue = fibaro:getValue(Var_Id[i], 'value' ); -- recuperation de la valeur du module Var_Name = (Var_Name ..TempName .."=" ..TempValue .." - ") end -- Mise a jour label fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label3.value", Var_NameZone) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label1.value", Var_Name) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label4.value", Var_NameZone) et le bouton "ouvrir" : fibaro:setGlobal('VoletsSlider', 99); fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label2.value", " = " .."Ouvrir" .." ") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label4.value", " Ouvrir " .. Var_NameZone ) Et oui là ou je veux afficher "ouvrir maison" c'est bien l'étiquette 4 Merci PS : je viens de comprendre qu'il faut utiliser le 1er bouton pour le code et pas "extrait de code"... Modifié le 24 mars 2019 par ebouilleur
J3R3M Posté(e) le 31 mars 2019 Signaler Posté(e) le 31 mars 2019 Bonjour @ebouilleur, En fait, si je comprends bien, tu as actuellement deux étiquettes : une Action et l'autre Zone, contenant chacune une valeur. Tu souhaites "simplement" que le message "mixé" apparaisse dans une seule et même étiquette au lieu de deux distinctes, c'est bien ça ?
J3R3M Posté(e) le 31 mars 2019 Signaler Posté(e) le 31 mars 2019 (modifié) Alors, après avoir compris, sache que ce que tu souhaites va complexifier le code pour simplement un affichage différent dans le VD. Lorsque deux valeurs différentes sont dans la même variable, il va falloir les séparer pour en créer deux distinctes, en passant par une fonction. Cette fonction peut choisir les x premiers caractères et les associer à une première variable et affecter les autres à une seconde variable. Ce qui implique que le nombre de caractères doit être le même à chaque fois. Sinon, il est aussi possible de séparer ces valeurs par un caractère spécifique, comme un tiret ou même un espace. Seulement, il ne faut pas que ce caractère soit présent autre part dans une des chaînes de caractère, sous peine d'obtenir une affichage erroné. Je pense que ça ne vaut pas forcément la peine de s'embêter pour juste modifier un affichage. Mais, si tu souhaites le faire par défi ou simplement parce que tu le veux absolument, regarde du côté de la fonction string.gsub() Modifié le 31 mars 2019 par J3R3M
ebouilleur Posté(e) le 31 mars 2019 Auteur Signaler Posté(e) le 31 mars 2019 il y a 4 minutes, J3R3M a dit : Lorsque deux valeurs différentes sont dans la même variable, il va falloir les séparer pour en créer deux distinctes, en passant par une fonction. Cette fonction peut choisir les x premiers caractères et les associer à une première variable et affecter les autres à une seconde variable. Ce qui implique que le nombre de caractères doit être le même à chaque fois. Oui mais une fois qu'elles seront réuni, il n'y aura pas de traitement à faire, donc je n'aurais pas besoin de les scinder (et donc d'utiliser une fonction). j'avoue que c'est pas clair... C'est une demande de ma chérie, qui ne voit pas tout d'un seul coup d’œil sur l'écran de son smartphone ^^ Je vais regarder la fonction, merci
J3R3M Posté(e) le 31 mars 2019 Signaler Posté(e) le 31 mars 2019 Il y a 7 heures, ebouilleur a dit : Oui mais une fois qu'elles seront réuni, il n'y aura pas de traitement à faire, donc je n'aurais pas besoin de les scinder (et donc d'utiliser une fonction). j'avoue que c'est pas clair... Le besoin de les distinguer se fera sentir lorsque tu voudras changer la valeur de l'action et/ou la zone dans l'étiquette. Sinon, tu remplaceras tout à chaque appui sur un bouton, quel qu'il soit
ebouilleur Posté(e) le 1 avril 2019 Auteur Signaler Posté(e) le 1 avril 2019 (modifié) Il y a 20 heures, J3R3M a dit : Le besoin de les distinguer se fera sentir lorsque tu voudras changer la valeur de l'action et/ou la zone dans l'étiquette. Sinon, tu remplaceras tout à chaque appui sur un bouton, quel qu'il soit Oui l'idée était de tout remplacer sans se poser des questions Merci Modifié le 1 avril 2019 par ebouilleur
Messages recommandés