Aller au contenu

Messages recommandés

Posté(e)

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 avec
1 Label
1 Bouton On
1 Bouton Off
1 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

 

Posté(e)

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

Posté(e)

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.

Posté(e)

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..

Posté(e)

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

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.

Posté(e)

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

Posté(e)

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

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?

  • Upvote 1
Posté(e)

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

@MasterBT

lol pour les chiffres il suffit de faire des maths :D

 

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

Posté(e)

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

Posté(e)

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.

×
×
  • Créer...