Wenn die Daten des Stromzählers mit dem WattWächter Wi-Fi/USB ausgelesen werden, kommt natürlich der Wunsch auf, diese Daten zu speichern und zu Visualisieren. Nicht jeder betreibt ein Hausautomations-sysytem, was dies übernehmen kann. In dem Fall besteht die Möglichkeit, die Daten in die Cloud von ThingSpeak hochzuladen und dort zu verarbeiten. Nachfolgend ist die nötige Einrichtung in 3 Schritten beschrieben. Weitere Möglichkeiten die Daten zu verarbeiten und darzustellen sind unter den Schritten 4 und 5 zu finden:
- Anmeldung bei ThingSpeak
- Einen Kanal anlegen
- Das Skript anpassen
- Balkendiagramme erzeugen
- Daten exportieren
- App ThingView
Anmeldung bei Thingspeak
Um einen neuen Account bei ThingSpeak anzulegen öffnen sie die Seite www.ThingSpeak.com und klicken Sie auf die Schaltfläche „Get Started For Free“

Auf der nächsten Seite muss über den Link „No Account? Create one“ ein neuer Account angelegt werden. Anschließend sind die persönlichen Daten einzutragen und mit „Continue“ zu bestätigen.


Falls der Hinweis „Personal Email Detected“ erscheint. Den Haken bei „Use this email for my MathWorks Account“ setzen und erneut mit „Continue“ bestätigen.

Danach wird eine Verfikations-E-Mail an die angegebene E-Mail-Adresse verschickt. In dieser E-Mail muss die Schaltfläche „Verify email“ angeklickt werden, um die Adresse zu verifizieren. Anschließend kann durch einen Klick auf „Continue“ ein Passwort vergeben werden. Dieses muss erneut durch einen Klick auf „Continue“ bestätigt werden.


Nun erscheint die Seite „Sign-up successfull“ und nach einem Klick auf „OK“ landet man auf der Übersichtsseite von ThingSpeak.
Einen neuen Kanal anlegen
Um einen neuen Kanal anzulegen ist in der Übersichtsseite von ThingSpeak die Schaltfläche „New Channel“ anzuklicken.

Hier kann nun ein Name für den Kanal und optional eine Beschreibung vergeben werden. In jedem Kanal können bis zu acht Felder definiert werden. Im nachfolgenden Beispiel wurden vier Felder für den Bezug, die Leistung, die Einspeisung und den Strom definiert. Mit einem Klick auf „Save Channel“ werden die Eingaben gespeichert.

Es öffnet sich die Übersicht des Kanals, in der bereits die Trends für den Kanal angelegt wurden.

Skript anpassen
Nun muss das Skipt angepasst werden, damit die Daten in die Cloud von ThingSpeak übertragen werden. Dazu im Menü „Tools“ => „Edit Script“ aufrufen. Im folgenden Beispiel wird ein Skript für den Hager EHZ361-Zähler verwendet.

Hier muss folgender Code-Block zwischen „->sensor53r“ und „>M 1“ eingefügt werden:
>S
if upsecs%30==0
then
=>WebSend [api.thingspeak.com] /update.json?api_key=*WriteKey*&field1=%sml[1]%&field2=%sml[2]%&field3=%sml[3]%&field4=%sml[4]%
endif
Im Code-Block sind einige Angaben farblich hervorgehoben:
- 30 – Hiermit wird festgelegt, wie oft die Werte an ThingSpeak übertragen werden. Der Wert ist in Sekunden anzugeben.
Achtung: Für den kostenlosen Account bei ThingSpeak darf dieser Wert nicht kürzer als 15 Sekunden sein. - *WriteKey* – Hier muss der Schlüssel eingetragen werden, der es einem erlaubt, in den Kanal schreiben zu können. Diesen findet man in ThingSpeak unter „API Keys“
- field1-X – Entspricht den Feldern des Kanals die weiter oben angelegt wurden
- sml[1-X] – Entspricht den Zeilen des Dekodierungsteils im Skript
Die Felder im Kanal und die Zeilen des Skripts müssen nun richtig zugeordnet werden.
- Bezug: Kanal = field1, Skript-Zeile = sml[1]
- Leistung: Kanal = field2, Skript-Zeile = sml[5]
- Spannung: Kanal = field3, Skript-Zeile = sml[3]
- Strom: Kanal = field4, Skript-Zeile = sml[4]
Damit sieht der angepasste Code-Block für dieses Beispiel wie folgt aus (Bitte so nicht verwenden! Sie benötigen einen anderen API-Key und vermutlich eine andere Zuordnung):
>S
if upsecs%30==0
then
=>WebSend [api.thingspeak.com] /update.json?api_key=86OBJRNKSXA9LSOG&field1=%sml[1]%&field2=%sml[5]%&field3=%sml[3]%&field4=%sml[4]%
endif
Das komplette Skript stellt sich in Tasmota dann so dar:

In der Konsole (Hauptmenü => Tools => Console) lässt sich nun beobachten, wie alle 30 Sekunden ein Datensatz an ThingSpeak übertragen wird:

Diese Daten werden in ThingSpeak nach einem Klick auf „Private View“ als Kurven dargestellt:

Balkendiagramme erzeugen
Möchte man Balkengrafiken mit dem stündlichen Verbrauch der letzten 24 Stunden oder mit dem täglichen Verbrauch der letzten 10 Tage erzeugen, so lässt sich dies mit der integrierten Matlab-Funktionalität realisieren.

Um dies zu erzeugen nutzt man im erzeugten Kanal die Schaltfläche „MATLAB Visualization“

Im nachfolgenden Dialog einfach die Standardeinstellung „Custom“ belassen und auf „Create“ klicken

Im nächsten Dialog muss ein Name für das Modul vergeben und der entsprechende Matlab-Code eingefügt werden. Die entsprechenden Matlab-Codes für Stunden- und Tagescharts sind unten aufgeführt. Im Code müssen in den ersten drei Zeilen die „channelID“, die „FieldID“ und der „readAPIKey“ angegeben werden. Die zugehörigen Daten werden in der Regel im rechten Bildbereich unter „Most recent channels“ schon vorgeschlagen. Die Field-ID muss sich auf das Feld beziehen, dass die bezogenen kWh speichert (im angegebenen Beispiel ist das Feld 1: Bezug [kWh]

Der jeweilige MATLAB-Code lässt sich durch einen Klick auf eines der nachfolgenden kleinen schwarzen Dreiecke einblenden.
MATLAB-Code für Stündliche Balken
% ThingSpeak Kanal-Parameter
channelID = DEINE_CHANNELID; % Ersetze mit deiner Channel-ID
fieldID = 1; % Das Feld mit den Stromverbrauchsdaten
readAPIKey = 'DEIN_API_KEY'; % Ersetze mit Deinem API Key
noHours = 24; % Anzahl der Stunden, die angezeigt werden sollen
% Aktuelle Zeit (MESZ) auf die volle Stunde runden
currentTime = datetime('now', 'TimeZone', 'Europe/Berlin');
currentTime = dateshift(currentTime, 'start', 'hour'); % Aktuelle volle Stunde
startTime = currentTime - hours(noHours); % Exakt vor x Stunden
% Arrays für Ergebnisse
hourlyTimestamps = [];
hourlyConsumption = [];
% Berechnung für jede volle Stunde
for h = 1:noHours
hourStart = startTime + hours(h); % Start der Stunde
hourEnd = hourStart + hours(1); % Ende der Stunde (nächste volle Stunde)
% Falls es die laufende Stunde ist, nur bis jetzt berechnen
if hourEnd > datetime('now', 'TimeZone', 'Europe/Berlin')
hourEnd = datetime('now', 'TimeZone', 'Europe/Berlin');
end
% ThingSpeak-Daten abrufen
data = thingSpeakRead(channelID, 'Fields', fieldID, 'DateRange', [hourStart, hourEnd], ...
'ReadKey', readAPIKey, 'OutputFormat', 'table');
% Verbrauch berechnen
if ~isempty(data)
firstValue = data.(2)(1); % Erster Wert der Stunde
lastValue = data.(2)(end); % Letzter Wert der Stunde
consumption = lastValue - firstValue;
else
consumption = 0; % Keine Daten → Verbrauch = 0
end
% Ergebnisse speichern
hourlyTimestamps = [hourlyTimestamps; hourStart];
hourlyConsumption = [hourlyConsumption; consumption];
end
% **Balkendiagramm für stündlichen Verbrauch**
figure;
bar(hourlyTimestamps, hourlyConsumption, 'b');
xlabel('Zeit (MESZ)');
ylabel('Verbrauch (kWh)');
title(sprintf('Stromverbrauch der letzten %d Stunden', noHours));
grid on;
datetick('x', 'HH:MM', 'keeplimits'); % X-Achse auf Stunden setzen
MATLAB-Code für tägliche Balken
% ThingSpeak Kanal-Parameter
channelID = DEINE_CHANNELID; % Ersetze mit deiner Channel-ID
fieldID = 1; % Das Feld mit den Stromverbrauchsdaten
readAPIKey = 'DEIN_API_KEY'; % Ersetze mit Deinem API Key
noDays = 10; % Anzahl Tage, die angezeigt werden sollen
% Aktuelle Zeit (MESZ) auf Mitternacht runden
currentTime = datetime('now', 'TimeZone', 'Europe/Berlin');
currentTime = dateshift(currentTime, 'start', 'day'); % Aktuelle Mitternacht
startTime = currentTime - days(noDays); % Exakt vor x Tagen Mitternacht
% Arrays für Ergebnisse
dailyTimestamps = [];
dailyConsumption = [];
% Berechnung für jeden der letzten x Tage
for d = 1:noDays
dayStart = startTime + days(d); % Start des Tages (Mitternacht)
dayEnd = dayStart + days(1); % Ende des Tages (nächste Mitternacht)
% Falls es der aktuelle Tag ist, nur bis jetzt berechnen
if dayEnd > datetime('now', 'TimeZone', 'Europe/Berlin')
dayEnd = datetime('now', 'TimeZone', 'Europe/Berlin');
end
% ThingSpeak-Daten abrufen
data = thingSpeakRead(channelID, 'Fields', fieldID, 'DateRange', [dayStart, dayEnd], ...
'ReadKey', readAPIKey, 'OutputFormat', 'table');
% Verbrauch berechnen
if ~isempty(data)
firstValue = data.(2)(1); % Erster Wert des Tages
lastValue = data.(2)(end); % Letzter Wert des Tages
consumption = lastValue - firstValue;
else
consumption = 0; % Keine Daten → Verbrauch = 0
end
% Ergebnisse speichern
dailyTimestamps = [dailyTimestamps; dayStart];
dailyConsumption = [dailyConsumption; consumption];
end
% **Balkendiagramm für täglichen Verbrauch**
figure;
bar(dailyTimestamps, dailyConsumption, 'b');
xlabel('Datum (MESZ)');
ylabel('Verbrauch (kWh)');
title(sprintf('Täglicher Stromverbrauch der letzten %d Tage', noDays));
grid on;
datetick('x', 'dd-mmm', 'keeplimits'); % X-Achse auf Datum setzen
Mit einem Klick auf „Save and Run“ kann man prüfen, ob alles geklappt hat und das Ergebnis betrachten

Über die Navigation „Channels“ => „My Channels“ im oberen Bildbereich kommt man zurück zum Kanal

Nach Anwahl des Kanals lässt sich die gerade erzeugte Anzeige dann durch einen Klick auf „Add Visualization“ in die Übersicht aufnehmen.

Durch Anklicken des entsprechenden Charts und einen anschließenden Klick auf „Save“ wird das neue Diagramm in die Übersicht aufgenommen

Das Endergebnis sollte dann wie folgt aussehen

Daten exportieren
Möchte man die Daten, die an ThingSpeak übertragen wurden, exportieren, um sie z.B. in Excel auszuwerten, so ist dies im Bereich „Data Import / Export“ des Kanals möglich. Durch eine Klick auf die Schaltfläche „Download“ im Bereich „Export“, können alle bisher gespeicherten Daten des Kanals als csv-Datei heruntergeladen werden:

App ThingView
Die ThingSpeak-Webseite ist weltweit per Browser aufrufbar. Wer einen einfacheren Zugriff möchte, kann sich z.B. die kostenpflichtige ThingView-App herunterladen.
Auf der Startseite der App lässt sich durch einen Klick auf das „+“ ein neuer Kanal anlegen.

Die nötige Channel ID lässt sich in ThingSpeak direkt unterhalb des Kanalnamens finden. Da es sich standardmäßig um einen privaten Kanal handelt, ist die Auswahl „Public“ zu deaktivieren und der Lese-Schlüssel aus Thingspeak einzutragen. Dieser befindet sich unter „API Keys“ im Bereich „Read API Keys“.


Nach einem Klick auf „Search“ öffnet sich eine neue Seite, in der der Kanal bestätigt werden muss. Dies erfolgt erneut durch einen Klick auf „Save“.
Im nächsten Fenster muss dann noch einmal der Kanal ausgewählt werden.


Nun werden die Trends in der App angezeigt:
