Forum: PC-Programmierung raspberry pi: Datenbank rrdtool


von user (Gast)


Lesenswert?

Hi,

für eine Temperaturaufzeichnung möchte ich die Datenbank rrdtool 
einsetzen.
Alle notwendigen Pakete habe ich bereits installiert. Beim Erzeugen 
einer Datenbank erscheint die Fehlermeldung:

> ERROR: you must define at least one Round Robin Archive

Diese Fehlermeldung erscheint sobald ich dies hier ausführe:
1
 rrdtool create TemperaturAufzeichnung.rrd --step 300 
2
 DS:temp:GAUGE:600:-30:100 
3
 RRA:AVERAGE:0.5:1:1200 
4
 RRA:MIN:0.5:12:2400 
5
 RRA:MAX:0.5:12:2400 
6
 RRA:AVERAGE:0.5:12:2400

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Zitat man page:
1
EXAMPLE 3
2
        rrdtool create proxy.rrd --step 300 \
3
          DS:Requests:DERIVE:1800:0:U  \
4
          DS:Duration:DERIVE:1800:0:U  \
5
          DS:AvgReqDur:COMPUTE:Duration,Requests,0,EQ,1,Requests,IF,/ \
6
          RRA:AVERAGE:0.5:1:2016

Fällt dir ein Unterschied zu deinem Aufruf auf?

von user (Gast)


Lesenswert?

Ja hab's herausgefunden woran es lag. Die Datenbank lässt sich nun 
erzeugen.

von user (Gast)


Lesenswert?

Bin gerade dabei die grafische Ausgabe wie in dem Link
http://raspberry.tips/hausautomatisierung/wetteraufzeichnung-mit-raspberry-pi-ds18b20 
umzusetzen. Allerdings funktioniert das Anlegen und Aktualisieren von 
den Grafiken nicht.

von user (Gast)


Lesenswert?

Ich habe nochmals das ganze getestet. So wie es aussieht funktioniert 
das mit dem crontab -e Befehl nicht. Es werden nicht automatisch 
Eintrage erzeugt.

von Ingo D. (ingo2011)


Lesenswert?

Hi,

was meinst Du mit "automatisch" erzeugt ?
Laut der Webseite sollst Du neue Einträge mit
crontab -e erzeugen.
Darunter steht dann ja auch
# Unten folgende Zeile einfügen
*/10   * * php5 /home/pi/Temperatur/TemperaturAufzeichnen.php > 
/dev/null 2>&1


Was passiert denn , wenn Du auf der Kommandozeile
php5 /home/pi/Temperatur/TemperaturAufzeichnen.php
und
cd /home/pi/Temperatur && sh TemperaturGrafikErstellen.sh

eingibst ? Fehlermeldung ?

von user (Gast)


Lesenswert?

Statt php5 verwende ich php
Wenn ich beide Zeilen ausführe, passiert nichts. Keine Ausgabe oder so.
Es wird wieder auf den prompt gewechselt.

> php /home/pi/Temperatur/TemperaturAufzeichnen.php

> cd /home/pi/Temperatur && sh TemperaturGrafikErstellen.sh

von Ingo D. (ingo2011)


Lesenswert?

.. schaue bitte mal , welchen Timestamp die

/home/pi/Temperatur/TemperaturAufzeichnung.rrd

hat .
ls -l /home/pi/Temperatur/TemperaturAufzeichnung.rrd

und ob die
/home/pi/Temperatur/TemperaturTag.png
existiert.

von user (Gast)


Lesenswert?

Hi, also es werden keine Bilder erzeugt.

von user (Gast)


Lesenswert?

Ok der Zeitstempel der Datei TemperaturAufzeichnung.rrd ändert sich.

von user (Gast)


Lesenswert?

...aber die Bilder werden nicht erzeugt

von user (Gast)


Lesenswert?

Liegt es wohl an den User und Gruppenrechte?

von user (Gast)


Lesenswert?

