November 2017 wurde die Nummer elf im Kalender angezeigt. Der Verkauf von Aliexpress war in vollem Gange, seine Hände kratzten etwas zu kaufen. Die Wahl fiel auf die "
Mi-light RGBW LED-Lampe AC86-265V Remote Control Smart Lighting ". Als Ergebnis wurden zwei Kopien der maximalen Leistung bei 9 Watt und ein MiLight WiFi iBox-Hub-Controller gekauft. Die Lieferung aus China ließ nicht lange auf sich warten, und 4 Monate später, am 13. März 2018, wurde
die Yandex.Dialogs-Plattform eröffnet (eine Plattform, mit der Entwickler von Drittanbietern dem Sprachassistenten Alice Fähigkeiten hinzufügen können). Als nächstes lernt Alice, die Beleuchtung (und nicht nur) in Ihrer Wohnung zu steuern, und wir helfen ihr dabei, schrittweise und ohne eine einzige Codezeile.
- Xiaomi Smart Lamp Setup
- Installieren Sie openHAB
- Lichtsteuerung durch openHAB
- Externer Zugriff auf openHAB
- IFTTT
- Alice
1. Smart Lamps von Xiaomi einrichten.
Als erstes müssen Sie die Lampensteuerung einrichten, zumindest mithilfe der Anwendung von Xiaomi. Wenn diese Phase für Sie bestanden ist, können Sie mit der Einrichtung eines Smart-Home-Servers oder sogar direkt mit der Integration von Alice und openHAB fortfahren. Aber das Wichtigste zuerst. Die Lampen selbst stellen keine Verbindung zu Ihrem Heimrouter her. Dazu benötigen Sie einen iBox-Hub, der bis zu vier Gruppen von Lichtquellen steuern kann. Sie müssen es mit dem Netzwerk verbinden und dann die Lampen daran anschließen.
- Wir versorgen die iBox mit Strom, indem wir sie über USB anschließen, beispielsweise an ein Ladegerät für das Telefon.
- Wenn Sie zum ersten Mal eine Verbindung herstellen, müssen Sie den Hub zurücksetzen. Drücken Sie daher RST .
- Installieren Sie anschließend die Anwendung von Xiaomi für iOS oder Android auf dem Telefon. Stellen Sie sicher, dass das Telefon mit dem WLAN-Heimnetzwerk verbunden ist.
- Öffnen Sie die Mi-Light 3.0- Anwendung und klicken Sie auf + . Hier interessiert uns die Registerkarte Smart Link .
- Geben Sie den Namen und das Kennwort des WLAN-Heimnetzwerks ein, mit dem das Telefon verbunden ist, und es ist geplant, eine Verbindung mit iBox herzustellen .
- Jetzt sollte Ihre iBox mit dem Netzwerk verbunden sein und die SYS- und LINK- Anzeigen sollten langsam bzw. schnell blinken. Wenn nicht, drücken Sie erneut RST .
- Wenn die Anzeigen blinken, klicken Sie in der Anwendung Konfiguration starten . Der Vorgang zum Einrichten der Verbindung für den Hub beginnt.
- Nach ungefähr zehn Sekunden hört das Blinken auf, dann beginnt SYS langsam wieder zu blinken und LINK bleibt eingeschaltet. Die Anwendung zeigt Konfiguriert an . Der Hub ist mit dem Netzwerk verbunden. Wenn es nicht in der Geräteliste enthalten ist, klicken Sie einfach auf Nach Gerät suchen .
Sie können bereits die Farbe und Helligkeit der iBox selbst steuern, aber wir müssen die Lampen anschließen. Binden Sie dazu die Lampen an eine der vier Zonen, die dem Hub zur Steuerung zur Verfügung stehen.
- Wir öffnen in der Anwendung Mi-Light 3.0 aus der Liste des Hubs Mi-Light . Gehen Sie zum Abschnitt Farben .
- Wählen Sie oben auf dem Bildschirm eine der Zonen aus und lassen Sie sie Zone1 sein . Klicken Sie oben rechts auf das Symbol für die Gerätekopplung. Der Bildschirm LINK / UNLINK mit Anweisungen wird angezeigt .
- Jetzt konfigurieren wir die Lampen, die wir an Zone1 binden möchten, und ihre Verwaltung wird in Zukunft synchron erfolgen. Um die Helligkeit und Farbe jeder Lampe einzeln zu steuern, müssen sie separaten Zonen zugeordnet werden. Schalten Sie also die Lampe ein und klicken Sie innerhalb der ersten drei Sekunden in die Link- Anwendung. Wenn die Lampe dreimal blinkt, ist alles in Ordnung, die Synchronisation war erfolgreich. Sie können die Lampe steuern.

