Aller au contenu

Recommended Posts

Bonjour je cherche a créer une scène en Lua pour allumer et éteindre a une certaine heure de la journée ou de la nuit mon wall plug sur lequel est branché un chargeur. J'ai bien réussi a créer une scène en utilisant les blocs graphiques, mais du coup j'ai dû  faire 2 scènes pour le wall-plug, un pour allumer a une certaine heure et l'autre pour éteindre a une certaine heure. Et c'est pour cela que je cherche a créer une seul scène en LUA qui remplacera les 2 scènes en blocs graphiques. Etant novice en la matière et j'aurais besoin de votre aide, et tous ce que j'ai pu trouver pour le moment c'est d'allumer et d'éteindre le wall-plug en ecrivant Fibaro:call(id, "turnOn") et fibaro:call(id, "turnOff") par contre les timers je ne trouve pas...En tous cas merci d'avance

Modifié par Jérôme14100

Partager ce message


Lien à poster
Partager sur d’autres sites

Si tu vas dans la section des tutos pour hc2 et hcl, tu trouveras des exemples de scène en mode block qui répondent à ton problème.

Une seule scène mode block suffit pour allumer et eteindre.

Tu la convertis ensuite en lua et en analysant le résultat tu apprendras beaucoup.

 

Je pense que ce te sera plus utile que de te donner la solution.

Partager ce message


Lien à poster
Partager sur d’autres sites

Ok merci, chose que je ne savais pas est que je viens d'apprendre, c'est de convertir une scènes en bloc graphique en LUA. Il me reste plus qu'a chercher la suite de la demande.

Modifié par Jérôme14100

Partager ce message


Lien à poster
Partager sur d’autres sites

Après la lecture de beaucoup de tuto de ce forum, j'ai enfin trouvé. j'ai créer une seul scène pour mon wall-plug au lieu de deux scènes a l'origine en utilisant les blocs graphiques. Encore merci berale24 de m'avoir mis sur la voie. Donc voici ce que donne ma scène converti en LUA :

 

 

--[[
%% autostart
%% properties
%% weather
%% events
%% globals
--]]

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 == 4 or currentDate.wday == 6) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "03:00") )
)
then
  fibaro:call(41, "turnOn");
  setTimeout(function()
    fibaro:call(41, "turnOff");
  end, 7200000)
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(41, "turnOn");
  setTimeout(function()
    fibaro:call(41, "turnOff");
  end, 7200000)
end

end
 

Modifié par Jérôme14100

Partager ce message


Lien à poster
Partager sur d’autres sites

Sinon, tu peux aussi regarder GEA. 

Le code converti des scenes bloc n'est pas toujours très propre ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour pepite, peu tu me dire en quelques mots ce qu'apporte le GEA par rapport a une scène en bloc graphique ou en LUA, avant de lire tous ce qui peut etre lu sur le forum sur le GEA

Partager ce message


Lien à poster
Partager sur d’autres sites

GEA te permet de tout centraliser dans une seule scène, en quelques lignes de code simplifié tu peux tout faire (presque tout) sans connaitre le LUA.

 

J'ai commence avec GEA, je n'ai jamais trop aimé les scenes bloc, GEA me parlait plus, mais c'est propre à chacun.

 

Modifié par pepite

Partager ce message


Lien à poster
Partager sur d’autres sites

Essayes ça :

--[[
%% autostart 
--]]
-- Définit les jours pour lesquels tu veux la charge du Lundi au Dimanche :  1=charge, 0=Pas de charge
local jours={1,1,0,1,0,1,0};

-- Boucle infinie
while true do

  -- Test si le jour correspond
  if(jours[tonumber(os.date('%u'))]==1) then

    --Test l'heure de début
    if(tonumber(os.date('%H%M'))==0300) then
        fibaro:call(41, "turnOn");
        fibaro:debug('TurnOn');
    end	
	
    --Test l'heure de fin
    if(tonumber(os.date('%H%M'))==0500) then
        fibaro:call(41, "turnOff");
        fibaro:debug('TurnOff');
    end
  end

  -- Attend une minute avant de retester
  fibaro:sleep(60*1000);
end

 

Modifié par Indyana

Partager ce message


Lien à poster
Partager sur d’autres sites

×