Nach genauer Prüfung habe ich feststellen können, dass die Datei 
TemperaturAufzeichnung.rrd sich ändert. Der Zeizstempel ändert sich.

Nur di beiden Bilder werden gar nicht erzeugt.

von Sandfrog (Gast)


Lesenswert?

Meine Vermutung ist du hast in der Crontab keinen vollen Pfad angegeben 
die Crontab mag das nicht.

Ansonsten leite die Ausgabe des Crontabs mal in ein Logfile um dann 
bekommst auch Fehlermeldungen

z.b. mit "> /pfad/zur/logdatei.log 2>&1"

von user (Gast)


Lesenswert?

1
*/1 * * * * /usr/bin/php /home/pi/Temperatur/TemperaturAufzeichnen.php > /dev/null 2>&1
2
*/5 * * * * cd /home/pi/Temperatur && sh TemperaturGrafikErstellen.sh > /dev/null 2>&1

von Zeno (Gast)


Lesenswert?

Schätze mal Du hast das PHP-Beispielscript auf der von Dir verlinkten 
Webseite einfach blind kopiert, ohne den Sinn bzw. Funktion von selbigen 
richtig zu verstehen.

Ich empfehle Dir deshalb lies hier https://oss.oetiker.ch/rrdtool/ nach 
wie man die Funktionen von rrd-Tool richtig benutzt. Man kann das alles 
ohne Script im Terminalfenster ausprobieren.
Wenn das funktioniert würde ich im nächsten Schritt die Aufrufe in ein 
Bashscript verpacken und erst mal damit testen und probieren. Wenn das 
wie gewünscht funktioniert, wäre der nächste Schritt das Bashscript per 
PHP aufzurufen. Wenn das funktioniert, kann man sich überlegen ob man 
das so wie es ist beläßt oder ob man die Befehlszeilen des Bashscripts 
direkt aus PHP heraus aufruft.
Ich würde es bei einem Bashscript welches von PHP aufgerufen wird 
belassen. Hat sich bei mir bewährt.

von Thomas G. (conquistador)


Angehängte Dateien:

Lesenswert?

Nimm doch gleich was anständiges. Mit Grafana und innodb kannst du 
soviel loggen wie du willst, und jede Menge charts erstellen. Der 
Vorteil davon wäre, daß das gleich funktioniert und du nur 1-2 config 
files hast.
Hier wollte ich eigentlich nur meinen Kühlschrank überwachen der immer 
vereist war. Und seitdem ich den abgetaut habe und per Grafana logge, 
funzt der auch wieder :-). Alles auf Raspi 4 der damit bei 20% 
ausgelastet ist

von Zeno (Gast)


Lesenswert?

@TO:

Dir ist aber schon klar das, das Folgende aus dem Grafikscript in eine 
Zeile gehört?
1
rrdtool graph /home/pi/Temperatur/TemperaturTag.png 
2
 -s 'now - 1 day' -e 'now' 
3
 DEF:temp=/home/pi/Temperatur/TemperaturAufzeichnung.rrd:temp:AVERAGE 
4
 LINE2:temp#000000:Wohnzimmer

Wenn Du das so geschrieben hast wie hier, kommt definitiv keine Grafik 
raus. Warum solltest Du Dir mal selbst überlegen bzw. recherchieren.

von user (Gast)


Lesenswert?

Hi Zeno, das ist mir nun klar. Trotzdem gelingt die Grafikausgabe immer 
noch nicht,

von Zeno (Gast)


Lesenswert?

Thomas G. schrieb:
> Nimm doch gleich was anständiges.

Ist doch Käse was Du da schreibst. Mit rrd-Tool bekommt man schon was 
ordentliches hin, wenn man es richtig macht.

Nichts gegen Grafana, das Problem hier ist das der TO einfach nur ein 
paar Sourcen zusammenkopiert hat ohne zu verstehen was er da eigentlich 
macht.
RRD-Tool hat den Vorteil die Daten zu komprimieren, was bei Wetter- bzw. 
Temperaturdaten auch Sinn macht, denn nach 3 Jahren muß ich nicht mehr 
wissen, wie hoch die Temperatur am 8.1.21 um 20:40Uhr war. Da reichen 
Mittelwert, Minimum und Maximum vom 8.1.21 und genau das macht rrd-Tool.

