Aller au contenu

Messages recommandés

Posté(e)

Je fais appel à  vous pour connaitre comment vous organisez au mieux les scènes dans l'interface de la HC2

 

>> au fur et à  mesure...les scènes s'accumulent et il devient fastidieux maintenant pour moi de chercher en "scrollant" ma scène recherchée.

De plus, à  part les déplacer une à  une, on ne peux pas les classer par ordre alphabétique...

 

Depuis le départ, dés que je créer une scène, je ne lui attribue pas de "pièce", je laisse en "non assigné" .

Je ne vois pas l'utilité de les mettre dans les "vrais" pièces (salon, garage...etc ) , celles-ci regroupant modules et VD.

 

 

Alors, juste pour savoir, vous êtes dans le même cas que moi ?

 

Avez vous une astuce pour organiser au mieux notre interface ?

Posté(e)

Personnellement je me suis créé 2 pièces virtuelles :

Pièce Pilotage : checking de la maison, modes chauffage, modes maison, simulateur de présence, fonction dodo (lancée avant de me coucher)

Pièces Outils : tous les MV pour les annonces sur squeezebox karotz, relevé des sondes Oregon, MV pour éteindre toutes les lampes, test du niveau des piles, l'activation des push de surveillance, etc .

Ça me permet de classer les scènes qui ne sont pas directement liées àde vraies pièces.

Posté(e)

Perso, j'ai tout laisser en bas. Mais je suis entrain de tout reprendre pour optimiser et en enlever

Envoyé de mon SM-P600 en utilisant Tapatalk

Posté(e)

J'en ai 47 ...

Pourtant, j'essaye "d'épurer" au max...mais mes limites en Lua m’empêche d'optimiser au max.

 

Rien que pour gérer mon alarme, j'ai 9 scènes différentes...

Posté(e)

Ha oui quand même lol.

Je suis que sur qu'il y aurait moyen de bien réduire tout sa.

Envoyé de mon SM-P600 en utilisant Tapatalk

Posté(e)

J'en suis sur aussi...

En fait, pour l'alarme, je me suis laisser-allé...

Au lieu de reprendre du départ, à  chaque fois j'ai greffé une nouvelle scène via des variables "de peur" de perdre enormement de temps a recoder le tout...

Solution de facilité, mais maintenant je me retrouve avec le double de scènes que la "normal"

 

Si je te montre mes scènes juste pour l'alarme, tu vas rire...ou pas.

Posté(e)

Bon courage à  ceux qui vont lire jusqu'au bout !

 

 

 

>>Allez, on commence avec un VD pour gérer le mode d'alarme :

 

post-2-0-99863200-1400019123_thumb.jpg

 

Avec :

 

Selection mode Jour :

--[[
%% properties
%% globals
VAR
SMS
pushover
--]]
local Sensor = {133, 25, 26, 103, 28, 31, 132, 229, 228, 29, 30, 131};
local localisation = {"Porte escalier","Porte salon 1","Porte entrée","Porte salon 2","Fenetre garage","Fenetre buanderie","Fenetre cuisine","Porte de garage","Chambre grise","Fenetre chambre","velux","Fenetre salon 3"};

for i=1, #Sensor do
if (tonumber(fibaro:getValue(Sensor[i], "value")) > 0)

then

message = ("Attention, Activation alarme Jour impossible : Porte ouverte : "..localisation[i].." - Merci ")
fibaro:sleep(2*1000)
fibaro:setGlobal("pushover", message);
fibaro:call(198, "pressButton", "1"); --pushover lua
fibaro:sleep(2*1000)
fibaro:debug("Porte ouverte: " .. localisation[i]);
fibaro:call(7, "pressButton", "4");


elseif

(tonumber(fibaro:getValue(Sensor[i], "value")) == 0)
then

fibaro:setGlobal("VAR",1)
    
end
end

Sélection mode Nuit ( ce qui change: pas les mêmes portes contrôlées et VAR=2 ) :

--[[
%% properties
%% globals
VAR
pushover
--]]
local Sensor = {133, 25, 26, 103, 28, 31, 132, 229};
local localisation = {"Porte escalier","Porte salon 1","Porte entrée","Porte salon 2","Fenetre garage","Fenetre buanderie","Fenetre cuisine","Porte de garage"};

for i=1, #Sensor do
if (tonumber(fibaro:getValue(Sensor[i], "value")) > 0)

then

message = ("Attention, Activation alarme Nuit impossible : Porte ouverte : "..localisation[i].." - Merci ")
fibaro:sleep(2*1000)
fibaro:setGlobal("pushover", message);
fibaro:call(198, "pressButton", "1"); --pushover lua
fibaro:sleep(2*1000)
fibaro:debug("Porte ouverte: " .. localisation[i]);
fibaro:call(7, "pressButton", "4");

end

if

(tonumber(fibaro:getValue(Sensor[i], "value")) == 0)
then

