Aller au contenu

Messages recommandés

Posté(e)

Bonjour à  tous,

 

Depuis quelques temps (une quinzaine ...), mes scènes du matin ou du couché du soleil demarre de façon très aléatoire.

 

Avant lorsque je les bidouillaient, pourquoi pas .... mais cela fait un certain temps que je ne les aient pas modifiées.

Je parle au pluriel car :

- Tous les jours de la semaine à  6h45.

- Le WE à  7h25 (elle n'a d'ailleur pas fonctionnée ce matin).

- Couché du soleil tous les jours (1 scène dite mode été et une mode hiver).

 

Bref, je ne sais pas ce qui se passe ...

Je mets une de ces scènes, à  titre d'exemple (pas à  prendre), pour mieux comprendre, peut être ... ?

--[[
%% autostart
%% properties
%% globals
--]]
fibaro:sleep(10*1000)
local sourceTrigger = fibaro:getSourceTrigger();
if (sourceTrigger["type"] == "autostart") then
while true do
    
    if fibaro:countScenes() > 1 then -- si la scène est lancée plus d'une fois alors
fibaro:abort() -- arrêt de cette lecture du script
end -- fin de la condition


local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( ((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) == "07:25") )
)
then
	-- 6h45 : Allumage réveil
        fibaro:debug("Début de script");
    fibaro:call(41, "turnOn");
    fibaro:call(90, "turnOn");
    fibaro:call(26, "setB", "100");
       fibaro:sleep(3*60*1000); -- 7h30    
	fibaro:call(56, "pressButton", "1"); -- Freebox power
       fibaro:sleep(10*1000);
    fibaro:call(56, "pressButton", "15");
       fibaro:sleep(3*1000);
    fibaro:call(56, "pressButton", "10"); -- BFM TV
       fibaro:sleep(5*60*1000);
    fibaro:call(319, "pressButton", "8"); -- Volet salon
      fibaro:debug("Ouverture volet salon");
      fibaro:sleep(10*60*1000); -- 8h00
    fibaro:call(315, "turnOn");
    fibaro:call(316, "turnOn");
    fibaro:call(70, "turnOn");
    fibaro:call(105, "pressButton", "6"); -- Disney channel
    fibaro:debug("Lancement de Disney channel");
   fibaro:call(318, "pressButton", "4"); -- Volet chambre
      fibaro:sleep(3*1000);
   fibaro:call(319, "pressButton", "8"); -- Volet salon
      fibaro:debug("Ouverture volet chambre");
	  fibaro:sleep(40*60*1000); -- 8h40
    fibaro:call(318, "pressButton", "4"); -- Volet chambre
      fibaro:debug("Ouverture volet chambre"); 
    fibaro:call(315, "turnOff");
    fibaro:call(316, "turnOn");
    fibaro:call(112, "turnOff");
      fibaro:sleep(10*60*1000); -- 8h50  
    fibaro:call(9, "turnOff");
    fibaro:call(41, "turnOff");
    fibaro:call(26, "turnOff");
    fibaro:call(70, "turnOff")
    fibaro:call(90, "turnOff")
           
      fibaro:debug("Fin de script"); -- 8h10
  end

fibaro:sleep(60*1000);
end
else

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
startSource["type"] == "other"
)
then
	-- 6h45 : Allumage réveil
        fibaro:debug("Début de script");
    fibaro:call(41, "turnOn");
    fibaro:call(90, "turnOn");
    fibaro:call(26, "setB", "100");
       fibaro:sleep(3*60*1000); -- 7h30    
	fibaro:call(56, "pressButton", "1"); -- Freebox power
       fibaro:sleep(10*1000);
    fibaro:call(56, "pressButton", "15");
       fibaro:sleep(3*1000);
    fibaro:call(56, "pressButton", "10"); -- BFM TV
       fibaro:sleep(5*60*1000);
    fibaro:call(319, "pressButton", "8"); -- Volet salon
      fibaro:debug("Ouverture volet salon");
      fibaro:sleep(10*60*1000); -- 8h00
    fibaro:call(315, "turnOn");
    fibaro:call(316, "turnOn");
    fibaro:call(70, "turnOn");
    fibaro:call(105, "pressButton", "6"); -- Disney channel
    fibaro:debug("Lancement de Disney channel");
   fibaro:call(318, "pressButton", "4"); -- Volet chambre
      fibaro:sleep(3*1000);
   fibaro:call(319, "pressButton", "8"); -- Volet salon
      fibaro:debug("Ouverture volet chambre");
	  fibaro:sleep(40*60*1000); -- 8h40
    fibaro:call(318, "pressButton", "4"); -- Volet chambre
      fibaro:debug("Ouverture volet chambre"); 
    fibaro:call(315, "turnOff");
    fibaro:call(316, "turnOn");
    fibaro:call(112, "turnOff");
      fibaro:sleep(10*60*1000); -- 8h50  
    fibaro:call(9, "turnOff");
    fibaro:call(41, "turnOff");
    fibaro:call(26, "turnOff");
    fibaro:call(70, "turnOff")
    fibaro:call(90, "turnOff")
           
      fibaro:debug("Fin de script"); -- 8h10
  end
  end

