Forum: Mikrocontroller und Digitale Elektronik Messwerte auf Raspi grafisch darstellen


von Captain Roger (Gast)


Lesenswert?

Hallo Leute,

ich habe auf dem Raspi ein C-Programm laufen, das mir Messdaten von 
Peripherien senkündlich abruft und diese in ein txt-file speichert. Die 
Daten sind mit Tabulator getrennt, voerst, können aber auch durch ein 
Komma getrennt werden.

Jetzt suche ich eine Möglichkeit die Daten grafisch darzustellen. Mir 
persönlich fehlt der Umgang mit Systemen wie Raspbian und "Datenbanken", 
sodass ich es mit MariaDB und MySQL Workbench probiert habe, was sich 
nicht als sinnvoll heraus stellte.

Habt ihr eine andere, einfachere Idee? Wäre auch eine 
Echtzeitdarstellung der einkommenden daten möglich?

Danke.

von Dirk B. (dirkb2)


Lesenswert?

Brauchat du die Daten wirklich sekündlich und für immer?

Wenn nein, bietet sich RRDtool an.

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


Lesenswert?

Captain Roger schrieb:

> ich habe auf dem Raspi ein C-Programm laufen, das mir Messdaten von
> Peripherien senkündlich abruft und diese in ein txt-file speichert.

Textfile ist schon mal suboptimal.

> Jetzt suche ich eine Möglichkeit die Daten grafisch darzustellen.

Und das heißt?

Nur einmal? Oder regelmäßig abrufbar? Vielleicht gar mit der Option, den 
beobachteten Zeitraum zu verändern?

> Mir
> persönlich fehlt der Umgang mit Systemen wie Raspbian und "Datenbanken",
> sodass ich es mit MariaDB und MySQL Workbench probiert habe, was sich
> nicht als sinnvoll heraus stellte.

Logisch. Workbench ist komplett daneben. Und eine SQL-Datenbank ist für 
Zeitreihendaten zumindest nicht die erste Wahl.

> Habt ihr eine andere, einfachere Idee?

Tobi hatte diese Idee: https://oss.oetiker.ch/rrdtool/

von (prx) A. K. (prx)


Angehängte Dateien:

Lesenswert?

Captain Roger schrieb:
> Habt ihr eine andere, einfachere Idee? Wäre auch eine
> Echtzeitdarstellung der einkommenden daten möglich?

Browser verwenden, mit automatischem Refresh. Darin Grafiken aus rrdtool 
einbinden und die Sache hat sich. Beispiel anbei.

: Bearbeitet durch User
von Max H. (metalmax83)


Lesenswert?

Meine persönliche Wahl wäre da Python und matplotlib.
Da würde ich auch direkt das Sensor-Auslesen drin erledigen und das 
C-Programm arbeitslos machen...

von Captain Roger (Gast)


Lesenswert?

A. K. schrieb:
> Browser verwenden, mit automatischem Refresh. Darin Grafiken aus rrdtool
> einbinden und die Sache hat sich. Beispiel anbei.

So wie ich das jetzt recherchiert habe kann ich bei der Erstellung des 
Graphen die Zeitspanne festlegen, die geplottet werden kann. Du scheinst 
immer eine Woche darzustellen. Ist der Zeitrahmen fest im Script 
programmiert oder kann man sagen, dass er bitte alle Daten, die im 
txt-file liegen darstellen soll?

von (prx) A. K. (prx)


Angehängte Dateien:

Lesenswert?

Captain Roger schrieb:
> A. K. schrieb:
>> Browser verwenden, mit automatischem Refresh. Darin Grafiken aus rrdtool
>> einbinden und die Sache hat sich. Beispiel anbei.
>
> So wie ich das jetzt recherchiert habe kann ich bei der Erstellung des
> Graphen die Zeitspanne festlegen, die geplottet werden kann. Du scheinst
> immer eine Woche darzustellen. Ist der Zeitrahmen fest im Script
> programmiert oder kann man sagen, dass er bitte alle Daten, die im
> txt-file liegen darstellen soll?

In den rrdtools definierst du eine Datenbank, die aus einer Serie von 
Tabellen prinziell gleichen Inhalts mit unterschiedlicher 
Aufbewahrungszeit und Mittel/Min/Max-Speicherung besteht, die 
automatisch kondensiert werden. Daraus wiederum kann man für beliebige 
Zeiträume in HTML eingebettete Grafiken definieren, die bei Aufruf 
erzeugt werden. Angehängt sind andere Zeiträume aus dem gleichem 
Datenbestand.

(Zu den Daten: Der Aussentemperatursensor liegt bei solcher Witterung 
aufgrund der Platzierung etwas drüber und wird nachmittags direkt oder 
per Reflexion beschienen)

: Bearbeitet durch User
von (prx) A. K. (prx)


Angehängte Dateien:

Lesenswert?

PS: Wer dieses Jahr als besonders schrecklich empfindet, für den habe 
ich die letzten 5 Jahre.

PPS: Erfassung, Speicherung und Webservice macht ein RasPi 2.

: Bearbeitet durch User
von Dirk B. (dirkb2)


Lesenswert?

Captain Roger schrieb:
> So wie ich das jetzt recherchiert habe kann ich bei der Erstellung des
> Graphen die Zeitspanne festlegen, die geplottet werden kann. Du scheinst
> immer eine Woche darzustellen. Ist der Zeitrahmen fest im Script
> programmiert oder kann man sagen, dass er bitte alle Daten, die im
> txt-file liegen darstellen soll?

Man kann das auch über eine Eingabefeld machen.

Bei RRDtool speichert eine feste Anzahl von Werten in einem festen 
Zeitabstand.
Alte Daten fliegen raus. Die Datenbank hat eine feste Größe.

von Normal Z. (normalzeit)


Lesenswert?

Wenn's etwas schicker und flexibler sein soll würde ich mal einen Blick 
auf InfluxDB und Grafana werfen.

von Stefan P. (form)


Lesenswert?

Normal Z. schrieb:
> Wenn's etwas schicker und flexibler sein soll würde ich mal einen Blick
> auf InfluxDB und Grafana werfen.

Gute Wahl!
Ansonsten auf direktestem Weg von Deinem TXT- in ein PNG-File rendern 
könnte "gnuplot".

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


Lesenswert?

Normal Z. schrieb:
> Wenn's etwas schicker und flexibler sein soll würde ich mal einen
> Blick auf InfluxDB und Grafana werfen.

Das ist aber mit Interkontinentalraketen auf Amöben geschossen.

Rrdtool ist klein und schlank. Ein cgi-Treiber ist auch dabei. Damit 
kann man mit minimalem Aufwand eine Website aufsetzen, die die Daten 
visualisiert. Gern auch mit vorgeschaltetem HTML-Formular zur Auswahl 
des Zeitraums.

Daß rrdtool einen dazu zwingt, mal über den Zeitraum nachzudenken, für 
den man die Daten aufheben will, sehe ich als großen Vorteil. Die 
meisten Leute denken darüber sonst gar nicht nach und wundern sich nur 
irgendwann, daß es langsam wird oder der Massenspeicher voll läuft.

von Chr. M. (snowfly)


Lesenswert?

Auch von mir noch ein pro für:

InfluxDB & Grafana
evtl. als Docker container.

von Stefan F. (Gast)


Lesenswert?

Dirk B. schrieb:
> Bei RRDtool speichert eine feste Anzahl von Werten in einem festen
> Zeitabstand.
> Alte Daten fliegen raus. Die Datenbank hat eine feste Größe.

Ich möchte dazu ergänzen, dass das Tool auch Zusammenfassungen erstellen 
kann. So hat man z.B. sekündliche Werte der letzten 24 Stunden, für den 
Monate davor die min/max/avg Werte pro Minute und für den noch längeren 
Zeitraum davor die min/max/avg Werte pro Stunde.

von Normal Z. (normalzeit)


Lesenswert?

Axel S. schrieb:
> Das ist aber mit Interkontinentalraketen auf Amöben geschossen.

Warum?

InfluxDB und Grafana läuft problemlos und performant auf dem Raspberry.

