Aller au contenu
971jmd

j'apprend le LUA mai

Recommended Posts

Après une nuit de sommeil 

tout fonctionne 

function foncA (a, b )
   arg_A =     a 
   arg_B =     b 
      return  arg_A   
end


local aze = 10  
if aze == 10 then  arg_A = 2
 --- print(arg_A)
end 
 
local aze = 10  
if aze == 10 then  arg_B = 100
 --- print(arg_A)
end 


if arg_A == 2 then  print("arg A ok")
end 

if arg_B == 100 then  print("arg B ok")
end

 

  • Like 1

Partager ce message


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

I did like that may be missing something 

 


 
 

     
 
    


  
  
       
 

 

local function make_p() 
  local x=0
  return {variables = function() x=x+1; return x end}
end
local p = make_p()
print(p.variables())
print(p.variables())
-----------------------

do
  local x=0
  function p() x=x+1; return x end
end
print(p())
print(p())
---------------------

p = (function() local x = 0; return function() x=x+1; return x end end)()
print(p())
print(p())
---------------------

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut

J'ai un code simple que je n'arrive pas à faire fonctionner 

 

Soi je suis c.. ou fatiguée 

 

si ma lampe id38 On alors OFF id 369

ou

si ma lampe id369 On  alors  OFF id 368

--[[
%% properties
368 value
369 value
%% events
%% globals
--]]

local lp1 = tonumber(fibaro:getValue(368, "value"))
local lp2 = tonumber(fibaro:getValue(369, "value"))

if        lp1 == 1 then  fibaro:call(369, "turnOff")
 fibaro:abort()
end


if        lp2 == 1 then  fibaro:call(368, "turnOff")
 fibaro:abort()
end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

comme tes 2 lampes sont trigger de la scène, il faut en plus de la valeur, que tu teste qui déclenche la scène avec un fibaro:getSourceTrigger()

car sinon, le cas où les 2 lampes sont allumées en même temps, ta deuxième conditions ne prendra pas effet...

 

local trigger = fibaro:getSourceTrigger() -- renvoie 368 ou 369 selon le module qui déclenche la scène

if tonumber(trigger.deviceID) == 368 and tonumber(fibaro:getValue(368, "value")) == 1 then
  fibaro:call(369, "turnOff")
elseif tonumber(trigger.deviceID) == 369 and tonumber(fibaro:getValue(369, "value")) == 1 then 
  fibaro:call(368, "turnOff")
end

à tester... pas sûr que ça suffise...

Modifié par jjacques68
  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci, je teste demain matin. 
 

je doit avouer que cette semaine je sature sur le LUA mai je m’accroche  :)

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

oui 

 

Bon ça fonctionne :60:

 

en deux mots quel est la fonction de   fibaro:getSourceTrigger() 

 

Moi je comprends que c'est OU

 

 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

if tonumber(trigger.deviceID) == 368 and tonumber(fibaro:getValue(368, "value")) == 1 then
  fibaro:call(369, "turnOff")

 

si ????????? est égale à Id368 et si la valeur de Id 368 égale 1  aloes Off Id 369

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à vous,

Je suis novice, j'ai mis ceci dans la boucle principal d'un VD, mon but est de récupérer les valeurs des labels pour ensuite modifier une variable.

if Label3 == "OFF" and Label4 == "OFF"
	and Label6 == "OFF" and Label7 == "OFF" and Label8 == "OFF"
  	and Label10 == "OFF" and Label11 == "OFF" and Label12 == "OFF" and Label13 == "OFF"
 	and Label15 == "OFF"
  	and Labe117 == "OFF"
		then fibaro:setGlobal('EclMode', 'AUTO')
  		else fibaro:setGlobal('EclMode', 'MANU')
end

ça fonctionne uniquement sur la 1er ligne ?

Le but est de récupérer les valeurs des labels du VD pour ensuite modifier ma variable

 

Une autre solution serait d'utiliser une Fonction ou Table ?

 

Merci pour votre aide et conseils....

Modifié par Ghoosti
Ajout Fonction ou table

Partager ce message


Lien à poster
Partager sur d’autres sites

salut à tous 

 

j'ai souhaite votre aide 

 

Je souhaite réaliser un petit code, pour me permettre de réalisée trois actions sur des volets roulants

 

1 click ouvre 

1 click Stop 

1 Click Ferme 

etc

 

Ça ne fonctionne pas très bien

 

 

{
  conditions = { {
      id = 143,
      isTrigger = true,
      operator = "==",
      property = "centralSceneEvent",
      type = "device",
      value = {
        keyAttribute = "Pressed",
        keyId = 1
      }
    } },
  operator = "all"
}

 

if
fibaro.getGlobalVariable("AZERTY") == "A" 
then
    fibaro.call(279, 'open') --- OUVRE
   ---fibaro:sleep(3000) 
    fibaro.setGlobalVariable('AZERTY', 'B') 
   --end
 

elseif fibaro.getGlobalVariable("AZERTY") == "B" 
then
    fibaro.call(279, 'stop') --- STOP
   ---fibaro:sleep(3000) 
    fibaro.setGlobalVariable('AZERTY', 'C') 
   ---end


   elseif fibaro.getGlobalVariable("AZERTY") == "C" 
then
    fibaro.call(279, 'close') --- CLOSE
  ---  fibaro:sleep(3000) 
    fibaro.setGlobalVariable('AZERTY', 'D') 
   ---end



elseif fibaro.getGlobalVariable("AZERTY") == "D" 
then
    fibaro.call(279, 'stop')
   --- fibaro:sleep(3000) 
    fibaro.setGlobalVariable('AZERTY', 'A') 
   end


---vérification de la position du volet haut ou bas


--haut
local a = fibaro:getValue(279, 'value')

if tonumber(a) >= 90  then
fibaro.setGlobalVariable('AZERTY', 'C')
end

--- bas
local b = fibaro:getValue(279, 'value')

if tonumber(b) <= 90  then
fibaro.setGlobalVariable('AZERTY', 'A')
end

 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

×