GBridge Einbindung
Nutzung von gBridge.io in FHEM
gBridge.io ist ein Cloud-Dienst zur Integration von Smarthome-Sprachsteuerungen in beliebige Anwendungen. Dazu steht ein öffentlicher MQTT Server zur Verfügung, bei dem die Daten von Sprachkommandos auf beliebigen MQTT-Topics verfügbar sind.
Momentan unterstützt gBridge Google Home, ein geschlossener Beta-Test für Amazons Alexa wird in den nächsten Wochen starten.
Da der Dienst als MQTT-Broker arbeitet ist der Einrichtungsaufwand mit dem von anderen MQTT-Geräten vergleichbar.
Kontoeinrichtung und -integration
Zu Beginn muss ein neues Konto auf gBridge.io erstellt werden - dazu einfach die Seite besuchen und die übliche Prozedur befolgen.
Nach der ersten Anmeldung sollte der Nutzername für den MQTT-Server notiert werden, dies ist unter "Hi Nutzername" -> "My Account" gelistet. Auch ist es ratsam, in diesem Tab ein vom Nutzerkonto verschiedenes MQTT-Passwort zu vergeben.
Zum Test kann nun im Reiter "Devices" ein erstes virtuelles Gerät angelegt werden. Hier gibt es zwei relevante Optionen: den Device Type (Gerätetyp) und die Traits (Gerätefunktionen). Theoretisch kann jeder Gerätetyp mit jeder beliebigen Funktion kombiniert werden, wenngleich nicht jede Kombination sinnvoll ist (z.B. Typ "Spülmaschine" mit Dimmfunktion).
- Der Gerätetyp beeinflusst die Darstellung in der Google-Home-App und aktiviert gerätespezifisches Vokabular für Sprachkommandos.
- Jedem Gerät wird eine oder mehrere Gerätefunktionen zugeordnet, wie beispielsweise "Ein- und Ausschalten", "Dimmen", etc. Diese definieren, welche Kommandos überhaupt akzeptiert werden.
Nun kann gBridge in der Google-Home-App aktiviert werden. Dazu "Zum Zuhause hinzufügen"/ "Gerät einrichten" auswählen, nachfolgend dann "Funktioniert mit Google"/ "Du hast bereits Geräte eingerichtet?". Aus der Liste von Dienstanbietern kann "Kappelt gBridge" gewählt werden. Nach der Eingabe der Anmeldedaten erfolgt die Verknüpfung der Konten.
Vorbereitung der MQTT-Verbindung
Zur Kommunikation mit dem MQTT-Broker von gBridge sollte aus Sicherheitsgründen zwingend eine verschlüsselte Verbindung genutzt werden. Im Moment unterstützen die MQTT-Module von FHEM jedoch leider keine verschlüsselte TLS-Verbindung zu MQTT-Servern (siehe Forum, weswegen ein Workaround mittels lokaler Brücke notwendig ist. Sollte inzwischen TLS-Unterstützung vorhanden sein, kann der folgende Schritt übersprungen werden.
Zur Einrichtung der Überbrückung ist ein lokaler MQTT-Broker, beispielsweise eine Mosquitto-Instanz notwendig. Diese kann z.B. durch ein einfaches
sudo apt install mosquitto
auf einem Linux-System installiert werden, dort verbraucht sie kaum Resourcen.
Folgende Konfiguration funktioniert für Mosquitto, sie kann in die Konfigurationsdatei eingefügt werden (meist "/etc/mosquitto/mosquitto.conf", z.B. durch einen Texteditor wie "nano"):
connection gbridge-io address mqtt.gbridge.io:8883 bridge_attempt_unsubscribe true bridge_protocol_version mqttv311 cleansession true remote_username {gbridge-mqtt-username} remote_password {gbridge-mqtt-password} remote_clientid gbridge-u{userid}-{randomstring} topic gBridge/u{gbridge-userid}/+/+ both 0 "" "" topic gBridge/u{gbridge-userid}/+/+/set both 0 "" "" #you might need to change the path of the CA files #This one is valid for most Debian based systems bridge_capath /etc/ssl/certs/ bridge_tls_version tlsv1.2
Einige Stellen müssen mit den eigenen Informationen gefüllt werden:
- {gbridge-mqtt-username}: Der MQTT-Nutzername von gBridge, meist im Format "gbridge-u123".
- {gbridge-mqtt-password}: Das Passwort für den MQTT-Server wenn separat vergeben; sonst das Account-Passwort
- {userid}: Die gBridge-Nutzernummer, also der Zahlenanteil des MQTT-Nutzernamens
- {randomstring}: Eine beliebige, möglich zufällige Kombination von Buchstaben und Zahlen
Mosquitto muss nun neugestartet werden ("sudo systemctl restart mosquitto"), in der Log-Datei zeugen folgende Meldungen von Erfolg:
pi@hcpi01:~ $ sudo tail /var/log/mosquitto/mosquitto.log -n 20 1532876260: mosquitto version 1.4.10 (build date Fri, 22 Dec 2017 08:19:25 +0000) starting 1532876260: Config loaded from /etc/mosquitto/mosquitto.conf. 1532876260: Opening ipv4 listen socket on port 1883. 1532876260: Opening ipv6 listen socket on port 1883. 1532876260: Connecting bridge kappelt-io(mqtt.gbridge.io:8883) 1532876260: New connection from 192.168.2.151 on port 1883.
Kommandos vom gBridge-Server werden nun durch den eigenen Mosquitto-Server an alle verbundenen Geräte weitergeleitet. Die Kommunikation zwischen dem eigenen Mosquitto und gBridge ist dabei verschlüsselt.
Sofern noch nicht geschehen, muss in FHEM die Verbindung zum eigenen Mosquitto-Broker erfolgen. Beispielsweise kann das wie folgt aussehen, wenn FHEM und Mosquitto auf dem gleichen Gerät laufen.
define MQTT MQTT 127.0.0.1:1883
Einrichtung von Geräten
Der Ablauf zur Steuerung eines neuen Gerätes mittels Google Home sieht generell so aus:
- Ein neues Gerät im gBridge-Dashboard anlegen und konfigurieren. Dieses erscheint dann bereits in der Google-Home App. Hier sollten die entsprechenden MQTT-Topics notiert werden.
- Einrichtung einer MQTT_BRIDGE in FHEM, welche FHEM-Geräte den entsprechenden MQTT-Topics zuordnet
Steuerung von Lampen
In gBridge muss ein neues Gerät mit den Traits "On and Off" und "Brightness" erstellt werden. Steuern lassen sich mit der nachfolgenden Konfiguration unter anderem Hue- und Tradfri-Geräte:
define {devicename}.gBridge MQTT_BRIDGE {devicename} attr {devicename}.gBridge IODev Connections.gBridge attr {devicename}.gBridge publishReading_onoff gBridge/u{userid}/d{deviceid}/onoff/set attr {devicename}.gBridge publishReading_pct gBridge/u{userid}/d{deviceid}/brightness/set attr {devicename}.gBridge stateFormat transmission-state attr {devicename}.gBridge subscribeSet_gstate {if($message eq "0"){fhem("set $device off")}else{ fhem("set $device on")};; 0} gBridge/u{userid}/d{deviceid}/onoff attr {devicename}.gBridge subscribeSet_pct gBridge/u{userid}/d{deviceid}/brightness
Bezahlmodell
gBridge.io ist ein Cloudservice, der nur bis zu gewissen Nutzungsgrenzen gratis nutzbar ist. Dabei handelt es sich aber um einen auf Skalierbarkeit ausgelegten Dienst mit klarer und zukunftssicherer Preisgestaltung.