en
de

Die IoT-Plattform ThingSpeak im Praxistest

23 Juli 2014
| |
Lesezeit: 4 Minutes

Internet of Things ist derzeit in aller Munde. Daher drehte sich das diesjährige Zühlke-Camp zu einem großen Teil um diese Thematik. Anhand verschiedener Szenarien haben wir mit IoT-Technologien experimentiert und haben dabei auch unterschiedliche Plattformen untersucht. Schließlich sollte man das Rad nicht immer wieder neu erfinden, sondern bestehende Infrastrukturen und Anwendungen verwenden.

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.

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:

POST https://thingspeak.com/update?key=channelWriteApiKey&field1=value1&field2=value2&...&field8=value8

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:
GET https://api.thingspeak.com/channels/channelId/feeds.json

Letzter Eintrag in einem Channel-Feeds als XML:
GET https://api.thingspeak.com/channels/channelId/feeds/last.xml

Alle Werte eines Feldes in einem Channel-Feed als Text:
GET https://api.thingspeak.com/channels/channelId/entryId

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.

Visualisierungsmöglichkeiten

ThingSpeak bietet mehrere Visualisierungsmöglichkeiten: Daten aus den Channels können Datenfeld für Datenfeld in jeweils einem eigenen Diagramm (u.a. in Balken-, Säulen-, Linienform) dargestellt werden.

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 DELTE 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:
    POST https://thingspeak.com/apps/thinghttp/send_request?api_key=thingHttpApiKey&message=requestBody
  • 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:
    POST https://thingspeak.com/apps/thingtweet/thingTweetId/statuses/update?api_key=thingTweetApiKey&status=twitterMessage
  • 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.
    Abschicken einen neuen Kommandos: 
    POST https://api.thingspeak.com/talkbacks/talkBackId/commands?api_key=talkBackApiKey&command_string=makeCoffee
    
    Abrufen des nächsten Kommandos: 
    GET https://api.thingspeak.com/talkbacks/talkBackId/commands/execute?api_key=talkBackApiKey
  • 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.

 

Ähnliche Beiträge:

Zwei IoT-Plattformen auf dem Prüfstand der Royal Wunderbergs – Beitrag von Pascal Alich.

How Connected Products merge into the Internet of Things – Beitrag von Stefan Grasmann.

Kommentare (1)

[…] zu ThingSpeak ist u.a. im Zühlke Praxistest zu […]

×

Updates

Schreiben Sie sich jetzt ein für unsere zwei-wöchentlichen Updates per E-Mail.

This field is required
This field is required
This field is required

Mich interessiert

Select at least one category
You were signed up successfully.

Erhalten Sie regelmäßige Updates zu neuen Blogartikeln

Jetzt anmelden

Oder möchten Sie eine Projektanfrage mit uns besprechen? Kontakt aufnehmen »