Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
protocole_json [2011/01/17 17:59]
admin
— (current)
Line 1: Line 1:
-====== Protocole pour webservice Calaos ====== 
- 
-La centrale propose une protocole de communication grâce à des requêtes HTTP. Les données échangés sont au format [[http://fr.wikipedia.org/wiki/Json|JSON]]. 
- 
-Le Calaos Network propose également ce type de service, en particulier pour les applications clientes et l'authentification des utilisateurs. 
- 
-===== Détails des requêtes ===== 
- 
-Les requêtes se font en HTTPS soit sur la centrale directement, soit sur le Calaos Network. Les requêtes sur le Calaos Network se font grâce à l'url suivante: 
- 
-  https://www.calaos.fr/calaos_network/api.php 
-   
-Les requêtes sur la centrale se font grâce à l'url suivante: 
- 
-  https://ip_centrale/api.php 
-   
-===== Effectuer des tests ===== 
- 
-Il est possible d'effectuer des requêtes de tests grâce à l'outil [[http://fr.wikipedia.org/wiki/Wget|Wget]] en ligne de commande. 
- 
-==== Exemple ==== 
- 
-Les données à envoyer sont au format JSON dans le fichier //query.json// et le résultat se retrouvera dans //result.json//. 
- 
-  wget --no-check-certificate --post-file query.json --output-document result.json https://addresse_ip/api.php 
- 
-===== API Calaos Network ===== 
- 
-==== get_ip ==== 
- 
-Cette commande permet le login et la récupération de l'adresse IP de la centrale. 
- 
-=== Exemple === 
- 
-Données JSON à envoyer: 
-  { 
-      "cn_user": "mail@example.com", 
-      "cn_pass": "the_password", 
-      "action": "get_ip" 
-  } 
- 
-Réponse: 
-  { 
-      "private_ip": "192.168.50.50", 
-      "cn_user": "mail@example.com", 
-      "at_home": true, 
-      "public_ip": "50.50.50.50" 
-  } 
- 
-La réponse contient 2 adresses IP, l'adresse //privée//, qui correspond à l'adresse IP de la centrale sur le réseau local, et l'adresse //publique//, qui correspond à l'adresse IP public ou il faudra se connecter à la centrale. A l'extérieur, uniquement le port HTTPS 443 est normalement ouvert. 
- 
-Calaos Network nous donne également le paramètre //at_home// qui est un booléen qui définit si on est dans le même réseau que la centrale ou à l'extérieur. 
- 
-===== API de la centrale ===== 
- 
-==== get_home ==== 
- 
-Cette commande permet de récupérer la configuration complète de la maison. 
- 
-=== Exemple === 
- 
-Données JSON à envoyer: 
-  { 
-      "cn_user": "mail@example.com", 
-      "cn_pass": "the_password", 
-      "action": "get_home" 
-  } 
- 
-Réponse: 
-  { 
-    "home": [ 
-        { 
-            "type": "salon", 
-            "hits": "0", 
-            "name": "Salon", 
-            "items": { 
-                "inputs": [ 
-                    { 
-                        "visible": "false", 
-                        "var_type": "bool", 
-                        "id": "input_0", 
-                        "hits": "0", 
-                        "name": "Interrupteur", 
-                        "type": "WIDigitalBP", 
-                        "state": "false" 
-                    }, 
-                    { 
-                        "visible": "", 
-                        "var_type": "string", 
-                        "id": "input_1", 
-                        "hits": "0", 
-                        "name": "Caméra 1", 
-                        "type": "CamInput", 
-                        "state": "" 
-                    }, 
-                    { 
-                        "visible": "", 
-                        "var_type": "string", 
-                        "id": "input_2", 
-                        "hits": "0", 
-                        "name": "lecteur pull-house", 
-                        "type": "AudioInput", 
-                        "state": "" 
-                    } 
-                ], 
-                "outputs": [ 
-                    { 
-                        "id": "output_0", 
-                        "hits": "0", 
-                        "name": "Lumière", 
-                        "gtype": "light", 
-                        "state": "false", 
-                        "type": "WODigital", 
-                        "visible": "true", 
-                        "var_type": "bool" 
-                    }, 
-                    { 
-                        "id": "output_1", 
-                        "hits": "0", 
-                        "name": "Volet", 
-                        "state": "stop -2.14748e 09", 
-                        "type": "WOVoletSmart", 
-                        "visible": "true", 
-                        "var_type": "string" 
-                    }, 
-                    { 
-                        "id": "output_2", 
-                        "hits": "0", 
-                        "name": "Caméra 1", 
-                        "state": "", 
-                        "type": "CamOutput", 
-                        "visible": "", 
-                        "var_type": "string" 
-                    }, 
-                    { 
-                        "id": "output_3", 
-                        "hits": "0", 
-                        "name": "lecteur pull-house", 
-                        "state": "", 
-                        "type": "AudioOutput", 
-                        "visible": "", 
-                        "var_type": "string" 
-                    } 
-                ] 
-            } 
-        } 
-    ], 
-    "cameras": [ 
-        { 
-            "url_lowres": "https://127.0.0.1/camera.php?camera_id=0&width=300&height=225", 
-            "name": "Caméra 1", 
-            "ptz": "false", 
-            "url_highres": "https://127.0.0.1/camera.php?camera_id=0&width=640&height=480" 
-        } 
-    ], 
-    "audio": [ 
-        { 
-            "player_id": 0, 
-            "volume": "0", 
-            "time_elapsed": "0", 
-            "cover_url": "https://127.0.0.1/music.php?player_id=0", 
-            "current_track": { 
-                "title": "?", 
-                "duration": "0", 
-                "artist": "?", 
-                "album": "?", 
-                "coverart": "1" 
-            }, 
-            "status": "error", 
-            "name": "lecteur pull-house", 
-            "playlist": "true", 
-            "database": "true" 
-        } 
-    ] 
-  } 
-   
-La réponse nous donne 3 tableaux principaux qui reflètent la configuration de la maison ["home"], la liste des caméras ["camera"] et enfin la liste des zones de musique ["audio"]. Toutes les informations sont du même type que ce qui est renvoyé par [[protocole_tcp|le protocole TCP]]. 
- 
-==== get_state ==== 
- 
-Cette commande permet de récupérer l’état d'une ou plusieurs entrée/sorties. Les paramètres comprennent les ID des entrées/sorties, tels qu'on le trouve dans [[protocole_tcp|le protocole TCP]]. 
- 
-=== Exemple === 
- 
-Données JSON à envoyer: 
-  { 
-      "cn_user": "mail@example.com", 
-      "cn_pass": "the_password", 
-      "action": "get_state", 
-      "inputs": ["input_0"], 
-      "outputs": ["output_0", "output_1"] 
-  } 
- 
-Réponse: 
-{ 
-    "inputs": { 
-        "input_0": "false" 
-    }, 
-    "outputs": { 
-        "output_0": "false", 
-        "output_1": "stop 0" 
-    } 
-} 
- 
-La réponse contient la liste des entrées/sorties demandée avec les états. 
- 
-