Ich habe eine rrd-Datenbank erstellt für meine Solardaten, die ich mittels Python befülle.
Das Erstellen der Grafiken funktioniert mit diesem Python-Script "Grafiken_erzeugen2.py" auch, wenn ich es direkt im Terminal starte.
Das Scrpt liegt unter /home/pi.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import rrdtool
import sys
import time
# Festlegung globaler Variablen
dbname = 'solardaten' # Name fuer Grafiken etc
filename = dbname +'.rrd' # Dateinamen mit Datum
steps = 10 # Zeitintervall fuer die Messung in Sekunden
path = '/var/www/' # absoluter Pfad zum Ablegen der Plots
i = 0 # Schleifenbedingung für den Hauptteil
datum = time.strftime('%d %m %Y')
uhrzeit = time.strftime('%H:%M:%S')
print "ausgeführt: " + datum + " " + uhrzeit # für Testzwecke
for plot in ['daily' , 'weekly', 'monthly']:
if plot == 'weekly':
period = 'w'
elif plot == 'daily':
period = 'd'
elif plot == 'monthly':
period = 'm'
ret = rrdtool.graph( "/var/www/Grafikseiten/solartemp-%s.png" %(plot), "--start", "-1%s" %(period), "--vertical-label=Grad Celsius",
'--watermark=playground.in.supportex.net',
"-w 800",
"-h 220",
"DEF:m1_num=Daten/solardaten.rrd:Kollektor_heiss:AVERAGE",
"DEF:m2_num=Daten/solardaten.rrd:Kollektor_kalt:AVERAGE",
"DEF:m3_num=Daten/solardaten.rrd:Speicher_oben:AVERAGE",
"DEF:m4_num=Daten/solardaten.rrd:Speicher_unten:AVERAGE",
"DEF:m5_num=Daten/solardaten.rrd:Puffer_oben:AVERAGE",
"DEF:m6_num=Daten/solardaten.rrd:Puffer_unten:AVERAGE",
"DEF:m7_num=Daten/solardaten.rrd:Aussentemperatur:AVERAGE",
"DEF:m8_num=Daten/solardaten.rrd:Fussboden_Ruecklauf:AVERAGE",
"LINE2:m1_num#FF00FF:Kollektor_heiss",
"LINE1:m2_num#0000FF:Kollektor_kalt",
"LINE2:m3_num#FF0000:Speicher_oben",
"LINE1:m4_num#00FF00:Speicher_unten",
"LINE1:m5_num#CC0099:Puffer_oben",
"LINE1:m6_num#663300:Puffer_unten",
"LINE1:m7_num#FFFF00:Aussentemperatur",
"LINE1:m8_num#00FFFF:Fussboden_Ruecklauf")
Alles anzeigen
Nun sollte das Script mittels php beim Aufruf der Seite ausgeführt werden.
Dazu habe ich die /etc/sudoers ergänzt durch
www-data ALL=NOPASSWD:/home/pi/ Grafiken_erzeugen2.py
Dann habe ich den User gpio der Gruppe www-data hinzu gefügt.
(nach Anleitung aus: https://pi-buch.info/gpio-steuerung-in-php-scripts/)
Hier mein php-Script "index_seite2.php"
<html>
<head>
<META HTTP-EQUIV="refresh" CONTENT="60">
<title>BMP085 - Graphen</title>
<style type="text/css">
body {background-color:#fff;
color:black;
padding-top:0px;
padding-left:20px;
padding-right:20px;
padding-bottom:50px;
margin:10px;
}
h2 {font-family:helvetica;
margin-top:50px;
}
img {margin-top:10px;
margin-bottom:5px;
}
</style>
</head>
<body>
<?php
exec("sudo /home/pi/Grafiken_erzeugen2.py"); # Aufruf des Python-Scripts zur Erstellung der Verlaufs-Grafiken
?>
<a href="/index.php">zurück zur Übersicht</a>
<h2>Tageswerte</h2>
<img src="solartemp-daily.png" alt="Temperaturen-Tageswerte"> <br>
<h2>Wochenwerte</h2>
<img src="solartemp-weekly.png" alt="Temperaturen-Wochenwerte"><br>
<h2>Monatswerte</h2>
<img src="solartemp-monthly.png" alt="Temperaturen-Monatswerte"><br>
</body></html>
Alles anzeigen
Die Seite funktioniert, d.h. die Grafiken werden angezeigt, aber leider nicht neu erstellt.
Ich finde auch keine Fehler in den Logdateien /var/log/auth.log oder /var/ligttpd/error.log
Habe mit Berechtigungen und Gruppenzuweisungen herum probiert, aber keine Lösung gefunden.
Der nächste Versuch war, das Python-Script "Grafiken_erzeugen2.py" über die cron zu starten.
Habe dazu die crontab um folgende Zeile ergänzt
*/5 * * * * root python /home/pi/Grafiken_erzeugen2.py 2>&1 >> /home/pi/grafiken.log
Die grafiken.log zeigt mir auch, dass alle 5 Minuten das Scrpt gestartet wird.
Leider werden aber die png-Grafiken des rrdtools nicht erstellt.
Kann jemand helfen?