Inhaltsverzeichnis:

Smart Home von Raspberry Pi - Gunook
Smart Home von Raspberry Pi - Gunook

Video: Smart Home von Raspberry Pi - Gunook

Video: Smart Home von Raspberry Pi - Gunook
Video: Raspberry PI 4B, установка Supervised Home Assistant на RaspiOS 64 - проверка инструкции 2024, November
Anonim
Smart Home von Raspberry Pi
Smart Home von Raspberry Pi

Es gibt bereits mehrere Produkte, die Ihre Wohnung intelligenter machen, aber die meisten davon sind proprietäre Lösungen. Aber wozu braucht man eine Internetverbindung, um mit dem Smartphone ein Licht zu schalten? Das war für mich ein Grund, eine eigene Smart-Home-Lösung zu bauen.

Ich habe eine Serveranwendung programmiert, die auf einem Raspberry Pi läuft. Dies ist ein Java-basiertes Open-Source-Projekt, mit dem Sie Ihre Wohnung konfigurieren und mehrere Clients und 'steuerbare Einheiten' anschließen können. Ich zeige eine Lösung, die mit RC-Netzteilschaltern umgeht, Musik und Videos auf dem Raspberry Pi abspielt, den Status auf Smart Mirror anzeigt und über eine Android-App und zwei Pebble-Apps gesteuert werden kann. Die Quelle wird auf github gehostet

Schritt 1: Dinge, die Sie brauchen

Dinge, die du brauchst
Dinge, die du brauchst

Um das Smart Home einzurichten, benötigen Sie folgende 'Zutaten'

  • Raspberry Pi mindestens Modell 2 B
  • 433 MHz Sender, so ähnlich
  • 3 Überbrückungskabel, die den Raspberry Pi und den Sender verbinden
  • Einige Funksteckdosen bei 433 MHz
  • Android-Smartphone zum Ausführen der Client-App

Darüber hinaus können Sie das Smart Home mit weiteren optionalen Clients und Einheiten wie diesem erweitern

  • Kiesel-Smartwatch
  • Smart Mirror, siehe dieses Projekt
  • 433 MHz gesteuerter LED-Streifen, siehe diese

Schritt 2: Raspberry Pi für 433 MHz vorbereiten

Raspberry Pi für 433 MHz vorbereiten
Raspberry Pi für 433 MHz vorbereiten
Raspberry Pi für 433 MHz vorbereiten
Raspberry Pi für 433 MHz vorbereiten

In den folgenden Schritten benötigen Sie Zugriff auf die Kommandozeile auf dem Raspberry Pi. Um den Zugriff zu erhalten, können Sie diese instructable https://www.instructables.com/id/Remote-SSH-access lesen…

Verbinden Sie den 433 MHz Sender mit dem Raspberry Pi wie im Bild oben gezeigt

  • GND (Sender) 6 GND (Raspi)
  • VCC (Sender) 2 +5V (Raspi)
  • DATEN (Sender) 11 GPIO 17 (raspi)

Bitte schließen Sie auch eine 17cm Antenne an den ANT (Sender) Pin an. Das erhöht das Signal deutlich.

Da wir einige Bibliotheken aus anderen Git-Repositories benötigen, müssen wir git. installieren

sudo apt-get install git-core -y

Um den Raspberry Pi für 433 MHz Kommunikation einzurichten, benötigen wir die Verdrahtungs-Pi-Bibliothek zur besseren Handhabung der GPIOs.

git-Klon git://git.drogon.net/wiringPi

CD-VerkabelungPi./build

Dann brauchen wir eine Bibliothek, die typische rc-Netzteilprotokolle implementiert.

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

cd rcswitch-pi cp senden /usr/bin/

Mit der ausführbaren Datei „send“können Sie Codes senden, um die meisten verfügbaren Netzteile umzuschalten.

In meinem Smart Home-Setup habe ich auch einen RC-LED-Streifen, der von dieser Anleitung beschrieben wird: https://www.instructables.com/id/RC-kontrollierte-LED… Um Farben für diesen LED-Streifen einzustellen, benötigen Sie eine andere ausführbare Sendedatei, die es Ihnen ermöglicht um einen Integer-Wert zu senden (der die Farbe codiert).

