Internet der Dinge

Die IoT-Plattform ThingSpeak im Praxistest

In diesem Beitrag geht es um die IoT-Plattform ThingSpeak, die wir anhand des im Folgenden beschriebenen Szenarios einem Praxistest unterzogen haben.

Ein Strommesser, den ein anderes Team auf Basis eines Raspberry Pi umsetzte, schickt Daten zum aktuellen Stromverbrauch der angeschlossenen Geräte an ThingSpeak. Die IoT-Plattform soll diese Daten visualisieren und einen Post auf Twitter absetzen, sobald ein bestimmter Grenzwert überschritten wird.

SAF workshop
6 Minuten Lesezeit

  • ThingSpeak ist eine IoT-Analyseplattform, mit der Datenströme in Echtzeit aggregiert, visualisiert und analysiert werden können.

  • Neben der öffentlich zugänglichen Variante im Web kann ThingSpeak als Open Source-Anwendung auch auf dem eigenen Server gehostet werden.

  • Die Apps von ThingSpeak (bspw. zusätzliche Visualisierungen oder ein Twitter-Connector) stehen in der Open Source-Variante allerdings nicht zur Verfügung.

Benutzung

Die Benutzung ist im Allgemeinen sehr einfach. Man muss zunächst lediglich einen neuen Channel über die Web-Oberfläche oder per API anlegen. Anschließend kann man seine Daten mittels simpler HTTP-Requests an den Channel senden:

Unter Angabe des Write-API-Keys des gewünschten Channels können maximal acht numerische und alphanumerische Werte in den Feldern 1 bis 8 an den Channel gesendet werden. Zusätzlich besteht auch die Möglichkeit einen Ort in Form von Breiten-, Längengrad und Höhe (Parameter lat, long und elevation) und eine Statusnachricht (Parameter status) mit anzugeben.

Diese Daten werden im Channel gespeichert und können in ThingSpeak oder auf externen Webseiten visualisiert werden. Das Abrufen von Daten aus einem Channel erfolgt mit unterschiedlichen Optionen. So kann u.a. der ganze (maximal 8000 Einträge) Channel-Feed, nur der letzte Eintrag, ein spezieller Eintrag oder auch alle Werte eines bestimmten Feldes abgerufen werden. ThingSpeak kann die Antwort in reinem Text, JSON oder XML senden.
 

Gesamter Channel-Feeds als JSON:
 
Letzter Eintrag in einem Channel-Feeds als XML:
 
Alle Werte eines Feldes in einem Channel-Feed als Text:

Visualisierung

ThingSpeak bietet von Haus aus die Möglichkeit, Daten zu visualisieren. Jeder Channel hat dazu eine öffentliche und eine private Ansicht, die unterschiedlich konfiguriert werden können. Die öffentliche Ansicht eines Channels kann auch komplett deaktiviert werden.
 

ThingSpeak offers several visualisation options: Data from the channels can be displayed field by field in separate diagrams

Außerdem ist es möglich, JavaScript-Plugins für erweiterte Visualisierungen zu implementieren und die Diagramme auf externen Webseiten in einem iFrame einzubetten.

ThingSpeak Apps

