Le Tux Droid

Aller au contenu | Aller au menu | Aller à la recherche

vendredi, novembre 21 2008

Le serveur HTTP

Dans le billet précédant je vous avais déjà parlé du serveur HTTP, c'est la pièce maîtresse du Tuxware, c'est un serveur d'architecture de type REST

Pour l'expérimenter entrez comme URL http://127.0.0.1:270/

http : c'est le protocole

127.0.0.1 : adresse IP de la machine sur laquelle est installé le TuxDroid, 127.0.0.1 c'est pour une utilisation sur la machine locale, mais vous pouvez le piloter à distance en tapant l'adresse IP de la machine.

270 : c'est le numéro du port auquel répond le serveur.

Le navigateur nous renvoie une page d'aide.

Qu'est ce qui c'est passé ?


L'URL à envoyé une requête "NULL" au serveur et le serveur nous à répondu avec un fichier XML sur ses possibilités, c'est le TuxDroid qui nous répond, le serveur est juste la pour nous aider à envoyer des requêtes.

Regardons de plus près le fichier XML retourné :

  • Des ressources.
  • Pour chaque ressource, ses fonctions utilisables.
  • Pour chaque fonction, le niveau requis et ses paramètres si nécessaire.

Par exemple:

Ressource Mouth (Bouche), fonction Open (Ouvre), niveau requis FREE_CLIENT, paramètre aucun

Les ressources disponibles :


  • Access - Accéder à une ressource
  • Attitune - Gestion de la lecture des fichiers attitunes, fonction charger, jouer ...
  • Sound flash - Gestion de la banque de sons internes
  • Spinning - Gestion de la rotation du TuxDroid, fonction tourner vers la droite, tourner vers la gauche ...
  • Status - Gestion des statuts
  • TTS - Gestion du synthétiseur vocal, fonction fixe le locuteur, le pitch, lecture d'un texte ...
  • Tuxup - Gestion du firmware
  • Wav - Gestion de la lecture des fichiers de type wav
  • js - JavaScript ?
  • Client - Gestion des clients du serveur
  • xsl - service xsl
  • Documentation  - log, services
  • Eyes - Gestion des yeux, fonction ouverture, fermeture ...
  • Flippers - Gestion des ailes, fonction lever, baisser ...
  • IR - Gestion de l'émetteur infra-rouge
  • IdleBehavior - Gestion du service IdleBehavior (comportement du TuxDroid quand il est dans état d'attente)
  • Leds - Gestion des leds des yeux, fonction clignotement, allumer, éteindre ...
  • Macro - ?
  • Mouth - Gestion de la bouche, fonction ouvre, ferme ...

En programmation nous utiliserons le même principe "Ressource.Fonction(paramètre)"


Comment écrire une requête ?



URL type :

http://adresse IP de la machine:port/niveau du client/ressource/fonction?paramètre

les paramètres doivent s'écrire sous forme "chaîne de requête" 

      exemple "text=Bonjour le monde" s'écrira "text=Bonjour%20le%20monde"


le niveau du client :
  • CLIENT_LEVEL_ANONYME = -1
  • CLIENT_LEVEL_FREE = 0
  • CLIENT_LEVEL_RESTRICTED = 1
  • CLIENT_LEVEL_ROOT = 2


exemple pour faire dire à Tux, installé sur ma machine locale, "Bonjour le monde"  on utilisera :

Adresse IP et port du serveur : 127.0.0.1:270
N° du client : 0
Ressource : TTS
Fonction : speak
paramètre : text=Bonjour%20le%20monde

URL = http://127.0.0.1:270/0/tts/speak?text=Bonjour%20le%20monde

Bonjour le monde, avec une voix anglaise, ce n'est pas génial

regardons la liste des locuteurs

http://127.0.0.1:270/0/tts/voices?

résultat : Bruno; Julie, Ryan, Heather (si vous avez comme moi les langues française et anglaise de chargées)

comme on veut parler français prenons un locuteur français (Bruno ou Julie)

Je vais prendre julie http://127.0.0.1:270/0/tts/locutor?name=Julie

maintenant si je relance http://127.0.0.1:270/0/tts/speak?text=Bonjour%20le%20monde

c'est Julie qui parle :-)


Type des paramètres :

<int8> entier sur 8 bits 0 à 256
<float> nombre flottant (avec virgule qui sera un point ici)
<string> chaîne de caractère
<True|False> Vrai | Faux

Attention au type Float un nombre entier s'écrit toujours avec une virgule exemple 2 s'écrit 2.0


Javasript


Pour voir l'utilisation du langage Javascript avec le serveur HTTP

http://127.0.0.1:270/mouth/


Liens :

Page du wiki

lundi, novembre 10 2008

Le Tuxware

Du coté PC le TuxDroid est vu comme un périphérique USB, mais interagir avec le TUX directement à partir des pilotes USB ne serait pas très pratique.

Le Tuxware est une suite d'interfaces de haut niveau qui interviennent sur les pilotes USB à travers des requêtes HTTP.

Les librairies des pilotes

La librairie de contrôle envoie les ordres au Tux et reçoit ses états.

La librairie du son en sortie (OSL) transforme la synthèse vocale en fichier audio type wave, mixe les fichiers, le flux audio résultant est envoyé à l'USB audio.

La librairie du son en entrée (ISL) acquière ou relâche le flux audio d'entrée, s'occupe aussi de la reconnaissance vocale afin d'envoyer les paramètres aux applications. 

Le gestionnaire de ressources.

Tux Droid est un ensemble de ressources. Allouer ces ressources aux différentes applications est le rôle du gestionnaire de ressource.

Le serveur HTTP. 

C'est un serveur dont l'architecture est de type REST, il permet de contrôler le Tux Droid à travers une URL contenant les données à transmettre à l'application.

Comme tout service sous tcp/ip on y accède par l'adresse ip du serveur qui l'héberge et son numéro du port.

par défaut, adresse :127.0.0.1 (machine locale), port : 270.

Si votre Tux est installé en local expérimenté ça : http://127.0.0.1:270

maintenant vous avez une idée de tout ce que vous pouvez envoyer ou recevoir d'informations à votre Tux Droid.

Je parlerai plus longuement du serveur HTTP dans un autre billet.

Les APIs.


C'est un ensemble de fonctions pouvant envoyer des requêtes sous formes d'URL au serveur HTTP.


Pour le moment il existe une API pour les langages Java, Javascript et Python, mais si vous savez écrire des fonctions, dans le langage que vous voulez utiliser, répondant au critère vu ci dessus, vous pouvez créer l'API pour votre langage, n'oubliez pas de la mettre à disposition des autres utilisateurs, c'est ça l'Open Source  ;-)

 