fibaro:setGlobal("VAR",2)

    
end
end

Sélection mode Silence ( idem au mode jour, avec juste la valeur VAR=5 ) :

--[[
%% properties
%% globals
VAR
SMS
pushover
--]]
local Sensor = {133, 25, 26, 103, 28, 31, 132, 229, 228, 29, 30, 131};
local localisation = {"Porte escalier","Porte salon 1","Porte entrée","Porte salon 2","Fenetre garage","Fenetre buanderie","Fenetre cuisine","Porte de garage","Chambre grise","Fenetre chambre","velux","Fenetre salon 3"};

for i=1, #Sensor do
if (tonumber(fibaro:getValue(Sensor[i], "value")) > 0)

then

message = ("Attention, Activation alarme Silence impossible : Porte ouverte : "..localisation[i].." - Merci ")
fibaro:sleep(2*1000)
fibaro:setGlobal("pushover", message);
fibaro:call(198, "pressButton", "1"); --pushover lua
fibaro:sleep(2*1000)
fibaro:debug("Porte ouverte: " .. localisation[i]);

end

if

(tonumber(fibaro:getValue(Sensor[i], "value")) == 0)
then
fibaro:call(7, "setProperty", "ui.Label1.value", " SILENCE ON " )
fibaro:call(185, "setProperty", "ui.Label1.value", " SILENCE ON " )
fibaro:setGlobal("VAR",5)
    
end
end

Mode arret alarme :

--[[
%% properties
%% globals
VAR
ETATALARME
pushover
--]]

fibaro:setGlobal("VAR",0)
fibaro:setGlobal("ETATALARME",0)
fibaro:call(25, "setArmed", "0")--entrée
fibaro:call(26, "setArmed", "0")--salon 1
fibaro:call(228, "setArmed", "0")--chambre grise
fibaro:call(28, "setArmed", "0")--fenetre garage
fibaro:call(29, "setArmed", "0")--fenetre chambre
fibaro:call(30, "setArmed", "0")--velux
fibaro:call(31, "setArmed", "0")--buanderie
fibaro:call(133, "setArmed", "0")--escalier
fibaro:call(48, "setArmed", "0")--portail
fibaro:call(103, "setArmed", "0")--salon 2
fibaro:call(131, "setArmed", "0")--salon 3
fibaro:call(132, "setArmed", "0")--cuisine
fibaro:call(229, "setArmed", "0")--garage
fibaro:call(42, "turnOff")--sirene salon
fibaro:call(38, "turnOff")--sirene garage
fibaro:call(11, "turnOff")--lampes salon
fibaro:call(13, "turnOff")--rgbw
fibaro:call(122, "turnOff")--rgbw
fibaro:call(186, "turnOff")--rgbw
fibaro:call(184, "turnOff")--lampes bar
fibaro:call(43, "turnOff")--halogènes exterieure
fibaro:sleep(1000);
fibaro:setGlobal("pushover", "Alarme désactivée...Bienvenue !" );
fibaro:call(198, "pressButton", "2"); --pushover lua
fibaro:call(82, "pressButton", "2")--arret sirene exterieure
fibaro:call(138, "pressButton", "2");--ftp
fibaro:call(138, "pressButton", "4"); --ftp
fibaro:call(138, "pressButton", "6");--ftp
fibaro:call(7, "setProperty", "ui.Label1.value", " ARRET " )
fibaro:call(185, "setProperty", "ui.Label1.value", " ARRET " )

>> On passe aux scènes :

 

Vérification portes fermées mode jour et VAR=4 et j'arme :

 
--[[
%% properties
229 value
25 value
26 value
103 value
131 value
133 value
132 value
228 value
29 value
30 value
28 value
31 value
%% globals
VAR
pushover
--]]

local startSource = fibaro:getSourceTrigger(); 
if fibaro:countScenes() > 1 then 
   fibaro:abort()
end
if 
 ( tonumber(fibaro:getValue(229, "value")) == 0  and  tonumber(fibaro:getValue(25, "value")) == 0  and  tonumber(fibaro:getValue(26, "value")) == 0  and  tonumber(fibaro:getValue(103, "value")) == 0  and  tonumber(fibaro:getValue(131, "value")) == 0  and  tonumber(fibaro:getValue(133, "value")) == 0  and  tonumber(fibaro:getValue(132, "value")) == 0  and  tonumber(fibaro:getValue(228, "value")) == 0  and  tonumber(fibaro:getValue(29, "value")) == 0  and  tonumber(fibaro:getValue(30, "value")) == 0  and  tonumber(fibaro:getValue(28, "value")) == 0  and  tonumber(fibaro:getValue(31, "value")) == 0  and  tonumber(fibaro:getGlobalValue("VAR")) == tonumber("1") )

