Aller au contenu

Yaps - Présence Simulator, Un De Plus


sebcbien

Messages recommandés

Un copain m'a demandé d'ajouter la possibilité d'avoir des lampes sélectionnées qui resteraient allumées en permanence durant toute la simulation...

C'est une bonne suggestion permettant de coller encore mieux àla réalité.

Voici un debug pour se faire une idée:

[DEBUG] 23:42:39: Presence Simulator | v2.6.0
[DEBUG] 23:42:39: --------------------------------
[DEBUG] 23:42:39: Not starting Simulation (Simu_presence = 0)
[DEBUG] 23:42:39: Presence Simulator is Terminated
[DEBUG] 23:42:52: Presence Simulator | v2.6.0
[DEBUG] 23:42:52: --------------------------------
[DEBUG] 23:42:52: It s sunset time -> Simulation ON
[DEBUG] 23:42:52: Turning On always on lights:
[DEBUG] 23:42:52: Device: Bureau On
[DEBUG] 23:42:52: Now randomizing other lights...
[DEBUG] 23:42:53: light ID:Cellier status:99
[DEBUG] 23:42:53: entering loop of 6.25 minutes
[DEBUG] 23:43:16: exiting loop of 6.25 minutes
[DEBUG] 23:43:16: TurnOff All lights!
[DEBUG] 23:43:16: Device: Salle De Bain Off
[DEBUG] 23:43:16: Device: Hall Off
[DEBUG] 23:43:16: Device: Cellier Off
[DEBUG] 23:43:16: Device: Chambre Amis Off
[DEBUG] 23:43:16: Device: Bureau Off
[DEBUG] 23:43:16: Manual Light Settings: Turned On light: Hall
[DEBUG] 23:43:16: Simulation is deactivated
[DEBUG] 23:43:16: Presence Simulator is Terminated
[DEBUG] 23:43:16: Simu = 0, Exit from scene

Et voici le code:

--[[ 
%% autostart
%% properties 
%% globals 
Simu_presence 
--]] 

---------------------------------
-- YAPS Presence Simulator V2.6.1
-- SebcBien
-- Février 2015
---------------------------------
--V2.6.1
-- Added naming of devices in the debug during simulation
--V2.6.0
-- Added the possibility to select always on light during simulation
--V2.5.0
-- fixed simulation starting if restarted between endtime & midnight
--v2.4.1
-- fixed big bug simulator restarting after end time
--V2.3.1
-- small notification and debug changes
--V2.3
-- Rewriting the engine
-- now relaunch automatically the next day, even if Simu_presence has not changed
--V2.2
-- Added Manual Stop variable
-- added list of mobiles

if (fibaro:countScenes() > 1) then 
	--fibaro:debug("More than one scene active, exiting!"); 
	fibaro:abort(); 
end 
--------------------- USER SETTINGS --------------------------------
local id = {
	LAMPE_SDB		= 16,
	LAMPE_CH_AMIS		= 24,
	LAMPE_SALON		= 45,
	LAMPE_BUREAU		= 49,
	LAMPE_HALL		= 52,
	LAMPE_CELLIER		= 56,
	LAMPE_CH_EMILIEN	= 58,
	PHONE_NEXUS_5		= 53,
	PHONE_NEXUS_4		= 104
	}
  
