Forum: Mikrocontroller und Digitale Elektronik Liniendiagramm aus Messwerten auf dem Raspi?


von Martin (Gast)


Lesenswert?

hallo,

ich habe ein funktionierendes shell-script, das mit alle 2 Sekunden 
Messwerte im JSON-Format liefert ( {"name1":wert1;"name2":wert2;....} )

was ist aus Eurer Sicht der einfachste Weg mit dem RasPi 
(Installationsaufwand, Lernaufwand, ..), um aus diesen Zahlen ein 
LinienDiagramm zu  erzeugen, das sich alle 2 Sekunden 
ändert/aktualisiert? (also z.B. so eine "Fieberkurve! wie der 
Aktienindex)

Jede Idee ist willkommen..

von Harry L. (mysth)


Lesenswert?


von Christopher J. (christopher_j23)


Lesenswert?


von Harte (Gast)


Lesenswert?

1. Gnuplot
2. Gnuplot
3. Gnuplot
4. nix

von Martin (Gast)


Lesenswert?

danke, jetzt hab ich erstmal was zu lesen..

wenn mam bisher weder gnuplot noch python benutzt hat - womit ist man 
schneller am Ziel?

von Jack (Gast)


Lesenswert?

Martin schrieb:
> danke, jetzt hab ich erstmal was zu lesen..
>
> wenn mam bisher weder gnuplot noch python benutzt hat - womit ist man
> schneller am Ziel?

gnuplot

von Bernd K. (prof7bit)


Lesenswert?

Martin schrieb:
> wenn mam bisher weder gnuplot noch python benutzt hat - womit ist man
> schneller am Ziel?

Python.

Du hast gleich eine komfortable und sehr mächtige Scriptsprache dabei 
mit der Du die Daten bei Bedarf vielleicht noch aufbereiten kannst und 
Du kannst auch die ganze Geschichte mit dem automatischen Aktualisieren 
und was sonst noch Benutzerinterface-mäßig ablaufen soll ebenfalls 
bequem damit erschlagen. Python als Werkzeug gehört eh in jeden gut 
sortierten Werkzeugkasten.

Mit Gnuplot alleine kommt man auch schon ziemlich weit aber früher oder 
später kommt der Tag da willst Du noch ein biischen scripten und dann 
ist eh noch zusätzlich ne Scriptsprache fällig.

: Bearbeitet durch User
von Jack (Gast)


Lesenswert?

Bernd K. schrieb:
> Mit Gnuplot alleine kommt man auch schon ziemlich weit aber früher oder
> später kommt der Tag da willst Du noch ein biischen scripten und dann
> ist eh noch zusätzlich ne Scriptsprache fällig.

Dir ist schon aufgefallen, dass er schon eine Skriptsprache am Start 
hat?

Martin schrieb:
> ich habe ein funktionierendes shell-script

Man muss nicht der Ideologie willen für jeden Kleinkram noch python in 
den Eintopf werfen.

von Martin (Gast)


Lesenswert?

danke - alle Beiträge sind sehr hilfreich für mich. In der Tat muss ich 
ja die Werte erst noch aufbereichten für gnuplot. Vielleicth nehme ich 
beides.

von Martin (Gast)


Lesenswert?

Jack schrieb:
> Dir ist schon aufgefallen, dass er schon eine Skriptsprache am Start
> hat?

Naja zur Ehrenrettung: Dier Werte mit ced oder awk aus JSON 
rauszufummeln, fällt mir auch nicht ganz leicht. Da nehme ich gerne eine 
Sprache, wo ich etwas mehr schreiben muss, aber die sich besser liest.

von Axel S. (a-za-z0-9)


Lesenswert?

Martin schrieb:
> was ist aus Eurer Sicht der einfachste Weg

rrdtool

von Ingo D. (ingo2011)


Angehängte Dateien:

Lesenswert?

Axel S. schrieb:
> Martin schrieb:
>> was ist aus Eurer Sicht der einfachste Weg
>
> rrdtool

Hi,

wollte ich auch gerade schreiben. Mein Raspi macht die Temp-Erfassung 
und auf einem alten Cubie werden die Grafiken erzeugt und per nginx 
ausgeliefert.
Für Python gibt es eine rrdtool Library,die kann ein Update auf dir 
rrd-dbs und dann auch die Grafiken erzeugen.
Sh. :
https://oss.oetiker.ch/rrdtool/prog/rrdpython.en.html

Gruß Ingo

von Christopher J. (christopher_j23)


Lesenswert?

Martin schrieb:
> Jack schrieb:
>> Dir ist schon aufgefallen, dass er schon eine Skriptsprache am Start
>> hat?
>
> Naja zur Ehrenrettung: Dier Werte mit ced oder awk aus JSON
> rauszufummeln, fällt mir auch nicht ganz leicht. Da nehme ich gerne eine
> Sprache, wo ich etwas mehr schreiben muss, aber die sich besser liest.

Python mit plotly.js war auch unter dem Gesichtspunkt gedacht, dass du 
deine Daten vielleicht nicht auf einem Bildschirm darstellen willst der 
am Raspberry hängt, sondern die über ein Webinterface anschauen können 
möchtest. Da bietet sich eben plotly.js als leichtgewichtiges 
Plot-Backend an was sowieso im Browser läuft und auf häufige 
Aktualisierungen optimiert ist. Den Webserver gibt es bei Python quasi 
auch inklusive und auch sonst gibt es viele nützliche Bibliotheken, z.B. 
numpy für Array- und Matrizenrechnung bzw. Datenmanipulation im 
Allgemeinen. Wenn du Diagramme für ne Doktorarbeit produzieren willst 
würde ich eher zu Matplotlib oder eben Gnuplot greifen aber das war ja 
nicht gefragt. Als alternative zu plotly.js gibt es noch bokeh aber das 
ist nicht so performant. Kannst du dir aber auch mal anschauen. Ein 
weiteres sehr performantes Plot-Framework ist GR. Das kann wenn man will 
auch passendes Javascript für den Browser generieren und eine Python-Api 
hat es auch.

