Table of Contents Protocole pour webservice Calaos Détails des requêtes Effectuer des tests Exemple API Calaos Network get_ip API de la centrale get_home get_state This is an old revision of the document! 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 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 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 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 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.