Table des matières:

Smart Home par Raspberry Pi : 5 étapes (avec photos)
Smart Home par Raspberry Pi : 5 étapes (avec photos)

Vidéo: Smart Home par Raspberry Pi : 5 étapes (avec photos)

Vidéo: Smart Home par Raspberry Pi : 5 étapes (avec photos)
Vidéo: Raspberry Pi - Build The Ultimate Smart Home Hub For HomeKit 2024, Décembre
Anonim
Maison intelligente par Raspberry Pi
Maison intelligente par Raspberry Pi

Il existe déjà plusieurs produits qui rendent votre appartement plus intelligent, mais la plupart d'entre eux sont des solutions propriétaires. Mais pourquoi avez-vous besoin d'une connexion Internet pour allumer une lumière avec votre smartphone ? C'est l'une des raisons pour lesquelles j'ai créé ma propre solution Smart Home.

J'ai programmé une application serveur qui s'exécute sur un Raspberry Pi. Il s'agit d'un projet open source basé sur Java qui vous permet de configurer votre appartement et de connecter plusieurs clients et « unités contrôlables ». Je montre une solution qui gère les commutateurs d'alimentation rc, lit de la musique et des vidéos sur le Raspberry Pi, affiche l'état sur le miroir intelligent et peut être contrôlée par une application Android et deux applications de galets. La source est hébergée sur github

Étape 1: choses dont vous avez besoin

Choses dont tu as besoin
Choses dont tu as besoin

Pour configurer la Smart Home, vous avez besoin des « ingrédients » suivants

  • Raspberry Pi au moins modèle 2 B
  • Émetteur 433 MHz, quelque chose comme ça
  • 3 câbles de démarrage reliant le Raspberry Pi et l'expéditeur
  • Quelques prises radiocommandes à 433 MHz
  • Smartphone Android pour exécuter l'application cliente

De plus, vous pouvez étendre la Smart Home avec plus de clients et d'unités en option comme celui-ci

  • Montre connectée Pebble
  • Smart Mirror, voir ce projet
  • Bande LED contrôlée 433 MHz, voir ce

Étape 2: préparer Raspberry Pi pour 433 MHz

Préparer Raspberry Pi pour 433 MHz
Préparer Raspberry Pi pour 433 MHz
Préparer Raspberry Pi pour 433 MHz
Préparer Raspberry Pi pour 433 MHz

Dans les étapes suivantes, vous devez accéder à la ligne de commande sur le Raspberry Pi. Pour obtenir l'accès, vous pouvez lire cette instructable

Connectez l'émetteur 433 MHz avec le Raspberry Pi comme indiqué dans l'image ci-dessus

  • GND (expéditeur) 6 GND (raspi)
  • VCC (expéditeur) 2 +5V (raspi)
  • DATA (expéditeur) 11 GPIO 17 (raspi)

Veuillez également connecter une antenne de 17 cm à la broche ANT (expéditeur). Cela augmente le signal de manière significative.

Puisque nous avons besoin de bibliothèques d'autres référentiels git, nous devons installer git

sudo apt-get install git-core -y

Pour configurer le Raspberry Pi pour une communication à 433 MHz, nous avons besoin de la bibliothèque de câblage Pi pour une meilleure gestion des GPIO.

git clone git://git.drogon.net/wiringPi

câblage cdPi./build

Ensuite, nous avons besoin d'une bibliothèque qui implémente des protocoles d'alimentation typiquement rc.

git clone git://github.com/dabastynator/rcswitch-pi.git

cd rcswitch-pi make cp send /usr/bin/

L'exécutable 'send' vous permet d'envoyer des codes pour commuter la plupart des alimentations disponibles.

Dans ma configuration Smart Home, j'ai également une bande LED rc décrite par cette instructable: https://www.instructables.com/id/RC-Controlled-LED… Pour définir les couleurs de cette bande LED, vous avez besoin d'un autre exécutable d'envoi qui vous permet pour envoyer n'importe quelle valeur entière (qui code la couleur).

Par conséquent, compilez le sendInt.cpp dans le référentiel rcswitch-pi et déplacez-le vers /usr/bin/sendInt.

