971jmd Posté(e) le 22 avril 2020 Signaler Posté(e) le 22 avril 2020 (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é le 22 avril 2020 par 971jmd
jjacques68 Posté(e) le 22 avril 2020 Signaler Posté(e) le 22 avril 2020 je comprends pas trop le but de la fonction !!
971jmd Posté(e) le 22 avril 2020 Auteur Signaler Posté(e) le 22 avril 2020 (modifié) salut en gros 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é le 22 avril 2020 par 971jmd
jjacques68 Posté(e) le 22 avril 2020 Signaler Posté(e) le 22 avril 2020 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...
971jmd Posté(e) le 22 avril 2020 Auteur Signaler Posté(e) le 22 avril 2020 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
971jmd Posté(e) le 22 avril 2020 Auteur Signaler Posté(e) le 22 avril 2020 (modifié) je ne comprend pas trop le fonctionnement du retour Modifié le 22 avril 2020 par 971jmd
jjacques68 Posté(e) le 22 avril 2020 Signaler Posté(e) le 22 avril 2020 le principe est : function MaFonction(MonArgument) print(MonArgument) end MaFonction("toto") -- résultat : "toto" sera affiché 1
jjacques68 Posté(e) le 22 avril 2020 Signaler Posté(e) le 22 avril 2020 (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é le 22 avril 2020 par jjacques68
971jmd Posté(e) le 22 avril 2020 Auteur Signaler Posté(e) le 22 avril 2020 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
jjacques68 Posté(e) le 22 avril 2020 Signaler Posté(e) le 22 avril 2020 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...
971jmd Posté(e) le 22 avril 2020 Auteur Signaler Posté(e) le 22 avril 2020 a le le stig top gear 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.
jjacques68 Posté(e) le 22 avril 2020 Signaler Posté(e) le 22 avril 2020 y a le bon vieux manuel de fibaro : https://manuals.fibaro.com/content/other/FIBARO_System_Lua_API.pdf sinon parcourir le forum... et passer beaucoup, beaucoup de temps à essayer... ça vaut le coup...
971jmd Posté(e) le 22 avril 2020 Auteur Signaler Posté(e) le 22 avril 2020 oui beaucoup, beaucoup d' efferalgan aussi oui ça vaut le coup.... 1
971jmd Posté(e) le 23 avril 2020 Auteur Signaler Posté(e) le 23 avril 2020 (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é le 23 avril 2020 par 971jmd
jjacques68 Posté(e) le 23 avril 2020 Signaler Posté(e) le 23 avril 2020 essaye : local total = (a + b) / c
jjacques68 Posté(e) le 23 avril 2020 Signaler Posté(e) le 23 avril 2020 Oui la division/multiplication est prioritaire sur les addition/soustractionRappel de bon vieux cours d'école Envoyé de mon iPhone en utilisant Tapatalk Pro 1
mprinfo Posté(e) le 23 avril 2020 Signaler Posté(e) le 23 avril 2020 C'est la seule chose de l'école que je me souviens OPÉRATION COMMUTATIVEEnvoyé de mon BLA-L29 en utilisant Tapatalk
jjacques68 Posté(e) le 23 avril 2020 Signaler Posté(e) le 23 avril 2020 Alors la ! le nom ne me parle pas du tout ! Envoyé de mon iPhone en utilisant Tapatalk Pro 1
mprinfo Posté(e) le 23 avril 2020 Signaler Posté(e) le 23 avril 2020 En fait j'ai un douteIl y a associative et commutativeA 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 1
jjacques68 Posté(e) le 23 avril 2020 Signaler Posté(e) le 23 avril 2020 ah moi ma première c'était la TI 86, que j'ai également toujours 1
mprinfo Posté(e) le 23 avril 2020 Signaler Posté(e) le 23 avril 2020 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
jjacques68 Posté(e) le 23 avril 2020 Signaler Posté(e) le 23 avril 2020 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 ... 1
971jmd Posté(e) le 23 avril 2020 Auteur Signaler Posté(e) le 23 avril 2020 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
Messages recommandés