Aller au contenu

j'apprend le LUA mai


Messages recommandés

Posté(e) (modifié)

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

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

Posté(e)

je me doutai que ça venais des retour de la fonction, mai que je connais pas trop  

 

je me pose une question, avec un function avec argument c'est pas simple ou pas 

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

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

Posté(e)

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

Posté(e)

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.

 

 

 

Posté(e) (modifié)

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

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

J'ai plus mon premier ordi un commodore 64 mais j'ai son successeur le commodore 128 est son lecteur 5 1/4 par contre j'ai plus le lecteur de k7

Envoyé de mon BLA-L29 en utilisant Tapatalk

Posté(e)

j'ai un autre truc que je ne comprend pas trop

 

t = {"lundi", "mardi"}

print(t ["1"])

 

normalement j’aurais du avoir comme résultat: lundi et j'ai comme résultat nill  

×
×
  • Créer...