Aller au contenu

Showroom Gea V2


sebcbien

Recommended Posts

Bonjour,

 

Apparemment le fil showroom GEA est mort car les admin ne veulent/savent pas le débloquer, c'est bien dommage.

Bref, on recommence tout, ce n'est pas si compliqué, copy/paste de votre config et hop.

 

Sachant qu'il y a 20 post par page et que deux gros GEA peuvent suffire à  planter le serveur, je vous propose donc de rajouter autant de posts "vides" qu'il faut pour qu'il y aie max deux gros scripts GEA par page..

 

Mettre les balises "spoiler" ne sert malheureusement à  rien, j'ai vérifié le code, c'est juste caché, mais le serveur reçoit la même charge lors de l'appel de la page.

Avec les deux posts "GEA" que j'ai faits ci-dessous, il faut déjà  parfois 25 secondes pour l'affichage...

 

Pour rappel, pour plus de lisibilité, pas de questions ici. Dans l'ancien fil, je demandais aussi pas de remerciements à  par des clicks sur le bouton "j'aime"...mais comble de l'ironie s'il y en avais eu, peut-être que le fil serait toujours vivant...

Donc vous pouvez poster des petits commentaires, mais pas de demande de support car là  ça peut devenir "illisible" et noyer les posts "ShowRoom".

Si vous en avez, copiez la ligne et faites-en référence sur le fil du support GEA, ici: http://www.domotique-fibaro.fr/index.php/topic/1211-support-gea/

  • Upvote 2
Lien vers le commentaire
Partager sur d’autres sites

Voici mon GEA principal:

edit: mis àjour le 7/10/2016

	GEA.regexFullAllow = true
	GEA.optimize = GEA.typeOptimize["IMEDIATE_ONLY"]

-- DERNIERE MISE A JOUR 27/09/2015 23h59
local id = {
--User Phones and Scenes
ADMIN = 2, PHONE_SEB = 1347, PHONE_GG = 1366, PHONE_FAKE = 97, SCENE_EMAIL_DNODES = 71, SCENE_REVEIL_DOUCEUR = 66,
    }

-- IDs générés le : 18/09/16 à21:46:31 - Reconfigure FGMS SDD
-- (liste raccourcie pour pas flooder le forum)
local id2 = {
--Salon
MARANTZ_SALON = 1282, NETATMO_REZ_PRESSURE = 1800, POE_CAM_SALON__P1_ = 1851, TV___AMPLI = 80, SALON_MVT = 1486, XBMC_SALON_FIBARO = 1826, NETATMO_REZ_THERMOST = 1823, POUSSOIRS_HAUT = 1894, SALON_FLOD = 72, NETATMO_REZ_NOISE = 1801, LAMPADAIRE_BOIS = 1974, LAMPADAIRES_SALON = 23, NETATMO_REZ_CO2 = 1798, LAMPADAIRE_BOULLE = 1975, NETATMO_REZ_HUMIDITY = 1799, SALON = 1948, XBMC_REMOTE = 108, SALON_TEMPERATURE_FL = 74, 
}
  
	-- [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 = {id["PHONE_SEB"]} --, id["PHONE_GG"]} -- 53 Nexus 5 GG - 104 Nexus 4

local TTS_Sarah = {"VirtualDevice", id2["S_A_R_A_H__SAY_IT"], 1}
local TTS_Sonos = {"VirtualDevice", id2["SONOS_SAY_IT"], 1}
local TTS_Karotz = {"VirtualDevice", id2["KAROTZ_SAY_IT__"], 1}
local TTS_Default = TTS_Sonos

	-- == CONDITIONS ==
	-- DERNIERE MISE A JOUR 02/10/2016 23h03
	-- Maison
local estAt_Home = {"Global", "PresentState", "At_Home"}
local estAway = {"Global", "PresentState", "Away"}
local estNotAway = {"Global!", "PresentState", "Away"}
local estNight_All_Off = {"Global", "PresentState", "Night_All_Off"}
local estNotNight_All_Off = {"Global!", "PresentState", "Night_All_Off"}
local estAwayOrNigh_All_Off = {"Global", "PresentState", "Night_All_Off|Away"}
local estNotAwayOrNigh_All_Off = {"Global!", "PresentState", "Night_All_Off|Away"}

local estKids_Sleeping = {"Global", "PresentState", "Kids_Sleeping"}
local est_House_Sleeping = {"Global", "PresentState", "Kids_Sleeping|Night_All_Off"}
local est_NotHouse_Sleeping = {"Global!", "PresentState", "Kids_Sleeping|Night_All_Off"}
local est_AtHome_Or_Kids_Sleeping = {"Global", "PresentState", "Kids_Sleeping|At_Home"}
local estNotKids_Sleeping = {"Global!", "PresentState", "Kids_Sleeping"}  

local estHouse_Manuel =  {"Global", "House_Mode", "Manual"}
local estNotHouse_Manuel =  {"Global", "House_Mode", "Auto|Scheduler"}
local estNotSimu_Presence =  {"Global", "Simu_presence", "0"}

local cond_pres_GG_Alarme_off = {"Global", "PresentState", "Away"},{"Global", "Lock_Away", "Unlocked"},{"Global", "Phone_GG_Present", "1"}
local cond_pres_Seb_Alarme_off = {"Global", "PresentState", "Away"},{"Global", "Lock_Away", "Unlocked"}, {"Global", "Phone_Seb_Present", "1"}
	-- Périodes
local estWinter =  {"Global", "Season", "Winter"}
local estSummer =  {"Global", "Season", "Summer"}
local estSombre =  {"Value-", id2["CH_AMIS_LUMINOSITE"],200}
local estLumineux =  {"Value+", id2["CH_AMIS_LUMINOSITE"],200}
local PeriodeDimCornicheSAM = {"Time", "20:30", "06:00"}
local PeriodeLumiCornicheSAM = {"Time", "06:00", "20:30"}
local PeriodeLumiSAM = {"Time", "06:00", "20:30"}
local DimCouloir = 26 -- was 26 before update. 9 ok before update - %age quand lumière dimmée

-------------------------------------------------------------------------

------------ WHEN AT HOME DO-------------------
  GEA.add(estAt_Home, -1, "", {
	--{"turnOff", id2["CORNICHE_COULOIR"]},
	{"turnOff", id2["BABYPHONE_EMILIEN"]},
	{"turnOff", id2["BABYPHONE_THOMAS"]},
	{"turnOn", id2["HALL"]}
	})
------------ WHEN AWAY OR NIGHT ALL OFF DO ----
  GEA.add(estAwayOrNigh_All_Off, -1, "", {
	{"VirtualDevice",id2["TOUTES_LUMIERES"],"2"}, -- turn off all lights
	{"VirtualDevice",id2["MARANTZ_SALON"],"15"}, -- set Marantz Day mode
	{"VirtualDevice",id2["XBMC_REMOTE"],"2"}, -- pause Nvidia Shield
	--{"VirtualDevice",id2["SONOS_REMOTE"],"9"},-- Stop SONOS
	{"VirtualDevice",id2["MARANTZ_SALON"],"6"} -- turn off ampli
	})
------------ WHEN AWAY DO----------------------
  GEA.add(estAway, -1, "", {
	{"Global", "Porte_Gar_Action", "Demande_Fermeture"},
	{"turnOff", id2["BABYPHONE_EMILIEN"]},
	{"turnOff", id2["BABYPHONE_THOMAS"]},
	{"turnOff", id2["COULOIR"]}
	})
------------ WHEN KIDS SLEEPING DO-------------
  GEA.add(estKids_Sleeping, -1, "", {
	{"VirtualDevice",id2["MARANTZ_SALON"],"14"}, -- set ampli night mode
	{"turnOn", id2["COULOIR"]}
	})
------------ WHEN NIGHT ALL OFF DO-------------
  GEA.add(estNight_All_Off, -1, "", {
	{"turnOn", id2["ROUTEUR_1ER__P2_"]},
	{"turnOn", id2["COULOIR"]},
	})
--- Timer SEND all CAMERA SNAPSHOTS if AWAY ---
	GEA.add(estAway, 30, "", {
	{"Time", "18:30", "18:35"},
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "10", 60}, -- Parking set Freq to 60s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "11", 12}, -- Parking set Shots to 12-10=2
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "13", 60}, -- Terrasse set Freq to 60s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "14", 11}, -- Terrasse set Shots to 11-10=1
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "16", 60}, -- Garage set Freq to 60s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "17", 12}, -- Garage set Shots to 12-10=2
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "19", 60}, -- Salon set Freq to 60s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "20", 12}, -- Salon set Shots to 12-10=2
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "22", 60}, -- Cuisine set Freq to 60s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "23", 11}, -- Cuisine set Shots to 11-10=1
	})
----------NOTIF DEMARRAGE CHAUFFAGE------------
  isThermRezOn = false
  GEA.add({"Global", "Therm_Rez_Status", "100"}, 30, "", {{"function",function() isThermRezOn = true end}}) -- après 30s met status thermostat àtrue
  GEA.add({"Global", "Therm_Rez_Status", "0"}, 5*60, "", {{"function",function() isThermRezOn = false end}}) -- après 5 minutes met status thermostat àtrue
  GEA.add({{"Global", "Phone_GG_Present", "1"},{"function",function() return isThermRezOn end}}, 5*60, "Thermostat Rez enclenché à#time#",{
	{"Label", id2["SONOS_SAY_IT"], "Message", "Bonjour, enclenchement du chauffage du ré de chaussée"},TTS_Default,
	{"Portable", id["PHONE_FAKE"]},
	{"Email", id["ADMIN"],"Notification GEA V5 Instance 1"},
	{"function",function() isThermRezOn=false end}
	})
-------------SURVEILLANCE MEMOIRE--------------
  GEA.add({{"Global-", "RamFree", 50}}, 30, "RAM inférieure à#value# - Reboot prévu cette nuit à2h45", {{"Time", "21:00", "21:01"}}) --  Push si Ram faible
  GEA.add({{"Global-", "RamFree", 50}}, 30, "Reboot HC2 car RAM inférieure à35% (#value#)", {{"Time", "02:45", "02:46"},{"VirtualDevice", id2["HC2_DIAGNOSTICS"], 15}}) --  Reboot HC2 si RAM faible
