Visualization of measurement data with ThingSpeak

By | March 9, 2020

ThingSpeak offers a very easy way to create visualizations and even integrate them into your own homepage. This is done using widgets that are called with a line of code.

Part 1: Creating Simple Visualizations in ThingSpeak

This article describes what standard display types are available in ThingSpeak and how easy it is to create these widgets.

Numeric Display and Gauge
Line Chart and Column Chart

Part 2: Creating Individual Diagrams with MATLAB Visualization

A second article provides some examples of individual plots.

Two individual visualizations

Part 3: Embedding ThingSpeak Widgets in Jimdo-Homepage

Finally, you can read in a third article how easy it is to integrate individual display elements into your Jimdo homepage.

On my honey page you can find some examples how this can look like.


I would be happy if further interesting analyses could be shared by others here.

Translated 19.10.2019 by JK

Author: Johannes

Familienvater, Ehemann und Ingenieur, in meiner Freizeit Hausmeister, Musiker und natürlich Imker. Wohnhaft in Heilbronn.

12 thoughts on “Visualization of measurement data with ThingSpeak

  1. Thomas Kuhn

    Ich habe einige Umrechnungen von meterologischen Messdaten auf andere Parameter in MATLAB umgesetzt:

    % Channel ID of Testscale
    readChannelID = xxxxxxxx;
    %Fields:
    % 1: Interne Temperatur
    % 2: Temperatur
    % 3: Luftfeuchte
    % 4: Luftdruck
    % 5: Waage 1
    % 6: HX711 Waage 1
    % 7: Hive Temp Sensor
    % 8: Supply Voltage
    % Elevation of hive
    e = 175;
    %
    %
    data = thingSpeakRead(readChannelID);

    T = data(2)
    rH = data(3)
    p = data(4)
    %****************************************
    % Luftdruck auf Meereshöhe umgerechnet (“reduziert”
    %
    pred = SeaLevelReduction (T, rH , e, p)
    %**************************************
    % Partialdruck des Wasserdampfs in hPa
    ppartw = H2Oppart ( T , rH );
    %
    %**************************************
    %
    % Wassergehalt in g/m³
    absWass = CH2O (T, rH)
    %
    %**************************************
    %
    % Taupunkttemperatur in °C
    taupunkt = DewPoint ( T, ppartw)
    %
    %**************************************
    %
    % partial pressure of water vapor
    function wppart = H2Oppart ( T , rH )
    wppart = rH /100 * H2Opsat (T);
    end
    % dew point iteration
    function dwp = DewPoint ( T, ppartw)
    td = T;
    while (H2Opsat (td) >= ppartw)
    td = td – 0.01 ;
    end
    dwp = td;
    end
    %
    %**************************************
    %
    % absolute water vapor concentration
    function Mass_conc_H2O = CH2O (T, rH)
    % Universal gas constant
    R = 8.31446261815324;
    % molar mass of water
    M = 18.01528;
    % ratio for formula
    MdivR = M/R;
    if (T50)
    Mass_conc_H2O = NaN;
    end
    end
    %
    %***************************************
    %
    % saturation water vapor pressure
    function satvappress = H2Opsat (T)
    %The Computation of Saturation Vapor Pressure
    %Paul R. Lowe, et al
    %Environmental Prediction Research Facility (Navy)
    %Monterey, California
    %March 1974
    %https://apps.dtic.mil/sti/citations/AD0778316

    % over water Coefficients
    a0 = 6.107799961;
    a1 = 4.436518521E-1;
    a2 = 1.428945805E-2;
    a3 = 2.650648471E-4;
    a4 = 3.031240396E-6;
    a5 = 2.034080948E-8;
    a6 = 6.136820929E-11;
    % over ice Coefficients
    b0 = 6.109177956;
    b1 = 5.034698970E-1;
    b2 = 1.886013408E-2;
    b3 = 4.176223716E-4;
    b4 = 5.824720280E-6;
    b5 = 4.838803174E-8;
    b6 = 1.838826904E-10;
    %
    sat_vap_press_w =a0 + T*(a1 + T*(a2 + T*(a3 + T*(a4 + T*(a5 + T*a6)))));
    sat_vap_press_i =b0 + T*(b1 + T*(b2 + T*(b3 + T*(b4 + T*(b5 + T*b6)))));
    satvappress = min(sat_vap_press_w, sat_vap_press_i);
    end
    %
    %***************************************************
    %
    function result = SeaLevelReduction (T, rH , e, p)
    %”Atmospheric pressure at a place, reduced to MSL using
    %the actual temperature at the time of observation as
    %the mean temperature.”
    %
    %calculation per
    %
    %DWD, Vorschriften und Betriebsunterlagen 3, BEOBACHTERHANDBUCH, Page 6-11
    %VuB 3 BHB – Dezember 2015
    g = 9.80665; % gravitation constant standard value
    R = 287.05; % gas constant dry air (= R/M)
    alpha = 0.0065; % vertical temperature gradient
    Ch = 0.12; % factor for E
    h = e; % adapt to local value
    ThC = T; % Temperature in °C measured value
    Hum = rH; % Humidity in % r.H. measured value
    ph = p; % in hPa measures value
    Pp = H2Oppart(ThC, Hum); % partial water vapor pressure
    ThK = ThC + 273.15; % Temperature in K
    x = g/(R*(ThK + Ch*Pp+alpha*h/2))*h; % calculation of exponent
    P0 = ph * exp(x);
    result=P0;
    end

    Ich habe diese mit Daten von meiner Waage die sich grad im Test (ohne Bienen) befindet getestet.
    Um das zu nutzen, muss man noch die Zuordnung der Eingangsdaten (data()) vornehmen sowie die wahre Höhe (Elevation) der Waage eintragen. Die Formel gilt nicht im Hochgebirge.

    Reply
    1. Thomas Kuhn

      Ich sehe grad dass das Kopieren einiges verschluckt hat……

      Reply
  2. Ronald Wenzel

    Hallo, ich versuche mich auch gerade an einer Waage, Temperatur, Luft usw. Messeinrichtung.
    Ich verwende eine Raspberry Pi 2. Gilt für den auch die aktuelle download Datei 1.0?
    Irgendwie sah es erst gut aus, aber er kommt nicht zum Abschluss. Er loggt bei HoneyPi ein, aber irgendwie geht der WiFi nicht und deshalb bekommt ThinkSpeak keine Daten.
    Im Moment bin ich ratlos.
    Habt ihr eine Idee?
    Ich hatte zum Test auch ein festes Netz angelegt, ändert aber auch nichts.

    Reply
    1. Javan

      Wenn du im Wartungsmodus im Reiter Protokoll nachliest, siehst du warum keine Daten übertragen werden. Schau dort mal.
      Ventuell ist einfach kein Übertragungsintervall eingestellt.
      Grüße

      Reply
  3. Hermann Mettler

    Vielen Dank für die drei Kapitel über die Darstellung von Daten.
    Ich möchte etwas ähnliches im technischen Bereich machen.
    Kann man die Daten, die man auf eine Homepage einbetten will auch von einem privaten Kanal beziehen.
    Herzlichen Dank für einen kurzen Kommentar.

    Beste Grüsse aus der Schweiz

    Reply
    1. Javan

      – Beim Nutzen der ThingSpeak API: Wenn der Channel “privat” ist, muss man beim Aufruf der REST-API von ThingSpeak noch einen Authentifizierungs Key mitschicken.
      – Einbetten der Visualisierungen bspw. als iFrame: Nur wer den Channel auf “public” stellt, dann ist ein öffentliches Einbinden möglich.

      Reply
  4. Friedrich

    Hallo Johannes,
    sehr schöne Visualisierungen hast Du da erstellt. Habe gleich ein paar davon auf meinem Thingspeak-Channel https://thingspeak.com/channels/624932 übernommen.
    Ergänzen mit weiteren Visualisierungen ist ja fast nicht möglich…Du hast ja alle interessante Visualisierungen quasi bereits hier veröffentlicht ;-).
    Übrigens konnte ich den Code für die Visu zur Darstellung der “täglichen Gewichtsveränderung” hier nicht finden. Würdest Du den Code dazu auch veröffentlichen? Die Darstellung finde ich nämlich toll.

    Viele Grüsse
    Friedrich

    Reply
    1. Johannes Post author

      Hallo Friedrich, danke für die Blumen 🙂

      Habe den Artikel mit dem Matlab-Code ergänzt.

      Sonnige Grüße aus Heilbronn

      Johannes

      Reply
      1. Friedrich

        Vielen Dank Johannes!

        Funktioniert und sieht toll aus 🙂
        Mein Vorzeigevolk auf der Waage spielt auch perfekt mit.
        Prima, dass Du deine Arbeit hier den anderen zur Verfügung stellst!

        Viele Grüsse
        Friedrich

        Reply
        1. Johannes Post author

          Hallo Friedrich,

          den Dank gebe ich gerne an Javan und das Honey-Pi Team weiter. Sie haben dieses großartige Projekt entwickelt und der Imkerschaft zur Verfügung gestellt! Das steckt an, da lege ich gerne meine 2 ct noch mit dazu 🙂

          Sonnige Grüße aus Heilbronn

          Johannes

          Reply

Leave a Reply

Your email address will not be published. Required fields are marked *