local stop_hour = "01"; -- Hour when you want simulation to stop 
local stop_minute = "10"; -- Minute of the hour you want simulation to stop 
-- note 1: the script will not exit while waiting the random time of the last light turned on. So end time can be longer than specified end time
-- note 2: if the global variable changes during the same wait time as above, it will exit immediately (when back home while simulation runs)
local rndmaxtime = 15; -- random time of light change in minutes --> here each device is on maximum 30min 
local ID_devices_lights_always_on = {id["LAMPE_BUREAU"]} -- IDs of lights who will always stay on during simulation
local ID_devices_lights = {id["LAMPE_SDB"],id["LAMPE_HALL"],id["LAMPE_CELLIER"],id["LAMPE_CH_AMIS"]} -- IDs of lights to use in simulation 
--local ID_devices_lights = {id["LAMPE_BUREAU"],id["LAMPE_CELLIER"]} -- Reduced set for test purposes
local activatePush = true; -- activate push when simulation starts and stops 
--local ID_Smartphones = {id["PHONE_NEXUS_5"],id["PHONE_NEXUS_4"]}; 
local ID_Smartphones = {id["PHONE_NEXUS_5"]}; -- list of device receiving Push
local ID_On_After_Simu = 0; -- If next line is commented, no light will turn on after simulation ends
local ID_On_After_Simu = id["LAMPE_HALL"]; -- Only One ID of a light to turn on after simulation ends. Comment this line to turn off this feature
--------------------- USER SETTINGS END ---------------------------- 
----------------------ADVANCED SETTINGS----------------------------- 
local showStandardDebugInfo = true; -- Debug shown in white 
local showExtraDebugInfo = false; -- Debug shown in orange 
local numbers_lights = #ID_devices_lights; -- numbers of light devices listed above 
local manualOveride = fibaro:getGlobal("overideSimuSunset"); -- if = 1 then the simulation is forced
-------------------------------------------------------------------- 
-------------------- DO NOT CHANGE CODE BELOW ---------------------- 
--------------------------------------------------------------------
local version = "2.6.1"; 
local simu = fibaro:getGlobal("Simu_presence"); --value of the global value: simulation is on or off 
local start_simu = fibaro:getValue(1, "sunsetHour"); --Start simulation when sunset
local endtime;
local wait_for_tomorrow = 1;
local NotifLoop = 30;

SimulatorPresenceEngine = {}; 

-- FONCTIONS
Debug = function ( color, message ) 
		fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span")); 
	end 

ExtraDebug = function (debugMessage) 
	if ( showExtraDebugInfo ) then 
		Debug( "orange", debugMessage); 
	end 
	end 

StandardDebug = function (debugMessage) 
	if ( showStandardDebugInfo ) then 
		Debug( "white", debugMessage); 
	end 
	end 

round = function (num, idp)
  local mult = 10^(idp or 0)
  return math.floor(num * mult + 0.5) / mult
end
-- Push message to mobile 
pushMessage = function (sendPush) 
	if (activatePush) then 
    for i=1, #ID_Smartphones do 
      fibaro:call(tonumber(ID_Smartphones[i]), 'sendPush', sendPush); 
      ExtraDebug("Push message ("..sendPush..") sent to mobile: "..tonumber(ID_Smartphones[i])); 
    end 
	end 
	end
-- Calculate endtime 
function SimulatorPresenceEngine:EndTimeCalc() 
	local start = os.date("%H:%M") 
	local time = os.time() 
	local date = os.date("*t", time) 
	local year = date.year 
	local month = date.month 
	local day = date.day 
	endtime = os.time{year=year, month=month, day=day, hour=stop_hour, min=stop_minute, sec=sec}
	-- to calculate when it's daytime
	local currentHour = os.date("*t")
	local sunrise = tonumber(string.sub (fibaro:getValue(1,'sunriseHour'), 1 , 2) ) * 60 + tonumber(string.sub(fibaro:getValue(1,'sunriseHour'), 4) )
	local sunset = tonumber(string.sub (fibaro:getValue(1,'sunsetHour'), 1 , 2) ) * 60 + tonumber(string.sub(fibaro:getValue(1,'sunsetHour'), 4) )
	local now = currentHour.hour * 60 + currentHour.min;
	--ExtraDebug ("debug info: Sunrise : " .. sunrise .. " Sunset : "..sunset .. " Now : " ..now);
	--ExtraDebug ("debug info: Current OS Time" ..os.time()) 
	--ExtraDebug ("debug info: Original planed EndTime " ..endtime) 
	--ExtraDebug ("debug info: os.date: "..os.date("%H:%M").. " sunrisehour: "..fibaro:getValue(1, "sunriseHour"))
	if ((wait_for_tomorrow == 0) and (endtime < os.time())) then -- if endtime is gone and it's the first launch of simulator
		endtime = endtime + 24*60*60 -- add 24h at endtime after the night is gone
		start_simu = fibaro:getValue(1, "sunsetHour"); -- recalculate for next day
		ExtraDebug ("Added 24H to Endtime (first start ending after midnignt)");
		ExtraDebug ("Recalculated Simulation StartHour (Sunset): " .. start_simu); 		
		wait_for_tomorrow = 1	
	end 
	if (wait_for_tomorrow == 1 and (endtime < os.time()) and ((now >= sunrise) and (now <= sunset))) then -- if it looping days and endtime is gone and we are daytime
		endtime = endtime + 24*60*60 -- add 24h at endtime after the night is gone
		start_simu = fibaro:getValue(1, "sunsetHour"); -- recalculate for next day
		ExtraDebug ("Added One Day to Endtime: " .. endtime);
		ExtraDebug ("Recalculated Simulation StartHour (Sunset): " .. start_simu); 	
	end 
	--ExtraDebug ("debug info: Recalculated planed EndTime " ..endtime) 
	end 
