Skip to content
trecouvr edited this page May 2, 2012 · 7 revisions

Rappel

Un serveur IRC est un serveur de chat, comme freenode âr exemple. Les utilisateurs se connecte au serveur avec un pseudonyme, puis ils vont sur les cannaux qu'ils veulent. Par exemple l'asserv se retrouve sur le canal #asserv avec comme pseudonyme "asservbot", l'ia ("iabot") peut alors se connecter sur ce canal et dire "asservissement vas au point (1500,400) à une vitesse de 0.8m/s".

voir le ptorocol

Protocol IRC

Généralités

Le protocol IRC est le suivant: {prefix}{cmd}{sep}{arg1}{sep}{arg2}...{name1}={value1}...

Toute commande est précédée d'un prefix.

Ensuite les paramètres positionnels (qui doivent être mis dans le bon ordre) sont passés à la suite avec un caractère séparateur, {arg1}{sep}{arg2}.

Puis viens les paramètres nommés {nom}={valeur}.

En paramètre nommé important on notera 'id_msg' qui sert à préciser un id pour le message, cet id sera utilisé dans la réponse.

Cette année

  • prefix : le point '.'
  • sep : l'espace ' '

A noter que tout cele est changeable dans le fichier ircdefine.py

example

.goto 1500 400 800 id_msg=42

Traduction : aller au point (1500,400) à une vitesse de 800mm/s, l'id du message est 42.

Protocle bas niveau

Un deuxième protocole est utilisé pour les arduinos et les autres programmes du robot (hokuyo, webcam), c’est un protocole plus simple à parser.

Généralités

{id_msg}{sep}{id_cmd}{sep}{arg1}{sep}{arg2}...

La fléxibilité est moindre mais le temps de parse est beaucou plus rapide.

Cette année

  • sep : le plus ‘+’

note : le '.' a été banni car il empêche d’écrire des floats.

Example

42+4+200

Traduction :

  • id_msg = 42
  • cmd = 4
  • arg1 = 200

BridgeBot

Un bridgebot est un client irc python qui permet de faire le lien entre le protocole irc et un protocol plus bas niveau. L'interet de ce bot est qu’il se génère automatiquement à partir d’un fichier *.h utilisé pour définir les commandes du programme.

Cette classe doit être héritée pour être utilisée, il faut notament surcharger les méthodes : init, write et read, pour pouvoir se brancher sur une entrée/sortie de son choix. Si l'on veut utiliser un autre protocole que celui bas niveau proposé, ou si l’on veut tout simplement envoyer directement les commandes irc, on peut surcharger la méthode convert_obj_to_irc ainsi que make_cmd_function.

Deux sous classes bridgebot ont été développées :

  • Arduinobot, qui permet de lier une arduino avec le serveur irc, voir arduino
  • ExecutableBot, qui permet de lier n’importe quel executable qui communique via stdout/stdin au serveur irc.
Clone this wiki locally