Aller au contenu

Messages recommandés

Posté(e)

IPX800 V4 : Utilisation du mode Push sur un VD

 

 

Contexte :

 

Après avoir galère pour trouver un Tuto sur le Forum expliquant comment utiliser le mode push sur un IPX800 V4 pour interagir avec un Virtual Device, je partage avec vous mon cas d'usage que vous pourrez adapter selon vos besoins.

 

Mon exemple est de pouvoir détecter une présence via des modules de détection de mouvements qui sont raccordés en mode filaire sur mon IPX800 V4.

 

Dans mon contexte, il s'agit de détecteur Paradox DG85 pour lesquels j'associe un VD à chacun de mes détecteurs.

 

Dans un premier temps, j'utilise ces VD pour signaler, lors d'une détection de mouvement, un message vocal sur une enceinte SONOS en mode TTS.

 

Pré-requis :

  • Disposer d'une HC2 pour pouvoir scripte en LUA
  • Disposer d'un IPX800 V4 raccordé à la HC2
  • Disposer de détecteurs de mouvements filaires raccordés correctement sur une entrées digitale de l'IPX
  • Disposer éventuellement une enceinte Sonos, si vous souhaitez envoyer des message vocaux.
  • Vérifier lors de tests de mouvement devant les capteurs, que la console de l'IPX remonte bien sur le dashboard les détections. Le voyant correspondant à l'entrée doit s'éteindre lors d'une détection.

 

Actions à réaliser sur la HC2 :

 

1) Charger et configurer le VD qui sera utiliser pour donner le statut du détecteur de mouvement et générer un événement qui sera intercepté par la scène de traitement des alertes vocales. Qui elle-même transmettra une message vocale à votre enceinte SONOS ou tout autre traitement qui doit découler d'une détection.

  • Charger le VD (Détecteur Entrée)
  • Renommer votre VD et préciser sa localisation (Exemple : Détecteur Entrée situé devant le Portail)
  • Repérer l'identifiant du VD (dans la barre d'adresse de votre explorateur). Il vous sera utile plus tard ;)
  • Changer les 2 icônes ci-dessous et repérer leur ID (dans la barre d'adresse de votre explorateur) en faisant un clic droit et une ouverture de l'icônes dans une nouvel onglet, après son chargement dans votre collection icônes personnalisées.

595d6da8bb72b_DG85Alarme.png.960d8d3bbbffe79c41569569d34bddf6.png

595d6def56997_DG85Normal.png.49c9f98aa3c2d290e756ff89e29d6f70.png

Images à modifier selon le modèle de détecteur que vous utilisez ;)

 

  • Modifier dans les propriétés avancées du VD, le code lua des boutons (Alarme) et (Normal) afin de renseigner l'ID des icônes chargées précédemment. cf. lignes ci-dessous
  • pour le bouton (Alarme) remplace 1087 par votre ID sur le ligne ci-dessous :

local IconeID = 1087 -- icône représentant une alerte d'une détection de mouvement

  • pour le bouton (Alarme) remplace 1087 par votre ID sur le ligne ci-dessous :

local IconeID = 1088 -- icône représentant une situation normale sans mouvement

  • A faire autant que fois que de détecteurs dont vous disposez

 

2) Créer et configurer la scène qui va intercepté les changement d'état du VD (selon la modification du premier label dont la valeur va contenir soit Alarme, soit Normal)

  • Dans mon cas, je vais exécuter une scène de traitement d'alertes vocales qui vont être transmises et lues par une enceinte SONOS.
  • Si vous ne disposez pas d'une enceinte Sonos, il convient
    • d'adapter le VD ci-dessous pour réaliser les actions que vous souhaitez intégrer dans vos cas de détections de mouvements
    • et passer directement au chapitre Actions à réaliser sur l'IPX
  • Créer une nouvelle scène
  • Renommer la scène à votre convenance (Exemple : Détection Externe)
  • Coller le code ci-dessous dans le code LUA de la Scène :
--[[
%% properties
241 ui.Label1.value
242 ui.Label1.value
243 ui.Label1.value
%% events
%% globals
--]]

----------------------------------
-- User Settings
----------------------------------
local Msg_Sonos = true
local SceneID_Sonos = 61
local Volume = 20

local source = fibaro:getSourceTrigger()
local id_declencheur = nil