-- Simulate Presence Main 
function SimulatorPresenceEngine:Launch() 
	pushMessage("Lights simulation started, will stop at: "..stop_hour..":"..stop_minute) 
	ExtraDebug("Lights simulation started, will stop at: "..stop_hour..":"..stop_minute ); 
	SimulatorPresenceEngine:TurnOn(ID_devices_lights_always_on); 
	while ((os.time() <= endtime) and (simu == "1")) or ((manualOveride == "1")) do 
		-- original code: while ((os.time() <= endtime) and (simu == "1")) or ((os.time() <= endtime) and (simu == "1") and (manualOveride == "1")) do 
		if time == endtime then StandardDebug("time and endtime same value -> end") end 
		local random_light = tonumber(ID_devices_lights[math.random(numbers_lights)]) --choose a random light in the list 
		local lightstatus = fibaro:getValue(random_light, 'value') --get the value of the random light in the list 
		-- turn on the light if off or turn off if on 
		if tonumber(lightstatus) == 0 then fibaro:call(random_light, 'turnOn') else fibaro:call(random_light, 'turnOff') end 
		fibaro:sleep(1000); --necessary to get back the new status, because HC2 is too fast :-) 
		lightstatus = fibaro:getValue(random_light, 'value') --get the value of the random light after his update 
		StandardDebug('light ID:'.. fibaro:getName(random_light) ..' status:'..lightstatus);
		local sleeptime = math.random(rndmaxtime*60000) --random sleep 
		StandardDebug("entering loop of " .. round(sleeptime/60000,2) .. " minutes");
		-- This modification allows to exit the scene if the Simu_presence global var changes to 0 during the random  sleep
			local counterexitsimu = 200
				while (counterexitsimu > 0) do
					counterexitsimu = counterexitsimu - 1;
					test_presence_state = fibaro:getGlobal("Simu_presence");
					simu = tonumber(test_presence_state); --verify the global value, if the virtual device is deactivated, the scene stops. 
					--fibaro:debug("simu var state : " .. simu);
					if simu == 0 then
						counterexitsimu = 0
					end
				fibaro:sleep(sleeptime/200);
				end
			StandardDebug("exiting loop of " .. round(sleeptime/60000,2) .. " minutes");
		local sleeptimemin = math.abs(sleeptime/60000) 
		--StandardDebug('sleeptime:'..sleeptimemin);
		simu = fibaro:getGlobal("Simu_presence"); --verify the global value, if the virtual device is deactivated, the scene stops. 
		manualOveride = fibaro:getGlobalValue("overideSimuSunset");
	end 
	end 
	
function SimulatorPresenceEngine:EndSimulation() 
	SimulatorPresenceEngine:TurnOff(ID_devices_lights,ID_devices_lights_always_on); 
	Debug("red","Simulation is deactivated");
	if (simu == "1") then
		Debug("grey", "Presence Simulator will Restart tomorrow around ".. fibaro:getValue(1, "sunsetHour"));
		pushMessage("Presence Simulator will Restart tomorrow around ".. fibaro:getValue(1, "sunsetHour"));
		wait_for_tomorrow = 1 -- will make EndTimeCalc add 24h to endtime during daytime
	end
