python et nabaztag

_images/20130317_1.png

jusqu’en 2011

la société Violet existait et il était donc possible de connecter son lapin aux serveurs officiel

info

sur le http://my.nabaztag.com utiliser nabaoustin / 04081978 sur http://www.violet.net/mon-compte-violet-net.html utiliser fraoustin@gmail.com / 04081978

Nabname : nabaoustin
E-mail : fraoustin@gmail.com
Numéro de série : 0030540097C8
Mon numéro de token : 1230380392 Numéro de série de Nabaztag : 0030540097C8
api http://help.nabaztag.com/fiche.php?fiche=29&langue=2

exemple d’utilisation de l’api

import urllib
import urllib2

the_url = 'http://api.nabaztag.com/vl/FR/api.jsp'
values = {'sn' : '0030540097C8',
          'token' : '1230380392',
          'posleft' : '0',
          'posright' : '0',
          'tts' : 'test numero' }

data = urllib.urlencode(values)
req = urllib2.Request(the_url, data)
handle = urllib2.urlopen(req)
the_page = handle.read()
print the_page

ou bien comme url

http://api.nabaztag.com/vl/FR/api.jsp?sn=0030540097C8&token=1230380392&posleft=0&posright=0&ttx=test+pour+mon+nabaztag

Après 2011

Violet ferme et le lapin ne communique plus ... mais il est possible de faire quelques choses open-source

Ils existent pour les versions v2 et pour le v1 rien de concluant

les sources:

Modifier le serveur du lapin

La première chose est de reparamétrer son lapin pour qu’il utilise un nouveau serveur

Note

il faut noter qu’a priori le serveur p.nabaztag.com est un serveur open-source utilisable

  • Appuyer sur sa tête pendant sa mise sous tension. Il flashe tout bleu (mode ad-hoc).
  • Se connecter en wifi au réseau ad hoc “nabaztag” puis lancer un navigateur sur l’ip locale http://192.168.0.1 pour obtenir la page de config générale.
  • Vérifier ses paramètres Wifi (clé WEP)
  • Pour remettre d’origine le serveur cible (non modifable directement sur la page web de config), et seulement dans le cas où ce dernier ne serait pas p.nabaztag.com, il suffit de saisir l’url suivante : http://192.168.0.1/b.htm?a=p.nabaztag.com&b=80 (a=serveur_cible, b=port_http)
  • Cliquer sur ‘Continuer’ et vérifier sur la nouvelle page de config qui s’affiche que le nouveau serveur p.nabaztag.com est bien indiqué à la ligne ‘Plateforme Violet’.
  • Cliquer sur ‘Update and Start’
_images/20130317_2.png

Le démarrage du lapin ce réalise en plusieurs étape

  • lancement du système: la led 1 est verte
  • connexion au wifi: la led 2 est verte (la connexion wifi ce connecte en mode ad hoc sur http://192.168.0.1).

Si le lapin n’arrive pas à échanger avec le serveur, il ré-essaye toutes les 10 secondes

  • premier échange avec le serveur: la led3 est verte
  • tout est ok ... les 4 leds clignotent en vert

A priori le lapin échange avec le serveur à temps régulier.

L’architecture est donc la suivante

_images/20130317_3.png

Le lapin émet des demandes de type “get” et il a pour réponse du serveur des paquets de type “pseudo assembleur” (bytecode)

L’objectif dans un permier temps est d’analyser l’ensemble des échange pour identifier ce que notre serveur doit faire.

On va donc mettre en place une pseudo-passerelle pour identifier chaque flux

_images/20130317_4.png

Quand on analyse ce qui ce passe nous remarquons:

  • la première demande est de forme vl/FR/p3.jsp?sn=0030540097C8&ex=000000000000&v=20&st=00&tc=00000000
  • la deuxième demande de la forme /vl/FR/p3.jsp?sn=0030540097C8&ex=000000000000&v=20&st=01&tc=00000001 (10s après la première)
  • les demandes suivantes (“basique”) de la forme vl/FR/p3.jsp?sn=0030540097C8&ex=000000000000&v=20&st=01&tc=00000001&tn=00000001

sn correspond à l’adresse mac du lapin

Le temps entre deux demandes du lapin ne dépend que du message reçu

En cas de non réponse pour la première et deuxième demande le lapin reessaye puis s’arrête

En cas de non réponse pour les demandes basiques le lapin réessaye toutes les 10 secondes

Les réponses fournis au lapin sont de type bytecode.

On peut utiliser n’importe quel bytecode déjà fournit pour n’importe quelles réponses.

maintenant il faudrait savoir comment créer un bytecode et comment connaitre les “outils de language” pour faire faire ce qu’on veut à notre lapin