# Nabaztag vers Serveur Le Nabaztag communique avec son serveur uniquement en HTTP. Cela diminue les pré-requis pour monter un serveur V1. Seulement, le Nabaztag ne travaille pas par noms d'hôtes (via la directive HTTP "Host: URL" ) mais par IP, il est donc assez improbable de pouvoir l'utiliser sur des hébergeurs gratuits... Type d'URL appelée par le Nabaztag: `/vl/FR/p3.jsp?sn=MAC_ADDRESS&ex=000000000000&v=20&st=01&tc=00000001` Les différents arguments peuvent changer suivant les actions mais en fixes restent: * **sn** Cela correspond à l'adresse MAC du Nabaztag * **v** Version du firmware installé sur sur le Nabaztag (Je pense qu'on ne peut pas changer ce firmware là sans reprogrammer le PIC présent sur le PCB via le connecteur ICSP) * **ex** Toujours null pour mon lapin, utilité inconnue On peut trouver d'autres arguments suivant les actions effectuées: * **ts** * **tn** A étudier et compléter Les arguments utiles sont décrits plus en détail à la suite ## Argument st Il peut prendre deux valeurs * **00** Première requête * **01** Par la suite Cet argument permet de déterminer si le lapin vient juste de (re)booter ou pas. A part ça, je ne lui vois pas d'autre utilité ## Argument sd C'est l'argument que je trouve le plus utile, il permet de déterminer quels événements ont été déclenchés ou terminés sur le lapin * **0001** Double clic * **0002** Événement terminé (type lecture de fichier Audio, permet de revenir sur le bytecode général) * **0003** Simple clic * **0004** Clic Long * **8XXX ou 9XXX** Mouvement manuel des oreilles # Serveur vers Nabaztag Après avoir reçu une requête de la part du Nabaztag le serveur doit répondre avec une trame si il y a une action à effectuer, sinon, une page vide suffit à contenter le Nabaztag. Ces trames sont ici détaillées en Hexadécimal (type ''hexdump''), mais il faut les convertir en octets avant de l'afficher pour le Nabaztag, (envoyer la trame en texte ne fonctionnera pas) ## Trame type 03 Cette trame permet de régler le délai d'attente entre deux requêtes (aussi désignées par PING) du Nabaztag vers le Serveur. Une trame 03 complète est `7F0300000101FF` En détail: `7F` Header `03` Type `000001` Longueur du message `01` Valeur `FF` Fin du message La valeur est donnée en dizaines de secondes ( 01 = 10s, 02 = 20s ...). La valeur par défaut est 03. ** A confirmer ** ## Trame type 04 Cette trame permet d'activer les différents services du bytecode en fonctionnement sur le Nabaztag. C'est la trame la plus courante pour les opérations simples. Voir la page dédiée [[nab:v1:services|Les services lumineux du V1]] ## Trame type 05 Cette trame permet d'envoyer un nouveau bytecode au Nabaztag, remplacant le bytecode en fonctionnement, sans reboot du Nabaztag. Ces trames sont de la forme `7F05000040616D626572000000010100000029000101FFA80105030404A7458004A0001B7E04000301FFA80105030404A7458004A0002E7E049C001100000000506D696E64` En détail `7F` Header `05` Type `000040` Longueur de la trame type 05 `616D626572` _amber_ `00000001` Trame ID `01` Flag de Transition (01: transition immédiate) `00000029` Taille du programme/bytecode `00......11` Programme assemblé `00000000` Nombre de fichiers audio inclus `......` Ensuite vont les données des fichiers audio, il n'y en a pas sur cet exemple `50` Checksum de la Trame 05 `6D696E64` __mind__ `FF` Fin de la Trame Il est possible avant le `FF` final d'ajouter des trames d'autres types (sans les `7F` initiaux et `FF` finaux) ## Trame type 06 A confirmer et compléter Cette trame permet de répéter le dernier message envoyé au Nabaztag. Sur un firmware version 20, elle ne semble pas nécessaire pour les Trames, peut-être pour les fichiers Audio. Une trame 06 complète est: `7F060000047FFFFFFFFF` En détail: `7F` Header `06` Type `000004` Longueur du message `7FFFFFFF` Valeur `FF` Fin du message