end

function SimulatorPresenceEngine:ExitSimulation()
	Debug("red","Presence Simulator is Terminated");
	pushMessage("Presence Simulator is Terminated");
end
-- Switch off devices in the list 
function SimulatorPresenceEngine:TurnOff(group,group2) 
	Debug("red","TurnOff All lights!");
	local name, id2; 
	local ID_devices_group = group; 
	for i=1, #ID_devices_group do 
	id2 = tonumber(ID_devices_group[i]); 
	fibaro:call(id2, "turnOff"); 
	name = fibaro:getName(id2); 
	if (name == nil or name == string.char(0)) then 
		name = "Unknown" 	
	end 
	StandardDebug("Device: " .. name .. " Off "); 
	end 
	local ID_devices_group = group2; 
	for i=1, #ID_devices_group do 
	id2 = tonumber(ID_devices_group[i]); 
	fibaro:call(id2, "turnOff"); 
	name = fibaro:getName(id2); 
	if (name == nil or name == string.char(0)) then 
		name = "Unknown" 	
	end 
	StandardDebug("Device: " .. name .. " Off "); 
	end 
	  if ID_On_After_Simu ~= 0 then
	  fibaro:call(ID_On_After_Simu, "turnOn");
    	name = fibaro:getName(ID_On_After_Simu); 
			if (name == nil or name == string.char(0)) then 
				name = "Unknown" 	
			end 
      Debug("red","Manual Light Settings: Turned On light: " .. name);
	  end
	end 
-- Switch on devices in the list 
function SimulatorPresenceEngine:TurnOn(group) 
	Debug("red","Turning On always on lights:");
	local name, id2; 
	local ID_devices_group = group; 
	for i=1, #ID_devices_group do 
	id2 = tonumber(ID_devices_group[i]); 
	fibaro:call(id2, "turnOn"); 
	name = fibaro:getName(id2); 
	if (name == nil or name == string.char(0)) then 
		name = "Unknown" 	
	end 
	StandardDebug("Device: " .. name .. " On "); 
	end
	Debug("red","Now randomizing other lights...");
	end 
	
Debug("green", "Presence Simulator | v" .. version ); 
Debug( "green", "--------------------------------");
if tonumber(stop_hour) <= 12 then wait_for_tomorrow = 0 end -- if stop hour is between 00 and 12h then will consider that stop hour is before midnight

------------------------ Main Loop ----------------------------------
if (simu == "0") then 
	Debug("red","Not starting Simulation (Simu_presence = 0)");
	SimulatorPresenceEngine:ExitSimulation();
	fibaro:abort(); 
end

pushMessage("Scheduled Simulation starting time: " .. start_simu);
ExtraDebug("Today's sunset is at "..fibaro:getValue(1, "sunsetHour").." - End of Simulation at "..stop_hour..":"..stop_minute);

while (simu=="1" or simu=="0" ) do
	SimulatorPresenceEngine:EndTimeCalc(); 
	-- local start_simu = "00:01"  -- uncomment this line when testing to force a start hour (for the first loop)

	if (os.date("%H:%M") >= start_simu) then -- define if nighttime (sunset)
		sunset = 1 
	else 
		sunset = 0 
	end 
	
	if (simu == "1") then 
		if sunset == 1 and (os.time() <= endtime) then 
			Debug("grey", "It's sunset time -> Simulation ON");
			SimulatorPresenceEngine:Launch();
			SimulatorPresenceEngine:EndSimulation();
		end 
		if manualOveride == "1" then 
			Debug("grey", "Manual Override Activated -> Simulation ON");
			SimulatorPresenceEngine:Launch();
			SimulatorPresenceEngine:EndSimulation();
		end
			--fibaro:debug("sunset: "..sunset .. "endtime: " .. endtime .. "ostime: " .. os.time());
		if manualOveride == "0" and sunset == 0 and NotifLoop == 30 then 
			Debug("grey", "Waiting for next Sunset -> Simulation OFF."); 
		end
	end 
	if sunset == 1 and (os.time() >= endtime) and (os.time() <= (endtime + 60)) then 
		Debug("grey","Simulation ended for this night.");
	end 

	if (simu == "0") then -- Condition to end simulation 
		SimulatorPresenceEngine:ExitSimulation();
		Debug("red","Simu = 0, Exit from scene");
		fibaro:abort(); 
	end
		if NotifLoop <= 30 then
    		if NotifLoop == 30 then NotifLoop = 0
			end
			if NotifLoop == 0 then ExtraDebug("Looping to check for changes every 2min")
			end
			NotifLoop = NotifLoop + 1
    	end
	fibaro:sleep(2*60*1000);
	simu = fibaro:getGlobal("Simu_presence"); 
	manualOveride = fibaro:getGlobal("overideSimuSunset"); 
