Différences entre les versions de « API V4 »

De GCE Electronics
Aller à la navigation Aller à la recherche
 
(53 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{sommaire|niveau=3|flottant=left}}
{{sommaire|niveau=3|flottant=left}}


== '''Présentation''' ==
== '''Introduction''' ==


{{Infobox IPX800
{{Infobox IPX800
Ligne 9 : Ligne 9 :
}}
}}


=='''Introduction'''==


L'API de l'IPX800 V4 permet plusieurs méthodes de communication sécurisée à partir d'un programme ou d'une autre machine. Il est alors possible de faire exécuter des actions à l'IPX800 V4 en lui envoyant une commande, ou encore de récupérer des valeurs ou des états.
L'API de l'IPX800 V4 permet plusieurs méthodes de communication sécurisée à partir d'un programme ou d'une autre machine. Il est alors possible de faire exécuter des actions à l'IPX800 V4 en lui envoyant une commande, ou encore de récupérer des valeurs ou des états.
Ligne 16 : Ligne 14 :
* M2M : protocole de communication inter machines.
* M2M : protocole de communication inter machines.


* Json :
* [[Lexique#JSON|Json]] : permet d'exécuter des commandes ou de récupérer des valeurs mises au format Json
 
* Formulaires XML. Plusieurs fichiers XML sont hébergés et mis à jour par l'IPX800 V4. Vous pouvez accéder à ces fichiers afin de récupérer les données ou statuts des différents périphériques de l'IPX800. V4.
Vous trouverez les descriptifs complets de ces différents fichiers dans la documentation jointe au Firmware.




Ligne 22 : Ligne 23 :
Pour cela, dans tous les cas, il vous suffira de la placer en premier argument de la manière suivante : « key=apikey ».   
Pour cela, dans tous les cas, il vous suffira de la placer en premier argument de la manière suivante : « key=apikey ».   


Les requêtes JSON commenceront donc de la manière suivante :  « http://IPX800_V4/api/xdevices.json?key=apikey&... ».  Elles pourront également comprendre plusieurs commandes à la fois (même si cela aura un impact sur la réponse).
Les requêtes JSON commenceront donc de la manière suivante :  <span style="color:blue;"><nowiki>« http://IPX800_V4/api/xdevices.json?key=apikey&... »</nowiki></span>.  Elles pourront également comprendre plusieurs commandes à la fois (même si cela aura un impact sur la réponse).


Enfin, les requêtes de l'API M2M devront être effectuées après une connexion TCP client (port 9870 par défaut). Cette connexion ne sera cependant possible qu'après l'activation du M2M (menu « http://IPX800_V4/admin/m2m.htm »). Un message « key=apikey » devra ensuite être envoyé afin de s'authentifier. Chaque message sera porteur d'une seule commande.
Enfin, les requêtes de l'API M2M devront être effectuées après une connexion TCP client (port 9870 par défaut). Cette connexion ne sera cependant possible qu'après l'activation du M2M (menu <span style="color:blue;"><nowiki>« http://IPX800_V4/admin/m2m.htm »</nowiki></span>). Un message « key=apikey » devra ensuite être envoyé afin de s'authentifier. Chaque message sera porteur d'une seule commande.
Lorsque la clef est désactivée, l'argument « key » est inutile.
Lorsque la clef est désactivée, l'argument « key » est inutile.


Le tableau suivant récapitule les commandes disponibles dans les deux API. Ces commandes sont générales, elles peuvent être utilisées sur l'une ou l'autre des API (même si le format des trames n'est pas tout à fait le même). Les réponses sont, quant à elles, différentes et seront ensuite détaillées API par API (Doc. à venir).
Le tableau suivant récapitule les commandes disponibles dans les deux API. Ces commandes sont générales, elles peuvent être utilisées sur l'une ou l'autre des API (même si le format des trames n'est pas tout à fait le même). Les réponses sont, quant à elles, différentes et seront ensuite détaillées API par API (Doc. à venir).
'''Remarque :'''
Dans l'URL <span style="color:blue;">« <nowiki>http://IPX800_V4/api/xdevices.json?key=apikey&</nowiki>... »</span> "IPX800_V4" est à remplacer par l'adresse IP de l'IPX800 V4.


  '''Remarque :'''
  '''Remarque :'''
  les en-têtes des réponses peuvent être supprimés dans les réponses de l'API M2M. La réponse type à un Get=R serait alors directement une suite de '0' ou '1' sans rien avant (cet exemple s'applique a toutes les réponses types).
  les en-têtes des réponses peuvent être supprimés dans les réponses de l'API M2M. La réponse type à un Get=R serait alors directement une suite de '0' ou '1' sans rien avant (cet exemple s'applique a toutes les réponses types).


=='''Liste des commandes'''==
=='''Liste des commandes'''==
Ligne 42 : Ligne 44 :
!|Exemple(s)
!|Exemple(s)
|-
|-
|rowspan="15" style="background-color:#E6E6FF;"|Set<br>(commande permettant de mettre à 1 l'état d'un élément de l'IPX800V4 ou de modifier la valeur de ce dernier)
|rowspan="16" style="background-color:#E6E6FF;"|Set<br>(commande permettant de mettre à 1 l'état d'un élément de l'IPX800V4 ou de modifier la valeur de ce dernier)
|R <br> (les sorties relais de l'IPX800V4 et des extensions)
|R <br> (les sorties relais de l'IPX800V4 et des extensions)
| - xx : numéro de la sortie entre 01 et 56
| - xx : numéro de la sortie entre 01 et 56
Ligne 65 : Ligne 67 :
| - l'opérateur (optionnel, lorsqu'il n'y en a pas, il s'agit d'une modification directe du compteur) qui peut être '+' (incrémentation) ou '-' (décrémentation)<br><br>- y : la valeur de modification
| - l'opérateur (optionnel, lorsqu'il n'y en a pas, il s'agit d'une modification directe du compteur) qui peut être '+' (incrémentation) ou '-' (décrémentation)<br><br>- y : la valeur de modification
|SetC=0 (met l'ensemble des compteurs à 0)<br><br>SetC=+50 (incrémente l'ensemble des compteurs de 50)<br><br>SetC=-150 (décrémente l'ensemble des compteurs de 150)
|SetC=0 (met l'ensemble des compteurs à 0)<br><br>SetC=+50 (incrémente l'ensemble des compteurs de 50)<br><br>SetC=-150 (décrémente l'ensemble des compteurs de 150)
|-
|Thermo <br> (les thermostats)
| - x : l'ID du thermostat (de 0 à 16)<br>- y : La valeur de consigne à appliquer<br>- z : La valeur d'hystérisis à appliqué<br>- a : La valeur de consigne haute (consigne + hystérésis /2)<br>- b : La valeur de consigne basse (consigne - hystérésis/2)
| SetThermo=x&Cons=y&Hys=z&ConsPlus=a&ConsMoins=b<br><br>SetThermo=1&Cons=21.6&Hys=2 (met la consigne du thermostat 1 à 21.6 et son hystérésis à 1)
|-
|-
|rowspan="2" style="background-color:#CCFFCC;"|VR <br> (extension volet roulant)
|rowspan="2" style="background-color:#CCFFCC;"|VR <br> (extension volet roulant)
| - xx : le numéro du volet de 01 à 32 (de 1 à 4 pour la première extension, etc.)<br><br>- yyy : la valeur de modification de 0 à 100 %
| - xx : le numéro du volet de 01 à 32 (de 1 à 4 pour la première extension, etc.)<br><br>- yyy : la valeur de modification de 0 à 100 %
| SetVR05=0 (met le volet 1 de la seconde extension à 0 %)<br><br>API JSON<br>http://IPX800_V4/api/xdevices.json?SetVR02=12&SetVR05=60 (sans clef)<br>(met le volet 4 de la troisième extension à 12 % et le volet 1 de cette même extension à 60%)
 
 
Utiliser la valeur 101 stoppera l'évolution du volet
| SetVR05=0 (met le volet 1 de la seconde extension à 0 %)<br><br>API JSON<br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices.json?SetVR02=12&SetVR05=60</nowiki></span><br> (sans clef)<br>(met le volet 4 de la troisième extension à 12 % et le volet 1 de cette même extension à 60%)
|-
|-
| - xxx : la valeur de modification de 0 à 100 %
|
| SetVR=100 (met l'ensemble des volets connectés à l'IPX à 100%)<br><br>SetVR=50 (met l'ensemble des volets connectés à l'IPX à 50%)
| SetVR=100 (met l'ensemble des volets connectés à l'IPX à 100%)<br><br>SetVR=50 (met l'ensemble des volets connectés à l'IPX à 50%)
|-
|-
Ligne 98 : Ligne 107 :
|style="background-color:#CCFFCC;"| EnoVR<br><br>(Volet roulant Enocean)
|style="background-color:#CCFFCC;"| EnoVR<br><br>(Volet roulant Enocean)
| - xx : le numéro du volet de 01 à 24 (de 1 à 4 pour la première extension, etc.)<br><br>- yyy : la valeur de modification de 0 à 100 %
| - xx : le numéro du volet de 01 à 24 (de 1 à 4 pour la première extension, etc.)<br><br>- yyy : la valeur de modification de 0 à 100 %
| SetEnoVR01=0 (met le volet 1 à 0 %)<br><br>API JSON<br>http://IPX800_V4/api/xdevices.json?SetVR02=12&SetVR05=60<br>(sans clef)<br>(met le volet 2 à 12 % et le volet 5 à 60%)
| SetEnoVR01=0 (met le volet 1 à 0 %)<br><br>API JSON<br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices.json?SetEnoVR02=12&SetEnoVR05=60</nowiki></span><br>(sans clef)<br>(met le volet 2 à 12 % et le volet 5 à 60%)
|-
|-
|rowspan="4"| Clear <br><br>(commande permettant de mettre à 0 l'état d'un élément de l'IPX800V4)
|rowspan="4"| Clear <br><br>(commande permettant de mettre à 0 l'état d'un élément de l'IPX800V4)
Ligne 139 : Ligne 148 :
| BitMaskR=00000000 (pilote les 8 relais de l'IPX800V4)<br><br>BitMaskR=0000000000000000 (pilote les 8 relais de l'IPX800V4 et les 8 de la première extension)
| BitMaskR=00000000 (pilote les 8 relais de l'IPX800V4)<br><br>BitMaskR=0000000000000000 (pilote les 8 relais de l'IPX800V4 et les 8 de la première extension)
|-
|-
|  VO
|style="background-color:#CCFFCC;"|  VO
| - les 128 états
| - les 128 états
| BitMaskVO=00000000000000000000000000000000...000<br>(pilote les 128 sorties virtuelles)
| BitMaskVO=00000000000000000000000000000000...000<br>(pilote les 128 sorties virtuelles)
Ligne 147 : Ligne 156 :
| BitMaskVI=00000000000000000000000000000000...000<br>(pilote les 128 entrées virtuelles)
| BitMaskVI=00000000000000000000000000000000...000<br>(pilote les 128 entrées virtuelles)
|-
|-
| rowspan="15" |Get <br><br><br>(commande permettant de connaître l'état d'un groupe d'élément de l'IPX800V4)
| rowspan="16" style="background-color:#E6E6FF;" |Get <br><br><br>(commande permettant de connaître l'état d'un groupe d'élément de l'IPX800V4)
| R <br><br><br>(commande permettant d'obtenir l'état des 56 relais de l'IPX800V4 et des extensions même si elles ne sont pas câblées)
|style="background-color:#CCFFCC;"| R <br><br><br>(commande permettant d'obtenir l'état des 56 relais de l'IPX800V4 et des extensions même si elles ne sont pas câblées)
|/
|/
|Get=R <br><br>API JSON<br><br>http://IPX800_V4/api/xdevices.json?key=apikey&Get=R <br>(avec clef)
|Get=R <br><br>API JSON<br><br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices.json?key=apikey&Get=R</nowiki></span> <br>(avec clef)
|-
|-
| D <br><br><br>(commande permettant d'obtenir l'état des 56 entrées digitales de l'IPX800V4 et des extensions même si elles ne sont pas câblées)
| D <br><br><br>(commande permettant d'obtenir l'état des 56 entrées digitales de l'IPX800V4 et des extensions même si elles ne sont pas câblées)
| /
| /
| Get=D<br><br>API JSON<br>http://IPX800_V4/api/xdevices.json?Get=D <br>(sans clef)
| Get=D<br><br>API JSON<br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices.json?Get=D</nowiki></span> <br>(sans clef)
|-
|-
| A <br><br><br>(commande permettant d'obtenir l'état des 4 entrées analogiques  de l'IPX800V4)
|style="background-color:#CCFFCC;"| A <br><br><br>(commande permettant d'obtenir l'état des 4 entrées analogiques  de l'IPX800V4)
| /
| /
| Get=A<br><br>API JSON<br>http://IPX800_V4/api/xdevices.json?key=apikey&Get=A<br>(avec clef)
| Get=A<br><br>API JSON<br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices.json?key=apikey&Get=A</nowiki></span><br>(avec clef)
|-
|-
| C <br><br><br>(commande permettant d'obtenir l'état des 16 compteurs  de l'IPX800V4)
| C <br><br><br>(commande permettant d'obtenir l'état des 16 compteurs  de l'IPX800V4)
| /
| /
| Get=C<br><br>API JSON<br>http://IPX800_V4/api/xdevices.json?Get=C<br> (sans clef)
| Get=C<br><br>API JSON<br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices.json?Get=C</nowiki></span><br> (sans clef)
|-
|-
| VI <br><br><br>(commande permettant d'obtenir l'état des 128 entrées virtuelles de l'IPX800V4)
| style="background-color:#CCFFCC;"|VI <br><br><br>(commande permettant d'obtenir l'état des 128 entrées virtuelles de l'IPX800V4)
| /
| /
| Get=VI <br><br>API JSON<br>http://IPX800_V4/api/xdevices.json?key=apikey&Get=VI<br> (avec clef)
| Get=VI <br><br>API JSON<br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices.json?key=apikey&Get=VI</nowiki></span><br> (avec clef)
|-
|-
|VO<br><br><br>(commande permettant d'obtenir l'état des 128 sorties virtuelles de l'IPX800V4)
|VO<br><br><br>(commande permettant d'obtenir l'état des 128 sorties virtuelles de l'IPX800V4)
| /
| /
| Get=VO<br><br><br>API JSON<br>http://IPX800_V4/api/xdevices.json?Get=VO<br> (sans clef)
| Get=VO<br><br><br>API JSON<br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices.json?Get=VO</nowiki></span><br> (sans clef)
|-
|-
| VA<br><br><br>(commande permettant d'obtenir l'état des 32 entrées analogiques virtuelles de l'IPX800V4)
|style="background-color:#CCFFCC;"| VA<br><br><br>(commande permettant d'obtenir l'état des 32 entrées analogiques virtuelles de l'IPX800V4)
| /
| /
| Get=VA<br><br><br>API JSON<br>http://IPX800_V4/api/xdevices,json?Get=VA<br> (sans clef)
| Get=VA<br><br><br>API JSON<br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices,json?Get=VA</nowiki></span><br> (sans clef)
|-
|-
| PW<br><br><br>(commande permettant d'obtenir l'état des 32 ping watchdog)
| PW<br><br><br>(commande permettant d'obtenir l'état des 32 ping watchdog)
| /
| /
| Get=PW<br><br><br>API JSON<br>http://IPX800_V4/api/xdevices.json?key=apikey&Get=PW <br>(avec clef)
| Get=PW<br><br><br>API JSON<br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices.json?key=apikey&Get=PW</nowiki></span> <br>(avec clef)
|-
|-
| rowspan="2"|X<br><br><br>(commande permettant d'obtenir l'état des éléments d'une extension, pour l'instant seule les extensions Enocean, DMX et PWM sont prises en compte)
| rowspan="2" style="background-color:#CCFFCC;"|X<br><br><br>(commande permettant d'obtenir l'état des éléments d'une extension, pour l'instant seule les extensions Enocean, DMX et PWM sont prises en compte)
| xxx : le nom de l'extension<br>(actuellement ne fonctionne qu'avec ENO et THL)
| xxx : le nom de l'extension<br>(actuellement ne fonctionne qu'avec ENO et THL)
| Get=XENO<br><br><br>API JSON<br>http://IPX800_V4/api/xdevices.json?Get=XENO<br> (sans clef)
| Get=XENO<br><br><br>API JSON<br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices.json?Get=XENO</nowiki></span><br> (sans clef)
|-
|-
| xxx : le nom de l'extension (seules les extensions DMX et PWM sont intégrées)<br><nowiki>'|'</nowiki> : un séparateur<br>yy-zz : une plage de valeur souhaitée (DMX de 1 à 512 et de 1 à 24 pour le PWM)<br><span style="color:red;">Ces commandes sont disponibles uniquement en JSON et sont à utiliser avec parcimonie, leur fréquence d'utilisation doit être très faible.</span>
| xxx : le nom de l'extension (seules les extensions DMX et PWM sont intégrées)<br><nowiki>'|'</nowiki> : un séparateur<br>yy-zz : une plage de valeur souhaitée (DMX de 1 à 512 et de 1 à 24 pour le PWM)<br><span style="color:red;">Ces commandes sont disponibles uniquement en JSON et sont à utiliser avec parcimonie, leur fréquence d'utilisation doit être très faible.</span>
|<nowiki>Get=XPWM|12</nowiki> (uniquement le 12ème canal) ou encore <nowiki>Get=XPWM|1-24</nowiki><br><br>API JSON<br>http://IPX800_V4/api/xdevices.json?<nowiki>Get=DXM|1-512</nowiki>
|<nowiki>Get=XPWM|12</nowiki> (uniquement le 12ème canal) ou encore <nowiki>Get=XPWM|1-24</nowiki><br><br>API JSON<br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices.json?Get=DMX|1-512</nowiki></span>
|-
|-
| VR<br><br><br>(commande permettant d'obtenir l'état des volets d'une ou plusieurs extensions volet roulant)
| VR<br><br><br>(commande permettant d'obtenir l'état des volets d'une ou plusieurs extensions volet roulant)
| x : le numéro de l'extension de 0 à 8 (0 permettant l'affichage de toutes les extensions)
| x : le numéro de l'extension de 0 à 8 (0 permettant l'affichage de toutes les extensions)
| Get=VR1<br><br><br>API JSON<br>http://IPX800_V4/api/xdevices.json?Get=VR0
| Get=VR1<br><br><br>API JSON<br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices.json?Get=VR0</nowiki></span>
|-
|-
| FP<br><br><br>(commande permettant d'obtenir l'état des 16 zones des différentes X-4FP)
|style="background-color:#CCFFCC;"| FP<br><br><br>(commande permettant d'obtenir l'état des 16 zones des différentes X-4FP)
| /
| /
| Get=FP<br><br><br>API JSON<br>http://IPX800_V4/api/xdevices.json?Get=FP
| Get=FP<br><br><br>API JSON<br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices.json?Get=FP</nowiki></span>
|-
|-
| SMS<br><br><br>(commande permettant d'obtenir le dernier SMS transmis à l'IPX800 V4 par la X-GSM)
| SMS<br><br><br>(commande permettant d'obtenir le dernier SMS transmis à l'IPX800 V4 par la X-GSM)
| /
| /
| Get=SMS<br><br><br>API JSON<br>http://IPX800_V4/api/xdevices.json?Get=SMS
| Get=SMS<br><br><br>API JSON<br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices.json?Get=SMS</nowiki></span>
|-
|-
| G<br><br><br>(commande permettant d’obtenir l’état des 24 voies des différents X-Dimmer)
| style="background-color:#CCFFCC;"|G<br><br><br>(commande permettant d’obtenir l’état des 24 voies des différents X-Dimmer)
|/
|/
| Get=G<br><br><br>API JSON<br>http://IPX800_V4/api/xdevices.json?Get=G
| Get=G<br><br><br>API JSON<br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices.json?Get=G</nowiki></span>
|-
|-
| T<br><br><br>(commande permettant d’obtenir la consigne de température des Thermostats)
| T<br><br><br>(commande permettant d’obtenir la consigne de température des Thermostats)
| /
| /
| Get=T<br><br><br>API JSON<br>http://IPX800_V4/api/xdevices.jsjs?Get=T
| Get=T<br><br><br>API JSON<br><span style="color:blue;"><nowiki>http://IPX800_V4/api/xdevices.jsjs?Get=T</nowiki></span>
|-
|-
| all<br><br><br>(commande permettant d'obtenir l'état de tous les éléments de l'IPX800V4)<br><br>Cette commande est uniquement disponible en JSON !
|style="background-color:#CCFFCC;"| all<br><br><br>(commande permettant d'obtenir l'état de tous les éléments de l'IPX800V4)<br><br>Cette commande est uniquement disponible en JSON !
| /
| /
|Get=all
|Get=all
|-
|-
| Reset
| style="background-color:#FF8080;"|Reset
| /
|style="background-color:#FF8080;"| /
| /
|style="background-color:#FF8080;"| /
|style="background-color:#FF8080;"| /
|}
|}


Remarque : Pour les commandes Set, Clear et Toggle des relais, entrées et sorties virtuelles ainsi que les commandes Set du DMX et du PWM, il est possible de mettre plusieurs paramètres séparés par une virgule comme dans l'exemple suivant : « http://IPX800_V4/api/xdevices.json?key=apikey&SetR=01,02,03,04,05,06,07,08 » qui met les 8 relais de l'IPX800V4 à 1.
'''Remarque :''' Pour les commandes Set, Clear et Toggle des relais, entrées et sorties virtuelles ainsi que les commandes Set du DMX et du PWM, il est possible de mettre plusieurs paramètres séparés par une virgule comme dans l'exemple suivant :<span style="color:blue;"><nowiki> « http://IPX800_V4/api/xdevices.json?key=apikey&SetR=01,02,03,04,05,06,07,08 »</nowiki></span> qui met les 8 relais de l'IPX800V4 à 1.


Remarque pour l'API JSON uniquement : il faut ajouter « http://IPX800_V4/api/xdevices.json?key=apikey& »avant la commande donnée en exemple (cf. les exemples donnés pour la commande Get...). Les commandes peuvent également être ajoutées les unes après les autres (une seule commande Get prise en compte) en étant séparées par un ''&'' : « http://IPX800_V4/api/xdevices.json?key=apikey&cmd1&cmd2 ».
Pour ajouter plusieurs commandes Get, il est possible de séparer les arguments par un caractère '|' de la manière suivante : « http://IPX800_V4/api/xdevices.json?key=apikey&Get=Arg1|Arg2|Arg3 ». Cette commande est cependant à utiliser avec parcimonie afin de ne pas consommer trop de ressources de l'IPX800V4. Le nombre d'argument est limité à 10 mais il n'est pas conseillé de dépasser les 5 arguments. Enfin, ce type de commande n'est pas compatible avec l'argument « X ».


Inclure des étiquettes dans les notifications (mail, push et GSM)
'''Remarque pour l'API JSON uniquement :''' il faut ajouter <span style="color:blue;"><nowiki>« http://IPX800_V4/api/xdevices.json?key=apikey& »</nowiki></span> avant la commande donnée en exemple (cf. les exemples donnés pour la commande Get...). Les commandes peuvent également être ajoutées les unes après les autres (une seule commande Get prise en compte) en étant séparées par un «'''&'''» : <span style="color:blue;"><nowiki>« http://IPX800_V4/api/xdevices.json?key=apikey&cmd1&cmd2 »</nowiki></span>.


Il est possible d'inclure des étiquettes de l'IPX800V4 dans vos push en utilisant le signe « $ ». Plusieurs étiquettes peuvent être inclues dans une même notification. Les exmples ci-dessous sont purement théorique, les noms de variable, de page ou autre sont libre.


Argument Paramètre(s) optionnel(s) Exemple Retour
Pour ajouter plusieurs commandes Get, il est possible de séparer les arguments par un caractère «'''|'''» de la manière suivante : <span style="color:blue;"><nowiki>« http://IPX800_V4/api/xdevices.json?key=apikey&Get=Arg1|Arg2|Arg3 »</nowiki></span>. Cette commande est cependant à utiliser avec parcimonie afin de ne pas consommer trop de ressources de l'IPX800V4. Le nombre d'argument est limité à 10 mais il n'est pas conseillé de dépasser les 5 arguments. Enfin, ce type de commande n'est pas compatible avec l'argument « X ».
M : l'adresse MAC / 192.168.1.100/mapage.htm?data=$M 192.168.1.100/mapage.htm?data=00:04:A3:87:00:1F
D: les entrées digitales xx : le numéro de l'entrée digital (sans ce paramètre les 56 états des entrées sont renvoyées) compris entre 01 et 56. 192.168.1.100/mapage.htm?data=$D01&$D 192.168.1.100/mapage.htm?data=0&010101...
R : les relais xx : le numéro du relais (sans ce paramètre les 56 états des relais sont renvoyées) compris entre 01 et 56. 192.168.1.100/mapage.htm?data=$R08&$R 192.168.1.100/mapage.htm?data=1&010101...
A : les entrées analogiques xx : le numéro de l'entrée analogique (sans ce paramètre les  valeurs des 4 entrées analogiques sont renvoyées) compris entre 01 et 04. 192.168.1.100/mapage.htm?data=$A04&$A 192.168.1.100/mapage.htm?data=200&10&20&30&200
C : les compteurs xx : le numéro du compteur (sans ce paramètre les  valeurs des 16 compteurs sont renvoyées) compris entre 01 et 16. 192.168.1.100/mapage.htm?data=$C09&$C 192.168.1.100/mapage.htm?data=20&10&20&30&...
VI : les entrées virtuelles xxx : le numéro de l'entrée virtuelle (sans ce paramètre les  128 états des entrées virtuelles sont renvoyées) compris entre 001 et 128. 192.168.1.100/mapage.htm?data=$VI001&$VI 192.168.1.100/mapage.htm?data=0&010101...
VO : les sorties virtuelles xxx : le numéro de la sortie virtuelle (sans ce paramètre les  128 états des sorties virtuelles sont renvoyées) compris entre 001 et 128. 192.168.1.100/mapage.htm?data=$VO008&$VO 192.168.1.100/mapage.htm?data=1&010101...
VA : les entrées analogiques virtuelles xx : le numéro de l'entrée analogique virtuelle (sans ce paramètre les  valeurs des 32 entrées analogiques virtuelles sont renvoyées) compris entre 01 et 32. 192.168.1.100/mapage.htm?data=$VA08&$VA 192.168.1.100/mapage.htm?data=65535&12&13&..
VR : les positions des volets roulants ou BSO xx : le numéro du volet roulant compris entre 01 et 32 (de 01 à 04 pour la première extension, de 05 à 08 pour la seconde, …, de 29 à 32 pour la huitième). Sans  ce paramètre les 32 états sont renvoyés 192.168.1.100/mapage.htm?data=$VR08&$VR
FP : les états des zones fils pilotes xx : le numéro de la zone entre 01 et 16 (de 01 à 04 pour la première extension, de 05 à 08 pour la seconde, …, de 13 à 16 pour la 4). Sans  ce paramètre les 16 états sont renvoyés
192.168.1.100/mapage.htm?data=$FP01&$FP


=='''Inclure des étiquettes dans les notifications (mail, push et GSM)'''==
XENO xx : le numéro du périphérique souhaité entre 01 et 80 (de 01 à 24 pour les interrupteurs, de 25 à 48 pour les capteurs magnétiques, de 49 à 72 pour les Wall Plug, de 73 à 96 pour les capteurs analogiques → ces derniers n'intègrent pas les compteurs correspondant).  Il est possible de remplacer ce paramètre par un 'A' pour obtenir tous les capteurs analogiques, un 'S' pour les interrupteurs, un 'C' pour les capteurs magnétiques où un 'W' pour les Wall Plug. 192.168.1.100/mapage.htm?data=$XENO08&$XENOA
XDMX xxx : le numéro du canal souhaité entre 001 et 512 (sans ce paramètre, la commande est caduc) 192.168.1.100/mapage.htm?data=$XDMX002&XDMX512
XPWM xx : le numéro du canal souhaité entre 01 et 24 (sans ce paramètre les 24 canaux sont transmis) 192.168.1.100/mapage.htm?data=$XPWM22&XPWM01&XPWM
PW: les ping watchdog xx : le numéro du ping watchdog (sans ce paramètre les  32 états des ping watchdog sont renvoyées) compris entre 01 et 32. 192.168.1.100/mapage.htm?data=$PW08&$PW 192.168.1.100/mapage.htm?data=1&010101...
THL : les états des X-THL xx : le numéro de la valeur analogique entre 01 et 42 (de 01 à 03 pour la première extension, de 04 à 06 pour la seconde, …, de 40 à 42 pour la 14). La température étant en 1, 4 ,…, 40, l'humidité en 2, 5, ,,,, 41 et la luminosité en 3, 6, …, 52. Sans  ce paramètre les 42 états sont renvoyés
192.168.1.100/mapage.htm?data=$THL01&$THL


192.168.1.100/mapage.htm?data=25.2&25.2&13&..
Il est possible d'inclure des étiquettes de l'IPX800V4 dans vos push en utilisant le signe « $ ». Plusieurs étiquettes peuvent être inclues dans une même notification. Les exmples ci-dessous sont purement théorique, les noms de variable, de page ou autre sont libre.
TS : TimeStamp / 192.168.1.100/mapage.htm?data=$TS 192.168.1.100/mapage.htm?data=2017/01/16T14:52:30+01:00
{| class="wikitable"
 
!|Argument
Remarque : La taille des url ON et OFF de vos push ne doit pas dépasser les 220 caractères (avec caractères spéciaux pris en compte) même avec les retours liés aux étiquettes.
!|Paramètre(s) optionnel(s)
!|Exemple
!|Retour
|-
|style="background-color:#CCFFCC;"|M <br> l'[[Lexique#Adresse_MAC|Adresse MAC]]
|style="background-color:#CCFFCC;"|/
|style="background-color:#CCFFCC;"|192.168.1.100/mapage.htm?data=$M
|style="background-color:#CCFFCC;"|192.168.1.100/mapage.htm?data=00:04:A3:87:00:1F
|-
|D<br> les entrées digitales
|xx : le numéro de l'entrée digital (sans ce paramètre les 56 états des entrées sont renvoyées) compris entre 01 et 56.
|192.168.1.100/mapage.htm?data=$D01&$D
|192.168.1.100/mapage.htm?data=0&010101...
|-
|style="background-color:#CCFFCC;"|R <br> les relais
|style="background-color:#CCFFCC;"|xx : le numéro du relais (sans ce paramètre les 56 états des relais sont renvoyées) compris entre 01 et 56.
|style="background-color:#CCFFCC;"|192.168.1.100/mapage.htm?data=$R08&$R
|style="background-color:#CCFFCC;"|192.168.1.100/mapage.htm?data=1&010101...
|-
|A <br> les entrées analogiques
|xx : le numéro de l'entrée analogique (sans ce paramètre les  valeurs des 4 entrées analogiques sont renvoyées) compris entre 01 et 04.
|192.168.1.100/mapage.htm?data=$A04&$A
|192.168.1.100/mapage.htm?data=200&10&20&30&200
|-
|style="background-color:#CCFFCC;"|C <br> les compteurs
|style="background-color:#CCFFCC;"|xx : le numéro du compteur (sans ce paramètre les  valeurs des 16 compteurs sont renvoyées) compris entre 01 et 16.
|style="background-color:#CCFFCC;"|192.168.1.100/mapage.htm?data=$C09&$C
|style="background-color:#CCFFCC;"|192.168.1.100/mapage.htm?data=20&10&20&30&...
|-
|VI <br> les entrées virtuelles
|xxx : le numéro de l'entrée virtuelle (sans ce paramètre les  128 états des entrées virtuelles sont renvoyées) compris entre 001 et 128.
|192.168.1.100/mapage.htm?data=$VI001&$VI
|192.168.1.100/mapage.htm?data=0&010101...
|-
|style="background-color:#CCFFCC;"|VO <br> les sorties virtuelles
|style="background-color:#CCFFCC;"|xxx : le numéro de la sortie virtuelle (sans ce paramètre les  128 états des sorties virtuelles sont renvoyées) compris entre 001 et 128.
|style="background-color:#CCFFCC;"|192.168.1.100/mapage.htm?data=$VO008&$VO
|style="background-color:#CCFFCC;"|192.168.1.100/mapage.htm?data=1&010101...
|-
|VA <br> les entrées analogiques virtuelles
|xx : le numéro de l'entrée analogique virtuelle (sans ce paramètre les  valeurs des 32 entrées analogiques virtuelles sont renvoyées) compris entre 01 et 32.
|192.168.1.100/mapage.htm?data=$VA08&$VA
|192.168.1.100/mapage.htm?data=65535&12&13&..
|-
|style="background-color:#CCFFCC;"|VR <br> les positions des volets roulants ou BSO
|style="background-color:#CCFFCC;"|xx : le numéro du volet roulant compris entre 01 et 32 (de 01 à 04 pour la première extension, de 05 à 08 pour la seconde, …, de 29 à 32 pour la huitième). Sans  ce paramètre les 32 états sont renvoyés
|style="background-color:#CCFFCC;"|192.168.1.100/mapage.htm?data=$VR08&$VR
|style="background-color:#CCFFCC;"|
|-
|FP <br> les états des zones fils pilotes
|xx : le numéro de la zone entre 01 et 16 (de 01 à 04 pour la première extension, de 05 à 08 pour la seconde, …, de 13 à 16 pour la 4). Sans  ce paramètre les 16 états sont renvoyés
|192.168.1.100/mapage.htm?data=$FP01&$FP
|
|-
|style="background-color:#CCFFCC;"|XENO <br> Enocean
|style="background-color:#CCFFCC;"|xx : le numéro du périphérique souhaité entre 01 et 80 (de 01 à 24 pour les interrupteurs, de 25 à 48 pour les capteurs magnétiques, de 49 à 72 pour les Wall Plug, de 73 à 96 pour les capteurs analogiques → ces derniers n'intègrent pas les compteurs correspondant).  Il est possible de remplacer ce paramètre par un 'A' pour obtenir tous les capteurs analogiques, un 'S' pour les interrupteurs, un 'C' pour les capteurs magnétiques où un 'W' pour les Wall Plug.
|style="background-color:#CCFFCC;"|192.168.1.100/mapage.htm?data=$XENO08&$XENOA
|style="background-color:#CCFFCC;"|
|-
|XDMX <br>DMX 512
|xxx : le numéro du canal souhaité entre 001 et 512 (sans ce paramètre, la commande est caduc)
|192.168.1.100/mapage.htm?data=$XDMX002&$XDMX512
|
|-
|style="background-color:#CCFFCC;"|XPWM <br> Les états PWM
|style="background-color:#CCFFCC;"|xx : le numéro du canal souhaité entre 01 et 24 (sans ce paramètre les 24 canaux sont transmis)
|style="background-color:#CCFFCC;"|192.168.1.100/mapage.htm?data=$XPWM22&$XPWM01&$XPWM
|style="background-color:#CCFFCC;"|
|-
|PW <br> les ping watchdog
|xx : le numéro du ping watchdog (sans ce paramètre les  32 états des ping watchdog sont renvoyées) compris entre 01 et 32.
|192.168.1.100/mapage.htm?data=$PW08&$PW
|192.168.1.100/mapage.htm?data=1&010101...
|-
|style="background-color:#CCFFCC;"|THL <br> les états des X-THL
|style="background-color:#CCFFCC;"|xx : le numéro de la valeur analogique entre 01 et 42 (de 01 à 03 pour la première extension, de 04 à 06 pour la seconde, …, de 40 à 42 pour la 14).<br> La température étant en 1, 4 ,…, 40, l'humidité en 2, 5, ,,,, 41 et la luminosité en 3, 6, …, 42.<br> Sans  ce paramètre les 42 états sont renvoyés
|style="background-color:#CCFFCC;"|192.168.1.100/mapage.htm?data=$THL01&$THL
|style="background-color:#CCFFCC;"|192.168.1.100/mapage.htm?data=25.2&25.2&13&..
|-
|TS <br> TimeStamp
| /
| 192.168.1.100/mapage.htm?data=$TS
| 192.168.1.100/mapage.htm?data=2017/01/16T14:52:30+01:00
|}


'''Remarque :''' La taille des url ON et OFF de vos push ne doit pas dépasser les 220 caractères (avec caractères spéciaux pris en compte) même avec les retours liés aux étiquettes.


=='''Utilisation de M2M'''==


==='''M2M par un Client TCP'''===


===Utilisation de M2M===
Télécharger le client TCP [http://www.nsauditor.com/freeware/downloads/TcpClientServer.exe ici]
Télécharger le client TCP [http://www.nsauditor.com/freeware/downloads/TcpClientServer.exe ici]


Ligne 294 : Ligne 368 :
Pensez à vous déconnecter avant de quitter. (bouton "'''Close Connection'''")
Pensez à vous déconnecter avant de quitter. (bouton "'''Close Connection'''")


M2M_V4_GetA.PNG
==='''M2M en Html et PHP'''===
 
Il est possible de se connecter à l'IPX800 V4 via un script PHP et d'exécuter des commandes M2M à patir d'un serveur web.
 
Ecrivons d'abord un petit fichier Html qui comportera 2 boutons de commande afin de piloter un relais. Dans l'exemple ci-dessous, le script est enregistré sur mon serveur Web (192.168.0.9), dans un dossier M2M. Adaptez l'URL à vos besoins.
 
 
<source>
<html>
<body>
//utilisation de la commande SetR
Pilotage d'un relais sur IPX800 V4<br>
Sortie 2 : <a href=http://192.168.0.9/M2M/V4/M2M.php?commande=SetR=02>ON</a>
&nbsp;<a href=http://192.168.0.9/M2M/V4/M2M.php?commande=ClearR=02>OFF</a>
</body>
</html>
</source>
 
Créons le fichier M2M.php dans le même dossier Web que le fichier précédent.
 
L'accès en M2M est protégé par l'Api Key mise en place dans les paramètres de l'IPX800 V4.
 
Dans le script PHP ci-dessous, renseignez l'adresse IP de l'IPX800 V4 et l'api key pour authentification.
 
Renseignez le port si vous avez modifié la valeur par défaut (9870).
 
<source>
<?php
 
//Paramètres à ajuster
$ip_ipx="192.168.X.Y";
$port_M2M=9870;
$key_M2M='Api_Key'
 
//initialisation
$M2M_Cmd = $_GET["commande"];
 
//Heure d'éxécution du script
echo date("r");
 
//tentative ouverture Socket
error_reporting(E_ALL);
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket == false) { $texte .= "Echec du socket : " . socket_strerror(socket_last_error()) ; }
$result = socket_connect($socket, $ip_ipx, $port_M2M);
if ($result == false) { $texte .= "Echec de la connexion : " . socket_strerror(socket_last_error($socket)) ; }
 
//Envoi du mot de passe
$msg = 'key=' . $key_M2M;
socket_write($socket, $msg, strlen($msg));
$reponse = '<BR>Login : ' . socket_read($socket, 64);
echo $reponse;
 
//Envoi commande M2M
$msg = $M2M_Cmd;
socket_write($socket, $msg, strlen($msg));
$reponse = '<BR>CMD : ' . socket_read($socket, 64);
socket_close($socket);
echo $reponse;
?>
</source>
 
=='''Accès aux formulaires XML en HTML & PHP'''==
Voici un exemple de script PHP que nous pouvons héberger sur un serveur Web.
 
Nous récupérons le formulaire '''status.xml''' hébergé par l'IPX800 V4 dans le dossier '''User'''.
 
L'accès à ce fichier est soumis à la même protection que l'interface Web de l'IPX800 V4.
 
* Si l'accès utilisateur est protégé, vous devez renseigner l'utilisateur et le mot de passe dans le script.<br>Vous devez valoriser la variable ''$IPX800_RESTREINT'' à '''true'''
* si l'accès est non protégé, vous devez valoriser la variable ''$IPX800_RESTREINT'' à '''false'''<br>
 
Pour vérifier l'état de la protection, rendez vous dans le menu Administrateur/Réseau/Paramètres,<br>
vérifier ces valeurs :<br>
  [[Fichier:V4_securite_user.png]]
 
Pour l'exemple ci-dessous, nous récupérons
* la valeur du compteur n°1 qui est contenue entre les balises <span style="color:#C23A80;"><cpt0></span> et <span style="color:#C23A80;"></cpt0></span>
* l'état du Relais 8 compris entre les balises <span style="color:#C23A80;"><led7></span> et <span style="color:#C23A80;"></led7></span>
<source>
<?php
// Variables à modifier dans ce script
$IPX800_IP = '192.168.X.Y' ;  // Mettre ici l'adresse IP ou le nom DNS de l'IPX800 V4
$IPX800_PORT = '80' ;      // Mettre ici le port d'accès de l'IPX800 - 80 par défaut
$IPX800_USER = 'user' ;    // Mettre ici l'utilisateur pour l'accès restreint si activé sur IPX800 V4
$IPX800_PWD = 'MotDePasse' ;  // Mettre ici le mot de passe User pour l'accès restreint  si activé sur IPX800 V4
$IPX800_RESTREINT = false; //mettre true pour un accès restreint, false si accès non protégé
 
// URL résultante d'accès au status de l'IPX800
if ( $IPX800_RESTREINT ) {
$IPX800_URL = "http://{$IPX800_USER}:{$IPX800_PWD}@{$IPX800_IP}:{$IPX800_PORT}/user/status.xml";
} else {
$IPX800_URL = "http://{$IPX800_IP}:{$IPX800_PORT}/user/status.xml";
}
 
// Vérification de l'accessibilité de l'IPX800
$ipx800_available= false ;
$ipx800_check = @get_headers($IPX800_URL);
if (strpos($ipx800_check[0],'200 OK') !== false ) { $ipx800_available = true ; }
unset ($ipx800_check );
 
// Si l'IPX800 est accessible on l'interroge et on affiche le contenu "décodé"
if ( $ipx800_available ) {
  $ipx800_status = @simplexml_load_file($IPX800_URL);
  //Récupération de la valeur du compteur 1
  $IPX800_compteur1 = $ipx800_status->cpt0;
  echo "La valeur du compteur 1 est {$IPX800_compteur1}<br>";
  //Récupération statut Relais 8
  if ($ipx800_status->led7==1) {//teste si relais ON
echo "Le Relais n°8 est ON<br>";
} else { //Relais OFF
echo "Le Relais n°8 est OFF<br>";
}
}
?>
</source>

Version actuelle datée du 1 septembre 2022 à 09:02

Introduction

API IPX800 V4

Presentation.png
Nom API IPX800 V4
Famille IPX800 V4


L'API de l'IPX800 V4 permet plusieurs méthodes de communication sécurisée à partir d'un programme ou d'une autre machine. Il est alors possible de faire exécuter des actions à l'IPX800 V4 en lui envoyant une commande, ou encore de récupérer des valeurs ou des états.

  • M2M : protocole de communication inter machines.
  • Json : permet d'exécuter des commandes ou de récupérer des valeurs mises au format Json
  • Formulaires XML. Plusieurs fichiers XML sont hébergés et mis à jour par l'IPX800 V4. Vous pouvez accéder à ces fichiers afin de récupérer les données ou statuts des différents périphériques de l'IPX800. V4.

Vous trouverez les descriptifs complets de ces différents fichiers dans la documentation jointe au Firmware.


Lors de l'utilisation de l'API M2M, la clef n'est demandée qu'une seule fois par connexion. Cependant, lors de l'utilisation de l'API JSON, il sera nécessaire de renseigner cette clef à chaque commande.
Pour cela, dans tous les cas, il vous suffira de la placer en premier argument de la manière suivante : « key=apikey ».

Les requêtes JSON commenceront donc de la manière suivante : « http://IPX800_V4/api/xdevices.json?key=apikey&... ». Elles pourront également comprendre plusieurs commandes à la fois (même si cela aura un impact sur la réponse).

Enfin, les requêtes de l'API M2M devront être effectuées après une connexion TCP client (port 9870 par défaut). Cette connexion ne sera cependant possible qu'après l'activation du M2M (menu « http://IPX800_V4/admin/m2m.htm »). Un message « key=apikey » devra ensuite être envoyé afin de s'authentifier. Chaque message sera porteur d'une seule commande. Lorsque la clef est désactivée, l'argument « key » est inutile.

Le tableau suivant récapitule les commandes disponibles dans les deux API. Ces commandes sont générales, elles peuvent être utilisées sur l'une ou l'autre des API (même si le format des trames n'est pas tout à fait le même). Les réponses sont, quant à elles, différentes et seront ensuite détaillées API par API (Doc. à venir).

Remarque :
Dans l'URL « http://IPX800_V4/api/xdevices.json?key=apikey&... » "IPX800_V4" est à remplacer par l'adresse IP de l'IPX800 V4.
Remarque :
les en-têtes des réponses peuvent être supprimés dans les réponses de l'API M2M. La réponse type à un Get=R serait alors directement une suite de '0' ou '1' sans rien avant (cet exemple s'applique a toutes les réponses types).

Liste des commandes

Commande Argument Paramètre(s) Exemple(s)
Set
(commande permettant de mettre à 1 l'état d'un élément de l'IPX800V4 ou de modifier la valeur de ce dernier)
R
(les sorties relais de l'IPX800V4 et des extensions)
- xx : numéro de la sortie entre 01 et 56 SetR=01 (met le relais 1 à 1)

SetR=56 (relais 56 à 1)
VO
(les sorties virtuelles)
- xxx : numéro de la sortie virtuelle entre 0x1 et 128 SetVO=001 (met la sortie virtuelle 1 à 1)

SetVO=128 (sortie 128 à 1)
VI
(les entrées virtuelles)
- xxx : numéro de l'entrée virtuelle entre 001 et 128 SetVI=001 (met l'entrée virtuelle 1 à 1)

SetVI=128 (entrée 128 à 1)
VA
(entrées analogiques virtuelles)
- xx : numéro de l'entrée analogique virtuelle de 01 à 32

- y : la valeur de modification de 0 à 65535
SetVA01=65535 (met l'entrée analogique virtuelle 1 à 65535)

SetVA32=0 (met l'entrée analogique virtuelle 32 à 0)
C
(les compteurs)
- xx : numéro du compteur de 01 à 16

- l'opérateur (optionnel, lorsqu'il n'y en a pas, il s'agit d'une modification directe du compteur) qui peut être '+' (incrémentation) ou '-' (décrémentation)

- y : la valeur de modification (de 0 à 255)
SetC01=0 (met le compteur 1 à 0)

SetC08=+2 (incrémente le compteur 8 de 2)

SetC16=-200 (décrémente le compteur 16 de 200)
- l'opérateur (optionnel, lorsqu'il n'y en a pas, il s'agit d'une modification directe du compteur) qui peut être '+' (incrémentation) ou '-' (décrémentation)

- y : la valeur de modification
SetC=0 (met l'ensemble des compteurs à 0)

SetC=+50 (incrémente l'ensemble des compteurs de 50)

SetC=-150 (décrémente l'ensemble des compteurs de 150)
Thermo
(les thermostats)
- x : l'ID du thermostat (de 0 à 16)
- y : La valeur de consigne à appliquer
- z : La valeur d'hystérisis à appliqué
- a : La valeur de consigne haute (consigne + hystérésis /2)
- b : La valeur de consigne basse (consigne - hystérésis/2)
SetThermo=x&Cons=y&Hys=z&ConsPlus=a&ConsMoins=b

SetThermo=1&Cons=21.6&Hys=2 (met la consigne du thermostat 1 à 21.6 et son hystérésis à 1)
VR
(extension volet roulant)
- xx : le numéro du volet de 01 à 32 (de 1 à 4 pour la première extension, etc.)

- yyy : la valeur de modification de 0 à 100 %


Utiliser la valeur 101 stoppera l'évolution du volet

SetVR05=0 (met le volet 1 de la seconde extension à 0 %)

API JSON
http://IPX800_V4/api/xdevices.json?SetVR02=12&SetVR05=60
(sans clef)
(met le volet 4 de la troisième extension à 12 % et le volet 1 de cette même extension à 60%)
SetVR=100 (met l'ensemble des volets connectés à l'IPX à 100%)

SetVR=50 (met l'ensemble des volets connectés à l'IPX à 50%)
Pulse
(extension volet roulant, pilotage des BSO)
Cette commande ne doit pas être cumulée avec un SetVR
- UP xx : le sens et le numéro du BSO de 01 à 32 (de 1 à 4 pour la première extension, etc.)

- yyy : le nombre de pulse souhaité entre 1 et 127
SetPulseUP05=20
(20 impulsions vers le haut pour le BSO 1 de la seconde extension)
- DOWNxx

- yyy : le nombre de pulse souhaité entre 1 et 127
SetPulseDOWN01=2
(2 impulsions vers le bas pour le BSO 1 de la première extension)
FP

(extension Fil Pilote)
- xx : le numéro de la zone souhaité de 00 à 16 (de 01 à 04 pour la première extension, de 05 à 08 pour la seconde, etc. 00 permettant le pilotage de l'ensemble des zones)

-y : la commande : 0 pour confort, 1 pour Eco, 2 pour Hors Gel, 3 pour Arrêt, 4 pour Confort -1 et 5 pour Confort -2
SetFP00=1
(met l'ensemble des zone en ECO)

SetFP05=3
(arrête la zone 1 de la seconde extension)
EnoPC

(Actionneur Enocean)
X : le numéro de l'actionneur de 1 à 24 SetEnoPC=8
(actionneur 8 à 1)
SMS

(commande permettant d'envoyer un SMS via la X-GSM)
x : le numéro du destinataire

y : le message

x et y étant séparé par deux points « : »
SetSMS=+33601020304:Test GCE

SetSMS=0601020304:Test OK
G

(Extension X-DIMMER)
x : le pourcentage de dimmage

yy : le numéro de la voie dimmée

z : le temps de la rampe en milliseconde
SetG=x (toutes les voies de tous les X-Dimmers sont commandées à x%)

SetGyy=x (Commande de la voie yy à x%)

SetGyy=x&Time=z (Commande de la voie yy à x% avec une rampe de z millisecondes)

Le paramètre « Time » est optionnel.
Commande d’extinction : Mettre la valeur de dimmage à « 0 »
Commande d’allumage à la dernière valeur de dimmage connue : Mettre la valeur de dimmage à « 101 »
EnoVR

(Volet roulant Enocean)
- xx : le numéro du volet de 01 à 24 (de 1 à 4 pour la première extension, etc.)

- yyy : la valeur de modification de 0 à 100 %
SetEnoVR01=0 (met le volet 1 à 0 %)

API JSON
http://IPX800_V4/api/xdevices.json?SetEnoVR02=12&SetEnoVR05=60
(sans clef)
(met le volet 2 à 12 % et le volet 5 à 60%)
Clear

(commande permettant de mettre à 0 l'état d'un élément de l'IPX800V4)
R

(les sorties relais de l'IPX800V4 et des extensions)
- xx : numéro de la sortie entre 01 et 56 ClearR=02 (met le relais 2 à 0)

ClearR=55 (relais 55 à 0)
VO

(les sorties virtuelles)
- xxx : numéro de la sortie virtuelle entre 001 et 128 ClearVO=002 (met la sortie virtuelle 1 à 0)

ClearVO=127 (sortie 127 à 0)
VI

(les entrées virtuelles)
- xxx : numéro de l'entrée virtuelle entre 001 et 128 ClearVI=002 (met l'entrée virtuelle 2 à 0)

ClearVI=127 (entrée 127 à 0)
EnoPC

(Actionneur Enocean)
X : le numéro de l'actionneur de 1 à 24 ClearEnoPC=7
(Actionneur 7 à 0)
Toggle


(commande permettant de faire un switch de l'état d'un élément de l'IPX800V4)
R

(les sorties relais de l'IPX800V4 et des extensions)
- xx : numéro de la sortie entre 01 et 56 ToggleR=03 (toggle le relais 2)

ToggleR=54 (toggle le relais 54 à 0)
VO


(les sorties virtuelles)
- xxx : numéro de la sortie virtuelle entre 001 et 128 ToggleVO=003 (toggle la sortie virtuelle 3)

ToggleVO=127 (sortie 127 à 0)
VI


(les entrées virtuelles)
- xxx : numéro de l'entrée virtuelle entre 001 et 128 ToggleVI=002 (met l'entrée virtuelle 2 à 0)

ToggleVI=031 (entrée 31 à 0)
EnoPC


(Actionneur Enocean)
X : le numéro de l'actionneur de 1 à 24 ToggleEnoPC=3
(toggle l'actionneur 3)
BitMask


(commande permettant de modifier l'état d'un groupe d'élément de l'IPX800V4)
R - les états (par groupe de huit) des relais correspondants. Il peut y avoir de 8 à 56 états (IPX + 6 extensions) dans la même commande. BitMaskR=00000000 (pilote les 8 relais de l'IPX800V4)

BitMaskR=0000000000000000 (pilote les 8 relais de l'IPX800V4 et les 8 de la première extension)
VO - les 128 états BitMaskVO=00000000000000000000000000000000...000
(pilote les 128 sorties virtuelles)
VI - les 128 états BitMaskVI=00000000000000000000000000000000...000
(pilote les 128 entrées virtuelles)
Get


(commande permettant de connaître l'état d'un groupe d'élément de l'IPX800V4)
R


(commande permettant d'obtenir l'état des 56 relais de l'IPX800V4 et des extensions même si elles ne sont pas câblées)
/ Get=R

API JSON

http://IPX800_V4/api/xdevices.json?key=apikey&Get=R
(avec clef)
D


(commande permettant d'obtenir l'état des 56 entrées digitales de l'IPX800V4 et des extensions même si elles ne sont pas câblées)
/ Get=D

API JSON
http://IPX800_V4/api/xdevices.json?Get=D
(sans clef)
A


(commande permettant d'obtenir l'état des 4 entrées analogiques de l'IPX800V4)
/ Get=A

API JSON
http://IPX800_V4/api/xdevices.json?key=apikey&Get=A
(avec clef)
C


(commande permettant d'obtenir l'état des 16 compteurs de l'IPX800V4)
/ Get=C

API JSON
http://IPX800_V4/api/xdevices.json?Get=C
(sans clef)
VI


(commande permettant d'obtenir l'état des 128 entrées virtuelles de l'IPX800V4)
/ Get=VI

API JSON
http://IPX800_V4/api/xdevices.json?key=apikey&Get=VI
(avec clef)
VO


(commande permettant d'obtenir l'état des 128 sorties virtuelles de l'IPX800V4)
/ Get=VO


API JSON
http://IPX800_V4/api/xdevices.json?Get=VO
(sans clef)
VA


(commande permettant d'obtenir l'état des 32 entrées analogiques virtuelles de l'IPX800V4)
/ Get=VA


API JSON
http://IPX800_V4/api/xdevices,json?Get=VA
(sans clef)
PW


(commande permettant d'obtenir l'état des 32 ping watchdog)
/ Get=PW


API JSON
http://IPX800_V4/api/xdevices.json?key=apikey&Get=PW
(avec clef)
X


(commande permettant d'obtenir l'état des éléments d'une extension, pour l'instant seule les extensions Enocean, DMX et PWM sont prises en compte)
xxx : le nom de l'extension
(actuellement ne fonctionne qu'avec ENO et THL)
Get=XENO


API JSON
http://IPX800_V4/api/xdevices.json?Get=XENO
(sans clef)
xxx : le nom de l'extension (seules les extensions DMX et PWM sont intégrées)
'|' : un séparateur
yy-zz : une plage de valeur souhaitée (DMX de 1 à 512 et de 1 à 24 pour le PWM)
Ces commandes sont disponibles uniquement en JSON et sont à utiliser avec parcimonie, leur fréquence d'utilisation doit être très faible.
Get=XPWM|12 (uniquement le 12ème canal) ou encore Get=XPWM|1-24

API JSON
http://IPX800_V4/api/xdevices.json?Get=DMX|1-512
VR


(commande permettant d'obtenir l'état des volets d'une ou plusieurs extensions volet roulant)
x : le numéro de l'extension de 0 à 8 (0 permettant l'affichage de toutes les extensions) Get=VR1


API JSON
http://IPX800_V4/api/xdevices.json?Get=VR0
FP


(commande permettant d'obtenir l'état des 16 zones des différentes X-4FP)
/ Get=FP


API JSON
http://IPX800_V4/api/xdevices.json?Get=FP
SMS


(commande permettant d'obtenir le dernier SMS transmis à l'IPX800 V4 par la X-GSM)
/ Get=SMS


API JSON
http://IPX800_V4/api/xdevices.json?Get=SMS
G


(commande permettant d’obtenir l’état des 24 voies des différents X-Dimmer)
/ Get=G


API JSON
http://IPX800_V4/api/xdevices.json?Get=G
T


(commande permettant d’obtenir la consigne de température des Thermostats)
/ Get=T


API JSON
http://IPX800_V4/api/xdevices.jsjs?Get=T
all


(commande permettant d'obtenir l'état de tous les éléments de l'IPX800V4)

Cette commande est uniquement disponible en JSON !
/ Get=all
Reset / / /

Remarque : Pour les commandes Set, Clear et Toggle des relais, entrées et sorties virtuelles ainsi que les commandes Set du DMX et du PWM, il est possible de mettre plusieurs paramètres séparés par une virgule comme dans l'exemple suivant : « http://IPX800_V4/api/xdevices.json?key=apikey&SetR=01,02,03,04,05,06,07,08 » qui met les 8 relais de l'IPX800V4 à 1.


Remarque pour l'API JSON uniquement : il faut ajouter « http://IPX800_V4/api/xdevices.json?key=apikey& » avant la commande donnée en exemple (cf. les exemples donnés pour la commande Get...). Les commandes peuvent également être ajoutées les unes après les autres (une seule commande Get prise en compte) en étant séparées par un «&» : « http://IPX800_V4/api/xdevices.json?key=apikey&cmd1&cmd2 ».


Pour ajouter plusieurs commandes Get, il est possible de séparer les arguments par un caractère «|» de la manière suivante : « http://IPX800_V4/api/xdevices.json?key=apikey&Get=Arg1|Arg2|Arg3 ». Cette commande est cependant à utiliser avec parcimonie afin de ne pas consommer trop de ressources de l'IPX800V4. Le nombre d'argument est limité à 10 mais il n'est pas conseillé de dépasser les 5 arguments. Enfin, ce type de commande n'est pas compatible avec l'argument « X ».

Inclure des étiquettes dans les notifications (mail, push et GSM)

Il est possible d'inclure des étiquettes de l'IPX800V4 dans vos push en utilisant le signe « $ ». Plusieurs étiquettes peuvent être inclues dans une même notification. Les exmples ci-dessous sont purement théorique, les noms de variable, de page ou autre sont libre.

Argument Paramètre(s) optionnel(s) Exemple Retour
M
l'Adresse MAC
/ 192.168.1.100/mapage.htm?data=$M 192.168.1.100/mapage.htm?data=00:04:A3:87:00:1F
D
les entrées digitales
xx : le numéro de l'entrée digital (sans ce paramètre les 56 états des entrées sont renvoyées) compris entre 01 et 56. 192.168.1.100/mapage.htm?data=$D01&$D 192.168.1.100/mapage.htm?data=0&010101...
R
les relais
xx : le numéro du relais (sans ce paramètre les 56 états des relais sont renvoyées) compris entre 01 et 56. 192.168.1.100/mapage.htm?data=$R08&$R 192.168.1.100/mapage.htm?data=1&010101...
A
les entrées analogiques
xx : le numéro de l'entrée analogique (sans ce paramètre les valeurs des 4 entrées analogiques sont renvoyées) compris entre 01 et 04. 192.168.1.100/mapage.htm?data=$A04&$A 192.168.1.100/mapage.htm?data=200&10&20&30&200
C
les compteurs
xx : le numéro du compteur (sans ce paramètre les valeurs des 16 compteurs sont renvoyées) compris entre 01 et 16. 192.168.1.100/mapage.htm?data=$C09&$C 192.168.1.100/mapage.htm?data=20&10&20&30&...
VI
les entrées virtuelles
xxx : le numéro de l'entrée virtuelle (sans ce paramètre les 128 états des entrées virtuelles sont renvoyées) compris entre 001 et 128. 192.168.1.100/mapage.htm?data=$VI001&$VI 192.168.1.100/mapage.htm?data=0&010101...
VO
les sorties virtuelles
xxx : le numéro de la sortie virtuelle (sans ce paramètre les 128 états des sorties virtuelles sont renvoyées) compris entre 001 et 128. 192.168.1.100/mapage.htm?data=$VO008&$VO 192.168.1.100/mapage.htm?data=1&010101...
VA
les entrées analogiques virtuelles
xx : le numéro de l'entrée analogique virtuelle (sans ce paramètre les valeurs des 32 entrées analogiques virtuelles sont renvoyées) compris entre 01 et 32. 192.168.1.100/mapage.htm?data=$VA08&$VA 192.168.1.100/mapage.htm?data=65535&12&13&..
VR
les positions des volets roulants ou BSO
xx : le numéro du volet roulant compris entre 01 et 32 (de 01 à 04 pour la première extension, de 05 à 08 pour la seconde, …, de 29 à 32 pour la huitième). Sans ce paramètre les 32 états sont renvoyés 192.168.1.100/mapage.htm?data=$VR08&$VR
FP
les états des zones fils pilotes
xx : le numéro de la zone entre 01 et 16 (de 01 à 04 pour la première extension, de 05 à 08 pour la seconde, …, de 13 à 16 pour la 4). Sans ce paramètre les 16 états sont renvoyés 192.168.1.100/mapage.htm?data=$FP01&$FP
XENO
Enocean
xx : le numéro du périphérique souhaité entre 01 et 80 (de 01 à 24 pour les interrupteurs, de 25 à 48 pour les capteurs magnétiques, de 49 à 72 pour les Wall Plug, de 73 à 96 pour les capteurs analogiques → ces derniers n'intègrent pas les compteurs correspondant). Il est possible de remplacer ce paramètre par un 'A' pour obtenir tous les capteurs analogiques, un 'S' pour les interrupteurs, un 'C' pour les capteurs magnétiques où un 'W' pour les Wall Plug. 192.168.1.100/mapage.htm?data=$XENO08&$XENOA
XDMX
DMX 512
xxx : le numéro du canal souhaité entre 001 et 512 (sans ce paramètre, la commande est caduc) 192.168.1.100/mapage.htm?data=$XDMX002&$XDMX512
XPWM
Les états PWM
xx : le numéro du canal souhaité entre 01 et 24 (sans ce paramètre les 24 canaux sont transmis) 192.168.1.100/mapage.htm?data=$XPWM22&$XPWM01&$XPWM
PW
les ping watchdog
xx : le numéro du ping watchdog (sans ce paramètre les 32 états des ping watchdog sont renvoyées) compris entre 01 et 32. 192.168.1.100/mapage.htm?data=$PW08&$PW 192.168.1.100/mapage.htm?data=1&010101...
THL
les états des X-THL
xx : le numéro de la valeur analogique entre 01 et 42 (de 01 à 03 pour la première extension, de 04 à 06 pour la seconde, …, de 40 à 42 pour la 14).
La température étant en 1, 4 ,…, 40, l'humidité en 2, 5, ,,,, 41 et la luminosité en 3, 6, …, 42.
Sans ce paramètre les 42 états sont renvoyés
192.168.1.100/mapage.htm?data=$THL01&$THL 192.168.1.100/mapage.htm?data=25.2&25.2&13&..
TS
TimeStamp
/ 192.168.1.100/mapage.htm?data=$TS 192.168.1.100/mapage.htm?data=2017/01/16T14:52:30+01:00

Remarque : La taille des url ON et OFF de vos push ne doit pas dépasser les 220 caractères (avec caractères spéciaux pris en compte) même avec les retours liés aux étiquettes.

Utilisation de M2M

M2M par un Client TCP

Télécharger le client TCP ici

Installez le logiciel


Exécutez le programme. Cochez le mode Client renseignez l'adresse IP de l'IPX800 V4 renseignez le port (9870 par défaut) cliquez sur Connecter

M2M V4 Connect.PNG

La connexion est établie. L'IPX800 V4 est en attente de la clé API

Pour vous authentifier sur l'IPX800, entrez la clé API et cliquez sur Send. Vous devriez avoir un retour de l'IPX800 V4.

Time:22:41:9 - Received Data From Connection: 192.168.0.112-9870
0000: 53 75 63 63 65 73 73 0D 0A                                              Success..

M2M V4 Auth.PNG

Saisissez une commande M2M. Par exemple SetR=01 pour passer la sortie Relais à l'état ON.

Time:22:43:21 - Received Data From Connection: 192.168.0.112-9870
0000: 53 75 63 63 65 73 73 0D 0A                                              Success..


M2M V4 SetR.PNG

Vous pouvez également interroger l'IPX800 V4. Par exemple envoyez la commande Get=A afin de récupérer la valeur des entrées analogiques.

M2M V4 GetA.PNG

Pensez à vous déconnecter avant de quitter. (bouton "Close Connection")

M2M en Html et PHP

Il est possible de se connecter à l'IPX800 V4 via un script PHP et d'exécuter des commandes M2M à patir d'un serveur web.

Ecrivons d'abord un petit fichier Html qui comportera 2 boutons de commande afin de piloter un relais. Dans l'exemple ci-dessous, le script est enregistré sur mon serveur Web (192.168.0.9), dans un dossier M2M. Adaptez l'URL à vos besoins.


<html>
<body>
//utilisation de la commande SetR
Pilotage d'un relais sur IPX800 V4<br>
Sortie 2 : <a href=http://192.168.0.9/M2M/V4/M2M.php?commande=SetR=02>ON</a>
&nbsp;<a href=http://192.168.0.9/M2M/V4/M2M.php?commande=ClearR=02>OFF</a>
</body>
</html>

Créons le fichier M2M.php dans le même dossier Web que le fichier précédent.

L'accès en M2M est protégé par l'Api Key mise en place dans les paramètres de l'IPX800 V4.

Dans le script PHP ci-dessous, renseignez l'adresse IP de l'IPX800 V4 et l'api key pour authentification.

Renseignez le port si vous avez modifié la valeur par défaut (9870).

<?php

//Paramètres à ajuster
$ip_ipx="192.168.X.Y";
$port_M2M=9870;
$key_M2M='Api_Key'

//initialisation
$M2M_Cmd = $_GET["commande"];

//Heure d'éxécution du script
echo date("r");

//tentative ouverture Socket
error_reporting(E_ALL);
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket == false) { $texte .= "Echec du socket : " . socket_strerror(socket_last_error()) ; }
$result = socket_connect($socket, $ip_ipx, $port_M2M);
if ($result == false) { $texte .= "Echec de la connexion : " . socket_strerror(socket_last_error($socket)) ; }

//Envoi du mot de passe
$msg = 'key=' . $key_M2M;
socket_write($socket, $msg, strlen($msg));
$reponse = '<BR>Login : ' . socket_read($socket, 64);
echo $reponse;

//Envoi commande M2M
$msg = $M2M_Cmd;
socket_write($socket, $msg, strlen($msg));
$reponse = '<BR>CMD : ' . socket_read($socket, 64);
socket_close($socket);
echo $reponse;
?>

Accès aux formulaires XML en HTML & PHP

Voici un exemple de script PHP que nous pouvons héberger sur un serveur Web.

Nous récupérons le formulaire status.xml hébergé par l'IPX800 V4 dans le dossier User.

L'accès à ce fichier est soumis à la même protection que l'interface Web de l'IPX800 V4.

  • Si l'accès utilisateur est protégé, vous devez renseigner l'utilisateur et le mot de passe dans le script.
    Vous devez valoriser la variable $IPX800_RESTREINT à true
  • si l'accès est non protégé, vous devez valoriser la variable $IPX800_RESTREINT à false
Pour vérifier l'état de la protection, rendez vous dans le menu Administrateur/Réseau/Paramètres,
vérifier ces valeurs :
V4 securite user.png

Pour l'exemple ci-dessous, nous récupérons

  • la valeur du compteur n°1 qui est contenue entre les balises <cpt0> et </cpt0>
  • l'état du Relais 8 compris entre les balises <led7> et </led7>
<?php
// Variables à modifier dans ce script
$IPX800_IP = '192.168.X.Y' ;   // Mettre ici l'adresse IP ou le nom DNS de l'IPX800 V4
$IPX800_PORT = '80' ;      // Mettre ici le port d'accès de l'IPX800 - 80 par défaut
$IPX800_USER = 'user' ;    // Mettre ici l'utilisateur pour l'accès restreint si activé sur IPX800 V4
$IPX800_PWD = 'MotDePasse' ;  // Mettre ici le mot de passe User pour l'accès restreint  si activé sur IPX800 V4
$IPX800_RESTREINT = false; //mettre true pour un accès restreint, false si accès non protégé

// URL résultante d'accès au status de l'IPX800
if ( $IPX800_RESTREINT ) {
		$IPX800_URL = "http://{$IPX800_USER}:{$IPX800_PWD}@{$IPX800_IP}:{$IPX800_PORT}/user/status.xml";
} else {
		$IPX800_URL = "http://{$IPX800_IP}:{$IPX800_PORT}/user/status.xml";
}

// Vérification de l'accessibilité de l'IPX800
$ipx800_available= false ;
$ipx800_check = @get_headers($IPX800_URL);
if (strpos($ipx800_check[0],'200 OK') !== false ) { $ipx800_available = true ; }
unset ($ipx800_check );

// Si l'IPX800 est accessible on l'interroge et on affiche le contenu "décodé"
if ( $ipx800_available ) { 
   $ipx800_status = @simplexml_load_file($IPX800_URL);
   //Récupération de la valeur du compteur 1
   $IPX800_compteur1 = $ipx800_status->cpt0;
   echo "La valeur du compteur 1 est {$IPX800_compteur1}<br>";
   //Récupération statut Relais 8
   if ($ipx800_status->led7==1) {//teste si relais ON
		echo "Le Relais n°8 est ON<br>";
		} else { //Relais OFF
		echo "Le Relais n°8 est OFF<br>";
		}
}
?>