Ankündigung

Einklappen
Keine Ankündigung bisher.

Bar Graphs

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

    #16
    Ich muss hier noch mal nachhaken - ich hab' mich die Tage damit beschäftigt, meinen Bars auf ganze Tage zu legen, bzw ich habe das versucht.

    So sieht das momentan aus:


    Screenshot from 2015-11-25 19-47-04.png

    Der dazugehörige Code ist folgender:

    Code:
    <diagram_info format="%.2f kWh" series="week" refresh="300" timeformat="%a %H:%M" tooltip="true" timeformatTooltip="%a %H:%M">
    <layout colspan="1"/>
    <rrd datasourceIndex="0" consolidationFunction="MAX" resolution="86400" style="bars" barWidth="43200000" fill="true" align="center">stromverbrauch_3_2_5</rrd>
    <address transform="DPT:9.001">3/2/5</address>
    </diagram_info>
    Ich spiele mit den Series herum (week und month scheinen das gleiche zu erzeugen), aber ich habe immer zwei Bars für einen Tag, und kriege sie halt nicht auf mitternacht normiert.

    Die Bars repräsentieren auch nicht jeweils 12h - die letzte ist von heute 10:00, dann gestern 19:00, gestern 4:00, vorgestern 13:00, vorvorgestern 22h, also jeweils einen 15h-Intervall.

    Wo der herkommt, kann ich absolut nicht nachvollziehen

    Kommentar


      #17
      Das ganze ist leider nicht trivial. Was du mal probieren kannst ist:

      series="fullday"
      period="7" (oder wie viele Tage auch immer du sehen möchtest)

      Poste mal bitte welche Requests nun an das Backend gesendet werden. Also welche URL angefragt wird und was zurück kommt.

      Kommentar


        #18
        Zitat von jolt Beitrag anzeigen
        Das ganze ist leider nicht trivial.
        Das kann ich bestätigen.

        Was du mal probieren kannst ist:

        series="fullday"
        period="7" (oder wie viele Tage auch immer du sehen möchtest)
        Das ändert nicht viel - es lässt im Chart jetzt Platz für eine Bar (ich nehme mal an für heute, bis midnight). Die 15-Stunden-Categorisierung ist immer noch da, die letzte Bar ist heute um 1, die vorherige gestern um 10 usw.

        Poste mal bitte welche Requests nun an das Backend gesendet werden. Also welche URL angefragt wird und was zurück kommt.
        Folgendes geht raus:

        Code:
        https://hole.gerges.lu/cgi-bin/rrdfetch?rrd=stromverbrauch_3_2_5.rrd&ds=MAX&start=end-7day&end=midnight+24hour&res=86400
        Das kommt zurück:
        Code:
        [[1448010000000,["11.52"]],[1448064000000,["16.94"]],[1448118000000,["11.98"]],[1448172000000,["21.29"]],[1448226000000,["18.56"]],[1448280000000,["19.55"]],[1448334000000,["15.21"]],[1448388000000,["10.57"]],[1448442000000,["10.89"]],[1448496000000,["17.26"]],[1448550000000,["nan"]],[1448604000000,["nan"]]]

        Kommentar


          #19
          Also die Anfrage sieht schon mal gut aus, immerhin

          Timestamps die zurück kommen:

          Fri, 20 Nov 2015 09:00:00 GMT
          Sat, 21 Nov 2015 00:00:00 GMT
          Sat, 21 Nov 2015 15:00:00 GMT
          Sun, 22 Nov 2015 06:00:00 GMT
          Sun, 22 Nov 2015 21:00:00 GMT
          Mon, 23 Nov 2015 12:00:00 GMT
          ....

          Man sieht also schon dort ist das Problem mit der Rasterung vorhanden. Ich vermute es liegt daran:

          http://oss.oetiker.ch/rrdtool/doc/rr...UTION_INTERVAL

          Das läuft bei dir auf dem Wiregate oder? Weisst du zufällig mit welchen Settings das RRD erstellt wird?

          Kommentar


            #20
            Das läuft in der Tat auf einem Wiregate. Ich kann jetzt nicht direkt festellen, wie es erstellt wurde, hier ist der Output von rrdtool info:

            Code:
            filename = "/var/www/rrd/stromverbrauch_3_2_5.rrd"
            rrd_version = "0003"
            step = 300
            last_update = 1448527732
            ds[value].type = "GAUGE"
            ds[value].minimal_heartbeat = 900
            ds[value].min = -5,5000000000e+01
            ds[value].max = 2,5500000000e+05
            ds[value].last_ds = "4.05"
            ds[value].value = 9,4274232210e+02
            ds[value].unknown_sec = 0
            rra[0].cf = "AVERAGE"
            rra[0].rows = 2160
            rra[0].cur_row = 880
            rra[0].pdp_per_row = 1
            rra[0].xff = 5,0000000000e-01
            rra[0].cdp_prep[0].value = NaN
            rra[0].cdp_prep[0].unknown_datapoints = 0
            rra[1].cf = "AVERAGE"
            rra[1].rows = 2016
            rra[1].cur_row = 860
            rra[1].pdp_per_row = 5
            rra[1].xff = 5,0000000000e-01
            rra[1].cdp_prep[0].value = 0,0000000000e+00
            rra[1].cdp_prep[0].unknown_datapoints = 0
            rra[2].cf = "AVERAGE"
            rra[2].rows = 2880
            rra[2].cur_row = 2542
            rra[2].pdp_per_row = 15
            rra[2].xff = 5,0000000000e-01
            rra[2].cdp_prep[0].value = 0,0000000000e+00
            rra[2].cdp_prep[0].unknown_datapoints = 0
            rra[3].cf = "AVERAGE"
            rra[3].rows = 8760
            rra[3].cur_row = 6270
            rra[3].pdp_per_row = 180
            rra[3].xff = 5,0000000000e-01
            rra[3].cdp_prep[0].value = 2,0393980394e+02
            rra[3].cdp_prep[0].unknown_datapoints = 0
            rra[4].cf = "MIN"
            rra[4].rows = 2160
            rra[4].cur_row = 175rra[4].pdp_per_row = 1
            rra[4].xff = 5,0000000000e-01
            rra[4].cdp_prep[0].value = NaN
            rra[4].cdp_prep[0].unknown_datapoints = 0
            rra[5].cf = "MIN"
            rra[5].rows = 2016
            rra[5].cur_row = 830
            rra[5].pdp_per_row = 5
            rra[5].xff = 5,0000000000e-01
            rra[5].cdp_prep[0].value = 4,0268162460e+00
            rra[5].cdp_prep[0].unknown_datapoints = 0
            rra[6].cf = "MIN"
            rra[6].rows = 2880
            rra[6].cur_row = 981
            rra[6].pdp_per_row = 15
            rra[6].xff = 5,0000000000e-01
            rra[6].cdp_prep[0].value = 4,0268162460e+00
            rra[6].cdp_prep[0].unknown_datapoints = 0
            rra[7].cf = "MIN"
            rra[7].rows = 8760
            rra[7].cur_row = 3173
            rra[7].pdp_per_row = 180
            rra[7].xff = 5,0000000000e-01
            rra[7].cdp_prep[0].value = 3,5499184450e-01
            rra[7].cdp_prep[0].unknown_datapoints = 0
            rra[8].cf = "MAX"
            rra[8].rows = 2160
            rra[8].cur_row = 1282
            rra[8].pdp_per_row = 1
            rra[8].xff = 5,0000000000e-01
            rra[8].cdp_prep[0].value = NaN
            rra[8].cdp_prep[0].unknown_datapoints = 0
            rra[9].cf = "MAX"
            rra[9].rows = 2016
            rra[9].cur_row = 1458
            rra[9].pdp_per_row = 5
            rra[9].xff = 5,0000000000e-01
            rra[9].cdp_prep[0].value = 4,0268162460e+00
            rra[9].cdp_prep[0].unknown_datapoints = 0
            rra[10].cf = "MAX"
            rra[10].rows = 2880rra[10].cur_row = 1792
            rra[10].pdp_per_row = 15
            rra[10].xff = 5,0000000000e-01
            rra[10].cdp_prep[0].value = 4,0268162460e+00
            rra[10].cdp_prep[0].unknown_datapoints = 0
            rra[11].cf = "MAX"
            rra[11].rows = 8760
            rra[11].cur_row = 3748
            rra[11].pdp_per_row = 180
            rra[11].xff = 5,0000000000e-01
            rra[11].cdp_prep[0].value = 4,0268162460e+00
            rra[11].cdp_prep[0].unknown_datapoints = 0

            Kommentar


              #21
              step = 300
              ...
              rra[11].pdp_per_row = 180

              180 * 300 = 54000 Sekunden = 15h

              Damit ist schon mal klar, woher das 15h Raster kommt. Ich kenne mich leider mit dem Wiregate nicht aus, kann man die Rasterung irgendwo einstellen? Ich meine ein RRD mit 5Min, 25Min, 75Min und 15h Rasterung scheint mir irgendwie komisch. 5, 30, 60, 12h wäre irgendwie weniger krumm. Möglicherweise gibt es ja eine Erklärung dafür?

              makki Eine Idee?

              Auf der anderen Seite verstehe ich irgendwie nicht warum rrdfetch nicht cleverer ist. Statt das 15h RRA zu nehmen, könnte es auch das 5 Min RRA nehmen. Benötigt werden 7 * 24 * 60 / 5 = 2016 Werte. 2160 sind in der DB. Sollte also passen.

              Kannst du mal den Output von

              Code:
              rrdtool fetch /var/www/rrd/stromverbrauch_3_2_5.rrd MAX -send-7day -emidnight+24hour -r86400 -a
              posten?

              Kommentar


                #22
                -a kennt mein rrdfetch nicht. Ohne die Option gibt es das hier:

                Code:
                                          value
                1448010000: 1,1518871566e+01
                1448064000: 1,6935024440e+01
                1448118000: 1,1981805829e+01
                1448172000: 2,1289561073e+01
                1448226000: 1,8564570764e+01
                1448280000: 1,9553191354e+01
                1448334000: 1,5205519887e+01
                1448388000: 1,0570710893e+01
                1448442000: 1,0890000000e+01
                1448496000: 1,7256510999e+01
                1448550000: nan
                1448604000: nan
                Immer noch 15 Stunden

                Kommentar


                  #23
                  Also mehr als Versuch-Macht-Klug kann ich leider an dieser Stelle auch nicht mehr anbieten:

                  - Mach mal eine Kopie von dem RRD
                  - 15h RRA löschen: rrdtool tune /var/www/rrd/stromverbrauch_3_2_5_copy.rrd DELRRA:11
                  - Erneut anzeigen: rrdtool fetch /var/www/rrd/stromverbrauch_3_2_5_copy.rrd MAX -send-7day -emidnight+24hour -r86400

                  Kommentar


                    #24
                    Das 15h-Problem hatten wir hier auch schonmal: https://knx-user-forum.de/forum/supp...444#post660444

                    ​Wie müsste man denn ein RRD (manuell) erstellen um ein 24h-Raster zu bekommen?

                    Danke und VG
                    Micha

                    Kommentar


                      #25
                      jolt

                      Code:
                      ~# rrdtool tune /var/www/rrd/stromverbrauch_3_2_5_copy.rrd DELRRA:11
                      DS[value] typ: GAUGE    hbt: 900        min: -55,0000   max: 255000,0000
                      ~# rrdtool fetch /var/www/rrd/stromverbrauch_3_2_5_copy.rrd MAX -send-7day -emidnight+24hour -r86400
                                                value
                      
                      1448064000: 1,6935024440e+01
                      1448118000: 1,1981805829e+01
                      1448172000: 2,1289561073e+01
                      1448226000: 1,8564570764e+01
                      1448280000: 1,9553191354e+01
                      1448334000: 1,5205519887e+01
                      1448388000: 1,0570710893e+01
                      1448442000: 1,0890000000e+01
                      1448496000: 1,7256510999e+01
                      1448550000: 8,4633787577e+00
                      1448604000: 1,2475881482e+01
                      1448658000: nan
                      1448712000: nan
                      ~#
                      :-(

                      Kommentar


                        #26
                        Zitat von mivola Beitrag anzeigen
                        ​Wie müsste man denn ein RRD (manuell) erstellen um ein 24h-Raster zu bekommen?
                        Hallo Micha,

                        ich mach es als code im Plugin wie folgt:

                        Code:
                          RRDs::create(
                            $rrd_dir . $rrd,
                            'DS:value:' . $valtype . ':' . ( ( $stepseconds ) + 100 ) . ':0:10000000000',
                            # 15 min (für 7,5 d)      1 h (für 35 d)           24 h (für 5 y)            7 d (für 25 y)
                            'RRA:AVERAGE:0.5:1:720', 'RRA:AVERAGE:0.5:4:840', 'RRA:AVERAGE:0.5:96:1826', 'RRA:AVERAGE:0.5:672:1300',
                            'RRA:MIN:0.5:1:720',     'RRA:MIN:0.5:4:840',     'RRA:MIN:0.5:96:1826',     'RRA:MIN:0.5:672:1300',
                            'RRA:MAX:0.5:1:720',     'RRA:MAX:0.5:4:840',     'RRA:MAX:0.5:96:1826',     'RRA:MAX:0.5:672:1300',
                            '-s ' . ( $stepseconds )
                            );
                        Die Variablen oben müssen natürlich entsprechend ersetzt oder gesetzt werden...

                        Gruß
                        Andi
                        Zuletzt geändert von tger977; 27.11.2015, 20:45. Grund: Hinweis auf Variablen
                        Gruß
                        Andi

                        Kommentar


                          #27
                          Zitat von jolt Beitrag anzeigen
                          makki Eine Idee?
                          Man kann das völlig frei einstellen - wie auch immer es einem beliebt, wenn man es denn will & versteht - schon immer!
                          Such mal nach rrdtool (im Inet) bzw. RRD, RRA (hier) von mir..

                          Makki
                          EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                          -> Bitte KEINE PNs!

                          Kommentar


                            #28
                            Zitat von tger977 Beitrag anzeigen

                            Hallo Micha,

                            ich mach es als code im Plugin wie folgt:

                            Code:
                             RRDs::create(
                            $rrd_dir . $rrd,
                            'DS:value:' . $valtype . ':' . ( ( $stepseconds ) + 100 ) . ':0:10000000000',
                            # 15 min (für 7,5 d) 1 h (für 35 d) 24 h (für 5 y) 7 d (für 25 y)
                            'RRA:AVERAGE:0.5:1:720', 'RRA:AVERAGE:0.5:4:840', 'RRA:AVERAGE:0.5:96:1826', 'RRA:AVERAGE:0.5:672:1300',
                            'RRA:MIN:0.5:1:720', 'RRA:MIN:0.5:4:840', 'RRA:MIN:0.5:96:1826', 'RRA:MIN:0.5:672:1300',
                            'RRA:MAX:0.5:1:720', 'RRA:MAX:0.5:4:840', 'RRA:MAX:0.5:96:1826', 'RRA:MAX:0.5:672:1300',
                            '-s ' . ( $stepseconds )
                            );
                            Die Variablen oben müssen natürlich entsprechend ersetzt oder gesetzt werden...

                            Gruß
                            Andi
                            Danke Andi,

                            welche Bedeutung hat $stepseconds? Bzw welchen Wert müsste ich dafür nutzen? Hättest du evtl einen Befehl wie ich ihn auf der Kommandozeile absetzen müsste??

                            Danke!!
                            Micha

                            Kommentar


                              #29
                              Hallo Micha,

                              $stepseconds ist die Zeit in sek in der zyklisch der Wert in das RRD geschrieben werden soll. Standardmäßig ist dieser beim Wiregate 300s. Ich baue mir damit den heartbeat für das rrd. Für die Kommandozeile kann man über rrdtool.org (Erstellen über rrdtool create speziell hier) das schnell rausfinden und mit o.g. Code entsprechend ergänzen:

                              Code:
                              [B]rrdtool[/B] [B]create[/B] [I]filename[/I] [[B]--start[/B]|[B]-b[/B] [I]start time[/I]] [[B]--step[/B]|[B]-s[/B] [I]step[/I]] [[B]--template[/B]|[B]-t[/B] [I]template-file[/I]] [[B]--source[/B]|[B]-r[/B] [I]source-file[/I]] [[B]--no-overwrite[/B]|[B]-O[/B]] [[B]--daemon[/B]|[B]-d[/B] [I]address[/I]] [[B]DS:[/B][I]ds-name[/I][[B]=[/B][I]mapped-ds-name[/I][[B][[/B][I]source-index[/I][B]][/B]]][B]:[/B][I]DST[/I][B]:[/B][I]dst arguments[/I]] [[B]RRA:[/B][I]CF[/I][B]:[/B][I]cf arguments[/I]]
                              Ist leider alles nicht ganz so ersichtlich auf den ersten Blick, wenn man sich aber mal 1-2h damit beschäftigt geht es dann irgendwann...

                              Gruß
                              Andi
                              Zuletzt geändert von tger977; 01.12.2015, 21:13. Grund: link ergänzt
                              Gruß
                              Andi

                              Kommentar


                                #30
                                Hallo,

                                ich probiere mich gerade an den Bar Graphs zusammen mit openHab als DataSource. Leider kommen bei mir keine Balken. Ich habe folgenden Code probiert:

                                <diagram_info format="%.2f kWh" series="hour" period="24" refresh="300" timeformat="%a %H:%M" tooltip="true" timeformatTooltip="%a %H:%M">
                                <layout colspan="1"/>
                                <rrd color="red" yaxis="Wärmemenge" label="Hausstrom Tagesverbrauch" consolidationFunction="MAX" resolution="86400" barWidth="43200000" style="bars" fill="true" align="center">Verbrauch_Hausstrom_Day_KWh</rrd>
                                <address transform="OH:number">Verbrauch_Hausstrom_Day_KWh</address>
                                </diagram_info>

                                Leider sieht das Diagramm wie im angehängten Bild aus. Woran könnte das liegen?

                                mfg René
                                Angehängte Dateien

                                Kommentar

                                Lädt...
                                X