Grundsätzlich haben Sie zu diesem Zeitpunkt bereits eine Fernbedienung zur Fernsteuerung des Lichts. Darüber hinaus können Sie Ihr eigenes Lichtsteuersystem schreiben, da das Protokoll für die Kommunikation mit dem Hub seit langem bekannt ist (es war einst unter
limitlessled.com/dev verfügbar). Es gibt fertige Bibliotheken in
PHP ,
Javascript ,
Python . Die Verwaltung ist jedoch nur über das lokale Netzwerk möglich, was Alice eindeutig nicht ausreicht. Versuchen wir, dieses Problem zu lösen.
2. Installieren Sie openHAB
Kurz gesagt, was ist
openHab . Dies ist ein Open Source Smart Home Management Server. Entwickelt von der Community, unterstützt die Verwaltung einer Vielzahl von Geräten. Es gibt einen mobilen Client, es besteht die Möglichkeit, Alexa von Amazon und einen Assistenten von Google zu verwalten. Geschrieben in Java, basierend auf dem
Eclipse SmartHome- Framework. Damit es auch auf einem Kühlschrank installiert werden kann, ist die Hauptsache, dass die Java Virtual Machine auf diesem Kühlschrank ausgeführt wird. Installationsanweisungen gelten für
Linux ,
Windows ,
Mac OS ,
Raspberry Pi , für verschiedene Netzwerkspeicher-
Synology und
QNAP . Gehen Sie schnell die erste Option durch.
- Repository-Schlüssel hinzufügen:
wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add - sudo apt-get install apt-transport-https
- Fügen Sie das Repository selbst hinzu:
echo 'deb https://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list
- Wir aktualisieren und installieren den Server zusammen mit den Add-Ons:
sudo apt-get update sudo apt-get install openhab2 sudo apt-get install openhab2-addons sudo apt-get install openhab2-addons-legacy
- Wir richten den automatischen Start des Dienstes nach dem Neustart des Geräts ein und starten ihn:
sudo systemctl start openhab2.service sudo systemctl status openhab2.service sudo systemctl daemon-reload sudo systemctl enable openhab2.service
- Jetzt warten wir in der Region von 15 bis 20 Minuten (dies ist keine Übertreibung, dies ist eine harte Realität mit Witzen über die Geschwindigkeit von Java), während es
http://openhab-device:8080
Weboberfläche unter der Adresse http://openhab-device:8080
. - Auf dieser Seite interessieren wir uns für den Artikel Paper UI . Mit dieser Art von Schnittstelle werden wir in Zukunft arbeiten.


3. Lichtsteuerung über openHAB
Wir haben also einen funktionierenden Smart-Home-Server und Lampen von Xiaomi mit der Möglichkeit der Fernsteuerung. Es ist notwendig, sie zu verbinden. openHAB unterstützt Bindemittel (Anweisungen zur Steuerung der angeschlossenen Elektronik) für viele Geräte, einschließlich dieser Lampen.
- Gehen Sie zu Add-On → Bindungen .
- Installieren Sie Milight Binding .
- Um unser Gerät hinzuzufügen, klicken Sie im Abschnitt Konfiguration → Dinge auf + .
- Wir wählen Milight Binding , die automatische Suche nach dem Gerät beginnt.
- Ich habe nichts automatisch gefunden, daher habe ich das " Manuell hinzufügen " manuell hinzugefügt.
- Wir wählen den iBox / iBox2- Hub aus, der hinzugefügt werden soll.
- Auf der sich öffnenden Seite müssen Sie die Felder IP und Bridge ID (Mac-Adresse des angeschlossenen Geräts) ausfüllen. Sie finden sie beispielsweise in der Systemsteuerung des Routers (mein Hub ist im Netzwerk mit dem Namen des darin verwendeten HF-LPB100-Moduls registriert). Hinzufügen.
- Großartig, iBox / iBox2 erscheint jetzt in der Liste der Geräte mit der Aufschrift " Online ".
- Klicken Sie erneut auf + und wählen Sie Milight Binding , um die Lampen direkt hinzuzufügen.
- Jetzt müssen Sie nichts mehr von Hand hinzufügen. Wählen Sie einfach eine Gruppe von Lampen aus der Liste aus (in meinem Fall ist dies das Element Rgbww-Farbe (Zone 1) ).
- Das ausgewählte Element sollte in der Liste der Dinge mit der Aufschrift " Online " erscheinen.

- Geräte sind konfiguriert, jetzt müssen Sie ihnen Steuerelemente hinzufügen. Klicken Sie dazu auf das neu hinzugefügte Element.
- Eine Liste der Lampenparameter, die wir fernsteuern können, wird geöffnet. Klicken Sie auf den blauen Kreis Helligkeit .
- Wählen Sie als Nächstes das Steuerelement aus, dem wir den Geräteparameter zuordnen möchten, da Wir haben sie noch nicht. Klicken Sie auf " Neuen Artikel erstellen" .
- Legen Sie einen beliebigen Namen fest, z. B. Light_Switcher , und ändern Sie den Typ von Dimmer in Switch , weil Ich muss die Helligkeit der Lampe nicht anpassen, ich möchte sie nur ein- und ausschalten. Wir ändern einfach die Kategorie in " Licht", sodass das Steuerelement mit einem Symbol im Abschnitt "Steuerung" angezeigt wird. Klicken Sie auf Link .
- Gehen Sie zum Abschnitt Steuerung und genießen Sie die Bedienung des Helligkeitsschalters am Gerät.

4. Externer Zugriff auf openHAB
Aus Sicherheitsgründen ist nach den oben beschriebenen Manipulationen die Verwaltung des Smart-Home-Servers nur über das lokale Netzwerk möglich. Dies ist eindeutig nicht genug für unsere Aufgabe.
Es gibt verschiedene Konfigurationsoptionen : Konfigurieren Sie ein VPN für den Zugriff vom Internet auf ein lokales Netzwerk, konfigurieren Sie einen Reverse-Proxy oder verbinden Sie Ihren Server mit dem myopenHAB Cloud-Dienst unter myopenHAB.org. Da in Russland die Anzahl der Mitarbeiter von Roskomnadzor direkt proportional zur Anzahl der Benutzer von VPN- und Proxyservern ist, werden wir die letztere Option verwenden.
Multiplizieren Sie die Dinge nicht unnötig
- Wir registrieren uns auf der myopenHAB- Website, melden uns an und gehen zu https://myopenhab.org/account . Auf dieser Seite interessieren uns zwei Felder: openHAB UUID und openHAB Secret . Mit ihnen können Sie eine Serververbindung organisieren. Lassen Sie uns herausfinden, wo wir sie bekommen können.
- Wir gehen zum PaperUI openHAB- Bedienfeld.
- Öffnen Sie den Abschnitt Konfiguration → Add-Ons → Sonstiges .
- Installieren Sie openHAB Cloud Connector .
- Unter Konfiguration → Dienste sollte das openHAB Cloud- Modul mit dem Modus " Benachrichtigungen & RAS " angezeigt werden.
- Unter Konfiguration → System → Add-On-Verwaltung muss der Schalter " Acceess Remote Repository " aktiviert sein.
- Nach der Installation des Addons befinden sich die gesuchten Daten in den Dateien / var / lib / openhab2 / uuid und / var / lib / openhab2 / openhabcloud / secret ( Benutzerdaten / uuid und Benutzerdaten / openhabcloud / secret , falls Sie sie nicht aus dem Paket installiert haben). Wir geben sie in den Kontoeinstellungen auf myopenHAB ein und klicken auf Aktualisieren . Wenn alles richtig konfiguriert ist, sollte das Wort " Online " links von Ihrer E-Mail-Adresse erscheinen. Dies deutet darauf hin, dass der Zugriff auf Ihr Smart Home über das Internet offen ist, Alice es jedoch nicht sofort verwenden kann. Zuerst müssen Sie das zuvor konfigurierte Gerät von außen zugänglich machen.
- Gehen Sie zu Konfiguration → Dienste → openHAB Cloud → Konfigurieren .
- Aktivieren Sie in der Liste Elemente, die Apps wie IFTTT zugänglich gemacht werden sollen, das Kontrollkästchen für die Helligkeitssteuerung und klicken Sie auf Speichern .
- Nach einer Weile überprüfen wir, ob das ausgewählte Element auf der Seite myopenhab.org/items mit dem Status " ON " aufgeführt ist.

Die Lampensteuerung ist jetzt über das Internet über die openHAB Cloud-API möglich, die die OAuth2-Autorisierung unterstützt. Leider sind die Kunden im Voraus festgelegt. Dies sind Alexa, Google Assistant und IFTTT. Alice ist noch nicht in dieser Liste. Das ist aber kein Problem!
5. IFTTT
Wenn ja, dann.
Ein Dienst, mit dem Sie eine Aktionskette aus mehreren Diensten erstellen können. Reagieren Sie bedingt mit einer Aktion in einem Dienst, wenn ein Auslöser für ein Ereignis in einem anderen Dienst funktioniert hat. IFTTT unterstützt eine Vielzahl von Diensten, einschließlich myopenHAB, die uns interessieren. Aber unterstützt Alice nicht. Im Allgemeinen kann jeder dort ein Modul für seinen Service erstellen. Zunächst müssen Sie sich an die Verkaufsabteilung wenden und die Höhe Ihrer jährlichen Zahlung zugunsten von IFTTT herausfinden. Unser Ziel ist es, den Service kostenlos zu nutzen, um Anfragen von Alice an openHAB umleiten zu können.
- Wir registrieren uns auf der Website ifttt.com und gehen zu Applets → New Applet .
- Nachdem Sie auf + dies geklickt haben , müssen Sie den Dienst auswählen, bei dem das Ereignis ausgelöst wird. Weil Alices Dienst ist nicht auf der Liste, wir müssen etwas auswählen, das Befehle von ihr empfangen kann. Dies ist ein Webhooks- Dienst. Klicken Sie auf Verbinden .
- Wählen Sie als Nächstes den Auslöser " Webanforderung empfangen " aus der Liste mit einem Element aus.
- Geben Sie den Namen des Ereignisses an, z. B. light_on , und klicken Sie auf Erstellen .
- Jetzt müssen wir die Antwort auswählen, klicken Sie auf + das . Unsere Wahl von openHAB , Stecker.
- Klicken Sie im folgenden Fenster, der zuvor erwähnten OAuth2-Berechtigung, auf Zulassen .
- Die einzige Antwort auf den Sendebefehl ist verfügbar.
- Wählen Sie aus der Dropdown-Liste die Lampensteuerung (z. B. Light_Switcher) aus und geben Sie als Befehl zum Einschalten des Lichts das Wort " ON " an. Wir schaffen.
Zur Überprüfung müssen wir einen Trigger für den Webhooks-Dienst aufrufen. Wie kann man das machen? Senden Sie eine POST-Anfrage.
- Wir suchen den Webhooks- Dienst auf der IFTTT- Website und gehen zu der dazugehörigen Dokumentation.
- Auf der sich öffnenden Seite gibt es einen Befehl, den wir ausführen müssen und der {event} durch light_on ersetzt .
- Nachdem Sie auf Test It geklickt haben, sollte sich Ihre Lampe einschalten.
Es bleibt ein ähnliches Rezept für das Ereignis light_off zu erstellen, das den Befehl OFF an die Lichtsteuerung sendet. Und dann lehre Alice, diese Auslöser auf unsere Bitte hin aufzurufen.

6. Alice
In meiner Bestellung, in meinem Wunsch, wird Alice das Licht
einschalten, wenn Sie die
Yandex.Dialogs- Plattform verwenden. Die Plattform wurde im März dieses Jahres eröffnet und ermöglicht es jedem, Alice Fähigkeiten hinzuzufügen, indem er den entsprechenden Code schreibt. Im Moment sind bereits eine Vielzahl von Fähigkeiten
im Katalog enthalten . Die Entwicklung von Fähigkeiten ist ein Thema für einen separaten Artikel über Habré, und hier haben wir "
ohne eine einzige Codezeile ". Wir werden also die verfügbaren Entwicklungen nutzen.
- Wir installieren die Beta-Version der Yandex-Suchanwendung , die derzeit nur Benutzerfähigkeiten unterstützt .
- Wir sagen Alice " mach Zauber an ". Es ist die Fähigkeit von Zaubersprüchen / Zaubersprüchen, die es uns ermöglicht, POST-Anforderungen an IFTTT- Server auszuführen.
- Klicken Sie auf Hinzufügen und geben Sie die Adresse an, um das Licht des Formulars einzuschalten:
https://maker.ifttt.com/trigger/light_on/with/key/{user_id}
- Der nächste Schritt ist die Äußerung einer Phrase oder eines Wortes, auf die Alice antwortet, indem sie eine Anfrage an die angegebene Adresse abschließt (meine Alice antwortet „Mach das Licht an“).
Wenn Sie jetzt auf die entsprechende Schaltfläche klicken oder den Vorschlag aussprechen, wird die Anfrage von Yandex-Servern an den Skill-Server weitergeleitet, von dort an IFTTT und dann an myopenHAB, das die Daten mit direktem Zugriff auf den Lamp-Hub an Ihre lokale Instanz überträgt und das Licht aufleuchtet. Wir werden sofort einen ähnlichen Befehl hinzufügen, um die Beleuchtung auszuschalten.
Sie müssen verstehen, dass es nicht ausreicht, nur Alice einzuschalten und zu sagen,
dass Sie das Licht einschalten . Yandex weiß nichts über unsere Teams für Smart Homes, Daten darüber werden in der Datenbank der Fertigkeit "
Zaubersprüche " gespeichert. Daher müssen Sie die Fertigkeit zuerst aufrufen, indem Sie „
Zaubersprüche einschalten “ sagen, und erst dann das Licht mit Ihrer Stimme ein- und ausschalten.
PS
Der Ansatz mit der Integration von Alice und openHAB durch IFTTT schränkt Ihre Vorstellungskraft nicht ein. Sie können die Fähigkeit "
Zaubersprüche " verwenden, um alle Dinge in Ihrer Smart-Home-Stimme zu steuern. OpenHAB verfügt beispielsweise über Ordner für Samsung SmartTV, mit denen Sie den Ton und die Kanäle des Fernsehgeräts steuern können. Die Interaktion von Alice und Webhooks ist die Implementierung einer Sprachschnittstelle zu allen IFTTT-Diensten. Mit "
Zaubersprüchen " können Sie den Befehl eines dieser Dienste ausführen. Oder Sie können Alice überhaupt nicht verwenden und Ihr Frontend schreiben, z. B. eine mobile Anwendung, die IFTTT-Anforderungen über dieselben Webhooks ausführt. Ja, und IFTTT ist nicht erforderlich. Analog dazu können Sie die "
Zaubersprüche " so konfigurieren, dass Anforderungen an Ihren Server erfüllt werden.