Home > Hausautomatisierung > Temperatur Diagramm erstellen mit Google Charts

Temperatur Diagramm erstellen mit Google Charts

In meinen bisherigen Projekten habe ich für die Visualisierung der Daten bisher immer verschiedene lokale Libraries verwendet mit dem Effekt das diese entweder sehr kompliziert waren oder einfach nicht den Umfang anbieten den ich mir gewünscht habe. Diese Problemstellung hatte ich auch in meinem Temperatur Sensor Projekt.

Endlich habe ich eine passende Lösung für mich gefunden und zwar die Google Chart Tools, diese haben folgende Vorteile:

  • Wir brauchen am Webserver des Raspberry Pi keine Libraries mehr, es reicht PHP und eine Datenbank als Datenquelle
  • Die Formatierung der Daten wird bei den richtigen Datentypen von Google übernommen
  • Es gibt etliche Diagramme, Vorlagen und Beispiele
  • Die Charts sind interaktiv und fast unbegrenzt anpassbar
  • Wir müssen nicht immer einzeln Tages, Wochen, Monats und Jahres Diagramme erstellen

Allerdings sei gesagt das man auch hier Zeit und Entwicklungserfahrung benötigt um die API zu verstehen und das gewünschte Ergebnis zu erzielen. Erwähnt sei natürlich noch die nicht unumstrittene Daten sammelnde Krake Google , es sollte aber jeder für sich selbst entscheiden welche Tools er verwenden. Bei diesen beiden Beispielen werden die Daten NICHT an Google übertragen, die Charts werden in eurem Browser generiert, selbst wenn Daten übertragen werden versichert Google diese direkt nach der Generierung zu löschen und nicht weiter zu verwenden.

Update: Die Methode via Google Charts ist auch recht komplex schaut auch daher am Besten noch das EmonCMS an und entscheidet selbst welche ihr verwenden wollt, alle Methoden benötigen allerdings etwas Wissen rund um die eingesetzten Technologien.

webseite
Ausgabe als normales Liniendiagramm
  webseite2
Ausgabe als Diagram vom Typ AnnotatedTimeLine

Wie funktioniert das ganze?

Wie ich bereits erwähnt habe basieren die Diagramme auf den Google Charts. Wir sammeln auf unserem Raspberry Pi aus der Datenbank die benötigten Werte zusammen, in meinem Fall ist es eine Sqlite Datenbank, bringen Sie in das in der Google API definierte DataTable Format und generieren mit den passenden JavaScript Libraries im Browser (nicht auf dem Server) die Diagramme. Ich habe mich anstelle von JSON für das Data Table Format entschieden da mit diesem eine automatische Skalierung der X-Achse möglich ist.

Der Code zum generieren der Diagramme

Die passenden Informationen zum Setup des Webservers und zur Einrichtung des Perl Scripts zur Datenübermittlung findet ihr in meinem Raspberry Pi Projekt Funksensoren selbst bauen.

Die Dateien könnt ihr auch direkt herunterladen www-sensor.

index.php

Die index.php enthält neben den notwendigen SQL Abfragen und dem Auswahl Dialog den notwendigen Java Script Code zum generieren des Diagramm. Es wird eine Listbox mit möglichen Sensoren angezeigt für welche wir dann ein Diagramm generieren.

functions.php

Das Functions Script enthält wiederverwendbare Funktionen, in meinem Fall die Methoden zur Abfrage der SQL-Lite Datenbank

config.php

Dieses PHP Script definiert globale Variablen wie zum Beispiel den Pfad zur SQLite Datenbank. Der Pfad zur Datenbankdatei muss sicherlich auf eure Umgebung angepasst werden. Der Security Key und die Namensdefinitionen werden im Script add.php verwendet welches als Schnittelle zwischen Sensor und Datenbank fungiert und die Temperaturwerte in die Datenbank einträgt.

 add.php

Dieses Script Bilded die Schnittstelle zwischen der UART Ausgabe der Temperatur Sensoren am Raspberry Pi und dem Webserver bzw. der Datenbank für den Fall das ihr den Webserver und die Datenbank nicht direkt bzw. auf dem selben RasPi speichern möchtet. Gefüttert wird die Schnittstelle von einem Perl Script welches auf der UART Schnittelle alle vom Empfänger übertragenen Temperaturen, Spannungen und Daten zur Luftfeuchtigkeit an dieses Script versendet. Details und das Perl Script findet ihr im ursprünglichen Artikel.

 style.css

Styles für die Seite als extra css

 

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Keine Votes bis jetzt)
Loading...

Über raspberry.tips

3 Kommentare

  1. Hallo,
    zuerst einmal vielen Dank für die tollen Berichte und Tuts auf Deiner Seite.

    Ich bin erst seit wenigen Tagen in die Raspi-Welt (mit dem neuen Raspi 3) eingestiegen. Die hausüblichen Spielereien (Putty, Webserver, VNC-Zugriff) habe ich bereits hinter mir.

    Ich, als Hobbymeteorologe würde jetzt im nächsten Schritt sehr gerne Umweltdaten erheben. Mir geht es hier im ersten Schritt “nur” um folgende Anforderungen:

    1. Messung einer Temperatur *
    2. Messung des Luftdruckes
    3. Langzeitspeicherung der Daten (sprich kein Ringspeicher, lieber mal alle Jahre von der 32 GB Karte des Raspis kopieren)
    4. Anzeige der Messdaten in grafisch ansprechender Art und Weise via Website (Grafischer Verlauf als auch Messwert)

    *Gaaaaaaaaaaaaanz heiß wäre hier, wenn das per Funk, Wlan etc. gehen würde. Damit ich einen Sensor in den Garten hängen kann, einen in den Kühlschrank legen, einen unters Sofa…. Ein Kollege meinte sowas gänge am einfachsten mit einem Arduino esp8266 weil der schon Wlan an Board hat; ich möchte mich aber nicht in noch eine Technik einarbeiten müssen…)

    Du hast auf Deiner Seite inzwischen sehr unterschiedliche Varianten der Anzeige beschrieben. (Emoncms, Via Google, …) Wie empfiehlst Du mir nach heutigem Stand der Kenntnisse die Sache Schritt für Schritt anzugehen (ich habe aktuell noch nicht einmal einen Sensor bestellt!).

    Ich möchte bzw. muss wirklich bei Null beginnen und frage deshalb zu diesem Zeitpunkt nochmal bei Dir nach. Im Endeffekt möchte ich eine Netatmo-Station ohne Spionage bauen ;-)

    Ist folgender Ablauf zu einfach gedacht:

    Jeder Sensor schreibt Werte mit Zeitstempel in eine SQL-Datenbank auf dem Raspi (Abholung mit Cron-Job?) –> Datenbank wird mit einem Visualisierungstool ausgewertet und damit Verlaufsgrafik und aktueller Messwert auf “Website” dargestellt –> Zugang zur Webseite (lokal auf Raspi) von extern via DynDNS auf den Raspi-Webserver und eben diese Seite. Passwort (htaaccess?) oder sowas wäre natürlich noch fein.
    Alternativ die Daten in eine Google-Tabelle schieben und dort dann verwursten (das mache ich aktuell schon mit meinen manuell eingetragenen Wetterdaten).

    Sorry für die wirre Anfrage, Du siehst ich suche ein Ablaufkonzept und die dazupassenden Tuts :-)

    Herzlichen Dank schon einmal,
    Franz

    • @Franz W.

      Hatte einmal was Ähnliches gemacht wie du wobei die Temperatur und Luftfeuchtemesswerte von einem Microcontroller kam den ich in einem Brutschrank zur Steuerung der Temperatur,Luftfeuchte und Wendezieiten nutzte. Dieser hat dann an einen Webserver mit Mysql/PHP diese Daten Zyklisch gesandt (Per Aufruf einer PHP Sete mit GET oder POST Methode). Das ganze wurde dann in eine Datenbank eingetragen und später per Webseite welche die Daten in eine Googlechart gefüttert hat Visualisiert.

      Im Prinzip ist es also so wie du es dir vorstellst möglich, nur das in deinem Fall alles auf dem Raspberry laufen kann.
      Falls man Offline-Charts braucht wäre zb auch noch nvd3 interessant.
      http://nvd3-community.github.io/nvd3/
      Je nach Bedarf kann man verschiedene Charts nutzen zb auch mit Zoom in der timeline(LineWithFocusChart) welche wohl für dich interessant ist.

  2. Ich habe die Files unter Sensor auf meinen Raspi kopiert und die index.php gestartet. Es kommt die Meldung
    “Database missing!”. Ich habe auch keine Daten gespeichert. Wie kann ich ohne grossen Aufwand eine Datenbank generieren um das Projekt zu testen ?
    (apache2, php5 und google chart laufen bei mir)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.