if (source["type"] == "property") then
	id_declencheur = tonumber(source["deviceID"])
elseif (source["type"] == "global") then
	id_declencheur = nil
elseif (source["type"] == "other") then
    id_declencheur = nil
end

local message = nil

if id_declencheur ~= nil then
  if fibaro:get(id_declencheur, "ui.Label1.value") == "Alarme" then
    if Msg_Sonos == true then
      if id_declencheur == 243 then
          message = "détection de mouvement devant la porte de garage "
      elseif id_declencheur == 242 then
          message = "détection de mouvement devant la porte dentrer a larière du jardin "
      elseif id_declencheur == 241 then
          message = "détection de mouvement a larmière du jardin " 
      end
      fibaro:startScene(SceneID_Sonos, {{msg = message}, {vol = Volume}})
    end
  	deviceName = fibaro:getName(id_declencheur);
	roomName = fibaro:getRoomName(fibaro:getRoomID(id_declencheur))
    message = string.format("Détection dans : %q sur le détecteur %q", roomName, deviceName)
    fibaro:debug(message .. " n° " .. id_declencheur)
  end
else
    fibaro:debug("Device inconnu")       
end
  • Modifier les identifiants ci-dessous (241, 242, 243) par les ID de vos VD correspondants à vos détecteurs dans la partie %% properties
241 ui.Label1.value
242 ui.Label1.value
243 ui.Label1.value
  • Modifier le bout de code ci-dessous pour modifier les identifiants et le message qui seront envoyés à votre enceinte SONOS.
if id_declencheur == 243 then
    message = "détection de mouvement devant la porte de garage "
elseif id_declencheur == 242 then
    message = "détection de mouvement devant la porte dentrer a larière du jardin "
elseif id_declencheur == 241 then
    message = "détection de mouvement a larmière du jardin " 
end
  • Attention cette scène fait appel à une scène de traitement des message TTS (par passage de paramètres) qui va donner l'ordre au VD SONOS Remote d'exécuter la traduction TTS et la lecture du message.

 

3) Charger le VD SONOS Remote (si vous disposez d'une enceinte, sinon ignorez cette l'étape 3)

 

  • Vous trouverez ci-dessous le VD SONOS Remote qui permet de piloter des enceintes SONOS créé par Jean-Christophe Vermandé
    • SONOS_Remote.vfib.json
    • Changer le VD ci-dessus (sauf si vous en disposé déjà)
    • Modifier éventuellement l'icônes par celle ci-dessous

Sonos.png.4b374370b3ffc71a83330c84ff9ee64a.png

  • Repérer l'ID de ce VD

 

4) Créer la scène SONOS qui traite les messages vocaux à envoyer au VD SONOS Remote (si vous en disposez, sinon ignorez cette l'étape 4)

 

  • Cette scène utilise la fonction fibaro:startScene avec passage des paramètres (utile pour limiter la redondance de code et sa maintenance) ;)

 

  • Créer une nouvelle scène
  • Renommer la scène à votre convenance (Exemple : Send Sonos Message)
  • Modifier éventuellement l'icônes par celle chargée ci-dessus
  • Coller le code ci-dessous dans le code LUA de la scène :
--[[
%% properties
%% events
%% globals
--]]

-----------------------------------------------------------------------------
-- This Scene send a TTS mmessage on Sonos speaker
-----------------------------------------------------------------------------

-----------------------------------------------------------------------------
-- Params args to this Virtual Device :
--   msg = message text to transforme in TTS
--   vol = volume level on the Sonos Speaker
-----------------------------------------------------------------------------
-- Usage exemple :
--   fibaro:startScene(SceneID_Sonos, {{msg = "move detection in the garden"}, {vol = 50}})
--   SceneID_Sonos = the ID off this Virtual Device
-----------------------------------------------------------------------------
-- User variables :
--  sid = the Sonos Virtual Device ID
--  bid = the Process button ID in then Sonos Virtual Device
--  TTS_language = language off the TTS transformation
-------------------------------------------------------------------------------
local sid, bid = 174, 28
local TTS_language = "fr-FR"

-------------------------------------------------------------------------------
-- DO not change bellow this line
-------------------------------------------------------------------------------
local params = fibaro:args()