then
fibaro:call(229, "setArmed", "1");
fibaro:call(133, "setArmed", "1");
fibaro:call(25, "setArmed", "1");
fibaro:call(26, "setArmed", "1");
fibaro:call(103, "setArmed", "1");
fibaro:call(131, "setArmed", "1");
fibaro:call(132, "setArmed", "1");
fibaro:call(228, "setArmed", "1");
fibaro:call(29, "setArmed", "1");
fibaro:call(30, "setArmed", "1");
fibaro:call(28, "setArmed", "1");
fibaro:call(31, "setArmed", "1");
fibaro:setGlobal("JOURNUIT", "0");
fibaro:setGlobal("ETATALARME", "1");
fibaro:setGlobal("VAR", "3");
fibaro:call(42, "setValue", "30");
fibaro:call(38, "setValue", "30");
fibaro:call(122, "turnOff");
fibaro:call(11, "turnOff");
fibaro:call(13, "turnOff");
fibaro:call(184, "turnOff");
fibaro:call(186, "turnOff");
fibaro:call(43, "turnOff");
    fibaro:call(225, "turnOff");
    fibaro:call(7, "setProperty", "ui.Label1.value", " JOUR ON " )
    fibaro:call(185, "setProperty", "ui.Label1.value", " JOUR ON " )
    fibaro:sleep(2*1000)
    fibaro:setGlobal("pushover", "Alarme Jour activée..." );
    fibaro:call(198, "pressButton", "3");  --pushover lua 
    fibaro:sleep(2*1000)
    fibaro:setGlobal("VAR", "3");
end
 

Vérification portes fermées nuit et VAR=4 :

--[[
%% properties
%% globals
VAR
pushover
--]]

local startSource = fibaro:getSourceTrigger();
if fibaro:countScenes() > 1 then
fibaro:abort()
end
if (
( tonumber(fibaro:getValue(229, "value")) == 0 and tonumber(fibaro:getValue(25, "value")) == 0 and tonumber(fibaro:getValue(26, "value")) == 0 and tonumber(fibaro:getValue(103, "value")) == 0 and tonumber(fibaro:getValue(132, "value")) == 0 and tonumber(fibaro:getValue(28, "value")) == 0 and tonumber(fibaro:getValue(31, "value")) == 0 and tonumber(fibaro:getGlobalValue("VAR")) == tonumber("2") )
or
startSource["type"] == "other")
then
    
    fibaro:call(122, "turnOff");
    fibaro:call(11, "turnOff");
    fibaro:call(13, "turnOff");
    fibaro:call(184, "turnOff");
    fibaro:call(186, "turnOff");
    fibaro:call(43, "turnOff");
fibaro:call(225, "turnOff");
    fibaro:setGlobal("ETATALARME", "1");
    fibaro:setGlobal("VAR", "4");
    fibaro:setGlobal("JOURNUIT", "1");
    fibaro:call(42, "setValue", "30");
    fibaro:call(38, "setValue", "30");
fibaro:call(7, "setProperty", "ui.Label1.value", " NUIT ON " )
fibaro:call(185, "setProperty", "ui.Label1.value", " NUIT ON " )
fibaro:sleep(2*1000)
fibaro:setGlobal("pushover", "Alarme nuit activée...Bonne nuit !" );
fibaro:call(198, "pressButton", "2"); --pushover lua
fibaro:sleep(4*1000)

end

Vérification portes férmées mode silence ( idem mode jour sauf VAR=6 ) :

--[[
%% properties
229 value
133 value
25 value
26 value
103 value
131 value
132 value
228 value
29 value
30 value
28 value
31 value
%% globals
VAR
--]]

local startSource = fibaro:getSourceTrigger();
if fibaro:countScenes() > 1 then
fibaro:abort()
end
if (
( tonumber(fibaro:getValue(229, "value")) == 0 and tonumber(fibaro:getValue(133, "value")) == 0 and tonumber(fibaro:getValue(25, "value")) == 0 and tonumber(fibaro:getValue(26, "value")) == 0 and tonumber(fibaro:getValue(103, "value")) == 0 and tonumber(fibaro:getValue(131, "value")) == 0 and tonumber(fibaro:getValue(132, "value")) == 0 and tonumber(fibaro:getValue(228, "value")) == 0 and tonumber(fibaro:getValue(29, "value")) == 0 and tonumber(fibaro:getValue(30, "value")) == 0 and tonumber(fibaro:getValue(28, "value")) == 0 and tonumber(fibaro:getValue(31, "value")) == 0 )
and
( tonumber(fibaro:getGlobalValue("VAR")) == tonumber("5") )
or
startSource["type"] == "other"
)
then
    
    fibaro:setGlobal("ETATALARME", "1");
    fibaro:setGlobal("VAR", "6");
    fibaro:setGlobal("JOURNUIT", "1");
    fibaro:call(42, "setValue", "30");
    fibaro:call(38, "setValue", "30");
