Aller au contenu

Messages recommandés

Posté(e)

Salut,

 

Je viens vous proposer un petit scenario pour vous alerter si une porte reste malencontreusement ouverte.

 

Alors bien sur, c'est pas pour la complexité de la scene que je le poste mais encore une fois pour donner des idées. Etant donnée l' engouement pour le scenario qui gère les lumières extérieure en journée, je me dis que tout est bon a poster et que ça peut servir. 

 

 

 

Alors le voila 

--[[
%% properties
28 value
26 value
%% globals
--]]

local startSource = fibaro:getSourceTrigger();
local temp_ouverture = 10*60*1000 -- temps exprimé en ms

if (
 ( tonumber(fibaro:getValue(28, "value")) > 0)

)
then
  	fibaro:sleep(temp_ouverture)
  
if (
 ( tonumber(fibaro:getValue(28, "value")) > 0)

)
 
  then
	fibaro:call(4, "sendPush", "Porte Entrée Ouverte depuis 10 minutes !");
end
end

if (
 ( tonumber(fibaro:getValue(26, "value")) > 0)

)
then
  	fibaro:sleep(temp_ouverture)
  
if (
 ( tonumber(fibaro:getValue(26, "value")) > 0)

)
 
  then
	fibaro:call(4, "sendPush", "Porte Terrasse Ouverte depuis 10 minutes !");
end
end

Alors, oui bien sur, j' aurais certainement pu faire un truc plus joli/propre/optimisé :) Mais ça fonctionne dans l' état. Je verrais pour les optimisation plus tard. 

 

Mes capteurs d' ouverture sont des FIBARO FGK.

 

Voilou, en esperant que ça serve ou donne des idées :)

 

++

  • Upvote 1
  • 2 semaines après...
Posté(e)

J'ai une version que j'utilise pour gérer les alertes de ma maison.
 
En la simplifiant, on obtient une autre version pour vérifier les portes ouvertes.
 

-- NE PAS TOUCHER --
if (not temporisation) then temporisation = {} end
if (not done) then done = {} end


-- A modifier --
local duree_sec = 30 -- on vérifie toute les 30 secondes
local max_autorise_sec = 10*60 -- max 10 minutes
local ID_portes = {5, 6, 21, 26, 9} -- ID des détecteurs de porte
local ID_portables = {70} -- ID des portables à  avertir

-- Début du traitement, on boucle sur tous les détecteurs
-- ne pas toucher
for i = 1, #ID_portes do
	local open = tonumber(fibaro:getValue(tonumber(ID_portes[i]), "value")) == 1
  	--if (i == 3) then open = true end
	if (open) then
		--fibaro:debug("open")
    	-- la porte est ouverte on inclémente le compteur
		if (temporisation[i]) then
			temporisation[i] = temporisation[i] + 1
		else
			temporisation[i] = 0
		end
	else
    	--fibaro:debug("close")
    	-- la porte est fermée on remet le conteur à  0
		temporisation[i] = 0
    	done[i] = 0
	end
  	if ( ((temporisation[i] * duree_sec) >= max_autorise_sec) and not done[i]) then
    	-- création du message d'avertissement
    	local name = fibaro:getName(tonumber(ID_portes[i]));
    	local room = fibaro:getRoomNameByDeviceID(tonumber(ID_portes[i]));
    	local msg = name .. " [".. room .. "] ouverte depuis " .. (temporisation[i] * duree_sec) .. " secondes !"
    	fibaro:debug(msg)
    	-- Envoi du messsage au destinataires
    	for j = 1, #ID_portables do
    		fibaro:call(tonumber(ID_portables[j]), "sendPush", msg)
      	end
    	done[i] = 1
    	temporisation[i] = 0
    end
end
fibaro:sleep(duree_sec * 1000)

Par contre, cela est à  mettre dans un main loop.

 

Cordialement

  • 1 an après...
  • 1 mois après...
Posté(e)

salut

un petit renseignement, je voudrai déclencher une scène mais seulement apres trois module déclencher mais qui retourne en mode normal / je m'explique

 

Je veux que : SI portail est passer en mode ALERTE en NORMAL, et SI Présence_Voiture de 0 à  1, et Si Porte ALERTE,  =  ALORS .....   (cela sur une durée cumuler de 5min par exemple)

 

Je passe en Lua bien sure, mais par ou commencer ?

×
×
  • Créer...