Merci d'avance de votre aide ....

Posté(e)

Autre point de détail, lorsque de click une 2ème fois sur "exécuter" cette scène se lance une 2ème fois, bien qu'il y ait le bout de code "countScene" ...

Une idée ...?

 

D'avance merci pour votre aide.

Posté(e)

Dans la deuxième partie de ton script (sourcetrigger == other) je ne vois pas de test sur le nombre de scènes.

Quand tu click sur éxécuter c'est par làque tu passes.

Posté(e)

je suis surpris que Steven ne t'ai pas proposé d'utiliser GEA, ce serait parfait pour ce que tu veux faire, beaucoup plus court et beaucoup plus lisible.

Posté(e)

essaie cela pour voir

if fibaro:countScenes() ~= 1 then -- si la scène est lancée plus d'une fois alors
      fibaro:abort() -- arrêt de cette lecture du script
end

je préfère différents de 1 car cela prend tout les cas de figure

si tu mets >1 cela ne prend pas en compte ce qui est inférieur a 1 dans ce cas c'est pas très grave

Quoique si il y a un bug cela pourrai peut être éviter le probléme

Cela pourrait d'interesser : http://www.domotique-fibaro.fr/index.php/topic/4218-sunrisehour-sunsethour-osdate-et-variable-jour-nuit/

 

Par contre fais comme cela

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

if fibaro:countScenes() ~= 1 then -- si la scène est lancée plus d'une fois alors
   fibaro:abort() -- arrêt de cette lecture du script
end -- fin de la condition

fibaro:sleep(10*1000)
local sourceTrigger = fibaro:getSourceTrigger();
if (sourceTrigger["type"] == "autostart") then
while true do
 
--if fibaro:countScenes() > 1 then -- si la scène est lancée plus d'une fois alors
--   fibaro:abort() -- arrêt de cette lecture du script
--end -- fin de la condition

Il vaut mieux arrêter la scéne tout de suite si différent de 1

Posté(e)

GEA n'est pas la réponse à  tout et encore moins à  ceux qui veulent apprendre le LUA.

 

C'est uniquement un fois qu'on connait LUA qu'on peut dire : "Quel m.... je vais pas me prendre la tête avec ça, j'installe GEA"  :)

  • Upvote 2
Posté(e)

effectivement, des bases en LUA sont très utiles pour GEA.

 

GEA n'est pas la réponse à  TOUT, mais dans ce cas précis, je pense que cela pourrait rendre l'ensemble plus lisible/compréhensible, surtout quand on a déjà  certaines bases en LUA

Posté(e)

Steven et Jojo ont raison,

C'est pour cela que je convertis les scènes bloc en lua ... pour mieux me familiariser (il y a même pas 2 ans, je ne savais même pas que cela existait ... je parle de la programmation, LOL).

J'essaye donc, mais je ne sais pas me débarrasser des doublons du code.

 

Quand à  mon histoire de démarrage de scène, je ne pense pas que cela vienne du code "countScene", c'est très aléatoire, et je n'appui manuellement que très rarement (enfin quand ca marche).

 

Merci de vos réponses, cela fait toujours avancer le schlimibilic ...

Posté(e)

Tu sais j ai debuté le lua fin janvier 2015 et je trouve cela super intéressant mais c'est vrai il faut du temps

Envoyé avec mon SmartPhone

×
×
  • Créer...