Forum des Objets Communicants et Solutions pour les Libérer...
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Forum des Objets Communicants et Solutions pour les Libérer...


 
AccueilAccueil  GalerieGalerie  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
SSD interne Crucial BX500 2,5″ SATA – 500 Go à 29,99€
29.99 €
Voir le deal

 

 libastag : Une interface Ruby à l'API Violet

Aller en bas 
+2
aerosmiss
kaworu
6 participants
AuteurMessage
kaworu
Lapin nain
Lapin nain



Localisation : genève
Nbr de messages : 8
Carottes : 6214

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeMar 20 Nov 2007 - 1:15

Bonsoir !
je viens d'adopter un petit Nabaztag/tag, et voilà que j'apprend qu'on peut s'amuser avec grâce à l'API Violet ! nabzlol

J'ai regardé les Wrapper/Libs (vite fais hein) qui existent, et malheureusement aucune ne me plaisais (ok, je suis un peu difficile), donc j'ai commencé le développement de ma propre bibliothèque.
Pourquoi Ruby ?
pour les objectifs, et surtout parce que Ruby c'est vraiment fun (mais bon, ça aurait pu être Python).


Objectifs :

1) licence libre
je sais pas encore laquelle, j'hésite en Ruby, GPL et (new)BSD. J'ai tendence à penser qu'un lib doit être sous une licence moins restrictive que la GPL.

2) Portable
(quasi) toutes les libs que j'ai trouvé étaient en C#. Comme je ne connais pas C# et que je tourne sous GNU/Linux (et que C# n'est pas vraiment portable), il me fallait autre chose.
J'ai (rapidement) étudié les libs Nabazplayer
et NabNET
(un grand merci aux auteurs de ces libs !) qui sont bien codées (ne connaissant rien au C#, j'ai pu comprendre facilement leur fonctionnement.
Ruby tourne facilement sous tous les unices (*BSD, GNU/Linux, OSX etc.) et Windows, et j'essaye d'utiliser uniquement les bibliothèques standard de Ruby.

3) Bien documentée.
Tout le code est commenté, de façon à fournir une documentation complète et exhaustive (format Rdoc). Cela manquait un peu dans les libs C# que j'ai pu lire.

4) Peu de code, structure simple.
rester le plus simple et concis que possible, de manière à faire évoluer facilement la bibliothèque.

Pour parler un peu de la structure (vu que c'est encore que des idées) voiçi une brève description :
Deux niveau d'abstrations :
- le module VioletAPI donne les classes de base pour envoyer des requêtes / recevoir les réponses au server Violet.
- un module de plus haut niveau, avec des classes pour représenter les "éléments" du Nabazatag (oreilles, leds...) et le Nabaztag lui-même.

Pour le module VioletAPI, il est composé de cette manière :
- VioletAPI::Request => les requêtes que l'on peut envoyer,
- VioletAPI::Response => les réponses du serveur,
- VioletAPI::Help => des méthodes/classes d'aide (description de l'API etc).

Pour Le module de plus haut niveau j'ai commencé un brouillon, sur la base des libs C#.

Voilà, j'espère que ça interesse du monde, si vous touchez un peu à Ruby ou juste interessé faites moi signe yellownabzsmile
vous pouvez télécharger la lib ici : (lien mort)http://www.kaworu.ch/public/violetapi.rb
(elle est encore vraiment à l'état de brouillon, ça commencera à donner quelque chose d'ici la fin de la semaine).

Bonne soirée.


Dernière édition par le Ven 23 Nov 2007 - 14:24, édité 2 fois
Revenir en haut Aller en bas
aerosmiss
Yellow Subadmin
aerosmiss


Age : 56
Localisation : Paris
Nabaztag : Zvi (V1) et Zeev (V2)
Nbr de messages : 10056
Carottes : 7024

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeMar 20 Nov 2007 - 6:27

Tout d'abord, bienvenue sur le forum nabzhello1

Je ne suis pas informaticienne pour un sou franc suisse, mais il y en a qui vont sans doute se lécher les babines en lisant ton post.