Kompilieren Sie daher sendInt.cpp im rcswitch-pi-Repository und verschieben Sie es nach /usr/bin/sendInt.

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

Jetzt sollten Sie rc-Befehle mit den beiden ausführbaren Dateien /usr/bin/send und /usr/bin/sendInt senden können

Schritt 3: Smart Home Server einrichten

Zunächst müssen Sie mehrere Pakete installieren. Die Smart Home-Anwendung ist Java-basiert und läuft problemlos mit openjdk-11. Bei anderen Java-Laufzeitumgebungen bin ich mir nicht sicher. Der mplayer ist ein minimalistischer Befehlszeilen-Musikplayer. Der omxplayer verwendet die Raspberry Pi-Grafik für die Videocodierung, daher sollte diese für Videos verwendet werden. Das Programm ant wird benötigt, um die Java-Anwendung zu erstellen.

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

Richten Sie Verzeichnisse für die JAR-Datei und für Protokolle ein.

sudo mkdir /opt/neo

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

Konfigurieren Sie das Startskript, um die Anwendung beim Booten automatisch zu starten. Kopieren Sie daher das angehängte Smart-Home-Skript in das Verzeichnis /etc/init.d/ Ich habe auch ein Skript in /usr/bin/ erstellt, das Befehle an das angehängte Skript weiterleitet, also gebe ich einfach Smart-Home in die Konsole ein, um Befehle auszuführen.

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-Standards

Jetzt ist es an der Zeit, das Repository auszuchecken und die Anwendung zu erstellen. Wenn Sie es nicht selbst kompilieren möchten, können Sie einfach die angehängte smarthome.jar herunterladen und nach /opt/neo/ verschieben.

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/

Versuchen Sie, das Smart-Home zu starten und überprüfen Sie die Protokolldatei. Um Zugriff für die GPIOs zu erhalten, muss die Anwendung per sudo gestartet werden.

sudo Smart-Home-Start

Katze Logs/smarthome.log

Sie sollten die Fehlermeldung Konfigurationsdatei existiert nicht sehen, die uns zum nächsten Schritt führt. Das Repository enthält eine Readme, die die Konfigurationsdatei erklärt. Sie können dies auf github schön gerendert sehen:

Kopieren Sie diese XML nach /home/pi/controlcenter.xml, legen Sie dann den Speicherort für Ihren Medienserver fest und ändern Sie den Inhalt nach Bedarf. Nachdem Sie die Konfiguration abgeschlossen und das Smart-Home neu gestartet haben (sudo smart-home restart), sollten Sie folgenden Inhalt im smarthome.log sehen

24.05-08:26 REMOTE INFORMATION by de.neo.smarthome.cronjob. CronJob@15aeb7ab: Cronjob einplanen

24.05-08:26 REMOTE INFORMATION von [trigger.light]: Warten Sie 79391760 ms auf Ausführung 24.05-08:26 RMI INFORMATION by Add Web-Handler (5061/ledstrip) 24.05-08:26 RMI INFORMATION by Add Web-Handler (5061.) /action) 24.05-08:26 RMI-INFORMATION von Web-Handler hinzufügen (5061/mediaserver) 24.05-08:26 RMI-INFORMATION von Web-Handler hinzufügen (5061/switch) 24.05-08:26 RMI-INFORMATION von Web-Handler hinzufügen (5061/controlcenter) 24.05-08:26 RMI INFORMATION by Start webserver with 5 handler (localhost:5061) 24.05-08:26 REMOTE INFORMATION by Controlcenter: 1. Steuergerät hinzufügen: MyUnit (xyz) …

Der Webserver läuft jetzt:-)

Schritt 4: Clients einrichten

Clients einrichten
Clients einrichten
Clients einrichten
Clients einrichten
Clients einrichten
Clients einrichten

Android-Client für Smartphones

Das Git-Repository für die Smart-Home-Anwendung enthält auch den Quellcode für den Android-Client, sodass Sie ihn selbst kompilieren können. Aber ich habe die APK für diesen Schritt angehängt, das macht es einfacher. Wenn Sie die App zum ersten Mal starten, werden Sie nach einem Server gefragt, wie im ersten Bild oben. Geben Sie die URL des Servers und das Sicherheitstoken ein.

