Etant donné que j'ai décidé de remonter un serveur Nabaztag, je partage avec vous mes découvertes sur le fonctionnement d'un Nabaztag au travers d'une série d'articles (que vous pourrez retrouver dans la catégorie Nabaztag)
Aujourd'hui, la première partie, la séquence de boot du Nabaztag.
Le lapin, une fois raccordé au secteur, allume ses 4 diodes en Orange.
Les diodes passent progressivement du orange au vert, en suivant les étapes suivantes :
Je ne reviendrais pas sur les 3 premières étapes, le lapin étant autonome sur cette phase de connexion.
La 4ème phase est, elle, plus intéressante.
A ce moment, le lapin tente une connexion HTTP au serveur défini dans sa configuration. La requête est de la forme :
GET /bc.jsp?v=0.0.0.10&m=00:13:d3:84:53:5a&l=00:00:00:00:00:00&p=00:00:00:00:00:00&h=4 HTTP/1.0
User-Agent: MTL
Pragma: no-cache
Le fichier bc.jsp est utilisé pour renvoyer un bootcode au lapin, qu'il puisse définir son état au démarrage. Les différents paramètres passés sont les suivants :
Le serveur contacté renvoie donc un bootcode d'une centaine de Ko au lapin, qui poursuit ainsi sa séquence de boot.
Un deuxième appel HTTP est alors réalisé, toujours vers le même serveur :
GET /locate.jsp?sn=0013d384535a&h=4&v=21029 HTTP/1.0
User-Agent: MTL
Pragma: no-cache
Icy-MetaData:1
Par cette requête, la lapin précise sa configuration en demandant les adresses des différents serveurs nécessaires à son fonctionnement (le seul paramètre intéressant ici est sn, l'adresse MAC ou numéro de série du lapin, sans les : )
Le serveur répond alors :
ping tagtag.nabaztag.objects.violet.net
broad broad.violet.net
xmpp_domain xmpp.nabaztag.com
Ici, on en apprend un peu plus sur la manière de fonctionner du lapin.
ping est un serveur web, utilisé lorsque le lapin détecte un tag RFID (les Ztamp:s) ou lors de la reconnaissance vocale
broad est également un serveur web, utilisé pour les chorégraphies, les sons, etc
xmpp_domain est un serveur XMPP (Jabber) utilisé pour contrôler le lapin.
C'est sur ce serveur XMPP que viendra ensuite se connecter le lapin, et tentera ainsi de s'identifier.
Mais cela fera l'objet d'un nouvel article ;)
Comme vous le savez peut-être, les Nabaztag, ces charmantes petites créatures sont depuis peu aussi utiles qu'un presse papier de luxe.
La raison ? Tout simplement parce que Mindscape, la société qui a repris le projet de Violet (le créateur du Nabaztag) est en redressement judiciaire, et a décidé d'arrêter l'exploitation des lapins.
Possédant 2 exemplaires de cette bestiole, je trouve dommage de s'arrêter là. C'est pourquoi j'ai décider de coder from scratch un serveur pour faire marcher mes lapins.
Pour le moment, après de nombreuses nuits passées dessus, j'en suis au commencement, mais au moins mon lapin boot et, énorme progrès, j'arrive à présent à lui communiquer des actions !
Ci dessous deux vidéos (d'une qualité pourrie je vous l'accorde) de mon exploit :)
Le serveur est entièrement fait en PHP, et joue le rôle de serveur XMPP pour les lapins (port 5222) et de console d'admin pour les commander (port 5223)
Je vous expliquerais dans un futur proche le fonctionnement de tout ça :)
/me is very proud :D
Pour ceux qui se demandent ce qu'il y a sur les fenêtres :
La première fenêtre en bas est un pseudo serveur HTTP pour servir les 2 accès de boot du lapin.
La deuxième est le serveur XMPP avec lequel communique le lapin.
La troisième est juste un telnet sur le 5223 pour envoyer la commande ST http://192.168.100.2/nabaztag/71.mp3 qui streame le mp3 situé à l'url donnée.
Heureux propriétaire d'un iMac 24" de 2009, j'ai voulu lui donner un petit coup de fouet avec l'arrivée de Mac OS X Lion en changeant le disque dur d'origine (à plateau) de 640 Go par un SSD.
J'avais déjà effectué auparavant cette opération sur mon vénérable MacBook Pro (qui doit encore coller une dérouillée au Dell que j'ai au travail :p) de 2007, avec succès. Même pour une machine de 4 ans, un SSD, ça change la vie.
Pour l'iMac, c'est tout de suite un peu plus compliqué. La machine ne s'ouvre pas si facilement, et il faut démonter l'écran (du moins, la dalle LCD) pour accéder à la carte mère et disque dur.
J'ai suivi l'excellent tuto sur iFixIt, à quelques différences près.
En effet, pas moyen de retirer au départ le cable de la sonde de température LCD. Il faut ouvrir et lever le LCD pour y arriver. Idem pour les cables de l'écran. Pas moyen de les retirer proprement. Je n'ai pas voulu forcer, j'ai donc laissé l'écran branché sur la gauche du Mac.
Mis à part cela, pour peu que vous ayez des tournevis Torx, un peu de place et une ventouse pour l'écran (vous n'avez qu'à voir celle que j'ai utilisée :p), c'est assez simple.
Comptez environ 1 heure démontage et remontage compris (si vous ne faites pas comme moi et que vous oubliez de remettre la sonde thermique du disque dur à sa place :p)
Niveau matériel, j'ai donc installé un Crucial M4 de 128Go acheté à Montgallet. J'ai recyclé mon "ancien" disque dur dans un dock externe en FW800 de chez MacWay.
Une réinstall plus tard, vous vous retrouvez avec une vraie bête de course, qui a le mérite d'être plus silencieuse sans le disque dur qui fait grat' grat' :p