if (params) then

  for k, v in ipairs(params) do
    
    if (v.msg) then msg = v.msg end
    if (v.vol) then vol = v.vol end
    
  end
  fibaro:debug("Message : "..msg.." Vol = "..vol)
  
  -- Create TTS params object
  local params = {
    -- TTS Message
    message = msg,  
    duration = 'auto',	-- Duration: "auto", xx seconds
    language = TTS_language,	-- Language: fr-FR
    volume = vol			-- Volume
  }
  
  fibaro:debug("Message : "..params.message.." Vol = "..params.volume)
  local _f = fibaro
  local _x ={root="x_sonos_object",
    load=function(b)
      local c=_f:getGlobalValue(b.root)
      if string.len(c)>0 then local d=json.decode(c)
        if d and type(d)=="table"then
          return d
        else 
          _f:debug("Unable to process data, check variable")
        end
      else
        _f:debug("No data found!")
      end
    end,
    set=function(b,e,d)
      local f=b: load()
      if f[e]then
        for g,h in pairs(d) do
          f[e][g]=h
        end
      else
        f[e]=d
      end; 
      _f:setGlobal(b.root,json.encode(f))
    end,
    get=function(b,e)
      local f=b: load()
      if f and type(f)=="table"then
        for g,h in pairs(f) do
          if tostring(g)==tostring(e or"") then
            return h
          end
        end
      end;
  	  return nil
  	end
  	}
  -- Make a request to the remote to process params object instantly
  _x:set(tostring(sid), { tts = params })
  _f:call(sid, "pressButton", bid)
  
else
  fibaro:debug("Pas de message")
end
  • Modifier l'identifiant ci-dessous 174 (sid) qui correspond à l'ID VD de votre SONOS Remote (repéré à l'étape précédente)
  • Modifier la valeur 28 (bid) qui correspond au nième object de votre VD SONOS Remote et correspondant au bouton (Process)
-----------------------------------------------------------------------------
-- User variables :
--  sid = the Sonos Virtual Device ID
--  bid = the Process button ID in then Sonos Virtual Device
--  TTS_language = language off the TTS transformation
-------------------------------------------------------------------------------
local sid, bid = 174, 28
local TTS_language = "fr-FR"

Actions à réaliser sur l'IPX :

 

1) Configurer l'entrée digitale correspondante au détecteur raccordé

  • Sur le dashboard cliquer sur l'options (PERIPHERIQUES)
  • Puis cliquer sur (ENTRÉES DIGITALES)
  • Donner un nom (exemple sur l'entrée 2 : Détecteur Ext. Entrée Portail) en claire correspondant à l'entée sur laquelle vous avez raccordé votre détecteur

 

595d57b76ccd4_Sanstitre9.thumb.png.e6b9e2767c1be3c62278cf0ff26069ec.png

 

2) Configurer l'action PUSH qui va interagir avec le VD de la HC2 correspondant au détecteur de mouvement créé précédemment

  • Sur le dashboard cliquer sur l'options (PERIPHERIQUES)
  • Puis cliquer sur (PUSH)
  • Sélectionner une action PUSH non utilisée (cliquer sur la ligne correspondante), voir exemple ci-dessous

595d65084bd3c_Sanstitre9.thumb.png.fffe26ca5a50dbd4da2526786a5f58fa.png

  • Donner un NOM (exemple : Mvt Ent. Portail) en claire
  • Renseigner le SERVEUR, soit l'adresse IP de votre HC2 (exemple : 192.168.0.33
  • Renseigner le PORT sur laquelle, votre HC2 est joignable (exemple : 80 dans mon cas)
  • Renseigner l'IDENTIFIANT, soit le nom de l'utilisateur et son mot de passe avec 2 points superposé entre les 2. (exemple : USER:PSW)
  • Renseigner URL ON, soit la commande qui sera passée à la HC2 lorsque la détection de mouvement sera terminée. Qui va provoquer un clic sur le premier bouton (Normal) du VD.
    • /api/callAction?deviceID=243&name=pressButton&arg1=4
    • remplacer le n°243 par l'ID de votre VD
    • pour info 4 correspond au quatrième objet du VD, soit le bouton (Normal)
  • Renseigner URL OFF, soit la commande qui sera passée à la HC2 lorsque la détection d'un mouvement. Qui va provoquer un clic sur deuxième le bouton (Alarme) du VD.
    • /api/callAction?deviceID=243&name=pressButton&arg1=3
    • remplacer le n°243 par l'ID de votre VD
    • pour info 3 correspond au troisième objet du VD, soit le bouton (Alarme)
  • Renseigner METHODE par la valeur GET
  • Renseigner SSL par la valeur OFF (pour le moment je n'ai pas encore trouver comment passer les commandes en mode SSL (HTTPS) afin de crypter la commande sur la trame réseau, notamment le mot de passe)
  • Puis cliquer sur (SAUVEGARDER) puis (RETOUR), voir exemple ci-dessous

595d6637dff7e_Sanstitre9.thumb.png.b140d428a8f6309a606c7692c2080e8a.png

 

3) Configurer un scenario qui va lancer le PUSH définit précédemment

  • Sur le dashboard cliquer sur l'options (SCENARIO)
  • Puis cliquer sur (LISTE DES SCÈNES)
  • Sélectionner une scène non utilisée (cliquer sur la ligne correspondante), voir exemple ci-dessous

