Google Assistant FHEM Connect
FHEM Connect ist eine Weiterentwicklung von Alexa FHEM speziell für den Google Assistant. Mit FHEM Connect ist die Verknüpfung von FHEM und dem Google Assistant in wenigen Schritten getan. Damit kannst du Geräte die in FHEM verwaltet werden auch über den Google Assistant von beliebigen Geräten mit Google Assistant Support steuern.
Es sind keine großen Einrichtungen dafür notwendig und die Verbindung zwischen Google und deinem Client ist ebenso gesichert.
ACHTUNG!!! FHEM muß zwingend aktuell sein. Update > 28.01.2019
Google Assistant FHEM Connect | |
---|---|
Zweck / Funktion | |
Anbindung von FHEM an Google Assistant | |
Allgemein | |
Typ | Inoffiziell |
Details | |
Dokumentation | siehe Forum |
Support (Forum) | Frontends/Sprachsteuerung |
Modulname | |
Ersteller | dominik |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Hintergrundinfos
FHEM Connect basiert auf Google Firebase, welches die Plattform für die Kommunikation mit Google bietet. Der lokal installierte fhemconnect Client kommuniziert mit Google Firebase und übermittelt von dort die Daten an Google. Das hat 3 große Vorteile:
- Keine Portfreigaben notwendig
- Kommunikation läuft gesichert über HTTPS und die Authentifizierung über Auth0 mittels OAuth2
- Neue Funktionalitäten, wie zum Beispiel die Unterstützung von neuen Devices, sind immer gleich verfügbar sobald diese im Firebase Projekt implementiert wurden. Man muss also nicht regelmäßig aktualisieren um in den Genuss von neuen Google Assistant Features zu kommen.
Installation (Kurzanleitung)
Wichtig: Aktuell ist der Google Action noch im Beta Test und ihr müsst daher als Tester mit eurer GMail Adresse mit aufgenommen werden. Schickt mir dazu eine kurze private Nachricht im FHEM Forum (dominik) mit eurer GMail Adresse. Sobald ich diese hinzugefügt habe, könnt ihr den Action in der Google Home App sehen.
Bevor ihr die Befehle unten ausführt, müsst ihr das Testaction aktivieren. Dazu bitte auf folgenden Link klicken:
https://console.actions.google.com/project/fhem-connector-beta/simulatorcreate?isDeepLink
- 39_gassistant.pm von hier herunterladen: https://forum.fhem.de/index.php/topic,96696.0.html
- 39_gassistant.pm nach /opt/fhem/FHEM kopieren
sudo npm install -g gassistant-fhem --unsafe-perm
define gassistant gassistant
- Ca. 30s warten bis ein Reading gassistantFHEM.loginURL erscheint
- Link öffnen und einloggen
- Den erhaltenen authcode in FHEM hinterlegen (set gassistant authcode ...)
- /opt/fhem/FHEM/gassistant-fhem.cfg bei Bedarf anpassen
- Geräte in den in der gassistant-fhem.cfg definierten Raum verschieben
Architektur
- fhemconnect Client
Lokale installierter Client der die Verbindung zu FHEM herstellt.
- Auth0
Auth0 wird sowohl von fhemconnect Client als auch von Google Assistant genutzt um den User zu authentifizieren. Damit erhält der User eine eindeutigen User ID.
- Firebase ("zentralerer Server", obwohl es Server-less betrieben wird)
- Firebase Firestore
Datenbank in welcher die Geräteinformationen gespeichert werden.
- Firebase Realtime DB
Datenbank in welcher der aktuelle Status der Geräte gespeichert wird.
- Firebase Cloud Functions
Die Cloud Function stellt einen Webaufruf im Internet zur Verfügung. Google ruft direkt eine solche Cloud Function auf. Des Weiteren wird diese auch für die Kommunikation vom fhemconnect Client zum Firebase Projekt ("Server") genutzt.
Die Dienste auth0 und Google Firebase wurden beide als EU Instanzen konfiguriert. Eure Daten liegen daher im EU Raum und unterliegen damit auch den EU Datenschutzvorgaben.
Datenfluss
Der Datenfluss und die Arbeitsweise von FHEM Connect wird anhand des folgenden Beispiels erklärt:
- Bei der Verknüpfung des Google Accounts mit FHEM Connect wird der Service von auth0 herangezogen. Dieser authentifiziert den User und generiert einen Access und Refresh Token mit welchem Google sich gegenüber FHEM Connect (“dem zentralen Service”) authentifiziert.
- Bei der Installation des fhemconnect Clients wird ebenso auth0 herangezogen. Der User wird auch dort über auth0 authentifiziert und damit kann sich auch fhemconnect am zentralen Service anmelden.
- Durch dieses Verfahren kann FHEM Connect die User ID aus dem fhemconnect Client und die User ID die über Google kommt matchen und damit Befehle dem richtigen User zuordnen. Ein Faken dieser User ID ist nicht möglich, da der übertragene Token (JSON Web Token) signiert ist und bei jeder Übertragung von auth0 verifiziert wird.
- Durch die Verknüpfung des Accounts weiß Google, dass es FHEM Connect gibt und es dorthin Smart Home Befehle schicken kann.
- Ein Befehl wie "Schalte das Nachtlicht ein" wird von Google interpretiert
- FHEM Connect (der zentrale Service der auf Firebase läuft) erhält den Befehl das Nachtlicht einzuschalten. Durch den von Google übertragenen Access Token, welcher die User ID beinhaltet, wird der User identifiziert.
- FHEM Connect weiß durch die User ID, welche es dem verifizierten Access Token entnommen hat, welchem User der Befehl zuzuordnen ist und schickt dieser über Firebase an den fhemconnect Client.
- Der fhemconnect Client schickt den Befehl direkt an FHEM weiter wo der Befehl ausgeführt wird.
Update
Es wird nur in seltenen Fällen ein Update benötigt, da der größte Teil der Anwendung in Firebase konfiguriert ist. Sollte der Client dennoch aktualisiert werden müssen, dann kann das mit folgenden Befehlen durchgeführt werden:
sudo npm install -g gassistant-fhem
- gassistant über FHEM neu starten
FAQs
- "Method Not Allowed" Fehlermeldung bei der npm Installation?
sudo npm install -g npm
Kostenlos
Aktuell wird der Service kostenlos betrieben. Abhängig von der Auslastung, könnte es zukünftig der Fall sein, dass die freien Limits bei Firebase und Auth0 überstiegen werden und damit Kosten anfallen. Solange das nicht der Fall ist, wird der Service kostenlos zur Verfügung gestellt.