----------------MUSIQUE SALON------------------
  isLongAwayOrNightAllOff_AMPLI = false
  GEA.add(estAwayOrNigh_All_Off, 30*60, "", {{"function",function() isLongAwayOrNightAllOff_AMPLI = true end}}) -- après 30 minutes met long away àtrue
	-- Ampli déjàallumé, désactive Auto on after long away
  GEA.add({{"Sensor+", id2["TV___AMPLI"], 40},{"function",function() return isLongAwayOrNightAllOff_AMPLI end}}, 60, "", {{"function",function() isLongAwayOrNightAllOff_AMPLI = false end}}) -- désactive si l'ampli est allumé (manuellement ou pas) et que isLongAwayOrNightAllOff_AMPLI = true 
	-- At Home entre 6h et 11h - Marantz Scénario Matin
  GEA.add({estAt_Home,{"function",function() return isLongAwayOrNightAllOff_AMPLI end}}, 2*60, "",{
	{"Time", "06:00", "11:00"},
	{"Slider", id2["SONOS_REMOTE"], "15", 33},-- Set Volume to 33
	{"Function", function() fibaro:sleep(500) end},
	{"VirtualDevice",id2["SONOS_REMOTE"],"24"},-- R3 Pure FM
	--{"VirtualDevice", id2["MARANTZ_SALON"], 23},
	{"function",function() isLongAwayOrNightAllOff_AMPLI=false end}
	})
	-- At Home entre 17h et 19h30 - Marantz Scénario Soir
  GEA.add({estAt_Home,{"function",function() return isLongAwayOrNightAllOff_AMPLI end}}, 2*60, "",{
	{"Time", "17:00", "19:30"},
	{"Slider", id2["SONOS_REMOTE"], "15", 20},-- Set Volume to 20
	{"Function", function() fibaro:sleep(500) end},
	{"VirtualDevice",id2["SONOS_REMOTE"],"25"},-- R4 SOLO Piano
	--{"VirtualDevice", id2["MARANTZ_SALON"], 24},
	{"function",function() isLongAwayOrNightAllOff_AMPLI=false end}
	})
---------- GESTION DES CAMERAS-----------------
	-- Away ou Night_All_Off, Allumage des cameras
  GEA.add(estAwayOrNigh_All_Off, -1, "", {{"turnOn", id2["POE_CAM_SALON__P1_"]},{"Function", function() fibaro:sleep(500) end},{"turnOn", id2["POE_CAM_CUISINE__P6_"]}})
	-- Away ou Night_All_Off, Enable All Cameras Syno (délai 60s pour allumage POE
  GEA.add(estAwayOrNigh_All_Off, 60, "", {{"VirtualDevice", id2["CAMERAS"], 6}})
	-- Pas Away ou Night_All_Off, extinction cameras Cuisine et entrée après 10 min
  GEA.add(estNotAwayOrNigh_All_Off, 10*60, "", {{"turnOff", id2["POE_CAM_SALON__P1_"]},{"Function", function() fibaro:sleep(500) end},{"turnOff", id2["POE_CAM_CUISINE__P6_"]}})
	-- Pas Away ou Night_All_Off, Enable Out Only Cameras Syno après 2 min
  GEA.add(estNotAwayOrNigh_All_Off, 2*60, "", {{"VirtualDevice", id2["CAMERAS"], 7}})
	-- Garage a 99% plus de 10 min (mode manuel forcé) -> disable camera Garage
  GEA.add({estNotAwayOrNigh_All_Off,{"Value", id2["GARAGE"],99}}, 10, "Garage à99% depuis #duration# -> Camera Garage Disabled à#time#", {{"VirtualDevice", id2["CAMERAS"], 15}})
	-- Garage moins de 99% depuis #duration# -> Camera Garage Enabled à#time#
  GEA.add({estNotAwayOrNigh_All_Off,{"Value-", id2["GARAGE"],99}}, 2*60, "", {{"VirtualDevice", id2["CAMERAS"], 14}})
-------------------SONNETTE--------------------
	-- On a sonné àla porte, notify 2 portables et send pics pour 1 minute
	-- VD bouton 3 = all 30s - bouton 9 = out 1 min - bouton 10 = out 3 min
  GEA.add({{"Value+", id2["CARILLON"], 0},estAwayOrNigh_All_Off}, -1, "Sonnette actionnée à#time# le #date#", {
	{"Portable", id["PHONE_SEB"]}, {"Portable", id["PHONE_GG"]},
	{"VirtualDevice", id2["SONNETTE"], "2"}, -- start videophone
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "10", 15}, -- Parking set Freq to 15s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "11", 32}, -- Parking set Shots to 32-10=22
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "13", 60}, -- Terrasse set Freq to 60s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "14", 14}, -- Terrasse set Shots to 14-10=4
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "16", 120}, -- Garage set Freq to 120s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "17", 12}, -- Garage set Shots to 12-10=2
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "19", 120}, -- Salon set Freq to 120s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "20", 12}, -- Salon set Shots to 12-10=2
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "22", 120}, -- Cuisine set Freq to 120s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "23", 12}, -- Cuisine set Shots to 12-10=2
	})
  GEA.add({{"Value+", id2["CARILLON"], 0},estNotAwayOrNigh_All_Off}, -1, "Sonnette actionnée à#time# le #date#", {
	{"Portable", id["PHONE_SEB"]}, {"Portable", id["PHONE_GG"]},
	{"VirtualDevice", id2["SONNETTE"], "2"}, -- start videophone
	{"Label", id2["SONOS_SAY_IT"], "Message", "Bonjour, Quelqun a sonné àla porte"},TTS_Default,
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "10", 30}, -- Parking set Freq to 30s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "11", 14}, -- Parking set Shots to 16-10=4
	})
-------------------BABYPHONES------------------
	-- Si Prise BaybyPhone Thomas ou Emilien ON, alors VG KIDS SLEEPING et Lapin Blanc sinon AT HOME et Lapin Blanc (Lapin Vert via Gea Alarm)
  GEA.add(id2["BABYPHONE_EMILIEN"], -1, "", {{"turnOn", id2["BABYPHONE_THOMAS"]},{"VirtualDevice", id2["COLOR_LAPIN_THOMA"], 18},{"VirtualDevice", id2["COLOR_LAPIN_EMILIEN"], 18},estKids_Sleeping})
  GEA.add(id2["BABYPHONE_THOMAS"], -1, "", {{"turnOn", id2["BABYPHONE_EMILIEN"]},{"VirtualDevice", id2["COLOR_LAPIN_THOMA"], 18},{"VirtualDevice", id2["COLOR_LAPIN_EMILIEN"], 18},estKids_Sleeping})
	-- BabyPhone off when kid sleeping off
  GEA.add({id2["BABYPHONE_EMILIEN"],est_House_Sleeping}, -1, "", {{"Inverse"},{"turnOff", id2["BABYPHONE_THOMAS"]},estAt_Home,{"VirtualDevice", id2["COLOR_LAPIN_THOMA"], 18},{"VirtualDevice", id2["COLOR_LAPIN_EMILIEN"], 18}})
  GEA.add({id2["BABYPHONE_THOMAS"],est_House_Sleeping}, -1, "", {{"Inverse"},{"turnOff", id2["BABYPHONE_EMILIEN"]},estAt_Home,{"VirtualDevice", id2["COLOR_LAPIN_THOMA"], 18},{"VirtualDevice", id2["COLOR_LAPIN_EMILIEN"], 18}})
---------------------HALL----------------------
	-- Allumle la lampe du hall si détection de mouvement. et si moins de 59% (économie zwave si lampe allumée)
  GEA.add({id2["HALL_MVT"], estNotHouse_Manuel,estSombre,{"Value-", id2["HALL"],59}}, -1, "", {{"Function", function() fibaro:call(id2["HALL"], "setValue", "99") end}})
	-- Eteindre la lampe du hall si pas de présence plus de 3 mn.
  local malampehall = GEA.add({id2["HALL"],estNotSimu_Presence}, 3*60, "", {{"turnOff",id2["HALL"]}})
  GEA.add(id2["HALL_MVT"], -1, "", {{"RestartTask", malampehall}})
-------------------- WC -----------------------
	-- Allumage à95% dès que détection mouvement. Le if permet de ne pas renvoyer l'ordre d'allumage si la lampe est déjàallumée
  GEA.add({id2["WC_MVT"],{"Value-", id2["WC"],89}}, -1, "",{{"Function", function() fibaro:call(id2["WC"], "setValue", "95") end}})
	-- On dimme la lampe automatiquement après 5 mn et on l'éteint après 2mn si pas de mouvement ou si la lampe àété remontée a plus de 89%
  local malampewc = GEA.add({"Value+", id2["WC"],89}, 5*60, "",{{"Value", 15}})
  local malampewcdim = GEA.add({{"Value-", id2["WC"],55},{"Value+", id2["WC"], 1}}, 2*60,"",{{"Value", id2["WC"], 95},{"Function", function() fibaro:sleep(300) end},{"turnOff"}})
	-- Relance des tâches en cas de détection
  GEA.add(id2["WC_MVT"], -1, "", {{"RestartTask", malampewc}})
  GEA.add(id2["WC_MVT"], -1, "", {{"RestartTask", malampewcdim}})
--------------------SALON----------------------
	-- Si l'ampli comsomme moins de 40w depuis 30 minutes, on eteint ampli et pause XBMC
	-- Pause XBMC at #time# car conso à#value#
  GEA.add({"Sensor-", id2["TV___AMPLI"], 40}, 30*60, "", {{"VirtualDevice",id2["MARANTZ_SALON"],"6"},{"VirtualDevice",id2["XBMC_REMOTE"],"2"}}) 
	-- Marantz set to Day Mode at #time#
  GEA.add({{"Sensor+", id2["TV___AMPLI"], 40},estAt_Home}, 30, "", {{"VirtualDevice",id2["MARANTZ_SALON"],"15"}})
---------------------
	-- Notifie si TV allumée depuis plus de 3 Heures
  GEA.add({"Sensor+", id2["TV___AMPLI"], 150}, 180*60, "TV Allumée depuis #duration# (#value# Watt)",{
	{"Portable", id["PHONE_SEB"]},
	--{"Global", "Karotz", ". Bonjour, jattire votre attention que la TV est allumée depuis #duration#. La consomation est de #value# Watt"},{"VirtualDevice", id2["KAROTZ"],"1"},
	{"Label", id2["SONOS_SAY_IT"], "Message", "Télévision allumée depuis 3 heures. La consomation est de #value# Watt"},TTS_Default
	})
