Aller au contenu

j'apprend le LUA mai


971jmd

Messages recommandés

salut à tous

 

toujours confinée chez moi, je profite pour éprendre le LUA donc je suis preneur de lien, vidéo... sur l’apprentissage du LUA 

 

j'ai appris quel truc et la je suis sur la function 

 

le code suivant fonction très bien sur Zerobrane studio 

 

mai avec FIBARO  quand je souhaite rajoutée un action rien ne ce passe:

exemple si   true   alors allume une lampe 

 

sur Zerobrane studio :

function functionA()
	local a = fibaro:getValue(33, "value") ---valeur de la lampe ch enfant  --- 99%
	local b = fibaro:getValue(450, "value") ---valeur de la lampe salon  ---  <99%

	local inplagecycleB = false
   
    	if (a >= b) 
    
  then inplagecycleB = (a >= b) and (a >= c) 
 
  print( inplagecycleB )
      
	end
 
	return functionA
end
functionA()

sous FIBARO

-- fonction pour recup les heures de debut cycle  et fin cycle  du VD
    function functionA()
	local a = 99  -- valeur ref
	local b = 10  --fibaro:getValue(33, "value") ---valeur de la lampe ch enfant
  

local functionA = false
    
    
	if (a >= b) ---and (a >= c)   
  then functionA = (a >= b) ---and (a >= c) 
      
    
    if functionA == true  
      then
 if functionA == false 
      then
  fibaro:call(244, 'turnOn')
 else
  fibaro:call(244, 'turnOff')
 end
end

  print( functionA )

   
	end
 
	return functionA
end
functionA()

 

Merci de votre aide

 

Modifié par 971jmd
Lien vers le commentaire
Partager sur d’autres sites

salut

 

en gros :P

 

function functionA()
	local a = fibaro:getValue(33, "value")  -- valeur de la lampe salon
	local b = fibaro:getValue(250, "value") ---valeur de la lampe ch enfant
    local c = fibaro:getValue(255, "value") ---valeur de la lampe bureau
  
  exemple 
  ---  si la valeur des module dimer : B et C sont inferieur à A  alors allume une lampe

 

Modifié par 971jmd
Lien vers le commentaire
Partager sur d’autres sites

function functionA()
	local a = fibaro:getValue(33, "value")  -- valeur de la lampe salon
	local b = fibaro:getValue(250, "value") ---valeur de la lampe ch enfant
	local c = fibaro:getValue(255, "value") ---valeur de la lampe bureau
	local MonRetour = false
      
	if (b < a) and (c < a) then
		MonRetour = true
	else
		MonRetour = false
	end  
 
	return MonRetour
end


if functionA() == true then
	--action 1 à faire
else
	--action 2 à faire
end

un truc comme ça ?

il est possible de mettre les actions directement dans la fonction.

et du coup plus besoin de traiter le retour de la fonction...

Lien vers le commentaire
Partager sur d’autres sites

il y a 8 minutes, 971jmd a dit :

je ne comprend pas trop le fonctionnement du retour 

"return", te permet de renvoyer une valeur.

 

dans l'exemple, on renvoie true ou false.

Qui peut être exploiter par la suite du programme.

Ce n'est pas obligatoire dans cette exemple.

ça peut être très utile pour des fonctions qui font des calculs.

tu passes les paramètres en argument et tu récupère le résultat.

exemple :

function Somme(a, b)
    print("a = ", a)
    print("b = ", b)
    return (a + b)
end

print("Return = ", Somme(1, 2))

 

Modifié par jjacques68
Lien vers le commentaire
Partager sur d’autres sites

par contre pour revenir sur le code j'ai surement un problème de chaîne de caractères, enfin je supose

 

si 

local a = 100 
local b = 20 
local c = 1 

le code fonctionne très bien 

 

mai si 

local a = fibaro:getValue(33, "value")  -- valeur de la lampe salon
local b = fibaro:getValue(452, "value") ---valeur de la lampe ch enfant
local c = fibaro:getValue(255, "value") ---valeur de la lampe bureau

j'ai une erreur, il je récupère  pas la valeur des modules

Lien vers le commentaire
Partager sur d’autres sites

la fonction getValue ne renvoie une donnée de type "string" (chaîne de caractère) ?

 

essaye avec ça

 

local a = tonumber(fibaro:getValue(33, "value"))  -- valeur de la lampe salon
local b = tonumber(fibaro:getValue(452, "value")) ---valeur de la lampe ch enfant
local c = tonumber(fibaro:getValue(255, "value")) ---valeur de la lampe bureau

 

tonumber() converti les "string" en numérique...

Lien vers le commentaire
Partager sur d’autres sites

a le le stig top gear :D

 

oui ça fonctionne, merci je commence à comprend des choses 

 

j'ai trouver des lien sur le net pour m'aider dans mon apprentissage mai c'est pas encore ça 

si tu a des lien ou autre je suis preneur.

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

salut 

 

j'ai un code qui fonctionne pas tres bien, je ne comprend pas trop le prob

 

le but est additionnée lp1 + lp2 / 1000 ma pour des raison que je ne comprend pas, il ne prend pas en compte le  /1000 

local lp1 = 100 ---tonumber(fibaro:getValue(67, "power"))  --- climatiseur 1
local lp2 = 100 --tonumber(fibaro:getValue(107, "power")) --- climatiseur 2
local  energ = 1000
print ("---------------------------------------")
print ("valeur climatiseur ch Enfanats  " .. lp1 .. " W") 
print ("valeur climatiseur ch Parents   " .. lp2 .. " W") 
print ("Ratio   " .. energ .. "") 



local function Calcul(a, b, c)

  local total = a + b / c
   
  print("total = "..total.. " KW")
end
 
-- Affectation multiple
local param1, param2, param3   = lp1, lp1, energ


  
-- On appelle la fonction Calcul en lui passant 2 paramètres
Calcul(param1, param2, param3)   

 

Modifié par 971jmd
Lien vers le commentaire
Partager sur d’autres sites

En fait j'ai un doute
Il y a associative et commutative

A mon époque il y a bien longtemps les maths c'était du par cœur et interdiction a la calculatrice pour ceux qui avait la chance d'en avoir une j'ai commencé avec une ti 57 l'une des toutes premières calculatrice programmable que j'ai toujours d'ailleurs elle doit avoir l'âge de@lazer

Envoyé de mon BLA-L29 en utilisant Tapatalk

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...