end
  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

GENIAL : quand je vois ça, je me dis que tu aurais bien plus mérité que moi de gagner le concours du membre du mois de janvier.

 

La preuve : j'ai une bête question.

 

A quoi sert le statut "marche forcée" / "Overide" ?

 

Là , on a fait une simulation de présence pour le soir. 

Y aurait-il moyen de faire qqch de similaire le matin ? entre 6h00 et le lever du soleil ou 7h30 ?

Lien vers le commentaire
Partager sur d’autres sites

@jojo : pour moi le override te permet de lancer la simu en dehors de l'horaire de depart prévu ;-) mais laissons @sebcbien répondre ;-)

 

@sebcbien : question pratique : tu trouves vraiment que les VD ne servent qu'a odifier des VG et après tout en mode scene ?

Lien vers le commentaire
Partager sur d’autres sites

GENIAL : quand je vois ça, je me dis que tu aurais bien plus mérité que moi de gagner le concours du membre du mois de janvier.

 

La preuve : j'ai une bête question.

 

A quoi sert le statut "marche forcée" / "Overide" ?

 

Là , on a fait une simulation de présence pour le soir. 

Y aurait-il moyen de faire qqch de similaire le matin ? entre 6h00 et le lever du soleil ou 7h30 ?

Pas de problème, je t'envoie mon adresse par mp pour que tu m'envoie ton lot ?  ;)

La marche forcée, c'est pour forcer la simulation de présence en dehors des heures prévues.

Pour le moment, professionnellement j'ai énormément de charge et j'ai du mal à  faire le perso... dit autrement: je ne saurais pas me replonger dedans avant qq semaines..

Mais ce que tu peux faire comme work around, avec GEA activer la marche forcée avec overideSimuSunset et la désactiver au lever du soleil

Lien vers le commentaire
Partager sur d’autres sites

@sebcbien : question pratique : tu trouves vraiment que les VD ne servent qu'a odifier des VG et après tout en mode scene ?

Bah je trouve ça très simple, pas d'id de boutons nécessaires pour commander des VD...

Donc le code est portable et migrable très facilement...

Modifier le VD aussi, ajouter un bouton ou un caption avant ceux existants ne va pas modifier la numérotation.

et les VG son lisible et modifiables par d'autres scripts, scènes etc.

:)

Lien vers le commentaire
Partager sur d’autres sites

@sebcbien,

merci de ta réponse.

 

La marche forcée, c'est pour forcer la simulation de présence en dehors des heures prévues.

c'est quand les heures prévues ?:  du couché du soleil (ligne 72) à  l'heure de fin programmée (lignes 48-49) ?

Et donc la marche forcée, c'est 24h/24 ?

J'ai bien compris ?

 

Ton tuto me donne pleins d'autres idées.

Puis-je faire plusieurs copies de la scène ? Je pense à  une scène du couché du soleil à  22h30 avec certaines lumières, et une autre de 22h30 à  2h00 avec d'autres lampes, une 3° pour le matin avec encore d'autres lampes ?

 

Merci encore, c'est grandiose : quand je met l'alarme, ça met la variable Simu_presence à  1 et à  0 quand je la retire. Plus besoin d'y penser ;-)

Lien vers le commentaire
Partager sur d’autres sites