Pour plus d'information voir la page du Wiki sur le Tuxware

jeudi, novembre 6 2008

Le hardware du Tux Droid

Le mieux c'est de lire les pages sur le wiki.

Pour Fux le dongle USB : http://wiki.tuxisalive.com/index.php/Dongle_Electronics

Pour le Tux Droid : http://wiki.tuxisalive.com/index.php/Inside_Tux_Droid

Avec le schéma sur le wiki on comprend l'essentiel



Le software du Tux Droid

Comme pour le billet sur le hardware le mieux est déja d'aller lire les pages sur le Wiki.

Les Couches du Software

Tux Droid comme Compagnon-Intelligent
Couche Applications
Tux Droid comme Interface de Programmation
Couche APIs
Tux Droid comme Serveur HTTP
Couche Tuxware
Tux Droid comme Périphérique USB Logique
Couche OS drivers
Tux Droid comme Périphérique USB Physique
Couche Firmware du Dongle
Tux Droid comme Robot
Couche Firmware du Tux
Tux Droid comme Electroniques et Mécaniques

Avec les 2 schémas suivant (que j'ai copié sur le Wiki).

On comprends que la couche principale est celle du Tuxware.

On voit aussi que pour interagir avec notre Tux on peut utiliser :

Des URLs (serveur HTTP)

Des APIs, pour les langages Python, Java, Javascript.

On peut utiliser d'autres langages, grâce au serveur HTTP, il suffit juste d'écrire l'API.

Je n'utilise ni Java ni Javascripts car je ne connais pas ces langages, mais bien si des personnes veulent en parler, ils sont les bienvenus.

  

Tux Droid sur 01net

Un petite nouvelle à propos du Tux Droid sur 01net

http://www.01net.com/fiche-produit/avis-redac-4942/divers-kysoh-tux-droid/

Ils ne parlent pas assez, de ce qui est le plus important pour moi,

ses possibilités de programmation.

"la communauté de développeurs", en lisant ça on pourrait penser que pour

créer des programmes pour le Tux, il faut être développeur, non c'est très simple.

Je ne suis pas développeur et j'ai pourtant créé très facilement

des petits scripts ou même des "gadgets" pour mon Tux.

Je vous montrerai ça très rapidement.

- page 2 de 4 -