Aller au contenu
971jmd

j'apprend le LUA mai

Recommended Posts

il faut que tu fasses attention à la syntaxe et l'indentation de ton code... ce sera plus facile à comprendre et à relire.

une action par ligne.

 

il n'y a pas de soucis pour mettre plusieurs action dans le if :

 

if a == 1 then
  print("action 1")
  print("action 2")
  -- ...
  print("action n")
  sleep(2)
  -- tu mets tout ce que tu veux à la suite
  Variable1 = 12345
  Variable2 = "toto"

else
  --idem ici
end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

ha aaaa  ok merci encor 

 

la je suis bloquée sur la manier d'incrémenter exemple: sur la télécommande   1 appuie = ouv - 1 appuie = STOP  - 1 appuie = ferme

L'idée est d'incrémenté une variable ?

 

j'ai tester avec des boucles comme  while ou for mai ça ne fonctionne pas 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

je trouve pas

J'ai même essayé avec la fonction liste enchainé 

 

listenech.thumb.JPG.84c71323f1cf7a1183241afce217fae0.JPG

Partager ce message


Lien à poster
Partager sur d’autres sites

oui j'ai déjà testé et rien 

 

le ci-dessous est pas propre, mais je cherche à comprendre un truc

 

Pk quand je lance le scenario la variable A passe bien à + 1 donc a = 2 et quand je relance il recommence à 1

 

une variable global ne bouge pas

  a = 1

if a == 1   then	return (a) + 1
      
    elseif a == 1 then	return (a) + 1
      
    elseif a == 3 then	return (a) -3   ---reset

 

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon je ne suis pas loin de laissée tomber 

 

sur fibaro impossible de réalisée un compteur 

 

local i = tonumber (fibaro:getValue(244, "value"))
    print("Valeur du Module = "..i.. "")

local vari = 0 -- on définit la variable avec nom et valeur

  while i <= 50 do  -- tant que i reste inférieur ou égal à 50
	i = varie + 1  -- on incrémente i
	print(i)
  .
  .
  .

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 12 heures, 971jmd a dit :

Pk quand je lance le scenario la variable A passe bien à + 1 donc a = 2 et quand je relance il recommence à 1

c'est normal, vu que tu initialises ta variable à 1.

A chaque fois,que tu relance le scénario, tu recommence tout, donc tu réinitialises à chaque fois la variable !

Si tu ne veux pas que ça arrive, il faut utiliser une variable globale dans la HC2.

Qui sera mémorisée, même après chaque relance de la scène.

 

il y a 7 minutes, 971jmd a dit :

sur fibaro impossible de réalisée un compteur

je comprends pas ce que tu cherches à faire, mais regarde un peu ta variable : une fois elle s'appelle "vari" une autre fois elle s'appelle "varie" !!

Partager ce message


Lien à poster
Partager sur d’autres sites

Désolé je fatigue, mes yeux pouuu 
 

je fait une pause 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Impossible d'arrêté ;)

 

j'ai testé avec le code suivant sur la HC2

 

qui fonctionne mai je ne comprends pas pk quand j'alume ma lampe ID244 ma variable s'incrémente 2 fois 

 

 

--[[
%% properties
244 value
%% weather
%% events
%% globals
--]]

function inc ()
fibaro:setGlobal('TEST', fibaro:getGlobalValue('TEST') +1);
  end 

local param1 = tonumber(fibaro:getValue(244, "value"))


if param1 == 1 then inc()  end


print("Valeur du Module = " ..param1.. "")

 

Partager ce message


Lien à poster
Partager sur d’autres sites

ah étrange ça, tu es bien sûr ?

 

ta lampe serait pas un dimmer par hasard ?

Partager ce message


Lien à poster
Partager sur d’autres sites

supprime voir dans l'entête le %%event, weather et global pour voir !

 

et ajoute un "tonumber" pour le getGlobalValue de "test" !

 

mais suis pas convaincu...

Partager ce message


Lien à poster
Partager sur d’autres sites

Ben non-rein ne fonctionne 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

Pourtant quand je test le 244:

 

--[[
%% properties
244 value
%% weather
%% events
%% globals
TEST
--]]

 
local param1 = tonumber(fibaro:getValue(244, "value"))
    print("Valeur du Module = " ..param1.. "")
[DEBUG] 16:38:19: Valeur du Module = 1
[DEBUG] 16:38:23: Valeur du Module = 0

 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

sinon on faire du debug :

on va compléter la fonction :

function inc ()
  local MaVg = tonumber(fibaro:getGlobalValue('TEST'))
  print("MaVg avant = "..MaVg)
  MaVg = MaVg + 1
  fibaro:setGlobal('TEST', MaVg)
  MaVg = tonumber(fibaro:getGlobalValue('TEST'))
  print("MaVg après = "..MaVg)
end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

ah mais attention, il faut pas mettre 'TEST' dans %%Global !!

 

c'est normal du coup que ça incrémenté 2 fois !

 

Partager ce message


Lien à poster
Partager sur d’autres sites

regarde la fonction que j'ai écrite puis haut, afin d'avoir plus de traces...

Partager ce message


Lien à poster
Partager sur d’autres sites
--[[
%% properties
244 value
%% weather
%% events
%% globals
--]]


function inc ()
  local MaVg = tonumber(fibaro:getGlobalValue('TEST'))
  print("MaVg avant = "..MaVg)
  MaVg = MaVg + 1
  fibaro:setGlobal('TEST', MaVg)
  MaVg = tonumber(fibaro:getGlobalValue('TEST'))
  print("MaVg après = "..MaVg)
end
  

local param1 = tonumber(fibaro:getValue(244, "value"))
if param1 == 1 then inc()  end
[DEBUG] 16:46:58: MaVg avant = 0
[DEBUG] 16:46:59: MaVg après = 1
[DEBUG] 16:46:59: MaVg avant = 1
[DEBUG] 16:46:59: MaVg après = 2

 

Partager ce message


Lien à poster
Partager sur d’autres sites
[DEBUG] 16:52:16: MaVg avant = 0
[DEBUG] 16:52:17: MaVg après = 1
[DEBUG] 16:52:17: MaVg avant = 1
[DEBUG] 16:52:17: Valeur i/o du module = 1
[DEBUG] 16:52:17: MaVg après = 2
[DEBUG] 16:52:17: Valeur i/o du module = 1

le module génère 2 en vois 

Partager ce message


Lien à poster
Partager sur d’autres sites

×