------------------- BUREAU --------------------
	-- la nuit allume centrale bureau à30%
  GEA.add({id2["BUREAU_MVTZ"],{"Value", id2["BUREAU"] ,0},estNotHouse_Manuel,estNotSimu_Presence}, -1, "",{{"Time", "06:00", "23:00"},{"turnOn", id2["LED_BUREAU"]},{"Value", id2["BUREAU"], 98}})
  GEA.add({id2["BUREAU_MVTZ"],{"Value", id2["BUREAU"] ,0},estNotHouse_Manuel,estNotSimu_Presence}, -1, "",{{"Time", "23:00", "06:00"},{"turnOn", id2["LED_BUREAU"]},{"Value", id2["BUREAU"], 30}})
  -- Si lampe déjàallumée, dimme à30 en heure de nuit sauf si alumage manuel (99) ou double click
  GEA.add({{"Value", id2["BUREAU"] ,98},estNotHouse_Manuel,estNotSimu_Presence}, 30, "",{{"Time", "23:00", "06:00"},{"turnOn", id2["LED_BUREAU"]},{"Value", id2["BUREAU"], 30}})
	-- après 15 min éteint Centrale bureau si pas de MVT et 5 minutes après LED bureau
  local malampebureau = GEA.add({{"Value+", id2["BUREAU"],1},estNotHouse_Manuel,estNotSimu_Presence}, 5*60, "",{{"Value", id2["BUREAU"], 99},{"Function", function() fibaro:sleep(1000) end},{"turnOff", id2["BUREAU"]}})
  local maledbureau = GEA.add({{"Value", id2["LED_BUREAU"],1},estNotHouse_Manuel,estNotSimu_Presence}, 10*60, "",{{"turnOff", id2["LED_BUREAU"]}})
  GEA.add(id2["BUREAU_MVTZ"], -1, "", {{"RestartTask", malampebureau},{"RestartTask", maledbureau}})
	-- relance en cas de mouvement continu (blindtime) sauf si lampe off (manual off) - la durée doit être inférieur àdurée malampebureau
  GEA.add({id2["BUREAU_MVTZ"],{"Value+", id2["BUREAU"],1}}, 4*60, "", {{"RestartTask", malampebureau},{"RestartTask", maledbureau},{"Repeat"}})
-----------------CORNICHE_REZ------------------
	-- si Periode luminosité (Matin 5h30, journée et début soirée ->20h30) allumer à98% si moins de 98% (99% = alumage Manuel) "Allumage Corniche à#time#"
	-- Allumage puissance suivant période et luminosité
  GEA.add({id2["SAM_MVT"],{"Value-", id2["CORNICHE_REZ"],98}, estNotHouse_Manuel,estSombre}, -1, "",{PeriodeLumiCornicheSAM, {"Value", id2["CORNICHE_REZ"], 98}})
  GEA.add({id2["SAM_MVT"],{"Value-", id2["CORNICHE_REZ"],23}, estNotHouse_Manuel}, -1, "",{PeriodeDimCornicheSAM, {"Value", id2["CORNICHE_REZ"], 23}})
	-- Après 3 min sans mouvement on dimme la lampe à23% (22% stable aussi) si entre 24 et 99% donc pas si éteinte ou 99% "Dim Corniche à#time#"
  local maCornicheRez = GEA.add({{"Value+", id2["CORNICHE_REZ"],23},{"Value-", id2["CORNICHE_REZ"],99},estNotHouse_Manuel}, 3*60, "",{{"Value", id2["CORNICHE_REZ"], 23}})
	-- si pas de mouvement pendant 120 minutes et periode dim, mise à99% et extinction (si allumage suivant (manuel) à99%, -> dim désactivé) "Extinction Corniche à#time#"
  local maCornicheRezDim = GEA.add({{"Value-", id2["CORNICHE_REZ"],99},{"Value+", id2["CORNICHE_REZ"],1},estNotHouse_Manuel,estSombre}, 120*60, "",{{"Value", id2["CORNICHE_REZ"], 99},{"Function", function() fibaro:sleep(1000) end},{"turnOff",id2["CORNICHE_REZ"]}})
  -- en période lumineuse, time out à60 secondes
  local maCornicheRezDimLumi = GEA.add({{"Value-", id2["CORNICHE_REZ"],99},{"Value+", id2["CORNICHE_REZ"],1},estNotHouse_Manuel,estLumineux}, 60, "",{{"Value", id2["CORNICHE_REZ"], 99},{"Function", function() fibaro:sleep(1000) end},{"turnOff",id2["CORNICHE_REZ"]}})  
	-- Relance des tâches en cas de détection si la lampe est allumée (économise GEA)
  GEA.add({{"Value", id2["SAM_MVT"],1},{"Value+", id2["CORNICHE_REZ"], 1}}, -1, "", {{"RestartTask", maCornicheRez},{"RestartTask", maCornicheRezDim},{"RestartTask", maCornicheRezDimLumi}})
-------------------SAM-------------------------
	-- si Periode luminosité (Matin 5h30, journée et début soirée ->20h30) allumer à95% si moins de 95% (99% = alumage Manuel) "Allumage Corniche à#time#"
  GEA.add({{"Value", id2["SAM_MVT"],1},{"Value-", id2["SALLE_A_MANGER"],95},estNotHouse_Manuel,estSombre}, -1, "",{PeriodeLumiSAM,{"Value", id2["SALLE_A_MANGER"], 95}})
	-- Après 8min on dimme la lampe à4% si pas de mouvement et pas manuel (99%)
  local maLampeSam = GEA.add({{"Value+", id2["SALLE_A_MANGER"],4},{"Value-", id2["SALLE_A_MANGER"],99}}, 8*60, "",{{"Value", id2["SALLE_A_MANGER"], 4}})
	-- Après 2 min on met la lampe à95% (prète pour prochain allumage) puis on éteint, uniquement si la lampe est dimmée
  local maLampeSamDim = GEA.add({{"Value-", id2["SALLE_A_MANGER"],5},{"Value+", id2["SALLE_A_MANGER"], 1}}, 2*60,"",{{"Value", id2["SALLE_A_MANGER"], 95},{"Function", function() fibaro:sleep(300) end},{"turnOff"}})
	-- Relance des tâches en cas de détection si la lampe est allumée (économise GEA)
  GEA.add({{"Value", id2["SAM_MVT"],1},{"Value+", id2["SALLE_A_MANGER"], 1}}, -1, "", {{"RestartTask", maLampeSam},{"RestartTask", maLampeSamDim}})
-------------------CELLIER---------------------
  	-- Allume la lampe du cellier si détection de mouvement. et si moins de 1% (économie zwave si lampe allumée)
  GEA.add({id2["CELLIER_MVT"], estNotHouse_Manuel,{"Value-", id2["CELLIER"],1}}, -1, "", {{"Value", id2["CELLIER"], 99}})
	-- Eteindre la lampe du cellier si pas de présence plus de 3 mn.
  local maLampeCellier = GEA.add({id2["CELLIER"],estNotSimu_Presence}, 3*60, "", {{"turnOff",id2["CELLIER"]}})
  GEA.add(id2["CELLIER_MVT"], -1, "", {{"RestartTask", maLampeCellier}})
--------------ROUTEUR COULOIR------------------
	-- Si le détecteur Couloir détecte une présence ou lampe parents allumée, on allume le routeur 1er
  GEA.add({id2["COULOIR_MVT"],{"Value-",id2["ROUTEUR_1ER__P2_"],1}}, -1, "",{{"turnOn", id2["ROUTEUR_1ER__P2_"]}}) -- Turn on ne fonctionne pas sans le rappel de l'id.
------------- CORNICHE COULOIR-----------------
	-- allumer lampe automatiquement en cas de mouvement (au % correspondant àla période)
	-- Allumage Corniche Couloir à98% à#time#
  GEA.add({id2["COULOIR_MVT"],{"Value-", id2["CORNICHE_COULOIR"],98}, estNotHouse_Manuel,estNotSimu_Presence,est_NotHouse_Sleeping}, -1, "",{{"Value", id2["CORNICHE_COULOIR"], 98},{"turnOn",id2["COULOIR"]}})
	-- Allumage Corniche Couloir à"..DimCouloir.."% à#time#
  GEA.add({id2["COULOIR_MVT"],{"Value-", id2["CORNICHE_COULOIR"],99}, estNotHouse_Manuel,estNotSimu_Presence,est_House_Sleeping}, -1, "",{{"Value", id2["CORNICHE_COULOIR"], DimCouloir},{"turnOn",id2["COULOIR"]}})
	-- On dimme la lampe àDimCouloir% si entre 1 et 99% donc pas si éteinte ou 99%
	-- Dim Corniche Couloir à"..DimCouloir.."% à#time#
  GEA.add({{"Value+", id2["CORNICHE_COULOIR"],DimCouloir},{"Value-", id2["CORNICHE_COULOIR"],99},estNotHouse_Manuel,estNotSimu_Presence,est_House_Sleeping}, 10, "",{{"Value", id2["CORNICHE_COULOIR"], DimCouloir}})
	-- si pas de mouvment pendant 5 minutes et periode off, mise à99% et extinction (si allumage suivant (manuel) à99%, -> dim désactivé)
	-- Extinction Corniche Couloir à#time#
  local maCornicheCouloir = GEA.add({{"Value-", id2["CORNICHE_COULOIR"],99},{"Value+", id2["CORNICHE_COULOIR"],1},estNotHouse_Manuel,estNotSimu_Presence,}, 5*60, "",{{"turnOff",id2["CORNICHE_COULOIR"]}})
	-- Extoinction lampe centrale couloir uniquement si pas kids_sleeping
  local maLampeCouloir = GEA.add({{"Value", id2["COULOIR"],1},estNotHouse_Manuel,estNotSimu_Presence,est_NotHouse_Sleeping}, 5*60, "",{{"turnOff",id2["COULOIR"]}})
	-- Relance des tâches en cas de détection si la lampe est allumée (économise GEA)
  GEA.add({{"Value", id2["COULOIR_MVT"],1},{"Value", id2["COULOIR"], 1}}, -1, "", {{"RestartTask", maLampeCouloir},{"RestartTask", maCornicheCouloir}})
-------------GESTION POUR SIMU PRESENCE--------
  GEA.add({{"Value+", id2["CORNICHE_COULOIR"],DimCouloir},estAway}, 10, "estAway - Dim Corniche Couloir à"..DimCouloir.."% à#time#",{{"Value", id2["CORNICHE_COULOIR"], DimCouloir}})
	-- Éteint lumière couloir àl'aube si away (allumé par simulateur de présence)
  GEA.add({id2["CORNICHE_COULOIR"], estAway}, 10, "Sunrise and Away - Lampe couloir turned off at #time#",{{"Time", "Sunrise+30", "Sunrise+35"}, {"turnOff"}})
