====== Protocole version HTTP ====== Le Lapin étudié est un **Nabaztag:Tag** : version avec le nombril (micro et lecteur RFID). **Le bytecode utilisé est celui du projet OpenNab**. Ce n'est pas la dernière version éditée par Violet puisqu'on ne veut pas bosser avec XMPP, mais avec HTTP seulement. Il s'agit de celui du projet OpenNab. Ce bytecode a été modifier pour utiliser des URLs adaptées au projet OpenNab qui utilise PHP: * /locate.php * /vl/p4.php * /vl/record.php * /vl/rfid.php ===== NabazTag to Server ===== ==== Les Connexions ==== === Chargement du bytecode === Après allumage, le lapin se connecte pour charger son [[/divers/nabaztag/Bytecode]], au serveur dont l'adresse est renseignée dans la configuration du Lapin. http://adresse.configuration/bc.jsp "GET /vl/bc.jsp?v=0.0.0.10&m=00:21:85:ba:61:95&l=00:00:00:00:00:00&p=00:00:00:00:00:00&h=4 HTTP/1.0" * **m** (xx.xx.xx.xx.xx.xx): Adresse MAC (Ethernet) du Lapin. * **v** (n.n.n.n): version du Firmware ? * **h** (n): version du Hardware ? * **l** (xx.xx.xx.xx.xx.xx): ? * **p** (xx.xx.xx.xx.xx.xx): ? En réponse on envoie au Lapin le [[/divers/nabaztag/Bytecode]] que le Lapin doit exécuter. === Obtention de l'adresse du terrier === La seconde connexion du Lapin lui sert à retrouver l'adresse de son terrier. http://adresse.configuration/locate.jsp "GET /vl/locate.php?sn=002185ba6195&h=4 HTTP/1.0" * **sn** (xxxxxxxxxxxx): Numéro de série du Lapin, en fait c'est l'adresse MAC sans les ':'. * **h** (n): version du Hardware ? En réponse on envoie les adresses du serveur "Ping" et du serveur "Broad". ping 192.168.1.38:80 broad 192.168.1.38:80 === Battements de coeur === http://adresse.du.terrier/p4.jsp "GET /vl/p4.php?sn=002185ba6195&v=65808&st=1&sd=0&tc=0&h=4 HTTP/1.0" 200 54 "GET /vl/p4.php?sn=002185ba6195&v=65808&st=1&sd=0&tc=7fffffff&h=4 HTTP/1.0" 200 35 * **sn** (xxxxxxxxxxxx): Numéro de série du Lapin, en fait c'est l'adresse MAC sans les ':'. * **h** (n): version du Hardware ? * **v** (n): version du Bytecode téléchargé. * **st**: * **sd**: Un événement a surgi sur le Lapin: * sd=0 : Lapin sonne son serveur * sd=1 : clic double du bouton * sd=3 : clic simple du bouton * sd>=8000: mouvement d'oreilles * * **tc**: L'IDentifiant du programme (message) en cours. L'ID est encodé en Hexa (ex: tc=12d13c), alors que dans le message (programme) il était en décimal (ex: ID 1233212;). Peut-être: * The “tc” parameter in the GET request contains the ID of the currently-running program, and the “tn” parameter contains the ID of the previous program. Something funny seems to happen when switching from one to the other (http://nabaztag.magicmonkey.org/dokuwiki/random-things-i-ve-learnt). == Comment reconnaitre le 1er Ping après allumage ? == Est-ce que la requête avec sd=0 et tc=0 peut-être considérée comme le 1er ping après allumage et les ping suivants avec sd=0 et tc=7fffffff ? === Connexion "rfid" === === Connexion "record" === On peut enregistrer du son grâce au micro de Lapin. "POST /vl/record.php?sn=002185ba6195&v=65808&h=4&m=0 HTTP/1.0" === Exemples === "GET /vl/bc.jsp?v=0.0.0.10&m=00:21:85:ba:61:95&l=00:00:00:00:00:00&p=00:00:00:00:00:00&h=4 HTTP/1.0" 200 51145 "GET /vl/locate.php?sn=002185ba6195&h=4 HTTP/1.0" 200 47 "GET /vl/p4.php?sn=002185ba6195&v=65808&st=1&sd=0&tc=0&h=4 HTTP/1.0" 200 54 "GET /vl/p4.php?sn=002185ba6195&v=65808&st=1&sd=0&tc=7fffffff&h=4 HTTP/1.0" 200 35 "GET /vl/api.php?sn=002185ba6195&play=1 HTTP/1.0" 200 47 "POST /vl/api_demo/index.php HTTP/1.1" 200 2882 "GET /vl/p4.php?sn=002185ba6195&v=65808&st=1&sd=0&tc=7fffffff&h=4 HTTP/1.0" 200 97 "GET /broad/simpleplay/0/0/0/0/1.mp3 HTTP/1.0" 404 305 "GET /vl/p4.php?sn=002185ba6195&v=65808&st=1&sd=2&tc=1&h=4 HTTP/1.0" 200 54 "GET /vl/p4.php?sn=002185ba6195&v=65808&st=1&sd=0&tc=7fffffff&h=4 HTTP/1.0" 200 35 ===== Server to NabazTag ===== ==== Les Messages ==== === Interval de communication (type=0x03) === [03,1]78 === Ambience (type=0x04) === Leds, Ears, Service [04,23]7fffffff00000000000000000000000000000000000000 === Download Message (type=0x05) === === Reboot (type=0x09) === === Message (type=0x0a) === ==== Exemples ==== 1er Ping après allumage : /vl/p4.php?sn=002185ba6195&v=65808&st=1&sd=0&tc=0&h=4 packetHead: 7f block[1]: [MessageBlock,0a,15]ID 2147483647; block[2]: [AmbientBlock,04,23]7fffffff0eff0000000000000000000000000000000000 block[3]: [Block,03,1]0a packetTail: ff0a /vl/p4.php?sn=002185ba6195&v=65808&st=1&sd=0&tc=7fffffff&h=4 packetHead: 7f block[1]: [AmbientBlock,04,23]7fffffff0eff0000000000000000000000000000000000 block[2]: [Block,03,1]0a block[3]: [MessageBlock,0a,0] Weather (1) to Storm (5): AbientBlock->SetServiceValue() Override ambient 1 to 5 block[1]: [AmbientBlock,04,23]7fffffff01050000000000000000000000000000000000 block[2]: [Block,03,1]78 block[3]: [MessageBlock,0a,0] Weather (1) to Storm (5) and Market (2) to Neutral (3): AbientBlock->SetServiceValue() Override ambient 1 to 5 AbientBlock->SetServiceValue() Override ambient 2 to 3 block[1]: [AmbientBlock,04,23]7fffffff01050203000000000000000000000000000000 block[2]: [Block,03,1]78 block[3]: [MessageBlock,0a,0] Market (2) to Neutral (3): AbientBlock->SetServiceValue() Override ambient 2 to 3 block[1]: [AmbientBlock,04,23]7fffffff02030000000000000000000000000000000000 block[2]: [Block,03,1]78 block[3]: [MessageBlock,0a,0] Taichi AbientBlock->SetServiceValue() Override ambient 14 to 255 block[1]: [AmbientBlock,04,23]7fffffff0eff0000000000000000000000000000000000 block[2]: [Block,03,1]78 block[3]: [MessageBlock,0a,0] Play Dice: GET /vl/p4.php?sn=002185ba6195&v=65808&st=1&sd=3&tc=7fffffff&h=4 addToLog(4) >>> dice: set state [message] addToLog(3) >>> dice: rolling dice and getting 2 block[1]: [AmbientBlock,04,23]7fffffff0eff0000000000000000000000000000000000 block[2]: [Block,03,1]78 block[3]: [MessageBlock,0a,108]ID 1233212;MU broadcast/vl/plugins/dice/files/fr/get.mp3;MW;MU broadcast/vl/plugins/dice/files/fr/2.mp3;MW; GET /vl/plugins/dice/files/fr/get.mp3 GET /vl/plugins/dice/files/fr/2.mp3 GET /vl/p4.php?sn=002185ba6195&v=65808&st=1&sd=2&tc=12d13c&h=4 addToLog(4) >>> dice: set state [message] addToLog(3) >>> dice: end of message ; waiting for another one block[1]: [AmbientBlock,04,23]7fffffff0eff0000000000000000000000000000000000 block[2]: [Block,03,1]78 block[3]: [MessageBlock,0a,15]ID 2147483647; Play a MP3 URL: simpleplay: ping type=0 simpleplay: ping CurrentID=2147483647 simpleplay: media reference=4792979 simpleplay: now playing http://192.168.1.38:81/vl/plugins/dice/files/en/4.mp3 /vl/p4.php?sn=002185ba6195&v=65808&st=1&sd=0&tc=7fffffff&h=4 block[1]: [AmbientBlock,04,23]7fffffff0eff0000000000000000000000000000000000 block[2]: [Block,03,1]78 block[3]: [MessageBlock,0a,77]ID 4792979;ST http://192.168.1.38:81/vl/plugins/dice/files/en/4.mp3;PL 1;MW; simpleplay: ping type=2 simpleplay: ping CurrentID=4792979 simpleplay: media reference=4792979 simpleplay: http://192.168.1.38:81/vl/plugins/dice/files/en/4.mp3 reached the end ; back to default state /vl/p4.php?sn=002185ba6195&v=65808&st=1&sd=2&tc=492293&h=4 block[1]: [AmbientBlock,04,23]7fffffff0eff0000000000000000000000000000000000 block[2]: [Block,03,1]78 block[3]: [MessageBlock,0a,15]ID 2147483647;