Aller au contenu
Rem's

Pb de Script lua avec vaiable ...

Recommended Posts

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

 

Imp ecran.jpg

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par henri-allauch
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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"


 
  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

×