Aller au contenu

Arrêter puis redémarrer une scéne depuis une autre scène


kabutop

Messages recommandés

Salut,

 

J'ai des leds sur un module rgbw qui sont allumées par une première scène si :

* il fait nuit

* la télé est allumée

 

Je viens de faire une deuxième scène pour allumer les leds sur un programme défini en cas de détection de mouvement. Je souhaite que cette scène coupe la 1ère (car programme de led différent) et rallume après un délais. Visiblement, j'arrive à  couper la scène avec fibaro:killScenes mais je n'arrive pas à  la réactiver avec fibaro:startScene. Pour que ma 1ère scène refonctionne, je dois aller sur celle-ci et cliquer sur "enregistrer" pour qu'elle fonctionne de nouveau.

 

Une idée ? Voilà  la scène qui coupe la 1ère :

--[[
%% autostart
%% properties
94 value
94 armed
%% globals
--]]

local detecteur = tonumber(fibaro:getValue(94,'value'));

if (fibaro:countScenes()>1) then
  fibaro:abort();
end

if (detecteur > 0) then
    fibaro:killScenes(4);
    fibaro:call(14, "turnOn");
    fibaro:call(14, "startProgram", "1");
    fibaro:call(14, "setValue", "100");
    fibaro:sleep(10000);
    fibaro:startScene(4);
end

Merci d'avance,

A+ ;)

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Merci pour ta réponse.

Alors je viens de rajouter un debug  : la scène 4 ne redémarre pas. J'ai rajouté également un debug dans mon if de la scène présentée ici, je ne passe pas x fois dans le if. Donc c'est vraiment que la scène 4 ne redémarre pas. Quand je réenregistre la scène 4, sans y faire de modifs, hop ca refonctionne !

 

Bizarre...

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Yep je suis en version stable : 3.580.

Voilà  l'autre scène :

--[[
%% autostart
%% properties
Etat_TV
Jour_Nuit
%% globals 
--]] 

local sourceTrigger = fibaro:getSourceTrigger();

if (fibaro:countScenes()>1) then
  fibaro:debug('Kill second scene!');
  fibaro:abort();
end

if (sourceTrigger["type"] == "autostart") then
    while true do
        local currentProgramID = tonumber(fibaro:getValue(14, "currentProgramID"));
        if ( ( fibaro:getGlobalValue("Etat_TV") == "ON" ) and ( fibaro:getGlobalValue("Jour_Nuit") == "Nuit" ) and (currentProgramID ~= 3) )
            then 
            fibaro:call(14, "turnOn");
            fibaro:call(14, "startProgram", "3");
            fibaro:call(14, "setValue", "100");
        end

        if ( fibaro:getGlobalValue("Etat_TV") == "OFF" )
            then
            fibaro:call(14, "turnOff");
        end
        
        if ( fibaro:getGlobalValue("Jour_Nuit") == "Jour" )
            then
            fibaro:call(14, "turnOff");
        end
        fibaro:sleep(60*1000);
    end
end

Merci pour le coup de main,

A+

Lien vers le commentaire
Partager sur d’autres sites

Je pense que ta scène ne redémarre pas a cause du

if (sourceTrigger["type"] == "autostart") then

La condition autostart est il me semble vérifiée uniquement si la scène est mise àjour ou lorsque le service du HC2 redémarré.

Tu peux essayer en enlevant cette condition ?

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...