Aller au contenu
MAM78

IPX Device Manager

Recommended Posts

IPX Device Manager

 

image.png.28fd38ef30e24079a4a328584ee1defd.pngimage.png.a9361a373d9cc1a52f3d50115a36be60.png

 

Préambule :

 

Vous trouverez ci-dessous le nouveau Virtual Device visant piloter un device d'un IPX800 ou tout autre module pilotable avec des requêtes HTTP.

Le VD permet d'intégrer de nombreux modes paramétrables de type On / Off et pilotables selon un timer programmable en mode automatique ou manuel.

 

Le projet exploite l'API mise à disposition par GCE à l'adresse suivante : http://gce.ovh/wiki/index.php?title=API_V4

 

A l'origine de projet, je cherchais une solution pour mettre en marche une sirène connectée à un relais du l'IPX800 V4.

 

Mais du coups, ce VD peut être utilisé pour activer et désactiver n'importe quels :

  • sorties relais de l'IPX800V4 et des extensions
  • entrées et sorties virtuelles
  • entrées analogiques virtuelles
  • extensions pilotant les volets roulants
  • extensions Fils Pilotes
  • extensions X-DIMMER pour piloter vos lumières
  • compteurs
  • thermostats
  • volets roulants Enocean
  • actionneurs Enocean

 

Il est également totalement adaptable pour gérer tous types de devices pilotables par des requêtes HTTP.

 
Le Projet :

 

Le but du projet consiste à (pour le moment) :

  • pouvoir activer ou désactiver un device selon des requêtes HTTP
  • programmer un minuteur qui détermine une durée d'activation du device et sa désactivation automatique une fois le temps écoulé.
  • permettre d'avoir plusieurs modes d'activation pour un même device (moduler les durées, agir sur les paramètres du device, ...)
  • pouvoir choisir les désignation des états affichées (Arrêt/Marche, On/Off, Allumé/Eteint, ...) et selon la langue que vous souhaitez.
  • pour afficher les icônes correspondantes aux différents modes définis

Quelques exemples de modes.

  • Mise en marche d'une sirène d'alarme pour une durée déterminée
  • Activer l'arrosage automatique pour une durée déterminée
  • Allumer une lumière pour une durée déterminée
  • Activer un chauffage pour une durée déterminé
  • ...

 

Vos idées/suggestions sont le bienvenues ;)

 

Pré-requis :

  1. Disposer d'un IPX800 V4 ou tout autre module pilotable par requête HTTP

Installation :

  1. Télécharger et installer le Virtual Device ci-dessous (sa dernière version)

Configuration :

 

Du Virtual Device :

 

Dans l'onglet Avancé du VD importé, il convient de :

  1. De nommer votre VD (ex. : Sirène Alarme) à votre convenance
  2. De désigner la pièce où est situé votre device
  3. Modifier les icônes de chaque bouton pour les faire correspondre à l'état du Device.

Ne pas oublier de sauvegarder ;)

 

Cf. image ci-dessous :

 

image.png.fe748aac603fea582ab4205c055ea332.png

 

Configurer dans le bouton btUpdate votre VD pour configurer les différents modes (celui avec la fusée) :

 

C'est ce bouton qui s'occupe de piloter vos différents modes :

 

image.png.6cbedbb3fe19d70a6d78a73c56cf62f0.png

 

Renseigner les paramètres indiqués ci-dessous :

 

Dans la structure HTTP_Device :

["Name"] = "IPX800 V4",

["IP"] = "192.168.0.50",

["Port"] = "80",

["LoginAuth"] = false,

["User"] = "xxx",

["PSW"] = "yyy",

["URI"] = "/api/xdevices.json?key=ZZZ&",

["Id"] = "R1",

         ["OnValue"] = 0,

["Commande"] = ""

 

Name = désignation de votre Device. Utilisé uniquement pour les messages dans les logs.

Port = port réseau pour accéder à l'API de votre Device
IP = adresse ID pour accéder à l'API de votre Device

LoginAuth = Indicateur true / false pour préciser s'il faut utiliser l'APIKEY où le login et le mot de passe pour accéder à l'API de votre Device

User = login d'accès à l'API de votre Device

PSW = mot de passe d'accès à l'API de votre Device

URI = Lien URI (URL) d'accès à l'API de votre Device

ZZZ = votre Clé APIKEY personnelle (pour un IPX800 V4). Par défaut c'est : apikey

Id = Désigne votre device (exemple : "R2" pour désigner le relais n° 2 de l'IPX800 V4, VI2 pour un Virtual Input, ...). Utilisé pour vérifier l'état du device.

OnValue = Désigne la value de votre device lorsqu'il est On (exemple : 0 pour désigner le relais est normalement Ouvert pour une sirène, Pour un arrosage ce sera 1 pour normalement fermé).

Commande = A ne pas renseigner. Utilisé lors de l'exécution du code pour prendre la valeur contenue dans la variable HTTP_DeviceCommande de la structure ModeParams selon le mode sélectionné.

 

Les variables ci-dessous 

 

local Mode_IconOff = 1128 -- The turn off icon
local Mode_IconOn = 1127 -- The turn on icon
local Mode_StatusOff = "Arrêt" -- Désignation utilisée pour représenter le mode Off. Mettre valeur que la même variable présente dans le Main Loop.
local Mode_StatusOn = "Marche" -- Désignation utilisée pour représenter le mode On
 
local ModeIdGetValue = 1 à mettre en cohérence avec les données de la structure ModeParams
local ModeIdOff = à mettre en cohérence avec les données de la structure ModeParams
local ModeIdOn = à mettre en cohérence avec les données de la structure ModeParams
 
Dans la structure ModeParams :
 
Exemple pour le mode Off.
 
["Id"] = ModeIdOff,
["ActionMode"] = Mode_StatusOff,
["ActionDesc"] = "Arrêt de la sirène",
["HTTP_DeviceCommande"] = "ClearR=001",
["HTTP_Action"]= "SetValue",
["timer"] = "--:--",
["icon"] = Mode_IconOff
},
 
Id = identifiant du mode pouvant prendre une valeur de 1 à N. Vous pouvez également indique la variable ModeIdOff ou ModeIdOn
ActionMode = Désignation courte que sera affichée dans le label (lblState et lblMode). Vous pouvez également renseigner les variables Mode_StatusOff ou ModeStatusOn
ActionDesc = Désignation longue qui sera renseignée dans l'objet log (cf. fonction fibaro:log) ainsi que dans la log du bouton btUpdate à chaque changement de mode
HTTP_DeviceCommande = Chaine de commande ajoutée à l'URI pour commander l'API de votre Device et exécuter le mode correspondant. Pour un Device de type Relais, il convient d'utiliser les commandes SetR=002, ClearR=002, Get=R) Voir documentation de l'API IPX800 V4. Attention d'inverser les valeurs SetR avec ClearR selon que vous utilisez un Device normalement Ouvert ou normalement fermé.
HTTP_Action = Désigner si la commande correspond à une fonction SetValue ou GetValue. GetValue est utilisé pour récupérer l'état actuelle d'un Device sur l'IPX
timer = Désigner si la durée durant laquelle le Device reste en mode On (Marche). "--:--" correspond au mode arrêt. "" (vide) permet de désigner que le mode on reste permanent jusqu'à ce qu'un autre mode soit exécuté ou que le timbre soit modifié.
icon = Désigner l'ID de l'icône correspondant au mode définit. Vous pouvez également indique la variable Mode_IconOff ou Mode_IconOn
 

Voici un exemple de la structure ModeParams avec 2 modes additionnels.

 

local ModeParams =
{
{
["Id"] = ModeIdGetValue,
["ActionMode"] = "Valeur actuelle",
["ActionDesc"] = "Reccupération de la valeur actuelle de l'Entrée Virtuelle sur l'IPX",
["HTTP_DeviceCommande"] = "Get=R",
["HTTP_Action"]= "GetValue",
["timer"] = "--:--", -- Not used in this case
["icon"] = "" -- Not used in this case
},
{
["Id"] = ModeIdOff,
["ActionMode"] = Mode_StatusOff,
["ActionDesc"] = "Arrêt de la sirène",
["HTTP_DeviceCommande"] = "SetR=01",
["HTTP_Action"]= "SetValue",
["timer"] = "--:--",
["icon"] = Mode_IconOff
},
{
["Id"] = ModeIdOn,
["ActionMode"] = Mode_StatusOn,
["ActionDesc"] = "Mise en marche de la sirène (sans minuteur)",
["HTTP_DeviceCommande"] = "ClearR=01",
["HTTP_Action"]= "SetValue",
["timer"] = "",
["icon"] = Mode_IconOn
}, {
["Id"] = 4,
["ActionMode"] = Mode_StatusOn,
["ActionDesc"] = "Mise en marche de la sirène pendant une minute",
["HTTP_DeviceCommande"] = "ClearR=01",
["HTTP_Action"]= "SetValue",
["timer"] = "01:00",
["icon"] = Mode_IconOn
},
{
["Id"] = 5,
["ActionMode"] = Mode_StatusOn,
["HTTP_DeviceCommande"] = "ClearR=01",
["HTTP_Action"]= "SetValue",
["ActionDesc"] = "Mise en marche de la sirène pendant 2 minutes",
["timer"] = "02:00",
["icon"] = Mode_IconOn
}
}

 

 

Ne pas oublier de sauvegarder ;)

 

Configurer les différents boutons correspondant aux différents mode  :

 

Pour chacun des boutons (Marche / Arrêt) ainsi que les différents modes additionnelles (derniers boutons du VD), il convient de modifier la variable :

 

local ModeId = 3

 

ModeId = Identifiant du mode. Il doit correspondre au contenu de la variable Id de la structure ModeParam présente dans le bouton "btUpdate"

 

Assigner au bouton l'icône correspondant au mode définit. Cela évite les changements d'affichage des logos.

 

Nota Vous pouvez ajouter autant de bouton que vous le souhaitez en respectant les principes ci-dessus et en les ajoutant à la fin du VD.

 

Configurer le Main Loop du VD :

 

Modifier la valeur de la variable ci-dessous.

local Mode_StatusOff = "Arrêt" -- Désignation utilisée pour représenter le mode Off. Mettre valeur que la même variable présente dans le bouton btUpdate
 

Utilisation du VD :

  • Vous pouvez tout simplement cliquer sur l'un des boutons correspondant au mode que vous souhaitez exécuter. Il s'arrêtera lorsque vous cliquerez le bouton "btON" (Arrêt)  ou une fois le timer terminé si programmé.
  • Avant de cliquer sur le bouton "btON" (Marche), vous pouvez paramétrer le Timer en utilisant les boutons haut et bas (minutes et secondes). Ce qui aura pour effet de définir une durée d'exécution.
  • Durant l'exécution d'un mode, vous avez la possibilité d'en lancer un autre mode. il se substituera au précédent.
  • Vous pouvez évidement commander le VD depuis une scène ou un autre VD en simulant un clic sur le bouton correspondant au mode souhaité.
  • Préalablement à la simulation du clic sur le bouton correspondant au scenario voulu, vous pouvez également renseigner le Label lblTimer avec une durée (au format  mm:ss) pour définir une durée d'exécution de celui-ci
  • Par exemple : vous pouvez utiliser GEA pour lancer un scénario tout en utilisant le timer. Exemple :
% properties
243 ui.lblEtat.value

    -- Si la valeur de la variable Global "PA_Mode" est égale à "Jour" (Alarme activée)    
    -- Si la valeur du label "lblEtat" du VirtualDevice numéro 243 est = à "Arrêt" (la sirène est arrêtée)
    -- Assigne la valeur "01:00" au label lblTimer du VD 326
    -- Appui sur le bouton 1 du VD 326 pour activer la sirène d'alarme pour 1 minutes

    GEA.add({{"Global", "PA_Mode", "Jour"}, {"Label", 243, "lblEtat", "Marche"}}, -1, "Détection présence devant porte garage",  {{"Label", 326, "lblTimer", "01:00"}, {"VirtualDevice", 326, 12}}, "Détection devant porte garage, activation de la sirène d'alarme")

 

Versions :

  • V1.0.0 : du 13/11/2020 -> Intialisation du projet
  • V1.1.0 : du 15/11/2020 -> Ajout du paramètre du paramètre "Id" dans la structure HTTP_Device. Voir explication ci-dessus.
  • V1.2.0 : du 15/11/2020 -> Ajout du paramètre du paramètre "OnValue" dans la structure HTTP_Device. Voir explication ci-dessus.
  • V1.3.0 : du 15/11/2020 -> Ajout d'une variable Mode_StatusOff dans le Main Loop. Voir explication ci-dessus.

 

Evolutions à venir :

  • A voir selon vos suggestions :huh:

 

Dernière version du VD :

 

 

Sirène_Alarme.vfib

 

 

Modifié par MAM78
  • Like 3

Partager ce message


Lien à poster
Partager sur d’autres sites

Nouvelle version V1.2.0 :

  • Ajout d'une variable "OnValuepour pouvoir préciser quelle est la valeur du Device lorsqu'il est en position ON (marche).
  • Précision dans la documentation sur la configuration d'une Device selon qu'il est en position normalement Ouvert ou normalement Fermé.

Nota

  • N'ayant pas HC3 pour le moment je continue de créer des VD et Scènes pour nos HC2 en attendant l'achat d'une HC3.
  • Je pense que nous sommes encore nombreux à utiliser nos HC2, du coup je partage ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Comme j'aime bien mes icônes pour l'arrosage goutte à goutte et Sprinkler, je les partage ;)

 

A voir sur fond noir. Elles rendent encore mieux B)

 

1515798389_GoutteGoutteArrt3.png.84a09343bc353c203cb0a49434b76603.png2028837374_GoutteGoutteMarche3.png.c5e3aaf915bb62ea89ece7e5779f62ef.png1688187491_ArrosageOff.png.f739eddf737a8ee08617a295d1470de2.png1075280850_ArrosageOn.png.43f16ee2065e4e55d698921b1200b5b8.png

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

Nouvelle version V1.3.0 : du 15/11/2020 -> Ajout d'une variable Mode_StatusOff dans le Main Loop. Voir explication dans la documentation.

Partager ce message


Lien à poster
Partager sur d’autres sites

×