-------------------- SDB ----------------------
	-- Gestion scene Activation ruban RGB
  GEA.add({{"SceneActivation", id2["SDB_CORNICHE"], 26},{"Value-", id2["SDB_RUBAN_LED"],6}}, -1, "",{{"Value", id2["SDB_RUBAN_LED"], 99}})
  GEA.add({{"SceneActivation", id2["SDB_CORNICHE"], 26},{"Value+", id2["SDB_RUBAN_LED"],4}}, -1, "",{{"turnOff", id2["SDB_RUBAN_LED"]}})
  GEA.add({{"SceneActivation", id2["SDB_CORNICHE"], 22},{"Value", id2["SDB_RUBAN_LED"],0}}, -1, "",{{"Value", id2["SDB_RUBAN_LED"], 5}}) -- long press allume dimmé si éteint
  GEA.add({{"SceneActivation", id2["SDB_CORNICHE"], 22},{"Value", id2["SDB_RUBAN_LED"],5}}, -1, "",{{"Value", id2["SDB_RUBAN_LED"], 99}})
  GEA.add({{"SceneActivation", id2["SDB_CORNICHE"], 22},{"Value+", id2["SDB_RUBAN_LED"],6}}, -1, "",{{"Value", id2["SDB_RUBAN_LED"], 5}})
	-- Allume led a 99 si lampe sdb allumée. inverse si éteint
  GEA.add({{"Value+", id2["SDB_CORNICHE"], 1},estNotSimu_Presence}, 10, "", {{"Value", id2["SDB_RUBAN_LED"], 99}})
  GEA.add({{"Value-", id2["SDB_CORNICHE"], 1},estNotSimu_Presence}, 10, "", {{"Value", id2["SDB_RUBAN_LED"], 0}})
	-- la nuit, si night all off allume à10% RGBW pendant 2m puis éteint, sinon 99%
  GEA.add({id2["SDB_MVTZ"],{"Value", id2["SDB_RUBAN_LED"], 0},estNotHouse_Manuel,estNotNight_All_Off}, -1, "",{{"Time", "sunset-180", "06:00"},{"Value", id2["SDB_RUBAN_LED"], 99}})
  GEA.add({id2["SDB_MVTZ"],{"Value", id2["SDB_RUBAN_LED"], 0},estNotHouse_Manuel,estNight_All_Off}, -1, "",{{"Time", "sunset-180", "06:00"},{"Value", id2["SDB_RUBAN_LED"], 5}})
	-- pendant la journée allume si sombre
  GEA.add({id2["SDB_MVTZ"],{"Value", id2["SDB_RUBAN_LED"], 0},estNotHouse_Manuel,estSombre}, -1, "",{{"Time", "06:00", "sunset-180"},{"Value", id2["SDB_RUBAN_LED"], 99}})
	-- après 3 min éteint ruban led si pas de MVT et lampe principale éteinte
  local malampesdb = GEA.add({estNotHouse_Manuel,estNotSimu_Presence,{"Value-", id2["SDB_CORNICHE"], 1}}, 3*60, "",{{"turnOff", id2["SDB_RUBAN_LED"]}})
	-- après 10 min éteint lampe manuelle si pas de MVT
  local malampesdbFull = GEA.add({estNotHouse_Manuel,estNotSimu_Presence}, 15*60, "",{{"turnOff", id2["SDB_CORNICHE"]},{"turnOff", id2["SDB_ARMOIRES"]},{"turnOff", id2["CHAUFFERETTE_SDB"]}})
  GEA.add(id2["SDB_MVTZ"], -1, "", {{"RestartTask", malampesdb},{"RestartTask", malampesdbFull}})
	-- relance en cas de mouvement continu (blindtime) sauf si lampe off (manual off) - la durée doit être inférieur àdurée malampesdb
  GEA.add({id2["SDB_MVTZ"],{"Value+", id2["SDB_RUBAN_LED"],1}}, 2*60, "", {{"RestartTask", malampesdb},{"RestartTask", malampesdbFull},{"Repeat"}})
	-- re-active prise chaufferette si off (éteinte après 15 minutes inactivité sdb)
  GEA.add({{"Value", id2["CHAUFFERETTE_SDB"], 0}}, 10, "", {{"turnOn", id2["CHAUFFERETTE_SDB"]}})
-------------------- SDD ----------------------
	-- Gestion scene Activation ruban RGB
  GEA.add({{"SceneActivation", id2["SALLE_DE_DOUCHE"], 26},{"Value-", id2["SDD_RUBAN_LED"],6}}, -1, "",{{"Value", id2["SDD_RUBAN_LED"], 99}})
  GEA.add({{"SceneActivation", id2["SALLE_DE_DOUCHE"], 26},{"Value+", id2["SDD_RUBAN_LED"],4}}, -1, "",{{"turnOff", id2["SDD_RUBAN_LED"]}})
  GEA.add({{"SceneActivation", id2["SALLE_DE_DOUCHE"], 22},{"Value", id2["SDD_RUBAN_LED"],0}}, -1, "",{{"Value", id2["SDD_RUBAN_LED"], 5}}) -- long press allume dimmé si éteint
  GEA.add({{"SceneActivation", id2["SALLE_DE_DOUCHE"], 22},{"Value", id2["SDD_RUBAN_LED"],5}}, -1, "",{{"Value", id2["SDD_RUBAN_LED"], 99}})
  GEA.add({{"SceneActivation", id2["SALLE_DE_DOUCHE"], 22},{"Value+", id2["SDD_RUBAN_LED"],6}}, -1, "",{{"Value", id2["SDD_RUBAN_LED"], 5}})
	-- Allume led a 99 si lampe sdd allumée. inverse si éteint
  GEA.add({{"Value+", id2["SALLE_DE_DOUCHE"], 1},estNotSimu_Presence}, 10, "", {{"Value", id2["SDD_RUBAN_LED"], 99}})
  GEA.add({{"Value-", id2["SALLE_DE_DOUCHE"], 1},estNotSimu_Presence}, 10, "", {{"Value", id2["SDD_RUBAN_LED"], 0}})
	-- la nuit, si night all off allume à10% RGBW pendant 2m puis éteint, sinon 99%
  GEA.add({id2["SDD_MVTZ"],{"Value", id2["SDD_RUBAN_LED"], 0},estNotHouse_Manuel,est_NotHouse_Sleeping}, -1, "",{{"Time", "sunset-180", "06:00"},{"Value", id2["SDD_RUBAN_LED"], 99}})
  GEA.add({id2["SDD_MVTZ"],{"Value", id2["SDD_RUBAN_LED"], 0},estNotHouse_Manuel,est_House_Sleeping}, -1, "",{{"Time", "sunset-180", "06:00"},{"Value", id2["SDD_RUBAN_LED"], 5}})
	-- pendant la journée allume si sombre
  GEA.add({id2["SDD_MVTZ"],{"Value", id2["SDD_RUBAN_LED"], 0},estNotHouse_Manuel,estSombre}, -1, "",{{"Time", "06:00", "sunset-180"},{"Value", id2["SDD_RUBAN_LED"], 99}})
	-- après 3 min éteint ruban led si pas de MVT et lampe principale éteinte
  local malampesdd = GEA.add({estNotHouse_Manuel,estNotSimu_Presence,{"Value-", id2["SALLE_DE_DOUCHE"], 1}}, 3*60, "",{{"turnOff", id2["SDD_RUBAN_LED"]}})
	-- après 10 min éteint lampe manuelle si pas de MVT
  local malampesddFull = GEA.add({estNotHouse_Manuel,estNotSimu_Presence}, 15*60, "",{{"turnOff", id2["SALLE_DE_DOUCHE"]}})
  GEA.add(id2["SDD_MVTZ"], -1, "", {{"RestartTask", malampesdd},{"RestartTask", malampesddFull}})
	-- relance en cas de mouvement continu (blindtime) sauf si lampe off (manual off) - la durée doit être inférieur àdurée malampesdd
  GEA.add({id2["SDD_MVTZ"],{"Value+", id2["SDD_RUBAN_LED"],1}}, 2*60, "", {{"RestartTask", malampesdd},{"RestartTask", malampesddFull},{"Repeat"}})
---------------DETECTION PRESENCE--------------
	-- Signale GG ou seb present at Home
  GEA.add({{"Global", "Phone_GG_Present", "1"},estNotNight_All_Off}, -1, "GG est arrivée à#time#", {{"Portable", id["PHONE_SEB"]}})
  GEA.add({{"Global", "Phone_GG_Present", "0"},estNotNight_All_Off}, -1, "GG est partie à#time#", {{"Portable", id["PHONE_SEB"]}})
  GEA.add({{"Global", "Phone_Seb_Present", "1"},estNotNight_All_Off}, -1, "Seb est arrivé à#time#", {{"Portable", id["PHONE_SEB"]}})
  GEA.add({{"Global", "Phone_Seb_Present", "0"},estNotNight_All_Off}, -1, "Seb est parti à#time#", {{"Portable", id["PHONE_SEB"]}})
-----------------------------------------------
----------------- THERMOSTAT ------------------
	-- set THERMOSTATc to Away or Program when away or not away
	-- Set Thermostats to Away at #time# - ,{"Portable", id["PHONE_FAKE"]},{"Email", id["ADMIN"],"Notification GEA V5 Instance 1"}
  GEA.add({estAway,estWinter}, 60, "", {{"VirtualDevice",id2["NETATMO_THERMOSTAT"],"2"}})
	-- Set Thermostats to Program at #time# - ,{"Portable", id["PHONE_FAKE"]},{"Email", id["ADMIN"],"Notification GEA V5 Instance 1"}
  GEA.add({estNotAway,estWinter}, 60, "", {{"VirtualDevice",id2["NETATMO_THERMOSTAT"],"3"}})
	-- Set Thermostats to Frost Gard (Summer) at #time# - ,{"Portable", id["PHONE_FAKE"]},{"Email", id["ADMIN"],"Notification GEA V5 Instance 1"}
  GEA.add(estSummer, 60, "", {{"VirtualDevice",id2["NETATMO_THERMOSTAT"],"4"}})
	-- après 10 min re-set pour être sûr
  GEA.add({estAway,estWinter}, 600, "", {{"VirtualDevice",id2["NETATMO_THERMOSTAT"],"2"}})
  GEA.add({estNotAway,estWinter}, 600, "", {{"VirtualDevice",id2["NETATMO_THERMOSTAT"],"3"}})
  GEA.add(estSummer, 600, "", {{"VirtualDevice",id2["NETATMO_THERMOSTAT"],"4"}})
-----------------------------------------------
--------------------- VMC ---------------------
	-- read and set vmc to absent and lock manual when away
  GEA.add(estAway, 60, "", {{"Label", id2["VITESSE_VMC"], "VgVmcLock", "Locked"},{"Label", id2["VITESSE_VMC"], "VgVmcSpeed", "Absent"},{"Slider", id2["VITESSE_VMC"], "1", 49}})
  GEA.add(estNotAway, 60, "", {{"Label", id2["VITESSE_VMC"], "VgVmcLock", "Automatique"},{"Slider", id2["VITESSE_VMC"], "1", 49}})  
	-- surveillance V3 VMC plus de 30 minutes
  GEA.add({"Label", id2["VITESSE_VMC"], "VgVmcSpeed", "Rapide"}, 30*60, "VMC en Vitesse #value# depuis #duration# - #time# - #date#", {{"Portable", id["PHONE_SEB"]},{"Repeat"}})
