RRD Datenbank nimmt keine Daten an.

  • Hallo Zusammen,

    ich habe mir einen kleinen Klima Pi gebaut. Ich lese mit einem Python Script die Daten eines DHT22 Sensors und will diese in eirn RRD Datenbak schreiben. Wenn ich ein rrdtool lastupdate schreibe wird mir auch der letzte Datensatz angezeit. Bei einem rrdtool dump steht dann allerdings nur NAN .

    Hier mal mein Python Script

    rrdtool lastupdate klima.rrd sagt

    Code
     temp
    
    1660737818: 30

    rrdtool dump klima.rrd sagt aber

    wenn ich das richtig verstehe werden die Daten nicht in die Datenbank übernommen. Die RRD Datenbank sihet via rrdtool info so aus:

  • /ich/glaube/da/stimmt/was/nicht :-/

    Vielen Dank für die Hilfreiche Information, ist mich noch garnicht aufgefallen ;)

    Ich habe den Code jetzt nochmal überarbeitet, leider trotzdem keine Funktion.

    :wallbash:

  • Moinsen,

    Erst einmal allgemein:

    Zeile 33 + 34 haben dort nichts in der Endlosschleife zu suchen. Vollkommener Unsinn.
    Dann schafft man sich eine Lookup für den Funktionsaufruf "Abfrage der Sensorwerte", oder lagert es in eine Funktion aus.

    Dann würde ich dir diese Seite empfehlen ;)

    Franky

    Franky

  • Das kann ich mir nicht vorstellen, denn es kommen ja Daten in der rrd DB an.

    Das Problem ist ja das er als ds[temp].last_ds zwar den Messwert hat, aber bei ds[temp].value ein NaN. oder verstehe ich das falsch

  • Also ich habe die Daten für die *.rrd vorher mit str() konvertiert,vielleicht liegt es daran...

    Meiner Meinung nach ist das doch ein str() ? Hast du mal ein Beispiel von dir?

    Code
    rrdtool.update("klima.rrd",("N:{}".format(roundtemperature)))
  • Bitte sehr:

    Ausgeschnitten aus einem Skript:

    # auskommentiert fuer Testzwecke

    # rrdtool.update(

    # str(SELF_PATH / "temperature.rrd"),

    # f"N:{vorlauf}:{ruecklauf}",

    # )

    Stammt aus diesem Thread:

    Das Skript funktioniert bei mir hier.

    mfg

  • Ich hab es mal nach deinem Beispiel angeglichen. Sieht jetzt so aus :

    Code
     print ('schreibe Datenbank')
         rrdtool.update(
         str(SELF_PATH /"temp34.rrd"),
         f"N:{roundtemperature}",
         )

    Das ganze Script dann jetzt so :

    Ader die rrd info sieht immernoch nicht gut aus:

  • Hi, rettsan78;

    Nur mal zum Ausprobieren:

    Ich habe keine Ahnung von python und kapiere diese ganzen Formatierungen nicht.

    ABER: Ich bin mal genauso verzweifelt und es lag am Ende daran, dass python bei mir KEINEN string erzeugt hatte.

    Deshalb bin Ich auf diese uralte, aber sichere Zuordnung des rrd-updates gegangen.

    Nimm also mal den echten Rohwert aus deinem Sensor, (die Kommastellen stören ja nicht) und zwinge diesen Wert so definitiv in einen Stringwert:

    Code
    stringtemperature = str(float(temperature))
    data = "N:"
    data += stringtemperature
    
    rrdtool.update("/home/pi/temp34.rrd", data)
  • __blackjack__

    Entschuldigung an Alle, meine Idee war ja nur, etwas Funktionierendes (auch wenn's Voodoo ist) auszuprobieren, um dann von den Erleuchteten in diesem Forum die optimal formatierte Zeichenkette zu erhalten.

    Leider hat uns rettsan78 nun im Unklaren gelassen, welche Anpassungen er durchgeführt hat.

    -Damit Ich es vielleicht irgendwann auch blicke:

    Wie müsste denn hier das rrd-kompatible f-Zeichenkettenliteral aussehen?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!