von Zeno (Gast)


Lesenswert?

user schrieb:
> Hi Zeno, das ist mir nun klar. Trotzdem gelingt die Grafikausgabe immer
> noch nicht,

Lies es Dir auf https://oss.oetiker.ch/rrdtool/ durch wie es gemacht 
wird. Am besten die Beispiele von dort nachvollziehen.

von user (Gast)


Lesenswert?

Ok Danke. Bin gerade noch dabei um mir das reinzuziehen.

Nun jetzt ist es so, dass in /home/pi/Temperatur/ beide Grafiken 
erstellt werden. Allerdings werden die beiden Dateien nicht in das 
Verzeichnis /var/www/html/ kopiert.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

user schrieb:
> Allerdings werden die beiden Dateien nicht in das Verzeichnis
> /var/www/html/ kopiert.

Klingt nach einem Rechte-Problem.

Welcher User versucht denn, die Dateien dahin zu kopieren? Hat er 
Schreibrechte im Zielverzeichnis?

von Ingo D. (ingo2011)


Lesenswert?

.. ja, weil weiter unten noch eine Änderung im Script gemacht wird und 
die
Graphiken im Verzeichnis /var/www angelegt werden.
Ich glaube Dir fehlt da noch etwas Verständnis.
Bevor Du mit so etwas loslegst, erstmal von oben bis unten  lesen und 
versuchen zu verstehen.
...

von oben (TemperaturGrafikErstellen.sh) noch den Ausgabepfad auf unser 
Document Root „/var/www“ legen.
Shell
nano /home/pi/Temperatur/TemperaturGrafikErstellen.php


Die Pfade entsprechend anpassen:

rrdtool graph /var/www/TemperaturTag.png
....
rrdtool graph /var/www/TemperaturWoche.png
....
nano /home/pi/Temperatur/TemperaturGrafikErstellen.php

von dBase0 (Gast)


Lesenswert?

Thomas G. schrieb:
> grafana.png

110%Rel.Hum?

Zeno schrieb:
> RRD-Tool hat den Vorteil die Daten zu komprimieren,

Das geht doch mit influxdb auch, oder wofür ist die 'RETENTION POLICY' 
gut?

von Thomas G. (conquistador)


Lesenswert?

dBase0 schrieb:
> Thomas G. schrieb:
>> grafana.png
>
> 110%Rel.Hum?

Ja, über 100% Hum geht, weil dann Tröpfchen in der Luft hängen.

> Zeno schrieb:
>> RRD-Tool hat den Vorteil die Daten zu komprimieren,
>
> Das geht doch mit influxdb auch, oder wofür ist die 'RETENTION POLICY'
> gut?

Sag ich doch. Nimm was Gescheites, was dann auch gleich funktioniert. In 
6h -9h hast Du dich in influxdb,  Grafana und Telegraf reingearbeitet. 
Dann hättest du was womit du die nächsten 10 Jahre anständig arbeiten 
kannst.
Mit dem Gefrickel, php Seiten, tausende scripts und CSV files als 
database verlierst du aber die nächsten 4 Wochen, und optisch sieht es 
am Ende trotzdem beschissen aus, und in 6 Monaten mußt du wieder von 
vorn anfangen weil alles vergessen wie es ging.
Ich weiß ja wovon ich rede, habe das alles hinter mir mit python, 
gnuplot, scripts ...

von user (Gast)


Lesenswert?

Hallo,

ich habe mich nochmals drangesetzt. Die Pfade in den beiden Dateien 
TemperaturGrafikErstellen und TemperaturGrafikErstellen.sh sind soweit 
korrekt. Nach wie vor wird die Datenbank aktualisiert und die beiden 
Grafiken werden auch in dem /home/pi/Temperatur/ abgelegt.