fibaro:sleep(2*1000)
fibaro:setGlobal("pushover", "Alarme Silence activée..." );
fibaro:call(198, "pressButton", "2"); --pushover lua
fibaro:sleep(2*1000)
end

Ensuite si intrusion jour :

--[[
%% properties
133 value
25 value
26 value
228 value
28 value
29 value
30 value
31 value
132 value
103 value
131 value
229 value
133 armed
25 armed
26 armed
228 armed
28 armed
29 armed
30 armed
31 armed
132 armed
103 armed
131 armed
229 armed
%% globals
VAR
--]]

local startSource = fibaro:getSourceTrigger();
if (
( (tonumber(fibaro:getValue(133, "value")) > 0 and tonumber(fibaro:getValue(133, "armed")) > 0) or (tonumber(fibaro:getValue(25, "value")) > 0 and tonumber(fibaro:getValue(25, "armed")) > 0) or (tonumber(fibaro:getValue(26, "value")) > 0 and tonumber(fibaro:getValue(26, "armed")) > 0) or (tonumber(fibaro:getValue(228, "value")) > 0 and tonumber(fibaro:getValue(228, "armed")) > 0) or (tonumber(fibaro:getValue(28, "value")) > 0 and tonumber(fibaro:getValue(28, "armed")) > 0) or (tonumber(fibaro:getValue(29, "value")) > 0 and tonumber(fibaro:getValue(29, "armed")) > 0) or (tonumber(fibaro:getValue(30, "value")) > 0 and tonumber(fibaro:getValue(30, "armed")) > 0) or (tonumber(fibaro:getValue(31, "value")) > 0 and tonumber(fibaro:getValue(31, "armed")) > 0) or (tonumber(fibaro:getValue(132, "value")) > 0 and tonumber(fibaro:getValue(132, "armed")) > 0) or (tonumber(fibaro:getValue(103, "value")) > 0 and tonumber(fibaro:getValue(103, "armed")) > 0) or (tonumber(fibaro:getValue(131, "value")) > 0 and tonumber(fibaro:getValue(131, "armed")) > 0) or (tonumber(fibaro:getValue(229, "value")) > 0 and tonumber(fibaro:getValue(229, "armed")) > 0) )
and
( tonumber(fibaro:getGlobalValue("VAR")) == tonumber("3") )
or
startSource["type"] == "other"
)
then
fibaro:call(138, "pressButton", "1");--ftp
fibaro:call(138, "pressButton", "3"); --ftp
fibaro:call(138, "pressButton", "5");--ftp
    fibaro:call(13, "startProgram", "5") --PROGRAMME RGBW salon
fibaro:call(122, "startProgram", "5") --PROGRAMME RGBW automatismes
fibaro:call(186, "startProgram", "5") --PROGRAMME RGBW cuisine
fibaro:call(11, "turnOn");--lampe salon
    fibaro:call(42, "turnOn");--sirene salon
    fibaro:call(38, "turnOn");--sirene garage
fibaro:call(82, "pressButton", "1");--sirene exterieure on
fibaro:call(5, "pressButton", "5");--pushover
fibaro:call(24, "pressButton", "10");--sms
fibaro:sleep(180000);--pause 3minutes
    fibaro:call(122, "turnOff");--PROGRAMME RGBW automatismes
    fibaro:call(13, "turnOff");--PROGRAMME RGBW salon
fibaro:call(186, "turnOff"); --PROGRAMME RGBW cuisine
fibaro:call(11, "turnOff");--lampe salon
fibaro:call(42, "turnOff");--sirene salon
fibaro:call(38, "turnOff");--sirene garage
fibaro:call(82, "pressButton", "2");--sirene exterieure off
    
    
end

Si intrusion nuit :

--[[
%% properties
133 value
25 value
26 value
103 value
229 value
132 value
28 value
31 value
133 armed
25 armed
26 armed
103 armed
229 armed
28 armed
31 armed
131 armed
%% globals

--]]

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

local startSource = fibaro:getSourceTrigger();
if (
( (tonumber(fibaro:getValue(133, "value")) > 0 and tonumber(fibaro:getValue(133, "armed")) == 0) or (tonumber(fibaro:getValue(25, "value")) > 0 and tonumber(fibaro:getValue(25, "armed")) == 0) or (tonumber(fibaro:getValue(26, "value")) > 0 and tonumber(fibaro:getValue(26, "armed")) == 0) or (tonumber(fibaro:getValue(103, "value")) > 0 and tonumber(fibaro:getValue(103, "armed")) == 0) or (tonumber(fibaro:getValue(28, "value")) > 0 and tonumber(fibaro:getValue(28, "armed")) == 0) or (tonumber(fibaro:getValue(31, "value")) > 0 and tonumber(fibaro:getValue(31, "armed")) == 0) or (tonumber(fibaro:getValue(229, "value")) > 0 and tonumber(fibaro:getValue(229, "armed")) == 0) or (tonumber(fibaro:getValue(132, "value")) > 0 and tonumber(fibaro:getValue(132, "armed")) == 0) )
and
( tonumber(fibaro:getGlobalValue("VAR")) == tonumber("4") )
or
startSource["type"] == "other"
)
then
    fibaro:call(5, "pressButton", "8");--pushover intrusion
