Rem's Posté(e) le 1 février 2017 Signaler Posté(e) le 1 février 2017 Bonjour à tous,$$J'ai un petit soucis avec ce bout de code : En effet, après le "else", la scene reprends, et m'etteinds ou allume la TV toute les heures. Pouvez vous m'aider à trouver mon erreur ou à mieux coder .... --[[ %% properties %% weather %% events %% globals Reveil --]] local startSource = fibaro:getSourceTrigger(); if ( ( fibaro:getGlobalValue("Reveil") == "Semaine" ) or startSource["type"] == "other" ) then local heure = os.date("%R"); date = os.date("%d/%m/%Y"); local Message = string.format("Lancement du %s a %s", date, heure) fibaro:debug(Message) fibaro:debug("Début de script") -- 7h00 -- 7h00 : Allumage réveil fibaro:call(498, "setValue", "15") -- Spots couloir fibaro:call(482, "turnOn") -- Etoile noel fibaro:call(592, "turnOn") -- Plante 1 fibaro:call(593, "turnOn") -- Plante 2 fibaro:sleep(5*60*1000) -- 7h05 fibaro:call(588, "setValue", "15") -- Spots salon fibaro:startScene(370); fibaro:sleep(10*1000); end if ( fibaro:getGlobalValue("TV") == "On" ) then fibaro:call(56, "pressButton", "9") -- Fr 5 fibaro:debug("Cas° 1, TV déjà allumée") else fibaro:debug("Cas N° 2, TV éteinte") fibaro:call(56, "pressButton", "1") -- Freebox power fibaro:sleep(10*1000); fibaro:call(56, "pressButton", "9") fibaro:sleep(3*1000) fibaro:call(56, "pressButton", "9") -- Fr 5 end fibaro:sleep(2*1000) fibaro:call(570, "turnOn") -- Arbre noel fibaro:call(482, "turnOn") -- Vase noel fibaro:sleep(20*60*1000) -- 7h25 fibaro:call(466, "setValue", "30") -- Suspension Julia fibaro:call(473, "setValue", "30") -- Suspension Parents fibaro:sleep(10*60*1000) -- 7h35 fibaro:call(574, "setValue", "70") -- Spots Sdb -- fibaro:call(408, "pressButton", "15") -- Sonos Sdb -- fibaro:sleep(10*1000); -- fibaro:call(408, "setSlider", "9", "9") -- fibaro:sleep(10*1000); -- fibaro:call(408, "pressButton", "1") fibaro:sleep(25*60*1000) -- 7h50 fibaro:startScene(370); fibaro:sleep(10*1000); if ( fibaro:getGlobalValue("TV") == "On" ) then fibaro:call(56, "pressButton", "1") -- Power fibaro:debug("Cas° 1, TV déjà allumée") else fibaro:debug("Cas N° 2, TV éteinte") end fibaro:call(459, "setValue", "80") -- Spots hall fibaro:call(444, "turnOff") -- Pipistrelle fibaro:call(592, "turnOff") -- Plante 1 fibaro:call(593, "turnOff") -- Plante 2 fibaro:call(482, "turnOff") -- Etoile noel fibaro:sleep(15*60*1000) -- 8h20 -- fibaro:call(408, "pressButton", "15") -- Sonos Sdb off fibaro:call(466, "turnOff") -- Suspension Julia fibaro:call(473, "turnOff") -- Suspension parents fibaro:call(570, "turnOff") -- Arbre noel fibaro:call(568, "turnOff") -- Vase noel fibaro:call(574, "turnOff") -- Spots Sdb fibaro:call(459, "turnOff") -- Spots hall fibaro:setGlobal("Reveil", "Off"); fibaro:abort() fibaro:sleep(5*1000); D'avance merci pour votre aide
pepite Posté(e) le 1 février 2017 Signaler Posté(e) le 1 février 2017 Bonsoir, Tu l'as en double non ? if ( fibaro:getGlobalValue("TV") == "On" ) then fibaro:call(56, "pressButton", "9") -- Fr 5 fibaro:debug("Cas° 1, TV déjà allumée") else fibaro:debug("Cas N° 2, TV éteinte") fibaro:call(56, "pressButton", "1") -- Freebox power fibaro:sleep(10*1000); fibaro:call(56, "pressButton", "9") fibaro:sleep(3*1000) fibaro:call(56, "pressButton", "9") -- Fr 5 end if ( fibaro:getGlobalValue("TV") == "On" ) then fibaro:call(56, "pressButton", "1") -- Power fibaro:debug("Cas° 1, TV déjà allumée") else fibaro:debug("Cas N° 2, TV éteinte") end
henri-allauch Posté(e) le 1 février 2017 Signaler Posté(e) le 1 février 2017 (modifié) Si je ne me suis pas trompé dans la remise en forme de ton scrip, ton PB est normal .... --[[ %% properties %% weather %% events %% globals Reveil --]] local startSource = fibaro:getSourceTrigger(); if (( fibaro:getGlobalValue("Reveil") == "Semaine" ) or startSource["type"] == "other") then local heure = os.date("%R"); date = os.date("%d/%m/%Y"); local Message = string.format("Lancement du %s a %s", date, heure) fibaro:debug(Message) fibaro:debug("Début de script") -- 7h00 -- 7h00 : Allumage réveil fibaro:call(498, "setValue", "15") -- Spots couloir fibaro:call(482, "turnOn") -- Etoile noel fibaro:call(592, "turnOn") -- Plante 1 fibaro:call(593, "turnOn") -- Plante 2 fibaro:sleep(5*60*1000) -- 7h05 fibaro:call(588, "setValue", "15") -- Spots salon fibaro:startScene(370); fibaro:sleep(10*1000); end if ( fibaro:getGlobalValue("TV") == "On" ) then fibaro:call(56, "pressButton", "9") -- Fr 5 fibaro:debug("Cas° 1, TV déjà allumée") else fibaro:debug("Cas N° 2, TV éteinte") fibaro:call(56, "pressButton", "1") -- Freebox power fibaro:sleep(10*1000); fibaro:call(56, "pressButton", "9") fibaro:sleep(3*1000) fibaro:call(56, "pressButton", "9") -- Fr 5 end fibaro:sleep(2*1000) fibaro:call(570, "turnOn") -- Arbre noel fibaro:call(482, "turnOn") -- Vase noel fibaro:sleep(20*60*1000) -- 7h25 fibaro:call(466, "setValue", "30") -- Suspension Julia fibaro:call(473, "setValue", "30") -- Suspension Parents fibaro:sleep(10*60*1000) -- 7h35 fibaro:call(574, "setValue", "70") -- Spots Sdb fibaro:sleep(25*60*1000) -- 7h50 fibaro:startScene(370); fibaro:sleep(10*1000); if ( fibaro:getGlobalValue("TV") == "On" ) then fibaro:call(56, "pressButton", "1") -- Power fibaro:debug("Cas° 1, TV déjà allumée") else fibaro:debug("Cas N° 2, TV éteinte") end fibaro:call(459, "setValue", "80") -- Spots hall fibaro:call(444, "turnOff") -- Pipistrelle fibaro:call(592, "turnOff") -- Plante 1 fibaro:call(593, "turnOff") -- Plante 2 fibaro:call(482, "turnOff") -- Etoile noel fibaro:sleep(15*60*1000) -- 8h20 fibaro:call(466, "turnOff") -- Suspension Julia fibaro:call(473, "turnOff") -- Suspension parents fibaro:call(570, "turnOff") -- Arbre noel fibaro:call(568, "turnOff") -- Vase noel fibaro:call(574, "turnOff") -- Spots Sdb fibaro:call(459, "turnOff") -- Spots hall fibaro:setGlobal("Reveil", "Off"); fibaro:abort() fibaro:sleep(5*1000); Ta scène se reveille sur la modification de la VG Global ( ton trigger ) En fin de scène tu écris ta VG Réveil = OFF ===> une autre occurence de la scene démarre, il n'y a pas le message Lancement ..... car Réveil != de Semaine, mais dessous le script continue ... et rebelote Ecritue de la VG, une autre Occurence .. Il te faudrait ( peut être) au début Ignorer le trigger si Réveil == Off mais je n'ai pas la logique complet de ce que tu souhaite Faire Modifié le 1 février 2017 par henri-allauch 1
Rem's Posté(e) le 7 février 2017 Auteur Signaler Posté(e) le 7 février 2017 Merci Henry pour ta réponse. C'est une scène qui se déroule le matin. Elle se déclenche avec une variable "Réveil" qui passe à ON à 7h. En fait le 1er "If" me sert à vérifier si la TV est allumé, et en fonction, juste un appui sur fr 5 (VD correspondant au zapping sur Fr 5). Le 2ème, même principe, si la TV est allumé ou pas, ce coup ci, pour l'éteindre (car si elle était déjà éteinte, un appui sur le VD correspondant à la touche power de la Freebox me remettrait en marche la TV). Pour ne rien te cacher je n'ai pas tout compris à ton explication, je vais m'y pencher plus sérieusement. En revanche, en tâtonnant, j'ai modifié mon script en rajoutant la condition "CountScene>1" then Abort ... cela semble ne plus reprendre la lecture (c'est aussi pour cette même raison que je termine mon script par Figaro: Abort (espérant que la lecture ne reprenne pas en cours de route). Merci pour ton aide, j'essaye d'apprendre à écrire des trucs un peu plus complexe (pour mon niveau), grace à l'aide que je trouve sur ce forum.
henri-allauch Posté(e) le 7 février 2017 Signaler Posté(e) le 7 février 2017 Ta scène s'execute sur trigger variable Réveil qui passe à ON à 7H00 ---> OK Ta scène s'execute --> OK MAIS à la fin de ta scène, tu met la variable Réveil à OFF Cette action à pour effet de lancer ta scène une deuxième fois (puisque la scène est Triggée sur celle variable ) on saute le premier if puisque VG différente de "Semaine" et on déroule la suite Donc une deuxième scène s'exécute, qui se termine aussi par la modification de la variable réveil à OFF Et ainsi de suite la deuxième scène se termine et une troisième est lancée --- > sans fin. Mettre "CountScene>1" then Abort ... effectivement ca corrige le PB puisque la deuxième scène sera rejetée. Tu peux aussi en début de ton scrip prévoir de ne pas exécuter la scène quand : fibaro:getGlobalValue("Réveil") =="Off" 2
Messages recommandés