Le Mir:ror est un lecteur de puces RFID édité par la société Violet, dont le produit phare est le lapin Nabaztag. Dans la lignée des produits communicants, le Mir:ror permet de déclencher ces actions en fonction des puces RFID qui sont posées dessus. Malheureusement, Violet propose une gestion similaire au Nabaztag, c’est à dire que la configuration se fait en ligne et nécessite d’être connecté à Internet. Se posent alors les problèmes classique des données hébergées chez un tiers, mais aussi la pérennité du service, question confirmée par le rachat de Violet par la société Mindscape suite à son redressement judiciaire. Heureusement, le Mir:ror peut facilement être utilisé en local, voici comment.

Le Mir:ror est en réalité un périphérique très simple qui envoi un flux de données sur sa connexion USB. Ainsi, on va juste chercher à identifier ces flux de données. Mais auparavant, un petit peu de préparation.

Préparation

L’article Analyse du Mir:ror du GNU/Linux Magazine France hors série de décembre 2010/janvier 2011 détaille assez bien l’identification du périphérique. Un dmesg indique que le Mir:ror est branché en /dev/hidraw1. Si vous voulez vérifier, la commande

devrait retourner la ligne suivante :

et on peut vérifier sa présence par

Ce répertoire n’est accessible que par Root, ce qui limite les possibilités d’interaction. La solution la plus simple pour gérer l’accessibilité au périphérique est proposée par le projet Domogik sur sa page de configuration du plug-in pour le Mir:ror. On va ainsi créer une règle UDEV par en éditant le fichier /etc/udev/rules.d/mirror.rules (en root) et en y ajoutant la ligne :

Le Mir:ror sera donc accessible par tout le monde sur /dev/mirror (ce qui est déjà plus lisible). Il suffit de recharger les règles par/etc/init.d/udev restart sur les distributions à base de Debian ou udevadm control restart sur Archlinux.

Utiliser le Mir:ror

Sans rentrer dans les détails ici, l’article du Linux Mag’ le détaillant assez bien, les données sont émises par le Mir:ror par paquets de 16 bits. Il va donc falloir lire ces paquets et les interpréter. On peut dors et déjà déduire que n’importe quelle techno convient à la lecture de ces paquets. La première solution que j’avais trouvé était en C sur le blog JoPa.fr. Il s’avère qu’il y a un petit projet sur Google Code : erawrim qui est très similaire. L’article du Linux Mag’ reprend le concept en Python et s’approche de l’implémentation qui en est faite dansDomogik.

Le concepte est très simple. On va lire les paquets, conserver ceux qui ne sont pas nuls, et agir en conséquence. Pour lire les paquets, on écoute sur l’entrée du Mir:ror. En Python, cela se résume à ces lignes (follement inspirées de l’article du Linux Mag’) :

Ici on se contente d’afficher l’identifiant de la puce RFID lorsqu’elle est posée sur le Mir:ror ou lorsqu’elle est retirée. La stratégie communément appliquée pour réaliser des actions en fonction de la pose ou du retrait d’une puce consiste à créer des fichiers en shell contenant les instructions à exécuter, les fichier étant nommées par l’identifiant de la puce et l’action. Ainsi, à la place du print dans le bloc d’action de la puce posée, on pourrait avoir :

et :

pour la puce retirée.

Evidemment, il faudrait consolider ce code pour éviter les messages d’erreur des puces non connues. Le plus simple est que dans les deux cas on appelle une fonction qui effectuera le test par exemple :

et là nous allons avoir une jolie notification qui va bien. J’ai conservé le print pour faciliter le copier/coller du nom de la fonction, mais à chacun d’adapter cette partie (création automatique du fichier, notification plus sexy…).

En conclusion, un cas pratique…

… et qui amuse les ptigeek 2.x : une puce donnée permet d’allumer ou éteindre une lampe contrôlée par une installation X10. Il suffit de mettre dans les scripts correspondant  heyu on a1  et  heyu off a1  (a1 est évidemment à remplacer par le bon identifiant), et quand on pose le lapinou, la lumière s’allume, quand on le retire, elle s’éteint. Effet garanti.

Voila donc comment créer un proto. Il ne reste plus qu’à l’adapter à ses besoins. On pourra s’inspirer de cet autre post sur le blog JoPa.fr : Pam et Mir:ror : une authentification RFID sous Linux pour des idées.

À propos de... Darko Stankovski

iT guy, photographe et papa 3.0, je vous fais partager mon expérience et découvertes dans ces domaines. Vous pouvez me suivre sur les liens ci-dessous.