von user (Gast)


Lesenswert?

Übrigens habe ich in dem /var/www/ Ordner die Berechtigungen auf user pi 
gesetzt.


> sudo chown -cR pi:pi /var/www

von Dirk B. (dirkb2)


Lesenswert?

Schau mal nach den Rechten.
Wer hat Zugriff auf die Grafiken (darf der Webserver die Grafiken 
lesen)?

von user (Gast)


Lesenswert?

Ja der Webserver soll ja die Grafiken anzeigen.

von user (Gast)


Lesenswert?

Der Ordner var/www/ hat die Rechte des Users pi

von user (Gast)


Lesenswert?

Bin echt ratlos warum die beiden Dateien nicht automatisch in den Ordner 
var/www/ kopiert werden.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Dann tu doch mal, was dir weiter oben schon mal empfohlen wurden ist. 
Die beiden Ausgabeumlenkungen (oder nur die zweite, bei der die Grafik 
ja erstellt wird) nach /dev/null auf eine richtige Datei umlenken:
1
*/5 * * * * cd /home/pi/Temperatur && sh TemperaturGrafikErstellen.sh >> /tmp/grafik.log 2>&1

Damit wird in /tmp eine Datei "grafik.log" angelegt und fortgeführt, die 
die Ausgaben des TemperaturGrafikErstellen.sh Scripts enthält, 
insbesondere auch mögliche Fehlerausschriften.

Wenn das allein dich auch noch nicht weiterbringt, kannst du noch 
stattdessen
1
*/5 * * * * cd /home/pi/Temperatur && sh -x TemperaturGrafikErstellen.sh >> /tmp/grafik.log 2>&1

machen. Die Option "-x" bewirkt, dass jedes Kommando vor seiner 
Ausführung "angesagt" wird. Damit kann man nachvollziehen, welche 
Kommandos in welcher Reihenfolge abgearbeitet werden.

von Dirk B. (dirkb2)


Lesenswert?

user schrieb:
> Der Ordner var/www/ hat die Rechte des Users pi

Und die Grafiken?

Läuft denn der Webserver auch als user pi?
meist ist das ein spezieller user.

von Zeno (Gast)


Lesenswert?

user schrieb:
> Der Ordner var/www/ hat die Rechte des Users pi

Dann kann der Webserver die Grafiken vermutlich wegen Rechtemangel die 
Grafiken nicht lesen.

Mach doch mal ein
1
cd /var

und danach ein
1
ls -l

Die Ausgabe des letzten Befehls postest Du mal hier.

dBase0 schrieb:
> Das geht doch mit influxdb auch, oder wofür ist die 'RETENTION POLICY'
> gut?
influxdb kenne ich nicht, deshalb kann ich hierzu auch nichts sagen.

Thomas G. schrieb:
> Sag ich doch. Nimm was Gescheites, was dann auch gleich funktioniert. In
> 6h -9h hast Du dich in influxdb,  Grafana und Telegraf reingearbeitet.
Ach ja jetzt muß er sich schon in 3 Tools - Grafana, influxdb und 
Telegraf - einarbeiten. Toll!
Erläutere doch mal weshalb die von Dir favorisierten Tools was 
Gescheites und rrd-Tool was Ungescheites sind.
Der TO scheitert ja derzeit nicht am Erzeugen seiner Grafik, sondern 
ganz offensichtilich an den Rechten in einem Linuxsystem.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Zeno schrieb:
> Der TO scheitert ja derzeit nicht am Erzeugen seiner Grafik, sondern
> ganz offensichtilich an den Rechten in einem Linuxsystem.

Und wenn rrdtool halt der Anlass ist, sich mal mit irgendwelchen 
grundlegenden Unix-Konzepten (Rechte von Dateien und Verzeichnissen, 
Ein-/Ausgabeumlenkung, Shellscript-Debugging) zu beschäftigen, dann wäre 
doch allein das schon Grund genug, es zumindest erst einmal "zu Fuß" zu 
machen, wie er es tut.

