Hi,
ich habe mal wieder Schmerzen mit dem rrdtool. Dazu folgender source code:
Erstellen der Datenbank:
#!/usr/bin/python
import rrdtool
def create_db():
rrdtool.create(
'fishtank.rrd',
'--start', 'now',
'--step', '60',
'RRA:AVERAGE:0.5:1:12',
'DS:temp:GAUGE:180:10:40'
)
create_db()[/php]
Update der Datenbank:
[code=php]#!/usr/bin/python
import re, rrdtool
def read_sensor():
w1_slave_path = '/sys/devices/w1_bus_master1/'\
'28-0316634da7ff/w1_slave'
with open(w1_slave_path) as log:
for line in log:
temperature = re.findall(r"[0-9]{5}", line)
if temperature:
for element in temperature:
temperature = float(element) / 1000
return temperature
if __name__ == '__main__':
temperature = 'N:{0:.2f}'.format(read_sensor())
print temperature
rrdtool.updatev('fishtank.rrd', temperature)[/php]
Crontab:
[code]* * * * * /home/user/aquarium/fishtank_update.py > /tmp/cron.output 2> /tmp/cron.error
Display More
Alle 60 Sekunden soll die Datenbank aktualisiert werden, es werden auch durch crontab verspätete Werte (bis zu 180 Sekunden danach) noch akzeptiert. Der cronjob sollte eigentlich funktionieren, da die Daten in /tmp angelegt und die erwartete Ausgabe des Temperaturwertes durch das Skript funktioniert. Das Aktualisieren der .rrd-Datenbank bleibt allerdings aus.
Auch unter /var/log/syslog wird der cronjob durch den privilegierten ´user´ fleißig ausgeführt.
Wird das update-skript händisch ausgeführt, werden Werte in die .rrd-Datenbank geschrieben. Momentan fällt mir nix mehr zum debuggen ein, vielleicht sehe ich den Fehler vor lauter Probieren nicht mehr.
Bitte um eure Unterstützung.
sls