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 18:31]
admin
protocole_json [2014/04/23 13:50]
admin [poll_listen]
Line 29: Line 29:
 ==== get_ip ==== ==== get_ip ====
  
-Cette commande permet le login et la récupération de l'adresse IP de la centrale.+Cette commande permet le login et la récupération de l'adresse IP de la centrale. Elle est a effectuer uniquement sur le Calaos Network en utilisant l'url suivante: 
 + 
 +  https://www.calaos.fr/calaos_network/api.php
  
 === Exemple === === Exemple ===
Line 51: Line 53:
  
 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. 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 ===== ===== API de la centrale =====
  
Line 159: Line 160:
             "volume": "0",             "volume": "0",
             "time_elapsed": "0",             "time_elapsed": "0",
 +            "playlist_size": "5",
 +            "playlist_current_track": "0",
             "cover_url": "https://127.0.0.1/music.php?player_id=0",             "cover_url": "https://127.0.0.1/music.php?player_id=0",
             "current_track": {             "current_track": {
Line 204: Line 207:
     "audio_players": [     "audio_players": [
         {         {
-            "coverart": "1", +            "player_id": "0", 
-            "current_track": "83", +            "playlist_current_track": "0", 
-            "status": "playing", +            "volume": "33", 
-            "duration": "262", +            "playlist_size": "5", 
-            "artist": "Hint", +            "time_elapsed": "1420.68", 
-            "album": "Shapes 09:01", +            "cover_url": "/music.php?player_id=0", 
-            "title": "School Bell", +            "current_track":
-            "volume": "31", +                "title": "Sun", 
-            "time": "86.09"+                "duration": "0"
 +                "artist": "Sun", 
 +                "album": "", 
 +                "coverart": "1" 
 +            }
 +            "status": "playing"
         }         }
     ]     ]
Line 286: Line 294:
       "player_id": "0"       "player_id": "0"
   }   }
 +
 +On peut rajouter le paramètre //from// et //to// qui permettent de spécifier une partie de la playlist a charger. Pratique en cas d'utilisation asynchrone et lorsqu'une playlist est grande.
  
 Réponse: Réponse:
Line 320: Line 330:
 La réponse contient la liste des pistes avec les informations complémentaire si elles sont diponibles (artiste, album, titre, ...). La réponse contient la liste des pistes avec les informations complémentaire si elles sont diponibles (artiste, album, titre, ...).
  
 +==== poll_listen ====
  
 +Cette commande permet de faire du polling pour récupérer les changements d'état des E/S de la centrale. Chaque appel va permettre de récupérer uniquement les changements. Il va falloir auparavant demander un identifiant pour s'enregistrer sur la centrale en tant que participant d'écoute.
 +
 +=== Enregistrement ===
 +
 +Pour s'enregistrer et récupérer un identifiant il faut envoyer la requête:
 +  {
 +      "cn_user": "mail@example.com",
 +      "cn_pass": "the_password",
 +      "action": "poll_listen",
 +      "type": "register"
 +  }
 +
 +On recevra en réponse l'identifiant:
 +  {
 +      "uuid": "abbcaa23-17f7-430f-a30a-221f55077408"
 +  }
 +
 +Cette identifiant unique est valable tant qu'on l'utilise. Si on ne l'utilise pas il devient automatiquement invalide après 5 min.
 +
 +=== Suppression ===
 +
 +A la fin de l'utilisation, on peut supprimer l'identifiant pour le rendre invalide. Cette suppression n'est pas obligatoire, et se fait automatiquement après 5 min d'inactivité avec l'identifiant.
 +
 +Données JSON à envoyer:
 +  {
 +      "cn_user": "mail@example.com",
 +      "cn_pass": "the_password",
 +      "action": "poll_listen",
 +      "type": "unregister",
 +      "uuid": "abbcaa23-17f7-430f-a30a-221f55077408"
 +  }
 +
 +Réponse:
 +  {
 +      "success": "true"
 +  }
 +
 +=== Récupération des évènements ===
 +
 +Une fois l'enregistrement fait et l'identifiant récupéré, on peut interroger la centrale à intervalle régulière (< 5 min) pour avoir les évènements intervenues. Les réponses sont similaires à la commande //listen// du mode TCP.
 +
 +Données JSON à envoyer:
 +  {
 +      "cn_user": "mail@example.com",
 +      "cn_pass": "the_password",
 +      "action": "poll_listen",
 +      "type": "get",
 +      "uuid": "abbcaa23-17f7-430f-a30a-221f55077408"
 +  }
 +
 +Réponse:
 +  {
 +      "success": "true",
 +      "events": [
 +          "input input_0 state%3Atrue",
 +          "output output_0 state%3Atrue",
 +          "output output_1 state%3Atrue"
 +      ]
 +  }
 +
 +==== config ====
 +
 +Cette commande permet de lire/ecrire la config au travers du protocole json.
 +
 +=== get ===
 +
 +Pour recuperer la config il faut faire:
 +  {
 +      "cn_user": "mail@example.com",
 +      "cn_pass": "the_password",
 +      "action": "config",
 +      "type": "get"
 +  }
 +
 +On recevra en réponse les fichier xml dans le json
 +  {
 +      "success": "true",
 +      "config_files": {
 +          "io.xml": "<xml ...... >",
 +          "rules.xml": "<xml ...... >"
 +      }
 +  }
 +
 +=== put ===
 +
 +Pour recuperer la config il faut faire:
 +  {
 +      "cn_user": "mail@example.com",
 +      "cn_pass": "the_password",
 +      "action": "config",
 +      "type": "put",
 +      "config_files": {
 +          "io.xml": "<xml ...... >",
 +          "rules.xml": "<xml ...... >"
 +      }
 +  }
 +
 +Réponse:
 +  {
 +      "success": "true"
 +  }