Wie man ein DIY Siri-Kontrolliertes Wi-Fi Licht macht

In diesem Handbuch erfahren Sie, wie Sie ein steuerbares Wi-Fi-Licht erstellen und es mit Siri steuern können.

In diesem Handbuch erfahren Sie, wie Sie ein steuerbares Wi-Fi-Licht erstellen und es mit Siri steuern können.
Werbung

HomeKit ist endlich in der Wildnis und ermöglicht Siri eine Sprachsteuerung für eine Handvoll Smart-Home-Geräte.

Leider meine ich eine Handvoll Wörter - alles, was Sie bereits gekauft haben, ist wahrscheinlich nicht kompatibel. Das Protokoll wurde jedoch bereits reverse-engineered und ein Open-Source-Emulator für die HomeKit-API ist verfügbar: oder in einfachem Englisch, können Sie jetzt "gefälschte" HomeKit-Geräte erstellen, und Siri wird sie wie jedes andere offizielle HomeKit-Zubehör steuern.

Heute werden wir ein Wi-Fi kontrollierbares Licht schaffen und es mit Siri steuern. Hier ist eine Demo.

Folgendes brauchst du:

  • Raspberry Pi (Ich habe ein RPi2 verwendet, es gibt einen kleinen Unterschied in den zu installierenden Node-Versionen mit der aktualisierten ARM-Architektur - siehe Hinweise später).
  • Ein MQTT-Broker wurde auf dem Raspberry Pi installiert. Siehe den Abschnitt "Mosquitto auf deinem Pi installieren" in meinem OpenHAB-Handbuch Teil 2 OpenHAB Anfängerhandbuch Teil 2: ZWave, MQTT, Regeln und Charts OpenHAB Anfängerleitfaden Teil 2: ZWave, MQTT, Regeln und Charts OpenHAB, die Open-Source-Heimautomatisierungssoftware, weit über die Möglichkeiten anderer Hausautomatisierungssysteme auf dem Markt hinaus - aber es ist nicht einfach, sich einzurichten. In der Tat kann es geradezu frustrierend sein. Weiterlesen . Es muss nicht speziell auf dem Pi installiert werden - Sie können sogar einen Cloud-basierten MQTT-Server verwenden, aber da wir sowieso ein Pi für dieses Tutorial benötigen, ist es praktisch.
  • NodeMCU v2 (Arduino-kompatibel)
  • Neopixel-LEDs (Ich würde 4 Pixel zum Testen empfehlen, dann können Sie ein externes Netzteil hinzufügen und so viele hinzufügen, wie Sie möchten)

Installation der HomeKit Bridge

Wir werden eine NodeJS-Anwendung namens HAP-NodeJS auf dem Raspberry Pi installieren: Dies wird eine Brücke zwischen HomeKit-Anfragen und den Wi-Fi-Geräten bilden. Wir werden diese Brücke jetzt mit einem Accessoire konfigurieren, aber Sie können so viele hinzufügen, wie Sie möchten.

Ich installiere das tatsächlich auf meinem vorhandenen Home-Server, auf dem OpenHAB läuft - ich hoffe, die beiden zu einem späteren Zeitpunkt miteinander zu verbinden, aber jetzt wissen Sie, dass sie auf demselben Raspberry Pi nebeneinander bestehen können. Wenn Sie das gleiche tun, nur für den Fall, machen Sie ein Klon-Backup Ihrer aktuellen Pi SD-Karte Klonen Sie einfach Ihre SD-Karte für störungsfreien Raspberry Pi Computing Klonen Sie einfach Ihre SD-Karte für reibungslose Raspberry Pi Computing Ob Sie eine haben SD-Karte oder mehrere, eine Sache, die Sie benötigen, ist die Fähigkeit, Ihre Karten zu sichern, um die Probleme zu vermeiden, die auftreten, wenn Ihr Raspberry Pi nicht startet. Weiterlesen . Wenn alles schief geht, kannst du das wiederherstellen.