von Frank (Gast)


Lesenswert?

Ich denke du meinst über einen Webserver?

Ich hab da schon sehr performante Sites gebaut (WebOszi) mit 
Flot/PHP/Ajax.
Die Werte kamen von einem C-Programm vom Raspi.

von Daniel F. (df311)


Lesenswert?

zur darstellung im browser:

https://jquery.com/
mit
http://dmitrybaranovskiy.github.io/raphael/
oder
https://developers.google.com/chart/
verheiraten.
zusammen mit einem script, das die ajax-aufrufe beantwortet sollte das 
ganze in unter 100 zeilen (gesamt) machbar sein

von Bernhard R. (bernhard_r28)


Lesenswert?

So etwas mache ich im Moment auch in der Arbeit. Ich baue mir gerade 
Beschleunigungskurven mit PyPlot zusammen. Die Messdaten habe ich auch 
im JSON Format (.txt Datei). Das einlesen und Parsen sind um die fünf 
Zeilen. Das gane werden denke ich keine 15 Zeilen Code und man bekommt 
noch schicke Zusatzfeatures wie Zoom und Bild-Export...

von Martin (Gast)


Lesenswert?

Bernhard R. schrieb:
> Das einlesen und Parsen sind um die fünf Zeilen. Das gane werden denke
> ich keine 15 Zeilen Code und man bekommt noch schicke Zusatzfeatures wie
> Zoom und Bild-Export...

Die 5 Zeilen würden mich echt interessieren - dann muss ich nicht so 
lange nach der besten Methode zum parsen suchen.. Ich wäre mit 
String-Methoden gestartet..

von Heinz (Gast)


Lesenswert?

Geht es um Temperaturen usw?
Willst DU die Werte auf einem Display am Raspi darstellen? Oder im 
Browser?

Schau Dir mal www.volkszaehler.org an, da hast alles quasi schon fertig

von Bernhard R. (bernhard_r28)


Angehängte Dateien:

Lesenswert?

Martin schrieb:

> Die 5 Zeilen würden mich echt interessieren - dann muss ich nicht so
> lange nach der besten Methode zum parsen suchen.. Ich wäre mit
> String-Methoden gestartet..

Ich habe dir ein Skript für Python 3.x (sind denke ich aber nur die 
"print" Funktionen zu 2.x verschieden) samt passenden Testdaten 
angehängt.
Man müsste auf der Raspel evtl. noch das matplotlib Package für Python 
installieren. Inwieweit das schon über PIP für Python3 funktioniert weiß 
ich allerdings gerade nicht.

: Bearbeitet durch User
von Bernhard R. (bernhard_r28)


Lesenswert?

Bernhard R. schrieb:
> Ich habe dir ein Skript für Python 3.x (sind denke ich aber nur die
> "print" Funktionen zu 2.x verschieden)

Ich habe es unter Python 2.7 nochmal versucht, und es fehlt dem 
Interpreter lediglich die Zeile für das Encoding am Anfang.
1
# -*- coding: utf-8 -*-

Einfach in die erste Zeile kopieren und es läuft.

von Martin (Gast)


Lesenswert?

Bernhard R. schrieb:
> Ich habe dir ein Skript für Python 3.x (sind denke ich aber nur die
> "print" Funktionen zu 2.x verschieden) samt passenden Testdaten
> angehängt.

Danke - das ist super und elegant dazu! ich hätte mich da ewig 
beschäftigt, die Texte 'rauszufummeln..

Jetzt lerne ich python, aber auch gnuplot.

von Markus F. (mfro)


Lesenswert?

RRDtool und fünf Zeilen (vielleicht auch sechs) Perl-Script.

: Bearbeitet durch User
von Heinz (Gast)


Lesenswert?

volkszaehler.org

erzeugt statische Grafiken oder interaktive Kurven, wo man auch 
reinzoomen kann. Datenbank wird gleich mitinstalliert (mysql)

Die Datenbank kannst du auch mit deinem Script befüllen, welches json 
rausschmeißt.

von Sheeva P. (sheevaplug)


Lesenswert?

Martin schrieb:
> ich habe ein funktionierendes shell-script, das mit alle 2 Sekunden
> Messwerte im JSON-Format liefert ( {"name1":wert1;"name2":wert2;....} )
>
> was ist aus Eurer Sicht der einfachste Weg mit dem RasPi
> (Installationsaufwand, Lernaufwand, ..), um aus diesen Zahlen ein
> LinienDiagramm zu  erzeugen, das sich alle 2 Sekunden
> ändert/aktualisiert? (also z.B. so eine "Fieberkurve! wie der
> Aktienindex)
>
> Jede Idee ist willkommen..

Elasticsearch mit seinem Webfrontend Kibana. Damit kannst Du Deine Daten 
direkt als JSON in den Elasticsearch-Server pumpen, und sie mit Kibana 
maximal performant und flexibel analysieren und visualisieren.

Der Aufwand für die Installation ist minimal, ein Lernaufwand ist 
vorhanden, aber ziemlich überschaubar, solange man die vielfältigen 
Möglichkeiten der Volltextsuche nicht benötigt.

Trotzdem ist es nicht die schlechteste Idee, eine leistungsfähige, 
moderne Skriptsprache wie Python im Werkzeugkasten zu haben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.