595d597c5b81d_Sanstitre9.thumb.png.394cdbc5de1e6aa6d5f759762d81bba0.png

  • Donner un nom à la Scène (Mouvement Entrée Portail), dans la ligne intitulée NOM, voir exemple ci-dessous

595d5c53a1321_Sanstitre9.thumb.png.2bfafb85d95459b1dec575bbfea94623.png

  • Dans la partie (EVENEMENT) du scénario, il convient d'ajouter l'entrée digitale correspondante au Détecteur définit précédemment par un glisser/déplacer du bouton (ENTREE DIGITALE) dans la zone EVENEMENT
  • Puis une sélection dans liste disponible sur la ligne intitulé (NUMERO)
  • Puis cliquer sur (SAUVEGARDER) puis (RETOUR)

595d6038e5928_Sanstitre9.thumb.png.6af506c347c5c247c361810d29d57d28.png

  • Dans la partie (ACTION) du scénario, il convient de définir la valeur (ON/OFF) par un glisser/déplacer du bouton (ON/OFF) dans la zone ACTION

595d60c01b08d_Sanstitre9.png.9cfa03d38146aa558e9af475b9a0e3b1.png

  • Dans la partie (RESULTAT) du scénario, il convient d'ajouter une action (PUSH) par un glisser/déplacer du bouton (PUSH) dans la zone RESULTAT

595d619595c62_Sanstitre9.thumb.png.a3f7d43788acaee50420ab6006c070c6.png

 

  • Puis cliquer sur le bouton (PUSH) ajouté
  • Puis sélectionner dans liste, le Push créé précédemment disponible sur la ligne intitulé (NUMERO)
  • Puis cliquer sur (SAUVEGARDER) puis (RETOUR)

595d61ece7933_Sanstitre9.thumb.png.17b67b4f73b5130a27a2ffbc939a2631.png

 

  • Recommencer cette opération autant de fois que de détecteurs à configurer.

 

Actions à réaliser sur votre HC2 :

Vous promener devant vos détecteurs avec votre ordinateur portable (si vous en disposez, sinon votre téléphone, tablette)

  • Vérifier le bon fonctionnement :
    • de vos VD correspondants a vos détecteurs (les icônes doivent changer a chaque détection et fin de détection de mouvement)
    • écouter sur votre enceinte SONOS le bon envoi des messages TTS
  • Corriger les éventuels bugs
  • Me demander éventuellement des explications ou support sur ce Tuto
  • Adapter ce Tuto selon vos besoins d'utilisation de la fonction PUSH de votre IPX800 V4 et son interaction avec votre HC2

 

  • Thanks 1
  • Upvote 1
Posté(e)

Super tuto.

Je garde ce lien en mémoire au cas où je remplacerai mon IPX V3 ou ferais l'acquisition d'une V4 pour de nouveaux p^rojets.

Posté(e)

Beau boulot. Au niveau commande, cela ressemble beaucoup à ce que je fais avec le V3 aussi au niveau commande, ils ont gardé une bonne logique chez GCE !

Posté(e)

Je suis entrain de réfléchir à acheter du gce, mais j'hésite entre RT2 et Ipxv800

 

a savoir que sait pour le tableau générale de la maison. Gerer le cumulus, HC edf, avoir un retour du compter edf, et quelques contacts  généraux type: générale eclairage nuit, ou l'alimentation bassin (couper toutes alimentations extérieurs) mais je ne sais lequel choisir ?

×
×
  • Créer...