vonboss Posté(e) le 7 janvier 2016 Signaler Posté(e) le 7 janvier 2016 Bonjour, Je suis novice dans la programmation du code Lua et j'ai un petit problème avec le Slider pour modifier une des couleurs du Module RGBW Pour commencer j'ai créer un module virtuel avec1 Label1 Bouton On1 Bouton Off1 Slider Bouton On fibaro:call(25,"setG", "55") -- on allume fibaro:debug("Allumage de la lampe G25%") Bouton Off fibaro:call(25, "setG", "0") -- on eteint fibaro:debug("Extinction de la lampe G0") Slider local ID_VD = fibaro:getSelfId() -- Recupere l'id du module Virtuel local Slider = fibaro:get(ID_VD,"ui.Slider1.value") fibaro:debug(Slider) --J'ai bien la valeur --fibaro:call(25, "setR", "setProperty", "ui.Label1.value", Slider) Comment on demande au Module RGBW de suivre la valeur du Slider sur une couleur ? Merci
jojo Posté(e) le 7 janvier 2016 Signaler Posté(e) le 7 janvier 2016 pour récupérer la valeur d'un slider -- SET Slider local id = fibaro:getSelfId(); local slider = fibaro:getValue(id, "ui.Slider1.value"); où Slider1 est l'ID de ton slider
vonboss Posté(e) le 8 janvier 2016 Auteur Signaler Posté(e) le 8 janvier 2016 J'ai compris comment on récupère la valeur du slider Enfin je crois.lol... Mais la commande pour actionner le module sur une couleur. fibaro:call(25, "setR", "setProperty", "ui.Label1.value", Slider) Je dois faire une erreur (une grosse" sur la commande.
jojo Posté(e) le 8 janvier 2016 Signaler Posté(e) le 8 janvier 2016 regarde ici comment utiliser le fiabro:call http://www.fibarouk.co.uk/support/lua/actions-use-fibarocall-api/ colonne RGB_Driver 1
pepite Posté(e) le 8 janvier 2016 Signaler Posté(e) le 8 janvier 2016 Salut, ceci plutot, à tester. fibaro:call(25, "setvalue", Slider)
vonboss Posté(e) le 8 janvier 2016 Auteur Signaler Posté(e) le 8 janvier 2016 J'ai fait beaucoup erreur de Majuscule et autre, pas évident au début Voici le bon code local id = fibaro:getSelfId(); local slider = fibaro:getValue(id, "ui.slider1.value") fibaro:debug(slider) fibaro:call(25, "setR", slider) Merci Jojo pour le lien pour les fonctions et Pepite qui ma mis sur la bonne voie..
vonboss Posté(e) le 8 janvier 2016 Auteur Signaler Posté(e) le 8 janvier 2016 Avec un réglage 0, 255. local id = fibaro:getSelfId(); local slider = fibaro:getValue(id, "ui.slider1.value") fibaro:debug(slider) -- la valeur slider function map_range( a1, a2, b1, b2, s ) return b1 + (s-a1)*(b2-b1)/(a2-a1) end local slider = map_range(0, 100, 0, 255, _sliderValue_ ); -- nombres entier local slider = math.floor(slider) -- Commande W fibaro:call(25, "setW", slider) fibaro:debug(slider)
vonboss Posté(e) le 8 janvier 2016 Auteur Signaler Posté(e) le 8 janvier 2016 Autre petite question. Comment mettre a jour le slider avec une commande extérieur ?
mprinfo Posté(e) le 8 janvier 2016 Signaler Posté(e) le 8 janvier 2016 Jr vois que l'on utilise map_range lol Tu peux faire cela via l api de la box Envoyé de mon SM-G900F en utilisant Tapatalk
vonboss Posté(e) le 8 janvier 2016 Auteur Signaler Posté(e) le 8 janvier 2016 Jr vois que l'on utilise map_range lol Tu peux faire cela via l api de la box Envoyé de mon SM-G900F en utilisant Tapatalk Oui car sur le premier teste avec le slider à fond la valeur été sur 100 donc j'ai du utilisé ta fonction Bien utile les tutos pour les nuls lool Pour utiliser l'API. ça va être compliqué pour moi.
mprinfo Posté(e) le 8 janvier 2016 Signaler Posté(e) le 8 janvier 2016 Non cest assez simple je crois que Steven donne des exemples sur le forum mais je sais plus ou Envoyé de mon SM-G900F en utilisant Tapatalk
vonboss Posté(e) le 8 janvier 2016 Auteur Signaler Posté(e) le 8 janvier 2016 J'ai bien trouvé un bout de code que j'ai mis dans la Main loup le debug me donne la bonne valeur du module, mais le slider ne suis pas il doit me manquer une ligne de commande pour remonter l'info aaaah dur dur function colorSetToEclairage(colorSet) if (colorSet=='' or colorSet==nil) then return false end; local t, i = {}, 1; for v in string.gmatch(colorSet,"(%d+)") do t[i] = v; i = i + 1; end return t; end local slider1 = colorSetToEclairage (fibaro:getValue(25, "lastColorSet")); --fibaro:debug('R Eclairage ='..Eclairage[1]); fibaro:debug('G Variateur ='..slider1[2]);
MasterBT Posté(e) le 25 janvier 2016 Signaler Posté(e) le 25 janvier 2016 Hello world, Je me permets de continuer ce post pour une question toute con et qui ne demande pas un topic à elle toute seul, @mprinfo, ca concerne la fonction map_range que je viens de découvrir car je fais mon 1er VD avec un Slider. Pour avoir un nombre entier, il faut utiliser la fonction math.floor si on ne l'utilise pas on se retrouve avec énormément de chiffre aprés la virgule, existe il un moyen de n'avoir que 2 nombre après celle-ci? 1
jojo Posté(e) le 25 janvier 2016 Signaler Posté(e) le 25 janvier 2016 il me semble avoir lu de Steven que pour les problèmes de décimales, cela était réglé en concaténant le résultat avec un espace fibaro:debug("ta variable numérique avec bcp de décimales : "..variable.." ")
MasterBT Posté(e) le 25 janvier 2016 Signaler Posté(e) le 25 janvier 2016 il n'y a pas de String.format possible? J'ai cherché un peu les différents paramètre pour formater une valeur, mais j'ai pas trouvé.
mprinfo Posté(e) le 25 janvier 2016 Signaler Posté(e) le 25 janvier 2016 @MasterBT lol pour les chiffres il suffit de faire des maths on multiplie par 100 on prend l'entier et enfin on divise par 100 ex a = math.floor(100*0.546788888888888888) --A va être égale a 54 resultat = a / 100 --le résultat est 0.54 print(resultat) @jojo on veut pas du string on veut du number donc pourquoi faire compliquer alors qu'il y a très simple http://www.luteus.biz/Download/LoriotPro_Doc/LUA/LUA_Training_FR/LUA_Fonctions_Math.html
MasterBT Posté(e) le 25 janvier 2016 Signaler Posté(e) le 25 janvier 2016 ok merci, je pensais qu'il y avait un moyen plus simple de formatage, je test ça merci encore
mprinfo Posté(e) le 25 janvier 2016 Signaler Posté(e) le 25 janvier 2016 C'est très simple surtout que tu veux garder un nombre Envoyé de mon SM-G900F en utilisant Tapatalk
jojo Posté(e) le 25 janvier 2016 Signaler Posté(e) le 25 janvier 2016 oui, ma solution n'arrondit pas, mais elle doit être combinée àla tienne. Si tu as comme résultat 19.52, il risque d'afficher 19.5200000000 ou 19.51999999, sauf si tu rajoutes un espace àla fin
MasterBT Posté(e) le 25 janvier 2016 Signaler Posté(e) le 25 janvier 2016 Ca formate bien la valeur, mais dans le label ca affiche quand même une flopée de zero. j'ai donc suivis le conseil de jojo, je l'avais oublié cette astuce. Affaire réglée. merci à vous deux.
Messages recommandés