Beginnen Sie mit einem vollständigen Upgrade vom Terminal oder einer SSH-Sitzung Einrichten Ihres Raspberry Pi für kopflosen Einsatz mit SSH Einrichten Ihres Raspberry Pi für kopflosen Einsatz mit SSH Der Raspberry Pi kann SSH-Befehle annehmen, wenn er an ein lokales Netzwerk angeschlossen ist (entweder über Ethernet) oder Wi-Fi), so dass Sie es leicht einrichten können. Die Vorteile von SSH gehen über das tägliche Screening hinaus ... Read More.

 sudo apt-get update sudo Aktualisierung apt-get 

Möglicherweise müssen Sie diese zwei Mal machen, wenn es eine Weile her ist.

Installieren Sie jetzt ein paar Kernpakete, die wir benötigen:

 sudo apt-get installieren npm git-core libnss-mdns libavahi-compat-libdnssd-dev 

Als nächstes installieren wir die neueste Version von NodeJS. Sie könnten versucht sein, dies mit apt-get zu tun, aber nicht - diese Version ist jetzt wirklich alt und wird nicht funktionieren. Besuchen Sie stattdessen nodejs.org, navigieren Sie zum Verzeichnis download / release / latest-v5.x.0 /, und überprüfen Sie, welcher Link für die neueste Version vorhanden ist. Sie suchen nach linux-armv7l für Raspberry Pi 2 oder linuxarmv6l für die original RPi-Modelle. Anschließend können Sie die URLs und Verzeichnisnamen nach Bedarf anpassen und mithilfe der folgenden Befehle herunterladen und installieren.

 wget https://nodejs.org/download/release/latest-v5.x.0/node-v5.5.0-linux-armv7l.tar.gz tar -xvf node-v5.5.0-linux-armv7l.tar.gz cd node-v5.5.0-linux-armv7l sudo cp -R * / usr / local 

Bestätigen Sie durch Eingabe

 Knotenversion 

Und du solltest v5.5 sehen (oder was immer du heruntergeladen hast).

Als nächstes müssen wir einige Knotenmodule installieren.

 sudo npm installieren -g npm sudo npm installieren -g node-gyp 

In diesem ersten Befehl verwenden wir den Node Package Manager (npm), um eine neuere Version von sich selbst zu installieren. Klug!

Laden Sie jetzt den HomeKit-Emulator namens HAP-NodeJS herunter:

 git klon https://github.com/KhaosT/HAP-NodeJS.git cd HAP-NodeJS npm neu aufbauen sudo npm installieren node-persist sudo npm installieren srp 

An diesem Punkt habe ich diesen Fehler ausgeführt: " #fehler Diese Version von Knoten / NAN / v8 erfordert einen C ++ 11-Compiler ". Wenn dies der Fall ist, installieren Sie einen neueren C ++ - Compiler mit den folgenden Befehlen:

 sudo apt-get install gcc-4.8 g ++ - 4.8 sudo Update-Alternativen --install / usr / bin / gccgcc / usr / bin / gcc-4.6 20 sudo Update-Alternativen --install / usr / bin / gcc gcc / usr / bin / gcc-4.8 50 sudo Update-Alternativen --install / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20 sudo Update-Alternativen --install / usr / bin / g ++ g ++ / usr / bin / g ++ - 4.8 50 

Jetzt solltest du kein Problem haben. Führen Sie diese Befehle nacheinander aus:

 sudo npm installieren srp sudo npm installieren mdns --unsafe-perm sudo npm installieren debug sudo npm installieren ed25519 --unsafe-perm sudo npm installieren curve25519 --unsafe-perm 

Das sollte alles sein. Versuchen Sie den Emulator auszuführen mit:

 Knoten Core.js 

Wenn Sie Fehler erhalten, die besagen, dass das Modul nicht gefunden werden kann, verwenden Sie einfach den Befehl sudo npm install und fügen Sie den Namen des fehlenden Moduls ein. Angenommen, alles ist gut, sollten Sie einige Warnungen sehen, und Ihre HomeKit Bridge wird ausgeführt. So sieht Erfolg aus:

hap-nodejs installiert

Sie können sofort sehen, dass bereits ein Set von 6 gefälschten Geräten erstellt wurde. Wir werden diese später als Ausgangspunkt für unsere eigene Wi-Fi-Beleuchtung verwenden, aber wir werden diese jetzt nur zum Testen verwenden. Wenn Sie den Server mit starten, können Sie auch mehr Debug-Information anzeigen:

 DEBUG = * Knoten Core.js 

Wechseln Sie nun zu einem Apple-Gerät, auf dem Siri ausgeführt werden kann. Apple stellt absichtlich keine registrierte HomeKit App zur Verfügung, außer registrierten Entwicklern, also laden Sie die kostenlose Elgato Eve App herunter, eine HomeKit Management App, mit der Sie (auch Nicht-Elgato) Geräte zu Ihrem HomeKit Netzwerk hinzufügen können.

Wenn Sie die App das erste Mal starten, müssen Sie Ihr Zuhause benennen, gehen Sie weiter und gehen Sie durch. Wählen Sie dann "Zubehör hinzufügen". Ignoriere die Nachricht, dass du in der Nähe bist!

elgato Vorabend 1

Es wird Ihnen gesagt, dass Sie als nächstes einen eindeutigen "HomeKit Setup Code" suchen. Ignoriere das und drücke "Add to [Name deines Hauses]".

Es wird Ihnen auch sagen, dass das Gerät nicht zertifiziert ist. In der Tat ist es nicht. Fahre trotzdem fort. Wenn Sie auf den Bildschirm kommen und nach einem Zubehörcode fragen ...

Elgato Vorabend 2

Wählen Sie, um den Code manuell einzugeben, und geben Sie Folgendes ein:

 031-45-154 

Dies kann in der Datei Light_accessory.js gefunden / geändert werden, aber dazu später mehr. Fügen Sie dieses Zubehör Ihrem Standardzimmer hinzu, nennen Sie es Fake Light und gehen Sie weiter durch die Dialoge, um das Symbol usw. auszuwählen.

Abschließend springen Sie zurück zur SSH-Sitzung, in der Sie HAP-NodeJS ausführen. Vielleicht hast du schon eine Nachricht mit dem Betreff "Are we on?" Gesehen - das ist die Elgato App, die nach dem Lichtstatus fragt. Öffne Siri und sag ihr, dass sie "falsches Licht einschalten" soll, und versuche es dann wieder auszuschalten. Hoffentlich sehen Sie einige Debug-Meldungen von HAP-NodeJS, um zu zeigen, dass sie die Befehle erhalten haben.

 Sind wir dran? Nein. Das Licht anschalten! Das Licht ausschalten! 

Fantastisch, das ist der erste Schritt. Jetzt brauchen wir ein tatsächliches Licht, bevor wir zurückkommen, um die Brücke wieder zu konfigurieren.

Erstellen eines Wi-Fi-Lichts

Die Hardwareseite dieses Schritts ist überraschend einfach, wenn wir mit nur vier Neopixeln beginnen, da wir diese direkt vom NodeMCU-Dev-Board und dessen USB-Verbindung mit Strom versorgen können. Wenn Sie einen längeren Streifen haben, machen Sie sich keine Sorgen - wir haben dies in Software definiert, so dass der Rest einfach nicht eingeschaltet wird.

Schließen Sie das rote Stromkabel von einem Neopixel-Strang an den VIN-Pin, die blaue Masse an GND und das grüne Signalkabel an den mit D2 gekennzeichneten Pin an der NodeMCU an. Achten Sie sehr auf die Polarität: Wenn Sie den Boden und die Fahrgestellnummer verwechseln, werden Sie einen Stromstoß durch Ihr Board senden und es dabei zerstören.

Wenn Ihre Arduino-Umgebung noch nicht für die Verwendung mit ESP8266 eingerichtet ist, gehen Sie weiter und folgen Sie den Anweisungen in meinem ESP8266: Arduino Killer Lernen Sie den Arduino Killer kennen: ESP8266 Lernen Sie den Arduino-Killer kennen: ESP8266 Was ist, wenn ich Ihnen ein Arduino-kompatibles Gerät vorschlage? Board mit integriertem Wi-Fi für weniger als $ 10? Nun, da ist es. Lesen Sie mehr Guide, dann kommen Sie zurück, nachdem Sie bestätigt haben, dass es funktioniert. Installieren Sie diese zusätzlichen Bibliotheken:

  • lmroys PubSubClient
  • Adafruits NeoPixel

Der Code, den wir verwenden, ist eine Modifikation des Github-Benutzers Aditya Tannu - Ich habe die unnötige Over-the-Air-Update-Funktionalität entfernt, in einigen HSV-Funktionen hinzugefügt, die fehlten, und es einfacher gemacht, mehr Lichter zu erstellen, indem Sie nur ein einzelne Variable. Wenn Sie den unten eingebetteten Code nicht sehen können, finden Sie ihn bei diesem Gist.

Aktualisieren Sie die folgenden Zeilen mit Ihren eigenen Netzwerkinformationen und einem eindeutigen Namen für jedes von Ihnen erstellte Gerät (Host).

 const char * ssid = "...."; const char * Passwort = "..."; const char * host = "officelight"; IP-Adresse MQTTserver (192, 168, 1, 99); 

Die IP-Adresse dieses Geräts wird automatisch über DHCP abgerufen. Es spielt keine Rolle, ob sich die IP-Adresse ändert, da wir uns jedes Mal mit demselben MQTT-Server verbinden.

Momentan verwenden wir nur 4 Neopixel, aber Sie können die Anzahl später erhöhen, wenn Sie sie von einer externen Quelle aus einschalten. Laden Sie den Code hoch und testen Sie ihn - verwenden Sie Ihren bevorzugten MQTT-Client, um Befehle zu senden (passen Sie den Hostnamen in den folgenden Anweisungen an, wenn Sie ihn geändert haben) .

  • Sie können an den Root- Officelight- Kanal senden, um ihn zu aktivieren . Senden Sie einen anderen Wert an diesen Kanal, um ihn zu deaktivieren.
  • Sie können eine Nummer von 0-360 an den officelight / hue senden, um die Farbe zu ändern. Wir verwenden den HSV-Farbraum, also sind 0 und 360 rot, 120 ist grün und 240 ist blau.
  • Sie senden einen Prozentwert für die Helligkeit (0-100, nicht% Symbol).
  • Gleiches gilt für die Sättigung. Ein Wert von 100 ist vollständig gesättigt (dh eine Volltonfarbe), und Null wird unabhängig vom angegebenen Farbton reinweiß sein.

Sobald Sie bestätigt haben, dass Ihr MQTT-betriebener Scheinwerfer funktioniert, fahren Sie fort.

Konfigurieren eines neuen HomeKit-Zubehörs

Wechseln Sie zurück zum Raspberry Pi und beenden Sie die HAP-NodeJS App, falls Sie dies noch nicht getan haben. Navigieren Sie zum Verzeichnis / accessories . Um dies zu vereinfachen, können Sie Code, der bereits mit dem "officelight" Fixture gepaart wurde, direkt herunterladen, indem Sie Folgendes eingeben:

 wget https://gist.githubusercontent.com/jamesabruce/a6607fa9d93e41042fee/raw/12e4fd1d1c2624e7540ba5e17c3e79bc6bdec5fd/Officelight_accessory.js 