Das sollte es sein. Sie haben nun Zugriff auf den Server und steuern Ihre Wohnung, spielen Musik ab und schauen sich Videos aus der Ferne auf Ihrem Raspberry Pi an. Beachten Sie, dass Sie Ihrem Homescreen Widgets hinzufügen können, um Schalter und Musiksteuerung leichter zugänglich zu machen.

Smartwatch Pebble-Client

Die Quelle für die beiden Pebble-Clients wird auf github gehostet. Eine App zeigt die aktuell abgespielte Musikdatei: https://github.com/dabastynator/PebbleRemoteMusic… Damit können Sie auch anhalten/abspielen und lauter/leiser.

Die zweite App löst drei Aktionen aus: https://github.com/dabastynator/PebbleControl Die Trigger-Namen sind: mobile.come_home mobile.leaving und mobile.go_to_bed. Wenn Sie in Ihrer Konfigurations-Xml Event-Regeln für diesen Trigger definieren, lösen Sie diese durch Ihre Watch aus.

Es ist alles Open Source, aber Sie müssen es nicht selbst kompilieren, ich habe auch die Pebble-Apps angehängt. Laden Sie die PBWs mit Ihrem Smartphone herunter, Ihr Telefon sollte sie auf Ihrer Uhr installieren. Die Pebble-Apps benötigen Konfigurationen, um mit dem Server zu kommunizieren. Ich habe einen Screenshot angehängt, wie meine Einstellungen aussehen.

Smartwatch Garmin-Client

Es gibt auch einen Client für Garmin Smartwatches. Die App ist im garmin connect App-Store erhältlich und kann hier installiert werden:

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

Smart Mirror-Client

Ich habe bereits eine Anleitung erstellt, die erklärt, wie der Smart Mirror erstellt wird, siehe https://www.instructables.com/id/Smart-Mirror-by-R…. Der Quellcode wird auch auf github gehostet: https:// github.com/dabastynator/SmartMirror. Die Software des Smart Mirror liest die Konfiguration aus der Datei smart_config.js, die nicht Teil des Git-Repositorys ist. Der Inhalt der Konfigurationsdatei sollte wie folgt aussehen:

var mOpenWeatherKey = 'dein-open-weather-key';

var mSecurity = 'Ihr-Sicherheits-Token';

Sie müssen auch die ersten beiden Zeilen der Datei smart_mirror.js anpassen, um die IP-Adresse des Smart Home-Servers und den Standort anzugeben, um das richtige Wetter zu erhalten.

Mehr Kunden

Die Serveranwendung ist ein einfacher Webserver. Auf diese Weise können Sie Aktionen von jedem gewünschten Client aus durch einfache Webaufrufe auslösen. Im Demo-Video zeige ich die Android App Tasker in Kombination mit AutoVoice. Dadurch kann ich mit einfachen Sprachbefehlen Ereignisse auslösen. Zum Beispiel kann "ok google, Zeit zum Schlafen" mobile.go_to_bed auslösen. Sie können aber auch Web-Calls beispielsweise von IFTTT aus tätigen. Wie wäre es mit einem gelb blinkenden LED-Streifen für die E-Mail-Benachrichtigung?

Sie können den Server nach möglichen Web-Calls fragen, wie zum Beispiel folgende Links (ersetzen Sie IP, Port und Token durch Ihre Konfiguration)

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-…

Schritt 5: Fazit

Es sind noch einige Features zu implementieren: Da der Server nur eine einfache Web-API bereitstellt, führen Clients eine Menge Polling durch. Um das Polling zu reduzieren, möchte ich eine MQTT-Integration für eine bessere Benachrichtigung. Auch WLAN-Netzteile sollten zuverlässiger sein als RC-Netzteile, da RC nur eine Einwegkommunikation ist.

Es macht viel Spaß, für dieses Projekt zu entwickeln. Und es ist ziemlich cool, die Wohnung von mehreren Geräten aus zu steuern, auch wenn die Internetverbindung zusammenbricht.

Empfohlen: