GBridge Einbindung

Aus FHEMWiki
Wechseln zu: Navigation, Suche

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

gBridge auswählen

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:

  1. 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.
  2. 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.

Weiterführende Links