Wenn er dann mit dem Ergebnis nicht so recht zufrieden ist und lieber so 
ein Rundum-Sorglos-Paket haben möchte, hat er auf dem Weg dahin 
zumindest was gelernt.

von user (Gast)


Lesenswert?

> var/www/html --> ls -l

Ausgabe:
1
-rw-r--r-- 1 pi pi  202 Jan  6 20:18 index.html
2
-rw-r--r-- 1 pi pi 1098 Jan 10 14:26 index.php
3
-rw------- 1 pi pi 1098 Jan  7 20:37 index.php.save
4
-rw-r--r-- 1 pi pi  123 Jan  7 15:07 phpinfo.php
5
-rw-r--r-- 1 pi pi   50 Jan  5 19:18 phpinfo.php.save
6
-rw-r--r-- 1 pi pi   35 Jan  5 19:26 phpinfo.php.save.1
7
-rw-r--r-- 1 pi pi 2437 Jan  7 18:59 style.css

von user (Gast)


Lesenswert?

So ich habe nun mit crontab -e die Änderung mit der Logausgabe gemacht.
Es werden auch zyklisch die beiden Grafiken in dem /home/pi/Temperatur 
Ordner angelegt nur das kopieren/anlegen der beiden Dateien geht ja 
nicht in dem Ordner var/www/. Ich finde auch in dem ganzen Beispiel 
nicht eine Zeile wo dies veranlasst wird.

von user (Gast)


Lesenswert?

In dem gezeigten Beispiel scheint es einen Fehler zu geben. Und zwar bei
"Temperatur Grafik erstellen" müsste da nicht nach
"Das Script muss natürlich noch ausführbar gemacht werden"
> sudo chmod +x TemperaturGrafikErstellen.sh
statt
> sudo chmod +x TemperaturGrafikErstellen.php
stehen?

Es scheint auch, dass die Datei TemperaturGrafikErstellen.php nicht 
ausgeführt wird.

von Dirk B. (dirkb2)


Lesenswert?

user schrieb:
> Ich finde auch in dem ganzen Beispiel
> nicht eine Zeile wo dies veranlasst wird.

Das wurde doch schon von 
Beitrag "Re: raspberry pi: Datenbank rrdtool" erklärt.

von Thomas G. (conquistador)


Lesenswert?

Jörg W. schrieb:

> Und wenn rrdtool halt der Anlass ist, sich mal mit irgendwelchen
> grundlegenden Unix-Konzepten (Rechte von Dateien und Verzeichnissen,
> Ein-/Ausgabeumlenkung, Shellscript-Debugging) zu beschäftigen,....

Ja, sorry, das hatte ich nicht verstanden, ich dachte, daß er einfach 
nur Meßwerte so einfach wie möglich aufnehmen und darstellen wollte.
Sowas wollte ich vor 2-3 Jahren auch, und habe wochenlang mit solchen 
Frickeleien verbracht.

von Dirk B. (dirkb2)


Lesenswert?

user schrieb:
> die Datei TemperaturGrafikErstellen.php

sollte wohl auch im Verzeichnis vom Webserver liegen, so dass man sie 
vom Browser aus aufrufen kann.
Dann wird (bei Anfrage) die Grafik(en) erstellt.

von Ralf D. (doeblitz)


Lesenswert?

Thomas G. schrieb:
> Jörg W. schrieb:
>
>> Und wenn rrdtool halt der Anlass ist, sich mal mit irgendwelchen
>> grundlegenden Unix-Konzepten (Rechte von Dateien und Verzeichnissen,
>> Ein-/Ausgabeumlenkung, Shellscript-Debugging) zu beschäftigen,....
>
> Ja, sorry, das hatte ich nicht verstanden, ich dachte, daß er einfach
> nur Meßwerte so einfach wie möglich aufnehmen und darstellen wollte.
> Sowas wollte ich vor 2-3 Jahren auch, und habe wochenlang mit solchen
> Frickeleien verbracht.

