Aller au contenu

Tuto Lua Débutant


DjBen65

Recommended Posts

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
Lien vers le commentaire
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!

Lien vers le commentaire
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.

Lien vers le commentaire
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

Lien vers le commentaire
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

Lien vers le commentaire
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

Lien vers le commentaire
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

Lien vers le commentaire
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
Lien vers le commentaire
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?

Lien vers le commentaire
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

Lien vers le commentaire
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 :)

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...