lolomail Posté(e) le 8 mars 2014 Signaler Posté(e) le 8 mars 2014 Je cherche a faire un script pour le réveil le week-end, j'ai mis le code suivant en début de mon script mais quand j'appuie sur le BP de mon réveil, nada rien ne se passe. La variable Jour_Nuit était bien àJour -- Déclenchement scène par appuie bouton poussoir local startSource = fibaro:getSourceTrigger(); if ( tonumber(fibaro:getValue(170, "value")) > 0 ) then -- En week-end faire les actions suivantes -- Si jour if ( ( fibaro:getGlobalValue("Jour_Nuit") == "Jour" ) and ( (currentDate.wday == 1 or currentDate.wday == 7) ) ) then fibaro:debug("Séquence week-end jour"); Si je mets: -- Déclenchement scène par appuie bouton poussoir local startSource = fibaro:getSourceTrigger(); if ( tonumber(fibaro:getValue(170, "value")) > 0 ) then -- En week-end faire les actions suivantes -- Si jour if ( fibaro:getGlobalValue("Jour_Nuit") == "Jour" ) then fibaro:debug("Séquence week-end jour"); Cela fonctionne ou est la coquille? Merci
Shad Posté(e) le 8 mars 2014 Signaler Posté(e) le 8 mars 2014 -- Déclenchement scène par appuie bouton poussoir local startSource = fibaro:getSourceTrigger(); if ( tonumber(fibaro:getValue(170, "value")) > 0 ) then -- En week-end faire les actions suivantes -- Si jour if ( ( fibaro:getGlobalValue("Jour_Nuit") == "Jour" ) and ( (currentDate.wday == 1) or (currentDate.wday == 7) ) ) then fibaro:debug("Séquence week-end jour");
lolomail Posté(e) le 8 mars 2014 Auteur Signaler Posté(e) le 8 mars 2014 Merci bon je vais tester sous peu Saleté de parenthèse
lolomail Posté(e) le 9 mars 2014 Auteur Signaler Posté(e) le 9 mars 2014 Shad, en regardant d'autres scènes je me suis aperçu que je n'avais pas mis dans mon code: local currentDate = os.date("*t"); Je suppose qu'il faut le mettre correct? Cela donne: --[[ %% properties 170 value %% globals --]] -- Déclenchement scène par appuie bouton poussoir local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); if ( tonumber(fibaro:getValue(170, "value")) > 0 ) then -- En week-end faire les actions suivantes -- Si jour if ( ( fibaro:getGlobalValue("Jour_Nuit") == "Jour" ) and ( (currentDate.wday == 1) or (currentDate.wday == 7) ) ) then fibaro:debug("Séquence week-end jour"); J'ai bon? Je finis mes tests puis je posterais le code
Shad Posté(e) le 9 mars 2014 Signaler Posté(e) le 9 mars 2014 Euh, j'ai un trou de mémoire car je ne fais plus comme sa moi. Toute mes scènes sont démarrer par le scheduler.
lolomail Posté(e) le 9 mars 2014 Auteur Signaler Posté(e) le 9 mars 2014 Lol c'est aussi une solution, je verrais plus tard le scheduler . Mais oui il faut bien sinon cela ne marche pas: local currentDate = os.date("*t"); Voici le script que j'ai mis en place, j'ai viré les textes, N° ID et diverses structures pour donner des idées: --[[ %% properties ID-actionneur value %% globals --]] -- Déclenchement scène par appuie bouton poussoir local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); if ( tonumber(fibaro:getValue(ID-actionneur, "value")) > 0 ) then -- En semaine faire les actions suivantes -- Si jour if ( ( fibaro:getGlobalValue("Jour_Nuit") == "Jour" ) and ( (currentDate.wday == 2) or (currentDate.wday == 3) or (currentDate.wday == 4) or (currentDate.wday == 5) or (currentDate.wday == 6) ) ) then fibaro:debug("Séquence semaine jour"); -- Ouverture volets if ( tonumber(fibaro:getValue(ID_Volet1, "value")) == 0 ) then fibaro:call(ID_Volet1, "setValue", "100"); fibaro:debug("Message texte"); end if ( tonumber(fibaro:getValue(ID_Volet2, "value")) == 0 ) then fibaro:call(ID_Volet2, "setValue", "40"); fibaro:debug("Message texte"); end -- Controle volet et allumage lumières if ( tonumber(fibaro:getValue(ID_Volet1, "value")) > 0 ) then fibaro:call(ID_Lumière, "setValue", "60"); fibaro:debug("Message texte"); end -- Allumage télévision fibaro:call(ID_VDFreebox, "pressButton", "1"); fibaro:debug("Message texte") fibaro:sleep(20*1000); fibaro:call(ID_VDFreebox, "pressButton", "22"); fibaro:debug("Message texte") fibaro:sleep(20*1000); fibaro:call(ID_VDFreebox, "pressButton", "3"); fibaro:debug("Message texte") end -- Si nuit if ( ( fibaro:getGlobalValue("Jour_Nuit") == "Nuit" ) and ( (currentDate.wday == 2) or (currentDate.wday == 3) or (currentDate.wday == 4) or (currentDate.wday == 5) or (currentDate.wday == 6) ) ) then fibaro:debug("Séquence semaine nuit"); -- Controle volet et allumage lumières if ( tonumber(fibaro:getValue(ID_Volet1, "value")) == 0 ) then fibaro:call(ID_Lumière, "setValue", "60"); fibaro:debug("Message texte"); fibaro:call(ID_Lumière, "setValue", "100"); fibaro:debug("Message texte"); end -- Allumage télévision fibaro:call(ID_VDFreebox, "pressButton", "1"); fibaro:debug("Message texte") fibaro:sleep(20*1000); fibaro:call(ID_VDFreebox, "pressButton", "22"); fibaro:debug("Message texte") fibaro:sleep(20*1000); fibaro:call(ID_VDFreebox, "pressButton", "3"); fibaro:debug("Message texte") end -- En week-end faire les actions suivantes -- Si jour if ( ( fibaro:getGlobalValue("Jour_Nuit") == "Jour" ) and ( (currentDate.wday == 1) or (currentDate.wday == 7) ) ) then fibaro:debug("Séquence week-end jour"); -- Ouverture volets if ( tonumber(fibaro:getValue(ID_Volet1, "value")) == 0 ) then fibaro:call(ID_Volet1, "setValue", "40"); fibaro:debug("Message texte"); fibaro:sleep(40*1000); fibaro:call(ID_Volet1, "setValue", "60"); fibaro:debug("Message texte"); fibaro:sleep(30*1000); fibaro:call(ID_Volet1, "setValue", "100"); fibaro:debug("Message texte"); fibaro:sleep(30*1000); end if ( tonumber(fibaro:getValue(ID_Volet2, "value")) == 0 ) then fibaro:call(ID_Volet2, "setValue", "100"); fibaro:debug("Message texte"); end -- Controle volet et allumage lumières if ( tonumber(fibaro:getValue(ID_Volet1, "value")) > 0 ) then fibaro:call(ID_Lumière, "setValue", "60"); fibaro:debug("Message texte"); end -- Allumage télévision fibaro:call(ID_VDFreebox, "pressButton", "1"); fibaro:debug("Message texte") fibaro:sleep(20*1000); fibaro:call(ID_VDFreebox, "pressButton", "22"); fibaro:debug("Message texte") fibaro:sleep(20*1000); fibaro:call(ID_VDFreebox, "pressButton", "3"); fibaro:debug("Message texte") end -- Si nuit if ( ( fibaro:getGlobalValue("Jour_Nuit") == "Nuit" ) and ( (currentDate.wday == 1) or (currentDate.wday == 7) ) ) then fibaro:debug("Séquence week-end nuit"); -- Controle volet et allumage lumières if ( tonumber(fibaro:getValue(ID_Volet1, "value")) == 0 ) then fibaro:call(ID_Lumière, "setValue", "60"); fibaro:debug("Message texte"); fibaro:call(ID_Lumière, "setValue", "100"); fibaro:debug("Message texte"); end -- Allumage télévision fibaro:call(ID_VDFreebox, "pressButton", "1"); fibaro:debug("Message texte") fibaro:sleep(20*1000); fibaro:call(ID_VDFreebox, "pressButton", "22"); fibaro:debug("Message texte") fibaro:sleep(20*1000); fibaro:call(ID_VDFreebox, "pressButton", "3"); fibaro:debug("Message texte") end end Bon en gros, le script: - Est déclenché par le bouton poussoir de mon radio réveil, - Regarde si c'est le week-end ou la semaine - Regarde s'il fait jour ou nuit En fonction de cela il lance: - Pour la nuit, l'allumage des lumières après avoir vérifier que le volet n'est pas ouvert et l'allumage de la télé / freebox - Pour le jour, lance l'ouverture des volets, (progressive pour un, puis quelque temps après les autres), l'allumage d'une lumière à 60% et l'allumage de la télé / freebox Grosso modo avec la structure telle qu'elle on peut lancer d'autres actions, à vos idées, tout cela avec juste un appuie sur un bouton poussoir (voir avec l'alarme du réveil) On doit surement pouvoir simplifier optimiser, améliorer le truc, n'hésitez pas à commenter . Question, pour l'allumage de la freebox j'arrive juste à l'allumer mais les commandes OK + N° de chaine ne fonctionne pas même si dans le débug j'ai bien les messages. J'ai essayé avec et sans sleep cela ne change rien . Une idée du problème? 2
Gregory Posté(e) le 10 mars 2014 Signaler Posté(e) le 10 mars 2014 Bonjour, Lol c'est aussi une solution, je verrais plus tard le scheduler . Mais oui il faut bien sinon cela ne marche pas: local currentDate = os.date("*t"); Comme tu utilises la variable currentDate à la ligne 19 il faut absolument initialiser cette variable, c'est pour ça que ça ne marche pas sinon.
Messages recommandés