Différences entre les versions de « API V3 »

De GCE Electronics
Aller à la navigation Aller à la recherche
 
(121 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
API V3.05.70
{{sommaire|niveau=2|flottant=left}}
{{sommaire|niveau=2|flottant=left}}
 
=='''Présentation'''==
{{Infobox IPX800
{{Infobox IPX800
  | titre        = API IPX800 V3  
  | titre        = API IPX800 V3  
Ligne 6 : Ligne 7 :
  | famille      = IPX800 V3
  | famille      = IPX800 V3
}}
}}
== '''Présentation''' ==
<br><br><br><br>


==PROTOCOLE DE COMMUNICATION M2M IPX800 (mode serveur)==
L'[[Lexique#API|API]] de l'[[IPX800_V3|IPX800 V3]] permet 3 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 en lui envoyant une commande, ou encore de récupérer des valeurs ou des états.
 
* Le '''M2M''' est un protocole de communication intermachines.
Son usage nécessite l'envoi de commandes sous forme de trames TCP. Cela impose l'ouverture d'une connexion TCP au travers d'un socket.
 
* L''''[[Lexique#API|API]] Http''' est un ensemble de commandes envoyées sous la forme d'URL. C'est le moyen le plus utilisé pour communiquer avec une box domotique.
Les commandes sont également utilisables avec un simple navigateur Internet.
 
* Le '''formulaire XML''' est un fichier XML hébergé et mis à jour par l'IPX800 V3.<br>Il est possible de le télécharger afin de récupérer le statut de toutes les entrées/sorties de l'IPX800 V3 ainsi que les valeurs analogiques ou diverses.
 
==M2M : Protocole de communication (mode serveur)==
===Liste des commandes M2M===
 
Les ordres sont envoyées par trame TCP/IP sur le port TCP 9870 (par défaut).
Les ordres sont envoyées par trame TCP/IP sur le port TCP 9870 (par défaut).


Ligne 16 : Ligne 28 :
Les commandes doivent être envoyées par un client TCP.
Les commandes doivent être envoyées par un client TCP.


Commander une sortie : Set
====Commander une sortie====
 
La commande : '''Set'''
 
Paramètres :
   
   
Paramètres :
Setxxy ou xx est le numéro de sortie de 01 à 32 et y l’état de la sortie 0 = Off et 1 = On


Setxxy ou xx est le numéro de sortie de 01 à 32 et y l’état de la sortie 0 = Off et 1 = On
Exemples :


Pour mettre le relais 1 à 1 le code commande est Set011
Pour mettre le relais 1 à 1 le code commande est Set011


Pour commander la sortie en mode impulsionnel il faut ajouter le symbole p en fin de chaine et
Pour commander la sortie en mode impulsionnel il faut ajouter le symbole p en fin de chaine et avoir défini les délais Ta et Tb dans l’interface WEB de l’IPX800.


avoir été définit les délais Ta et Tb dans l’interface WEB de l’IPX800.
Pour mettre le relais 2 à 1 en mode impulsionnel le code commande est Set021p


Pour mettre le relais 1 à 1 en mode impulsionnel le code commande est Set011p
====Commander les sorties simultanément====
 
La commande : '''Bit'''
Le mode bitmask vous permet de définir avec une seule commande l’état que doivent prendre des 32 sorties.


  • Commander les sorties simultanément : Bit=
  Paramètre :
   
   
Le mode bitmask vous permet de définir avec une seule commande l’état que doivent prendre des 32 sorties.
Le code Bit= doit etre suivi des 32 états des sorties (0 ou 1)


Le code Bit= doit etre suivi des 32 états des sorties (0 ou 1)
Exemples :


Bit=00000000000000000000000000000000 Met les 32 sorties à 0
Bit=00000000000000000000000000000000 Met les 32 sorties à 0


Bit=11111111111111111111111111111111 Met les 32 sorties à 1  
Bit=11111111111111111111111111111111 Met les 32 sorties à 1


• • Obtenir l‘état d’une entrée: GetIn
==== Obtenir l‘état d’une entrée====
 
La commande : '''GetIn'''
 
Paramètres :
   
   
Paramètres :
GetInx ou x est ne numéro de l’entrée de 1 à 32
 
Exemple :
 
GetIn1 permet d’obtenir l’état de l’entrée 1.


GetInx ou x est ne numéro de l’entrée de 1 à 32
Réponse de l’IPX800 : GetIn1=0 (Valeur 0 ou 1 en fonction de l’état de l‘entrée).


GetIn1 permet d’obtenir l’état de l’entrée 1. L’IPX800 répond GetIn1=0 (Valeur 0 ou 1 en fonction de l’état de l‘entrée).
====Obtenir l‘état de toutes les entrées====


La commande : '''GetInputs'''


  • Obtenir l‘état de toutes les entrées : GetInputs
  Paramètres : Aucun
Paramètres :


GetInputs permet de recevoir dans une seule trame l’état des 32 entrées digitales.
GetInputs permet de recevoir dans une seule trame l’état des 32 entrées digitales.
Exemple :
GetInputs


Réponse de l’IPX800: GetInputs=00000000000000000000000000000000 (Le dernier caractère reçu correspond à l’entrée 32)
Réponse de l’IPX800: GetInputs=00000000000000000000000000000000 (Le dernier caractère reçu correspond à l’entrée 32)


Obtenir l‘état d’une entrée analogique : GetAn
====Obtenir l‘état d’une entrée analogique====
 
La commande : '''GetAn'''
 
Paramètres :
   
   
Paramètres :
GetAnx ou x est le numéro de l’entrée analogique de 1 à 4
 
GetAn1 permet de recevoir l’état de l’entrée analogique 1.


GetAnx ou x est le numéro de l’entrée analogique de 1 à 4
Réponse de l’IPX800 V3 :  GetAn1=512


GetAn1 permet de recevoir l’état de l’entrée analogique 1. Réponse de l’IPX800 GetAn1=512 (valeur de 0 à 1023)
L'IPX800 renvoie une valeur comprise entre 0 et 1023. C'est la valeur brute qu'il faudra convertir grâce à la formule associée au capteur.


Obtenir l‘état d’un compteur d’implusion : GetCount
====Obtenir l‘état d’un compteur d’implusion====
 
La commande : '''GetCount'''
 
Paramètres :
   
   
Paramètres :
GetCountx ou x est le numéro de compteur (de 1 à 3)
 
Exemple :
 
GetCount1 renvoie la valeur du compteur 1.
 
Réponse de l’IPX : GetCount1=0 (Compteur 32 Bits soit une valeur de 0 à 4294967295)


GetCountx ou x est le numéro de compteur (de 1 à 3)
====Obtenir l‘état d’une sortie====


GetCount1 renvoi la valeur du compteur 1. Réponse de l’IPX GetCount1=0 (Compteur 32 Bits soit une valeur de 0 à 4294967295)
La commande : '''GetOut'''


  • Obtenir l‘état d’une sortie: GetOut
  Paramètres :
   
   
Paramètres :
GetOutx ou x est le numéro de la sortie (de 1 à 32).


GetOutx ou x est le numéro de la sortie (de 1 à 32).
Exemple :


GetOut1 renvoi la valeur de la sorite 1. Réponse de l’IPX800 GetOut1=1 (Valeur 0 ou 1 en fonction de l’état de la sortie).
GetOut1 renvoie la valeur de la sorite 1.  


Obtenir l‘état de toute les sorties: GetOutputs
Réponse de l’IPX800 : GetOut1=1 (Valeur 0 ou 1 en fonction de l’état de la sortie).
   
 
Paramètres :
====Obtenir l‘état de toute les sorties====
 
La commande : '''GetOutputs'''
 
  Paramètres : Aucun


GetOutputs permet de recevoir dans une seule trame l’état des 32 sorties.
GetOutputs permet de recevoir dans une seule trame l’état des 32 sorties.
Réponse de l’IPX800: GetOutputs=00000000000000000000000000000000 (Le dernier caractère reçu correspond à la sortie 32)
Réponse de l’IPX800: GetOutputs=00000000000000000000000000000000 (Le dernier caractère reçu correspond à la sortie 32)


Remise à zéro des compteurs: ResetCount
====Remise à zéro des compteurs====
 
La commande : '''ResetCount'''
 
Paramètres :
   
   
Paramètres :
ResetCountx ou x est le numéro du compteur à remettre à zéro.
 
Exemple :  
 
ResetCount1 remet le compteur 1 à zéro.
 
Réponse de l’IPX800 : Success
 
====Reset système de l’IPX800====


ResetCountx ou x est le numéro du compteur à remettre à zéro.
La commande : '''Reset'''


Paramètres : Aucun


ResetCount1 remet le compteur 1 à zéro. Réponse de l’IPX800: Success
Exemple :  


Reset système de l’IPX800 Reset
Reset  
Paramètres :


Reset L’envoi de cette commande provoque le redémarrage de l’IPX800 (Reboot).
L’envoi de cette commande provoque le redémarrage de l’IPX800 (Reboot).


----
----


==Listes des différentes commandes HTTP==
===Utilisation du M2M===
En fonction du modèle et de la révision de firmware, certaines commandes peuvent ne pas être pris en compte.
 
====Logiciel Client TCP====
 
Vous pouvez télécharger un client TCP gratuit [http://www.nsauditor.com/freeware/downloads/TcpClientServer.exe sur ce site].
 
Installez le logiciel sur votre PC
 
* '''Connexion à l'IPX800 V3'''
 
::* Cochez le mode Client, renseignez l'adresse IP de l'IPX800 V3 ainsi que le port.<br>Dans l'exemple, 192.168.0.43 : IPX800 V3. <br>le port par défaut de l'accès en M2M à l'IPX800 est 9870.<br>
 
::* Cliquez sur le bouton "'''Connect'''".
 
:::[[Fichier:M2M_V3_Connect.png|450px]]
 
::* Si l'accès M2M à l'IPX800 V3 est protégé, entrez votre mot de passe (sous la forme key=''motDePasse'') dans la zone de texte et cliquez sur le bouton "'''Send'''".
 
:::[[Fichier:M2M_V3_Auth.png|450px]]
 
* '''Envoi d'une commande'''
 
:::Dans la zone "Send", tapez une commande puis cliquez sur le bouton "'''Send'''".
 
:::Dans l'exemple, le relais 5 est passé à l'état OFF.
 
:::[[Fichier:M2Mclient.PNG|450px]]
 
 
Vous pouvez tester diverses commandes.
 
Pensez à vous déconnecter avant de quitter (bouton "'''Close Connection'''")
 
====HTML et PHP====
 
Il est possible de se connecter à l'IPX800 V3 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, dans un dossier M2M. Adaptez l'URL à vos besoins.
 
<source>
<html>
<body>
Pilotage d'un Relais en M2M<br>
Sortie 5 : <a href=http://192.168.0.9/M2M/M2M.php?commande=Set050>off</a>
&nbsp;<a href=http://192.168.0.9/M2M/M2M.php?commande=Set051>on</a>
</body>
</html>
</source>
 
Ecrivons maintenant notre script Php. Créons un fichier '''M2M.php''' dans le même dossier web que le fichier précédent.
 
Si l'accès Web de l'IPX800 V3 est sécurisé, l'accès en M2M est également protégé par ce même mot de passe, depuis le Firmware 3.05.46
Dans le script PHP ci-dessous, renseignez l'adresse IP de l'IPX800 et le mot de passe pour authentification.
Renseignez le port si vous avez modifié la valeur par défaut (9870).
 
<source lang="php5">
<?php
// @fgtoul 2018
 
//Paramètres à ajuster
$ip_ipx="192.168.X.Y";
$port_M2M=9870;
$key_M2M='mot_de_passe_ipx800'
 
//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>
 
Vous pourrez trouver un autre exemple sur le célèbre Blog de @LionelF :
 
http://www.myipx800.com/index.php?post/2013/02/16/Commander-l-IPX-en-PHP-%3A-utilisation-du-M2M
 
'''Attention''', au moment où Lionel a écrit son article, l'accès au M2M n'était pas sécurisé.
 
====Autre exemple====
 
Sur le Forum, vous pourrez trouver un exemple d'utilisation en Windev (source proposé par @jjacques68
 
https://forum.gce-electronics.com/t/commande-m2m-via-socket-et-windev/6458/15
 
==API HTTP==
===Listes des différentes commandes HTTP===
 
L'API Http est constituée d'une URL. Pour un accès sécurisé à l'IPX800, vous devrez y renseigner le login/mot de passe.
Les commandes seront adressées comme cela
<span style="color:blue;"><nowiki>http://user:motDePasse@IPX800_V3/leds.cgi?</nowiki></span>
 


Simuler une entrée : http://IPX800_V3/leds.cgi?
====Simuler une entrée====


Paramètres :
La commande : <span style="color:blue;"><nowiki>http://IPX800_V3/leds.cgi?</nowiki></span>


led=x où x est le numéro de l'entrée, de 100 à 131.
Paramètres :
led=x où x est le numéro de l'entrée, de 100 à 131.


On pourra donc, de la sorte, commander les entrées 9 à 32 (108 à 131 dans la commande http) même si les extensions X880 ne sont pas
On pourra donc, de la sorte, commander les entrées 9 à 32 (108 à 131 dans la commande http) même si les extensions X880 ne sont pas
présentes physiquement. Pratique pour créer des assignations virtuelles !
présentes physiquement. Pratique pour créer des assignations virtuelles !


• Réinitialiser un timer : http://IPX800_V3/protect/timers/timer1.htm?
'''Exemple :'''


Paramètres :
<span style="color:blue;"><nowiki>http://IPX800_V3/leds.cgi?led=100</nowiki></span>


erase=x où x est le numéro du timer à effacer, de 0 à 127.
Permet de permuter l'état logique de l'entrée 9


• Programmer un timer : http://IPX800_V3/protect/timers/timer1.htm?
====Réinitialiser un timer====


Paramètres :
La commande : <span style="color:blue;"><nowiki>http://IPX800_V3/protect/timers/timer1.htm?</nowiki></span>


timer=x où x c'est le numéro du timer concerné, de 0 à 127
Paramètres :
erase=x où x est le numéro du timer à effacer, de 0 à 127.


day=x où x est le jour concerné de 0 à 6 (lundi à dimanche), 7 pour tous les jours, 8 pour les jours travaillés (lundi à vendredi) et 9 pour les weekends.


time=HH%3AMM où HH représente les heures et MM les minutes de l'horaire choisi
'''Exemple :'''


relay=x où x est le numéro de sortie assignée, de 0 à 31, ou de compteur assigné, de 32 à 34.
<span style="color:blue;"><nowiki>http://IPX800_V3/protect/timers/timer1.htm?erase=4</nowiki></span>


action=x où x est le numéro d'action avec 0=off, 1=on, 2=inversion, 3=impulsion, 4=annulation du timer (valeur vide) et 7=pour réinitialiser les compteurs.
Cette commande efface le 5ème Timer.


• Commander une sortie : http://IPX800_V3/leds.cgi?
====Programmer un timer====


Paramètre :
La commande : <span style="color:blue;"><nowiki>http://IPX800_V3/protect/timers/timer1.htm?</nowiki></span>


led=x avec x le numéro de la sortie, de 0 à 31.
 
Paramètres :
timer=x où x c'est le numéro du timer concerné, de 0 à 127
day=x où x est le jour concerné de 0 à 6 (lundi à dimanche), 7 pour tous les jours, 8 pour les jours travaillés (lundi à vendredi) et 9 pour les weekends.
time=HH%3AMM où HH représente les heures et MM les minutes de l'horaire choisi
relay=x où x est le numéro de sortie assignée, de 0 à 31, ou de compteur assigné, de 32 à 34.
action=x où x est le numéro d'action avec 0=off, 1=on, 2=inversion, 3=impulsion, 4=annulation du timer (valeur vide) et 7=pour réinitialiser les compteurs.
 
'''Exemple :''' <span style="color:blue;"><nowiki>http://IPX800_V3/protect/timers/timer1.htm?timer=124&time=10%3A00&day=7&relay=0&action=1</nowiki></span>
 
Cette commande programme le 125ème Timer
 
Tous les jours, à 10h00, le relais 1 est passé à l'état ON
 
====Commander une sortie====
 
La commande : <span style="color:blue;"><nowiki>http://IPX800_V3/leds.cgi?</nowiki></span>
 
Paramètre :
led=x avec x le numéro de la sortie, de 0 à 31.


Cette syntaxe permet la commande directe d'une sortie. Cette syntaxe commandera une impulsion si la sortie concernée a été préréglée avec au moins un Tb non nul dans le site embarqué de l'IPX. Sinon la commande inversera tout simplement l'état de la sortie, comme un télérupteur.
Cette syntaxe permet la commande directe d'une sortie. Cette syntaxe commandera une impulsion si la sortie concernée a été préréglée avec au moins un Tb non nul dans le site embarqué de l'IPX. Sinon la commande inversera tout simplement l'état de la sortie, comme un télérupteur.


• Commander une sortie sans mode impulsionnel : http://IPX800_V3/preset.htm?
'''Exemple :'''


Paramètre :
<span style="color:blue;"><nowiki>http://IPX800_V3/leds.cgi?led=0</nowiki></span>


setx=1 ou 0 où x le numéro de la sortie de 1 à 32.
Cette commande agit sur le Relais 1. Si Ta=0 et Tb=0, l'état logique est inversé.


Cette syntaxe permet de commander un état de sortie, c'est-à-dire on pour 1 ou off pour 0. Nous avons donc là une sorte d'interrupteur.  
Si Ta<>0 ou Tb<>0, c'est une impulsion.
 
====Commander une sortie sans mode impulsionnel====
 
La commande : <span style="color:blue;"><nowiki>http://IPX800_V3/preset.htm?</nowiki></span>
 
Paramètre :
setx=1 ou 0 où x le numéro de la sortie de 1 à 32.


Avantage de cette commande : elle peut tout de même s'appliquer à une sortie préréglée en mode impulsionnel. Par conséquent, pour une telle sortie un "led" lancera une impulsion alors qu'un "set" forcera un état on ou off sans impulsion.
Cette syntaxe permet de commander un état de sortie, c'est-à-dire ON pour 1 ou OFF pour 0. Nous avons donc là une sorte d'interrupteur.  


• Gérer un compteur et sa valeur : http://IPX800_V3/protect/assignio/counter.htm?
Avantage de cette commande : elle peut tout de même s'appliquer à une sortie préréglée en mode impulsionnel. Par conséquent, pour une telle sortie un "led" lancera une impulsion alors qu'un "set" forcera un état ON ou OFF sans impulsion.


Paramètres :
====Gérer un compteur et sa valeur====


counternamex=NOUVEAUNOM permet de renommer le compteur x, de 1 à 3
La commande : <span style="color:blue;"><nowiki>http://IPX800_V3/protect/assignio/counter1.htm?</nowiki></span>


counterx=123 permet de forcer une valeur au compteur x
Paramètres :
num=x : détermine le numéro du compteur à gérer ( avec x de 0 à 7)
cname=NOUVEAUNOM permet de renommer le compteur x
counter=123 permet de forcer une valeur au compteur x
inc=123 permet d'incrémenter une valeur (1 à 255) au compteur x
dec=123 permet de décrémenter une valeur (1 à 255) au compteur x


Commande très pratique pour faire une remise à zéro par exemple.
Commande très pratique pour faire une remise à zéro par exemple.


• Gérer la configuration d'une sortie : http://IPX800_V3/protect/settings/output1.htm?
exemples :  


Paramètres :
<span style="color:blue;"><nowiki>http://IPX800_V3/protect/assignio/counter1.htm?num=0&cname=CONSO+ENERGIE&counter=4140282456</nowiki></span><br>
<span style="color:blue;"><nowiki>http://IPX800_V3/protect/assignio/counter1.htm?num=0&inc=50</nowiki></span>


output=x où x est le numéro de sortie concernée, de 1 à 32
====Gérer la configuration d'une sortie====


relayname=LumiereTerrasse avec ce paramètre on peut modifier le nom de la sortie
La commande : <span style="color:blue;"><nowiki>http://IPX800_V3/protect/settings/output1.htm?</nowiki></span>


delayon=x il s'agit là du Ta où x exprime, en dixième de seconde, le temps de retard avant mise à on, valeur max 65535 soit un peu plus de 1h49
Paramètres :
output=x où x est le numéro de sortie concernée, de 1 à 32
relayname=LumiereTerrasse avec ce paramètre on peut modifier le nom de la sortie
delayon=x il s'agit là du Ta où x exprime, en dixième de seconde, le temps de retard avant mise à on, valeur max 65535 soit un peu plus de 1h49
delayoff=y le Tb où y, en dixième de seconde, le temps de maintien avant remise à off de l'impulsion, valeur max idem


delayoff=y le Tb où y, en dixième de seconde, le temps de maintien avant remise à off de l'impulsion, valeur max idem
Ici nous pouvons modifier "à la volée" n'importe quelle configuration de sortie : son nom et même le Ta et le Tb, on peut donc rendre une sortie impulsionnelle ou à l'inverse arrêter le mode impulsionnel en remettant un Ta et un Tb nuls.
Ici nous pouvons modifier "à la volée" n'importe quelle configuration de sortie : son nom et même le Ta et le Tb, on peut donc rendre une sortie impulsionnelle ou à l'inverse arrêter le mode impulsionnel en remettant un Ta et un Tb nuls.


Gérer la configuration d'une entrée numérique : http://IPX800_V3/protect/assignio/assign1.htm?
====Gérer la configuration d'une entrée numérique====


Paramètres :
La commande : <span style="color:blue;"><nowiki>http://IPX800_V3/protect/assignio/assign1.htm?</nowiki></span>


input=x où x est le numéro d'entrée concernée, de 0à 31
Paramètres :
input=x où x est le numéro d'entrée concernée, de 0à 31
inputname=Inter1 avec ce paramètre on peut modifier le nom de l'entrée
lx=1 ce petit L permet de choisir une sortie assignée (x de 0 à 31)
mode=x là c'est le mode d'assignation où x = 0 pour on/off, 1 pour switch, 2 pour VR, 3 pour on et 4 pour off.
inv=1 si nécessaire, permet d'inverser la logique d'entrée.


inputname=Inter1 avec ce paramètre on peut modifier le nom de l'entrée
====Gérer la configuration d'une entrée analogique====


lx=1 ce petit L permet de choisir une sortie assignée (x de 0 à 31)
La commande : <span style="color:blue;"><nowiki>http://IPX800_V3/protect/assignio/analog1.htm?</nowiki></span>


mode=x là c'est le mode d'assignation où x = 0 pour on/off, 1 pour switch, 2 pour VR, 3 pour on et 4 pour off.
Paramètres :
analog=x où x est le numéro de l'entrée concernée, de 0 à 3
name=Temperature permet de renommer l'entrée
selectinput=4 permet de choisir un type de capteur avec 0=valeur brute, 1=tension, 2=TC4012, 3=SHT-X3 lumière, 4=SHT-X3 température et 5=SHT-X3 humidité
hi=x où x est la valeur brute de seuil haut
mhi=0 ou 1 pour off ou on, il s'agit là de l'action sur la ou les sortie(s) assignée(s), paramètres lka
lo=696
mlo=0 ou 1 pour off ou on, il s'agit de l'action sur la ou les sortie(s) assignée(s)
lkax=1 permet de choisir une sortie assignée (x de 1 à 8)


inv=1 si nécessaire, permet d'inverser la logique d'entrée.
====Programmer le ping watchdog====


• Gérer la configuration d'une entrée analogique : http://IPX800_V3/protect/assignio/analog1.htm?
La commande : <span style="color:blue;"><nowiki>http://IPX800_V3/protect/settings/ping.htm?</nowiki></span>


Paramètres :
Paramètres :
pingip=xxx.xxx.xxx.xxx permet de choisir l'adresse IP à "pinguer"
pingtime=x où x est le nombre de secondes pour l'intervalle des tentatives de ping
pingretry=x où x est le nombre d'essais de ping avant commande de la sortie choisie
prelay=x où x est la sortie assignée de 0 à 31


analog=x où x est le numéro de l'entrée concernée, de 0 à 3
==Formulaire XML==


name=Temperature permet de renommer l'entrée
Un formulaire XML vous permet de récupérer l’état des entrées/sorties de l’IPX800


selectinput=4 permet de choisir un type de capteur avec 0=valeur brute, 1=tension, 2=TC4012, 3=SHT-X3 lumière, 4=SHT-X3 température et
Celui-ci est disponible à l’adresse <span style="color:blue;"><nowiki>http://ipx800_v3/globalstatus.xml</nowiki></span>
5=SHT-X3 humidité


hi=x où x est la valeur brute de seuil haut
Si vous avez protégé l'accès web de l'IPX800 V3Son accès est protégé. Vous pouvez inclure l'authentification dans l'URL au besoin.


mhi=0 ou 1 pour off ou on, il s'agit là de l'action sur la ou les sortie(s) assignée(s), paramètres lka
<span style="color:blue;"><nowiki>http://user:motDePasse@ipx800_v3/globalstatus.xml</nowiki></span>


lo=696
===Exemple d'utilisation du XML en PHP===


mlo=0 ou 1 pour off ou on, il s'agit de l'action sur la ou les sortie(s) assignée(s)
Voici un exemple de script PHP.
Nous récupérons le formulaire Globalstatus.xml sur l'IPX800 V3, puis traitons les données.
L'accès au fichier est protégé par les identifiants de l'IPX800 V3.
Si vous avez activé la protection par mot de passe, vous devez
* renseigner le code utilisateur,
* renseigner le mot de passe
* valoriser le paramètre $IPX800_RESTREINT à '''true'''


lkax=1 permet de choisir une sortie assignée (x de 1 à 8)
Si la protection n'est pas activée, valorisez $IPX800_RESTREINT à '''false'''


• Programmer le ping watchdog : http://IPX800_V3/protect/settings/ping.htm?
Pour vérifier l'état de la protection, rendez vous dans le menu "Lan Settings" et vérifiez les valeurs
[[Fichier:V3_securite_user.png]]


Paramètres :


pingip=xxx.xxx.xxx.xxx permet de choisir l'adresse IP à "pinguer"
Pour l'exemple, nous récupérons
* la version du firmware qui est contenue entre les balises <span style="color:#C23A80;"><nowiki><version></nowiki></span> et <span style="color:#C23A80;"><nowiki></version></nowiki></span>
* l'état du Relais 8 compris entre les balises <span style="color:#C23A80;"><nowiki><led7></nowiki></span> et <span style="color:#C23A80;"><nowiki></led7></nowiki></span>


pingtime=x où x est le nombre de secondes pour l'intervalle des tentatives de ping


pingretry=x où x est le nombre d'essais de ping avant commande de la sortie choisie
<source>


prelay=x où x est la sortie assignée de 0 à 31
<?php
 
// Variables à modifier dans ce script
==Formulaire XML==
$IPX800_IP = '192.168.XXX.YYY' ;  // Mettre ici l'adresse IP ou le nom DNS de l'IPX800
$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
$IPX800_PWD = 'MotDePasse' ;  // Mettre ici le mot de passe pour l'accès restreint
$IPX800_RESTREINT = false; //mettre true pour un accès restreint, false si accès non protégé


Un formulaire XML vous permet de récupérer l’état des entrées/sorties de l’IPX800
// 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 );


Celui-ci est disponible à l’adresse http://ipx800_v3/globalstatus.xml
// 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 version firmware
  $IPX800_VERSION = $ipx800_status->version;
  echo "La version du Firmware est {$IPX800_VERSION}<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>


==Inclure des étiquettes dans les notifications==
==Inclure des étiquettes dans les notifications==
Ligne 236 : Ligne 530 :
Il est possible d’inclure des étiquettes de l’IPX800 en utilisant le signe $ pour inclure des valeurs dans les notifications.
Il est possible d’inclure des étiquettes de l’IPX800 en utilisant le signe $ pour inclure des valeurs dans les notifications.


Exemple d’url pour renvoyer l’adresse MAC et les 32 entrées en bitmask vers un serveur distant.
C'est le moyen d'envoyer des valeurs ou des états à une box domotique, un data-logger, un webservice, ...


Syntaxe: 192.168.1.100/mapage.htm?data=$M&$I
===Liste des étiquettes disponibles===
 
Dans ce cas $M sera remplacé par l’adresse Mac et $I par l’état des 32 entrés.
 
Résultat: 192.168.1.100/mapage.php?data=00:04:A3:87:00:1F&00000000000000000000000000000000
 
Liste des étiquettes disponibles:


'''M = Adresse MAC'''
'''M = Adresse MAC'''
  $M (renvoi la mac adresse)
  $M (renvoie la mac adresse)
   
   
'''I = INPUTS'''
'''I = INPUTS'''
  $I renvoi l'état des 32 Entrées
  $I renvoie l'état des 32 Entrées
  $I1 renvoi seulement l'état de l'entrée 1
  $I1 renvoie seulement l'état de l'entrée 1
  $I32 renvoi seulement l'état de l'entrée 32
  $I32 renvoie seulement l'état de l'entrée 32
   
   
'''O= OUTPUTS'''
'''O= OUTPUTS'''
  $O renvoi l'état des 32 sorties
  $O renvoie l'état des 32 sorties
  $O1 renvoi seulement l'état de la sortie 1
  $O1 renvoie seulement l'état de la sortie 1
  $O32 renvoi seulement l'état de la sortie 32
  $O32 renvoie seulement l'état de la sortie 32
   
   
'''A= ANALOG'''
'''A= ANALOG'''
  $A renvoi l'état des 16 entrées analogiques
  $A renvoie l'état des 16 entrées analogiques
  $A1 renvoi l'état de l'entrée analogique 1
  $A1 renvoie l'état de l'entrée analogique 1
  $A16 renvoi l'état de l'entrée analogique 16
  $A16 renvoie l'état de l'entrée analogique 16
   
   
'''C = COMPTEUR'''
'''C = COMPTEUR'''
  $C renvoi l'état des 8 compteurs
  $C renvoie l'état des 8 compteurs
  $C1 renvoi l'état du compteur 1
  $C1 renvoie l'état du compteur 1
  $C8 renvoi l'état du compteur 8
  $C8 renvoie l'état du compteur 8
 
 
===Exemples===
 
'''Exemple d’url''' pour que l'IPX800 V3 renvoie son adresse MAC et les 32 entrées en bitmask vers un serveur distant.
 
Sur ce serveur, imaginons qu'une page nommée ''mappage.htm'' se charge d'enregistrer dans une base de données les données qu'elle reçoit par le paramètre ''data''
Syntaxe: 192.168.1.100/mapage.htm?data=$M&$I
Dans ce cas $M sera remplacé par l’adresse Mac et $I par l’état des 32 entrées.
Résultat: 192.168.1.100/mapage.php?data=00:04:A3:87:00:1F&00000000000000000000000000000000
 
'''Exemple d’url''' pour que l'IPX800 V3 renvoie, vers un serveur distant, la valeur des entrées analogiques 3 et 4 lorsque la température descend sous le seuil bas.
 
La page php du serveur (temperatures.php) récupère les valeurs dans les paramètres 'ext' et 'eau' puis fait le traitement adéquat.
 
[[Fichier:V3_etiquette_exemple.PNG]]
 
Dans le cas d'une valeur analogique, l'IPX800 renvoie la valeur brute. Le serveur à destination devra appliquer la formule de conversion.
 
Vous pouvez voir un exemple d'envoi de donnée analogique vers une [[IPX800_V4|IPX800 V4]] dans [https://gce.ovh/wiki/index.php?title=Piloter_une_IPX800_V3_%C3%A0_partir_de_l%27IPX800_V4#Afficher_une_donn.C3.A9e_analogique_de_la_V3_avec_une_JAUGE ce wiki]
 
==Protocole [[Lexique#JSON|JSON]]==
 
Depuis la version 3.05.38 du firmware;, il est possible de récupérer des données au format Json.
 
===Liste des comandes de l'API [[Lexique#JSON|JSON]]===
 
* '''Commande pour la récupération des entrées:'''
<span style="color:blue;"><nowiki>http://IPX800_V3/api/xdevices.json?cmd=10</nowiki></span>
 
exemple de réponse :
 
<code>
{"product":"IPX800_V3","IN1":0,"IN2":0,"IN3":0,"IN4":0,"IN5":0,"IN6":0,"IN7":0,"IN8":0,"IN9":0,"IN10":0,
"IN11":0,"IN12":0,"IN13":0,"IN14":0,"IN15":0,"IN16":0,"IN17":0,"IN18":0,"IN19":0,"IN20":0,"IN21":0,"IN22":0,
"IN23":0,"IN24":0,"IN25":0,"IN26":0,"IN27":0,"IN28":0,"IN29":0,"IN30":0,"IN31":0,"IN32":1}
</code>
 
 
* '''Commande pour la récupération des Sorties :'''
<span style="color:blue;"><nowiki>http://IPX800_V3/api/xdevices.json?cmd=20</nowiki></span>
 
Exemple de réponse :
 
<code>
{"product":"IPX800_V3","OUT1":0,"OUT2":0,"OUT3":0,"OUT4":0,"OUT5":0,"OUT6":1,"OUT7":0,"OUT8":0,"OUT9":0,
"OUT10":0,"OUT11":0,"OUT12":0,"OUT13":0,"OUT14":0,"OUT15":0,"OUT16":0,"OUT17":0,"OUT18":0,"OUT19":0,
"OUT20":0,"OUT21":0,"OUT22":0,"OUT23":0,"OUT24":0,"OUT25":0,"OUT26":0,"OUT27":0,"OUT28":0,"OUT29":0,
"OUT30":0,"OUT31":0,"OUT32":0}
</code>
 
 
* '''Commande pour la récupération des Analogiques :'''
<span style="color:blue;"><nowiki>http://IPX800_V3/api/xdevices.json?cmd=30</nowiki></span>
 
Exemple de Réponse :
 
<code>
{"product":"IPX800_V3","AN1":0,"AN2":0,"AN3":209,"AN4":198,"AN5":0,"AN6":0,"AN7":0,"AN8":0,"AN9":0,
"AN10":0,"AN11":0,"AN12":0,"AN13":748,"AN14":2513,"AN15":0,"AN16":0}
</code>
 
* '''Commande pour la récupération des Compteurs :'''
<span style="color:blue;"><nowiki>http://IPX800_V3/api/xdevices.json?cmd=40</nowiki></span>
 
 
Exemple de réponse :
 
<code>
{"product":"IPX800_V3","C1":5457650,"C2":0,"C3":0,"C4":0,"C5":0,"C6":0,"C7":0,"C8":0}
</code>

Version actuelle datée du 15 février 2022 à 20:33

API V3.05.70

Présentation

API IPX800 V3

IPX800-V3 Presentation.png
Nom API IPX800 V3
Famille IPX800 V3

L'API de l'IPX800 V3 permet 3 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 en lui envoyant une commande, ou encore de récupérer des valeurs ou des états.

  • Le M2M est un protocole de communication intermachines.

Son usage nécessite l'envoi de commandes sous forme de trames TCP. Cela impose l'ouverture d'une connexion TCP au travers d'un socket.

  • L'API Http est un ensemble de commandes envoyées sous la forme d'URL. C'est le moyen le plus utilisé pour communiquer avec une box domotique.

Les commandes sont également utilisables avec un simple navigateur Internet.

  • Le formulaire XML est un fichier XML hébergé et mis à jour par l'IPX800 V3.
    Il est possible de le télécharger afin de récupérer le statut de toutes les entrées/sorties de l'IPX800 V3 ainsi que les valeurs analogiques ou diverses.

M2M : Protocole de communication (mode serveur)

Liste des commandes M2M

Les ordres sont envoyées par trame TCP/IP sur le port TCP 9870 (par défaut).

Le numéro de port peut être changer via l'interface web de l'IPX800.

Les commandes doivent être envoyées par un client TCP.

Commander une sortie

La commande : Set

Paramètres :

Setxxy ou xx est le numéro de sortie de 01 à 32 et y l’état de la sortie 0 = Off et 1 = On

Exemples :

Pour mettre le relais 1 à 1 le code commande est Set011

Pour commander la sortie en mode impulsionnel il faut ajouter le symbole p en fin de chaine et avoir défini les délais Ta et Tb dans l’interface WEB de l’IPX800.

Pour mettre le relais 2 à 1 en mode impulsionnel le code commande est Set021p

Commander les sorties simultanément

La commande : Bit Le mode bitmask vous permet de définir avec une seule commande l’état que doivent prendre des 32 sorties.

Paramètre :

Le code Bit= doit etre suivi des 32 états des sorties (0 ou 1)

Exemples :

Bit=00000000000000000000000000000000 Met les 32 sorties à 0

Bit=11111111111111111111111111111111 Met les 32 sorties à 1

Obtenir l‘état d’une entrée

La commande : GetIn

Paramètres :

GetInx ou x est ne numéro de l’entrée de 1 à 32

Exemple :

GetIn1 permet d’obtenir l’état de l’entrée 1.

Réponse de l’IPX800 : GetIn1=0 (Valeur 0 ou 1 en fonction de l’état de l‘entrée).

Obtenir l‘état de toutes les entrées

La commande : GetInputs

Paramètres : Aucun

GetInputs permet de recevoir dans une seule trame l’état des 32 entrées digitales.

Exemple :

GetInputs

Réponse de l’IPX800: GetInputs=00000000000000000000000000000000 (Le dernier caractère reçu correspond à l’entrée 32)

Obtenir l‘état d’une entrée analogique

La commande : GetAn

Paramètres :

GetAnx ou x est le numéro de l’entrée analogique de 1 à 4

GetAn1 permet de recevoir l’état de l’entrée analogique 1.

Réponse de l’IPX800 V3 : GetAn1=512

L'IPX800 renvoie une valeur comprise entre 0 et 1023. C'est la valeur brute qu'il faudra convertir grâce à la formule associée au capteur.

Obtenir l‘état d’un compteur d’implusion

La commande : GetCount

Paramètres :

GetCountx ou x est le numéro de compteur (de 1 à 3)

Exemple :

GetCount1 renvoie la valeur du compteur 1.

Réponse de l’IPX : GetCount1=0 (Compteur 32 Bits soit une valeur de 0 à 4294967295)

Obtenir l‘état d’une sortie

La commande : GetOut

Paramètres :

GetOutx ou x est le numéro de la sortie (de 1 à 32).

Exemple :

GetOut1 renvoie la valeur de la sorite 1.

Réponse de l’IPX800 : GetOut1=1 (Valeur 0 ou 1 en fonction de l’état de la sortie).

Obtenir l‘état de toute les sorties

La commande : GetOutputs

Paramètres : Aucun

GetOutputs permet de recevoir dans une seule trame l’état des 32 sorties. Réponse de l’IPX800: GetOutputs=00000000000000000000000000000000 (Le dernier caractère reçu correspond à la sortie 32)

Remise à zéro des compteurs

La commande : ResetCount

Paramètres :

ResetCountx ou x est le numéro du compteur à remettre à zéro. 

Exemple :

ResetCount1 remet le compteur 1 à zéro.

Réponse de l’IPX800 : Success

Reset système de l’IPX800

La commande : Reset

Paramètres : Aucun

Exemple :

Reset

L’envoi de cette commande provoque le redémarrage de l’IPX800 (Reboot).


Utilisation du M2M

Logiciel Client TCP

Vous pouvez télécharger un client TCP gratuit sur ce site.

Installez le logiciel sur votre PC

  • Connexion à l'IPX800 V3
  • Cochez le mode Client, renseignez l'adresse IP de l'IPX800 V3 ainsi que le port.
    Dans l'exemple, 192.168.0.43 : IPX800 V3.
    le port par défaut de l'accès en M2M à l'IPX800 est 9870.
  • Cliquez sur le bouton "Connect".
M2M V3 Connect.png
  • Si l'accès M2M à l'IPX800 V3 est protégé, entrez votre mot de passe (sous la forme key=motDePasse) dans la zone de texte et cliquez sur le bouton "Send".
M2M V3 Auth.png
  • Envoi d'une commande
Dans la zone "Send", tapez une commande puis cliquez sur le bouton "Send".
Dans l'exemple, le relais 5 est passé à l'état OFF.
M2Mclient.PNG


Vous pouvez tester diverses commandes.

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

HTML et PHP

Il est possible de se connecter à l'IPX800 V3 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, dans un dossier M2M. Adaptez l'URL à vos besoins.

<html>
<body>
Pilotage d'un Relais en M2M<br>
Sortie 5 : <a href=http://192.168.0.9/M2M/M2M.php?commande=Set050>off</a>
&nbsp;<a href=http://192.168.0.9/M2M/M2M.php?commande=Set051>on</a>
</body>
</html>

Ecrivons maintenant notre script Php. Créons un fichier M2M.php dans le même dossier web que le fichier précédent.

Si l'accès Web de l'IPX800 V3 est sécurisé, l'accès en M2M est également protégé par ce même mot de passe, depuis le Firmware 3.05.46 Dans le script PHP ci-dessous, renseignez l'adresse IP de l'IPX800 et le mot de passe pour authentification. Renseignez le port si vous avez modifié la valeur par défaut (9870).

<?php
// @fgtoul 2018

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

//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;
?>

Vous pourrez trouver un autre exemple sur le célèbre Blog de @LionelF :

http://www.myipx800.com/index.php?post/2013/02/16/Commander-l-IPX-en-PHP-%3A-utilisation-du-M2M

Attention, au moment où Lionel a écrit son article, l'accès au M2M n'était pas sécurisé.

Autre exemple

Sur le Forum, vous pourrez trouver un exemple d'utilisation en Windev (source proposé par @jjacques68

https://forum.gce-electronics.com/t/commande-m2m-via-socket-et-windev/6458/15

API HTTP

Listes des différentes commandes HTTP

L'API Http est constituée d'une URL. Pour un accès sécurisé à l'IPX800, vous devrez y renseigner le login/mot de passe. Les commandes seront adressées comme cela http://user:motDePasse@IPX800_V3/leds.cgi?


Simuler une entrée

La commande : http://IPX800_V3/leds.cgi?

Paramètres :

led=x où x est le numéro de l'entrée, de 100 à 131.

On pourra donc, de la sorte, commander les entrées 9 à 32 (108 à 131 dans la commande http) même si les extensions X880 ne sont pas présentes physiquement. Pratique pour créer des assignations virtuelles !

Exemple :

http://IPX800_V3/leds.cgi?led=100

Permet de permuter l'état logique de l'entrée 9

Réinitialiser un timer

La commande : http://IPX800_V3/protect/timers/timer1.htm?

Paramètres :

erase=x où x est le numéro du timer à effacer, de 0 à 127.


Exemple :

http://IPX800_V3/protect/timers/timer1.htm?erase=4

Cette commande efface le 5ème Timer.

Programmer un timer

La commande : http://IPX800_V3/protect/timers/timer1.htm?


Paramètres :

timer=x où x c'est le numéro du timer concerné, de 0 à 127

day=x où x est le jour concerné de 0 à 6 (lundi à dimanche), 7 pour tous les jours, 8 pour les jours travaillés (lundi à vendredi) et 9 pour les weekends.

time=HH%3AMM où HH représente les heures et MM les minutes de l'horaire choisi

relay=x où x est le numéro de sortie assignée, de 0 à 31, ou de compteur assigné, de 32 à 34.

action=x où x est le numéro d'action avec 0=off, 1=on, 2=inversion, 3=impulsion, 4=annulation du timer (valeur vide) et 7=pour réinitialiser les compteurs.

Exemple : http://IPX800_V3/protect/timers/timer1.htm?timer=124&time=10%3A00&day=7&relay=0&action=1

Cette commande programme le 125ème Timer

Tous les jours, à 10h00, le relais 1 est passé à l'état ON

Commander une sortie

La commande : http://IPX800_V3/leds.cgi?

Paramètre :

led=x avec x le numéro de la sortie, de 0 à 31.

Cette syntaxe permet la commande directe d'une sortie. Cette syntaxe commandera une impulsion si la sortie concernée a été préréglée avec au moins un Tb non nul dans le site embarqué de l'IPX. Sinon la commande inversera tout simplement l'état de la sortie, comme un télérupteur.

Exemple :

http://IPX800_V3/leds.cgi?led=0

Cette commande agit sur le Relais 1. Si Ta=0 et Tb=0, l'état logique est inversé.

Si Ta<>0 ou Tb<>0, c'est une impulsion.

Commander une sortie sans mode impulsionnel

La commande : http://IPX800_V3/preset.htm?

Paramètre :

setx=1 ou 0 où x le numéro de la sortie de 1 à 32.

Cette syntaxe permet de commander un état de sortie, c'est-à-dire ON pour 1 ou OFF pour 0. Nous avons donc là une sorte d'interrupteur.

Avantage de cette commande : elle peut tout de même s'appliquer à une sortie préréglée en mode impulsionnel. Par conséquent, pour une telle sortie un "led" lancera une impulsion alors qu'un "set" forcera un état ON ou OFF sans impulsion.

Gérer un compteur et sa valeur

La commande : http://IPX800_V3/protect/assignio/counter1.htm?

Paramètres :

num=x : détermine le numéro du compteur à gérer ( avec x de 0 à 7)

cname=NOUVEAUNOM permet de renommer le compteur x

counter=123 permet de forcer une valeur au compteur x

inc=123 permet d'incrémenter une valeur (1 à 255) au compteur x

dec=123 permet de décrémenter une valeur (1 à 255) au compteur x

Commande très pratique pour faire une remise à zéro par exemple.

exemples :

http://IPX800_V3/protect/assignio/counter1.htm?num=0&cname=CONSO+ENERGIE&counter=4140282456
http://IPX800_V3/protect/assignio/counter1.htm?num=0&inc=50

Gérer la configuration d'une sortie

La commande : http://IPX800_V3/protect/settings/output1.htm?

Paramètres :

output=x où x est le numéro de sortie concernée, de 1 à 32 

relayname=LumiereTerrasse avec ce paramètre on peut modifier le nom de la sortie

delayon=x il s'agit là du Ta où x exprime, en dixième de seconde, le temps de retard avant mise à on, valeur max 65535 soit un peu plus de 1h49

delayoff=y le Tb où y, en dixième de seconde, le temps de maintien avant remise à off de l'impulsion, valeur max idem

Ici nous pouvons modifier "à la volée" n'importe quelle configuration de sortie : son nom et même le Ta et le Tb, on peut donc rendre une sortie impulsionnelle ou à l'inverse arrêter le mode impulsionnel en remettant un Ta et un Tb nuls.

Gérer la configuration d'une entrée numérique

La commande : http://IPX800_V3/protect/assignio/assign1.htm?

Paramètres :

input=x où x est le numéro d'entrée concernée, de 0à 31

inputname=Inter1 avec ce paramètre on peut modifier le nom de l'entrée

lx=1 ce petit L permet de choisir une sortie assignée (x de 0 à 31)

mode=x là c'est le mode d'assignation où x = 0 pour on/off, 1 pour switch, 2 pour VR, 3 pour on et 4 pour off.

inv=1 si nécessaire, permet d'inverser la logique d'entrée.

Gérer la configuration d'une entrée analogique

La commande : http://IPX800_V3/protect/assignio/analog1.htm?

Paramètres :

analog=x où x est le numéro de l'entrée concernée, de 0 à 3

name=Temperature permet de renommer l'entrée

selectinput=4 permet de choisir un type de capteur avec 0=valeur brute, 1=tension, 2=TC4012, 3=SHT-X3 lumière, 4=SHT-X3 température et 5=SHT-X3 humidité

hi=x où x est la valeur brute de seuil haut

mhi=0 ou 1 pour off ou on, il s'agit là de l'action sur la ou les sortie(s) assignée(s), paramètres lka

lo=696

mlo=0 ou 1 pour off ou on, il s'agit de l'action sur la ou les sortie(s) assignée(s)

lkax=1 permet de choisir une sortie assignée (x de 1 à 8)

Programmer le ping watchdog

La commande : http://IPX800_V3/protect/settings/ping.htm?

Paramètres :

pingip=xxx.xxx.xxx.xxx permet de choisir l'adresse IP à "pinguer"

pingtime=x où x est le nombre de secondes pour l'intervalle des tentatives de ping

pingretry=x où x est le nombre d'essais de ping avant commande de la sortie choisie

prelay=x où x est la sortie assignée de 0 à 31

Formulaire XML

Un formulaire XML vous permet de récupérer l’état des entrées/sorties de l’IPX800

Celui-ci est disponible à l’adresse http://ipx800_v3/globalstatus.xml

Si vous avez protégé l'accès web de l'IPX800 V3Son accès est protégé. Vous pouvez inclure l'authentification dans l'URL au besoin.

http://user:motDePasse@ipx800_v3/globalstatus.xml

Exemple d'utilisation du XML en PHP

Voici un exemple de script PHP. Nous récupérons le formulaire Globalstatus.xml sur l'IPX800 V3, puis traitons les données. L'accès au fichier est protégé par les identifiants de l'IPX800 V3. Si vous avez activé la protection par mot de passe, vous devez

  • renseigner le code utilisateur,
  • renseigner le mot de passe
  • valoriser le paramètre $IPX800_RESTREINT à true

Si la protection n'est pas activée, valorisez $IPX800_RESTREINT à false

Pour vérifier l'état de la protection, rendez vous dans le menu "Lan Settings" et vérifiez les valeurs
V3 securite user.png


Pour l'exemple, nous récupérons

  • la version du firmware qui est contenue entre les balises <version> et </version>
  • l'état du Relais 8 compris entre les balises <led7> et </led7>


<?php
// Variables à modifier dans ce script
$IPX800_IP = '192.168.XXX.YYY' ;   // Mettre ici l'adresse IP ou le nom DNS de l'IPX800
$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
$IPX800_PWD = 'MotDePasse' ;  // Mettre ici le mot de passe pour l'accès restreint
$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 version firmware
   $IPX800_VERSION = $ipx800_status->version;
   echo "La version du Firmware est {$IPX800_VERSION}<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>";
		}
}
?>

Inclure des étiquettes dans les notifications

Il est possible d’inclure des étiquettes de l’IPX800 en utilisant le signe $ pour inclure des valeurs dans les notifications.

C'est le moyen d'envoyer des valeurs ou des états à une box domotique, un data-logger, un webservice, ...

Liste des étiquettes disponibles

M = Adresse MAC

$M (renvoie la mac adresse)

I = INPUTS

$I renvoie l'état des 32 Entrées
$I1 renvoie seulement l'état de l'entrée 1
$I32 renvoie seulement l'état de l'entrée 32

O= OUTPUTS

$O renvoie l'état des 32 sorties
$O1 renvoie seulement l'état de la sortie 1
$O32 renvoie seulement l'état de la sortie 32

A= ANALOG

$A renvoie l'état des 16 entrées analogiques
$A1 renvoie l'état de l'entrée analogique 1
$A16 renvoie l'état de l'entrée analogique 16

C = COMPTEUR

$C renvoie l'état des 8 compteurs
$C1 renvoie l'état du compteur 1
$C8 renvoie l'état du compteur 8


Exemples

Exemple d’url pour que l'IPX800 V3 renvoie son adresse MAC et les 32 entrées en bitmask vers un serveur distant.

Sur ce serveur, imaginons qu'une page nommée mappage.htm se charge d'enregistrer dans une base de données les données qu'elle reçoit par le paramètre data

Syntaxe: 192.168.1.100/mapage.htm?data=$M&$I

Dans ce cas $M sera remplacé par l’adresse Mac et $I par l’état des 32 entrées.

Résultat: 192.168.1.100/mapage.php?data=00:04:A3:87:00:1F&00000000000000000000000000000000

Exemple d’url pour que l'IPX800 V3 renvoie, vers un serveur distant, la valeur des entrées analogiques 3 et 4 lorsque la température descend sous le seuil bas.

La page php du serveur (temperatures.php) récupère les valeurs dans les paramètres 'ext' et 'eau' puis fait le traitement adéquat.

V3 etiquette exemple.PNG

Dans le cas d'une valeur analogique, l'IPX800 renvoie la valeur brute. Le serveur à destination devra appliquer la formule de conversion.

Vous pouvez voir un exemple d'envoi de donnée analogique vers une IPX800 V4 dans ce wiki

Protocole JSON

Depuis la version 3.05.38 du firmware;, il est possible de récupérer des données au format Json.

Liste des comandes de l'API JSON

  • Commande pour la récupération des entrées:

http://IPX800_V3/api/xdevices.json?cmd=10

exemple de réponse :

{"product":"IPX800_V3","IN1":0,"IN2":0,"IN3":0,"IN4":0,"IN5":0,"IN6":0,"IN7":0,"IN8":0,"IN9":0,"IN10":0, "IN11":0,"IN12":0,"IN13":0,"IN14":0,"IN15":0,"IN16":0,"IN17":0,"IN18":0,"IN19":0,"IN20":0,"IN21":0,"IN22":0, "IN23":0,"IN24":0,"IN25":0,"IN26":0,"IN27":0,"IN28":0,"IN29":0,"IN30":0,"IN31":0,"IN32":1}


  • Commande pour la récupération des Sorties :

http://IPX800_V3/api/xdevices.json?cmd=20

Exemple de réponse :

{"product":"IPX800_V3","OUT1":0,"OUT2":0,"OUT3":0,"OUT4":0,"OUT5":0,"OUT6":1,"OUT7":0,"OUT8":0,"OUT9":0, "OUT10":0,"OUT11":0,"OUT12":0,"OUT13":0,"OUT14":0,"OUT15":0,"OUT16":0,"OUT17":0,"OUT18":0,"OUT19":0, "OUT20":0,"OUT21":0,"OUT22":0,"OUT23":0,"OUT24":0,"OUT25":0,"OUT26":0,"OUT27":0,"OUT28":0,"OUT29":0, "OUT30":0,"OUT31":0,"OUT32":0}


  • Commande pour la récupération des Analogiques :

http://IPX800_V3/api/xdevices.json?cmd=30

Exemple de Réponse :

{"product":"IPX800_V3","AN1":0,"AN2":0,"AN3":209,"AN4":198,"AN5":0,"AN6":0,"AN7":0,"AN8":0,"AN9":0, "AN10":0,"AN11":0,"AN12":0,"AN13":748,"AN14":2513,"AN15":0,"AN16":0}

  • Commande pour la récupération des Compteurs :

http://IPX800_V3/api/xdevices.json?cmd=40


Exemple de réponse :

{"product":"IPX800_V3","C1":5457650,"C2":0,"C3":0,"C4":0,"C5":0,"C6":0,"C7":0,"C8":0}