-
Notifications
You must be signed in to change notification settings - Fork 0
Tuto irc
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".
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.
- prefix : le point '.'
- sep : l'espace ' '
A noter que tout cele est changeable dans le fichier ircdefine.py
.goto 1500 400 800 id_msg=42
Traduction : aller au point (1500,400) à une vitesse de 800mm/s, l'id du message est 42.
Un deuxième protocole est utilisé pour les arduinos et les autres programmes du robot (hokuyo, webcam), c’est un protocole plus simple à parser.
{id_msg}{sep}{id_cmd}{sep}{arg1}{sep}{arg2}...
La fléxibilité est moindre mais le temps de parse est beaucou plus rapide.
- sep : le plus ‘+’
note : le '.' a été banni car il empêche d’écrire des floats.
42+4+200
Traduction :
- id_msg = 42
- cmd = 4
- arg1 = 200
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.