Ankündigung

Einklappen
Keine Ankündigung bisher.

jsonread plugin url dynamisch

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    jsonread plugin url dynamisch

    Hi,

    Ich würde gerne die day ahead stundenwerte meines Stromanbieters auslesen.
    Hier die URL die von heute 0:00 Uhr 24h Werte ausgibt.
    https://api.awattar.at/v1/marketdata...=1684274400000

    Mit dem plugin hab ich schon Erfahrung, jedoch frage ich mich ob ich:
    1) 24 instanzen benötige um 24 Werte abfragen zu können?
    2) läßt sich das Start und End datum dynamisch via Logic setzen?
    3) wie muss ich die werte in eine DB schreiben um ein Balken Diagram mit 24 Werten zu erzeugen?

    Würde mich über ein paar Tipps freuen.

    Danke
    Markus

    #2
    Das Plugin sieht wohl dynamische URLs nicht vor. Müsste man entsprechend umprogrammieren, zB durch Hinzufügen eines neuen Attributs, das man dann einem str Item gibt. Jenes Item müsste dann die URL beherbergen.

    Wie ich das sehe, kannst du entweder 24 Instanzen anlegen oder einfach die ganze Data Liste in ein einzelnes Item schreiben und dieses dann mittels eval auf Hilfsitems aufdröseln. also sowas wie eval: sh...()[0], etc. in den Hilfsitems

    Kommentar


      #3
      Zitat von Onkelandy Beitrag anzeigen
      Das Plugin sieht wohl dynamische URLs nicht vor. Müsste man entsprechend umprogrammieren, zB durch Hinzufügen eines neuen Attributs, das man dann einem str Item gibt. Jenes Item müsste dann die URL beherbergen.
      Das wäre in der Tat eine sinnvolle Erweiterung.

      Zitat von Onkelandy Beitrag anzeigen
      .... oder einfach die ganze Data Liste in ein einzelnes Item schreiben und dieses dann mittels eval auf Hilfsitems aufdröseln. also sowas wie eval: sh...()[0], etc. in den Hilfsitems
      Da komm ich nicht ganz mit. Wie könnte man mit eval die liste in einzelne items aufteilen? Die Struktur der einzelnen Wert ist nämlich immer die selbe....​
      könnte man einzelne Zeilennummern ansprechen?

      Z.b. sh.item1(sh.itemliste[0]) oder wie würde der genaue Code aussehen?
      Zuletzt geändert von fuxl66; 17.05.2023, 17:23.

      Kommentar


        #4
        Code:
        jsonitem:
           type: list
           jsonread_filter: .data
        
           hour1:
             type: num
             eval_trigger: ..
             eval: sh...()[0]["marketprice"]
        etc.
        Nicht getestet.. aber es gibt hier im Forum ähnliche Lösungen für ähnliche Probleme.
        Kannst hour1 bis hour24 natürlich auch als dict anlegen mit sh...()[0] im eval

        Kommentar


          #5
          [QUOTE=Onkelandy;n1869592]
          Code:
          jsonitem:
          type: list
          jsonread_filter: .data
          
          hour1:
          type: num
          eval_trigger: ..
          eval: sh...()[0]["marketprice"]
          Das klappt erstmal, Danke.
          Eine Frage noch, wie kann man ein list Item mit einträgen befüllen?
          Code:
          sh.Strom.MarktpreisTag.Marktpreis_list.append(sh.Strom.MarktpreisTag.Marktpreis_templist()[0]["marketprice"])
          Das klappt so nicht. Ich versuche mir eine "cleane" List zu basteln um min / max werte abzufragen.
          Marktpreis_list = type list

          Kommentar


            #6
            Könntest so probieren..
            Code:
               cleanlist:
                 type: list
                 eval_trigger: ..
                 eval: [sh...()[0]["marketprice"],sh...()[1]["marketprice"],...]
            oder über eine Logik

            Kommentar


              #7
              Onkelandy
              Vielen Dank für deinen Support, funktioniert soweit.
              ine Frage noch zum Plugin und Cycle.
              Wenn ich zb. cycle = 600 (10min) verwende und sh.py neustarte, wird dann das Plugin alle 10min ausgeführt beginnend mit dem Startzeitpunkt von sh.py. ?
              zb. 09:31:05 --> nächste durchführung 09:41:05

              Ich hätte es jedoch gerne nur einmal pro tag um 14:00 Uhr ausgeführt. kann man auch crontab verwenden, wie bei der Logik?
              Zuletzt geändert von fuxl66; 18.05.2023, 08:36.

              Kommentar


                #8
                Soweit ich das sehe, unterstützt kaum ein/kein Plugin direkt crontab. Würde daher eher auf eine Logik bauen. Dort kannst du ja per crontab triggern lassen.
                In der Logik könntest du dann sh.jsonread.poll_device() aufrufen.
                In der Annahme, dass in deiner plugin.yaml die jsonread Config unter "jsonread" deklariert ist. Sonst müsstest halt den Namen entsprechend anpassen.

                Die oberen Sachen pflege ich mal in die user_doc ein.

                Kommentar


                  #9
                  Statt einer Logik kann natürlich auch ein Item mit crontab und eval eingesetzt werden.
                  Viele Grüße
                  Martin

                  There is no cloud. It's only someone else's computer.

                  Kommentar


                    #10
                    Hi und Danke für den Hinweis wie mal ein Plugin manuell auslösen kann.
                    Ich verwende jetzt cycle. Positiver Nebeneffekt, ich hab immer den aktuellen Wert am Index 0.
                    Die Logic um alle stunden items entsprechend zu aktualisieren läuft 1x am Tag um 14:00 Uhr.

                    Eine frage hab ich aber noch.
                    Ich lese aus der list den min wert wie folgt aus:

                    Code:
                       sh.Strom.MarktpreisTag.Marktpreis_list.Stunde9(round((sh.Strom.MarktpreisTag.Marktpreis_templist()[8]["marketprice"])/10,1))
                    ​
                    Wie kann ich zusätzlich die Position des min Wertes auslesen? Ich hab Probleme .Index in das richtige Format zu bringen.

                    Kommentar

                    Lädt...
                    X