Grafana bietet eine extrem flexible und direkt im Browser 
konfigurierbare Oberfläche. Auswahl verschiedener Zeiträume ist 
standardmäßig schon dabei.

von Christopher J. (christopher_j23)


Lesenswert?

Es gibt das "GR" Framework, welches als C-Bibliothek mit Bindings zu 
Python und Julia fast keine Wünsche offen lassen sollte. Man kann das 
natürlich auch direkt aus C oder C++ nutzen, z.B. aus einem Programm 
welches auf QT oder WxWidgets basiert:

https://gr-framework.org/

von Noch eine Meinung (Gast)


Lesenswert?

> sekündlich

Da hatte ich mit RRDTool auf Raspi ein ganz übles Problem. Nach ein paar 
Monaten waren die SD-Karten hinüber. Liessen sich nicht mal mehr neu 
formatieren. Hatte dann USB-Platten gekauft.

P.S. So 1 bis 2 mal im Jahr kommen die Raspis durcheinander und müssen 
neu gebootet werden.

von Stefan F. (Gast)


Lesenswert?

Noch eine Meinung schrieb:
>> sekündlich
>
> Da hatte ich mit RRDTool auf Raspi ein ganz übles Problem. Nach ein paar
> Monaten waren die SD-Karten hinüber.

Der übliche Schwachpunkt beim Raspberry Pi. Der Linux Kernel verzögert 
Schreibzugriffe, um sie Blockweise auszuführen. Die Zeit ist 
konfigurierbar. Darüber hinaus empfehle ich die Option "noatime" in 
/etc/fstab. Sie bewirkt, dass Lesezugriffe nicht mehr im 
Inhaltsverzeichnis des Speichermediums protokolliert werden.

Manche SD Karten gehen im Raspberry Pi extrem schnell kaputt, weil sie 
umformatiert wurden. Bei vielen Karten liegt ein Zettel bei ,auf dem 
ausdrücklich davon abgeraten wird.

Ich habe mir ein "Raspberry Pi 3 Official Desktop Starter Kit" gekauft. 
Damit teste und protokolliere ich alle 5 Sekunden meinen Internet 
Anschluss. Dabei habe ich nur die "noatime" hinzugefügt, das Verzögerte 
Schreiben habe ich nicht angepasst. Das Ding läuft seit 2 Jahren ohne 
einen einzigen Aussetzer durch. Insofern denke ich, dass diese 
offiziellen Sets ihren etwas höheren Preis durchaus wert sind.

von Gnorm (Gast)


Lesenswert?

Stefanus F. schrieb:
> Damit teste und protokolliere ich alle 5 Sekunden meinen Internet
> Anschluss.

Warum?

Mal ernsthaft. Selbst wenn das Teil aus anderen Gruenden durchlaeuft.

von Stefan F. (Gast)


Lesenswert?

Gnorm schrieb:
>> Damit teste und protokolliere ich alle 5 Sekunden meinen Internet
>> Anschluss.
> Warum?

Weil Unitymedia immer so tut, als wäre alles in Ordnung und ich vorher 
mit einem Vodafone Anschluss (powered by Telekom) auch nicht besser klar 
kam. Jetzt kann ich denen detaillierte Protokolle um die Ohren hauen und 
Entschädigung fordern. Ich habe 3€ pro Monat gefordert (entsprechend der 
Ausfallzeiten), aber dazu verweigern sie seit 8 Monaten jede 
Stellungnahme. Ich werde wohl bald einen Anwalt konsultieren.

Das ist so eine Scheiße! Da wohnt man mitten in der Großstadt und kann 
trotzdem keinen zuverlässigen Internetanschluss haben. Alle Anbieter 
sind schlecht. Auch auf der Arbeit (700m entfernt) haben wir die 
gleichen Probleme, obwohl wir dort gewerbliche Anschlüsse von Unitymedia 
und Telekom parallel nutzen.

Das Telefonica Mobilfunknetz ist bei mir erheblich zuverlässiger (und 
das hat doch eigentlich den miesesten Ruf). Wenn wir keine Streaming 
Dienste nutzen würden, hätte ich längst auf UMTS umgestellt.

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.