Ankündigung

Einklappen
Keine Ankündigung bisher.

plot.period aus Liste

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

    plot.period aus Liste

    Ich möchte eine eigene Liste oder auch ein struct in ein plot.period darstellen. Irgendwie kriege ich das nicht hin. Es zeigt einfach keine Inhalte an.

    Daten, die so im Item stehen.
    Code:
    [[1731438000000, 14.69], [1731441600000, 13.07], [1731445200000, 12.7], [1731448800000, 11.74], [1731452400000, 11.89], [1731456000000, 11.3], [1731459600000, 10.88], [1731463200000, 10.87], [1731466800000, 11.26], [1731470400000, 12.3], [1731474000000, 16.24], [1731477600000, 27.27], [1731481200000, 36.12], [1731484800000, 33.58], [1731488400000, 32.0], [1731492000000, 31.44], [1731495600000, 33.21], [1731499200000, 33.22], [1731502800000, 33.74], [1731506400000, 41.14], [1731510000000, 35.54], [1731513600000, 19.58], [1731517200000, 31.47], [1731520800000, 17.79]]
    Widget:
    Code:
    {{ plot.period('', 'Zentral.Energie.Management.EPEX.forecast_timelist', 'avg', '24h', 'now', '', '', '', '', '', 'column', '', '', '', '', '', '', 'cent/kWh', '', '', '', '', 'item') }}
    Angezeigt soll ein Säulendiagramm der nächsten 24 Stunden, inkl. der aktuellen, was quasi die Daten bereitstellen. 'avg' ist nur zum testen, eigentlich soll genau der Wert der da ist angezeigt werden.
    Zuletzt geändert von Cannon; 12.11.2024, 20:55.

    #2
    Moin Cannon ,

    der früheste Zeitstempel ist heute 16:00 Uhr und der Plot soll in die Zukunft gehen. Du skalierst den Plot aber auf die letzten 24 Stunden. Probiere mal 'now', '-24h' anstatt '24h', 'now'. Das hatte ich irgendwann mal implementiert und es sollte gehen. Ich kann aber aktuell nicht selbst testen.

    Gruß
    Wolfram

    Kommentar


      #3
      Zitat von wvhn Beitrag anzeigen
      der früheste Zeitstempel ist heute 16:00 Uhr und der Plot soll in die Zukunft gehen. Du skalierst den Plot aber auf die letzten 24 Stunden. Probiere mal 'now', '-24h' anstatt '24h', 'now'.
      Ich habe mal noch ein bisschen gesucht. Das mit den Zeiten scheint generell auch so zu funktionieren, auch wenn es nicht ganz passt. Allerdings ging es erst, als ich beim letzten Parameter "source" das "item" entfernt habe, obwohl "item" richtig sein sollte. Und dann auch nicht so richtig. Denn eigentlich will ich genau die Daten darstellen, die da drin stehen. Also keine relativen Zeiten. Im Diagramm zeigt der mir auch für die Zahlen viel zu hohe Werte. Statt 14,69 cent werden mir da 118,65 cent angezeigt. Und vor allem mit jedem Laden des Widgets werden andere Werte angezeigt, obwohl die Basis immer gleich ist.
      Zuletzt geändert von Cannon; 12.11.2024, 21:14.

      Kommentar


        #4
        Ich habe Deinen Widget-Code jetzt getestet und er funktioniert mit den genannten Änderungen von tmin und tmax im Prinzip. Voraussetzung ist, dass die Datenreihe in einem item vom Typ list steht. Soweit ich mich entsinne, funktioniert dies mit dem Typ dict nicht.

        Jetzt muss man sich noch um die Zeitachse kümmern. Die Datenreihe geht 24 Stunden ab heute 16.00 Uhr. Wenn Du alle 24 Werte darstellen willst, musst Du die relativen durations immer wieder anpassen. Geht man davon aus, dass die Datenquelle stündlich neue Werte liefert, dann sollte das aber mit den durations 'now' und '-24h' passen. Alternativ kann man absolute Zeitstempel verwenden.

        Code:
        {{plot.period('', 'myListItem', 'avg', '1731438000000', '1731520800000', '', '', '', '', '', 'column', '', '', '', '', '', '', 'cent/kWh', '', '', '', '', 'item')}}
        führt zu folgendem Ergebnis:

        image.jpg

        Gruß
        Wolfram

        EDIT: URL-Tags um die Zeitstempel herum gelöscht.
        Zuletzt geändert von wvhn; 13.11.2024, 09:47.

        Kommentar


          #5
          Zitat von wvhn Beitrag anzeigen
          Ich habe Deinen Widget-Code jetzt getestet und er funktioniert mit den genannten Änderungen von tmin und tmax im Prinzip. Voraussetzung ist, dass die Datenreihe in einem item vom Typ list steht. Soweit ich mich entsinne, funktioniert dies mit dem Typ dict nicht.
          Danke für deine Unterstützung.

          Ja der ist auch vom Typ list:

          Code:
          Zentral:
              Energie:
                  Management:
                      EPEX:
                          forecast_timelist:
                              type: list
                              cache: yes​
          Kannst du mir mal den Code senden, wo du das mit den relativen Zeiten getestet hast? Ich kriegs bei mir nicht hin. Hier ist noch mal ein aktueller Datensatz:

          Code:
          [[1731481200000, 36.12], [1731484800000, 33.58], [1731488400000, 32.0], [1731492000000, 31.44], [1731495600000, 33.21], [1731499200000, 33.22], [1731502800000, 33.74], [1731506400000, 41.14], [1731510000000, 35.54], [1731513600000, 19.58], [1731517200000, 31.47], [1731520800000, 17.79], [1731524400000, 19.95], [1731528000000, 14.14], [1731531600000, 12.75], [1731535200000, 11.34]]
          Zitat von wvhn Beitrag anzeigen
          Alternativ kann man absolute Zeitstempel verwenden
          Die kann ich aber nirgends hinterlegen? Denn die verändern sich ja immer. Ziel sollte sein, dass immer der Datensatz angezeigt wird der drin ist. Das kann im schlimmsten Fall auch mal sein, dass ein Abruf gar nicht geklappt hat. Dann sollte eigentlich der Start 2h vorher sein, also das angezeigt werden, was auch eine Stunde vorher aktuell war. Ist das irgendwie so realisierbar?

          Was macht das URL ... und tel. genau?

          Kommentar


            #6
            Zitat von Cannon Beitrag anzeigen
            Was macht das URL ... und tel. genau?
            Das musst Du mein iPad fragen. Ich hatte das gesehen und gelöscht, aber das iPad hat dies wieder ergänzt. Ist jetzt im Post korrigiert.

            Kommentar


              #7
              Das duration-Format ist eine relative Zeitangabe und hat den Vorteil, dass man sich nicht um Zeitverschiebung, Sommerzeit etc. kümmern muss. Die Umrechnung erfolgt intern, indem der angegebene duration string geparst, in Millisekunden umgerechnet und dann vom Zeitstempel der aktuellen Zeit subtrahiert wird. Will man Zeitstempel in der Zukunft errechnen, muss man also negative durations angeben. Das brauchst Du hier für die Prognosedaten.

              Wie Du das WIdget parametrieren musst, hängt davon ab,
              • welchen Zeitraum der Datensatz abdeckt
              • welchen Ausschnitt der Daten Du sehen möchtest
              • und wie häufig das Item aktualisiert wird.
              Wenn ich jetzt um kurz nach 10:00 Uhr den Datensatz betrachten will, der um 7.59 Uhr beginnt und um 23:59 Uhr endet, dann gebe ich tmin = 3h und tmax=-14h vor
              Code:
              {{plot.period('', 'myListItem', 'avg', '3h', '-14h', '', '', '', '', '', 'column', '', '', '', '', '', '', 'cent/kWh', '', '', '', '', 'item')}}
              Ergebnis mit dem Inhalt Deines Items:
              grafik.png

              Wenn die Daten jetzt stündlich aktualisiert werden und nicht in die Vergangenheit reichen, kann man tmin auf '1h' setzen und tmax auf die zu erwartende Länge des Datensatzes. Für die gestrigen Daten hätte ich '-24h' genommen.

              Am besten kopierst Du den Widget Code in den Widgetassistenten und probierst dort die passende Einstellung aus. Wenn das nicht klappt, schau nochmal nach den Daten im List-Item. Wenn die im Admin Interface von shNG genau so angezeigt werden, wie in Deinem Post sind sie OK. Die Bedingung, dass die Daten in aufsteigender zeitlicher Reihenfolge angegeben sein müssen, ist hier ja auch erfüllt.

              Gruß
              Wolfram
              Zuletzt geändert von wvhn; 13.11.2024, 10:21.

              Kommentar


                #8
                Zitat von wvhn Beitrag anzeigen
                Wenn ich jetzt um kurz nach 10:00 Uhr den Datensatz betrachten will, der um 7.59 Uhr beginnt und um 23:59 Uhr endet, dann gebe ich tmin = 3h und tmax=-14h vor
                Das heißt den gleichen Datensatz jetzt nur nach 15 Uhr .. 8h und -9h ... ? Egal, wie ich es drehe, wenn ich den Parameter item einsetze, zeigt der bei mir nichts an. Das Feld bleibt leer. Es stehen zwar unten Zeiten (in der Mitte 12 Uhr, dann 18 Uhr und 14 Nov), aber keine Balken.

                Eigentlich möchte ich genau die Daten darstellen, die ich da in dem Item habe und will mir gar keine Gedanken darüber machen, wie spät es jetzt ist. Geht das gar nicht?

                Zitat von wvhn Beitrag anzeigen
                besten kopierst Du den Widget Code in den Widgetassistenten und probierst dort die passende Einstellung aus.
                Ich verstehe den Assistenten nicht. Da sind 3 grüne Kästchen und ein rotes. Das rote ist "Widgets loaded". Soll das so sein? Aber egal, was ich da eintrage, im Preview zeigt er mir was völlig anderes an. Irgendwas mit Temperaturen.

                Kommentar


                  #9
                  Wie oft soll denn das Item aktualisiert werden? Kommt der Fall überhaupt vor, dass Du um 15.00 Uhr noch die alten Daten von 8.00 Uhr sehen musst? Wenn das Zeitfenster des Plots und die Daten im item über den Tag gemeinsam wandern, ist doch die Anzeige immer OK. Ich denke da findet man schon eine befriedigende Einstellung. Notfalls muss man den Zeitraum einfach groß genug machen, z.B. 24h/-24h.

                  Mehr beunruhigt mich, dass das Widget mit dem Parameter „source“=„item“ nicht funktioniert. Den Parameter gibt es seit v3.2. Welche Version setzt Du ein? Hast Du die üblichen Klassiker abgeprüft: Cache, Überreste einer alten Installation - insbesondere plot.html und plot.js in einem der üblichen Widget-Ordner …? In den Tests habe ich Deinen Widget-Aufruf 1:1 verwendet und nur den item-Namen geändert. D.h. grundsätzlich funktioniert das Widget. Öffne doch mal die Browser-Tools, mache einen Reload der Seite und schau in der Konsole, welche Daten empfangen werden. Die Info beginnt mit
                  Code:
                  [io.smarthomeNG] receiving data ..
                  Zudem kannst Du in der Konsole „widget.buffer“ eingeben und siehst dann, welche Daten für das Item tatsächlich verarbeitet wurden.

                  Wenn der Widgetassistent das eingegebene Widget nicht anzeigt, stimmen wahrscheinlich die Schreibrechte im Ordner Deiner Seiten nicht.

                  Gruß
                  Wolfram
                  Zuletzt geändert von wvhn; 13.11.2024, 17:04.

                  Kommentar


                    #10
                    Lange Rede kurzer Sinn. Das Problem ist behoben. Und ist echt komisch das zu sagen, aber als ich den Cache deaktiviert habe, zum testen, hat der auch die Verbindung zu SmartHomeNG gekappt. Kann ich nicht nachvollziehen, war aber so. Denn mir ist gerade aufgefallen, dass auch die anderen "Items" nicht funktionierten. Kurz gesagt es funktioniert jetzt genau so, wie erwartet:

                    Code:
                    {{ plot.period('', 'Zentral.Energie.Management.EPEX.forecast_timelist', 'raw', '1h', '-23h', '', '', '', '', '', 'column', '', '', '', '', '', '', 'cent/kWh', '', '', '', '', 'item') }}
                    Angezeigt wird die bereits begonnene Stunde + 23 h weiter. Also aktuell von 17 Uhr (es ist jetzt 17:28 Uhr) heute bis morgen 16 Uhr.

                    Ich setzte Version 3.4.0 ein. Der Widget-Assistent zeigt aber dennoch murks an. Ich schaue mir das mal mit den Schreibrechten an. Sollte aber "Widgets loaded" nicht auch grün sein?
                    Angehängte Dateien

                    Kommentar


                      #11
                      OK. Erledigt. Prima.

                      WA Ist hier off topic, aber nur ganz kurz:
                      "items loaded" kann rot sein, wenn man die "masteritem.json" nicht vom smartvisu-Plugin erzeugen lässt. "Widgets loaded" darf sicher nicht rot sein. Das schau ich mir mal an und notfalls machen wir einen eigenen Thread für das Thema auf. Alle 4 Infos betreffen eigentlich nur die autocomplete-Listen, die beim Erstellen von Widgets in Auswahlmenüs eingeblendet werden und das Erstellen der Parameter erleichtern. Der Renderer müsste aber trotz des "widgets loaded"-Problems laufen.

                      Kommentar

                      Lädt...
                      X