fibaro:call(138, "pressButton", "1");--ftp
fibaro:call(138, "pressButton", "3"); --ftp
fibaro:call(138, "pressButton", "5");--ftp
    fibaro:call(11, "turnOn");--lampes salon
    fibaro:call(13, "startProgram", "5") --PROGRAMME RGBW salon
fibaro:call(122, "startProgram", "5") --PROGRAMME RGBW automatismes
fibaro:call(186, "startProgram", "5") --PROGRAMME RGBW cuisine
    fibaro:call(43, "turnOn");--halogenes ext
fibaro:call(184, "setValue", "100");--lampes bar
    fibaro:sleep(120000);
    fibaro:call(11, "turnOff");--lampes salon
    fibaro:call(13, "turnOff");--rbbw salon
    fibaro:call(43, "turnOff");--halogenes ext
fibaro:call(122, "turnOff");--rgbw automatismes
fibaro:call(186, "turnOff");--rgbw cuisine
fibaro:call(184, "turnOff");--lampes bar
end

si intrusion silence :

--[[
%% properties
133 value
25 value
26 value
228 value
28 value
29 value
30 value
31 value
132 value
103 value
131 value
229 value
133 armed
25 armed
26 armed
228 armed
28 armed
29 armed
30 armed
31 armed
132 armed
103 armed
131 armed
229 armed
%% globals
VAR
--]]

local startSource = fibaro:getSourceTrigger();
if (
( (tonumber(fibaro:getValue(133, "value")) > 0 and tonumber(fibaro:getValue(133, "armed")) == 0) or (tonumber(fibaro:getValue(25, "value")) > 0 and tonumber(fibaro:getValue(25, "armed")) == 0) or (tonumber(fibaro:getValue(26, "value")) > 0 and tonumber(fibaro:getValue(26, "armed")) == 0) or (tonumber(fibaro:getValue(228, "value")) > 0 and tonumber(fibaro:getValue(228, "armed")) == 0) or (tonumber(fibaro:getValue(28, "value")) > 0 and tonumber(fibaro:getValue(28, "armed")) == 0) or (tonumber(fibaro:getValue(29, "value")) > 0 and tonumber(fibaro:getValue(29, "armed")) == 0) or (tonumber(fibaro:getValue(30, "value")) > 0 and tonumber(fibaro:getValue(30, "armed")) == 0) or (tonumber(fibaro:getValue(31, "value")) > 0 and tonumber(fibaro:getValue(31, "armed")) == 0) or (tonumber(fibaro:getValue(132, "value")) > 0 and tonumber(fibaro:getValue(132, "armed")) == 0) or (tonumber(fibaro:getValue(103, "value")) > 0 and tonumber(fibaro:getValue(103, "armed")) == 0) or (tonumber(fibaro:getValue(131, "value")) > 0 and tonumber(fibaro:getValue(131, "armed")) == 0) or (tonumber(fibaro:getValue(229, "value")) > 0 and tonumber(fibaro:getValue(229, "armed")) == 0) )
and
( tonumber(fibaro:getGlobalValue("VAR")) == tonumber("6") )
or
startSource["type"] == "other"
)
then
fibaro:call(138, "pressButton", "1");--ftp
fibaro:call(138, "pressButton", "3"); --ftp
fibaro:call(138, "pressButton", "5");--ftp
    fibaro:call(13, "startProgram", "5") --PROGRAMME RGBW salon
fibaro:call(122, "startProgram", "5") --PROGRAMME RGBW automatismes
fibaro:call(186, "startProgram", "5") --PROGRAMME RGBW cuisine
fibaro:call(11, "turnOn");--lampe salon
fibaro:call(43, "turnOn");--halogènes exterieure
    --fibaro:call(42, "turnOn");--sirene salon
    --fibaro:call(38, "turnOn");--sirene garage
--fibaro:call(82, "pressButton", "1");--sirene exterieure on
fibaro:call(5, "pressButton", "11");--pushover
fibaro:call(24, "pressButton", "10");--sms
fibaro:sleep(180000);--pause 3minutes
    fibaro:call(122, "turnOff");--PROGRAMME RGBW automatismes
    fibaro:call(13, "turnOff");--PROGRAMME RGBW salon
fibaro:call(186, "turnOff"); --PROGRAMME RGBW cuisine
fibaro:call(11, "turnOff");--lampe salon
fibaro:call(43, "turnOff");--halogènes exterieure
--fibaro:call(42, "turnOff");--sirene salon
--fibaro:call(38, "turnOff");--sirene garage
--fibaro:call(82, "pressButton", "2");--sirene exterieure off
    
    
end

