Voici un petit aperçu d’un projet démo de Alex Ellis, un hacker Anglais. Cet article est une traduction/adaptation large de la description d’Alex.
Ce projet est basé sur le Rasberry Pi Zéro et un afficheur RGB. Il utilise Docker pour déployer le code de manière fiable. Pour cette démo, l’afficheur montre l’activité d’un serveur de fichier auto-hébergé, Minio.
A Propos de Minio
En quelques mots, Minio est un serveur d’objets (fichiers) similaire à Amazon S3. Il en supporte d’ailleurs l’API.
Minio est codé en Go, et dispose également d’une interface graphique dans le navigateur. Contrairement à S3, vos fichiers sont hébergés sur votre matériel, ou sur votre service cloud.
Alex a introduit le support de Webhooks dans Minio, qui peut désormais envoyer des requêtes http quand des fichiers sont uploadés.
La démo
Le code – disponible plus bas – capte ces requêtes http et montre l’activité : Vert, Rouge, Bleu , alors qu’on copie des fichiers vers le serveur Minio.
(la commande est du type « mc cp source_dir myminio/code »)
Matériel et code
Il vous faut un Raspberry (ici, Alex a utilisé un Pi Zéro) et un afficheur Blinkt! de Pimoroni.
C’est un afficheur RGB de 8 leds de type APA102 : elles sont adressables individuellement, et n’interfèrent pas avec la sortie PWM, donc pas de souci avec l’audio.
Ce module, vu sa faible taille, rentre dans la plupart des boîtiers de Pi. Une librairie Python est incluse ; c’est plug and play et ça ne coûte pas bien cher 🙂
Le code est un mélange de Python, Redis et Node.js qui tourne sous Docker.
Redis permet de conserver un temps de réponse rapide, afin de ne pas ralentir le serveur Minio.
Tout le code est disponible en open source sur le dépôt github minio-gauge.
Vous devinez que sur ce principe, on peut adapter énormément d’autres choses.
Vous avez ici la base pour afficher une jauge numérique en fonction de webhooks, les données peuvent donc provenir de n’importe où 🙂
Ça vous inspire, vous avez reproduit ou adapté pour un autre usage ? Dites le nous !
Sylvain
@actuino
Vraiment sympathique ce projet, j’ai hâte d’en voir de nouveaux ! Toujours de très bonnes idées 😉