-
Compteur de contenus
3 699 -
Inscription
-
Dernière visite
-
Jours gagnés
17
Tout ce qui a été posté par Sakkhho
-
j'ai déjà le code avec la table local precipitation = {} local max_day = previous_10days + 1 for i = 2, max_day do local response ,status, err = WGROUND:GET("/api/"..cle_api.."/history_".. os.date("%Y%m%d",os.time()-(i-1)*24*3600) .."/lang:FR/q/pws:"..pws..".json") local jsonTable = json.decode(response) fibaro:debug(os.date("%Y%m%d",os.time()-(i-1)*24*3600)) fibaro:debug(jsonTable.history.dailysummary[1].precipm) if tonumber(jsonTable.history.dailysummary[1].precipm) ~= nil then precipitation[i] = jsonTable.history.dailysummary[1].precipm end end rainyesterday = precipitation[2] rain5days = rainyesterday+precipitation[3]+precipitation[4]+precipitation[5]+precipitation[6] rain10days = rain5days+ precipitation[7]+precipitation[8]+precipitation[9]+precipitation[10]+precipitation[11] fibaro:debug(" Il est tombé " .. rainyesterday .. " mm hier") fibaro:debug(" Il est tombé " .. rain5days .. " mm depuis " .. previous_5days .. " jours") fibaro:debug(" Il est tombé " .. rain10days .. " mm depuis " .. previous_10days .. " jours") ça apport pas grand chose en l'état mais c'est déjà une première pierre. 2eme pierre la boucle de la nuit - pour remonter les valeurs d'un jour; for i = previous_10days, 2, -1 do precipitation[i]= precipitation[(i-1)] end par contre comment écrire cette table dans la variable ? cf ici ? Ma variable est PRECIPITATIONS un fibaro:setGlobal("PRECIPITATIONS", precipitation) donne [ERROR] 10:04:46: line :setGlobal (arg 3), expected 'string const &' got 'table' ca à pas l'air de lui plaire de recevoir une table dans la gueule :-) faut il remettre que le setGlobal soit dans la boucle aussi ? besoin d'un expert ici !!!
-
bon je me lance .... pas taper :-) on crée une table precipitations = {} precipitation[1] = celle du jour ensuite on fait nos appels dans notre boucle avec for i =2 to previous10days (qui devrait prendre la valeur 11 alors) et donc à chaque itération on fait precipitations[i] = jsonTable.history.dailysummary[1].precipm on devrait avoir une table avec 11 valeurs. 11 valeurs que la peut sommer suivant le besoin JOUR=1 5 derniers jours c'est 1+2+3+4+5 ou 2+3+4+5+6 suivant le plus intelligent 10 derniers Jours c'est .... si j'ai fait un arrosage alors on appuie sur un bouton qui donne : precipitations[1]=precipitations[1] + "Valeur arrosage" ensuite chaque nuit on fait for i = 1 to previous10days-1 precipitation[i]= precipitation[i+1] ce qui voudrait dire que l'on fait un appel 10days 1seule fois et ensuite on fait uniquement l'appel JOUR (et prévisions) j'ai bon ou je vais me coucher ? EDIT : bon une connerie dans la derniere boucle car j'écrase les valeurs, faut partir de 9 qui devient 10, 8 qui devient 9 etc... est ce que ça ça marche ? for i =previous10days-1 to 1 precipitation[i]= precipitation[i+1]
-
calculer le nombre de mm, depend du debit de chacun au robinet, ca se mesure facilement mais oui je suis d'accord, la 1ere étape est le tableau
-
Oue je te suis mais la je suis hors jeu. Incapable de faire ça. Faut faire appel au fofo !!!
-
bon j'ai resolu mon probleme d'ajout de bouton :-) je vais pouvoir continuer :-) donc l'idée suivante est de faire ; si un arrosage est effectué, alors je rajoute x mm à la valeur Jour, Hier, 5jours, 10jours, par contre je sais pas encore comment faire ... je peux passer par une variable qui prendrait la valeur Precipitations + Arrosage sauf qu'il faut que je sache si c'est J1 ou J2, J3 etc... avez vous une idée comment démarrer ?
-
Bonjour Did, tu habites ou ? en suivant ce lien, il faut choisir une station avec un chiffre dans le rond violet, si pas de chiffre cela veut dire pas de pluviometre. il faut aussi faire attention car certaines stations semblent pas très bien calibré. http://french.wunderground.com/personal-weather-station/dashboard?ID=IAQUITAI78 (dezoom la carte pour te situer puis rapproche toi pour trouver la bonne station) le VD mets à jour une variable qui a 3 états, et ensuite j'utiliserai (installation en cours de réalisation) GEA pour activer l'électrovanne, suivant l'état de la variable. Suivant l'état de la variable aussi le temps d'activation de l'EV sera different. (+ ou - long) le VD aujourd'hui permet de dire si oui ou non je dois arroser en prenant en compte uniquement les mm de pluie tombées (sur une période antérieure et future) il est donc nécessaire de l'ameliorer pour qu'ils prennent en compte aussi le mm ici de l'arrosage. Car par exemple, imaginons, une période sans pluie. J'arrose longtemps le Lundi, il faut que le VD le prenne en compte pour que le Mardi il me dit que tout est ok et que l'herbe est bien verte :-) EDIT ; petit soucis, si je veux créer d'autres boutons ???? vous savez ce que c'est ? pourtant j'ai essayé avec des noms de boutons genre "wxc" pour être sur ... comprends pas
-
tout depend des paramètres de calculs. j'ai mis une limite à 3mm - chez toi il est tombé 1.8 hier donc pas suffisant et 1 aujourd'hui idem (d'ailleurs je pense qu'il faudrait les sommer quelque part) et la prevision est que de 1 donc besoin arrosage. avec les mains voila comment ca marche tu definis ce dont tu as besoin par jour et indique le nombre de jour de prevision local quantie_jour_mm = 3 local nb_jour_prevision = 2 ensuite Si la prevision est > au besoin par jour * nombre de jour (6 dans l'exemple) alors --> pluie annoncée --> arrosage NON Si sur les 5 derniers jours il a plu besoin*nombre de jour (6) * 1.5 (pour de la marge) =9 alors --> Il a beaucoup plus --> arrosage NON Si le jour meme il a plu plus que 3mm alors --> il a plu --> arrosage NON Si hier il a plus plus que 3mm alors --> il a plu hier --> arrosage NON Si sur les 5 derniers jour il a plus plus que 5mm mais que la prevision est moins de 6mm alors --> arrosage court --> arrosage Leger Sinon --> arrosage long --> arrosage important avec à chaque fois une verification si il pleut en ce moment meme. Le calcul est discutable, et je suis preneur de quelque chose de mieux si on trouve. deja je vois que dans le label Hier, il faudrait aussi prendre en compte le Jour --> car si hier il a plus 2.5mm et aujourd hui 2.5 aussi pas besoin d'arroser alors que dans ce calcul si ... pas sur que cela soit très clair :-)
-
Je sais pas si le toolkit du Krikoff permet de lire le code des VD ? rien d'extraordinaire sur le calcul, mais je dis juste si pluie Hier alors pas besoin ----------------- calcul ---------------------- local selfId = fibaro:getSelfId() local Dday = tonumber(fibaro:getValue(selfId, "ui.lblJour.value")) local days1 = tonumber(fibaro:getValue(selfId, "ui.lblHier.value")) local days10 = tonumber(fibaro:getValue(selfId, "ui.lbl10.value")) local days5 = tonumber(fibaro:getValue(selfId, "ui.lbl5.value")) local prevision = tonumber(fibaro:getValue(selfId, "ui.lblPrevu.value")) local pluiencours = tonumber(fibaro:getValue(selfId, "ui.lblHeure.value")) > 0.1 local msg = "" if (prevision > (quantie_jour_mm*nb_jour_prevision)*1) then -- Il est prévu de pleuvoir plus que souhaité msg = "Pluie annoncée" fibaro:setGlobal("Arrosage", "Non") elseif (days5 > (quantie_jour_mm*nb_jour_prevision)*1.5) then -- Il a trop plu msg = "Il a beaucoup plu" fibaro:setGlobal("Arrosage", "Non") elseif (Dday > 3) then -- Il a plu if (pluiencours) then msg = "Il pleut" fibaro:setGlobal("Arrosage", "Non") else msg = "Il a plu suffisamment" fibaro:setGlobal("Arrosage", "Non") end elseif (days1 > 3) then -- Il a plu if (pluiencours) then msg = "Il pleut" fibaro:setGlobal("Arrosage", "Non") else msg = "Il a plu hier" fibaro:setGlobal("Arrosage", "Non") end elseif (days5 > 5 and (prevision < (quantie_jour_mm*nb_jour_prevision)*1)) then -- Sol sec, arrosage utile if (pluiencours) then msg = "Il pleut" fibaro:setGlobal("Arrosage", "Non") else msg = "Arrosage Court" fibaro:setGlobal("Arrosage", "Leger") end else if (pluiencours) then msg = "Il pleut" fibaro:setGlobal("Arrosage", "Non") else msg = "Arrosage Long" fibaro:setGlobal("Arrosage", "Important") end end
-
V1.5 en ligne sur le post 1 pour optimiser les appels sur 1bouton. j'ai mis en forme aussi, l'ordre des boutons on a donc - Today qui fait 1 appel - Last Days, qui fait 10 appels - Next 2 days, qui fait 1 appel du coup je rafraichi toutes les 10mns Today et NextDays --> 2 appels * 6 requetes/h * 24 = 288 et 1 click toutes les nuit sur Last Day = 10 TOTAL 298 (GEA et MainLoop à jour sur le 1er post) J'ai aussi rajouté qq lignes dans le calcul d'arrosage pour prendre en compte les data Hier. Bonne journée
-
c'est bon je l'ai local previous_10days = 10 -- max 10 calls per minute local previous_5days = 5 local yesterday = 1 rainyesterday = 0 rain5days = 0 rain10days = 0 for i = 1, previous_10days do local response ,status, err = WGROUND:GET("/api/"..cle_api.."/history_".. os.date("%Y%m%d",os.time()-i*24*3600) .."/lang:FR/q/pws:"..pws..".json") local jsonTable = json.decode(response) fibaro:debug(os.date("%Y%m%d",os.time()-i*24*3600)) fibaro:debug(jsonTable.history.dailysummary[1].precipm) if tonumber(jsonTable.history.dailysummary[1].precipm) ~= nil then rain10days = rain10days + jsonTable.history.dailysummary[1].precipm end for i = 1, yesterday do if tonumber(jsonTable.history.dailysummary[1].precipm) ~= nil then rainyesterday = jsonTable.history.dailysummary[1].precipm end end for i = 1, previous_5days do if tonumber(jsonTable.history.dailysummary[1].precipm) ~= nil then rain5days = rain5days + jsonTable.history.dailysummary[1].precipm end end end fibaro:debug(" Il est tombé " .. rainyesterday .. " mm hier") fibaro:debug(" Il est tombé " .. rain5days .. " mm depuis " .. previous_5days .. " jours") fibaro:debug(" Il est tombé " .. rain10days .. " mm depuis " .. previous_10days .. " jours") pas le temps de mettre une V1.5 - je dois partir au resto demain
-
@megabubu, merci, si ca peut servir je suis très content @jojo, encore une fois 100% d'accord j'avais tenté de le faire ( http://www.domotique-fibaro.fr/index.php/topic/4626-pluviométrie-avec-netatmo/?p=70635) mais mes connaissances étant ce qu'elles sont je n'avais pas réussi (je voulais inclure un if dans un if) comme le VD marche bien maintenant je vais retenter le coup
-
Vas y [emoji1]
-
Lol Tu peux peut être en attendant t en servir pour savoir si tu te douche ou pas. Genre Tahiti douche. Comprends qui peut. [emoji1]
-
en ligne. le main loop est toujours àcopier/coller depuis le post1 j'ai mis en commentaire le "push" sur smartphone, vous pouvez le remettre si vous voulez
-
voilà j'ai mis à jour le post1 avec le main loop sur input de jojo perso j'ai rajouté dans le bouton calcul elseif (Dday > 3) then -- Il a plu msg = "Il a plu" fibaro:setGlobal("Arrosage", "Non") pour tenir compte de la pluie du Jour
-
merci jojo je mets à jour le 1er post. oui la 1.3 à la split comme vu le screenshot du 1er post Test en temps réel, pluie sur Paris j'utilise cette station : http://www.wunderground.com/personal-weather-station/dashboard?ID=ISAINTGE24 elle vient de remontée 0.25mm de pluie --> cool ça marche bien par contre l'appel du JSON donne encore car je pense car c'est un nombre entier et que ça affichera qu'à partir de 1mm si je prends une station ou il a plus plu (3mm) http://www.wunderground.com/personal-weather-station/dashboard?ID=IILEDEFR53 le JSON remonte bien "precip_1hr_metric":" 2", "precip_today_metric":"3" faudra donc être patient et regarder la pluie tomber :-)
-
pour le main loop si vous avez pas GEA, je pense qq chose de ce style (corrigez moi si je me trompe) while true do local Var_Heure = os.date("%H:%M") --fibaro:debug("heure OS : " ..Var_Heure) if Var_Heure == "02:01" then fibaro:call(fibaro:getSelfId(), "pressButton", "9") fibaro:debug("heure OS : " ..Var_Heure .."Historique des 5 derniers jours récupéré") elseif Var_Heure == "03:01" then fibaro:call(fibaro:getSelfId(), "pressButton", "10") fibaro:debug("heure OS : " ..Var_Heure .."Historique des 10 derniers jours récupéré") end fibaro:sleep(60*1000) end par contre l'appuie régulier toutes les 15mn faut que je regarde de plus près - V.1.3 de dispo sur le 1er post - je regarde encore ce qu'il faut mettre dans le main loop pour l'appuie régulier
-
effectivement c'est plus propre :-)
-
@cybersquat ; merci ! @jojo, l'appuie régulier sur les boutons, ne gardera pas l'icône de calcul (un appui sur le futur bouton Today, prendra l'icône de ce meme bouton, pas l'icone du calcul d'arrosage) D'ou le main loop. mais comme toi j'aime pas le mainloop (peut être injustifié) je vais donc mettre le calcul de l'icone dans 3 boutons (jour,prevision et calcul arrosage) voila le GEA que je propose -- Arrosage GEA.add(true, 15*60, "", {{"VirtualDevice", id["CALCUL_ARROSAGE"], 8},{"Repeat"}}) -- Historique Jour et derniere heure GEA.add(true, 30, "", {{"Time", "02:00", "02:01"},{"VirtualDevice", id["CALCUL_ARROSAGE"], 9}}) -- Historique 5 Jours Pluie GEA.add(true, 30, "", {{"Time", "03:00", "03:01"},{"VirtualDevice", id["CALCUL_ARROSAGE"], 10}}) -- Historique 10 Jours Pluie GEA.add(true, 15*60, "", {{"VirtualDevice", id["CALCUL_ARROSAGE"], 11},{"Repeat"}}) -- Prévisions à 2 jours GEA.add(true, 20*60, "", {{"VirtualDevice", id["CALCUL_ARROSAGE"], 12},{"Repeat"}}) -- Calcul Arrosage qui donne : 1*4*24+6+10+1*4*24=208 appel jour et si l'appel 10days, ne tombe pas dans la meme minute qu'un autre appel alors on est safe ...
-
je vais regarder dans la prochaine version pour mettre les appuies dans le main loop pour ceux qui n'ont pas GEA
-
hello petite question, si j'ai un VD avec un bouton double ? (ID12 donc mon cas) comment avec GEA je click sur le bouton ID12-1 et ID12-2 de façon indépendante ? merci
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
c'est bon je l'ai eut :-) ---- id des icones --- local Iconeleger = 1100 local Iconeimportant = 1100 local Iconeoff = 1099 ------------------------- local selfId = fibaro:getSelfId() local Situation = fibaro:getGlobalValue("Arrosage") if (Situation == ("Non")) then NumIcone = Iconeoff elseif (Situation == ("Leger")) then NumIcone = Iconeleger else NumIcone = Iconeimportant end fibaro:call(selfId ,"setProperty","currentIcon", NumIcone) est ce que c'est genant d'avoir cela dans le main loop ?
-
je suis vraiment une quiche avec les boucles if pour être plus propres avec les icones je voulais mettre dans le main loop ---- id des icones --- local Icone_leger = 1100 local Icone_important = 1100 local Icone_off = 1099 ------------------------- local selfId = fibaro:getSelfId() local Situation = fibaro:getGlobalValue("Arrosage") if (Situation == ("Non")) then Num_Icone = Icone_off Elseif (Situation == ("Leger")) then Num_Icone = Icone_leger Elseif (Situation == ("Important")) then Num_Icone = Icone_important End fibaro:call(selfId , "setProperty", "currentIcon", Num_Icone) sauf que comme d'hab il me jette avec mes "if" [ERROR] 11:13:53: line 12: unexpected symbol near 'then'
-
peut être bien possible si on va interroger le "Hourly" http://www.wunderground.com/weather/api/d/docs?d=data/hourly faut que je regarder comment est construit le json ici mais tu penses vraiment que cela soit utile ? la fonction c'est de savoir si il a plu ou si il va pleuvoir, pour ne pas arroser pour rien dans l'Heure, c'est juste pour afficher : il pleut, l'info en tant que tel est pas vraiment utile, et consolidé dans le "jour" l'important c'est de savoir si il a plu aujourd'hui : Jour et si il a plu Hier et le cumul des derniers jours 5jours est important, 10jours un peu mois (si mega orage il y a 10jours, mais temps très sec depuis, je devrai arroser) avoir l'info de 6h 12h 18h, c'est plus pour le fun non ?
-
Voici ma config, beaucoup de choses qui sont tirées de vos configs, mais si ca peut aider certains... --[[ %% autostart %% properties 318 power 50 value 67 value 147 value 167 value 181 value 215 value 244 value 250 value 262 value %% globals Etat_Alarme Tele --]] -- v 5.40 -- Optimisation possible, cf : GEA.optimize = GEA.typeOptimize["IMEDIATE_ONLY"] -- ================================================== -- GEA : Gestionnaire d'Evénements Automatique -- ================================================== -- [FR] Scénario permettant de contrôler si une périphérique est -- activé depuis trop longtemps ou lancer un push d'avertissement -- Ce scénario permet une annotation plus simple que le code LUA -- il nécessite néanmoins quelques connaissances -- -- [EN] This scene allow you to check every X second the status -- of a module and send actions if the module is activated since too long. -- This scene allow you a more simple annotation than LUA -- it requires some knowledge -- -- Auteur : Steven P. with modification of Hansolo and Shyrka973 -- Version : 5.40 function yourcode() -- ================================================== -- [FR] A VOUS DE JOUER -- [EN] YOUR TIME TO PLAY -- ================================================== GEA.isVersionFour = true --- On est en version 4.017 Beta ou suppérieur -- [FR] Votre langue : FR (default) -- [EN] Your language : EN GEA.language = "FR"; -- [FR] On vérifie toutes les X secondes (default : 30) -- [EN] Check every X seconds GEA.checkEvery = 30 -- [FR] Liste des portables devant recevoir une notification {70, 71} -- [EN] Smarphones you want to be notified {XX, XX} for more than one GEA.portables = {200,226} -- [FR] Affichage des traces dans la console (default : false) -- [EN] Show trace in the debug window GEA.debug = false -- GEA.catchError=false -- option : GEA.typeOptimize["NONE"], GEA.typeOptimize["IMEDIATE_ONLY"], GEA.typeOptimize["ALL"] -- permet d'optimiser les soucis liés au getName et getRoom de fibaro mais n'affiche plus le nom des modules concernés. GEA.optimize = GEA.typeOptimize["IMEDIATE_ONLY"] -- [FR] Tableau d'identifiant (facultatif) -- [EN] ID table (optional) -- IDs générés le : 31/12/15 à16:31:01 local id = { -- SECTION : Cave -- ROOM : Buanderie ALARME_HEAT_CAVE = 208, ECL_CAVE = 257, ECL_BUANDERIE = 259, TEMP_CAVE = 52, TEMP_SMOKE_CAVE = 207, WP_LAVE_LINGE = 18, SMOKE_CAVE = 206, OUV_CAVE = 50, -- SECTION : Etage -- ROOM : Chambre_Amis TEMP_CHAMBRE_AMIS = 169, OUV_CHAMBRE_AMIS = 167, -- ROOM : Couloir MOV_COULOIR = 221, TEMP_SMOKE_COULOIR = 304, SMOKE_COULOIR = 303, ALARME_HEAT_COULOIR = 305, TEMP_COULOIR = 222, LUM_COULOIR = 223, -- SECTION : Exterieur -- ROOM : Jardin HUM_JARDIN_NETATMO = 111, TEMP_JARDIN_NETATMO = 110, ARROSAGE_JARDIN = 233, ARROSAGE_BORDURES = 235, ECL_EXT = 229, -- ROOM : Parking PORTE_GARAGE = 237, OUV_PORTAIL = 295, PORTAIL = 268, OUV_PORTE_GARAGE = 244, -- SECTION : Global -- ROOM : Gestion TOUTES_LUMIERES = 260, DAY_PHASE = 186, VARIABLES_GLOBALES = 183, GRAPHIQUES = 188, CALCUL_ARROSAGE = 199, FREBOX_SERVEUR = 323, TOP_10_POWER = 195, ETAT_TRAFIC = 310, ETAT_ALARME = 182, METEO = 309, TRAJET_BUREAU = 308, JOUR_CHOME = 141, MY_BATTERIES = 139, EVENEMENTS = 53, MODE_MAISON = 142, HC2_DIAGNOSTICS = 70, NETWORK_MONITOR = 307, CLOCK_SYNC = 210, -- ROOM : Scenes BACKUP_VARIABLES = 225, -- SECTION : RDC -- ROOM : Bureau WP_BUREAU = 4, TEMP_BUREAU = 148, LUM_BUREAU = 149, TT_BUREAU = 115, MOV_BUREAU = 147, -- ROOM : Chambre_Parents ECL_CHAMBRE_PARENTS = 181, -- ROOM : Entrée LUM_COULOIR_BAS = 252, CAMERA_ENTREE = 324, SIRENE = 248, MOV_ENTREE = 67, LUM_ENTREE = 69, TEMP_COULOIR_BAS = 251, TEMP_ENTREE = 68, MOV_COULOIR_BAS = 250, -- ROOM : Salon/Cuisine STATION_NETATMO = 103, THERMOSTAT_NETATMO = 306, WP_BAR = 49, WP_LISEUSE = 312, PRISE_FREBOXSERVER = 315, PRISE_PS3 = 320, SONOS_REMOTE = 322, TEMP_SALON_NETATMO = 105, PRISE_SONOS = 319, PRISE_HC2 = 317, PRISE_TELE = 318, PRISE_FREBOXPLAYER = 316, CO2_SALON_NETATMO = 106, TEMP_SALON = 263, HUM_SALON_NETATMO = 107, CAMERA_SALON = 242, THERMOSTAT_NETATMO_SALON_CUISINE = 301, TT_CUISINE = 119, TV_SAMSUNG = 125, VOLETS_SALON = 121, VOLETS_CUISINE = 134, GESTION_CAMERA = 246, SON_SALON_NETATMO = 109, PRESS_SALON_NETATMO = 108, TT_SALON = 113, LUM_SALON = 264, MOV_SALON = 262, ECL_SALON_PHARE = 202, -- ROOM : Sdb_Bas TEMP_SDB_BAS = 217, TT_SDB_BAS = 117, OUV_SDB_BAS = 215, } -- ------------------------------------------------------------ -- [FR] Variable Globale optionnel pour autorisé GEA de s'exécuté -- [FR] Usage : GEA.getGlobalForActivation = {"<globalvar>", "<value pour autoriser l'execution>"} -- [EN] Optional Global Variable to allow GEA to run -- [EN] Usage : GEA.getGlobalForActivation = {"<globalvar>", "<value for activation>"} -- ------------------------------------------------------------ GEA.getGlobalForActivation = {"GEA_Status", "Active"} -- ---------------------------------------------------------------- -- [FR] A partir d'ici vous trouverez ma propre configuration -- [FR] vous permettant ainsi d'avoir une série d'exemple -- [EN] From here are ma own configuration -- [EN] just to allow you to see some examples -- ---------------------------------------------------------------- -- Mon GEA ----------------------------------------------------- local atHome = {"Global", "JourChome", "OUI"} local atWork = {"Global", "JourChome", "NON"} local onVacation = {"Global", "Mode_Maison", "Vacances"} local notVacation = {"Global!", "Mode_Maison", "Vacances"} local Present = {"Global", "Mode_Maison", "Present"} local Absent = {"Global", "Mode_Maison", "Absent"} local Menage = {"Global", "Mode_Maison", "Menage"} local Journee = {"Global!", "Day_Phase", "7 - Nuit"} local Night = {"Global", "Day_Phase", "7 - Nuit"} local Soir = {"Global", "Day_Phase", "6 - Soir"} local notSick = {"Global!", "Mode_Maison", "Malade"} local Intrusion = {"Global", "Etat_Alarme", "Intrusion"} local Canicule = {"Global", "Canicule", "Yes"} -- Timer toutes les 30 mn GEA.add(true, 30*60, "") -- Actions sur les VD GEA.add(true, 30, "", {{"Time", "00:01", "00:02"}, {"Time", "05:00", "05:01"}, {"VirtualDevice", id["JOUR_CHOME"], 3}}) -- Calcul du jour chômé GEA.add(true, 30, "", {{"Time", "01:00", "01:00"}, {"Time", "14:00", "14:00"}, {"VirtualDevice", id["MY_BATTERIES"], 11},}) -- Verification Batteries GEA.add(true, 30, "", {{"Time", "02:00", "02:01"},{"VirtualDevice", id["CLOCK_SYNC"], 1}}) -- Syncro de l'horloge GEA.add(true, 20*30, "", {{"VirtualDevice", id["TOP_10_POWER"], 1},{"Repeat"}}) -- Top 10 power GEA.add(true, 5*60, "", {{"VirtualDevice", id["NETWORK_MONITOR"], 1},{"Repeat"}}) -- Check Internet GEA.add(true, 60*60, "", {{"VirtualDevice", id["EVENEMENTS"], 11},{"Repeat"}}) -- Derniers Evénements GEA.add(true, 60*60, "", {{"VirtualDevice", id["VARIABLES_GLOBALES"], 11},{"Repeat"}}) -- Dernièrs changements des VGs GEA.add(true, 15*33, "", {{"VirtualDevice", id["HC2_DIAGNOSTICS"], 1},{"Repeat"}}) -- Diagnostics de la HC2 -- Ram HC2 -- GEA.add({{"Global-", "RamFree", 40}}, 30, "RAM inférieure à40%", {{"Time", "21:00", "21:01"}}) -- Push si Ram faible GEA.add({{"Global-", "RamFree", 35}}, 30, "Reboot HC2 car RAM inférieure à35%", {{"Time", "02:45", "02:50"},{"VirtualDevice", id["HC2_DIAGNOSTICS"], 16}}) -- Reboot HC2 si RAM faible -- Definition du Mode_Maison GEA.add({notVacation, notSick, atWork}, 30, "", {{"Days", "Monday, Tuesday, Wednesday, Thursday, Friday"}, {"Time", "08:40", "08:41"}, {"VirtualDevice", id["MODE_MAISON"], 2}}) GEA.add({notVacation, notSick, atWork}, 30, "", {{"Days", "Monday"}, {"Time", "13:00", "13:01"}, {"VirtualDevice", id["MODE_MAISON"], 3}}) GEA.add({notVacation, notSick, atWork}, 30, "", {{"Days", "Monday, Tuesday, Thursday"}, {"Time", "17:30", "17:31"}, {"VirtualDevice", id["MODE_MAISON"], 1}}) GEA.add({notVacation, notSick, atWork}, 30, "", {{"Days", "Wednesday"}, {"Time", "11:30", "11:31"}, {"VirtualDevice", id["MODE_MAISON"], 1}}) GEA.add({notVacation, notSick, atWork}, 30, "", {{"Days", "Friday"}, {"Time", "16:00", "16:01"}, {"VirtualDevice", id["MODE_MAISON"], 1}}) -- Maison en mode manuel GEA.add({{"Global", "Mode_Maison", "Manuel"}}, 30, "", {{"setDisarmed",id["MOV_ENTREE"]},{"setDisarmed",id["MOV_SALON"]},{"setDisarmed",id["OUV_CAVE"]},{"setDisarmed",id["OUV_CHAMBRE_AMIS"]},{"setDisarmed",id["MOV_BUREAU"]},{"VirtualDevice", id["ETAT_ALARME"], 1}}) -- Tous devices désarmés GEA.add({{"Global", "Mode_Maison", "Manuel"}}, 60, "Maison en Manuel", {{"Portable", 200},{"Portable", 240},{"Portable", 226},{"Global", "GEA_Status", "Desactive"}}) -- Gea en stdby -- Gestion des volets -- Ouverture tous les matin hors Vacances GEA.add({atWork, Present}, 1*60, "Ouverture Volets Semaine", {{"Time", "07:15", "07:20"}, {"Open",id["VOLETS_SALON"],100},{"Open",id["VOLETS_CUISINE"],100},{"VirtualDevice", id["GESTION_CAMERA"], 5}}) GEA.add({atHome, Present}, 1*60, "Ouverture Volets Weekend & Vacances", {{"Time", "08:15", "08:20"}, {"Open",id["VOLETS_SALON"],100},{"Open",id["VOLETS_CUISINE"],100},{"VirtualDevice", id["GESTION_CAMERA"], 5}}) GEA.add({Present, Canicule}, 1*60, "Ouverture Volets Canicule", {{"Time", "04:15", "04:20"}, {"Open",id["VOLETS_SALON"],90},{"VirtualDevice", id["METEO"], 12},{"VirtualDevice", id["GESTION_CAMERA"], 5}}) -- Fermeture matin semaine volets cuisine GEA.add({atWork, Absent}, 1*60, "Fermeture Volets Semaine", {{"Time", "08:45", "08:46"}, {"Close",id["VOLETS_CUISINE"],100},{"VirtualDevice", id["GESTION_CAMERA"], 6}}) -- Gestion de l'alarme -- Armement de l'alarme GEA.add(onVacation, 10*60, "Alarme ON Vacances", {{"setArmed",id["MOV_ENTREE"]},{"setArmed",id["MOV_SALON"]},{"setArmed",id["OUV_CAVE"]},{"setArmed",id["OUV_CHAMBRE_AMIS"]},{"setArmed",id["MOV_BUREAU"]},{"setArmed",id["MOV_COULOIR"]},{"setArmed",id["MOV_COULOIR_BAS"]},{"setArmed",id["OUV_SDB_BAS"]},{"setArmed",id["OUV_PORTE_GARAGE"]},{"setArmed",id["OUV_PORTAIL"]},{"VirtualDevice", id["ETAT_ALARME"], 2},{"VirtualDevice", id["GESTION_CAMERA"], 6},{"VirtualDevice", id["GESTION_CAMERA"], 2},{"VirtualDevice", id["GESTION_CAMERA"], 10}}) GEA.add(Absent, 1*60, "Alarme ON Absent", {{"setArmed",id["MOV_ENTREE"]},{"setArmed",id["MOV_SALON"]},{"setArmed",id["OUV_CAVE"]},{"setArmed",id["OUV_CHAMBRE_AMIS"]},{"setArmed",id["MOV_BUREAU"]},{"setArmed",id["OUV_SDB_BAS"]},{"setArmed",id["MOV_COULOIR"]},{"setArmed",id["MOV_COULOIR_BAS"]},{"setArmed",id["OUV_PORTE_GARAGE"]},{"setArmed",id["OUV_PORTAIL"]},{"VirtualDevice", id["ETAT_ALARME"], 2},{"VirtualDevice", id["GESTION_CAMERA"], 6},{"VirtualDevice", id["GESTION_CAMERA"], 2},{"VirtualDevice", id["GESTION_CAMERA"], 10}}) GEA.add(Night, 10*60, "Alarme ON Nuit", {{"setArmed",id["OUV_CAVE"]},{"setArmed",id["OUV_CHAMBRE_AMIS"]},{"setArmed",id["OUV_SDB_BAS"]},{"setArmed",id["OUV_PORTE_GARAGE"]},{"setArmed",id["OUV_PORTAIL"]},{"VirtualDevice", id["ETAT_ALARME"], 2}}) -- Désarmement de l'alarme GEA.add({Present, Journee, atWork}, 30, "Alarme OFF Présence Semaine", {{"setDisarmed",id["MOV_ENTREE"]},{"setDisarmed",id["MOV_SALON"]},{"setDisarmed",id["MOV_BUREAU"]},{"setDisarmed",id["OUV_SDB_BAS"]},{"setDisarmed",id["MOV_COULOIR"]},{"setDisarmed",id["MOV_COULOIR_BAS"]},{"setDisarmed",id["OUV_PORTE_GARAGE"]},{"setDisarmed",id["OUV_PORTAIL"]},{"VirtualDevice", id["ETAT_ALARME"], 1},{"VirtualDevice", id["GESTION_CAMERA"], 3},{"VirtualDevice", id["GESTION_CAMERA"], 8}}) GEA.add({Present, Journee, atHome}, 30, "Alarme OFF Présence Weekend - Vacances", {{"setDisarmed",id["MOV_ENTREE"]},{"setDisarmed",id["MOV_SALON"]},{"setDisarmed",id["OUV_CAVE"]},{"setDisarmed",id["MOV_COULOIR_BAS"]},{"setDisarmed",id["OUV_CHAMBRE_AMIS"]},{"setDisarmed",id["MOV_BUREAU"]},{"setDisarmed",id["MOV_COULOIR"]},{"setDisarmed",id["OUV_SDB_BAS"]},{"setDisarmed",id["OUV_PORTE_GARAGE"]},{"setDisarmed",id["OUV_PORTAIL"]},{"VirtualDevice", id["ETAT_ALARME"], 1},{"VirtualDevice", id["GESTION_CAMERA"], 3},{"VirtualDevice", id["GESTION_CAMERA"], 8}}) GEA.add({Menage, Journee}, 5*60, "Alarme OFF Ménage", {{"setDisarmed",id["MOV_ENTREE"]},{"setDisarmed",id["MOV_SALON"]},{"setDisarmed",id["MOV_BUREAU"]},{"setDisarmed",id["MOV_COULOIR_BAS"]},{"setDisarmed",id["MOV_COULOIR"]},{"VirtualDevice", id["ETAT_ALARME"], 1},{"VirtualDevice", id["GESTION_CAMERA"], 3},{"VirtualDevice", id["GESTION_CAMERA"], 8}}) -- Intrusion -- Action quand Variable àIntrusion GEA.add({Intrusion}, 5*60, "Mode Intrusion depuis #duration#",{{"Portable", 200},{"Portable", 240},{"Portable", 226},{"Repeat"}}) GEA.add({Intrusion,Night}, 30, "", {{"turnOn",id["ECL_BUANDERIE"]},{"turnOn",id["ECL_CAVE"]}}) -- On allume la cave si mode Intrusion GEA.add(id["SIRENE"], 5*60, "Sirene OFF",{{"turnOff",id["SIRENE"]},{"Global", "Etat_Alarme", "ON"}}) -- On stoppe la sirène apres 5mn -- Gestion de l'éclairage GEA.add(true, 5*60, "", {{"VirtualDevice", id["TOUTES_LUMIERES"], 14},{"Repeat"}}) GEA.add (id["ECL_CAVE"], 10*60, "Extinction Lumière cave, car allumée depuis #duration#", {{"turnOff"}, {"Portable", 200},{"Portable", 240},{"Portable", 226}}) GEA.add (id["ECL_BUANDERIE"], 10*60, "Extinction Lumière buanderie, car allumée depuis #duration#", {{"turnOff"}, {"Portable", 200},{"Portable", 240},{"Portable", 226}}) GEA.add({id["ECL_CAVE"]}, 30, "", {{"Inverse"},{"turnOff",id["ECL_BUANDERIE"]}}) -- Eclairaige Buanderie éteint si on eteint Eclairage Cave GEA.add({id["OUV_PORTAIL"], Soir}, 30, "", {{"turnOn",id["ECL_EXT"]},{"Global", "Portail", "Ouvert"}}) -- Eclairaige Exterieur On si Portail s'ouvre et Mode Soir --GEA.add({"Global","Portail", "Ouvert"}, 30, "", {{"turnOn",id["WP_GUIRLANDE"]}}) -- Mode Noel ; Eclairaige Guirlande quand on rentre le soir GEA.add({id["MOV_COULOIR_BAS"],{"Global","Portail", "Ouvert"}}, 60, "Extinction Eclairage Extérieur", {{"turnOff",id["ECL_EXT"]},{"Global","Portail", "Ferme"}}) -- On eteint l'Eclairage Exterieur une fois dans la maison -- Gestion des appareils -- Lave Linge GEA.add({"Global", "Lave_Linge", "En Attente"}, 5*60, "La machine est terminée depuis #duration#",{{"Portable", 200},{"Portable", 240},{"Portable", 226}}) GEA.add({"Sensor-", id["WP_LAVE_LINGE"], 2.8}, 30*60, "", {{"Global", "Lave_Linge", "Arret"}}) GEA.add({"Sensor+", id["WP_LAVE_LINGE"], 3}, 2*60, "", {{"Global", "Lave_Linge", "Lavage"}}) GEA.add({{"Sensor+", id["WP_LAVE_LINGE"], 1},{"Sensor-", id["WP_LAVE_LINGE"], 2.8}, {"Global", "Lave_Linge", "Lavage"}}, 1*60, "", {{"Global", "Lave_Linge", "En Attente"}}) -- Télé GEA.add({"Global", "Tele", "On"}, 30, "", {{"Slider", id["SONOS_REMOTE"], 15, 80}}) -- On fixe le son de la PlayBar à80% GEA.add({"Power-", id["PRISE_TELE"], 20}, 30, "", {{"Global", "Tele", "Off"},{"Slider", id["SONOS_REMOTE"], 15, 10}}) -- On repasse le son de la PlayBar à10% GEA.add({"Global", "Soiree", "TV"}, 30, "", {{"turnOn",id["WP_BAR"]},{"turnOff",id["ECL_SALON_PHARE"]},{"turnOff",id["WP_LISEUSE"]},{"Close",id["VOLETS_SALON"],65},{"Close",id["VOLETS_CUISINE"],100}}) -- Passage en Mode TV -- WP iMac GEA.add({"Sensor-", id["WP_BUREAU"], 20}, 60*60, "", {{"turnOff"}}) GEA.add(Present, 1*30, "",{{"Days", "Monday, Tuesday, Thursday, Friday"},{"Time", "17:30", "20:00"}, {"turnOn", id["WP_BUREAU"]}}) GEA.add(Present, 1*30, "",{{"Days", "Saturday, Sunday"},{"Time", "8:00", "10:00"}, {"turnOn", id["WP_BUREAU"]}}) GEA.add(Present, 1*30, "",{{"Days", "Wednesday"},{"Time", "11:30", "13:30"}, {"turnOn", id["WP_BUREAU"]}}) -- Playbar GEA.add(true, 60, "", {{"Days", "Monday"},{"Time", "20:00", "20:01"},{"VirtualDevice", id["SONOS_REMOTE"], 30}}) -- Annonce TTS2 (Déchets Verts) GEA.add(true, 60, "", {{"Days", "Tuesday"},{"Time", "20:00", "20:01"},{"VirtualDevice", id["SONOS_REMOTE"], 31}}) -- Annonce TTS3 (Déchets recyclabes) GEA.add(true, 60, "", {{"Days", "Thursday, Sunday"},{"Time", "20:00", "20:01"},{"VirtualDevice", id["SONOS_REMOTE"], 32}}) -- Annonce TTS4 (Poubelles) GEA.add({"Global", "SortirVerres", "Yes"}, 60, "", {{"Time", "20:00", "20:01"},{"VirtualDevice", id["SONOS_REMOTE"], 33}}) -- Annonce TTS5 (Verres) GEA.add({"Global", "SortirEncombrants", "Yes"}, 60, "", {{"Time", "20:00", "20:01"},{"VirtualDevice", id["SONOS_REMOTE"], 34}}) -- Annonce TTS6 (Encombrants) GEA.add({"Global", "EtatPlaybar", "Stopped"}, 15*60, "",{{"Slider", id["SONOS_REMOTE"], 15, 10}}) -- On fixe le son de la Playbar à10% si non utilisée --Gestion des portes GEA.add({Soir,id["OUV_CAVE"]}, 5*60, "La porte de la cave est toujours ouverte",{{"Portable", 200},{"Portable", 240},{"Portable", 226},{"Repeat"}}) GEA.add({Soir,id["OUV_CHAMBRE_AMIS"]}, 5*60, "La porte de la chambre d'amis est toujours ouverte",{{"Portable", 200},{"Portable", 240},{"Portable", 226},{"Repeat"}}) GEA.add({Soir,id["OUV_PORTE_GARAGE"]}, 5*60, "La porte du garage est toujours ouverte",{{"Portable", 200},{"Portable", 240},{"Portable", 226},{"Repeat"}}) --Gestion de l'arrosage GEA.add({id["ARROSAGE_BORDURES"]}, 15*60, "Arrêt du goutte àgoutte après #duration#", {{"Portable", 200},{"Portable", 240},{"Portable", 226},{"turnOff"},{"Repeat"}}) GEA.add({id["ARROSAGE_JARDIN"]}, 10*60, "Arret arrosage jardin après #duration#", {{"Portable", 200},{"Portable", 240},{"Portable", 226},{"turnOff"},{"VirtualDevice", id["CALCUL_ARROSAGE"], 11},{"Repeat"}}) GEA.add(true, 15*60, "", {{"VirtualDevice", id["CALCUL_ARROSAGE"], 2},{"Repeat"}}) -- Rafraichir les données pluie Jour Et Previsions GEA.add(true, 30, "", {{"Time", "00:06", "00:07"},{"VirtualDevice", id["CALCUL_ARROSAGE"], 14}}) -- Traitement de l'Historique Pluie GEA.add({{"Global+", "ConsoEau", 500}}, 30, "Attention Conso d'eau élevée", {{"Time", "21:00", "21:01"}}) -- Push si Conso d'eau > 1000 litres -- Push Météo GEA.add(true, 60*60, "", {{"VirtualDevice", id["METEO"], 1},{"Repeat"}}) -- Previsions Meteo GEA.add ({{"Global!", "Meteo_Actuelle_Jou", ""},atWork, Present}, 30, "#value#",{{"Time", "07:20", "07:21"},{"Portable", 200},{"Portable", 240},{"Portable", 226}}) -- push météo le matin GEA.add ({{"Global!", "Meteo_Lendemain", ""},Present}, 30, "#value#",{{"Time", "20:00", "20:01"},{"Portable", 200},{"Portable", 240},{"Portable", 226}}) -- push météo le soir -- Push Trafic GEA.add(true, 2*60, "", {{"VirtualDevice", id["ETAT_TRAFIC"], 1},{"Repeat"}}) -- Refresh toutes les 2mn l'etat du trafic GEA.add ({"Global!", "EtatTrafic", "OK"}, 15*60, "#value#",{{"Repeat"}}) -- Push EtatTrafic si NOK toutes les 15mn -- Fin Mon GEA ------ et Debut Mon GEA Instantané---------------------------- -- Gestion de l'alarme -- Intrusion -- Variable àIntrusion si module en alerte et armé GEA.add({id["OUV_CAVE"]}, -1, "Alerte intrusion ! Porte Cave - #date# #time#", {{"Armed"}, {"VirtualDevice", id["ETAT_ALARME"], 3}, {"VirtualDevice", id["GESTION_CAMERA"], 2}, {"VirtualDevice", id["GESTION_CAMERA"], 6}}) GEA.add({id["OUV_CHAMBRE_AMIS"]}, -1, "Alerte intrusion ! Porte Chambre Amis - #date# #time#", {{"Armed"}, {"VirtualDevice", id["ETAT_ALARME"], 3}, {"VirtualDevice", id["GESTION_CAMERA"], 2}, {"VirtualDevice", id["GESTION_CAMERA"], 6}}) GEA.add({id["OUV_SDB_BAS"]}, -1, "Alerte intrusion ! Porte Salle de Bain - #date# #time#", {{"Armed"}, {"VirtualDevice", id["ETAT_ALARME"], 3}, {"VirtualDevice", id["GESTION_CAMERA"], 2}, {"VirtualDevice", id["GESTION_CAMERA"], 6}}) GEA.add({id["MOV_BUREAU"]}, -1, "Alerte intrusion ! Bureau - #date# #time#", {{"Armed"}, {"VirtualDevice", id["ETAT_ALARME"], 3}, {"VirtualDevice", id["GESTION_CAMERA"], 2}, {"VirtualDevice", id["GESTION_CAMERA"], 6}}) GEA.add({id["MOV_ENTREE"]}, -1, "Alerte intrusion ! Entrée - #date# #time#", {{"Armed"}, {"VirtualDevice", id["ETAT_ALARME"], 3}, {"VirtualDevice", id["GESTION_CAMERA"], 2}, {"VirtualDevice", id["GESTION_CAMERA"], 6}}) GEA.add({id["MOV_COULOIR_BAS"]}, -1, "Alerte intrusion ! Couloir Bas - #date# #time#", {{"Armed"}, {"VirtualDevice", id["ETAT_ALARME"], 3}, {"VirtualDevice", id["GESTION_CAMERA"], 2}, {"VirtualDevice", id["GESTION_CAMERA"], 6}}) GEA.add({id["MOV_SALON"]}, -1, "Alerte intrusion ! Salon - #date# #time#", {{"Armed"}, {"VirtualDevice", id["ETAT_ALARME"], 3}, {"VirtualDevice", id["GESTION_CAMERA"], 2}, {"VirtualDevice", id["GESTION_CAMERA"], 7}}) GEA.add({id["OUV_PORTE_GARAGE"]}, -1, "Alerte intrusion ! Garage - #date# #time#", {{"Armed"}, {"VirtualDevice", id["ETAT_ALARME"], 3}, {"VirtualDevice", id["GESTION_CAMERA"], 2}, {"VirtualDevice", id["GESTION_CAMERA"], 7}}) -- Si Variable deja àIntrusion et 2nde détection et Mode Vacances alors Sirene ON GEA.add({id["OUV_CAVE"],Intrusion, onVacation}, -1, "Intrusion confirmée! Porte Cave - Sirene ON - #date# #time#", {{"Armed"}, {"turnOn",id["SIRENE"]},{"Repeat"}}) GEA.add({id["OUV_CHAMBRE_AMIS"],Intrusion, onVacation}, -1, "Intrusion confirmée! Porte Chambre Amis - Sirene ON - #date# #time#", {{"Armed"},{"turnOn",id["SIRENE"]},{"Repeat"}}) GEA.add({id["OUV_SDB_BAS"],Intrusion, onVacation}, -1, "Intrusion confirmée! Porte Salle de Bain - Sirene ON - #date# #time#", {{"Armed"},{"turnOn",id["SIRENE"]},{"Repeat"}}) GEA.add({id["MOV_BUREAU"],Intrusion, onVacation}, -1, "Intrusion confirmée! Bureau - Sirene ON - #date# #time#", {{"Armed"},{"turnOn",id["SIRENE"]},{"Repeat"}}) GEA.add({id["MOV_ENTREE"],Intrusion, onVacation}, -1, "Intrusion confirmée! Entrée - Sirene ON - #date# #time#", {{"Armed"},{"turnOn",id["SIRENE"]},{"Repeat"}}) GEA.add({id["MOV_COULOIR_BAS"],Intrusion, onVacation}, -1, "Intrusion confirmée! Couloir Bas - Sirene ON - #date# #time#", {{"Armed"},{"turnOn",id["WP_LISEUSE"]},{"Repeat"}}) GEA.add({id["MOV_SALON"],Intrusion, onVacation}, -1, "Intrusion confirmée! Salon - Sirene ON - #date# #time#", {{"Armed"},{"turnOn",id["SIRENE"]},{"Repeat"}}) GEA.add({id["OUV_PORTE_GARAGE"],Intrusion, onVacation}, -1, "Intrusion confirmée! Garage - Sirene ON - #date# #time#", {{"Armed"},{"turnOn",id["SIRENE"]},{"Repeat"}}) -- Arret Scene Intrusion GEA.add({id["ECL_CHAMBRE_PARENTS"], Intrusion}, -1, "Mode Panic OFF", {{"Inverse"},{"VirtualDevice", id["ETAT_ALARME"], 1}}) -- Gestion de l'éclairage -- Eclairage de la cave GEA.add({id["OUV_SDB_BAS"]}, -1, "", {{"turnOn",id["ECL_CAVE"]},{"turnOn",id["ECL_BUANDERIE"]}}) -- Eclairage le soir GEA.add({{"power-", id["PRISE_TELE"], 20},{"Global", "Tele", "On"}}, -1, "",{{"Time", "21:00", "23:00"},{"Value", id["ECL_CHAMBRE_PARENTS"], 35}, {"turnOn",id["ECL_SALON_PHARE"]},{"Global", "Tele", "Off"},{"VirtualDevice", id["MODE_MAISON"], 1},{"Close",id["VOLETS_SALON"],100},{"Close",id["VOLETS_CUISINE"],100},{"VirtualDevice", id["GESTION_CAMERA"], 6}}) --même ligne sans éclairage chambre --GEA.add({{"power-", id["PRISE_TELE"], 20},{"Global", "Tele", "On"}}, -1, "",{{"Time", "21:00", "23:00"}, {"turnOn",id["ECL_SALON_PHARE"]},{"Global", "Tele", "Off"},{"VirtualDevice", id["MODE_MAISON"], 1},{"Close",id["VOLETS_SALON"],100},{"Close",id["VOLETS_CUISINE"],100},{"VirtualDevice", id["GESTION_CAMERA"], 6}}) -- Gestion Sonos GEA.add({"Power+", id["PRISE_TELE"], 80}, -1, "", {{"Global", "Tele", "On"},{"VirtualDevice", id["SONOS_REMOTE"], 8}}) -- Fin Mon GEA Instantanée -----------------------------------------------------