Ankündigung

Einklappen

Hinweis

Die Forenregeln wurden überarbeitet (Stand 7.11.22). Sie sind ab sofort verbindlich. Wir bitten um Beachtung.
Mehr anzeigen
Weniger anzeigen

Verbrauchsdarstellung "pro Stunde" in smartVisu

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

    Verbrauchsdarstellung "pro Stunde" in smartVisu

    Hallo zusammen,
    ich weiß nicht, ob es eine smartVISU oder smarthomeNG Frage ist, ich probier es mal hier. Zur Ausganssituation:
    Ich habe ein Item, dass die Umdrehungen des Zählers mist. Das item heißt mqtt.strom.count und ist mit database pluging verbunden.

    Um jetzt des Verbrauch "pro Stunde" anzuzeigen, möchte ich die Pulse pro Stunde summieren, durch einen Faktor teilen und als Stair Diagram abbilden. Grundsätlich klappt das:
    Code:
            verbrauchStunde:
                type: num
                database: yes
                visu_acl: rw
                crontab: 0 * * * = 1
                eval: (sh.mqtt.strom.count.db('sum', '1h') ) / 150.0
                sv_widget: "{{ plot.period('itemF', ['item'], 'avg', '2d', 'now', '', '', 36500, '', '', 'stair', '', 'advanced')}}"
    
    ​
    Jede Stunde (crontab) (z.B. 15:00) wird das Item evaluiert, und der Verbrauch (z.B. von 14:00 bis 15:00) bestimmt und (z.B. um 15:00) als Wert eingetragen. Die Stairs Funktion hält diesen Wert jetzt bis zum nächsten Wert (hier 16:00). Damit sind die Plots um eine Stunde nach hintengeschoben.

    Langes Vorwort, kurze Frage:Wie kann ich das korrigieren?
    Zuletzt geändert von wvhn; 01.11.2022, 15:01. Grund: Status gelöst gesetzt

    #2
    ich vermute das Umstellen von stairs auf column hilft Dir nicht weiter?

    Kommentar


      #3
      Hi,
      Gerade mal probiert. Ist von der Darstellung tatsächlich besser, aber die Balken sind trotzdem um einen Eintrag verschoben.

      Ich hätte gedacht, dass ich nur was übersehen habe, weil andere scheinen das Problem ja nicht zu haben. Wie macht Ihr das denn?


      Kommentar


        #4
        Ich habe das Problem noch nicht verstanden. Wenn Du um 15.00 Uhr einen Wert errechnest und dieser wird im Modus "stair" von 15.00 Uhr bis 16.00 Uhr im Plot angezeigt, dann stimmt die Darstellung doch. Diesen Wert, der zwischen 14.00 und 15.00 Uhr gezählt wurde, schon um 14.00 Uhr anzuzeigen, wäre falsch.
        Wenn ich da etwas falsch verstanden habe, präzisiere doch bitte die Beschreibung entsprechend.

        Grundsätzlich kannst Du mit dem Modus "line" die Darstellung linearisieren. Zudem brauchst Du die Aggregation "avg" natürlich nicht und kannst es mal mit "raw" versuchen. Am besten schaust Du Dir bei ausgeschaltetem Cache in der Konsole des Browsers an, wie das Database-Plugin die Werte ausliefert. SmartVISU reicht diese 1:1 an Highcharts durch.

        Gruß
        Wolfram

        Kommentar


          #5
          Vielen Dank für die Antwort, ich werde das gleich mal probieren.

          Zum Verständnis: Man kann den Versatz auf im Kopf rausdenken, ich vertue mich aber jedes Mal.

          Nochmal mit deinem Beispiel: Um 15:00 Uhr ermittel ich den Verbrauch von 14:00 bis 15:00. Wenn ich das jetzt als Stufe von 15:00 bis 16:00 sehe (so ist es ja). Empfinde ich genau das als falsch. Richtig wäre vermutlich der Zeitpunkt 14:30.

          Anwendung: Ich schau mir den Plot an, sehe einem Ausreißer, klicke drauf, sehe z.B. xx kWh / h bei 14:22 (oder 14:01 oder 14:59). Dann rechne ich ja nicht damit, dass das der Verbrauch von 13:00-14:00 ist?

          Kann man mir folgen?

          Kommentar


            #6
            Gerade mal auf Line umgestellt: Ja, dann stimmen die Werte. Stair hält den Wert jetzt für 1h, zieht die Linie nach rechts. Ich bräuchte das jetzt andersrum, die Linie 1h nach links.

            Kommentar


              #7
              Guten Morgen. Habe mich etwas in der Highchart Doku bewegt, ich glaube, ich benötige step: 'left'.

              https://jsfiddle.net/gh/get/library/...ons/line-step/

              Der Plot ist wohl Step Lines, und so wie ich die smartVisu Doku verstehe, müsste ich das als chartOptions einbinden.

              Das sähe dann eigentlich so aus: ...{series : { step: 'left'}}

              Wenn ich das mache, sehe ich aber keine Daten mehr. Kriege ich die Option step left irgendwie durch smartVisu durch?

              Kommentar


                #8
                Ich fürchte, das geht zur Zeit nicht. Die Optionen aus den Widgetparametern werden mit Highcharts chartoptions verschmolzen, aber nicht mit den series. Du müsstest also nochmal sehen, ob dies in Highcharts auch über chartoptions eingestellt werden kann. Anderenfalls muss das Widget erweitert werden.

                P.S.: hab’s jetzt übrigens auch verstanden, Wenn man nur die Stundenwerte haben will und nicht die Entwicklung des absoluten Zählerstands, dann ist die Verschiebung tatsächlich ungünstig.

                Kommentar


                  #9
                  Hi,

                  ich habe mir den Code von smartVisu mal angesehen. In der Tat wird die step Ausrichtung hart einkompiliert:
                  https://github.com/Martin-Gleiss/sma...idgets/plot.js Z. 275 ('left'). Wenn ich da 'right' eintrage habe ich genau das, was ich will. Ist bei mir sogar unproblematisch, weil ich keine anderen stairs habe.

                  Wenn du das grundsätzlich für gut hälst, kann ich mal versuchen eine PR aufzumachen, wenn nicht können wir das hier auch beenden.

                  Falls doch: Wie würdest du Dir den Zugang vorstellen? Neuer Parameter stairMode = 'left', 'right', (und 'center')?

                  Danke und Gruß
                  curator17

                  Kommentar


                    #10
                    Einfach ändern können wir das nicht, weil dies ein breaking change für andere Anwender wäre. Ich schau mir mal an, wie man dies als Option am besten unterbringt, ohne noch einen weiteren Parameter spendieren zu müssen.

                    Gruß
                    Wolfram

                    Kommentar


                      #11
                      Genau, Breaking Change geht nicht, daher Parameter. Man könnte auch stairsLeft als Modus machen, das multipliziert sich aber hoch (will man ja vielleicht auch für areaStair oder column).

                      Was ich sagen wollte: Ich persönlich komme mit der lokalen Lösung klar, für mich also kein akuter Handlungsbedarf.

                      Kommentar


                        #12
                        Ich werde eher versuchen, Deine erste Lösung umzusetzen: die series options im Parameter chartoptions zuzulassen und dann für eine getrennte Verarbeitung herauszulösen. Das wird aber noch ein paar Tage dauern.

                        Kommentar


                          #13
                          Es geht doch deutlich einfacher, da die Optionen für die series in die chartoptions eingebettet sind. Meine Aussage oben in Post 8 ist diesbezüglich falsch gewesen.

                          Dein Ansatz war richtig, aber man muss die Optionen für series als Array schreiben:
                          Code:
                          {{plot.period('itemF', ['item'], 'avg', '2d', 'now', '', '', 36500, '', '', 'stair', '', 'advanced','','','','','',{series:[{step:'right'}]})}}
                          Gruß
                          Wolfram
                          Zuletzt geändert von wvhn; 23.10.2022, 08:05.

                          Kommentar

                          Lädt...
                          X