Table des matières
Protocole version HTTP
<note warning> 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
</note>
NabazTag to Server
Les Connexions
Chargement du bytecode
Après allumage, le lapin se connecte pour charger son 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 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;