Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

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

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!

Posté(e)

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.

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

 

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?

Posté(e)

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.

Posté(e)

 

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

Posté(e)

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 :)

×
×
  • Créer...