Aller au contenu
971jmd

j'apprend le LUA mai

Recommended Posts

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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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...

Partager ce message


Lien à poster
Partager sur d’autres sites

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 

Partager ce message


Lien à poster
Partager sur d’autres sites

je ne comprend pas trop le fonctionnement du retour 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

le principe est

 

function MaFonction(MonArgument)
    print(MonArgument)
end

MaFonction("toto")

-- résultat : "toto" sera affiché

 

  • Like 1

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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...

Partager ce message


Lien à poster
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.

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

oui beaucoup, beaucoup  d' efferalgan aussi :D

 

oui ça vaut le coup....

  • Like 1

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui la division/multiplication est prioritaire sur les addition/soustraction

Rappel de bon vieux cours d'école


Envoyé de mon iPhone en utilisant Tapatalk Pro

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est la seule chose de l'école que je me souviens

OPÉRATION COMMUTATIVE



Envoyé de mon BLA-L29 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors la ! :) le nom ne me parle pas du tout ! :)


Envoyé de mon iPhone en utilisant Tapatalk Pro

  • Like 1

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

moi c'était un MO5 de thomson, branché sur la télé :) 

avec un stylet où on pouvait cliquer sur l'écran. :) 

dommage je l'ai plus ...

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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  

Partager ce message


Lien à poster
Partager sur d’autres sites

×