@sebcbien : merci. Je vais essayer de prendre les bonnes habitudes.

SCENES en LUA

VG : j'ai bien compris l'importance hihihi, ca donne enormement de possibilites a priori

les Vd pour modifier les VG et lancer les scenes en fonction

 

@jojo

moi je dirais oui pour les scenes diffferentes mais bonjour l'usine a gaz a gerer alors que Yaps fait ca tres bien en 1 scene, change l h'eure de debut non ?

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

Je pense que c'est possible sans faire d'usine à  gaz et changer tout le code

 

1/ pourquoi est-ce que je veux faire ça ?

car entre le coucher du soleil et 20h00 je suis à  la cuisine => cuisine allumée en continu, et 1 ou 2 autres lampes qui se modifient

car entre 20h et 22h30 je suis devant la TV => salon allumé  en continu, et 1 ou 2 autres lampes qui se modifient

le matin entre 6h et 7h30 on elève => SdB et cuisine

...

 

Je pense qu'il est possible de faire cela simplement

1/ 3 scénarios (matin; fin pm et soir) => 3 fois la scènes (avec un autre nom)

2/ dédoubler les VG, et modifier le début de la scène pour qu'il aille lire la bonne variable

3/ modifier légèrement la scène pour que l'heure de départ ne soit plus le sunset, mais une valeur fixe

4/ dans le VD : ajuster les VG à  mettre à  jour

Lien vers le commentaire
Partager sur d’autres sites

@sebcbien,

merci de ta réponse.

 

c'est quand les heures prévues ?:  du couché du soleil (ligne 72) à  l'heure de fin programmée (lignes 48-49) ?

Et donc la marche forcée, c'est 24h/24 ?

J'ai bien compris ?

Oui

 

Je pense que c'est possible sans faire d'usine à  gaz et changer tout le code

 

1/ pourquoi est-ce que je veux faire ça ?

car entre le coucher du soleil et 20h00 je suis à  la cuisine => cuisine allumée en continu, et 1 ou 2 autres lampes qui se modifient

car entre 20h et 22h30 je suis devant la TV => salon allumé  en continu, et 1 ou 2 autres lampes qui se modifient

le matin entre 6h et 7h30 on elève => SdB et cuisine

...

 

Je pense qu'il est possible de faire cela simplement

1/ 3 scénarios (matin; fin pm et soir) => 3 fois la scènes (avec un autre nom)

2/ dédoubler les VG, et modifier le début de la scène pour qu'il aille lire la bonne variable

3/ modifier légèrement la scène pour que l'heure de départ ne soit plus le sunset, mais une valeur fixe

4/ dans le VD : ajuster les VG à  mettre à  jour

Je ne comprends pas bien, tu veux faire de la simulation de présence quand tu est là  ??

Lien vers le commentaire
Partager sur d’autres sites

Je ne comprends pas bien, tu veux faire de la simulation de présence quand tu est là  ??

 

Non, je ne veux pas faire de la simulation de présence quand je suis là , mais il faut que ce soit le plus réaliste possible.

=> la lumière allumée en continu dans la cuisine à  l'heure de table, puis à  la TV en soirée, c'est plus réaliste.

Et le matin tôt en semaine, c'est sympa, c'est comme si j'allais travailler.

 

Est-ce que ma proposition de réalisation tient la route ?

Lien vers le commentaire
Partager sur d’autres sites

ca a l'air de tenir la route, je trouve ca sympa d'essayer d'etre au plus proche de ce qui se passe effectivement lorsque tu es la.

Mais je me demande toujours : quand moi je pars, je baisse les volets ;-), pas vous ?

je veux faire aussi de la simu en mon absence mais quid des volets ? Avez-vous des fenetres sans volets ?

Lien vers le commentaire
Partager sur d’autres sites

@jojo Ok, oui, ça tiens la route...

     Ceci dit, je ne pense pas que des voleurs vont venir plusieurs jours étudier les habitudes des gens qu'ils veulent dérober, style la grande évasion ;)

@pepite, pas de volets chez moi, triple vitrage ;)

Lien vers le commentaire
Partager sur d’autres sites

ca a l'air de tenir la route, je trouve ca sympa d'essayer d'etre au plus proche de ce qui se passe effectivement lorsque tu es la.

Mais je me demande toujours : quand moi je pars, je baisse les volets ;-), pas vous ?

je veux faire aussi de la simu en mon absence mais quid des volets ? Avez-vous des fenetres sans volets ?

Pepite, j'ai pas de volets => la question ne se pose pas pour moi

 

J'utilise la simulation de présence de sebcbien de la manière suivante :

si l'alarme (non HC2) est activée (cela veux dire que je suis absent pour 1 soir ou 3 mois) la simul de présence démarre et avec les 3 scénarios éventuellement.

lorsque je coupe l'alarme, la variable se remet à  0 et tout s'arrête.

=> c'est génial, je n'ai à  penser à  rien !

 

Par ailleurs, j'ai une variable Vacance = Oui/non, que maintenant que j'ai une HC2, je pourrai utiliser pour désactiver/ré-activer le chauffage.

Elle pourrait également être utilisée pour gérer l'ouverture et la fermeture automatique des volets.

Lien vers le commentaire
Partager sur d’autres sites

Hello,

Est ce possible d'ajouter dans le module de simulation de présence, des paramètres pour pouvoir allumer son sonos et diffuser de la musique pendant x temps?

ça serait vraiment le pied.

@sebcbien, te connaissant, j'imagine que c'est dans tes plans d'évolution futurs? ;)

Lien vers le commentaire
Partager sur d’autres sites

Hello,

Est ce possible d'ajouter dans le module de simulation de présence, des paramètres pour pouvoir allumer son sonos et diffuser de la musique pendant x temps?

ça serait vraiment le pied.

@sebcbien, te connaissant, j'imagine que c'est dans tes plans d'évolution futurs? ;)

J'ai un peu réfléchi à  cette demande pour sonos et je me suis dit que si j'y accède je n'ai pas fini.

... Et tu peux déclencher

-mes volets

-mon arrosage

-ma sonos

-mon ampli Pioneer... etc  :P

 

Ce que je propose c'est 3 paramètres:

 - nom d'une VG

 - valeur à  y stocker en début de simulation

 - valeur à  y stocker en fin de simulation.

 

libre à  vous de surveiller cette variable dans une scène ou mainloop  d'un virtual device et déclencher n'importe quelle action.

 

La solution de jojo est bonne mais ne convient que pour des appareils et il auront un comportement aléatoire, comme les lampes.

Lien vers le commentaire
Partager sur d’autres sites

si je modifie une VG dans mon script de simulation, une autre scène (GEA par exemple) peut être déclenchée.

ensuite d'après le contenu de cette VG, une action peut être décidée.

 

exemple:

http://www.domotique-fibaro.fr/index.php/topic/2143-showroom-configs-gea/

 

quand la VG phone_GG_present change, le script se lance grâce à :

%% globals
Phone_GG_Present

puis une action est décidée grâce à  cette ligne gea:

---------------DETECTION PRESENCE--------------
-- Signale GG at Home GEA peux se déclencher sur un changement de valeur d'une variable global
  GEA.add({"Global", "Phone_GG_Present", "1"}, -1, "Presence GG est maintenant à  #value#", {{"Portable", 53}, {"Time", "00:01", "23:59"}})
  GEA.add({"Global", "Phone_GG_Present", "0"}, -1, "Presence GG est maintenant à  #value#", {{"Portable", 53}, {"Time", "00:01", "23:59"}})

 

Lien vers le commentaire
Partager sur d’autres sites

  • 4 semaines après...

Bonjour,

Je voulais utiliser le script mais sans l'utilisation de la fonction "always on".

Qu faut il que je mette dans la variable pour que cela ne crashe pas.

 

sinon j'ai aussi une question lua.

J'ai bien compris que la variable globale "simu-presence" est declare au debut du script. Mais je ne comprends pas trop pourquoi la variable "overideSimuSunset" ne l'est pas.

 

Merci d'avance

Xavier

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...