------------------- REVEIL --------------------
  GEA.add({{"Alarm", id2["REVEIL_AURORE_FAMILLE"]}, est_House_Sleeping}, 0, "", {{"Scenario", id["SCENE_REVEIL_DOUCEUR"]}})
  GEA.add({{"Alarm", id2["LAPIN_EMILIEN"]}, est_House_Sleeping}, 0, "Lapin Emilien Passé au vert à#time#", {{"VirtualDevice", id2["COLOR_LAPIN_EMILIEN"], 23},{"VirtualDevice", id2["COLOR_LAPIN_EMILIEN"], 13}})
  GEA.add({{"Alarm", id2["LAPIN_THOMAS"]}, est_House_Sleeping}, 0, "Lapin Thomas Passé au vert à#time#", {{"VirtualDevice", id2["COLOR_LAPIN_THOMA"], 23},{"VirtualDevice", id2["COLOR_LAPIN_THOMA"], 13}})
--------------------METEO----------------------
  GEA.add({estKids_Sleeping,{"Global!", "Meteo_Tomorrow", ""}}, -1, "#value[2]#",{{"Time", "17:00", "21:00"},{"Portable", id["PHONE_SEB"]},{"Portable", id["PHONE_GG"]}})
-- Météo soir poussée, moins de 30s après retour àla maison (si away pendant au moins 30 minutes)
  isLongAwayOff = true -- NE FONCTIONNE PAS EN INSTANTANNE  !!!
  GEA.add(estAway, 30*60, "", {{"function",function() isLongAwayOff = true end}}) -- NE FONCTIONNE PAS EN INSTANTANNE  !!!
  GEA.add({estAt_Home,{"Global!", "Meteo_Tomorrow", ""},{"function",function() return isLongAwayOff end}}, 10, "#value[2]#",{{"Time", "16:00", "20:30"},{"Portable", id["PHONE_SEB"]},{"Portable", id["PHONE_GG"]},{"function",function() isLongAwayOff=false end}})
------------------------------
	-- Météo matin Instantanée au changement de presentState
  GEA.add({est_AtHome_Or_Kids_Sleeping}, -1, "",{{"function",function() fibaro:debug("  ------- waiting 1 s for PrevisousState dependent actions ------") end},{"function",function() fibaro:sleep(1100) end}}) 
  GEA.add({est_AtHome_Or_Kids_Sleeping,{"Global!", "Meteo_Day", ""},{"Global", "PreviousState", "Night_All_Off"}}, -1, "#value[2]#",{{"Portable", id["PHONE_SEB"]},{"Portable", id["PHONE_GG"]}})
	-- !!!!!!!!!!! LES ACTIONs instantanées placées CI DESSOUS AURONT UN DELAI DE 1,1 A CHAQUE CHANGMENT de PresentState = àAt_Home ou Kids_Sleepin !!!!!!!!!! -------------
Lien vers le commentaire
Partager sur d’autres sites

ma gestion de porte de garage mise à  jour :-)

ça marche au quart de mililipoil de Cxx

 

info:

id2["MODE_GARAGE"]

est un simple switch qui me permet de passer le mode de fermeture de la porte de garage de automatique à  manuel ... et vice-versa

oui, je n'aime pas sortir mon téléphone de ma poche pour changer de mode  ;)

local estAt_Home = {"Global", "PresentState", "At_Home"}
local estAway = {"Global", "PresentState", "Away"}
local estNotAway = {"Global!", "PresentState", "Away"}
local estNight_All_Off = {"Global", "PresentState", "Night_All_Off"}
local estNotNight_All_Off = {"Global!", "PresentState", "Night_All_Off"}
local estAwayOrNigh_All_Off = {"Global", "PresentState", "Night_All_Off|Away"}
local estNotAwayOrNigh_All_Off = {"Global!", "PresentState", "Night_All_Off|Away"}

local estKids_Sleeping = {"Global", "PresentState", "Kids_Sleeping"}
local est_House_Sleeping = {"Global", "PresentState", "Kids_Sleeping|Night_All_Off"}
local est_AtHome_Or_Kids_Sleeping = {"Global", "PresentState", "Kids_Sleeping|At_Home"}
local estNotKids_Sleeping = {"Global!", "PresentState", "Kids_Sleeping"}  

local estHouse_Manuel =  {"Global", "House_Mode", "Manual"}
local estNotHouse_Manuel =  {"Global", "House_Mode", "Auto|Scheduler"}

local cond_pres_GG_Alarme_off = {"Global", "PresentState", "Away"},{"Global", "Lock_Away", "Unlocked"},{"Global", "Phone_GG_Present", "1"}
local cond_pres_Seb_Alarme_off = {"Global", "PresentState", "Away"},{"Global", "Lock_Away", "Unlocked"}, {"Global", "Phone_Seb_Present", "1"}
	-- Périodes
local estWinter =  {"Global", "Season", "Winter"}
local estSummer =  {"Global", "Season", "Summer"}
local PeriodeSunSetSAM = {"Time", "Sunset-45", "21:30"}
local PeriodeSunRiseSAM = {"Time", "06:00", "Sunrise+45"}
	-- Garage
local Porte_Gar_En_Attente = {"Global", "Porte_Gar_Action", "En_Attente"}
local Porte_Gar_Demande_Ouverture = {"Global", "Porte_Gar_Action", "Demande_Ouverture"}
local Porte_Gar_Demande_Fermeture = {"Global", "Porte_Gar_Action", "Demande_Fermeture"}
local Porte_Gar_Demande_Actionner = {"Global", "Porte_Gar_Action", "Actionner"}
local estClosed = {"Global", "Porte_Garage", "^Closed$"}
local estOpen = {"Global", "Porte_Garage", "^Open$"}
local estNot_Closed = {"Global", "Porte_Garage", "Not_Closed"}
local estClosed_Or_Not_Closed = {"Global", "Porte_Garage", "^Closed$|Not_Closed"}
local estOpen_Or_Not_Closed = {"Global", "Porte_Garage", "Open|Not_Closed"}
local estNotOpen_Or_Not_Closed = {"Global!", "Porte_Garage", "Open|Not_Closed"}
local SetClosed = {"Global", "Porte_Garage", "Closed"}
local SetOpen = {"Global", "Porte_Garage", "Open"}
local SetNot_Closed = {"Global", "Porte_Garage", "Not_Closed"}
--------------------KEYFOB---------------------
 -- maison est pas away et demande ouverture porte garage via keyfob - demander ouverture
 GEA.add({{"Value", id2["KEY_DISARM_OPEN"],1}, estNotAwayOrNigh_All_Off}, -1, "Demande KEY_DISARM_OPEN -> Actionner Porte Gar. à  #time# le #date#", {Porte_Gar_Demande_Actionner} ) --{Porte_Gar_Demande_Ouverture,Porte_Gar_En_Attente}  ou {Porte_Gar_Demande_Actionner}
-- maison est away et demande ouverture porte garage via keyfob - mettre est at home, demander ouverture PG et armer Part Tag Keypad (for outside notification)
  GEA.add({{"Value", id2["KEY_DISARM_OPEN"],1}, estAwayOrNigh_All_Off}, -1, "Demande KEY_DISARM_OPEN -> Set At_Home & Open à  #time# le #date#", {Porte_Gar_Demande_Ouverture, estAt_Home})


