Moicphil Posté(e) le 13 mai 2014 Signaler Posté(e) le 13 mai 2014 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 ?
JossAlf Posté(e) le 13 mai 2014 Signaler Posté(e) le 13 mai 2014 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.
Steven Posté(e) le 13 mai 2014 Signaler Posté(e) le 13 mai 2014 J'en ai plus qu'une dizaine donc c'est vite gérer.
Did Posté(e) le 13 mai 2014 Signaler Posté(e) le 13 mai 2014 J'ai aussi créer une pièce Scénarios avec 25 scènes àl'intérieur.
Shad Posté(e) le 13 mai 2014 Signaler Posté(e) le 13 mai 2014 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
Moicphil Posté(e) le 13 mai 2014 Auteur Signaler Posté(e) le 13 mai 2014 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...
Shad Posté(e) le 13 mai 2014 Signaler Posté(e) le 13 mai 2014 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
Moicphil Posté(e) le 13 mai 2014 Auteur Signaler Posté(e) le 13 mai 2014 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.
Shad Posté(e) le 13 mai 2014 Signaler Posté(e) le 13 mai 2014 Si je ris promis que tu ne le saura pas Envoyé de mon SM-P600 en utilisant Tapatalk
Moicphil Posté(e) le 13 mai 2014 Auteur Signaler Posté(e) le 13 mai 2014 Bon courage à ceux qui vont lire jusqu'au bout ! >>Allez, on commence avec un VD pour gérer le mode d'alarme : 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 !...
Shad Posté(e) le 13 mai 2014 Signaler Posté(e) le 13 mai 2014 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 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é.
Moicphil Posté(e) le 13 mai 2014 Auteur Signaler Posté(e) le 13 mai 2014 ...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
Shad Posté(e) le 14 mai 2014 Signaler Posté(e) le 14 mai 2014 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.
Steven Posté(e) le 14 mai 2014 Signaler Posté(e) le 14 mai 2014 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.
Steven Posté(e) le 14 mai 2014 Signaler Posté(e) le 14 mai 2014 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.
Shad Posté(e) le 14 mai 2014 Signaler Posté(e) le 14 mai 2014 Bravo steven, j'avais pas la motive de le faire avec tout mon boulot
Steven Posté(e) le 15 mai 2014 Signaler Posté(e) le 15 mai 2014 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.
Moicphil Posté(e) le 15 mai 2014 Auteur Signaler Posté(e) le 15 mai 2014 Alors là , un grand merci Steven, tu vas me faire gagner un temps fou ! Bon, et si t'as plus rien à te mettre sous la dent, il me reste encore une trentaine de scènes à optimiser! ...
Steven Posté(e) le 15 mai 2014 Signaler Posté(e) le 15 mai 2014 J'ai plus rien àme mettre sous la dent
Moicphil Posté(e) le 15 mai 2014 Auteur Signaler Posté(e) le 15 mai 2014 Toi, t'es vraiment un dingue ! 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 ,
Steven Posté(e) le 15 mai 2014 Signaler Posté(e) le 15 mai 2014 > 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 nuitEn 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. 1
lionel Posté(e) le 16 mai 2014 Signaler Posté(e) le 16 mai 2014 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...
JossAlf Posté(e) le 16 mai 2014 Signaler Posté(e) le 16 mai 2014 Pareils mes deux pièces "Pilotage" et "Outils" sont dans l'étage "Tour de contrôle" ... 1
Moicphil Posté(e) le 16 mai 2014 Auteur Signaler Posté(e) le 16 mai 2014 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 1
Did Posté(e) le 16 mai 2014 Signaler Posté(e) le 16 mai 2014 Et pas besoin de permis de construire ni d'autorisation de travaux.
Messages recommandés