sudo g++ sendInt.cpp -o /usr/bin/sendInt /home/pi/rcswitch-pi/RCSwitch.o -I/home/pi/rcswitch-pi -lwiringPi

Vous devriez maintenant pouvoir envoyer des commandes rc avec les deux exécutables /usr/bin/send et /usr/bin/sendInt

Étape 3: Configurer le serveur Smart Home

Tout d'abord, vous devez installer plusieurs packages. L'application Smart Home est basée sur Java et fonctionne correctement avec openjdk-11. Je ne suis pas sûr des autres environnements d'exécution Java. Le mplayer est un lecteur de musique en ligne de commande minimaliste. L'omxplayer utilise les graphiques Raspberry Pi pour l'encodage vidéo, il doit donc être utilisé pour les vidéos. Le programme ant est nécessaire pour construire l'application Java.

sudo apt-get install mplayer omxplayer openjdk-11-jdk ant -y

Répertoires d'installation du fichier jar et des journaux.

sudo mkdir /opt/neo

sudo chown pi:pi /opt/neo mkdir /home/pi/Logs

Configurez le script de démarrage pour démarrer l'application automatiquement au démarrage. Par conséquent, copiez le script smart-home joint dans le répertoire /etc/init.d/ J'ai également créé un script dans /usr/bin/ qui dirige les commandes vers le script joint, donc j'entre simplement smart-home dans la console pour exécuter des commandes.

sudo cp smart-home /etc/init.d/smart-home

sudo chmod +x /etc/init.d/smart-home sudo sh -c "echo '#! /bin/bash' > /usr/bin/smart-home" sudo sh -c "echo '/etc/init. d/smart-home \$1' >> /usr/bin/smart-home" sudo chmod +x /usr/bin/smart-home sudo update-rc.d smart-home defaults

Il est maintenant temps d'extraire le référentiel et de créer l'application. Si vous ne souhaitez pas le compiler vous-même, vous pouvez simplement télécharger le fichier smarthome.jar ci-joint et le déplacer vers /opt/neo/

git clone [email protected]:dabastynator/SmartHome.git

