IPX800 fonction Push

pushbutton

Problématique

La technique de Push permet d’exécuter une requête HTTP lorsqu’une entrée ou une sortie de l’IPX800 change d’état. C’est le meilleur moyen pour informer en temps réel un autre dispositif internet, comme une box domotique, d’un changement d’état de l’IPX800. L’IPX800 propose deux façons de paramétrer des Push :

  1. Un paramétrage centralisé commun à toutes les entrées et sorties
  2. Un paramétrage individualisé pour chacune des entrées et chacune des sorties

Malheureusement, avec la dernière version en date du micrologiciel (3.05.38), les deux techniques, bien qu’utilisables ne fonctionnent pas parfaitement.

Paramétrage centralisé du Push

IPX800PushCentralisé

Le paramétrage du Push centralisé est accessible de la manière suivante : M2M → PUSH. Voici les différents champs à remplir :

  • Server: <adresse recevant le push>, par exemple 192.168.0.44
  • Port: <le port, par exemple 3480 pour une box Vera
  • Bien cocher Enable puis cliquer sur Save
  • Path: <requête>, par exemple /data_request?id=lr_JH&data=$M&$I

Dans la version précédente du micrologiciel, on pouvait sélectionner les entrées et les sorties prises en compte pour envoyer les requêtes Push. Dans la version actuelle, ce n’est plus possible. C’est embêtant car si des entrées sont affectées à des compteurs impulsionnels, elles devraient être exclues pour ne pas générer continuellement et inutilement plusieurs push par seconde.

Remarque du 03/03/2015 : Avec la version 3.05.42 du micrologiciel, GCE Electronics a introduit un délai sur les notification Push pour éviter le blacklistage. Évidemment, c’est catastrophique quand on a besoin d’un système de notification réactif ! Heureusement, la version 3.05.47 offre la possibilité de régler l’intervalle de temps entre 2 notifications (Configure global push delay to avoid IP blacklist) avec une valeur comprise entre 2 et 255 par pas de 100 mS. La valeur par défaut est -1 et GCE Electronics ne précise pas à quoi elle correspond, mais c’est clairement un délai très long (plusieurs secondes). Si vous voulez un système réactif (qui fonctionne en local sans Push dans le Cloud), il faut spécifier 2 !

L’IPX800 possède une syntaxe documentée dans le document IPX_API.pdf permettant d’envoyer des informations sur son état dans une requête Push. Pour écrire les requêtes présentées ci-dessous, j’utilise un appel de la fonction Lua JH présentée dans le billet Requêtes HTTP sur Vera Lite.

  • Avec une requête de la forme :

    /data_request?id=lr_JH&data=$M&$I

    on devrait recevoir :

    data="00:04:A3:A1:ED:14&00000000000000000000000000000000"

    et on reçoit :

    data="00:04:A3:A1:ED:14"
  • Avec une requête de la forme :

    /data_request?id=lr_JH&Mac=$M&Entrees=$I&Sorties=$O

    on devrait recevoir :

    Mac="00:04:A3:A1:ED:14",Entrees="10010100000000000000000000000000",Sorties="00000000000000000000000000000000"

    et on reçoit :

    Mac="00:04:A3:A1:ED:14",Entrees="10010100000000000000000000000000orties=00000000000000000000000000000000"

Bref, cela ne fonctionne pas encore comme cela devrait. Le mieux est donc d’écrire une requête de la forme /data_request?id=lr_JH&Parametres=. Cette requête est assez robuste et présente deux avantages.

  1. Elle permet d’effectuer un Push sur la fonction JH pour lui notifier que l’état d’une entrée ou d’une sortie de l’IPX800 a changé. Charge ensuite à cette fonction de se renseigner sur l’état des entrées/sorties de l’IPX800 en effectuant un Pull en Json par exemple.
  2. Elle permet, grâce à &Parametres= de s’affranchir et d’ignorer ce que l’IPX800 risque d’ajouter automatiquement à votre requête. En l’absence de la séquence terminal &Parametres=, le Push risque d’échouer voir de générer des erreurs.
Paramétrage individualisé du Push

IPX800PushIndividualisé

Pour accéder au paramétrage individualisé de la fonction Push de l’IPX800 pour une entrée ou une sortie donnée il faut :

  • En haut à droite de l’interface principale de l’IPX800 cliquer sur Edit de la ligne Output pour paramétrer une sortie, ou Edit de la ligne Input pour une entrée
  • Sélectionner le numéro de l’entrée ou de la sortie à paramétrer (champ Enter channel:1-32 puis bouton Select)
  • Cliquer sur Push settings

Le paramétrage des champs Server:, Port: et Login: se fait comme pour le paramétrage du Push centralisé.
Le champ Path: du paramétrage du Push centralisé se subdivise ici en deux champs : Push 1: qui correspond à la requête appelée quand l’état passe à 1 et et Push 2: qui correspond à la requête appelée quand l’état passe à 0. Il faut prendre les mêmes précautions que pour les requêtes du Push centralisé.

Informations et sources
Cette entrée a été publiée dans Domotique, Contrôleurs, Tutoriels and taguée . Placez un signet sur le permalien.

One Response to IPX800 fonction Push

  1. MATHET

    Merci beaucoup pour l’information du délai du Push.
    Je confirme qu’avec 2, cela fonctionne très bien.
    Merci aussi à GCE pour leur réactivité impressionnante.

    Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *