Aller au contenu
DjBen65

Tuto Lua Débutant

Recommended Posts

Bonjour à  vous et Joyeux Noà«l ;)

 

J'aimerais apprendre les bases du LUA, mais je n'ai pas trouvé de tutos simplifié…

 

Auriez-vous des liens?

 

En vous remerciant.

 

Bonne journée

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello

As tu regarder dans les tuto car tu as ceci http://www.domotique-fibaro.fr/index.php/topic/185-lua-le%C3%A7on-1-%E2%80%93-allumer%C3%A9teindre-%E2%80%93-module-binaire/

Leçon n°1

ne me demande pas de t'aider en lua car en 1 ans j'ai pas eu le temps d'en apprendre beaucoup j'essaie et quand je suis bloquer je demande au pro qu'il y a sur ce tres bon forum

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Merci, si je l'avais regardé mais, il manque les actions disponibles (pas forcément toutes, mais les plus courantes) et la structure des lignes de codes.

 

Merci pour le leçon 1 :)

 

Bonne journée!

Partager ce message


Lien à poster
Partager sur d’autres sites

Une méthode simple consiste àfaire une scène en mode block puis de la convertir en lua.

Tu apprendras ainsi beaucoup et vite.

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est vrai que c'est pas mal!

 

Mais bon sans les bases c'est un peu chaud encore… J'ai essayé de "faire" cette scène :

--[[
%% autostart
%% properties
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
( ((currentDate.wday == 1 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "09:59") )
)
then
    fibaro:call(10, "turnOn");
end

setTimeout(tempFunc, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
tempFunc()
else

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
startSource["type"] == "other"
)
then
    fibaro:call(10, "turnOn");
end

end

local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "19:00") )
)
then
    fibaro:call(10, "turnOff");
end

setTimeout(tempFunc, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
tempFunc()
else

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
startSource["type"] == "other"
)
then
    fibaro:call(10, "turnOff");
end

end
 

Mais cela n'a pas vraiment fonctionné, je pense qu'il y a un soucis au niveau des triggers…

 

Le principe s'est d'allumer un WallPlug à  9h59 du mardi au samedi et de l'éteindre quoi qu'il arrive à  19h. Le tout dans une seule scène.

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello Berale24 a raison et je n'y est pas penser pour la convention bloc>lua tu peut apprendre beaucoup comme ca

Si tu àla Scene du dessus en mode bloc poste la je pourrais t'aider

Sinon si tu débute vois aussi avec Gea c'est un peut plus facile àappréendé que le lua

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu peut ajouter àla scene de demarrage la condition Et dans les parenthèses + ton wallplug avec extinction et dans la case rouge tu rajoute 32400 qui sont les heures transformer en seconde et normalement cela doit fonctionner

Désoler pour ma première reponse je ne voulais pas te froissé ( leçon 1)

Je sais que c'est pas évident de commencer en plus y as pas de docs

Dit moi si c'est

ok la je suis sur iPad donct pas facile de te faire une scene mais plus tard je pourrais

Pour Gea (gestionnaire d'événements automatique)

Regarde sur le forum recherche GEA perso je trouve ça plus simple que le lua et c'est aussi puissant

Si t'as un souci n'hésite pas

Partager ce message


Lien à poster
Partager sur d’autres sites

D'accord, je vais tester ça :)

Par contre, il faut que le WallPlug soit allumé un 1ere fois pour que le décompte s'enclenche… Parfois je dois ouvrir (très rarement) le dimanche ou/et le lundi (pour les fêtes par exemple) et donc la je l'allume manuellement.

Dans le cas de cette scène l'extinction ne se fera que manuellement, non?

 

Non pas de froissage ;)

 

Ok je vais essayer de regarder si j'ai le temps entre les clients.

 

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Non regarde je te met une copie de scene pour le sapin il s'allume et s'éteint tout seul tout les jours entre 18h et 21h30

Puis s'éteintpost-1332-0-63440100-1451140532_thumb.png

Mais il faut pas oublier d'activer scene active et lancement au demarrage

post-1332-0-24211200-1451140594_thumb.png

Partager ce message


Lien à poster
Partager sur d’autres sites

Il me semble que tu te lances dans des trucs très compliqués avec des settimeout et des fonctions etc ...

 

voilà  un truc tout simple qui allume selon tes conditions et qui éteint sans condition, donc même si tu allumes manuellement.

--[[
%% autostart
%% properties
%% globals
--]]
 

While true do
	
  local currentDate = os.date("*t");
  local triggerTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min);

  if ((currentDate.wday == 1 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and triggerTime == "09:59")then
    fibaro:call(10, "turnOn");
  end

  if (triggerTime == "19:00") then
	  fibaro:call(10, "turnOff);
  end
fibaro:sleep(60*1000);
end

Partager ce message


Lien à poster
Partager sur d’autres sites

@DjBen65 Tu vois vraiment des pros

Merci Berale24 sa m'aide aussi àcomprendre

Partager ce message


Lien à poster
Partager sur d’autres sites

 

Il me semble que tu te lances dans des trucs très compliqués avec des settimeout et des fonctions etc ...

 

voilà  un truc tout simple qui allume selon tes conditions et qui éteint sans condition, donc même si tu allumes manuellement.

--[[
%% autostart
%% properties
%% globals
--]]
 

While true do
	
  local currentDate = os.date("*t");
  local triggerTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min);

  if ((currentDate.wday == 1 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and triggerTime == "09:59")then
    fibaro:call(10, "turnOn");
  end

  if (triggerTime == "19:00") then
	  fibaro:call(10, "turnOff);
  end
fibaro:sleep(60*1000);
end

 

Ah oui nettement plus clair!

 

Merci :) Je vais tester ça

 

Le "fibaro:sleep(60*1000)", à  quoi sert-il?

Partager ce message


Lien à poster
Partager sur d’autres sites

Ce script est une boucle infinie qui commence en ligne 9 et se termine en 22.

Le sleep correspond àune pause de 1mn. 1000 correspond à1 seconde.

Donc, toutes les minutes on regarde si c'est l'heure d'actionner le WP.

Partager ce message


Lien à poster
Partager sur d’autres sites

 

Il me semble que tu te lances dans des trucs très compliqués avec des settimeout et des fonctions etc ...

 

voilà  un truc tout simple qui allume selon tes conditions et qui éteint sans condition, donc même si tu allumes manuellement.

--[[
%% autostart
%% properties
%% globals
--]]
 

While true do
	
  local currentDate = os.date("*t");
  local triggerTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min);

  if ((currentDate.wday == 1 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and triggerTime == "09:59")then
    fibaro:call(10, "turnOn");
  end

  if (triggerTime == "19:00") then
	  fibaro:call(10, "turnOff);
  end
fibaro:sleep(60*1000);
end

Bonjour à  vous!

 

Je pense qu'il y a un petit soucis sur le script, il coupe et redémarre assez souvent :

post-5961-0-60451000-1451395784_thumb.png

Partager ce message


Lien à poster
Partager sur d’autres sites

Est-ce que ce code est bon?

--[[
%% autostart
%% properties
39 power
%% globals
--]]

while true do
  local currentDate = os.date("*t");
  local triggerTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min);
 
  if ((currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and triggerTime == "09:50")
    then
    fibaro:call(39, "turnOn");
  end
 
  if (( tonumber(fibaro:getValue(39, "power")) < 10 )
      and
      ((triggerTime >= "19:10") or (triggerTime <= "8:00))
      then
	  fibaro:call(39, "turnOff");
  end
fibaro:sleep(60*1000);
end

Merci :)

Partager ce message


Lien à poster
Partager sur d’autres sites

×