------------------PORTE GARAGE-----------------
  ---------NOTIFICATION PORTE OUVERTE----------
	-- Le scénario enverra un push toutes les 30mn tant que la porte sera ouverte
  GEA.add(id2["GARAGE_BAS"], 30*60, "La porte du garage est ouverte depuis plus de #duration# à  #time#", {{"Repeat"},{"Global", "Karotz", ". Bonjour, jattire votre attention que la porte du garage est ouverte depuis plus de #duration# minutes"}, {"VirtualDevice", id2["KAROTZ"],"1"}}) 
	-----COMMANDE PORTE VIA S2 LAMPE GARAGE----
  GEA.add({{"SceneActivation", id2["GARAGE"], 26}}, -1, "",{Porte_Gar_Demande_Actionner})
	-------GESTION AUTO CLOSE PORTE GARAGE-----
	-- si mode auto et porte ouverte et pas de mouvement pendant 10 minutes, alors push et demande fermeture
	isLongNoMoveGar = false -- ATTENTION, NE FONCTIONNE PAS EN INSTANTANNE  !!!
  GEA.add({{"Value", id2["GARAGE_MVT"],0},{"Value", id2["MODE_GARAGE"],0},estOpen_Or_Not_Closed}, 10*60, "Mode Porte Garage:AUTO. Porte non fermée et pas de mouvement depuis #duration# #time#",{{"Repeat"},{"function",function() isLongNoMoveGar = true end}})
  GEA.add({estOpen_Or_Not_Closed,{"Value", id2["MODE_GARAGE"],0},{"function",function() return isLongNoMoveGar end}}, 31, "Auto close Porte Garage at #time#",{{"function",function() isLongNoMoveGar = false end},Porte_Gar_Demande_Fermeture})
	-- notification porte ouverte en mode manuel
  GEA.add({"Value", id2["MODE_GARAGE"],1}, 2*60*60, "Mode Porte Garage:MANUEL depuis #duration# #time#",{{"Repeat"}})
  -------------ECRITURE DES ETATS--------------
	-- Msg à  la fermeture du garage
  GEA.add(id2["GARAGE_BAS"], -1, "Porte du garage Fermée à  #time# le #date#", {
	SetClosed,
	{"Inverse"},
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "16", 10}, -- Garage set Freq to 10s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "17", 1}, -- Garage set Shots to 1
	})
  GEA.add({id2["GARAGE_BAS"],Porte_Gar_Demande_Fermeture }, -1, "", {Porte_Gar_En_Attente,{"Inverse"}})
	-- Avertissement push si la porte du garage s'ouvre
	-- Porte du garage en Ouverture à  #time# le #date#
  GEA.add(id2["GARAGE_BAS"], -1, "", {
	SetNot_Closed,
	{"Global", "Karotz", "Bonjour, ouverture de la porte du garage"},
	{"VirtualDevice", id2["KAROTZ"],"1"},
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "16", 10}, -- Garage set Freq to 10s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "17", 12}, -- Garage set Shots to 12-10=2
	})
	-- send pic garage après 30 60 et 90secondes après ouverture
  GEA.add(id2["GARAGE_BAS"], 30, "", {
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "16", 30}, -- Garage set Freq to 30s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "17", 14}, -- Garage set Shots to 14-10=4
	})
	-- Avertissement push si la porte du garage ouverte
  GEA.add(id2["GARAGE_HAUT"], -1, "Porte du garage complètement ouverte à  #time# le #date#", {SetOpen})
  GEA.add({id2["GARAGE_HAUT"],Porte_Gar_Demande_Ouverture}, -1, "", {Porte_Gar_En_Attente})
  -- Avertissement push si la porte du garage plus en position ouverte
  -- Porte du garage en Fermeture à  #time# le #date#
  GEA.add(id2["GARAGE_HAUT"], -1, "Porte du garage complètement ouverte à  #time# le #date#", {
	SetNot_Closed,
	{"Inverse"},
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "16", 10}, -- Garage set Freq to 10s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "17", 1}, -- Garage set Shots to 1
	})

	-- Si demande Actionner, then push, actionne remote et reset global à  en_attente
	-- Demande Action Porte Garage à  #time# le #date#
  GEA.add({Porte_Gar_Demande_Actionner}, -1, "", {{"turnOn",id2["REMOTE_GARAGE"]},Porte_Gar_En_Attente})
  --------------DEMANDE OUVERTURE--------------
	-- Si demande d'ouverture et porte fermée, then push et ouvre porte
	-- #value# à  #time# le #date#
  GEA.add({Porte_Gar_Demande_Ouverture, estClosed_Or_Not_Closed}, -1, "", {{"turnOn",id2["REMOTE_GARAGE"]}})
	-- Si demande d'ouverture et porte Ouverte, then push et reset global à  en_attente
	-- #value# Inutile à  #time# le #date#
  GEA.add({Porte_Gar_Demande_Ouverture, estOpen}, -1, "",{Porte_Gar_En_Attente})
	-- Si demande d'ouverture et porte Not Closed, then push, actionne porte
  --GEA.add({{"Global", "Porte_Gar_Action", "Demande_Ouverture"}, estNot_Closed}, -1, "", {{"turnOn",id2["REMOTE_GARAGE"]}})
  -- si se ferme alors que demande ouverture -> on relance
  GEA.add({id2["GARAGE_BAS"],Porte_Gar_Demande_Ouverture}, -1, "Mauvais sens pour #value#. Ré-essai à  #time# le #date#", {{"Inverse"},{"Function", function() fibaro:sleep(1000) end},{"turnOn",id2["REMOTE_GARAGE"]}})
  --------------DEMANDE FERMETURE--------------
	-- Si demande de fermeture et porte ouverte, then push et ferme porte
	-- #value# à  #time# le #date#
  GEA.add({Porte_Gar_Demande_Fermeture, estOpen_Or_Not_Closed}, -1, "", {{"turnOn",id2["REMOTE_GARAGE"]}})
	-- Si demande de fermeture et porte Fermée, then push et reset global à  en_attente
	-- #value# Inutile à  #time# le #date# - ,{"Portable", id["PHONE_FAKE"]},{"Email", id["ADMIN"],"Notification GEA ALARME ET GARAGE"}
  GEA.add({Porte_Gar_Demande_Fermeture, estClosed}, -1, "",{Porte_Gar_En_Attente})
	-- Si demande de fermeture et porte Not Closed, then push, actionne porte
  --GEA.add({Porte_Gar_Demande_Fermeture, estNot_Closed}, -1, "", {{"turnOn",id2["REMOTE_GARAGE"]}})
  -- si s'ouvre alors que demande fermeture -> on relance
  GEA.add({id2["GARAGE_HAUT"],Porte_Gar_Demande_Fermeture}, -1, "Mauvais sens pour #value#. Ré-essai à  #time# le #date#", {
	{"Function", function() fibaro:sleep(1000) end},
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "16", 10}, -- Garage set Freq to 10s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "17", 1}, -- Garage set Shots to 1
	{"turnOn",id2["REMOTE_GARAGE"]}
	}) --{"turnOn",id2["REMOTE_GARAGE"]},

  --------------GESTION ERREUR-----------------
	-- si pas fermé après 90 sec, on relance - normalement déjà  pris en charge par les lignes ci=dessus ? (mauvais sens pour...)
  GEA.add({{"Global", "Porte_Gar_Action", "Demande_Fermeture|Demande_Ouverture"}, estNot_Closed}, 120, "#value# ratée pendant #duration#. Réessai à  #time# le #date#", {
	{"turnOn",id2["REMOTE_GARAGE"]},
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "16", 10}, -- Garage set Freq to 10s
	{"Slider", id2["SEND_PHOTO__5_CAM_"], "17", 1}, -- Garage set Shots to 1
	{"Repeat"}
	})

c'est tout pour aujourd'hui  :P

 

A vos copy/paste  :D

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

l'utilisation de spoiler ne change rien malheureusement... j'ai vérifié, tout est quand même pré-chargé puis caché, pas d'AJAX donc...

Pour suivre tu pouvais aussi poster ta configuration GEA :P:D

Lien vers le commentaire
Partager sur d’autres sites

Malheureusement non... S'il pouvait y avoir GEA en plus du mode bloc et des plugins de Jeedom, je crois que ca en ferait la box "parfaite"... Pour moi en tout cas.

Ma vu que @steven ne fait pas de PHP et aime sa box, la box parfaite n'existera jamais. ;-)

Sent from my Note4

Lien vers le commentaire
Partager sur d’autres sites

Woooohooo, génial !

À mon avis, si tu la poste en deux parties, avec ce qu'il faut de posts vides entre les deux pour passer àla page suivante, ça devrait aller.

Sent from my Note4

Lien vers le commentaire
Partager sur d’autres sites

Voici donc la première partie de mon GEA.

La seconde partie se trouve àla page 3

--[[
%% autostart
%% properties
26 value
342 value
7 value
9 value
15 value
68 value
91 value
163 value
164 value
39 value
20 value
40 value
21 value
48 value
54 value
127 value
128 value
256 value
160 value
96 value
182 value
177 value
44 value
302 sceneActivation
304 sceneActivation
201 value
193 value
209 value
213 value
244 value
240 value
197 value
205 value
283 value
248 value
252 value
%% globals
Auth_TV
Auth_PS3
Incendie
--]]

--[[
-- SECTION : Etage
------------
26 value MVT_HALLNUIT_SDJ
342 value MVT_HALLNUIT_SDB
7 value LUM_HALLNUIT_SDJ
9 value LUM_HALLNUIT_SDB
15 value PRISE_PS3

-- SECTION : Extérieur
------------
68 value PISCPMP
91 value CONTACT_GACHE
163 value BARRIERE_CLOSED
164 value BARRIERE_OPENED
39 value MVT_EST_AVANT
20 value MVT_OUEST_AVANT
40 value MVT_EST_JARDIN
21 value MVT_OUEST_JARDIN

-- SECTION : Rez de chaussée
------------
48 value PRISE_TV
54 value LUM_SDBREZ_LAVABO
127 value ALARME_INTRUSION !Fake device
128 value ALARME_ACTIVE !Fake device
256 value PORTE_COULISS
160 value GV_MVT
96 value GA_MVT
182 value MVT_HALLENTRE_S
177 value MVT_HALLENTRE_C
44 value LUM_HALLENTRE
302 sceneActivation TELEC_CUISINE
304 sceneActivation TELEC_CHPARENTS

-- Détecteurs incentide
------------------------
201 value FUME_BIBLIOTHEQUE
193 value FUME_BUREAU
209 value FUME_MAXIMILIEN
213 value FUME_PAULINE
244 value FUME_HALLNUIT_SDB
240 value FUME_HALLNUIT_SDJ
197 value FUME_SDJ
205 value FUME_SDBETAGE
283 value FUME_GARAGE
248 value FUME_HALLENTRE_C
252 value FUME_HALLENTRE_S


-- SECTION : Section virtuelle
------------

-- SECTION : Sous-sol
------------

--]]