Im Wesentlichen ist dies ein Duplikat des Standard-Lichtzubehörs, wobei einige Variablennamen geändert wurden (wiederum angepasst von Adysans Arbeit, vereinfacht für Benutzerfreundlichkeit). Hier ist, was Sie wissen sollten, um auf dieser Grundlage Ihr eigenes maßgeschneidertes Zubehör zu erstellen.

  • Alle Zubehörteile müssen den Namen * _accessory.js haben
  • Ändern Sie die IP-Adresse in der Optionsvariable oben auf Ihrem MQTT-Server
  • Wenn Sie einen anderen Gerätenamen haben, suchen / ersetzen Sie alle Instanzen von " officelight " mit Ihrem eindeutigen Gerätenamen . Sie können in Nano suchen / ersetzen, indem Sie STRG und \ drücken, den zu suchenden Begriff eingeben, den zu ersetzenden Begriff eingeben und dann A (alle Instanzen) drücken. Durchlaufen Sie jeden dieser Schritte, um genau zu erfahren, welche Variablen aktualisiert werden.
  • Erstellen Sie einen eindeutigen hexadezimalen Benutzernamen für das Zubehör ( light.username = "1B: 2B: 3C: 5D: 6E: FF"; )
  • Ändern Sie nicht den PIN-Code. Es folgt einem bestimmten Format, und wenn Sie nicht wissen, was Sie tun, kann es nicht paaren. Es gibt kein Problem damit, sie zwischen Lichtern gleich zu halten.
  • Sie können Ihrem Gerät einen anderen "Siri-Namen" geben, wenn Sie es der Elgato Eve App hinzufügen, und diese jederzeit bearbeiten, damit Sie nicht bei Ihrer ersten Wahl stecken bleiben. Sie müssen die Konfigurationsdateien nicht bearbeiten oder den Server neu starten.
  • Sobald Sie mehrere Fixtures haben, können Sie die Elgato Eve App verwenden, um sie nach Raum zu gruppieren oder um bestimmte Szenen zu erstellen, die aus mehreren komplexen Aktionen bestehen. Szenen können aus mehreren Aktionen bestehen, wie zum Beispiel: Schalten Sie die Büroleuchte ein, dimmen Sie sie auf 25%, machen Sie sie rot und aktivieren Sie die Kaffeemaschine.

Sie müssen Ihr neues Zubehörteil erneut über Ihre bevorzugte HomeKit-App hinzufügen.

Schließlich möchten wir unsere HAP-NodeJS-App immer dann ausführen, wenn der Pi neu gestartet wird. Fügen Sie Folgendes zu Ihrer Datei " etc / rc.local " direkt vor dem Exit 0 hinzu .

 Sudoknoten /home/pi/HAP-NodeJS/Core.js </ dev / null & 

Sie können sehen, dass ich dies mit einigen anderen Befehlen kombiniert habe, die ich bereits beim Booten eingerichtet habe.

rlocal Run-Knoten beim Start

Wenn Sie rc.local zum ersten Mal verwenden, müssen Sie es möglicherweise als ausführbar festlegen:

 sudo chmod 755 /etc/rc.local 

Wenn Sie es aus irgendeinem Grund erneut im Debug-Modus ausführen müssen, können Sie die laufende Node-App mit folgenden Aktionen beenden:

 killall Knoten 

Ein letzter Schritt: Navigieren Sie zum Zubehörverzeichnis und löschen Sie GarageDoorOpener_accessory.js . Zum Zeitpunkt des Schreibens ist dies fehlerhaft und führt nach einiger Zeit zu einem Serverabsturz.

Was wirst du mit Siri kontrollieren?

Jetzt, wo Sie die Grundlagen haben, gibt es keine Grenzen mehr, was Sie kontrollieren können - wenn Sie es in Javascript codieren können, können Sie Ihre eigene Zubehördatei erstellen. Es gibt so viel Potential hier, ich denke du wirst viel Spaß haben. Lass mich in den Kommentaren wissen, was dir einfällt!

In this article