Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. Vergleichskurve in Grafana mit influx Daten

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Vergleichskurve in Grafana mit influx Daten

Geplant Angeheftet Gesperrt Verschoben Off Topic
29 Beiträge 4 Kommentatoren 2.2k Aufrufe 6 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • ? Ein ehemaliger Benutzer

    @maximal1981 sagte in Vergleichskurve in Grafana mit influx Daten:

    @bommel_030
    ich hab das versucht, bei mir ist da nicht wirklich was rausgekommen.

    erst hab ich einen Fehler für die timezone gekommen, und dann nur eine Bar mit dem aktuellen Tag, die anderen 13 waren nicht zu sehen :woman-shrugging:

    Moin,

    Du musst uns schon etwas zeigen, nicht nur schreiben, es geht nicht ;)

    VG
    Bernd

    maximal1981M Offline
    maximal1981M Offline
    maximal1981
    schrieb am zuletzt editiert von
    #5

    @dp20eic
    nein, mag ich nicht zeigen.
    War schon spät und hatte keine Lust mehr, und wollte nur noch meinen Frust los werden.


    Unbenannt.PNG
    Unbenannt2.PNG
    Unbenannt3.PNG

    Daten sind aber vorhanden. Liegt sicher an mir :blush:
    Unbenannt4.PNG

    ? 1 Antwort Letzte Antwort
    0
    • maximal1981M maximal1981

      @dp20eic
      nein, mag ich nicht zeigen.
      War schon spät und hatte keine Lust mehr, und wollte nur noch meinen Frust los werden.


      Unbenannt.PNG
      Unbenannt2.PNG
      Unbenannt3.PNG

      Daten sind aber vorhanden. Liegt sicher an mir :blush:
      Unbenannt4.PNG

      ? Offline
      ? Offline
      Ein ehemaliger Benutzer
      schrieb am zuletzt editiert von
      #6

      @maximal1981

      Moin,

      von Text bitte keine Bilder, sondern hier in Code Tags </> rein, denn ich tippe mir das nicht aus Bildern ab.

      Dann noch die Informationen, über deine Installation, wäre auch schön zu wissen.

      VG
      Bernd

      maximal1981M 1 Antwort Letzte Antwort
      0
      • ? Ein ehemaliger Benutzer

        @maximal1981

        Moin,

        von Text bitte keine Bilder, sondern hier in Code Tags </> rein, denn ich tippe mir das nicht aus Bildern ab.

        Dann noch die Informationen, über deine Installation, wäre auch schön zu wissen.

        VG
        Bernd

        maximal1981M Offline
        maximal1981M Offline
        maximal1981
        schrieb am zuletzt editiert von
        #7

        @dp20eic
        dann nochmal^^
        dachte man sieht den Fehler gleich

        läuft aktuell noch auf Windows am selben Client
        InfluxDB v2.5.1 (language Flux)
        grafana v9.2.5 (2022-11-16)

        sollte was fehlen ergänze ich es gerne

        from(bucket: "iobroker")
        |> range(start: -7d, stop: now())
        |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
        |> filter(fn: (r) => r["_field"] == "value")
        |> set(key: "_field", value: "aktuelle Woche")
        |> drop(columns:["from","ack", "q"])
        |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
        |> difference()
        

        from(bucket: "iobroker")
        |> range(start: -14d, stop: -7d)
        |> timeShift(duration: 7d)
        |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
        |> filter(fn: (r) => r["_field"] == "value")
        |> set(key: "_field", value: "letzte Woche")
        |> drop(columns:["from","ack", "q"])
        |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
        |> difference()
        

        ? 1 Antwort Letzte Antwort
        0
        • maximal1981M maximal1981

          @dp20eic
          dann nochmal^^
          dachte man sieht den Fehler gleich

          läuft aktuell noch auf Windows am selben Client
          InfluxDB v2.5.1 (language Flux)
          grafana v9.2.5 (2022-11-16)

          sollte was fehlen ergänze ich es gerne

          from(bucket: "iobroker")
          |> range(start: -7d, stop: now())
          |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
          |> filter(fn: (r) => r["_field"] == "value")
          |> set(key: "_field", value: "aktuelle Woche")
          |> drop(columns:["from","ack", "q"])
          |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
          |> difference()
          

          from(bucket: "iobroker")
          |> range(start: -14d, stop: -7d)
          |> timeShift(duration: 7d)
          |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
          |> filter(fn: (r) => r["_field"] == "value")
          |> set(key: "_field", value: "letzte Woche")
          |> drop(columns:["from","ack", "q"])
          |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
          |> difference()
          

          ? Offline
          ? Offline
          Ein ehemaliger Benutzer
          schrieb am zuletzt editiert von
          #8

          @maximal1981

          Moin,

          wenn Windows, dann ist das ein bekannter Bug, es müssen zusätzliche Zonenfiles installiert werden und ein Environment erstellt werden.

          Timezone not working und
          error while defining timezone

          Bei Windows kann ich Dir nicht helfen, das ist nicht meine Baustelle.

          Diesen Verdacht hatte ich schon vorhin, wenn man alle Information gleich bekommt, dann kann man auch besser helfen, bzw. hätte ich bei Windows schon aufgehört zu lesen ;)

          Spaß bei Seite, im zweiten Link am Ende steht, was Du machen musst, hoffe, das hilft. Ansonsten muss Dir da jemand mit Windows Erfahrung helfen.

          VG
          Bernd

          maximal1981M 1 Antwort Letzte Antwort
          0
          • ? Ein ehemaliger Benutzer

            @maximal1981

            Moin,

            wenn Windows, dann ist das ein bekannter Bug, es müssen zusätzliche Zonenfiles installiert werden und ein Environment erstellt werden.

            Timezone not working und
            error while defining timezone

            Bei Windows kann ich Dir nicht helfen, das ist nicht meine Baustelle.

            Diesen Verdacht hatte ich schon vorhin, wenn man alle Information gleich bekommt, dann kann man auch besser helfen, bzw. hätte ich bei Windows schon aufgehört zu lesen ;)

            Spaß bei Seite, im zweiten Link am Ende steht, was Du machen musst, hoffe, das hilft. Ansonsten muss Dir da jemand mit Windows Erfahrung helfen.

            VG
            Bernd

            maximal1981M Offline
            maximal1981M Offline
            maximal1981
            schrieb am zuletzt editiert von
            #9

            @dp20eic
            mit der Timezone selbst hab ich keine Probleme, somit kann ich es im Code einfach weg lassen.

            Jedoch bekomme ich ja trotzdem nur den aktuellen Tag angezeigt.

            ? 2 Antworten Letzte Antwort
            0
            • maximal1981M maximal1981

              @dp20eic
              mit der Timezone selbst hab ich keine Probleme, somit kann ich es im Code einfach weg lassen.

              Jedoch bekomme ich ja trotzdem nur den aktuellen Tag angezeigt.

              ? Offline
              ? Offline
              Ein ehemaliger Benutzer
              schrieb am zuletzt editiert von
              #10

              @maximal1981

              Moin,

              ach so, ich dachte, es geht Dir um die Errors.

              Ich kenne die Datenbasis, auf die Du Dich beziehst, nicht.
              Wenn ich heute mal etwas Zeit habe, schaue ich mir die Abfrage, an. Sie sieht mir aber erst einmal oK aus.

              VG
              Bernd

              1 Antwort Letzte Antwort
              0
              • maximal1981M maximal1981

                @dp20eic
                mit der Timezone selbst hab ich keine Probleme, somit kann ich es im Code einfach weg lassen.

                Jedoch bekomme ich ja trotzdem nur den aktuellen Tag angezeigt.

                ? Offline
                ? Offline
                Ein ehemaliger Benutzer
                schrieb am zuletzt editiert von
                #11

                @maximal1981 sagte in Vergleichskurve in Grafana mit influx Daten:

                Jedoch bekomme ich ja trotzdem nur den aktuellen Tag angezeigt.

                Moin,

                ich habe das mal auf ähnliche Daten angewendet, Stromverbrauch total. Ich habe nur wegen UTC Zeit, die Zone-Info wieder reingenommen.
                Bei mr funktionieren die Abfragen wie gewollt.
                e015baca-c8d4-4399-9b44-5732c25442ed-grafik.png

                Da scheint was mit den Daten nicht zu passen, kannst Du mal für zwei/drei Wochen einen CSV Export machen und zur Verfügung stellen, damit ich die mal in ein Test-Bucket schreibe und dann mit Deinen Daten gegenprüfen kann?

                VG
                Bernd

                maximal1981M 1 Antwort Letzte Antwort
                0
                • ? Ein ehemaliger Benutzer

                  @maximal1981 sagte in Vergleichskurve in Grafana mit influx Daten:

                  Jedoch bekomme ich ja trotzdem nur den aktuellen Tag angezeigt.

                  Moin,

                  ich habe das mal auf ähnliche Daten angewendet, Stromverbrauch total. Ich habe nur wegen UTC Zeit, die Zone-Info wieder reingenommen.
                  Bei mr funktionieren die Abfragen wie gewollt.
                  e015baca-c8d4-4399-9b44-5732c25442ed-grafik.png

                  Da scheint was mit den Daten nicht zu passen, kannst Du mal für zwei/drei Wochen einen CSV Export machen und zur Verfügung stellen, damit ich die mal in ein Test-Bucket schreibe und dann mit Deinen Daten gegenprüfen kann?

                  VG
                  Bernd

                  maximal1981M Offline
                  maximal1981M Offline
                  maximal1981
                  schrieb am zuletzt editiert von
                  #12

                  @dp20eic
                  30 Tage zum spielen^^

                  2023-03-04_22_28_influxdb_data.csv

                  ? 1 Antwort Letzte Antwort
                  0
                  • maximal1981M maximal1981

                    @dp20eic
                    30 Tage zum spielen^^

                    2023-03-04_22_28_influxdb_data.csv

                    ? Offline
                    ? Offline
                    Ein ehemaliger Benutzer
                    schrieb am zuletzt editiert von
                    #13

                    @maximal1981

                    Moin,

                    also nach dem Import der Daten in mein test_bucket und Einbinden in Grafana sehen die Abfragen bei mir wie folgt aus:

                    Aktuelle Woche, mit difference(nonNegative: true ...
                    438605c3-d139-4a1a-8b59-83c950ff1460-grafik.png

                    import "timezone"
                    option location = timezone.location(name: "Europe/Berlin")
                    from(bucket: "test_bucket")
                      |> range(start: -7d, stop: now())
                      |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                      |> filter(fn: (r) => r["_field"] == "value")
                      |> set(key: "_field", value: "aktuelle Woche")
                      //|> drop(columns:["from","ack", "q"])
                      |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                      |> difference(nonNegative: true, columns: ["_value"])
                    

                    Aktuelle Woche, mit difference(nonNegative: false ...
                    bde31499-284b-478e-954b-952d11802841-grafik.png

                    import "timezone"
                    option location = timezone.location(name: "Europe/Berlin")
                    from(bucket: "test_bucket")
                      |> range(start: -7d, stop: now())
                      |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                      |> filter(fn: (r) => r["_field"] == "value")
                      |> set(key: "_field", value: "aktuelle Woche")
                      //|> drop(columns:["from","ack", "q"])
                      |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                      |> difference(nonNegative: false, columns: ["_value"])
                    

                    Aktuelle und vergangene Woche zusammen:
                    6cb837a9-7eb1-467d-864d-ffa14fb8872d-grafik.png

                    Query A:
                    import "timezone"
                    option location = timezone.location(name: "Europe/Berlin")
                    from(bucket: "test_bucket")
                      |> range(start: -7d, stop: now())
                      |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                      |> filter(fn: (r) => r["_field"] == "value")
                      |> set(key: "_field", value: "aktuelle Woche")
                      |> drop(columns:["from","ack", "q"])
                      |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                      |> difference(nonNegative: false, columns: ["_value"])
                    
                    Query B:
                    import "timezone"
                    option location = timezone.location(name: "Europe/Berlin")
                    from(bucket: "test_bucket")
                    |> range(start: -14d, stop: -7d)
                    |> timeShift(duration: 7d)
                    |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                    |> filter(fn: (r) => r["_field"] == "value")
                    |> set(key: "_field", value: "letzte Woche")
                    |> drop(columns:["from","ack", "q"])
                    |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                    |> difference(nonNegative: false, columns: ["_value"])
                    

                    Also so wie ich das sehe, funktionieren die Abfragen.

                    VG
                    Bernd

                    maximal1981M 1 Antwort Letzte Antwort
                    0
                    • ? Ein ehemaliger Benutzer

                      @maximal1981

                      Moin,

                      also nach dem Import der Daten in mein test_bucket und Einbinden in Grafana sehen die Abfragen bei mir wie folgt aus:

                      Aktuelle Woche, mit difference(nonNegative: true ...
                      438605c3-d139-4a1a-8b59-83c950ff1460-grafik.png

                      import "timezone"
                      option location = timezone.location(name: "Europe/Berlin")
                      from(bucket: "test_bucket")
                        |> range(start: -7d, stop: now())
                        |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                        |> filter(fn: (r) => r["_field"] == "value")
                        |> set(key: "_field", value: "aktuelle Woche")
                        //|> drop(columns:["from","ack", "q"])
                        |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                        |> difference(nonNegative: true, columns: ["_value"])
                      

                      Aktuelle Woche, mit difference(nonNegative: false ...
                      bde31499-284b-478e-954b-952d11802841-grafik.png

                      import "timezone"
                      option location = timezone.location(name: "Europe/Berlin")
                      from(bucket: "test_bucket")
                        |> range(start: -7d, stop: now())
                        |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                        |> filter(fn: (r) => r["_field"] == "value")
                        |> set(key: "_field", value: "aktuelle Woche")
                        //|> drop(columns:["from","ack", "q"])
                        |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                        |> difference(nonNegative: false, columns: ["_value"])
                      

                      Aktuelle und vergangene Woche zusammen:
                      6cb837a9-7eb1-467d-864d-ffa14fb8872d-grafik.png

                      Query A:
                      import "timezone"
                      option location = timezone.location(name: "Europe/Berlin")
                      from(bucket: "test_bucket")
                        |> range(start: -7d, stop: now())
                        |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                        |> filter(fn: (r) => r["_field"] == "value")
                        |> set(key: "_field", value: "aktuelle Woche")
                        |> drop(columns:["from","ack", "q"])
                        |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                        |> difference(nonNegative: false, columns: ["_value"])
                      
                      Query B:
                      import "timezone"
                      option location = timezone.location(name: "Europe/Berlin")
                      from(bucket: "test_bucket")
                      |> range(start: -14d, stop: -7d)
                      |> timeShift(duration: 7d)
                      |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                      |> filter(fn: (r) => r["_field"] == "value")
                      |> set(key: "_field", value: "letzte Woche")
                      |> drop(columns:["from","ack", "q"])
                      |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                      |> difference(nonNegative: false, columns: ["_value"])
                      

                      Also so wie ich das sehe, funktionieren die Abfragen.

                      VG
                      Bernd

                      maximal1981M Offline
                      maximal1981M Offline
                      maximal1981
                      schrieb am zuletzt editiert von
                      #14

                      @dp20eic
                      danke für die Mühe. Aber irgendwas stimmt nicht. so sehen die Daten in influx aus:

                      Unbenannt5.PNG

                      negative Erzeugung gibt es ja nicht und die Werte stimmen auch nicht :blush:
                      keine Ahnung was hier falsch läuft.

                      und die Meldung bekomme ich unter Teil B bzw. links oben in der Diagramm-Ecke:
                      Post "http://...:8086/api/v2/query?org=my-org": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

                      ? 1 Antwort Letzte Antwort
                      0
                      • maximal1981M maximal1981

                        @dp20eic
                        danke für die Mühe. Aber irgendwas stimmt nicht. so sehen die Daten in influx aus:

                        Unbenannt5.PNG

                        negative Erzeugung gibt es ja nicht und die Werte stimmen auch nicht :blush:
                        keine Ahnung was hier falsch läuft.

                        und die Meldung bekomme ich unter Teil B bzw. links oben in der Diagramm-Ecke:
                        Post "http://...:8086/api/v2/query?org=my-org": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

                        ? Offline
                        ? Offline
                        Ein ehemaliger Benutzer
                        schrieb am zuletzt editiert von
                        #15

                        @maximal1981 sagte in Vergleichskurve in Grafana mit influx Daten:

                        negative Erzeugung gibt es ja nicht u

                        Moin,
                        doch, nach meinem Verständnis, bekommst Du negativ Werte, da Du ja zum Vortag berechnest, sagen wir mal Du hast 10, dann am nachfolgenden 12, dann ist das +2, wenn Du dann aber am dritten Tag 8 hast, dann ist das -4.

                        Bei meinem Beispiel mit dem Stromverbrauch, der ist annähernd linear, somit immer nur +.

                        Deine Werte sehen bei mir auch so aus:
                        39b777ee-8f95-4419-864a-342e0645a131-grafik.png

                        maximal1981M 1 Antwort Letzte Antwort
                        0
                        • ? Ein ehemaliger Benutzer

                          @maximal1981 sagte in Vergleichskurve in Grafana mit influx Daten:

                          negative Erzeugung gibt es ja nicht u

                          Moin,
                          doch, nach meinem Verständnis, bekommst Du negativ Werte, da Du ja zum Vortag berechnest, sagen wir mal Du hast 10, dann am nachfolgenden 12, dann ist das +2, wenn Du dann aber am dritten Tag 8 hast, dann ist das -4.

                          Bei meinem Beispiel mit dem Stromverbrauch, der ist annähernd linear, somit immer nur +.

                          Deine Werte sehen bei mir auch so aus:
                          39b777ee-8f95-4419-864a-342e0645a131-grafik.png

                          maximal1981M Offline
                          maximal1981M Offline
                          maximal1981
                          schrieb am zuletzt editiert von
                          #16

                          @dp20eic
                          ok, so wollte ich das gar nicht :joy:
                          bin das vermutlich falsch angegangen.

                          Ich wollte eine Darstellung jeden Tages mit der Gesamterzeugung ohne Differenz im vergleich zur Vorwoche (damit ich optisch die Differenz sehe) :wink:

                          Nur mal die aktuelle Woche und das macht aggregiert keinen Sinn, oder?


                          Unbenannt6.PNG
                          Unbenannt7.PNG

                          from(bucket: "iobroker")
                            |> range(start: -7d, stop: now())
                            |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                            |> filter(fn: (r) => r["_field"] == "value")
                            |> set(key: "_field", value: "aktuelle Woche")
                            |> drop(columns:["from","ack", "q"])
                            |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                          

                          1 Antwort Letzte Antwort
                          0
                          • ? Offline
                            ? Offline
                            Ein ehemaliger Benutzer
                            schrieb am zuletzt editiert von
                            #17

                            @maximal1981

                            Moin,
                            wie ermittelst Du?
                            SourceAnalytix Adapter?
                            Skript?

                            Wenn, dann brauchst Du erst einmal einen echten totalen Wert, der nur größer werden kann. Dann kannst Du auch mit der ursprünglichen Abfrage arbeiten.

                            Ich habe mal bei Deinen Tageswerten, in die Abfrage ein cumulativeSum hinzugefügt.

                            import "timezone"
                            option location = timezone.location(name: "Europe/Berlin")
                            from(bucket: "test_bucket")
                              |> range(start: -7d, stop: now())
                              |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                              |> filter(fn: (r) => r["_field"] == "value")
                              |> cumulativeSum(columns: ["_value"])
                              |> set(key: "_field", value: "aktuelle Woche")
                              |> drop(columns:["from","ack", "q"])
                              |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                              //|> difference(nonNegative: false, columns: ["_value"])
                            

                            Dann sieht das für die Woche so aus:
                            a4d5cf50-b4a5-4f58-bde6-008d92780c68-grafik.png

                            Wenn ich dann die Vorwoche noch dazu hole, dann passt natürlich die X-Achse nicht mehr

                            Query A:
                            import "timezone"
                            option location = timezone.location(name: "Europe/Berlin")
                            from(bucket: "test_bucket")
                              |> range(start: -7d, stop: now())
                              |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                              |> filter(fn: (r) => r["_field"] == "value")
                              |> cumulativeSum(columns: ["_value"])
                              |> set(key: "_field", value: "aktuelle Woche")
                              |> drop(columns:["from","ack", "q"])
                              |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                              //|> difference(nonNegative: false, columns: ["_value"])
                            
                            Query B:
                            import "timezone"
                            option location = timezone.location(name: "Europe/Berlin")
                            from(bucket: "test_bucket")
                              |> range(start: -14d, stop: -7d)
                              |> timeShift(duration: 7d)
                              |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                              |> filter(fn: (r) => r["_field"] == "value")
                              |> cumulativeSum(columns: ["_value"])
                              |> set(key: "_field", value: "letzte Woche")
                              |> drop(columns:["from","ack", "q"])
                              |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                              //|> difference(nonNegative: false, columns: ["_value"])
                            

                            7ac2062c-107c-4eb9-8232-e3107978a612-grafik.png

                            Ich schaue gerade wie ich die Zeitwerte aus Deinen Daten in Wochentag Namen ummodeln kann, dann würde man auf der X-Achse nur noch der Wochenname stehen

                            VG
                            Bernd

                            maximal1981M 2 Antworten Letzte Antwort
                            0
                            • ? Ein ehemaliger Benutzer

                              @maximal1981

                              Moin,
                              wie ermittelst Du?
                              SourceAnalytix Adapter?
                              Skript?

                              Wenn, dann brauchst Du erst einmal einen echten totalen Wert, der nur größer werden kann. Dann kannst Du auch mit der ursprünglichen Abfrage arbeiten.

                              Ich habe mal bei Deinen Tageswerten, in die Abfrage ein cumulativeSum hinzugefügt.

                              import "timezone"
                              option location = timezone.location(name: "Europe/Berlin")
                              from(bucket: "test_bucket")
                                |> range(start: -7d, stop: now())
                                |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                                |> filter(fn: (r) => r["_field"] == "value")
                                |> cumulativeSum(columns: ["_value"])
                                |> set(key: "_field", value: "aktuelle Woche")
                                |> drop(columns:["from","ack", "q"])
                                |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                //|> difference(nonNegative: false, columns: ["_value"])
                              

                              Dann sieht das für die Woche so aus:
                              a4d5cf50-b4a5-4f58-bde6-008d92780c68-grafik.png

                              Wenn ich dann die Vorwoche noch dazu hole, dann passt natürlich die X-Achse nicht mehr

                              Query A:
                              import "timezone"
                              option location = timezone.location(name: "Europe/Berlin")
                              from(bucket: "test_bucket")
                                |> range(start: -7d, stop: now())
                                |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                                |> filter(fn: (r) => r["_field"] == "value")
                                |> cumulativeSum(columns: ["_value"])
                                |> set(key: "_field", value: "aktuelle Woche")
                                |> drop(columns:["from","ack", "q"])
                                |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                //|> difference(nonNegative: false, columns: ["_value"])
                              
                              Query B:
                              import "timezone"
                              option location = timezone.location(name: "Europe/Berlin")
                              from(bucket: "test_bucket")
                                |> range(start: -14d, stop: -7d)
                                |> timeShift(duration: 7d)
                                |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                                |> filter(fn: (r) => r["_field"] == "value")
                                |> cumulativeSum(columns: ["_value"])
                                |> set(key: "_field", value: "letzte Woche")
                                |> drop(columns:["from","ack", "q"])
                                |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                //|> difference(nonNegative: false, columns: ["_value"])
                              

                              7ac2062c-107c-4eb9-8232-e3107978a612-grafik.png

                              Ich schaue gerade wie ich die Zeitwerte aus Deinen Daten in Wochentag Namen ummodeln kann, dann würde man auf der X-Achse nur noch der Wochenname stehen

                              VG
                              Bernd

                              maximal1981M Offline
                              maximal1981M Offline
                              maximal1981
                              schrieb am zuletzt editiert von
                              #18

                              @dp20eic
                              achso, der wird täglich auf 0 gesetzt.
                              also muss ich mir nur einen anderen Datenpunkt holen, das war mir nicht bewusst.

                              1 Antwort Letzte Antwort
                              0
                              • ? Ein ehemaliger Benutzer

                                @maximal1981

                                Moin,
                                wie ermittelst Du?
                                SourceAnalytix Adapter?
                                Skript?

                                Wenn, dann brauchst Du erst einmal einen echten totalen Wert, der nur größer werden kann. Dann kannst Du auch mit der ursprünglichen Abfrage arbeiten.

                                Ich habe mal bei Deinen Tageswerten, in die Abfrage ein cumulativeSum hinzugefügt.

                                import "timezone"
                                option location = timezone.location(name: "Europe/Berlin")
                                from(bucket: "test_bucket")
                                  |> range(start: -7d, stop: now())
                                  |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                                  |> filter(fn: (r) => r["_field"] == "value")
                                  |> cumulativeSum(columns: ["_value"])
                                  |> set(key: "_field", value: "aktuelle Woche")
                                  |> drop(columns:["from","ack", "q"])
                                  |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                  //|> difference(nonNegative: false, columns: ["_value"])
                                

                                Dann sieht das für die Woche so aus:
                                a4d5cf50-b4a5-4f58-bde6-008d92780c68-grafik.png

                                Wenn ich dann die Vorwoche noch dazu hole, dann passt natürlich die X-Achse nicht mehr

                                Query A:
                                import "timezone"
                                option location = timezone.location(name: "Europe/Berlin")
                                from(bucket: "test_bucket")
                                  |> range(start: -7d, stop: now())
                                  |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                                  |> filter(fn: (r) => r["_field"] == "value")
                                  |> cumulativeSum(columns: ["_value"])
                                  |> set(key: "_field", value: "aktuelle Woche")
                                  |> drop(columns:["from","ack", "q"])
                                  |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                  //|> difference(nonNegative: false, columns: ["_value"])
                                
                                Query B:
                                import "timezone"
                                option location = timezone.location(name: "Europe/Berlin")
                                from(bucket: "test_bucket")
                                  |> range(start: -14d, stop: -7d)
                                  |> timeShift(duration: 7d)
                                  |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                                  |> filter(fn: (r) => r["_field"] == "value")
                                  |> cumulativeSum(columns: ["_value"])
                                  |> set(key: "_field", value: "letzte Woche")
                                  |> drop(columns:["from","ack", "q"])
                                  |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                  //|> difference(nonNegative: false, columns: ["_value"])
                                

                                7ac2062c-107c-4eb9-8232-e3107978a612-grafik.png

                                Ich schaue gerade wie ich die Zeitwerte aus Deinen Daten in Wochentag Namen ummodeln kann, dann würde man auf der X-Achse nur noch der Wochenname stehen

                                VG
                                Bernd

                                maximal1981M Offline
                                maximal1981M Offline
                                maximal1981
                                schrieb am zuletzt editiert von
                                #19

                                @dp20eic
                                jetzt geht zumindest A. B mag mich jedoch trotzdem nicht.

                                Unbenannt.PNG
                                eine neue csv falls benötigt

                                from(bucket: "iobroker")
                                 |> range(start: -7d, stop: now())
                                 |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.06_Year.Energy.EnergyProductionTotal")
                                 |> filter(fn: (r) => r["_field"] == "value")
                                 |> set(key: "_field", value: "aktuelle Woche")
                                 |> drop(columns:["from","ack", "q"])
                                 |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                 |> difference(nonNegative: false, columns: ["_value"])
                                
                                from(bucket: "iobroker")
                                |> range(start: -14d, stop: -7d)
                                |> timeShift(duration: 7d)
                                |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.06_Year.Energy.EnergyProductionTotal")
                                |> filter(fn: (r) => r["_field"] == "value")
                                |> set(key: "_field", value: "letzte Woche")
                                |> drop(columns:["from","ack", "q"])
                                |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                |> difference(nonNegative: false, columns: ["_value"])
                                

                                2023-03-05_16_31_influxdb_data.csv

                                ? 1 Antwort Letzte Antwort
                                0
                                • maximal1981M maximal1981

                                  @dp20eic
                                  jetzt geht zumindest A. B mag mich jedoch trotzdem nicht.

                                  Unbenannt.PNG
                                  eine neue csv falls benötigt

                                  from(bucket: "iobroker")
                                   |> range(start: -7d, stop: now())
                                   |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.06_Year.Energy.EnergyProductionTotal")
                                   |> filter(fn: (r) => r["_field"] == "value")
                                   |> set(key: "_field", value: "aktuelle Woche")
                                   |> drop(columns:["from","ack", "q"])
                                   |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                   |> difference(nonNegative: false, columns: ["_value"])
                                  
                                  from(bucket: "iobroker")
                                  |> range(start: -14d, stop: -7d)
                                  |> timeShift(duration: 7d)
                                  |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.06_Year.Energy.EnergyProductionTotal")
                                  |> filter(fn: (r) => r["_field"] == "value")
                                  |> set(key: "_field", value: "letzte Woche")
                                  |> drop(columns:["from","ack", "q"])
                                  |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                  |> difference(nonNegative: false, columns: ["_value"])
                                  

                                  2023-03-05_16_31_influxdb_data.csv

                                  ? Offline
                                  ? Offline
                                  Ein ehemaliger Benutzer
                                  schrieb am zuletzt editiert von Ein ehemaliger Benutzer
                                  #20

                                  @maximal1981

                                  Moin,

                                  wenn Du jetzt aus einem Jahreswert aufbaust, dann ja, kannst mir da noch mal einen Abzug manchen.

                                  2487b36b-b906-42c0-9b1f-41bac4df111b-grafik.png

                                  Query A:
                                  import "experimental/date/boundaries"
                                  thisWeek = boundaries.week()
                                  //lastWeek = boundaries.week(week_offset: -1)
                                  
                                  from(bucket: "test_bucket")
                                    |> range(start: thisWeek.start, stop: thisWeek.stop)
                                    //|> range(start: lastWeek.start, stop: lastWeek.stop)
                                    //|> range(start: -7d, stop: now())
                                    |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                                    |> filter(fn: (r) => r["_field"] == "value")
                                    |> cumulativeSum(columns: ["_value"])
                                    |> set(key: "_field", value: "aktuelle Woche")
                                    |> drop(columns:["from","ack", "q"])
                                    |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                    //|> difference(nonNegative: false, columns: ["_value"])
                                  
                                  Query B:
                                  import "experimental/date/boundaries"
                                  //thisWeek = boundaries.week()
                                  lastWeek = boundaries.week(week_offset: -1)
                                  
                                  from(bucket: "test_bucket")
                                    //|> range(start: thisWeek.start, stop: thisWeek.stop)
                                    |> range(start: lastWeek.start, stop: lastWeek.stop)
                                    //|> range(start: -14d, stop: -7d)
                                    |> timeShift(duration: 7d)
                                    |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                                    |> filter(fn: (r) => r["_field"] == "value")
                                    |> cumulativeSum(columns: ["_value"])
                                    |> set(key: "_field", value: "letzte Woche")
                                    |> drop(columns:["from","ack", "q"])
                                    |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                    //|> difference(nonNegative: false, columns: ["_value"])
                                  

                                  VG
                                  Bernd

                                  Edit
                                  Hab die Datei gesehen, hat sich etwas versteckt :)

                                  maximal1981M 1 Antwort Letzte Antwort
                                  0
                                  • ? Ein ehemaliger Benutzer

                                    @maximal1981

                                    Moin,

                                    wenn Du jetzt aus einem Jahreswert aufbaust, dann ja, kannst mir da noch mal einen Abzug manchen.

                                    2487b36b-b906-42c0-9b1f-41bac4df111b-grafik.png

                                    Query A:
                                    import "experimental/date/boundaries"
                                    thisWeek = boundaries.week()
                                    //lastWeek = boundaries.week(week_offset: -1)
                                    
                                    from(bucket: "test_bucket")
                                      |> range(start: thisWeek.start, stop: thisWeek.stop)
                                      //|> range(start: lastWeek.start, stop: lastWeek.stop)
                                      //|> range(start: -7d, stop: now())
                                      |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                                      |> filter(fn: (r) => r["_field"] == "value")
                                      |> cumulativeSum(columns: ["_value"])
                                      |> set(key: "_field", value: "aktuelle Woche")
                                      |> drop(columns:["from","ack", "q"])
                                      |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                      //|> difference(nonNegative: false, columns: ["_value"])
                                    
                                    Query B:
                                    import "experimental/date/boundaries"
                                    //thisWeek = boundaries.week()
                                    lastWeek = boundaries.week(week_offset: -1)
                                    
                                    from(bucket: "test_bucket")
                                      //|> range(start: thisWeek.start, stop: thisWeek.stop)
                                      |> range(start: lastWeek.start, stop: lastWeek.stop)
                                      //|> range(start: -14d, stop: -7d)
                                      |> timeShift(duration: 7d)
                                      |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyProductionTotal")
                                      |> filter(fn: (r) => r["_field"] == "value")
                                      |> cumulativeSum(columns: ["_value"])
                                      |> set(key: "_field", value: "letzte Woche")
                                      |> drop(columns:["from","ack", "q"])
                                      |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                      //|> difference(nonNegative: false, columns: ["_value"])
                                    

                                    VG
                                    Bernd

                                    Edit
                                    Hab die Datei gesehen, hat sich etwas versteckt :)

                                    maximal1981M Offline
                                    maximal1981M Offline
                                    maximal1981
                                    schrieb am zuletzt editiert von
                                    #21

                                    @dp20eic
                                    wenn ich das richtig gelesen habe, sind die Wochentage Settings in den Grundeinstellungen, somit muss man damit leben

                                    ? 1 Antwort Letzte Antwort
                                    0
                                    • maximal1981M maximal1981

                                      @dp20eic
                                      wenn ich das richtig gelesen habe, sind die Wochentage Settings in den Grundeinstellungen, somit muss man damit leben

                                      ? Offline
                                      ? Offline
                                      Ein ehemaliger Benutzer
                                      schrieb am zuletzt editiert von
                                      #22

                                      @maximal1981

                                      Moin,

                                      Mit den Jahreswerten:
                                      9c94fc1f-3a94-4899-9ba3-537e941221b7-grafik.png

                                      Query A = aktuelle Woche
                                      import "timezone"
                                      option location = timezone.location(name: "Europe/Berlin")
                                      from(bucket: "test_bucket")
                                        |> range(start: -7d, stop: now())
                                        |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.06_Year.Energy.EnergyProductionTotal")
                                        |> filter(fn: (r) => r["_field"] == "value")
                                        |> set(key: "_field", value: "aktuelle Woche")
                                        |> drop(columns:["from","ack", "q"])
                                        |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                        |> difference(nonNegative: false, columns: ["_value"])
                                      
                                      Query B = letzte Woche
                                      import "timezone"
                                      option location = timezone.location(name: "Europe/Berlin")
                                      from(bucket: "test_bucket")
                                        |> range(start: -14d, stop: -7d)
                                        |> timeShift(duration: 7d)
                                        |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.06_Year.Energy.EnergyProductionTotal")
                                        |> filter(fn: (r) => r["_field"] == "value")
                                        |> set(key: "_field", value: "letzte Woche")
                                        |> drop(columns:["from","ack", "q"])
                                        |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                        |> difference(nonNegative: false, columns: ["_value"])
                                      

                                      So wenn ich auf die Woche schaue, also von Montag - Sonntag
                                      286cdb9c-fb8f-424b-8c51-b56f7a62b691-grafik.png

                                      Query A
                                      import "experimental/date/boundaries"
                                      thisWeek = boundaries.week()
                                      //lastWeek = boundaries.week(week_offset: -1)
                                      
                                      from(bucket: "test_bucket")
                                        |> range(start: thisWeek.start, stop: thisWeek.stop)
                                        //|> range(start: lastWeek.start, stop: lastWeek.stop)
                                        //|> range(start: -7d, stop: now())
                                        |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.06_Year.Energy.EnergyProductionTotal")
                                        |> filter(fn: (r) => r["_field"] == "value")
                                        //|> cumulativeSum(columns: ["_value"])
                                        |> set(key: "_field", value: "aktuelle Woche")
                                        |> drop(columns:["from","ack", "q"])
                                        |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                        |> difference(nonNegative: false, columns: ["_value"])
                                      
                                      
                                      Query B
                                      import "experimental/date/boundaries"
                                      //thisWeek = boundaries.week()
                                      lastWeek = boundaries.week(week_offset: -1)
                                      
                                      from(bucket: "test_bucket")
                                        //|> range(start: thisWeek.start, stop: thisWeek.stop)
                                        |> range(start: lastWeek.start, stop: lastWeek.stop)
                                        //|> range(start: -14d, stop: -7d)
                                        |> timeShift(duration: 7d)
                                        |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.06_Year.Energy.EnergyProductionTotal")
                                        |> filter(fn: (r) => r["_field"] == "value")
                                        //|> cumulativeSum(columns: ["_value"])
                                        |> set(key: "_field", value: "letzte Woche")
                                        |> drop(columns:["from","ack", "q"])
                                        |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
                                        |> difference(nonNegative: false, columns: ["_value"])
                                      

                                      Das mit der X-Achse bekomme ich auch noch hin, muss nur ab und an andere Dinge machen und bin dann von Mittwoch im Urlaub, etwas Sonne tanken :)

                                      VG
                                      Bernd

                                      1 Antwort Letzte Antwort
                                      0
                                      • maximal1981M Offline
                                        maximal1981M Offline
                                        maximal1981
                                        schrieb am zuletzt editiert von
                                        #23

                                        @dp20eic
                                        dann flott Koffer richten, bei dem was ich dich bereits gequält habe, hast du dir das redlich verdient

                                        ich glaube bei mir liegt irgendwas anderes quer.
                                        Jedes Mal beim Teil B mit dem Versatz um 7 Tage rödelt der Aktualisierungskreis eine gefüllte Ewigkeit und dann wieder die tolle Meldung:

                                        Post "http://xyz:8086/api/v2/query?org=my-org": net/http: timeout awaiting response headers (Client.Timeout exceeded while awaiting headers)

                                        ? 1 Antwort Letzte Antwort
                                        0
                                        • maximal1981M maximal1981

                                          @dp20eic
                                          dann flott Koffer richten, bei dem was ich dich bereits gequält habe, hast du dir das redlich verdient

                                          ich glaube bei mir liegt irgendwas anderes quer.
                                          Jedes Mal beim Teil B mit dem Versatz um 7 Tage rödelt der Aktualisierungskreis eine gefüllte Ewigkeit und dann wieder die tolle Meldung:

                                          Post "http://xyz:8086/api/v2/query?org=my-org": net/http: timeout awaiting response headers (Client.Timeout exceeded while awaiting headers)

                                          ? Offline
                                          ? Offline
                                          Ein ehemaliger Benutzer
                                          schrieb am zuletzt editiert von
                                          #24

                                          @maximal1981 sagte in Vergleichskurve in Grafana mit influx Daten:

                                          Post "http://xyz:8086/api/v2/query?org=my-org": net/http: timeout awaiting response headers (Client.Timeout exceeded while awaiting headers)

                                          Moin,

                                          habe den Überblick verloren, wie bist Du unterwegs?

                                          Getrennte Docker, LXC Container, VMs?

                                          Lass mal ein ping nebenher laufen vom Grafana zur influxDb und Stress das System mal.

                                          Du siehst dann, wenn Du den ping stoppst

                                          --- influxdb-v2-prod.fritz.box ping statistics ---
                                          26 packets transmitted, 26 received, 0% packet loss, time 25035ms
                                          rtt min/avg/max/mdev = 0.038/0.059/0.078/0.009 ms
                                          

                                          Und schau mal ob Du packete verlierst.

                                          VG
                                          Bernd

                                          maximal1981M 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          626

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe