Wie man Freunde Alice und HomeBridge findet

Bild

UPD 08/06/2019: Es ist passiert, es wurde möglich, Alice selbst zu bitten, das Licht einzuschalten . Das Projekt ist auf dem Github . Auf seiner Homebridge überprüft, funktioniert alles. Ich halte eine weitere Unterstützung meiner Fähigkeiten für nicht angemessen.

Ich wollte seit langem neben dem Smart Home einen Sprachassistenten, der Russisch versteht und spricht. Infolgedessen entschied ich mich, ein Risiko einzugehen und eine neue Kolumne von Yandex.Station mit einer jungen, aber bereits von vielen geliebten Alice zu nehmen. Der erste Eindruck war ausgezeichnet, aber als ich viele Witze hörte und genug redete, begann ich, die praktische Seite der Kolumne zu lernen. Vor allem interessierte mich das Thema Alices Interaktion mit Smart Home.

Problembeschreibung
Mein Zuhause basiert auf einem HomeBridge- Server. Es wurden viele Artikel ( eins , zwei , drei ) über seine Konfiguration und Verwendung auf dem Hub und anderen Ressourcen geschrieben, daher werde ich nicht weiter darauf eingehen. Nachdem ich die Frage nicht gründlich untersucht hatte, war ich mir sicher, dass Alices Kompetenzkatalog bereits viele Lösungen für die Interaktion mit Smart-Home-Steuerungssystemen enthielt. Es stellte sich heraus, dass zum Zeitpunkt des Schreibens für die meisten Fähigkeiten zum Thema „Smart Home“ ein Gerät mit einem Display für die Arbeit erforderlich ist, das nicht für die Station geeignet ist. Die einzige Fähigkeit, die die Anforderungen zu erfüllen schien und zu wissen, wie man ohne Display arbeitet, war Alfred . Die Fähigkeit passte nicht zu mir, weil sie an einen Dienst gebunden ist - IFTTT. Angenommen, ich möchte einen virtuellen Switch erstellen, der in einem Smart-Home-System funktioniert und es Ihnen ermöglicht, Skripte an den aktuellen Status zu binden. Alfred verwendet den WebHook-Dienst für IFTTT, mit dem Sie nur auf den im IFTTT-Applet erstellten Trigger reagieren können. Es gibt jedoch keine Möglichkeit, den aktuellen Status des Applets abzurufen (Sie können den Schalter ein- oder ausschalten, aber Sie können nicht herausfinden, welchen Status der Switch jetzt hat).

Um das oben genannte Problem zu lösen, wurde der Alice-HomeBridge- Dienst erstellt, der den Yandex.Alice-Sprachassistenten und verschiedene Smart-Home-Steuerungssysteme miteinander verbindet. Als Beispiel für Einstellungen betrachten wir die Konfiguration von HomeBridge. Dieser Ansatz gilt jedoch auch für andere Systeme wie Home Assistant , openHAB und andere.

Mit diesem Dienst können Benutzer nach der Registrierung auf der Site virtuelle Switches erstellen.



Sie können den Status der Switches mithilfe einer speziell generierten GET-Serviceanforderung ändern oder ermitteln.



Damit der Dienst mit dem Sprachassistenten "Alice" interagieren kann, wurde die Fähigkeit "Lazy Jimmy" erstellt.

Lazy Jimmy
Sagen Sie Alice: "Führen Sie den Skill Lazy Jimmy aus" und er bietet Ihnen an, Sie über den Aktivierungscode zu informieren, den Sie in Ihrem persönlichen Konto finden .



Nach der Aktivierung können Sie den Status Ihrer Schalter mit den Befehlen Ein- oder Ausschalten ändern. Wenn Sie beispielsweise "Licht einschalten" sagen, ändert sich der Status des Schalters "Licht" in "positiv". Wenn Sie nur „Licht“ sagen, ändert sich der Status des Schalters in die entgegengesetzte Richtung.

Damit der Dialog natürlicher klingt, besteht die Möglichkeit, Schalter mit verständlicheren Namen zu erstellen, z. B. "Mit Utrechk". Dann können Sie Alice "Tell Jimmy With Utrechk" mitteilen, und der Schalterstatus ändert sich.

Es bleibt die Konfiguration von HomeBridge. Zum Beispiel werden wir die Erweiterung cmdswitch2 verwenden . Erstellen Sie einen Schalter für HomeKit mit dem Namen "Alice Button 1".

{ "platform": "cmdSwitch2", "name": "CMD Switch", "switches": [ { "name": "Alice Button 1", "on_cmd": "curl --silent \"http://alicehomebridge.org/alice/switches.php?switch=34&hb=ADB7BYBT728O&state=set&val=true\"", "off_cmd": "curl --silent \"http://alicehomebridge.org/alice/switches.php?switch=34&hb=ADB7BYBT728O&state=set&val=false\"", "state_cmd": "curl --silent \"http://alicehomebridge.org/alice/switches.php?switch=34&hb=ADB7BYBT728O&state=get\" | grep -oh \"true\"", "polling": true, "interval": 2 } ] } 

Stellen Sie den Intervallparameter auf mindestens 2 Sekunden ein, um den Server nicht mit unnötigen Anforderungen zu überlasten.

Alles ist fertig.



Wenn Sie nun sagen: "Alice sagt es dem faulen Jimmy mit dem Morgenwort", ändert der Schalter "Alice Button 1" den Status. Hier ist eine Demonstration, wie alles in Verbindung mit benutzerdefinierten HomeKit-Skripten funktioniert:


Vollversion der HomeBridge-Konfigurationsdatei

PS Die meisten Smart-Home-Verwaltungssysteme wie HomeKit unterstützen Skripte. Sie können ein Skript erstellen, das Sie in einer bestimmten Situation verwenden möchten, z. B. wenn Sie aufwachen und seinen Anruf dem Ereignis „Utrechok Switch einschalten“ zuweisen.

PS Mein Service entwickelt sich gerade und ist, gelinde gesagt, immer noch alles andere als ideal. Aber Alice weigert sich auch, von Zeit zu Zeit bestimmte Sätze zu akzeptieren. Zum Beispiel vermittelt sie der Fertigkeit perfekt den Satz "Mach das Licht an", aber sie wird den Satz "Guten Morgen" nicht weitergeben. Ich hoffe, Yandex kennt das Problem und wird es bald beheben. Warten auf Ihre Kommentare.

Source: https://habr.com/ru/post/de434184/


All Articles