rrd tool Update

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
HoLaHe
User
Beiträge: 15
Registriert: Montag 11. Juli 2022, 07:46

Hallo zusammen,

ich habe einen Raspberry Pi 3B mit einem DHT22 Sensor verbunden, Ich habe mir ein python Script geschrieben welches Die Daten ausliest und diese dann in einen "rrd Datenbank" speichern soll. Ich bekomme jedoch beim ausführen der Python Datei einen Fehler angezeigt, kann mir jamnd sagen was ich falsch mache? Ich bin noch Python Anfänger :wink:

sudo python rrd.py
File "/home/pi/rrd.py", line 29
rrdtool.update("temp.rrd", "N:" + "temperature")
TabError: inconsistent use of tabs and spaces in indentation

Hier mal mein Script:
import rrdtool
import Adafruit_DHT

#Sensor-Daten
DHT_SENSOR = Adafruit_DHT.DHT22
DHT_PIN = 17

#Datenbanken_erstellen
rrdtool.create(
"temp.rrd",
"--start", "now",
"--step", "300",
"RRA:AVERAGE:0.5:1:1200",
"DS:temp:GAUGE:600:-273:5000")

rrdtool.create(
"luft.rrd",
"--start", "now",
"--step", "300",
"RRA:AVERAGE:0.5:1:1200",
"DS:luft:GAUGE:600:-273:5000")


#Messdaten holen und wegspeichern
while True:
humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)

if humidity is not None and temperature is not None:
rrdtool.update("temp.rrd", "N:" + "temperature")
rrdtool.update("luft.rrd", "N:" + "humidity")

else:
print("Failed to retrieve data from humidity sensor")

time.sleep(300)
Sirius3
User
Beiträge: 17793
Registriert: Sonntag 21. Oktober 2012, 17:20

Die Fehlermeldung bedeutet, dass Du in Zeile 29 Tabs statt Leerzeichen benutzt hast, was man aber an dem Code, den Du gepostet hast, nicht mehr nachvollziehen kann, weil dort alles korrekterweise mit Leerzeichen eingerückt wird.
Achte immer darauf, keine Tab-Zeichen zu verwenden. Stelle Deinen Editor so ein, dass die Tab-Taste automatisch Leerzeichen erzeugt.

"temperature" und "humidity" sollen wahrscheinlich keine Strings sein, benutzt f-Strings: f"N:{temperature}"
HoLaHe
User
Beiträge: 15
Registriert: Montag 11. Juli 2022, 07:46

Hallo Sirius3

danke für die Tips.

Wenn ich dirch richtig verstanden habe sollte es jetzt so aussehen?
import rrdtool
import update as rrd_update
import Adafruit_DHT

#Sensor-Daten
DHT_SENSOR = Adafruit_DHT.DHT22
DHT_PIN = 17

#Datenbanken_erstellen
rrdtool.create(
"temp.rrd",
"--start", "now",
"--step", "300",
"RRA:AVERAGE:0.5:1:1200",
"DS:temp:GAUGE:600:-273:5000")

rrdtool.create(
"luft.rrd",
"--start", "now",
"--step", "300",
"RRA:AVERAGE:0.5:1:1200",
"DS:luft:GAUGE:600:-273:5000")


#Messdaten holen
while True:
humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)

if humidity is not None and temperature is not None:
rrdtool.update temp.rrd f"N:{temperature}
rrdtool.update luft.rrd f"N:{humidity})

else:
print("Failed to retrieve data from humidity sensor")

time.sleep(300)
dann bekomm ich einen Syntax Fehler
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du musst den Code mit Code Tags posten. Nicht als Zitat.
Sirius3
User
Beiträge: 17793
Registriert: Sonntag 21. Oktober 2012, 17:20

Weil jetzt Klammern, Kommas und Anführungszeichen fehlen. Arbeite ein Python-Grundlagentutorial durch, wo solche Dinge erklärt werden.
Antworten