lolomail Posté(e) le 8 mars 2014 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shad Posté(e) le 8 mars 2014 Signaler Partager 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"); Lien vers le commentaire Partager sur d’autres sites More sharing options...
lolomail Posté(e) le 8 mars 2014 Auteur Signaler Partager Posté(e) le 8 mars 2014 Merci bon je vais tester sous peu Saleté de parenthèse Lien vers le commentaire Partager sur d’autres sites More sharing options...
lolomail Posté(e) le 9 mars 2014 Auteur Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shad Posté(e) le 9 mars 2014 Signaler Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
lolomail Posté(e) le 9 mars 2014 Auteur Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gregory Posté(e) le 10 mars 2014 Signaler Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés