Ankündigung

Einklappen
Keine Ankündigung bisher.

X-Achse von plot.period dynamisch ändern (und Daten nachladen)

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

    X-Achse von plot.period dynamisch ändern (und Daten nachladen)

    Ich würde gerne einen Plot der den Tagesverlauf meiner PV-Produktion anzeigt so erweitern, dass ich mit zwei Buttons einen Tag vor bzw. zurück schalten kann.
    Also Klick auf den linken Button soll die Daten von gestern laden und darstellen, ein weiterer Klick dann vorgestern usw. Analog ein Button auf der rechten Seite der dann eben wieder nach vorne schalten kann.
    Geht das irgendwie? Wichtig dabei ist mir, dass die Daten erst aus der DB geladen werden wenn sie benötigt werden.

    Ich bin mit Javascript jetzt nur soweit gekommen, dass ich Buttons habe die bei Klick eine Funktion ausführen, aber ich komme nicht drauf wie ich einen Plot aktualisieren kann.

    #2
    Wenn Du auf das dynamische Nachladen der Daten verzichtest, gibt es verschiedene Wege. Das geänderte Widget device.uzsugraph im develop branch macht z.B. die selektive Darstellung einzelner Wochentage aus einem Datensatz für eine Woche. Die Buttons ändern xmin und xmax, machen ein Update der x-Achse und danach ein chart.redraw().

    Das Nachladen der Daten ist hingegen ziemlich kompliziert und kommt einem Eingriff unter der Motorhaube gleich. Die darzustellende Datenreihe wird bereits im Twig/html-Teil des Widgets aus item und duration zusammen gebaut und als „series id“ in die Eigenschaft „data-item“ geschrieben. Der Backend-Treiber sucht beim Aufrufen einer neuen Seite nach diesen Einträgen und abonniert die Daten beim Backend. Man müsste per JavaScript diese Serie abbestellen (series-cancel), mit neuen durations neu bestellen, den Eintrag data-item manipulieren und vermutlich die Listener ändern.

    Gruß
    Wolfram

    Kommentar


      #3
      Danke für die ausführliche Antwort. Das mit uszugraph hört sich erstmal nicht ausreichend an. Ich würde bei Bedarf auch gerne mehrere Wochen zurückspringen, deshalb das Nachladen der Daten.
      Vielleicht setz ich mir für die PV-Anlage noch nen extra Webserver auf und bau mir ne Web-App mit Flask/Dash/Django oder sowas.
      Die Hersteller-App meines Wechselrichters ist zwar ganz gut, aber solche Dinge wie einzelne Tagesgraphen in der Vergangenheit lassen die sich mit nem Premium-Zugang vergolden, das sehe ich irgendwie nicht ein, wenn ich die Rohdaten sowieso in meiner eigenen DB habe.

      Kommentar


        #4
        Zitat von kunig Beitrag anzeigen
        Das mit uszugraph hört sich erstmal nicht ausreichend an.
        Das sollte ja auch nur ein Codebeispiel sein, in dem Du siehst, wie man die x-Achse dynamisch ändert. Das war sie Ausgangsfrage.

        Zitat von kunig Beitrag anzeigen
        Ich würde bei Bedarf auch gerne mehrere Wochen zurückspringen, deshalb das Nachladen der Daten.
        Das geht auch ohne Nachladen der Daten. Schau Dir in plot.period die Zoom-Option „advanced“ an. Da kannst Du den gewünschten Zeitraum per Tastatur eingeben, oder per Maus eingrenzen und auf der Zeitachse navigieren.

        Eine Möglichkeit fürs dynamische Nachladen habe ich allerdings vergessen: im aktuellen develop habe ich dem Widget plot.period eine Option spendiert, mit der die Daten aus einem List-item geladen werden. Du könntest also z.B. mit basic.trigger Logiken in shNG triggern, die Dir die gewünschten Daten in das item schreiben.

        Gruß
        Wolfram



        Kommentar


          #5
          Also wenn da jemand Hand anlegt, dann hätte ich gerne die Möglichkeit zusätzliche Item Serien anzuzeigen aus einer Drop-Down Liste. So das man sich ggf. dynamisch noch ein Item dazubuchen kann...

          Kommentar


            #6
            Zitat von wvhn Beitrag anzeigen
            Das geht auch ohne Nachladen der Daten. Schau Dir in plot.period die Zoom-Option „advanced“ an. Da kannst Du den gewünschten Zeitraum per Tastatur eingeben, oder per Maus eingrenzen und auf der Zeitachse navigieren.
            Das hab ich jetzt mal umgesetzt. Mittels "rangeSelector" konnte ich auch schön die auswählbaren Zeiträume anpassen. Gefällt mir ganz gut und reicht vorerst.
            Vielleicht bau ich mir mittelfristig noch was eigenes aber danke auf jeden Fall für den Support.

            Kommentar

            Lädt...
            X