Article mis à jour : https://viktorkirilov.me/post/home-automation-raspberry-pi/
https://youtu.be/wh0OoLUTeM8
Depuis tout petit, je suis passionné par l'électronique et les différents types de mécanismes. Auparavant, j'ai réalisé différents petits projets avec Arduino, comme un frein à main pour mon volant de jeu, un tachymètre LED personnalisé pour ma voiture (voir mon dépôt github), des LED à commande vocale, etc. Récemment, j'ai acheté Raspberry PI 3 et face à tout le battage médiatique de l'IoT, j'ai décidé de commencer à automatiser ma maison.
Comme je connais assez bien Javascript et son écosystème, j'ai décidé de créer ma propre application téléphonique via react native
et de la connecter via websockets
au backend NodeJS
. J'utilise les enregistrements d'ImmutableJS pour la cohérence de la structure des données et les performances de l'application. Les données sont envoyées entre le client et le serveur via des chaînes JSON, qui sont reconverties en enregistrements immuables, lorsqu'elles sont reçues des deux côtés. J'ai séparé les modules partagés (entre le client et le serveur) en packages npm locaux distincts - home-records et home-config. Pour le contrôle GPIO (broches de la framboise), j'ai utilisé la bibliothèque pi-blaster
, avec wiringPi
. Comme je n'ai pas trouvé de codes pour mon AC, je les ai enregistrés moi-même et les ai ajoutés au fichier de configuration lirc
. Duckdns
cron est utilisé comme DNS dynamique, car mon adresse IP change périodiquement et je n'aurai pas à recompiler l'intégralité de l'application ni à modifier la configuration à chaque fois. Le serveur diffuse les modifications en temps réel à tous les utilisateurs connectés. L'application téléphonique se trouve dans le dossier /phone-app , le serveur se trouve dans /server . Pourquoi tu n'y jetterais pas un oeil ?
Raspberry Pi 3
est l'unité de contrôle. Les appareils haute puissance, tels que les bandes LED, sont alimentés via 12V 5A power supply
(terre partagée avec le PI). Le courant alternatif est contrôlé via une LED infrarouge de 950 nm. Le système de chauffage est câblé via un relais (marche et arrêt) et un servo pour le thermostat car j'évitais de le démonter. La bande LED blanche et la bande RVB sont connectées via des transistors logiques IRLZ34N
au PI. Il y a aussi un récepteur IR, juste au cas où je voudrais enregistrer autre chose. La température est mesurée via le capteur de température DS18B20.
Le câblage ressemble à :
Je suis ouvert à toutes sortes d'idées sur les différents modules. Si vous avez des idées en tête, je vous serai reconnaissant de les ajouter dans le suivi des problèmes et de les étiqueter comme Idea
.