Neben der eigentlichen Kernfunktionalität, den bereits erwähnten Channels, die die eigentlichen Daten enthalten, stellt ThingSpeak fünf so genannte Apps zur Verfügung:

  • React: React erlaubt es, auf bestimmte Nachrichten in einem Channel zu reagieren. Hierzu müssen über die Web-Oberfläche zunächst einmal der Channel und das Datenfeld ausgewählt werden, die überwacht werden sollen. Je nach Typ des Datenfeldes stehen für die Überprüfung unterschiedliche Operatoren zur Verfügung, wie bspw. contains, starts with, ends with, is equal to, is greater than, is less than, etc. Nach Festlegung der Prüfhäufigkeit (beim Einfügen neuer Daten, alle 10, 30 oder 60 Minuten), bleibt nur noch, die gewünschte Aktion einzustellen. Hier kommen dann die beiden anderen Apps ThingHTTP und ThingTweet ins Spiel, da diese bei positiver Prüfung eines Datensatzes ausgeführt werden können. Im Falle von ThingTweet kann im Text des Statusupdates der geprüfte Wert durch den Platzhalter %%trigger%% eingefügt werden.
     
  • ThingHTTP: Diese App ermöglicht es ThingSpeak auf externe APIs im Web zuzugreifen. Es werden dabei die HTTP-Verben GET, POST, PUT und DELETE unterstützt, sowie u.a. Basic Authentication, Verschlüsselung über SSL, HTTP 1.0 und 1.1, sowie beliebige Content Types und Headers. ThingHTTP kann zum einen, wie schon erwähnt, als Aktion in einem React verwendet werden. Zum anderen ermöglicht sie es aber auch „angeschlossen“ Geräten oder Sensoren, Daten über ThingSpeak an externe APIs zu senden oder von ihnen abzufragen. Das Senden von Daten kann beispielhaft durch den folgenden Request erfolgen: 
     

  • ThingTweet: Wie der Name schon vermuten lässt, kann man mit ThingTweet Statusupdates auf Twitter posten. Für die Konfiguration dieser App muss lediglich ein Twitter-Konto inklusive der dazugehörigen Zugangsdaten hinterlegt werden. Anschließend kann die so erstellte ThingTweet-Instanz als Aktion in einem React verwendet oder die Nachricht auch direkt an sie gesendet werden: 
     

  • TalkBack: Ein TalkBack kann dazu verwendet werden, den „angeschlossenen“ Geräten Anweisungen zu geben, indem Kommandos an eine sogenannte TalkBack-Queue in ThingSpeak geschickt werden. Die Geräte können diese Kommandos dann abrufen und eine entsprechende Aktion durchführen. Solange man einem neuen Kommando keine explizite Position gibt, erfolgt die Abarbeitung nach dem FIFO-Prinzip, d.h. die Kommandos, die als erstes in die Queue kommen, werden beim Abrufen auch zuerst ausgeliefert. Wird eine Position übergeben, so wird das neue Kommando an diese Stelle in der Queue eingefügt und alle nachfolgenden Kommandos werden um eine Position nach hinten verschoben. 
     

  • TweetControl: Mittels TweetControl kann ThingSpeak auf Twitter-Updates reagieren. Dazu lauscht die Anwendung unter Verwendung der Twitter Streaming API auf neue Statusupdates eines Benutzers und/oder eines Hashtags. Wird ein neuer Tweet mit dem konfigurierten Schlagwort erkannt, kann eine ThingHTTP-Instanz ausgeführt werden.
     

Hosting oder Open Source?

Es gibt zwei verschiedene Varianten ThingSpeak einzusetzen. Zum einen gibt es eine gehostete Variante, die unter https://thingspeak.com/ zu erreichen ist. Hier muss man sich nur anmelden, einen Channel erstellen und kann sofort loslegen.
Zum anderen kann man ThingSpeak auch in einer Open Source-Variante selbst betreiben. In diesem Fall kann der zugehörige Code aus einem GitHub-Repository heruntergeladen werden. Dort ist auch eine entsprechende Installationsanleitung für Linux (Ubuntu) zu finden.

Leider haben aber beide Varianten ihre jeweiligen Nachteile.

So hat die gehostete Variante, um frei und kostenlos zugänglich zu sein, ein Limit von einer Message pro 15 Sekunden. D.h. ein Gerät, das seine Daten an einen ThingSpeak-Channel senden möchte, kann dies nur alle 15 Sekunden tun. Diese Einschränkung kann beispielsweise zur Folge haben, dass Mikrocontroller oder Low Level-Devices Daten über diesen Zeitraum sammeln und aggregieren müssen, was natürlich Rechenleistung und Speicher beansprucht und damit zu erhöhtem Stromverbrauch führen kann.


Die Open Source-Variante hat dagegen die Einschränkung, dass die Apps vollständig fehlen, was leider auf den offiziellen Webseiten oder im GitHub-Repository nicht erwähnt wird. Dies bedeutet, dass man die Daten von ThingSpeak aus z.B. nicht an eine andere Plattform weiterleiten oder weitere Daten aus dem Internet abrufen kann. Man ist demnach vollständig auf die Channel-Funktionalität und die Visualisierungsmöglichkeiten von ThingSpeak eingeschränkt. Natürlich besteht an dieser Stelle aber immer noch die Möglichkeit, die Daten von einer anderen Anwendung aus abzurufen und sie dort weiterzuverarbeiten, um komplexere Szenarien abzudecken.
 

ThingSpeak: „Pros und Cons“

Bei ThingSpeak handelt es sich um eine freie und einfach zu benutzende IoT-Plattform, die gut für schnelles Prototyping geeignet ist. Für einfache Szenarien bietet ThingSpeak darüber hinaus bereits gute Datenvisualisierungsmöglichkeiten. Im Praxiseinsatz können sich aber schnell die nur acht Datenfelder umfassenden Channels und die nur sehr eingeschränkten Datenverarbeitungs- und Datenweiterleitungsoptionen als zu große Einschränkungen herausstellen.
 

Autor: Gerd Pühl