Aller au contenu

Messages recommandés

Posté(e)

Bonjour à  tous,

Je suis plus que novice dans le langage LUA (d'ailleurs, la scène suivante est crée à  partir des blocks) et je ne comprends pas pourquoi elle ne se déclenche pas comme prévu à  6h45.

--[[
%% properties
49 valueMeter
%% globals
Reveil
--]]

local sourceTrigger = fibaro:getSourceTrigger();
if (sourceTrigger["type"] == "autostart") then
while true do

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( fibaro:getGlobalValue("Reveil") == "On" )
and
 ( ((currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "06:45") )
and
 ( tonumber(fibaro:getValue(49, "valueMeter")) <= 10 )
)
then
      -- Allumage
    fibaro:call(71, "turnOn");
    fibaro:call(41, "turnOn");
    fibaro:call(14, "turnOn");
      -- Lancement Freebox et BFM
    fibaro:call(56, "pressButton", "1");
	fibaro:sleep(8*000);
	fibaro:call(56, "pressButton", "14");
	fibaro:sleep(4*000);
	fibaro:call(56, "pressButton", "9");
      
      fibaro:debug("Lancement du réveil")
   
      fibaro:sleep(300*1000);
      
      -- Lancement de l'extinction des lumières
    fibaro:call(11, "turnOn");
    fibaro:sleep(600*1000);
    fibaro:call(11, "turnOff");
    fibaro:call(14, "turnOff");
    fibaro:call(41, "turnOff");
      fibaro:debug("Extinction salon");
    
      fibaro:sleep(10*1000);  
    
      -- Virtuel device pour basculer de BFM vers Disney Channel
    fibaro:call(58, "pressButton", "1");
      fibaro:debug("Bascule vers Disney channel");
          
    fibaro:sleep(1800*1000);
     
      -- Extinction lampe entrée à  8h, 1h 30 plus tard
	fibaro:call(71, "turnOff");
      fibaro:debug("Extinction entrée");
    end

fibaro:sleep(60*1000);
end
else

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( fibaro:getGlobalValue("Reveil") == "On" )
and
 ( (currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6) )
and
 ( tonumber(fibaro:getValue(49, "valueMeter")) <= 10 )
or
startSource["type"] == "other"
)
then
      -- Allumage
    fibaro:call(71, "turnOn");
    fibaro:call(41, "turnOn");
    fibaro:call(14, "turnOn");
      -- Lancement Freebox et BFM
    fibaro:call(56, "pressButton", "1");
	fibaro:sleep(8*000);
	fibaro:call(56, "pressButton", "14");
	fibaro:sleep(4*000);
	fibaro:call(56, "pressButton", "9");
      
      fibaro:debug("Lancement du réveil")
   
      fibaro:sleep(300*1000);
      
      -- Lancement de l'extinction des lumières
    fibaro:call(11, "turnOn");
    fibaro:sleep(600*1000);
    fibaro:call(11, "turnOff");
    fibaro:call(14, "turnOff");
    fibaro:call(41, "turnOff");
      fibaro:debug("Extinction salon");
    
      fibaro:sleep(10*1000);  
    
      -- Virtuel device pour basculer de BFM vers Disney Channel
    fibaro:call(58, "pressButton", "1");
      fibaro:debug("Bascule vers Disney channel");
          
    fibaro:sleep(1800*1000);
     
      -- Extinction lampe entrée à  8h, 1h 30 plus tard
	fibaro:call(71, "turnOff");
      fibaro:debug("Extinction entrée");
    end

    end

D'avance merci de votre aide et bonne journée. 

Posté(e)

allé, je tente de répondre, voir si j'ai capté les indication de super Shad  ;)

 

il ne manque pas autostart

  1. --[[
    %% properties
    49 valueMeter
    autostart
    %% globals
    Reveil
    --]]
    

oups, j'avais pas vu reveil  :wacko:

Posté(e)

perso j'aurais fait un petit module avec 2 bouton (genre reveil ON et OFF) avec un variable globale pour le reveil, (mais bon, je ne sais faire que ça correctement  :P ) avec ce type de code :

local time_reveil="06:45";

local minute = 60000 --in milliseconds
local currentDate = os.date("*t");
local currentTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min);

-------------------------------------------------------------------------------------------------------------
-- Reveil
-------------------------------------------------------------------------------------------------------------
if time_reveil == currentTime then

etc.
etc.

pour definir le weekend :

 

 

 

j'ai une petite variable weekend qui me sert pour mes scenes

 

variable "weekend" et "Jour_semaine"

Cette variable est définie dans un autre module dont voici le code :

(la variable "Jour_semaine" est une variable globale ayant 7 valeurs possibles : Lundi à  Dimanche dont on n'a pas besoin ici)

--[[
%% properties

%% globals
--]]

local minute = 60000 --in milliseconds
local currentDate = os.date("*t");
local currentTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min);

--wday=1 is Sunday
--wday=2 is Monday
--wday=3 is Tuesday
--wday=4 is Wednesday
--wday=5 is Thursday
--wday=6 is Friday
--wday=7 is Saturday

local weekend = fibaro:getGlobal("weekend");
local jour = fibaro:getGlobal("Jour_semaine");

if (currentDate.wday == 1 ) then
fibaro:setGlobal("weekend", 1);
fibaro:setGlobal("Jour_semaine", "Dimanche")
end
if (currentDate.wday == 2 ) then
fibaro:setGlobal("weekend", 0);
fibaro:setGlobal("Jour_semaine", "Lundi")
end
if (currentDate.wday == 3 ) then
fibaro:setGlobal("weekend", 0);
fibaro:setGlobal("Jour_semaine", "Mardi")
end
if (currentDate.wday == 4 ) then
fibaro:setGlobal("weekend", 0);
fibaro:setGlobal("Jour_semaine", "Mercredi")
end
if (currentDate.wday == 5 ) then
fibaro:setGlobal("weekend", 0);
fibaro:setGlobal("Jour_semaine", "Jeudi")
end
if (currentDate.wday == 6 ) then
fibaro:setGlobal("weekend", 0);
fibaro:setGlobal("Jour_semaine", "Vendredi")
end
if (currentDate.wday == 7 ) then
fibaro:setGlobal("weekend", 1);
fibaro:setGlobal("Jour_semaine", "Samedi")
end
Posté(e)

sinon essaie de rajouter des lignes du type au début :

fibaro:debug(string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min))
fibaro:debug(fibaro:getGlobalValue("Reveil"))

ainsi tu pourras voir ce qui cloche dans le déclenchement de la scène

Posté(e)

Salut! Dans tes triggers tu as 49 ValueMeter. Bon sachant que tu es passé par les blocs pour faire ton script ça doit être normal (mais si tu as changé quelque chose dans cet entête le problème peut venir de la...), mais perso j'ai pas encore vu de script qui utilisait cette propriété. Tu peux nous dire quel module déclenche cette scène (le module 49) parce que ca m’intéresse. Bien souvent je vois des scènes se déclenchant au changement d'une valeur de la propriété 'value' d'un module simplement.

Posté(e)

Déjàperso, je lancerais ta scene depuis le scheduler pour enlever un maximum de code car les variables je trouve pas sa fiable pour lancer une scene.

Pour l'id 49 je dirais que c'est un wall plug.

Posté(e)

Exact, l'idée de l'ID 49 qui est un wall plug branché sur la TV, c'est de ne pas déclencher la scène si la tv est allumée (en marche elle pompe 150 w), si je suis déjà  réveillé (par les info de BFM).

 

La condition réveil, me permet de pouvoir basculer sur Off, si je décide de laisser dormir Madame.

×
×
  • Créer...