Architecture

L’application se divise en deux grandes parties : la récupération et modération des tweets d’un côté, l’affichage laser et le contrôle des lumières de l’autre.

La première partie s’articule autour d’un démon qui va récupérer les tweets à intervalles réguliers pour les insérer dans une base de données, et d’un serveur web qui présente les tweets au modérateur et les tague comme « acceptés » ou « rejetés ». La seconde partie est composée d’un démon principal qui, en boucle, récupère un tweet validé dans la base de données, l’interprète, et l’affiche. L’interprétation consiste à chercher des mots-clés correspondant à une ambiance lumineuse et envoyer des ordres à la carte DMX en conséquence (via Zigbee). Pour l’affichage, il faut calculer les points correspondant au texte défilant, ce qui est fait par un service externe que nous avons hébergé sur Google AppEngine, puis insérer ces points dans la file d’attente du laser.

Le principe décrit ci-dessus se traduit par le schéma suivant :

Schéma de l'architecture logicielle du projet

Composants libres

Nous avons utilisé de nombreuses technologies libres sans lesquelles nous n’aurions pas pu aller aussi loin dans le projet. En voici une liste, probablement pas exhaustive mais présentant les plus importantes.

  • Linux : Armadeus fourni une version de Linux patchée pour tourner sur leurs cartes, à construire avec Buildroot. Tout ce qui concerne le laser tourne sous Linux.
  • uClibC : une bibliothèque C standard plus légère que la GlibC, adaptée aux systèmes embarqués
  • Libcurl : bibliothèque C permettant de télécharger du contenu désigné par une URL, utilisé pour récupérer les tweets
  • Sqlite (et ses API C et Python) : base de donnée légère, utilisée pour stocker des tweets et faire la relation entre des mots clés et des ambiances lumineuses
  • Zero MQ : une bibliothèque de file d’attente de messages, utilisée pour la communication entre processus
  • GNU libmicrohttpd : une bibliothèque C permettant d’intégrer un serveur Web à une application. Utilisée pour l’interface de modération des tweets
  • Jansson : une bibliothèque C permettant de manipuler des données représentées sous forme d’objet JSON. Utilisée pour la récupération des tweets et la transmission de données à l’interface de modération
  • Chaîne de cross-compilation GNU : tout le code C du projet a été compilé et assemblé avec GCC et les binutils GNU
  • Python : une partie du projet se base sur le langage Python (dans son implémentation CPython), notamment tout ce qui concerne la génération des points d’un texte défilant à partir d’un tweet