EDVler-Blog.de: IT in der Praxis

Arduino simple Chart (Diagramm) zur Visualisierung von anlogen Messerwerten und PIN Stati mit freier Wahl der Zeitspanne

In meine Projekten entstehen oft Daten welche grafisch gut ausgewertet werden können.
Um dies möglichst einfach zu gestalten habe ich Arduino simple Charts geschaffen.

Für die Diagram-Darstellung habe ich HighStock Charts verwendet. Weitere Informationen dazu gibts auf http://www.highcharts.com.

Logging der Temperaturwerte meiner Heizung

Logging der Temperaturwerte meiner Heizung

Kurz ein Überblick über die aktuelle Datenmenge:
Es wird ein Wert jede Minute geloggt für 25 Sensoren unterschiedlichster Art.

  • Logging der Daten seit 09.10.2012.
  • Stand 13.04.2013 enthält die Datenbank 5.7 Millionen Datenstäze
  • Die Datenbank verbraucht etwa 450MB Speicherplatz

Als Hardware dient ein alter PC mit einem Dualcore 1,6 GHz Prozessor und 1024MB RAM.

Welche Möglichkeiten bietet Arduino simple chart:
– Darstellung mehrerer Graphen in einem Diagram
– Es können im Diagram nur bestimmte Graphen aktiviert werden über die Legende (sehr gut für vergleiche)
– Auswahlbuttons für vordefinierte Zeitspannen
– Freie Auswahl des Zeitfenster per Maus im Diagram
Zeitstrahl welcher immer sichtbar ist einen Überblick über den gesamten Datenbestand ermöglicht
Popup welcher die aktuellen Werte unterhalb der Maus zeigt
– Durch Verwendung verschiedener Tabellen für verschiedene Zeitspannen können Werte über Jahre jede Minute geloggt werden und das Diagram ist trotzdem performant.
– Abruf von Minutenwerten auch Jahre später!
Erweitern des Diagrams um weitere Werte oder sogar um weiter Arduinos jederzeit möglich
– Der Arduino ist passiv. Vom Arduino muss nur eine „HTTP Seite“ mit einem JSON bereitgestellt werden


Eine Überblick über aktuell verfügbare Chart Typen:

Beispiel eines Area Diagramms mit Arduino simple Charts

Beispiel eines Area Diagramms mit Arduino simple Charts

Beispiel für ein Arduino simple Charts Column Diagramm

Beispiel für ein Arduino simple Charts Column Diagramm

Beispiel für ein einfaches Line Digramm mit Arduino simple Charts

Beispiel für ein einfaches Line Digramm mit Arduino simple Charts

Wie funktionierts?
Das Setup ist zwar etwas umfangreicher, jedoch ist das hinzufügen von neuen Grpahen für einen Messwert dann mit keiner Programierarbeit verbunden! Für einen neuen Graphen oder gar einen neuen Arduino muss nur noch ein einer Task im Taskplaner oder in crontab angelegt werden. Das Chart wird automatisch um den neuen Graphen erweitert. In der Datenbank muss nichts per Hand hinzugefügt werden. Kein Quellcode muss angepasst werden.

Hier ein Schaubild des Aufbaus:

Überblick über die zusammenhänge der einzelnen Scripte

Überblick über die zusammenhänge der einzelnen Scripte. Klick zum vergrößern.

Der Ablauf in Worte beschrieben:
– Jeder Arduino, stellt eine HTTP Seite bereit, welche nur einen JSON String liefer bei Aufruf. In diesem JSON String sind beliebig viele Messwerte vorhanden.
– Auf dem Webserver läuft ein Task (json_from_arduino.php) welcher in einer beliebigen Zeitspanne (z.B. minütlich) den JSON String von dem Arduio abruft.
– Der JSON String wird geparst und in die Datenbank geschrieben (auch json_from_arduino.php).
– Wird nun ein Chart im Browser geöffnet sendet die Chart PHP Datei (z.B. chart_spline.php) eine Anfrage mit dem Zeitraum an die Datei db_access.php.
– Die db_access.php holt die Daten aus der Datenbank und stellt diese aufbereitet dem aufrufenden Chart PHP zur Verfügung.
– Das Chart wird dargestellt.

– Zusätzlich verdichtet die Datei abstract_DataStore.php Datei in weitere Tabellen um eine performante Darstellung zu erreichen

 

Das Setup ist im folgenden Beitrag beschrieben: http://www.edvler-blog.de/arduino-simple-chart-setup-howto-english/

You can follow any responses to this entry through the RSS 2.0 feed.