Naja, so einfach wie möglich ist ja gerade rrdtool: ein einfaches Tool, 
das der Unix-Philosophie folgt und mit dem man das Problem einfach lösen 
kann. Man muss natürlich einmal ein wenig Doku lesen. Aber normal sollte 
man das - wenn man kein Totalanfänger bzgl. Unix ist - in zwei bis drei 
Stunden alles problemlos durchgelesen und zusammengebaut haben. Man muss 
ja nicht die erweiteren Features (prediction, virtual data sources, 
komplexe Graphen …) benutzen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ralf D. schrieb:
> wenn man kein Totalanfänger bzgl. Unix ist

Gerade das scheint der TE aber zu sein.

Dirk B. schrieb:
>> die Datei TemperaturGrafikErstellen.php
>
> sollte wohl auch im Verzeichnis vom Webserver liegen, so dass man sie
> vom Browser aus aufrufen kann.

Er hat ja aber den Weg gewählt, einen Shellscript vom cron aus aller 5 
Minuten zu rufen, d.h. sie werden nicht "on demand" dann vom Webserver 
erzeugt.

Viele Wege führen halt nach Rom.

von Thomas G. (conquistador)


Lesenswert?

Ralf D. schrieb:
> Naja, so einfach wie möglich ist ja gerade rrdtool: ein einfaches Tool,
> das der Unix-Philosophie folgt und mit dem man das Problem einfach lösen

Ja, so z.B. im Tutorial: 
https://oss.oetiker.ch/rrdtool/tut/rrdtutorial.en.html

Next thing to do is to collect data and store it. Here is an example. It 
is written partially in pseudo code, *you will have to find out what to 
do exactly on your OS to make it work*.

   while not the end of the universe
   do
      get result of ...

Genau das Richtige für einen Anfänger. Damit wird er noch jede Menge 
Freude haben...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Thomas G. schrieb:
> Damit wird er noch jede Menge Freude haben...

Wenn er etwas lernen will: ja.

Wenn er nur einfach etwas benutzen will: eher nicht.

Was von beiden für ihn zutrifft, hat er uns nicht verraten, wenngleich 
seine Fragen schon eher auf Variante 1 hindeuten. Wenn er nichts lernen 
wöllte, hätte er wohl schon längst das Handtuch geworfen.

Wenn er aber lernen möchte, sollte er dafür auch die Unterstützung der 
Mitforisten bekommen.

von Dirk B. (dirkb2)


Lesenswert?

Jörg W. schrieb:
> Er hat ja aber den Weg gewählt, einen Shellscript vom cron aus aller 5
> Minuten zu rufen, d.h. sie werden nicht "on demand" dann vom Webserver
> erzeugt.

Ach, das erzeugt auch die Grafiken.
Normalerweise liest das (per cron gestartete Script) ja nur die Daten 
von den Sensoren und füllt die Datenbank.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Dirk B. schrieb:
> Normalerweise liest das (per cron gestartete Script) ja nur die Daten
> von den Sensoren und füllt die Datenbank.

Das macht er jede Minute. crontab entries hat er ja oben gepostet.

von Ralf D. (doeblitz)


Lesenswert?

Jörg W. schrieb:
> Ralf D. schrieb:
>> wenn man kein Totalanfänger bzgl. Unix ist
>
> Gerade das scheint der TE aber zu sein.

Dann sind Tool swie Grafana o.ä. aber auch nicht gerade einfach zu 
erlernen. Und damit bringen sie erst einmal keinen grundsätzlichen 
Vorteil gegenüber rrdtool.

Als Totaleinsteiger hat man da grundsätzlich erst mal viel zu lernen, 
egal ob man rrdtool oder eine der anderen Möglichkeiten nimmt.

Und eigentlich muss man sie sich alle einmal ansehen, um dann 
qualifiziert entscheiden zu können, welches Tool man einsetzt. Im 
nächsten Jahrzehnt. ;-)

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.