Mein neues Projekt, Data von .json auslesen und weiter verwenden

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo bitte brauche nochmals Hilfe fuer eine json liste die etwas anderst strukturiert ist wie die von Beitrag 5.

    Wie filtere ich "emeters" und "power" im ersten Element, damit ich ihn weiter verarbeiten kann mit z.B print.

    Blicke da immer noch nicht ganz durch.

  • Mein neues Projekt, Data von .json auslesen und weiter verwenden? Schau mal ob du hier fündig wirst!

  • Print hat funktioniert , jetzt im script kommt aber ein error:

    script:

    Code
  • In meinem script funktioniert schon an verschiedenen Stellen das logging .

    Wie kann ich den Wert der mit print ausgegeben wird in die .log Datei schreiben?


    Code
     print(raum["sensoren"][1]["wert"])
     logging.info('Watt') # Logeintrag???????
  • Ich würde sagen in dem du die Abfrage des jeweiligen Wertes mit ins Log nimmst.

    Python
     print(raum["sensoren"][1]["wert"])
    
     logging.info(f"Watt: {raum["sensoren"][1]["wert"]}")

    ich weiß jetzt aber nicht was das logging-Modul noch bereit hält.

  • Danke fuer die schnelle Rueckmeldung.

    Leider kommt ein Fehler. Fuer was ist das f in (f " Watt : ?

    Code
    pi@solaranzeige:~/th $ /home/pi/th/SG_Ready.py
      File "/home/pi/th/SG_Ready.py", line 68
        logging.info(f"Watt: {raum["sensoren"][1]["wert"]}")  # Logeintrag
                                           ^
    SyntaxError: invalid syntax
    pi@solaranzeige:~/th $
  • Und schon gehts :bravo2:

    Danke Euch- :)

    Code
    Woche 45 Do 10.11.2022 10:50:02 gelbw
    Woche 45 Do 10.11.2022 10:51:01 gelbw
    Woche 45 Do 10.11.2022 10:52:01 gelbw
    Woche 45 Do 10.11.2022 10:53:02 gelbw
    Woche 45 Do 10.11.2022 10:54:02 gelbw
    Woche 45 Do 10.11.2022 10:54:49 Watt: 20.600000381469727
    Woche 45 Do 10.11.2022 10:55:02 gelbw
  • Du könntest den Wert noch Runden:

    Python
    logging.info(f"Watt: {round(raum['sensoren'][1]['wert'], 1)}")

    Statt der 1 nach dem Komma, kannst du auch 2 oder 3 usw. angeben. Das sind dann die Stellen nach dem Komma.

  • Wobei man da eher die Möglichkeiten der Zeichenkettenformatierung statt `round()` verwendet:

    Python
    logging.info(f"Watt: {raum['sensoren'][1]['wert']:.1f}")

    Allerdings würde man beim Logging auch eher gar nicht selbst formatieren, sondern eine Zeichenkettenvorlage mit %-Platzhaltern und den/die Wert(e) getrennt übergeben:

    Python
    logging.info("Watt: %.1f", raum["sensoren"][1]["wert"])

    Dann wird nur in Zeichenkette umgewandelt/formatiert wenn auch tatsächlich protokolliert wird.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • Funktioniert, Danke.

    Code
     print (obj ["emeters"][0]["power"])
     logging.info(f"Watt: {round(obj ['emeters'][0]['power'], 2)}")  # Logeintrag
    Code
     print(raum["sensoren"][1]["wert"])
     logging.info(f"Temp: {round(raum['sensoren'][1]['wert'], 2)}")  # Logeintrag


    Code
    Woche 45 Do 10.11.2022 12:18:34 SG-Ready bit1 aus1 -500
    Woche 45 Do 10.11.2022 12:18:35 SG-Ready bit2 aus1 -500
    Woche 45 Do 10.11.2022 12:19:10 Watt: 608.77
    Woche 45 Do 10.11.2022 12:19:33 Temp: 20.76
    Woche 45 Do 10.11.2022 12:19:33 SG-Ready bit1 aus1 -500
    Woche 45 Do 10.11.2022 12:19:34 SG-Ready bit2 aus1 -500
    Woche 45 Do 10.11.2022 12:20:33 Temp: 20.76
  • Hallo,

    was könnte der Grund sein dass der log 8x in der gleichen sec, den log füllt?

    Meine Schleife fragt das script alle min. ab.


  • Danke fuer Deine Antwort.

    Immer wenn ich ein script poste, sagen alle man versteht es nicht, ist nicht übersichtlich. Mit den Kommentaren sollte man doch verstehen was es macht.

    Ich bin kein Programmierer und das was ich hier programmiere kommt von dem was ich früher mit SPS programmiert habe, anders istt es für mich ja noch komplizierter ||

    Trotzdem eine Idee warum der log Eintrag nicht nur alle 30 sec. erfolgt?

  • was könnte der Grund sein dass der log 8x in der gleichen sec, den log füllt?

    Mit dem gezeigten Skript? Ich finde in dem Skript keine Zeile die irgendwas mit "Watt" loggt. Bin ich blind? :conf:

    Grüße

    Dennis

    P.S. nur weil da "Nachbooster Ein/Aus" oder /23h" als Kommentar steht, macht dass den Code nicht besser lesbar. Die Infos bringen mir z.B. nichts. Ordentliche, sprechende Namen würden weiterhelfen. 'timewindow1' etc. sagen so viel, wie wenn du das Objekt "blau_gruener_elefant' nennen würdest.

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Ich sehe da ehrlich gesagt auch kein Watt.

    Da gibts nur

    Python
    # Raumtemperatur auslesen (Wohnzimmer west / Controme)
    logging.info("Temp: %.2f", raum ["sensoren"][1]["wert"])

    und

    Python
    # Shel1y WP_Verbrauch auslesen
    logging.info('WP StartStartStartStartStart') # Logeintra

    Warum auch immer da x-mal start steht. :lol:

    Ich bin kein Programmierer und das was ich hier programmiere kommt von dem was ich früher mit SPS programmiert habe, anders istt es für mich ja noch komplizierter

    Das ist ja auch nicht bös gemeint. Ich denke aber das du doch langsam wissen müsstest wie man Funktionen nutzt.

  • Dennis89

    Du hast recht, in diesem scrip steht nicht von Watt die geloggt werden sollten, das kommt von einem anderen script das aber genau gleich aufgebaut ist.

    Nachtbooster, wenn die Bedingung erfüllt ist, schaltet es die Waermepumpe über das SG-Ready signal etwas höher.

    23h = bis 23.00h

    timewindow1-6 = Zeitfenster wo abgefragt werden soll ( Anfang/Ende).

    keepfear

    WP-StartStartStartStartSart habe ich nur so gewählt damit es im log hinten heraussteht und ich es schneller finde, sollt ja nur alle 3-4h mal eintreten.

    Hier noch das script mit dem Watt logging

Jetzt mitmachen!

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