Bonne continuation et tiens-nous au courant de tes dev'

Bonne journée nabzlol
Revenir en haut Aller en bas
http://aerosmiss.free.fr
Phabbrrysse
Nabazteur Voyageur
Nabazteur Voyageur
Phabbrrysse


Age : 38
Localisation : Sassenage
Nabaztag : PhormiBBrrysse et Pharramyneu (V2)
Nbr de messages : 14389
Carottes : 13328

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeMar 20 Nov 2007 - 8:23

En tout cas bienvenue et bon developpement
je ne vais pas t'aider car mes connaissance las dedans ne sont pas ... tres etendu (qui a dit sont totalement abentese yellownabzwink)

_____________________________




Connexion du lapin difficile : ICI -- PAS D'AIDE PAR MP NI PAR MAIL
Revenir en haut Aller en bas
http://phabbrrysse.fr/
jbx028
Gold Nabz
Gold Nabz
jbx028


Localisation : Dans le sept huit
Nabaztag : Rosie (v1), NoFutur Tag/tag (v2), et Nabaztag mon Karotz.....
Nbr de messages : 677
Carottes : 7132

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeMar 20 Nov 2007 - 8:37

Un wrapper ruby existe déja : http://rubyforge.org/projects/nabaztag/

Tu peux probablement t'en inspirer.

Bon courage pour ton projet.
Revenir en haut Aller en bas
http://twitter.com/jbx028
The fast
Nabz Junior
Nabz Junior



Age : 29
Localisation : BELGIQUE
Nabaztag : (V2) Znak
Nbr de messages : 84
Carottes : 6290

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeMar 20 Nov 2007 - 19:37

Mouais.. mais pour Linux....
Revenir en haut Aller en bas
jbx028
Gold Nabz
Gold Nabz
jbx028


Localisation : Dans le sept huit
Nabaztag : Rosie (v1), NoFutur Tag/tag (v2), et Nabaztag mon Karotz.....
Nbr de messages : 677
Carottes : 7132

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeMar 20 Nov 2007 - 21:16

Citation :
Mouais.. mais pour Linux....

Non, ruby fonctionne sur linux, windows, mac, et unix, etc...
Revenir en haut Aller en bas
http://twitter.com/jbx028
kaworu
Lapin nain
Lapin nain



Localisation : genève
Nbr de messages : 8
Carottes : 6214

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeMar 20 Nov 2007 - 21:36

Merci pour votre accueil !
j'ai regardé vite fais la lib ruby (merci pour le lien) et elle va m'aider dans mon developement, merci !
Revenir en haut Aller en bas
castagnette
Lapin nain
Lapin nain
castagnette


Localisation : Paris
Nabaztag : Castagnette et Crhonch
Nbr de messages : 9
Carottes : 6277

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeMer 21 Nov 2007 - 0:26

Merci, merci, merci !!!

J'utilisais l'autre bibliothèque Ruby, mais je vais jeter un coup d'oeil à celle-ci. Au moins un effort de documentation a été fait.
Revenir en haut Aller en bas
http://forum.manucure.info
The fast
Nabz Junior
Nabz Junior



Age : 29
Localisation : BELGIQUE
Nabaztag : (V2) Znak
Nbr de messages : 84
Carottes : 6290

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeMer 21 Nov 2007 - 19:15

Comment fait-on pour utiliser une interface ruby (en tout cas sous windows)
Revenir en haut Aller en bas
jbx028
Gold Nabz
Gold Nabz
jbx028


Localisation : Dans le sept huit
Nabaztag : Rosie (v1), NoFutur Tag/tag (v2), et Nabaztag mon Karotz.....
Nbr de messages : 677
Carottes : 7132

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeMer 21 Nov 2007 - 20:52

http://rubyforge.org/frs/download.php/27227/ruby186-26_rc2.exe

..entre autre. Il existe d'autres solutions.
Cela installe seulement ruby et pas le fabuleux framework Rail.
Revenir en haut Aller en bas
http://twitter.com/jbx028
kaworu
Lapin nain
Lapin nain



