Je fais partie depuis quelques temps d’un hackerspace de Limoges nommé le SmartLab. Les horaires du SmartLab sont variables et il nous fallait un moyen de nous prévenir entre nous qu’au moins un des membres était arrivé. Avec l’aide des autres membres, j’ai donc réalisé un centre de notification, le NotifCenter.
Sommaire
Le NotifCenter, d’un point de vue fonctionnel
Notifications d’ouverture et de fermeture
A chaque fois que l’ont bascule d’un état (ouvert ou fermé) à l’autre, 4 évènements vont se produire :
- Un e-mail est envoyé à tous les membres de la liste de notification pour signaler l’ouverture ou la fermeture du lab.
- Un message est envoyé sur le canal IRC du lab.
- Un message est envoyé sur le compte twitter du lab.
- Un fichier son est joué dans le lab.
Modes debug et production
Très vite, pendant les phases de tests et de développements, des messages étaient envoyés en grand nombre sur les différentes canaux de communication. J’ai donc mis en place un mode debug dans lequel les notifications étaient envoyées uniquement sur un canal de test sur irc au lieu du canal principal, du mail et de twitter.
Gestion de l’alarme incendie
Une fois ce boîtier installé, nous avons profité de sa position centrale dans le lab pour y adjoindre une alarme incendie. Par conséquent le boitier comporte également :
- Un relai pour couper l’alimentation de l’alarme lorsque le lab est ouvert pour éviter qu’elle ne se déclenche à cause des fumées de soudure par exemple.
- Quelle que soit la position de ce relai, nous pouvons :
- forcer l’alimentation via un bouton de forçage;
- couper l’alimentation via un bouton d’arrêt d’urgence.
Binouze !
Une fois les premières fonctionnalités en place, nous avons du régler le problème primordial d’un hackerspace : gérer le stock de bière !
Nous avons donc mis en place un décapsuleur sur lequel est fixé une puce RFID. À chaque fois que l’on boit une bière on passe le décapsuleur sur le boîtier, et cela décrémente le compteur de bières de 1. Un jeton RFID sert quant à lui à faire remonter le compteur de 10 unités.
Lorsque le compteur descend sous une certaine limite, un message est envoyé par mail, IRC et twitter (1 heure avant la prochaine ouverture) pour demander aux membres de ramener des bières.
Dashboard
Ensuite il a fallu afficher ce compteur sur un écran relié au boîtier. J’en ai profité pour réaliser un dashboard avec diverses informations :
- La date et l’heure;
- La météo;
- Les indispensables gifs animés de chat (merci Pi3rrot pour l’idée 😉 );
- Le compteur de bières sous forme de jauge;
- Les derniers messages du bot IRC;
- Les logs du serveur web.
BOT IRC
J’ai ensuite développé un bot pour piloter le NotifCenter depuis IRC, avec gestion des droits. On peut l’utiliser pour :
- Lancer une notification d’ouverture ou de fermeture du lab ou bien demander l’état du lab;
- Passer le NotifCenter en mode debug ou production (pour éviter de spammer tout le monde pendant les devs)
- Demander ou modifier le nombre de bières en stock;
- Jouer à la roulette russe : une commande permet de recharger l’arme ou de tirer. Lorsque l’on perd, on se fait kicker du chan avec insulte aléatoire à la capitaine Haddock à la clé. On peux également y jouer devant le dashboard en utilisant une carte RFID sur laquelle est dessiné un pistolet. Un son approprié est joué lors de la recharge, d’un clic ou d’un tir.
D’autre part, il envoie un message sur IRC dans certains cas :
- Changement d’état du lab;
- Modification du wiki du lab;
- Commit sur le serveur git.
Le NotifCenter, d’un point de vue matériel
Les composants
Il s’agit d’un boîtier très simple d’apparence. Il comporte entre autres :
- Un Raspberry Pi 2;
- Un lecteur de carte RFID 125khz;
- Une carte relai;
- Une led verte pour indiquer que le lab est ouvert;
- Une led rouge pour indiquer que le lab est fermé;
- Un bouton vert pour ouvrir le lab;
- Un bouton bleu pour fermer le lab;
- Un interrupteur pour forcer l’alimentation de l’alarme incendie;
- Un bouton d’arrêt d’urgence pour stopper l’alimentation de l’alarme incendie;
Le circuit
Le NotifCenter, d’un point de vue logiciel
Je cherchais une solution capable de réaliser un prototype rapidement. Et j’ai alors découvert Node-RED.
Node-RED
Node-RED est un « outil visuel de câblage de l’internet de objets ». Il est le cœur de l’architecture du NotifCenter.
Principaux nodes utilisés :
REDIS
REDIS est un « magasin de structure de données en mémoire, utilisé comme base de données, système de cache, et serveur de messages ».
Tailon
Tailon est une webbapp auto-hébergée pour visualiser ou chercher dans des fichiers textes. Très simple a utiliser, elle nous a permis d’intégrer rapidement les log dans le dashboard.
Le SmartLab NotifCenter ou comment se protéger de la pénurie de bières ! https://t.co/4J66ZkAhMm #nodered #mqtt #rfid #bière #bot #irc
Tout simplement génial ! Je serai heureux d’utiliser ce système afin de vous rendre une petite visite.
SmartLab NotifCenter par @NicolasLambert https://t.co/dw0ffzPF0e
joli 🙂
la bière pas trop grave mais le stock de PQ ça peut devenir gênant….mdr bisous.
Génial le SmartLab NotifCenter ou comment se protéger de la pénurie de #bières ! https://t.co/51ZJyRm3dt #raspberrypi #FabLab