Was ist ThingSpeak?

Bei "ThingSpeak" handelt es sich um eine Open-Source-Anwendung zum Speichern und Abrufen von Daten über das Internet (HTTP-Protokoll). Durch die Verknüpfung zu "Mathworks" ist eine Darstellung der Daten möglich. "ThingSpeak" ist an das "Internet of Things" (Internet der Dinge, kurz IoT) angelehnt, welches als Anwendungsprogrammierschnittstelle (API) dient.

ThingSpeak

Einrichtung von ThingSpeak

Unter dem Link findest du Informationen zum Einrichten eines ThingSpeak-Kontos, sowie über das Erstellen eines "Channels". Die "ThingView-App" wird hier nicht benötigt. Für diesen Teil benötigst du einen "Channel" mit einem "Field". Die jeweilige Bezeichnung ist dir überlassen und für die Programmierung irrelevant.

Programmierung

Für die Verwendung von ThingSpeak benötigst du die Internetverbindung aus dem vorherigen Teil "Grundlagen Internetanbindung". Du kannst den erstellten Code einfach unter einem anderen Namen speichern und für diesen Teil erneut verwenden. 

Für die Verwendung von ThingSpeak wird die Bibliothek "ThingSpeak.h" benötigt, die du über den Bibliotheksverwalter installieren musst. Anschließend kannst du die Bibliothek in den bestehenden Code einbinden. Im Folgendem wird nur der neu hinzugefügte Code kommentiert, damit du ihn vom bestehenden Code unterscheiden kannst.

#include <ThingSpeak.h>   // Bibliothek ThingSpeak.h
#include <WiFi.h> 

Nun benötigst du deine "Channel ID" und den "Write"- und "Read-API-Key". Diese fügst du in die jeweilige Variable ein, damit du später auf deinen "Channel" zugreifen kannst. 

const int CHANNEL_ID = ;                  // Channel ID
const char* CHANNEL_API_WRITE_KEY = "";   // Write API Key
const char* CHANNEL_API_READ_KEY = "";    // Read API Key
const char* NETZWERK = "";           
const char* PASSWORT = ""; 

Nun konfigurierst du den sogenannten "client", welcher in der "setup-Methode" gestartet wird.

WiFiClient client;    // client
void setup() {
  Serial.begin(9600);                   
  WiFi.begin(NETZWERK, PASSWORT);       
  while (WiFi.status() != WL_CONNECTED) 
  {
    
  }
  Serial.println("Verbunden mit IP-Adresse: " + WiFi.localIP().toString()); 

  ThingSpeak.begin(client); // Starten des Clients
}

In der "loop-Funktion" erstellst du nun eine Schleife, die von 0 bis 10 hochzählt. Diese Werte werden einzeln mit den Befehlen "setField()" und "writeFields()" über das Internet an ThingSpeak übermittelt. Die Zahl "1" steht hierbei für das erste "Field" in deinem "Channel". Wenn du mehrere "Fields" verwendest, kannst du hiermit das "Field" bestimmen, in das geschrieben werden soll. Anschließend werden alle neuen Werte mit "writeFields()" gesendet. Die Schleife im Folgendem ist so aufgebaut, dass nach 10 Sekunden der Wert aus ThingSpeak mit dem Befehl "readIntFields()" gelesen wird und auf dem seriellen Monitor ausgegeben wird. Die Zahl "1" steht hierbei erneut für das ausgewählte "Field". Beim Schreiben und Lesen der Daten übergibst du jeweils die "Channel ID" und den jeweiligen "Key".

void loop() {
  for(int i=0; i<=10; i++)
  {
    ThingSpeak.setField(1, i);                                                      // Wert in Feld schreiben
    ThingSpeak.writeFields(CHANNEL_ID, CHANNEL_API_WRITE_KEY);                      // Wert an ThingSpeak senden
    delay(10000);                                                                   // 10 Sekunden warten
    Serial.println(ThingSpeak.readIntField(CHANNEL_ID, 1, CHANNEL_API_READ_KEY));   // Wert auslesen und ausgeben
    delay(10000);                                                                   // 10 Sekunden warten
  }
}

In ThingSpeak solltest du nun in "Field 1" folgenden Verlauf erkennen:

ThingSpeak-Ausgabe

Zuletzt geändert: Mittwoch, 7. Juli 2021, 12:05