Rem's Posté(e) le 26 avril 2015 Signaler Posté(e) le 26 avril 2015 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 ....
Rem's Posté(e) le 26 avril 2015 Auteur Signaler Posté(e) le 26 avril 2015 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.
Berale64 Posté(e) le 26 avril 2015 Signaler Posté(e) le 26 avril 2015 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.
Steven Posté(e) le 26 avril 2015 Signaler Posté(e) le 26 avril 2015 Il y a un bug ouvert chez Fibaro sur le countScene il me semble.
jojo Posté(e) le 26 avril 2015 Signaler Posté(e) le 26 avril 2015 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.
mprinfo Posté(e) le 26 avril 2015 Signaler Posté(e) le 26 avril 2015 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
mprinfo Posté(e) le 26 avril 2015 Signaler Posté(e) le 26 avril 2015 C'est quoi GEA ? Steven a répondu a la question il est humble il ne fait pas d'auto pub
Steven Posté(e) le 26 avril 2015 Signaler Posté(e) le 26 avril 2015 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" 2
mprinfo Posté(e) le 26 avril 2015 Signaler Posté(e) le 26 avril 2015 Moi le LUA j'adore ça n'utilise que quelques ko de ma très veille mémoire
jojo Posté(e) le 26 avril 2015 Signaler Posté(e) le 26 avril 2015 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
mprinfo Posté(e) le 26 avril 2015 Signaler Posté(e) le 26 avril 2015 @jojo si on veut ce script on peut le réduire considérable en lua avec des tables
Rem's Posté(e) le 26 avril 2015 Auteur Signaler Posté(e) le 26 avril 2015 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 ...
mprinfo Posté(e) le 26 avril 2015 Signaler Posté(e) le 26 avril 2015 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
Messages recommandés