staging.inyokaproject.org

Datenmonitor programmieren

Status: Ungelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

banause

Anmeldungsdatum:
17. November 2009

Beiträge: 302

Hallo Forum,

ich betreibe eine Datenerfassung über RS232 auf /dev/ttyS0. Die gelesenen Werte werden in eine MySQL-Datenbank geschrieben. Im Test werden pro Minute 7 (sieben) Datensätze erzeugt. Wenn ich fertig bin, könnten zwischen 50 und 100 Werte je Minute anfallen.

Ich suche einen Weg, wie ich diese Daten grafisch darstellen kann. Die Kurven der ausgewählten Werte sollen im Zeitablauf um die jeweils neu in die DB geschriebenen Werte "nach rechts verlängert" werden. Es soll genau so aussehen, wie bspw. die Kurven in der Systemüberwachung (Tabe "Ressourcen") für CPU, Speicher und Netzwerk. Meine Kurven würden sich nur entsprechend langsamer bewegen, da nur jede Minute ein Wert (Pixel) dazukäme.

Ich habe Erfahrung in der bash-Programmierung, GUIs habe ich bisher aber nur mit VBA in MS-Office gezaubert.

Kann mich jemand auf den richtigen Pfad setzen? (ich wäre nicht sonderlich überrascht, wenn es da etwas Fertiges gäbe)

Ich würde mich über ein paar Tipps freuen.

Vielen Dank und Gruß,

banause

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Was ist denn das genaue Ziel? Das Plotten von Bildchen aus den Daten (z.B. mit gnuplot) oder eine Desktop-Anwendung (ein kleiner Statusmonitor, der auf dem root-Window gezeichnet wird wäre z.B. mit Conky umsetzbar) oder die Darstellung auf einer Webseite (z.B. mit Munin)?

banause

(Themenstarter)

Anmeldungsdatum:
17. November 2009

Beiträge: 302

Halloseahawk1986 schrieb:

Was ist denn das genaue Ziel?

Sorry, hab ich vergessen hinzuschreiben.

Ja, es soll eine Desktop-Anwendung zum Ansehen/Monitoren werden. Es sollen aber keine statischen Bilder sein (Datenreihen in Calc malen lassen), sondern es sollen die Graphen der Daten in "Echtzeit" (wie in der Systemüberwachung) dargestellt werden. Die Daten liegen in der DB im LAN.

Gruß

banause

Neral

Anmeldungsdatum:
3. Oktober 2007

Beiträge: 230

Moin,

für allgemeine Plots würde ich Python, matplotlib, für’s number crunching numpy und scipy und pandas empfehlen. Nicht komplett fertig, aber die Bausteine sind da und es ist praktisch beliebig flexibel. Hat aber auch eine gewisse Einarbeitung nötig.

Ansonsten gibt’s auch noch gnuplot.

matplotlib kann man in GUIs einbetten, bei gnuplot hab’ ich keine Ahnung, ob das geht.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

banause schrieb:

Es sollen aber keine statischen Bilder sein (Datenreihen in Calc malen lassen

Im Endeffekt siehst du an einem Computer ausschließlich statische Bilder (aus dem Framebebuffer der Grafikkarte), die werden nur oft genug neu gezeichnet, damit du denkst, dass sich was bewegt 😉

Neral schrieb:

matplotlib kann man in GUIs einbetten, bei gnuplot hab’ ich keine Ahnung, ob das geht.

In der einfachsten Variante lässt man ein Shell-Skript in einer Schleife laufen und den Graphen im gnuplot-eigenen Ausgabefenster neu zeichnen: http://hxcaine.com/blog/2013/02/28/running-gnuplot-as-a-live-graph-with-automatic-updates/

Neral

Anmeldungsdatum:
3. Oktober 2007

Beiträge: 230

@seahawk1986: Wenn man dann noch eine Datenbank auslesen möchte und eventuell Interaktivität (Zoom und den Ausschnitt per Drag und Drop verschieben) einbauen möchte, ist man leicht in einem Bereich, in dem das mit Python und matplotlib einfacher und übersichtlicher geht. Stichwort sqlalchemy. Aber das muss dann banause entscheiden, was er möchte/braucht.


Man merkt, dass ich Python- und matplotlib-Fan bin, oder‽ 😉

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Ja klar, das mit gnuplot ist eine rudimentäre Lösung, die man mit etwas Shell-Scripting zu Abholen der letzten x Werte aus der DB umsetzen können sollte. mathplotlib und die Datenbankanbindung über ein Python-Skript gefällt mir auch besser, aber das wird halt etwas umfangreicher, wenn man mit der Sprache davor noch nichts zu tun hatte.

banause

(Themenstarter)

Anmeldungsdatum:
17. November 2009

Beiträge: 302

Hey Ihr Beiden,

das sind schon mal sehr gute Vorschläge.

Das Beispiel mit gnuplot habe ich eben schon mal nachgebaut. Jetzt werde ich die DB anbinden. Dass mich python irgendwann einholt, wusste ich, als ich mit Freecad angefangen habe. Wenn mir gnuplot nicht mehr reicht, mache ich mit python weiter.

Vielen Dank! Das ging viel schneller als ich dachte.

Auf meiner Suche war ich noch über Grafana gestolpert. Das erscheint mir für meine Belange etwas "over the top".

Gruß,

banause

Antworten |