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 ;)
Pour bc.jsp :
l = login
p = password
mais au vu des sources du serveur et du lapin, ces valeurs ne sont pas utilisées (le format "MAC" est la conséquence d'un appel de méthode dans le bc-boot).
Je me permets de reposer la question du post précédent :
* Est-il prévu de rendre le code open-source ?
* Le projet semblant de qualité, pourquoi ne pas communiquer sur le site de la communauté Nabaztag ? (http://nabaztag.forumactif.fr/)
Quand à rendre le code open source, c'est prévu, quand il sera pleinement fonctionnel.
Communiquer dessus ? Je n'aime pas trop les effets d'annonce. Tant que ça ne fonctionne pas totalement, je ne compte pas faire espérer les gens. Après, si tu veux en parler autour de toi, libre à toi ;)
En lisant les deux articles, une question me vient a l'esprit...
Tu refais un serveur compatible avec le bootcode Violet from scratch pour la forme, le challenge ? Ou y'a un truc que t'aimes pas dans le projet OpenJabNab (dispo sur Github) ?
Non pas que je critique l'initiative, loin de la. OJN etant looiin d'etre parfait, mais on dirait que t'en a meme pas entendu parler ^^
Bon courage en tout cas, y'a BEAUCOUP de travail :)
Plus sérieusement, je connais déjà bien OJN, mais j'ai envie de comprendre comment tout ça marche, et le meilleur moyen d'y arriver, c'est de coder sa propre solution.
Loin de moi l'envie de vouloir concurrencer ton projet ;)
J'suis d'accord avec la méthode, faut juste avoir le temps pour ça (que malheureusement, je n'ai pas ^^)
Encore une fois, bon courage :)