Localisation : genève
Nbr de messages : 8
Carottes : 6214

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeMer 21 Nov 2007 - 21:36

plop plop. Voilà, la lib évolue tranquillement, j'ai splitté VioletAPI en plusieurs fichiers pour que ce soit plus facile à comprendre.

Pour l'instant je bosse uniquement sur la gestion des réponses, c'est presque complet. bientôt on pourrra faire (par exemple) :
Code:

>> require "response.rb"
>> r = Response.parse (<le_code_XML_de_la_reponse_message_send>)
=> une instance de MessageSend
>> r.good?
=> true
>> r.message
=> "MESSAGESEND"
etc

lien:
(lien mort) http://www.kaworu.ch/public/libastag-r12.tar.gz


Dernière édition par le Ven 23 Nov 2007 - 14:31, édité 1 fois
Revenir en haut Aller en bas
kaworu
Lapin nain
Lapin nain



Localisation : genève
Nbr de messages : 8
Carottes : 6214

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeJeu 22 Nov 2007 - 18:39

Salut !
Le module de gestion des réponses du serveur est fini !
Faut encore paufiner la doc et tester un peu, mais la structure complète est là (et gère toutes les réponses spécifiées dans l'API violet).
voilà le lien du téléchargement de l'archive (qui contient également la documentation Rdoc générée) :
(lien mort)http://www.kaworu.ch/public/libastag-r20.tar.gz.

n'hésitez pas à faire des remarque sur la doc, le code, ou les concepts etc !

Enjoy !

(je m'attaque aux Requêtes maintenant) yellownabzsmile


Dernière édition par le Ven 23 Nov 2007 - 14:25, édité 1 fois
Revenir en haut Aller en bas
kaworu
Lapin nain
Lapin nain



Localisation : genève
Nbr de messages : 8
Carottes : 6214

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeVen 23 Nov 2007 - 14:23

Salut !
voilà, le module Response à été paufiné et rendu plus accessible :
LIENS MORTS
la doc online => http://www.kaworu.ch/public/libastag/lib/violet/doc/
les fichiers => http://www.kaworu.ch/public/libastag/lib/violet/response.rb
http://www.kaworu.ch/public/libastag/lib/violet/helpers.rb

Enjoy !


Dernière édition par le Dim 9 Déc 2007 - 13:32, édité 1 fois
Revenir en haut Aller en bas
jbx028
Gold Nabz
Gold Nabz
jbx028


Localisation : Dans le sept huit
Nabaztag : Rosie (v1), NoFutur Tag/tag (v2), et Nabaztag mon Karotz.....
Nbr de messages : 677
Carottes : 7132

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeVen 23 Nov 2007 - 14:36

Je compte m'investir un peu plus dans ruby. Je pourrais commencer par utiliser ton wrapper dans une petite application rail (je dois au préalable, terminer mon service web .NET de reconnaissance vocal/AIML)

Quoi qu'il en soit, bravo pour cette réalisation.
Revenir en haut Aller en bas
http://twitter.com/jbx028
kaworu
Lapin nain
Lapin nain



Localisation : genève
Nbr de messages : 8
Carottes : 6214

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeDim 9 Déc 2007 - 13:30

Bonjour !
Le projet avance doucement mais sûrement !
libastag est maintenant un projet hébergé sur rubyforge, on peut donc l'installer de manière "traditionel" pour les paquets Ruby :
Code:

gem install libastag --remote
Voici le lien du projet :
http://rubyforge.org/projects/libastag/
le lien vers la doc Rdoc de la lib :
http://libastag.rubyforge.org/

La version 0.0.1 n'est pas encore complète, elle donne un support complet et testé des réponses du serveur (VioletAPI::Response), complet mais pas encore bien testé des requêtes de type action, et "en cours de développement" (pas documenté, pas testé) des requêtes de type TTS et mouvement d'oreilles.

Questions, remarques etc sont les bienvenues !

Bonne journée.
Revenir en haut Aller en bas
kaworu
Lapin nain
Lapin nain



Localisation : genève
Nbr de messages : 8
Carottes : 6214

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeMer 12 Déc 2007 - 18:53

Bonjour !
Je continue tranquillement à developper les requêtes. En ce moment je suis en plein travail sur les Chorégraphies.

Les chorégraphies sont des descriptions assez simple, la difficulté est de traduire des phrases simples comme "bouge l'oreille droite en avant de 10 degrés" en "0,motor,0,10,0,0".

les paramètres d'une fonction (même nommés avec un hash) serait dur à utiliser :
Code:

# avec un array
Choregraphy.new (0,
Choregraphy::MOTOR,
Choregraphy::Ears::LEFT,
Choregraphy.degrees(10),
Choregraphy::Ears::Forward)

# avec un Hash
Choregraphy.new(
:time => 0,
:action => :motor,
:ear => :left,
:angle => 10,
:direction => :forward
)
Pouerk. Tout ça est peu lisible, et en plus, il n'y pas une choregraphie, mais seulement un mouvement.

J'ai décidé de créer un DSL (Domain Specific Language) pour les chorégraphie. C'est à dire de faire un "mini langage" de description de chorégraphie (tout ça dans Ruby, histoire de pouvoir profiter de tous les outils habituels).
Pour l'instant (et pour vous mettre l'eau à la bouche) ça donne ça :
Code:

Request::Choregraphy.new do

    at time 0 do
        set all leds off
    end
 
    at time 0.1 do
        set bottom led to green
        set left led to blue
        set right led to rgb(10,20,0)
        set top led to 1,2,3
    end
 
    at time 1 do
        move right ear forward of degrees 10
        move left ear backward of degrees 100
    end

    at time 2 do
        set all leds to white
        move both ears forward of degrees 10
    end
end
et ça donne :
Code:

=> #<Request::Choregraphy:0x2b6ee836daf8 @time=20, @code=[#<Proc:0x00002b6ee836ec78@(irb):6>], @chor=["0,led,3,0,0,0", "0,led,2,0,0,0", "0,led,4,0,0,0", "0,led,0,0,0,0", "0,led,1,0,0,0", "1,led,0,0,255,0", "1,led,1,0,0,255", "1,led,3,10,20,0", "1,led,4,1,2,3", "10,motor,0,10,0,0", "10,motor,1,100,0,1", "20,led,3,255,255,255", "20,led,2,255,255,255", "20,led,4,255,255,255", "20,led,0,255,255,255", "20,led,1,255,255,255", "20,motor,0,10,0,0", "20,motor,1,10,0,0"]>
on voit que dans la variable @chor, la choregraphy complète !

Citation :

ouais, bof, et donc ?
Donc on peut facilement décrire des chorégraphies en s'appuyant sur Ruby, et ça, c'est fun. Un exemple ?

voici un petit script, qui traduit votre nom en morse et l'affiche sur votre lapin (avec la led du nez, couleurs au hasard) :
Code:

#!/usr/bin/env ruby

require 'lib/violet/request/request.rb'


class String

  MORSE_TABLE = {'a'=> %|.-|,'b'=> %|-...|,'c'=> %|-.-.|,'d'=> %|-..|,'e'=> %|.|,'f'=> %|..-.|,'g'=> %|--.|,'h'=> %|....|,'i'=> %|..|,'j'=> %|.---|,'k'=> %|-.-|,'l'=> %|.-..|,'m'=> %|--|,'n'=> %|-.|,'o'=> %|---|,'p'=> %|.--.|,'q'=> %|--.-|,'r'=> %|.-.|,'s'=> %|...|,'t'=> %|-|,'u'=> %|..-|,'v'=> %|...-|,'w'=> %|.--|,'x'=> %|-..-|,'y'=> %|-.--|,'z'=> %|--..|,'0'=> %|-----|,'1'=> %|.----|,'2'=> %|..---|,'3'=> %|...--|,'4'=> %|....-|,'5'=> %|.....|,'6'=> %|-....|,'7'=> %|--...|,'8'=> %|---..|,'9'=> %|----.| }

  # "translate" a String into Morse code
  def to_morse
    self.downcase.scan(/./).collect do |c|
      MORSE_TABLE[c]
    end.join
  end
end


# time in sec of a dot .
DOT_TIME = 0.1
# time in sec of a dash - (usually 3*DOT_TIME)
DASH_TIME = 3 * DOT_TIME
# time in sec of space between morses . or -
SPACE_TIME = DOT_TIME


# get user's name and convert it in morse code
print "what's your name ? "
morse = gets.chomp.to_morse

c = Request::Choregraphy.new do
  # initialize the timer
  timer = 0

  # each dot or dash
  morse.scan(/./).each do |m|
    # choose the good duration time
    time_to_display = if m == '.' then DOT_TIME else DASH_TIME end
    # choose colors at random :)
    random_colors = [rand(255), rand(255), rand(255)]

    at time timer
      set top led to random_colors

    at time (timer + time_to_display)
      set top led off

    timer = timer + time_to_display + SPACE_TIME
  end
end

puts c.inspect

pouf ! la description de la chorégraphie prend 10 lignes de code, et on a pourtant fait un truc assez compliqué. voilà ce que ça peut donner :
Code:

what's your name ? alex
#<Request::Choregraphy:0x2b972a689358 @chor=["0,led,4,215,202,16", "1,led,4,0,0,0", "2,led,4,46,31,226", "5,led,4,0,0,0", "6,led,4,249,228,37", "7,led,4,0,0,0", "8,led,4,116,163,89", "11,led,4,0,0,0", "12,led,4,180,143,104", "13,led,4,0,0,0", "14,led,4,161,137,61", "15,led,4,0,0,0", "16,led,4,180,103,57", "17,led,4,0,0,0", "18,led,4,84,229,201", "21,led,4,0,0,0", "22,led,4,120,65,102", "23,led,4,0,0,0", "24,led,4,182,240,63", "25,led,4,0,0,0", "26,led,4,220,80,139", "29,led,4,0,0,0"], @code=[#<Proc:0x00002b9727f51330@morse.rb:31>], @time=29>

J'ai pas encore vérifié ni testé ce code, c'est en developpement yellownabzsmile
Donc ça va arriver bientôt, si vous avez des sugestions/questions, n'hésitez pas !

Bonne fin de journée.
Revenir en haut Aller en bas
kaworu
Lapin nain
Lapin nain



Localisation : genève
Nbr de messages : 8
Carottes : 6214

libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitimeMer 9 Jan 2008 - 14:06

Bonjour !
Après les fêtes et toussa, voilà la nouvelle release de libastag !
la version 0.0.2 contient un module Request complet, et le fichier morse.rb dans le dossier examples. maintenant l'API Violet est 100% exploitable via l'API Ruby !

Il reste encore à coder l'interface de haut niveau (la version 0.0.2 n'est pas encore tout à fait utilisable en l'état), et certains trucs sympa comme une base de donnée des IDmessage de la Library.

le lien de l'annonce de la version 0.0.2 :
http://rubyforge.org/forum/forum.php?forum_id=20579
le lien du projet :
http://rubyforge.org/projects/libastag/
le lien vers la documentation :
http://libastag.rubyforge.org/

remarques, questions, propositions bienvenu !

Bonne journée.
Revenir en haut Aller en bas
Contenu sponsorisé





libastag : Une interface Ruby à l'API Violet Empty
MessageSujet: Re: libastag : Une interface Ruby à l'API Violet   libastag : Une interface Ruby à l'API Violet Icon_minitime

Revenir en haut Aller en bas
 
libastag : Une interface Ruby à l'API Violet
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Reussir sa connexion ->Freebox->borne Airport->lapi
» Je suis avec Windows VISTA et ne peut pas installer le lapi
» API - librairie Ruby
» Nouvelle interface
» Interface Nabaztag.com

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum des Objets Communicants et Solutions pour les Libérer... :: II. Nabaztag, Karotz, mir:ror, Dal:Dal (Violet Object Operating System) :: L'univers de Nabaztag :: Archives :: API-
Sauter vers: