python et nabaztag ****************** .. figure:: data/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 .. code-block:: bash 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 ============================== .. code-block:: python 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 .. code-block:: bash 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: * http://wizz-cc.blogspot.fr/2012/05/nabaztag-v1-kit-service-web.html * http://code.google.com/p/nabaztag-source-code/source/browse/#svn%2Ftrunk%2FSources * http://www.eskuel.net/categorie/39-nabaztag 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' .. figure:: data/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 .. figure:: data/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 .. figure:: data/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