ant -f SmartHome/de.neo.smarthome.build/build.ant build_remote cp SmartHome/de.neo.smarthome.build/build/jar/* /opt/neo/

Essayez de démarrer la maison intelligente et vérifiez le fichier journal. Pour accéder aux GPIO, l'application doit être lancée par sudo.

démarrage de la maison intelligente sudo

chat Logs/smarthome.log

Vous devriez voir le message d'erreur Le fichier de configuration n'existe pas qui nous indique l'étape suivante. Le référentiel contient un fichier readme qui explique le fichier de configuration. Vous pouvez le voir joliment rendu sur github:

Copiez ce fichier XML dans /home/pi/controlcenter.xml, puis définissez l'emplacement de votre serveur multimédia et modifiez le contenu selon vos besoins. Une fois que vous avez terminé la configuration et redémarré la maison intelligente (redémarrage sudo de la maison intelligente), vous devriez voir le contenu suivant dans le smarthome.log

24.05-08:26 INFORMATIONS À DISTANCE par de.neo.smarthome.cronjob. CronJob@15aeb7ab: Planifier la tâche cron

24.05-08:26 INFORMATION À DISTANCE par [trigger.light]: Attendre 79391760 ms pour l'exécution 24.05-08:26 INFORMATION RMI par Add web-handler (5061/ledstrip) 24.05-08:26 INFORMATION RMI par Add web-handler (5061 /action) 24.05-08:26 INFORMATION RMI par Add web-handler (5061/mediaserver) 24.05-08:26 INFORMATION RMI by Add web-handler (5061/switch) 24.05-08:26 INFORMATION RMI par Add web-handler (5061/controlcenter) 24.05-08:26 RMI INFORMATION par Start webserver avec 5 handler (localhost:5061) 24.05-08:26 REMOTE INFORMATION by Controlcenter: Ajouter 1. unité de contrôle: MyUnit (xyz) …

Le serveur Web est maintenant en cours d'exécution:-)

Étape 4: Configurer les clients

Configurer les clients
Configurer les clients
Configurer les clients
Configurer les clients
Configurer les clients
Configurer les clients

Client Android pour smartphone

Le référentiel git de l'application smart-home contient également la source du client Android, vous pouvez donc le compiler vous-même. Mais j'ai joint l'APK pour cette étape, cela facilite les choses. La première fois que vous démarrez l'application, elle vous demande un serveur, comme dans la première image ci-dessus. Entrez l'url du serveur et le jeton de sécurité.

Ça devrait être ça. Vous avez maintenant accès au serveur et contrôlez votre appartement, écoutez de la musique et regardez des vidéos à distance sur votre Raspberry Pi. Notez que vous pouvez ajouter des widgets à votre écran d'accueil, ce qui rend les commutateurs et le contrôle de la musique plus accessibles.

Smartwatch Pebble client

La source des deux clients Pebble est hébergée sur github. Une application affiche le fichier de musique en cours de lecture: https://github.com/dabastynator/PebbleRemoteMusic… Cela vous permet également de mettre en pause/jouer et d'augmenter/baisser le volume.

La deuxième application déclenche trois actions: https://github.com/dabastynator/PebbleControl Les noms des déclencheurs sont: mobile.come_home mobile.leaving et mobile.go_to_bed. Si vous définissez des règles d'événement pour ce déclencheur dans votre configuration-xml, vous les déclenchez par votre montre.

Tout est open-source, mais vous n'avez pas besoin de le compiler vous-même, j'ai également attaché les applications Pebble. Téléchargez les PBW avec votre smartphone, votre téléphone devrait les installer sur votre montre. Les applications Pebble ont besoin de configurations pour parler au serveur. J'ai joint une capture d'écran à quoi ressemblent mes paramètres.

Montre connectée Garmin client

Il existe également un client disponible pour les montres intelligentes Garmin. L'application est disponible dans la boutique d'applications garmin connect et peut être installée ici:

apps.garmin.com/en-US/apps/c745527d-f2af-4…

Client miroir intelligent

J'ai déjà créé un instructable qui explique comment créer le Smart Mirror, voir ceci https://www.instructables.com/id/Smart-Mirror-by-R…. Le code source est également hébergé sur github: https:// github.com/dabastynator/SmartMirror. Le logiciel du Smart Mirror lit la configuration à partir du fichier smart_config.js qui ne fait pas partie du référentiel git. Le contenu du fichier de configuration devrait ressembler à cette liste:

var mOpenWeatherKey = 'votre-clé-weather-ouverte';

var mSecurity = 'votre-jeton de sécurité';

Vous devez également ajuster les deux premières lignes du fichier smart_mirror.js pour spécifier l'adresse IP du serveur Smart Home et l'emplacement pour obtenir la bonne météo.

Plus de clients

L'application serveur est un simple serveur Web. Cela vous permet de déclencher des actions à partir de n'importe quel client de votre choix par de simples appels Web. Dans la vidéo de démonstration, je montre le tasker de l'application Android en combinaison avec AutoVoice. Cela me permet de déclencher des événements avec de simples commandes vocales. Par exemple, "ok google, il est temps de dormir" peut déclencher mobile.go_to_bed. Mais vous pouvez également faire des appels Web par exemple depuis IFTTT. Que diriez-vous d'une bande LED jaune clignotante pour la notification par e-mail ?

Vous pouvez demander au serveur d'éventuels appels Web comme les liens suivants (remplacez l'ip, le port et le jeton par votre configuration)

localhost:5061/controlcenter/api?token=secu…

localhost:5061/action/api?token=security-to…

localhost:5061/mediaserver/api?token=securi…

localhost:5061/switch/api?token=security-to…

localhost:5061/ledstrip/api?token=security-…

Étape 5: Conclusion

Il y a encore quelques fonctionnalités à implémenter: Étant donné que le serveur ne fournit qu'une simple API Web, les clients effectuent beaucoup de sondages. Pour réduire le sondage, je veux une intégration MQTT pour une meilleure notification. De plus, les alimentations wifi devraient être plus fiables que les alimentations rc, car rc n'est qu'une communication à sens unique.

C'est très amusant de développer pour ce projet. Et c'est plutôt cool de contrôler l'appartement par plusieurs appareils, même si la connexion Internet tombe en panne.

Conseillé: