Aller au contenu

Gea : Gestionnaire D'événements Automatique


Steven

Messages recommandés

Edit version modifiée afin de corrigé un bug lié au périphérique de type Light

+ Ajout de la possibilité de mettre "turnOff" comme message pour automatiquement éteindre le périphérique

Lien vers le commentaire
Partager sur d’autres sites

Testé et ... approuvé ! fonctionne impec ! ;)

[DEBUG] 23:08:21: Added id: 229 secondes: 120 msg: La porte du garage est ouverte depuis plus de 2 minutes
[DEBUG] 23:08:21: Running...
[DEBUG] 23:08:21: 229 activated since 0 secondes / 120
[DEBUG] 23:08:51: 229 activated since 30 secondes / 120
[DEBUG] 23:09:21: 229 activated since 60 secondes / 120
[DEBUG] 23:09:51: 229 activated since 90 secondes / 120
[DEBUG] 23:10:21: 229 activated since 120 secondes / 120
[DEBUG] 23:10:21: Action id: 229 msg: La porte du garage est ouverte depuis plus de 2 minutes
Lien vers le commentaire
Partager sur d’autres sites

Ce scénario répond àmes besoins, je n'ai donc pas d'intérêt àle faire évoluer. Par contre, si quelqu'un a des besoins spécifiques, n'hésiter pas àme le faire savoir. Ensemble, on peux aller loin.

Exemples :

  • être averti si la lumière est allumée plus de 5mn uniquement entre 22:00 et 06:00
  • démarrer le scénario X si la porte est ouverte pendant plus de X minutes
  • ...
A vous devoir si vous avez besoin de quelque chose.
  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Si ne pars du principe que pour faire parler Sarah, tu mets à  jour une variable global avec le message puis que tu appuies sur le boutons d'un module virtuel pour faire parler Sarah.

 

Si je prend comme exemple la variable global "SARAH" et le module virtuel ayant un ID 100 je remplacerais la méthode Wtdiso.sendWarning par ceci :

	-- ---------------------------------------------------------------------------
	-- Envoi le message en push
	-- ---------------------------------------------------------------------------
	Wtdiso.sendWarning = function(id, message)
		fibaro:debug("Action  id: " .. id .. " msg: " .. message) 
		if (message == "turnOff") then
			fibaro:call(tonumber(id), message)
                elseif (string.find(message, "SARAH:")) then
      		        message = message:gsub("SARAH:", "")
      		        fibaro:setGlobalValue("SARAH", message)
      		        fibaro:call(100, "pressButton", "1")
		else
			for i = 1, #Wtdiso.portables do
				fibaro:call(tonumber(Wtdiso.portables[i]), "sendPush", message)
			end
		end
	end

Ensuite tu n'aurais plus qu'a déclaré tes temporisation ainsi :

Wtdiso.add(28, 10*60, "SARAH: La porte du garage est ouverte depuis plus de 10 minutes")

Le système va donc détecter le mot clé "SARAH:" et mettre en variable global "La porte du garage est ouverte depuis plus de 10 minutes" puis activé ton module virtuel.

 

J'espère que c'est à  cela que tu t'attendais ?

Lien vers le commentaire
Partager sur d’autres sites

non, Steven, j'ai pas réussi a inclure la variable dans la ligne du vd de Sarah

j'ai créé la variable "parle" mais j'arrive pas àla mettre du texte, Sarah ne comprend pas.

HC2 = Net.FHttp("192.168.1.26", 8080);
response = HC2:GET("/sarah/parle?phrase=la+fenêtre+du+bureau+est+ouverte")

donc, j'ai créé un vd avec un bouton pour chaque ouverture, vu que j'habite pas un château, j'en ai pas 50.

Lien vers le commentaire
Partager sur d’autres sites

Tu pourrais faire déclencher ce script quand une variable est dans un état définie? Par exemple une variable "hors de la maison" avec deux état "oui" et "non"?

 

Le script doit tourner en permanence, pas de choix. Par contre, il peut très bien ne prendre en compte si une porte est ouverte ou une lumière allumée uniquement si ta variable globale est à  "oui".

 

Dans ce cas, il faudrait modifier le code ainsi 

Wtdiso.isActivate = function(id)

   if (fibaro:getGlobalValue("hors de la maison")) == "non") then
      return false
   end

   ...
Ainsi, tant que tu es à  la maison, le système fera croire à  ce scénario que le périphérique n'est pas actif. Il n'y aura donc pas d'avertissement. Dès que la variable passera à  "oui" le scénario fera son travail.
Lien vers le commentaire
Partager sur d’autres sites

non, Steven, j'ai pas réussi a inclure la variable dans la ligne du vd de Sarah

j'ai créé la variable "parle" mais j'arrive pas à  la mettre du texte, Sarah ne comprend pas.

HC2 = Net.FHttp("192.168.1.26", 8080);
response = HC2:GET("/sarah/parle?phrase=la+fenêtre+du+bureau+est+ouverte")

donc, j'ai créé un vd avec un bouton pour chaque ouverture, vu que j'habite pas un château, j'en ai pas 50.

 

 

 

Ok, c'est pas terrible tout cela :-)

 

 

