Hi Leute,
ich bin relativ neu in Python und komme grade nicht weiter. Ich möchte zwei Temperaturwerte in eine rrd Datenbank schreiben. Allerdings erhalte ich bei einem negativen Temperaturwert eine Fehlermeldung, die ich nicht lösen kann. Ich habe einiges versucht, um alternative replacments zu verwenden, das Problem ist jedoch leider geblieben. Ich hoffe, Ihr könnt mir weiterhelfen.
Zunächst einmal die Datenbank selbst:
Code
rrdtool create outtemp.rrd --step 3600 DS:temp0:GAUGE:1200:-40:60 DS:temp1:GAUGE:1200:-40:80 RRA:AVERAGE:0.5:1:240 RRA:MIN:0.5:96:3600 RRA:MAX:0.5:96:3600 RRA:AVERAGE:0.5:96:3600
Und hier mein Script (Informationen in den Kommentaren im Script):
Python
#!/usr/bin/python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import os
import rrdtool
import time
import logging
import requests
# Ich nehme hier zum Test extra eine Russische Wetterstation um einen Minuswert zu simulieren. Am Ende gibt es quasi nur w1
w1 = requests.get('http://wttr.in/TXL?format=%t');
w2 = requests.get('http://wttr.in/~Vostok+Station?format=%t');
w1 = (w1.text)
w1 = w1.replace("+", "")
w1 = w1.replace(u"°", "")
w1 = w1.replace("C", "")
#print(w1)
w2 = (w2.text)
w2 = w2.replace("+", "")
w2 = w2.replace(u"°", "")
w2 = w2.replace("C", "")
#print(w2)
# hier habe ich auch %d und %u und %i getestet sowie andere Formatierung hat aber leider ebenfalls nicht funktioniert
rrdtool.update('outtemp.rrd', 'N:%s:%s' %(w1,w2));
#log als Debug Möglichkeit
logger = logging.getLogger('gelaufen');
logger.setLevel(logging.DEBUG);
fh = logging.FileHandler('outtemp.log');
fh.setLevel(logging.DEBUG);
logger.addHandler(fh);
formatter = logging.Formatter('%(asctime)s - %(name)s - %(message)s');
fh.setFormatter(formatter);
logger.addHandler(fh);
logger.debug('Temps: %s | %s ', w1,w2);
Display More
Vielleicht habt Ihr eine Idee, wie ich das Problem lösen kann. Im Log wird es übrigens korrekt angezeigt.
Gruß & Danke für Euer Feedback
Sc0rc3d