scene pour desactiver automatiquement l'alarme à  l'ouverture de la porte de garage :

--[[
%% properties
207 value
%% globals
ETATALARME
--]]

local startSource = fibaro:getSourceTrigger();
if (
( tonumber(fibaro:getValue(207, "value")) > 0 and tonumber(fibaro:getGlobalValue("ETATALARME")) == tonumber("1") )
or
startSource["type"] == "other"
)
then
    fibaro:call(7, "pressButton", "4");
end

Passage automatique jour vers silence :

--[[
%% autostart
%% properties
%% globals
VAR
LEVERCOUCHER
--]]

local startSource = fibaro:getSourceTrigger();
if (
( tonumber(fibaro:getGlobalValue("VAR")) == tonumber("3") )
and
( tonumber(fibaro:getGlobalValue("LEVERCOUCHER")) == tonumber("1") )
or
startSource["type"] == "other"
)
then
    fibaro:call(7, "pressButton", "3");
end

passage auto silence vers jour :

--[[
%% autostart
%% properties
%% globals
VAR
LEVERCOUCHER
--]]

local startSource = fibaro:getSourceTrigger();
if (
( tonumber(fibaro:getGlobalValue("VAR")) == tonumber("6") )
and
( tonumber(fibaro:getGlobalValue("LEVERCOUCHER")) == tonumber("0") )
or
startSource["type"] == "other"
)
then
    fibaro:call(7, "pressButton", "1");
end

Bon Shad, je sens que tu te marres !...

Posté(e)

Non je ne me marres pas, je me tiens la bouche pour pas me manger le bureau.

Franchement t'abuse complet.

En 1heure de boulot tu peux:

- Regrouper les scènes 1 à  3, avec des if tu choisis automatiquement quel mode.

- La scène 4 et 11, je pense que je regrouperais

- les scènes 5 à  7, on peut les regroupés avec des conditions en fonction du mode et var

- les scènes 8 à  10, tu peux les regrouper avec comme conditions le mod, mais attention faut bien codé pour t'y retrouver

- les scènes 12 et 13 on regroupe.

 

En fait plus que je regarde, et plus que je compacterais encore plus.

Les scènes de sélection, d'activation et vérification ensemble et je fonctionnerais avec des fonctions.

Donc en t'y prenant bien et étape par étape, je pense que tu peux compacter facilement, proprement et logiquement le tout en 3 scène:

1- Sélection du mode, vérification et activation

2- Alarme

3- Désactivation

 

Pour finir je suis même étonné que ton alarme fonctionne :D

Dans ta scène 4 pour Mode arret alarme, ta scène s'active en cas de changement de variables, et ce qui me fait peur c'est que tu change ta variable sur 0 ???

Donc en tout logique, au moment ou tu changes la valeur de ta variable, en toute logique ta scène devrait la désactivé dans la foulé.

Posté(e)

...Je me fais pas d'illusion et connaissais déjà  ta réponse...

Merci quand même pour ton analyse... ;)

 

C'est clair, qu'il faudrait tout reprendre afin d'organiser au mieux et supprimer des scènes.

 Ce qu'il y a, c'est que tout fonctionne parfaitement ( même si c'est tiré par les cheveux )

 

Au départ, j'aurais du pensé aux futures fonctions; j'ai commencé au départ avec juste le mode jour, puis ensuite j'ai fais un mode nuit puis aprés silence.Et au lieu de tout refaire, ben j'ai mis des "rustines" avec mes variables...

 

Il faut vraiment que je prenne un (long) moment pour améliorer l'ensemble

 

//de 1 à  4, c'est des boutons donc même si mon "Var" est mal placé, pas de conflits

Posté(e)

RIen de t’empêche de copier ton code dans notepad pour pas perdre tes scènes ;).

Sinon c'est très bien penser le virtual device.

Posté(e)

Moi j'avais rien promis... Donc je me marre comme un fou.

Mon conseil serait de :

1. Reprendre la programmation de chaque scénario car on peut les diminuer de 50%. Permettant une meilleure lisibilité.

2. Si les scénarios Jour, Nuit et Silence ne sont appelés que depuis ton module ont peu en faire plus qu'un.

Sinon comme Shad, je suis bluffé par deux trucs : la quantité de travail que tu as fait et... que cela fonctionne :-)

Plus sérieusement tu as réussi ce que tu voulais alors... Bravo.

Posté(e)

Exemple de scénario qui regroupe les scénarios détection intrusion jours, nuit et silence

 

--[[
%% properties
133 value
25 value
26 value
228 value
28 value
29 value
30 value
31 value
132 value
103 value
131 value
229 value

%% globals
--]]
 
-- ======================================================
-- Regroupement des scénarios de détections d'intrusion
-- jours (var=3), nuit (var=4) et silence (var=6)
-- ======================================================
 
local startSource = fibaro:getSourceTrigger();

local alarmed = startSource["type"] == "other"
 
if (startSource['type'] == 'property') then 
	local id_declencheur = trigger['deviceID']
	alarmed = tonumber(fibaro:getValue(id_declencheur, "value")) > 0 and tonumber(fibaro:getValue(id_declencheur, "armed")) > 0
end

local mode = tonumber(fibaro:getGlobalValue("VAR"))

if (alarmed and (mode == 3 or mode == 4 or mode == 6)) then

	fibaro:call(138, "pressButton", "1");--ftp
	fibaro:call(138, "pressButton", "3"); --ftp
	fibaro:call(138, "pressButton", "5");--ftp
	fibaro:call(13, "startProgram", "5") --PROGRAMME RGBW salon
	fibaro:call(122, "startProgram", "5") --PROGRAMME RGBW automatismes
	fibaro:call(186, "startProgram", "5") --PROGRAMME RGBW cuisine
	fibaro:call(11, "turnOn");--lampe salon

	if (mode == 3) then
		-- mode jour
		fibaro:call(42, "turnOn");--sirene salon
		fibaro:call(38, "turnOn");--sirene garage
		fibaro:call(82, "pressButton", "1");--sirene exterieure on
		fibaro:call(5, "pressButton", "5");--pushover
		fibaro:call(24, "pressButton", "10");--sms
		fibaro:sleep(180000);--pause 3minutes
		fibaro:call(42, "turnOff");--sirene salon
		fibaro:call(38, "turnOff");--sirene garage
		fibaro:call(82, "pressButton", "2");--sirene exterieure off

	elseif (mode ==  4) then
		-- mode nuit
		fibaro:call(5, "pressButton", "8");--pushover intrusion
		fibaro:call(43, "turnOn");--halogenes ext
		fibaro:call(184, "setValue", "100");--lampes bar
		fibaro:sleep(120000);
		fibaro:call(43, "turnOff");--halogenes ext
		fibaro:call(184, "turnOff");--lampes bar
	
	else
		-- mode silence		
		fibaro:call(43, "turnOn");--halogènes exterieure
		fibaro:call(5, "pressButton", "11");--pushover
		fibaro:call(24, "pressButton", "10");--sms
		fibaro:sleep(180000);--pause 3minutes
		fibaro:call(43, "turnOff");--halogènes exterieure
	
	end

	fibaro:call(13, "turnOff");--PROGRAMME RGBW salon
	fibaro:call(11, "turnOff");--lampe salon
	fibaro:call(122, "turnOff");--PROGRAMME RGBW automatismes
	fibaro:call(186, "turnOff"); --PROGRAMME RGBW cuisine

end
Soit une transformation de 3 scénario (environ 180 lignes de code) en 1 scénario de 80 lignes regroupant tout au même endroit ce qui rend la maintenance beaucoup plus simple.

Regroupement des 3 scénarios permettant de vérifier l'état des portes, de les armer et d'activer le bon mode (jours, nuit, silence)

 

--[[
%% properties
%% globals
VAR
--]]

-- =============================================
-- Regroupement des scénarios vérifications des portes
-- armés les portes et basculer le mode (VAR)
-- =============================================
local startSource = fibaro:getSourceTrigger();

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

local portes = {229, 133, 25,26,103, 131, 132, 228, 29, 30, 28, 31}
local tout_ferme = true

-- Vérification des portes fermées
for i = 1, #portes do
	if (tonumber(fibaro:getValue(#portes[i], "value")) > 0) then
		tout_ferme = false
	end
end

local mode = tonumber(fibaro:getGlobalValue("VAR"))

-- si toutes les portes sont fermées ou que le scénario a été lancé manuellement
if (( tout_ferme and (mode == 1 or mode == 2 or mode == 5) ) or startSource["type"] == "other") then

	-- On arme les portes
	for i = 1, #portes do
		fibaro:call(#portes[i], "setArmed", "1")
	end

	fibaro:setGlobal("ETATALARME", "1");
	fibaro:call(42, "setValue", "30");
	fibaro:call(38, "setValue", "30");	
	
	if (mode == 1) then
		-- mode jour
		fibaro:setGlobal("JOURNUIT", "0");
		fibaro:setGlobal("VAR", "3");
		fibaro:call(122, "turnOff");
		fibaro:call(11, "turnOff");
		fibaro:call(13, "turnOff");
		fibaro:call(184, "turnOff");
		fibaro:call(186, "turnOff");
		fibaro:call(43, "turnOff");
		fibaro:call(225, "turnOff");
		fibaro:call(7, "setProperty", "ui.Label1.value", " JOUR ON " )
		fibaro:call(185, "setProperty", "ui.Label1.value", " JOUR ON " )
		fibaro:sleep(2*1000)
		fibaro:setGlobal("pushover", "Alarme Jour activée..." );
		fibaro:call(198, "pressButton", "3");  --pushover lua 
		fibaro:sleep(2*1000)
		fibaro:setGlobal("VAR", "3");		
	elseif (mode == 2) then
		-- mode nuit
		fibaro:call(122, "turnOff");
		fibaro:call(11, "turnOff");
		fibaro:call(13, "turnOff");
		fibaro:call(184, "turnOff");
		fibaro:call(186, "turnOff");
		fibaro:call(43, "turnOff");
		fibaro:call(225, "turnOff");
		fibaro:setGlobal("VAR", "4");
		fibaro:setGlobal("JOURNUIT", "1");
		fibaro:call(7, "setProperty", "ui.Label1.value", " NUIT ON " )
		fibaro:call(185, "setProperty", "ui.Label1.value", " NUIT ON " )
		fibaro:sleep(2*1000)
		fibaro:setGlobal("pushover", "Alarme nuit activée...Bonne nuit !" );
		fibaro:call(198, "pressButton", "2"); --pushover lua
		fibaro:sleep(4*1000)
	else
		-- mode silence
		fibaro:setGlobal("VAR", "6");
		fibaro:setGlobal("JOURNUIT", "1");
		fibaro:sleep(2*1000)
		fibaro:setGlobal("pushover", "Alarme Silence activée..." );
		fibaro:call(198, "pressButton", "2"); --pushover lua
		fibaro:sleep(2*1000)
	end
	
end
A nouveau 3 scénarios (env. 180 lignes) transformé en 1 scénario d'environ 80 lignes plus facilement maintenable.

On pourrait continuer ainsi un petit bout de temps, mais il est tard :)

Bien évidemment, ces scénarios ont été crée à  l'aveugle (dans le bloc note) ils peuvent donc contenir des erreurs et n'ont pas été testés.

Posté(e)

Tes 3 derniers scénarios (gestion automatique) peuvent être remplacés par celui-ci

 

--[[
%% properties
207 value
%% globals
ETATALARME
VAR
LEVERCOUCHER
--]]
 
local startSource = fibaro:getSourceTrigger();

if (startSource['type'] == 'property') then
	-- Ouverture de la porte de garage
	if (tonumber(fibaro:getValue(207, "value")) > 0 and tonumber(fibaro:getGlobalValue("ETATALARME")) == 1) ) then
	    fibaro:call(7, "pressButton", "4");
	end

else	
	-- Modification d'une variable globale
	if (tonumber(fibaro:getGlobalValue("VAR")) == 3 and tonumber(fibaro:getGlobalValue("LEVERCOUCHER")) == "1") then
		fibaro:call(7, "pressButton", "3");
	end

	if (tonumber(fibaro:getGlobalValue("VAR")) == 6 and tonumber(fibaro:getGlobalValue("LEVERCOUCHER")) == "0") then
		fibaro:call(7, "pressButton", "1");
	end
	
end

Allez dodo.

En est donc à  9 scénarios remplacés par 3 soit environ 65-70% de gain.

Posté(e)

Alors là , un grand merci Steven, tu vas me faire gagner un temps fou !  :60:

 

Bon, et si t'as plus rien à  te mettre sous la dent, il me reste encore une trentaine de scènes à  optimiser! ...  :rolleyes:  :P

Posté(e)

Toi, t'es vraiment un dingue !  :D

 

En fait, ce que tu m'a fait au dessus et super, j'ai pas tésté, mais y'a des trucs que t'as peut être pas vu :

 

> J'arme les Id qu'en mode jour et silence et pas en mode nuit.

 

> de plus je ne contrôle pas les mêmes portes en jour et en nuit

 

> Ou sont passées mes pushs avec ID sur les portes restées ouvertes lors de la demande jour ou nuit ,

 

:rolleyes:

Posté(e)

> J'arme les Id qu'en mode jour et silence et pas en mode nuit.

Pffft, suffit de copier le code au bon endroit ;)

 

> de plus je ne contrôle pas les mêmes portes en jour et en nuit

En plus, il est pénible le gars.

 

> Ou sont passées mes pushs avec ID sur les portes restées ouvertes lors de la demande jour ou nuit ,

Ca c'est tes 3 premiers scénarios mais je les ai pas encore regardé :)

Je vais essayer de jeter un oeil plus attentif demain, là , je suis un peu HS.

  • Upvote 1
Posté(e)

pour ma part ,j ai crée un "étage" que j ai nommé "local technique"

avec différente pièce :

par exemple :

électricité: pour les scènes de l eco device 

meteo:pour les scènes meteo 

alarme etc...

Posté(e)

Bonne idée le fait de creer un étage supplémentaire.

 

Je pense faire:

 

étage > Administration

 

             Pièces > Energie

                           Sécurité

                            Eclairage

                            Ouvrants

                            Météo

                            Divers

  • Upvote 1
×
×
  • Créer...