-- 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
-- Special Thanks to :
-- jompa68, Fredric, Diuck, Domodial, moicphil, lolomail, byackee,
-- JossAlf, Did,  sebcbien, chris6783 and all other guy from Domotique-fibaro.fr
-- ------------------------------------------------------------
-- Historique / History
-- ------------------------------------------------------------
-- L'historique complet est diponible ici :
-- http://www.domotique-fibaro.fr/index.php/topic/1082-gea-gestionnaire-dévénements-automatique/?p=12428

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 = {} 
-- GEA.portables = {} 
  
  -- [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 : 25/09/16 ‡ 18:08:17

local DeviceID = {

-- SECTION : Etage
-- ROOM : Bibliothèque
FUME_BIBLIOTHEQUE = 201, LUM_BIBLIOTHEQUE = 58, PRISE_PS3 = 15, THERM_BIBLIOTHEQUE = 60, TMP_BIBLIOTHEQUE = 203, VANNE_BIBLIOTHEQUE = 219,
-- ROOM : Bureau
FUME_BUREAU = 193, LUM_BUREAU = 382, NETWORK_MONITOR = 165, PRISE_BUREAU = 5, SYNOLOGY_MONITORING = 167, THERM_BUREAU = 384, TMP_BRUEAU = 195, VANNE_BUREAU = 229,
-- ROOM : Ch Enfants
FUME_MAXIMILIEN = 209, FUME_PAULINE = 213, SONOS_MAXIMILIEN = 307, THERM_CHENFANTS = 112, TMP_MAXIMILIEN = 211, TMP_PAULINE = 215, VANNE_MAXIMILIEN = 223, VANNE_PAULINE = 217,
-- ROOM : Hall de nuit
FUME_HALLNUIT_SDB = 244, FUME_HALLNUIT_SDJ = 240, LUM_HALLNUIT_SDB = 9, LUM_HALLNUIT_SDJ = 7, MVT_HALLNUIT_SDB = 342, MVT_HALLNUIT_SDJ = 26, TMP_HALLNUIT_SDJ = 242,
-- ROOM : Salle de jeux
FUME_SDJ = 197, THERM_SDJ = 298, TMP_SDJ = 199, VANNE_SDJ = 231,
-- ROOM : SdB Etage
FUME_SDBETAGE = 205, LUM_SDBETAGE = 11, THERM_SDBETAGE = 108, TMP_SDBETAGE = 207, VMC_ETAGE = 13, VANNE_RADIATEUR = 227, VANNE_SECHESERVIETTE = 225,

-- SECTION : Extérieur
-- ROOM : Avant
BOUTON_BARRIERE = 189, BOUTON_GACHE = 191, COURRIER = 312, IN2_RGBW = 32, IN3_RGBW = 33, IN4_RGBW = 34, IPCAM_AVANT = 291, LUM_AVANT = 50, MVT_EST_AVANT = 39, MVT_OUEST_AVANT = 20, NIVEAU_EAU_PLUIE = 31, PRISE_AVANT = 64, SONNETTE = 46, STAT_BARRIERE = 290, SURVSTATION_AVANT = 292,
-- ROOM : Jardin
IPCAM_JARDIN = 288, LUM_JARDIN = 369, LUM_TERREST = 106, LUM_TERROUEST = 296, LUM_TERRPAR = 110, LUM_TERRSUD = 370, MVT_EST_JARDIN = 40, MVT_OUEST_JARDIN = 21, PISCCHAUF = 70, PISCPMP = 68, SURVSTATION_JARDIN = 289, TMP_EXTERIEURE = 129, TMP_PISCINE = 154,

-- SECTION : Rez de chaussée
-- ROOM : Ch Parents
SONOS_PARENTS = 343,
-- ROOM : Cuisine
LUM_CUISINE = 375, LUM_CUISINETABLE = 376, SONOS_CUISINE = 352,
-- ROOM : Garage
ALARME_ACTIVE = 128, ALARME_INTRUSION = 127, BOUTON_GA = 104, BOUTON_GV = 102, FUME_GARAGE = 283, PRISE_MODEM = 187, RESTART_MODEM = 371, STAT_GAR_ANNABELLE = 286, STAT_GAR_VINCENT = 287, TMP_FREZE = 353, TMP_GARAGE = 285,
-- ROOM : Hall d'entrée
FUME_HALLENTRE_C = 248, FUME_HALLENTRE_S = 252, LUM_HALLENTRE = 44, LUX_HALLENTRE_S = 184, MVT_HALLENTRE_C = 177, MVT_HALLENTRE_S = 182, TMP_HALLENTRE_S = 254,
-- ROOM : Salon
ARROSAGE_PLANTES = 118, IPCAM_LIVING = 120, LUM_PETITSALON = 264, LUM_SALLEMANGER = 262, LUM_SALONTV = 258, LUM_VITRINE = 260, NEST_HUMIDITY = 117, NEST_TEMPERATURE = 116, NEST_THERMOSTAT = 115, PORTE_COULISS = 256, PRISE_PETITSALON = 62, PRISE_TV = 48, SURVSTATION_SALON = 119, VAR_INCENDIE = 310,
-- ROOM : SdB Rez
HUM_SDBREZ = 238, LUM_SDBREZ_DOUCHE = 56, LUM_SDBREZ_LAVABO = 54, LUX_SDBREZ = 237, MVT_SDBREZ = 235, TMP_SDBREZ = 236, VANNE_SECHESERVIETTE_SDB_REZ = 233,

-- SECTION : Section virtuelle
-- ROOM : Backup
BACKUP_HEATPANEL = 294, BACKUP_VARIABLES = 293,
-- ROOM : Tehniques
CHECK_INTERNET = 327, CLOCK_SYNC = 332, DEADNODESANALYSIS = 330, EMONCMS = 334, HC2_DIAGNOSTICS = 337, MY_BATTERIES = 329, SONOS_MP3 = 331, SURVSTATION_ALL = 335, SURVSTATION_EXT = 336, TECHNICAL = 333, TOP_10_POWER = 328,
-- ROOM : Variables
PRESENCE_SIMULATOR = 325, VAR_AUTH_LUMINTERIEUR = 316, VAR_AUTH_PS3 = 314, VAR_AUTH_TV = 313, VAR_AUTH_VMCETAGE = 315, VAR_CHAUFFAGE = 321, VAR_DAYPART = 323, VAR_ECS = 317, VAR_NOEL = 322, VAR_PMC = 320, VAR_REMPL_PISCINE = 319, VAR_SAISON = 324, VAR_VACANCES = 318, VARIABLES_GLOBALES = 326,
-- ROOM : Z-Spare
Z121_R1 = 122, Z121_R2 = 124, Z149_IN2 = 152, Z344_IN1 = 346, Z344_IN2 = 347, Z377_R2 = 380, Z49_R2 = 52, Z89_IN2 = 92,
-- ROOM : Z_Fake
IN21_F = 135, IN22_F = 136, IN31_F = 143, IN32_F = 144, R11_F = 271, R12_F = 273, R21_F = 275, R22_F = 277, R31_F = 279, R32_F = 281, R41_F = 355, R42_F = 357, R51_F = 359, R52_F = 361, R61_F = 363, R62_F = 365, TMP12_F = 130, TMP13_F = 131, TMP14_F = 132, TMP21_F = 137, TMP22_F = 138, TMP23_F = 139, TMP24_F = 140, TMP31_F = 145, TMP32_F = 146, TMP33_F = 147, TMP34_F = 148,
-- ROOM : Z_Hidden device
BARRIERE_CLOSED = 163, BARRIERE_OPENED = 164, BOITELETTRES_FACTEUR = 87, BOITELETTRES_PORTE = 88, CONTACT_GACHE = 91, GA_MVT = 96, GA_OPEN = 95, GV_MVT = 160, GV_OPEN = 159, NEST_CONTROLER = 113, TELEC_CHPARENTS = 304, TELEC_CUISINE = 302,

-- SECTION : Sous-sol
-- ROOM : Cave àvin
PORTE_CAVEAVIN = 349, PRISE_PMPEAUPLUIE = 169, TMP_CAVEAVIN = 351,
-- ROOM : Chaufferie
AUTH_PAC = 378, CHAUDIERE_CMD = 74, CHAUDIERE_OUTPUT = 72, CIRCULATEUR_ETAGE = 76, CIRCULATEUR_REZ = 78, FLOD_CHAUFFERIE = 171, HP_UPDATE = 311, SOLAIRE_OUTPUT = 151, TMPH_PANNEAUX = 156, TMPL_PANNEAUX = 155, TMP_CHAUFFERIE = 173, TMP_TISUN = 153,
}


-- ID des users
local UserID = {
    Vincent = 99,
    Annabelle = 98,
    }

-- ID des mobiles
local MobileID = {
    None = 9999,
    V_Nexus5 = 166,
    A_Nexus5 = 999,
    }
  
-- groupes de devices
local groupeLampesInt = {
    DeviceID["LUM_CUISINE"],
    DeviceID["LUM_CUISINETABLE"],
    DeviceID["LUM_VITRINE"],
    DeviceID["LUM_SALONTV"],
    DeviceID["LUM_PETITSALON"],
    DeviceID["LUM_SALLEMANGER"],
    DeviceID["LUM_HALLENTRE"],
    DeviceID["LUM_SDBREZ_LAVABO"],
    DeviceID["LUM_SDBREZ_DOUCHE"],
    DeviceID["LUM_HALLNUIT_SDJ"],
    DeviceID["LUM_HALLNUIT_SDB"],
    DeviceID["LUM_BUREAU"],
    DeviceID["PRISE_BUREAU"],
    DeviceID["LUM_SDBETAGE"],
    DeviceID["LUM_BIBLIOTHEQUE"],
    }

local groupeLampesExt = {
    DeviceID["LUM_AVANT"],
    DeviceID["LUM_JARDIN"],
    DeviceID["LUM_TERREST"],
    DeviceID["LUM_TERRPAR"],
    DeviceID["LUM_TERRSUD"],
    DeviceID["LUM_TERROUEST"],
    }

local groupeOuvrants = {
    DeviceID["PORTE_COULISS"],
    DeviceID["GA_OPEN"],
    DeviceID["GA_MVT"],
    DeviceID["GV_OPEN"],
    DeviceID["GV_MVT"],
    }

local groupeIncendie = {
    DeviceID["FUME_BIBLIOTHEQUE"],
    DeviceID["FUME_BUREAU"],
    DeviceID["FUME_MAXIMILIEN"],
    DeviceID["FUME_PAULINE"],
    DeviceID["FUME_HALLNUIT_SDB"],
    DeviceID["FUME_HALLNUIT_SDJ"],
    DeviceID["FUME_SDJ"],
    DeviceID["FUME_SDBETAGE"],
    DeviceID["FUME_GARAGE"],
    DeviceID["FUME_HALLENTRE_C"],
    DeviceID["FUME_HALLENTRE_S"],
    }

    -- ------------------------------------------------------------
-- [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 = {"SuspendreGEA", "non"}

-- conditions IF
   local estJour = {"Global", "DayPart", "After SunRise"}
   local estNuit = {"Global", "DayPart", "After SunSet"}
   local estNoel = {"Global", "Noel", "Oui"}
   local estECS = {"Global", "ECS", "Oui"}
   local pasECS = {"Global", "ECS", "Non"}
   local estVacances = {"Global", "Vacances", "Oui"}
   local pasVacances = {"Global", "Vacances", "Non"}
   local estEte = {"Global", "Saison", "Eté"}
   local estPMC = {"Global", "PMC", "Oui"}
   local estRemplPiscine = {"Global","Rempl_Piscine", "Oui"}
   local pasRemplPiscine = {"Global","Rempl_Piscine", "Non"}
   local pasIncendie = {"Global", "Incendie", "0"}

   local auth_TV = {"Global", "Auth_TV", "Autorisé"}
   local inter_TV = {"Global", "Auth_TV", "Interdit"}
   local auth_PS3 = {"Global", "Auth_PS3", "Autorisé"}
   local inter_PS3 = {"Global", "Auth_PS3", "Interdit"}
   local auth_LumInterieur = {"Global", "Auth_LumInterieur", "Autorisé"}
   local auth_TerrPar = {"Global", "Auth_TerrPar", "Autorisé"}
   local auth_VMCEtage = {"Global", "Auth_VMCEtage", "Autorisé"}

-- Fonctions 
  -- changements de température de la sonde du balon TISUN
   if (temperature == nil) then temperature = tonumber(fibaro:getValue(DeviceID["TMP_TISUN"],'value')) end
   -- test si température inchangée
   function checktempT()
     local newtemp = tonumber(fibaro:getValue(DeviceID["TMP_TISUN"],'value'))
     if ( temperature == newtemp ) then
       return true
     end
   end
   -- test si température modifiée
   function checktempF()
     local newtemp = tonumber(fibaro:getValue(DeviceID["TMP_TISUN"],'value'))
     if ( temperature ~= newtemp ) then
       temperature = newtemp
       return true
     end
   end
  -- temps depuis le dernier retart de la HC2
   function restart(sec)
     local json = api.get("/settings/info")
     local RestartTime = json.serverStatus
     local runTime = os.time() - RestartTime
     if runTime <= sec then
       return true, runTime
       else return false, runTime
     end
   end

-- variables internes
  -- Ouvrants : Oui ou Non si un ouvrant est ouvert après 22:00  
   if (Ouvrants == nil) then Ouvrants = "Non" end
  -- LampesTmp : Oui ou Non
   if (LampesTmp == nil) then LampesTmp = "Non" end
  -- Lampes : Oui ou Non
   if (Lampes == nil) then Lampes = "Non" end
  -- AlarmeNuit : Oui ou Non
   if (AlarmeNuit == nil) then AlarmeNuit = "Non" end
  -- AlarmeFreeze : Alarm ou Safe
   if (AlarmeFreeze == nil) then AlarmeFreeze = "Safe" end
  -- AlarmeCaveAVins : Alarm ou Safe
   if (AlarmeCaveAVin == nil) then AlarmeCaveAVin = "Safe" end  
  -- IncendieTmp : Oui ou Non (pour tester si un détecteur incendie est activé)
   if (IncendieTmp == nil) then IncendieTmp = "Non" end 
  
-------------------
  -- TESTS
-------------------
  -- Afficher la valeur d'une variable
  -- GEA.add({"Global", "DayPart", ""}, 30, "La valeur de DayPart est : #value#", {{"Inverse"}})
  -- envoie e-mails : {"Email", UserID["Vincent"], "TEST"}
  -- test = "test"
  -- GEA.add ({"Function", function() if test == "test" then return true end end}, 1, "test = test", {{"Email", UserID["Vincent"], "TEST"}})


-------------------
  -- RdC
-------------------
-- Garage
  -- Portes Garage ouvertes la nuit
     GEA.add ({DeviceID["GV_OPEN"], estNuit}, 5*60, "La porte du Garage de Vincent est ouverte depuis #duration#, durant la nuit. (#date# à#time#)", {{"Email", UserID["Vincent"], "ALERTE - porte garage"}, {"Repeat"}})
     GEA.add ({DeviceID["GA_OPEN"], estNuit}, 5*60, "La porte du Garage de Annabelle est ouverte depuis #duration#, durant la nuit. (#date# à#time#)", {{"Email", UserID["Vincent"], "ALERTE - porte garage"}, {"Repeat"}})
  -- Température Freeze & modification de l'icône
     GEA.add ({"Value+", DeviceID["TMP_FREZE"], -15}, 60*60, "La température du Freeze du garage est de #value# °C depuis #duration#. (#date# à#time#)", {{"VirtualDevice", DeviceID["TECHNICAL"], 3}, {"Function", function() AlarmeFreeze = "Alarm" end}, {"Portable", MobileID["V_Nexus5"]}, {"Email", UserID["Vincent"], "ALERTE - température freeze"}, {"Repeat"}})
     GEA.add ({{"Value-", DeviceID["TMP_FREZE"], -17}, {"Function", function() if AlarmeFreeze == "Alarm" then return true end end}}, 10*60, "La température du Freeze du garage est revenue à#value# °C depuis #duration#. (#date# à#time#)", {{"VirtualDevice", DeviceID["TECHNICAL"], 2}, {"Function", function() AlarmeFreeze = "Safe" end}, {"Portable", MobileID["V_Nexus5"]}, {"Email", UserID["Vincent"], "ALERTE - température freeze"}})
  -- Sortir les PMC & papiers
     GEA.add ({DeviceID["ALARME_ACTIVE"], estPMC}, 1, "Il faudra sortir les PMC et les papiers ce soir. (#date# à#time#)", {{"Inverse"}, {"Email", UserID["Vincent"], "INFO - PMC et cartons"}})
     GEA.add ({DeviceID["ALARME_ACTIVE"], estPMC}, 1, "Il faut sortir les PMC et les papiers. (#date# à#time#)", {{"Inverse"}, {"Time", "18:00", "22:30"}, {"VirtualDevice", DeviceID["SONOS_MP3"], 4}})
     GEA.add ({DeviceID["ALARME_ACTIVE"], estPMC}, 1, "Il faut sortir les PMC et les papiers. (#date# à#time#)", {{"Inverse"}, {"Time", "20:00", "03:30"}, {"VirtualDevice", DeviceID["SONOS_MP3"], 4}})
     GEA.add ({DeviceID["ALARME_ACTIVE"], estPMC}, 30*60, "Il faut sortir les PMC et les papiers. (#date# à#time#)", {{"Inverse"}, {"Time", "18:00", "22:30"}, {"VirtualDevice", DeviceID["SONOS_MP3"], 4}, {"Repeat"}})
     GEA.add ({DeviceID["ALARME_ACTIVE"], estPMC}, 15*60, "Il faut sortir les PMC et les papiers. (#date# à#time#)", {{"Inverse"}, {"Time", "06:45", "08:00"}, {"VirtualDevice", DeviceID["SONOS_MP3"], 4}, {"Repeat"}})
     GEA.add (estPMC, 15*60*60, "Vous avez oublié de sortir les PMC et les papiers. (#date# à#time#)", {{"VirtualDevice", DeviceID["VAR_PMC"], 4}, {"Email", UserID["Vincent"], "INFO - PMC et cartons"}})
  -- Icône status garage Vincent
     -- garder le code du VD (bouton Refresh #4) pour pouvoir remplacer GEA et mettre àjour au redémarrage de la box
     GEA.add (DeviceID["GV_MVT"], -1, "GV en mouvement. (#date# à#time#)", {{"VirtualDevice", DeviceID["STAT_GAR_VINCENT"], 2}})
     GEA.add ({DeviceID["GV_MVT"], {"value", DeviceID["GV_OPEN"], 0}}, -1, "GV fermé. (#date# à#time#)", {{"Inverse"}, {"VirtualDevice", DeviceID["STAT_GAR_VINCENT"], 3}})
     GEA.add ({DeviceID["GV_MVT"], DeviceID["GV_OPEN"]}, -1, "GV ouvert. (#date# à#time#)", {{"Inverse"}, {"VirtualDevice", DeviceID["STAT_GAR_VINCENT"], 1}})
  -- Icône status garage Annabelle
     -- garder le code du VD (bouton Refresh #4) pour pouvoir remplacer GEA et mettre àjour au redémarrage de la box
     GEA.add (DeviceID["GA_MVT"], -1, "GA en mouvement. (#date# à#time#)", {{"VirtualDevice", DeviceID["STAT_GAR_ANNABELLE"], 2}})
     GEA.add ({DeviceID["GA_MVT"], {"value", DeviceID["GA_OPEN"], 0}}, -1, "GA fermé. (#date# à#time#)", {{"Inverse"}, {"VirtualDevice", DeviceID["STAT_GAR_ANNABELLE"], 3}})
     GEA.add ({DeviceID["GA_MVT"], DeviceID["GA_OPEN"]}, -1, "GA ouvert. (#date# à#time#)", {{"Inverse"}, {"VirtualDevice", DeviceID["STAT_GAR_ANNABELLE"], 1}})
  
-- Hall d'Entrée
  -- Lampe AUTO
    -- Extinction automatique de la lampe si pas de mvt pendant 30s.
     local autoOffEntree = GEA.add ({{"Value", DeviceID["MVT_HALLENTRE_C"], 0}, {"Value", DeviceID["MVT_HALLENTRE_S"], 0}, DeviceID["LUM_HALLENTRE"], auth_LumInterieur, pasIncendie}, 31, "", {{"turnOff", DeviceID["LUM_HALLENTRE"]}, {"NotStarted"}})
    -- Appuie sur l'interrupteur de la lampe, on stoppe l'extinction automatique.
     GEA.add ({DeviceID["LUM_HALLENTRE"], {"Value", DeviceID["MVT_HALLENTRE_C"], 0}, {"Value", DeviceID["MVT_HALLENTRE_S"], 0}}, -1, "", {{"StopTask", autoOffEntree}})
    -- Allumage de la lampe sur détection mouvement
     GEA.add ({DeviceID["MVT_HALLENTRE_C"], {"Value-", DeviceID["LUX_HALLENTRE_S"], 5}, auth_LumInterieur, {"Value", DeviceID["LUM_HALLENTRE"], 0}}, -1, "Lumière Hall Entrée car MVT_HALLENTRE_C. (#date# à#time#)", {{"turnOn", DeviceID["LUM_HALLENTRE"]}, {"RestartTask", autoOffEntree}})
     GEA.add ({DeviceID["MVT_HALLENTRE_S"], {"Value-", DeviceID["LUX_HALLENTRE_S"], 5}, auth_LumInterieur, {"Value", DeviceID["LUM_HALLENTRE"], 0}}, -1, "Lumière Hall Entrée car MVT_HALLENTRE_S. (#date# à#time#)", {{"turnOn", DeviceID["LUM_HALLENTRE"]}, {"RestartTask", autoOffEntree}})
    -- Extinction de la lampe dans tous les cas après 10 min
     GEA.add ({DeviceID["ALARME_ACTIVE"], DeviceID["LUM_HALLENTRE"], pasIncendie}, 10*60, "Extinction du Hall Entrée, car allumée depuis #duration#. (#date# à#time#)", {{"Inverse"}, {"turnOff", DeviceID["LUM_HALLENTRE"]}, {"Email", UserID["Vincent"], "ALERTE - Lumière Hall Entrée"}})

-- Salon
  -- TV
     GEA.add ({DeviceID["PRISE_TV"], inter_TV}, -1, "La TV a été allumée, alors que en mode interdit => extinction. (#date# à#time#)", {{"turnOff"}, {"Email", UserID["Vincent"], "ALERTE - TV"}})
     GEA.add ({DeviceID["PRISE_TV"], auth_TV}, -1, "La TV a été allumée. (#date# à#time#)", {{"Email", UserID["Vincent"], "INFO - TV"}})
     GEA.add ({DeviceID["PRISE_TV"], auth_TV}, -1, "La TV a été éteinte. (#date# à#time#)", {{"Inverse"}, {"Email", UserID["Vincent"], "INFO - TV"}})
     GEA.add ({inter_TV, DeviceID["PRISE_TV"]}, -1 , "TV en mode interdit => extinction. (#date# à#time#)", {{"turnOff", DeviceID["PRISE_TV"]}, {"Email", UserID["Vincent"], "ALERTE - TV"}})
  -- TV not used
     GEA.add ({{"Sensor-", DeviceID["PRISE_TV"], 120}, DeviceID["PRISE_TV"]}, 10*60, "Consommation TV = #value#W depuis #duration#. (#date# à#time#)", {{"Email", UserID["Vincent"], "INFO - TV"}})
 
-- SdB Rez
  -- LUM_SDBREZ_DOUCHE autoOff
     GEA.add ({DeviceID["LUM_SDBREZ_LAVABO"], DeviceID["LUM_SDBREZ_DOUCHE"]}, -1, "", {{"Inverse"}, {"turnOff", DeviceID["LUM_SDBREZ_DOUCHE"]}})
  -- Mettre ECS àoui pendant 20 min
    -- Tache en sommeil (NotStarted)
    -- va passer la variable ECS àNon si elle est àOui depuis plus de 20 minutes
     local autoECSNon = GEA.add (estECS, 20*60, "", {{"VirtualDevice", DeviceID["VAR_ECS"], 4}, {"NotStarted"}})
    -- passer la variable RCS àOui si la lumière de la douche est allumée depuis 1 min et que la variable ECS est ànon
    -- Elle va aussi redémarrer la tache ci-dessus
     GEA.add ({DeviceID["ALARME_ACTIVE"], DeviceID["LUM_SDBREZ_DOUCHE"], pasECS}, 1*60, "",{{"Inverse"}, {"VirtualDevice", DeviceID["VAR_ECS"], 3}, {"RestartTask", autoECSNon}})
    -- ???
     GEA.add (estECS, 1, "", {{"StopTask", autoECSNon}})
  
-- Chambre Parents
  
 
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...