Pour faire parler Sarah, tu ne devrais avoir besoin que de taper le code suivant 

fibaro:setGlobal("parle", "Sarah+est+ma+meilleure+amie");

Mais pour ce faire, il faut créer un module virtuel et un scénario.

Le module virtuel va, bien évidement, envoyer la requête HTTP à  Sarah avec la phrase "parle". Et le scénario va lui faire appel au module virtuel chaque fois que la variable "parle" sera modifiée.

 

 

1) Création du module virtuel avec 1 bouton. Derrière ce bouton, tu colles le code suivant :

 

HC2 = Net.FHttp("192.168.1.26", 8080);

-- la variable doit s'appeler "parle" dans le panneau des variables
local quoidire = fibaro:getGlobalValue("parle"))

if (quoidire == "") then
   quoidire = "Je+n+ai+rien+a+dire"
end 

response = HC2:GET("/sarah/parle?phrase="..quoidire)

 

2) Création d'un scénario qui va automatiquement faire parler Sarah

 

--[[
%% properties
%% globals
 parle
--]]

-- Ce scénario va s’exécuter automatiquement dès que la variable globale "parle" 
-- va être modifiée

local vd_id = 29 -- Id de ton module virtuel sarah

fibaro:call(vd_id, "pressButton", "1");

N'importe ou dans tes scénarios, modules virtuels, dès que tu changeras la valeur de ta variable "parle", le scénario (2) sera exécuter. Il lancera ton module virtuel qui va récupérer le contenu de la variable pour l'envoyer à  Sarah.

 

Essaye cela et tiens moi au courant.

 

Tu verras, c'est magique car après il ne te suffit plus que de faire appel au code  

fibaro:setGlobal("parle", "Ma+phrase");

pour faire parler Sarah 

Lien vers le commentaire
Partager sur d’autres sites

Et bien non Steven, cela ne marche pas, mis àpart c'est ligne que au quelles je n'avez pas pensé qui me semble plutôt bien vu

if (quoidire == "") then
   quoidire = "Je+n+ai+rien+a+dire"

et "quoidire", javais mis "blabla", sinon, c'est exactement ce que j'avais fait et elle reste sans voix.

la variable ce charge bien, je vois bien sont changement dans le panneau variable mais il ne sort rien.

Lien vers le commentaire
Partager sur d’autres sites

HC2 = Net.FHttp("192.168.1.26", 8080);
 
-- la variable doit s'appeler "parle" dans le panneau des variables
local quoidire = fibaro:getGlobalValue("parle"))
 
if (quoidire == "") then
   quoidire = "Je+n+ai+rien+a+dire"
end 
 
response = HC2:GET("/sarah/parle?phrase="..quoidire)

en fait c'est dans cette partie que ça pêche, si je vais dan le panneau variable, je vois le texte que j'ai vais entrer dans le variable par cet exemple:

fibaro:setGlobal("parle", "Sarah+est+une+mule");

elle ne parle plus dés qu'il y a une local dans le srcip, exemple:

HC2 = Net.FHttp("192.168.1.26", 8080);
 
-- la variable doit s'appeler "parle" dans le panneau des variables
local quoidire = fibaro:getGlobalValue("parle"))
 
--if (quoidire == "") then
  -- quoidire = "Je+n+ai+rien+a+dire"
--end 
 
response = HC2:GET("/sarah/parle?phrase=esssai")--..quoidire)

làrien, si je désactive la ligne "local" elle dit "essai"

Lien vers le commentaire
Partager sur d’autres sites

ok, elle a bien dit "essai", avais pas vu la parenthésé  :unsure:

 

j'ai remis ça et elle ne dit plus rien.

HC2 = Net.FHttp("192.168.1.26", 8080);
 
-- la variable doit s'appeler "parle" dans le panneau des variables
local quoidire = fibaro:getGlobalValue("parle")
 
--if (quoidire == "") then
--  quoidire = "Je+n+ai+rien+a+dire"
--end 
 
response = HC2:GET("/sarah/parle?phrase=")..quoidire)

j'ai enlever la parenthèse après "..quoidire" et le plugin parle de Sarah dit "je n'ai rien à  dire". c'est sont message par défault quand un envoie est vide.

Modifié par Fredric
Lien vers le commentaire
Partager sur d’autres sites

ca marche  :P

HC2 = Net.FHttp("192.168.1.26", 8080);
 
-- la variable doit s'appeler "parle" dans le panneau des variables
local quoidire = fibaro:getGlobalValue("parle")
 
if (quoidire == "") then
  quoidire = "Je+n+ai+rien+a+dire"
end 
 
response = HC2:GET("/sarah/parle?phrase="..quoidire)
Lien vers le commentaire
Partager sur d’autres sites

là  était mon erreur de débutant

response = HC2:GET("/sarah/parle?phrase=")..blabla)

mon ancienne ligne qui ne fonctionné pas, c’était tout simplement cette parenthèse, merci Steven, j'avais laissé tomber   ;)

c'est vrai qu'a deux, c'est mieux  :P

Lien vers le commentaire
Partager sur d’autres sites

Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.
×
×
  • Créer...