Verteilte Dienste bieten viel Mehrwert
Ein Beispiel verdeutlicht die enormen Möglichkeiten, die uns ein Zusammenspiel verteilter Systeme im Internet bietet. Einfach die Cloud-Dienste nutzen, um vermeindlich komplexe Aufgaben schnell und einfach zu realisieren. Unsere Aufgabe: Wir wollen das IoT-Kit per Alexa-Sprachbefehl fernsteuern und damit die Farbe des Neopixels festlegen. Analog dazu könnte Alexa auch einen digitalen Ausgang schalten (und über ein Relais auch das Garagentor öffnen/schließen, die Waschmaschine oder die Kaffeemaschine steuern). Aber dazu Schritt für Schritt:
IFTTT: Das Schweizer Taschenmesser in der Cloud
Zentrales Element bildet eine Anwendung zur Verknüpfung unterschiedlicher Dienste: IFTTT (If...this…then…that) bietet die Möglichkeit, Geräte und Programme verschiedener Hersteller über einfache Regeln zu koppeln. Von der smarten Kaffemaschine über die Lichtsteuerung, Twitter, Musikdienste und VoIP (Voice over IP) am Smartphone ist so ziemlich alles aus der Konsum-Welt dort versammelt. Einfache App-Services der Form "Wenn ... dann ..." verknüpfen Ereignisse (Trigger) mit Anweisungen (Action). Beispielsweise kann der Eingang einer mail eines bestimmten Absenders (Trigger) dafür sorgen, dass die Wohnzimmerbeleuchtung grün blinkt (Action). Vermeintlich komplexe Programmieraufgaben werden so mit wenigen Kicks gelöst.
MQTT: Das Protokoll der Profis
Eine Cloud-Anwendung mit IFTTT-Anschluss ist der MQTT-Broker von Adafruit. Im Unterschied zum bereits bekannten Thingspeak verwendet MQTT ein sogenanntes Publisher/Subscriber-Prinzip zur Kommunikation. Hier lassen sich Messdaten speichern (Publisher), aber auch Messkanäle (Topics) abonnieren (Subscribe). Im letzteren Fall informiert der Broker alle angemeldeten Geräte automatisch über das Eintreffen eines neuen Messwertes. Der Vorteil liegt auf der Hand: Ein entsprechender IoT-Superblock beim Octopus sorgt dafür, dass wir jede neue Nachricht für einen bestimmten Messkanal (Topic) sofort mitbekommen. Wenn wir im IFTTT den Versand einer Nachricht mit der gewünschten Neopixelfarbe an den MQTT-Broker bei Adafruit in Auftrag geben (Action), schaut dieser in seine Liste der Abonnenten für diesen Kanal nach und leitet die Nachricht dann an alle Interessierten in der Liste weiter. Dazu braucht IFTTT überhaupt nichts von der Existenz des Octopus zu wissen. Ein Broker ist also ein Vermittler für Nachrichten. Hat sich auch der Octopus per Subscribe beim Broker abonniert, so wird jede auf diesem Kanal eintreffende Nachricht vom Broker direkt an den Octopus weitergeleitet. Am Octopus erfolgt die Auswertung des Nachrichteninhalts (Payload) und die entsprechende Änderung der Neopixelfarbe in einem MQTT-Subscribe Superblock.
Alexa
So gerüstet ist es nur eine Kleinigkeit um Alexa ins Spiel zu bringen: Auch Alexa besitzt einen IFTTT-Service. Dazu müssen wir unsere Alexa bei IFTTT registrieren. Dann können wir den IFTTT-Trigger so konfigurieren, dass ein Sprachkomando der Form "Alexa trigger Octopus rot" sofort eine Nachricht mit dem Inhalt "rot" an den Broker sendet.
Fazit: Die Kraft der drei Dienste
Durch geschickte Kombination von Cloud-Diensten gelangen wir ohne großen Programmieraufwand zu einem neuen innovativen Use-Case. Wie wäre es mit dem Bau einer sprachgesteuerten Cocktailmixmaschine? Dieses Studierendenprojekt wird unter 100 Ideen vorgestellt.
Unsere Herausforderung besteht in der Koordination der vielen verschiedenen Plattform-Dienste. Das eigentliche Octopus-Programm ist dagegen erstaunlich minimalistisch. Wir gegen im Folgenden davon aus, dass ein Sprachassistent (hier am Beispiel der Alexa) vorhanden und auf der Plattform des jeweiligen Herstellers registriert ist. Aber auch ohne Alexa lassen sich Teile unseres Beispiels sinnvoll nutzen.
Als nächstes werden wir die Farbinformation über IFTTT durch einen Alexa-Sprachbefehl erzeugen. Dazu sind folgende Schritte nötig:
Wer Spaß an der Verknüpfungsarbeit gefunden hat, kann z.B. einen weiteren MQTT-Feed „temperatur“ anlegen und neben der Neopixelsteuerung auch zyklisch Messdaten an den MQTT-Broker übertragen. In IFTTT sind dann schnell Regeln formuliert, die per VoIP vor Frostgefahr warnen oder Hitzefrei melden. Voraussetzung ist die Installation der IFTTT-App auf dem eigenen Smartphone. Dann ruft der Octopus an und das System liest den konfigurierten Text als Sprachnachricht vor.
Unserem Octopus genügt übrigens ein weiterer IoT-Superblock, um mittels App-Service "Webhooks" auch ohne MQTT-Broker als Vermittler in der IFTTT-Welt mitspielen zu können. Ein entsprechendes Beispiel findet sich in Form der Zimmerpflanzenüberwachung in den Blaupausen im Downloadbereich.
Sie verlassen die offizielle Website der Hochschule Trier