Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. Grafana
  5. Stapel-Balkengrafik mit Grafana

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    562

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    5.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.4k

Stapel-Balkengrafik mit Grafana

Scheduled Pinned Locked Moved Grafana
76 Posts 7 Posters 9.0k Views 6 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Laser

    @wolfi913 Habe jetzt currentDay und jede Stunde und Änderungen 2. Stelle nach dem Komma eingestellt.

    mickemupM Offline
    mickemupM Offline
    mickemup
    wrote on last edited by
    #42

    @laser
    Wenn dich nur der Endwert intressiert, musst du nicht jede Stunde loggen.
    Änderungen loggen sollte IMHO ausreichen.

    L 1 Reply Last reply
    0
    • mickemupM mickemup

      @laser
      Wenn dich nur der Endwert intressiert, musst du nicht jede Stunde loggen.
      Änderungen loggen sollte IMHO ausreichen.

      L Offline
      L Offline
      Laser
      wrote on last edited by Laser
      #43

      @mickemup Ja, eigentlich. Jede Stunde, da sieht man etwas bei der Kurvendarstellung. Manchmal ändert sich nichts. Wenn das Alles funktioniert, nehme ich das raus. Wenn ich es nicht vergesse, wie die 600 Sekunden...

      mickemupM 1 Reply Last reply
      0
      • L Laser

        @mickemup Ja, eigentlich. Jede Stunde, da sieht man etwas bei der Kurvendarstellung. Manchmal ändert sich nichts. Wenn das Alles funktioniert, nehme ich das raus. Wenn ich es nicht vergesse, wie die 600 Sekunden...

        mickemupM Offline
        mickemupM Offline
        mickemup
        wrote on last edited by
        #44

        @laser Ok, trifft ja nicht so viel an.
        Und mit jeder Stunde, kreierst die auch nicht extrem viel unnötigen "Datenmüll"

        1 Reply Last reply
        0
        • mickemupM mickemup

          @wolfi913
          mir der Range können wir ja noch schauen, was genau gewollt ist.
          Eventuell auch via "Query Options"
          Aber das ist dann Feintuning

          W Online
          W Online
          wolfi913
          wrote on last edited by
          #45

          @mickemup sagte in Stapel-Balkengrafik mit Grafana:

          mir der Range können wir ja noch schauen, was genau gewollt ist.

          Klar, dazu müssen ja zuerst mal Daten geloggt sein.
          Mein Beispiel würde ja auch den aktuellen Tag abschneiden und nicht anzeigen sondern nur vollständige Tage.

          L 1 Reply Last reply
          0
          • W wolfi913

            @mickemup sagte in Stapel-Balkengrafik mit Grafana:

            mir der Range können wir ja noch schauen, was genau gewollt ist.

            Klar, dazu müssen ja zuerst mal Daten geloggt sein.
            Mein Beispiel würde ja auch den aktuellen Tag abschneiden und nicht anzeigen sondern nur vollständige Tage.

            L Offline
            L Offline
            Laser
            wrote on last edited by Laser
            #46

            @wolfi913 ich miste erst mal aus. Habe auch noch die einzelnen Monate drin. Das stammt Alles aus der Zeit vor Grafana. Da hatte ich einzelne Balken in VIS.

            L 1 Reply Last reply
            0
            • L Laser

              @wolfi913 ich miste erst mal aus. Habe auch noch die einzelnen Monate drin. Das stammt Alles aus der Zeit vor Grafana. Da hatte ich einzelne Balken in VIS.

              L Offline
              L Offline
              Laser
              wrote on last edited by Laser
              #47

              @wolfi913
              1Wert ist ja in jedem currentDay drin. 1 Tag sollte angezeigt werden. Habe Das mal so gemacht (ist aber noch ein Fehler drin):

              import "timezone"
              import "date"
              option location = timezone.location(name: "Europe/Berlin")
              
              from(bucket: "iobroker")
               // |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                |> range(start: date.add(d: -7d, to: today()), stop: date.truncate(t: today(), unit: 1d))
                |> filter(fn: (r)
                => r["_measurement"] == "sourceanalytix.0.alias__0__VE-Total__H19.currentYear.delivered.01_currentDay"
                or r["_measurement"] == "sourceanalytix.0.alias__0__Shelly1EM-Power__Total-EM1.currentYear.delivered.01_currentDay")
                |> filter(fn: (r) => r["_field"] == "value")
                |> aggregateWindow(every: 1d, fn: last, createEmpty: true, timeSrc: "_start")
                |> yield(name: "last")
              
              W 1 Reply Last reply
              0
              • L Laser

                @wolfi913
                1Wert ist ja in jedem currentDay drin. 1 Tag sollte angezeigt werden. Habe Das mal so gemacht (ist aber noch ein Fehler drin):

                import "timezone"
                import "date"
                option location = timezone.location(name: "Europe/Berlin")
                
                from(bucket: "iobroker")
                 // |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> range(start: date.add(d: -7d, to: today()), stop: date.truncate(t: today(), unit: 1d))
                  |> filter(fn: (r)
                  => r["_measurement"] == "sourceanalytix.0.alias__0__VE-Total__H19.currentYear.delivered.01_currentDay"
                  or r["_measurement"] == "sourceanalytix.0.alias__0__Shelly1EM-Power__Total-EM1.currentYear.delivered.01_currentDay")
                  |> filter(fn: (r) => r["_field"] == "value")
                  |> aggregateWindow(every: 1d, fn: last, createEmpty: true, timeSrc: "_start")
                  |> yield(name: "last")
                
                W Online
                W Online
                wolfi913
                wrote on last edited by
                #48

                @laser
                Stell mal die Range auf

                  |> range(start: -7d, stop: v.timeRangeStop)
                

                Den aktuellen Tag zeigt er Dir ja mit der anderen Auswertung nicht an. Da werden nur ganze Tage genommen.
                Außerdem würde ich je eine Query je Datenpunkt machen.

                L 1 Reply Last reply
                0
                • W wolfi913

                  @laser
                  Stell mal die Range auf

                    |> range(start: -7d, stop: v.timeRangeStop)
                  

                  Den aktuellen Tag zeigt er Dir ja mit der anderen Auswertung nicht an. Da werden nur ganze Tage genommen.
                  Außerdem würde ich je eine Query je Datenpunkt machen.

                  L Offline
                  L Offline
                  Laser
                  wrote on last edited by Laser
                  #49

                  @wolfi913 sagte in Stapel-Balkengrafik mit Grafana:

                  e

                  Da paßt noch was mit den Zeiten nicht. Kann nicht gestapelt werden. Ich versuche noch mal mit einzelnen Query.
                  (Darstellung mit dem Zeitversatz besteht aber noch)
                  d342e9f6-593c-4796-941e-4f75ad3a7217-image.png

                  Das Ganze muß ich erst mal verarbeiten. Ich werde morgen noch mal frisch ran gehen.
                  Ist diese Beschreibung richtig? https://docs.influxdata.com/flux/v0/stdlib/universe/range/ u.a.m.

                  W icebearI 2 Replies Last reply
                  0
                  • L Laser

                    @wolfi913 sagte in Stapel-Balkengrafik mit Grafana:

                    e

                    Da paßt noch was mit den Zeiten nicht. Kann nicht gestapelt werden. Ich versuche noch mal mit einzelnen Query.
                    (Darstellung mit dem Zeitversatz besteht aber noch)
                    d342e9f6-593c-4796-941e-4f75ad3a7217-image.png

                    Das Ganze muß ich erst mal verarbeiten. Ich werde morgen noch mal frisch ran gehen.
                    Ist diese Beschreibung richtig? https://docs.influxdata.com/flux/v0/stdlib/universe/range/ u.a.m.

                    W Online
                    W Online
                    wolfi913
                    wrote on last edited by wolfi913
                    #50

                    @laser
                    Das mit

                      |> aggregateWindow(every: 1d, fn: last, createEmpty: true, timeSrc: "_start")
                    

                    funktioniert nicht für den aktuellen Tag, nur für die ganzen Tage.
                    Da müsste vermutlich noch zusätzlich mit timeShift oder was Ähnlichem gearbeitet werden.

                    L 1 Reply Last reply
                    1
                    • W wolfi913

                      @laser
                      Das mit

                        |> aggregateWindow(every: 1d, fn: last, createEmpty: true, timeSrc: "_start")
                      

                      funktioniert nicht für den aktuellen Tag, nur für die ganzen Tage.
                      Da müsste vermutlich noch zusätzlich mit timeShift oder was Ähnlichem gearbeitet werden.

                      L Offline
                      L Offline
                      Laser
                      wrote on last edited by
                      #51

                      @wolfi913 mal sehen, wie das morgen aussieht. Da habe ich schon 2 Tage...

                      W 1 Reply Last reply
                      0
                      • L Laser

                        @wolfi913 mal sehen, wie das morgen aussieht. Da habe ich schon 2 Tage...

                        W Online
                        W Online
                        wolfi913
                        wrote on last edited by wolfi913
                        #52

                        @laser
                        Probier mal mit

                          |> truncateTimeColumn(unit: 1d)
                        

                        hinter dem aggregateWindow...

                        Dann sollte der anzuzeigende Wert jeweils auf Mitternacht gesetzt werden.
                        Screenshot 2025-02-04 182825.png
                        Und dann sollten die Werte wieder gesynct sein.

                        L 1 Reply Last reply
                        0
                        • W wolfi913

                          @laser
                          Probier mal mit

                            |> truncateTimeColumn(unit: 1d)
                          

                          hinter dem aggregateWindow...

                          Dann sollte der anzuzeigende Wert jeweils auf Mitternacht gesetzt werden.
                          Screenshot 2025-02-04 182825.png
                          Und dann sollten die Werte wieder gesynct sein.

                          L Offline
                          L Offline
                          Laser
                          wrote on last edited by Laser
                          #53

                          @wolfi913 sagte in Stapel-Balkengrafik mit Grafana:

                          9bea4f26-e74f-4a8a-82ac-644d69d486e7-image.png

                          |> truncateTimeColumn(unit: 1d)

                          import "timezone"
                          import "date"
                          option location = timezone.location(name: "Europe/Berlin")
                          
                          from(bucket: "iobroker")
                          |> range(start: -7d, stop: v.timeRangeStop)
                           |> filter(fn: (r)
                            => r["_measurement"] == "sourceanalytix.0.alias__0__Shelly1EM-Power__Total-EM1.currentYear.delivered.01_currentDay")
                           |> filter(fn: (r) => r["_field"] == "value")
                           |> aggregateWindow(every: 1d, fn: last, createEmpty: true, timeSrc: "_start")
                           |> truncateTimeColumn(unit: 1d)
                           |> yield(name: "last")
                          
                          import "timezone"
                          import "date"
                          option location = timezone.location(name: "Europe/Berlin")
                          
                          from(bucket: "iobroker")
                           |> range(start: -7d, stop: v.timeRangeStop)
                           |> filter(fn: (r)
                            => r["_measurement"] == "sourceanalytix.0.alias__0__VE-Total__H19.currentYear.delivered.01_currentDay")
                           |> filter(fn: (r) => r["_field"] == "value")
                           |> aggregateWindow(every: 1d, fn: last, createEmpty: true, timeSrc: "_start")
                           |> truncateTimeColumn(unit: 1d)
                           |> yield(name: "last")
                          
                          W 1 Reply Last reply
                          0
                          • L Laser

                            @wolfi913 sagte in Stapel-Balkengrafik mit Grafana:

                            9bea4f26-e74f-4a8a-82ac-644d69d486e7-image.png

                            |> truncateTimeColumn(unit: 1d)

                            import "timezone"
                            import "date"
                            option location = timezone.location(name: "Europe/Berlin")
                            
                            from(bucket: "iobroker")
                            |> range(start: -7d, stop: v.timeRangeStop)
                             |> filter(fn: (r)
                              => r["_measurement"] == "sourceanalytix.0.alias__0__Shelly1EM-Power__Total-EM1.currentYear.delivered.01_currentDay")
                             |> filter(fn: (r) => r["_field"] == "value")
                             |> aggregateWindow(every: 1d, fn: last, createEmpty: true, timeSrc: "_start")
                             |> truncateTimeColumn(unit: 1d)
                             |> yield(name: "last")
                            
                            import "timezone"
                            import "date"
                            option location = timezone.location(name: "Europe/Berlin")
                            
                            from(bucket: "iobroker")
                             |> range(start: -7d, stop: v.timeRangeStop)
                             |> filter(fn: (r)
                              => r["_measurement"] == "sourceanalytix.0.alias__0__VE-Total__H19.currentYear.delivered.01_currentDay")
                             |> filter(fn: (r) => r["_field"] == "value")
                             |> aggregateWindow(every: 1d, fn: last, createEmpty: true, timeSrc: "_start")
                             |> truncateTimeColumn(unit: 1d)
                             |> yield(name: "last")
                            
                            W Online
                            W Online
                            wolfi913
                            wrote on last edited by
                            #54

                            @laser
                            Schaut besser aus :blush:

                            L 1 Reply Last reply
                            0
                            • W wolfi913

                              @laser
                              Schaut besser aus :blush:

                              L Offline
                              L Offline
                              Laser
                              wrote on last edited by Laser
                              #55

                              @wolfi913 Ja. Und das "verodern" in der Filterliste ist nicht gut? Welche Nachteile könnte das bringen?

                              import "timezone"
                              import "date"
                              option location = timezone.location(name: "Europe/Berlin")
                              
                              from(bucket: "iobroker")
                              |> range(start: -7d, stop: v.timeRangeStop)
                               |> filter(fn: (r)
                                => r["_measurement"] == "sourceanalytix.0.alias__0__Shelly1EM-Power__Total-EM1.currentYear.delivered.01_currentDay"
                               or  r["_measurement"] == "sourceanalytix.0.alias__0__VE-Total__H19.currentYear.delivered.01_currentDay")
                               |> filter(fn: (r) => r["_field"] == "value")
                               |> aggregateWindow(every: 1d, fn: last, createEmpty: true, timeSrc: "_start")
                               |> truncateTimeColumn(unit: 1d)
                               |> yield(name: "last")
                              

                              Bin schon gespannt, wie das morgen mit 2 Tagen aussieht! Heute möchte ich erst mal nicht mehr nerven. Danke an alle Beteilgten!

                              W 1 Reply Last reply
                              0
                              • L Laser

                                @wolfi913 Ja. Und das "verodern" in der Filterliste ist nicht gut? Welche Nachteile könnte das bringen?

                                import "timezone"
                                import "date"
                                option location = timezone.location(name: "Europe/Berlin")
                                
                                from(bucket: "iobroker")
                                |> range(start: -7d, stop: v.timeRangeStop)
                                 |> filter(fn: (r)
                                  => r["_measurement"] == "sourceanalytix.0.alias__0__Shelly1EM-Power__Total-EM1.currentYear.delivered.01_currentDay"
                                 or  r["_measurement"] == "sourceanalytix.0.alias__0__VE-Total__H19.currentYear.delivered.01_currentDay")
                                 |> filter(fn: (r) => r["_field"] == "value")
                                 |> aggregateWindow(every: 1d, fn: last, createEmpty: true, timeSrc: "_start")
                                 |> truncateTimeColumn(unit: 1d)
                                 |> yield(name: "last")
                                

                                Bin schon gespannt, wie das morgen mit 2 Tagen aussieht! Heute möchte ich erst mal nicht mehr nerven. Danke an alle Beteilgten!

                                W Online
                                W Online
                                wolfi913
                                wrote on last edited by
                                #56

                                @laser
                                Müsste vermutlich auch mit ODER funktionieren.
                                Ich finde einzelne Query's irgendwie besser daher mach ich's wenn möglich lieber immer einzeln.
                                Kann dann (zumindest bin ich der Meinung) in den Overrides besser arbeiten.
                                Außerdem funktionieren dann auch so Sachen wie Rechenoperationen
                                Screenshot 2025-02-04 184132.png
                                einfacher.

                                L 1 Reply Last reply
                                0
                                • W wolfi913

                                  @laser
                                  Müsste vermutlich auch mit ODER funktionieren.
                                  Ich finde einzelne Query's irgendwie besser daher mach ich's wenn möglich lieber immer einzeln.
                                  Kann dann (zumindest bin ich der Meinung) in den Overrides besser arbeiten.
                                  Außerdem funktionieren dann auch so Sachen wie Rechenoperationen
                                  Screenshot 2025-02-04 184132.png
                                  einfacher.

                                  L Offline
                                  L Offline
                                  Laser
                                  wrote on last edited by Laser
                                  #57

                                  @wolfi913 Ja, funktioniert auch mit "or". Wenn man etwas spezielles mit den Daten vorhat, ist einzeln besser. Das werde ich im Auge behalten.
                                  War sehr informativ/ aufregend. Und viel Datenmüll beseitigt. Werde jetzt das TV-Programm zum Runterkommen genießen!:slightly_smiling_face:

                                  mickemupM 1 Reply Last reply
                                  0
                                  • L Laser

                                    @wolfi913 Ja, funktioniert auch mit "or". Wenn man etwas spezielles mit den Daten vorhat, ist einzeln besser. Das werde ich im Auge behalten.
                                    War sehr informativ/ aufregend. Und viel Datenmüll beseitigt. Werde jetzt das TV-Programm zum Runterkommen genießen!:slightly_smiling_face:

                                    mickemupM Offline
                                    mickemupM Offline
                                    mickemup
                                    wrote on last edited by
                                    #58

                                    @laser
                                    Gerne
                                    Hatte am Anfang auch mit Grafana/Influx usw. zu kämpfen und musste mich da reinfuxen.
                                    Habe kurz ein Dashboard Testweise angepasst mit der Annahme, dass du das so angedacht hast:

                                    7bce7133-95ba-4a6f-9d4c-a1b776b957cb-image.png

                                    1dabd38b-fd2f-4ffa-87e3-fd53a79b9ae4-image.png

                                    d1ecfd00-41ac-4bed-9f45-28d2f1da31d2-image.png

                                    import "date"
                                    import "timezone"
                                    option location = timezone.location(name: "Europe/Madrid")
                                    
                                    from(bucket: "iobroker_inflog")
                                      |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                                      |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Energy.Day_Einspeisung")
                                      |> filter(fn: (r) => r["_field"] == "value")
                                        |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start")
                                    

                                    Wichtig: Da die Range nun mit den Query Options "definiert" wird, muss da das v.TimeRang... rein
                                    Ansonsten bist du ja mit den Queries schon gut beraten worden :-)

                                    1 Reply Last reply
                                    1
                                    • L Laser

                                      @wolfi913 sagte in Stapel-Balkengrafik mit Grafana:

                                      e

                                      Da paßt noch was mit den Zeiten nicht. Kann nicht gestapelt werden. Ich versuche noch mal mit einzelnen Query.
                                      (Darstellung mit dem Zeitversatz besteht aber noch)
                                      d342e9f6-593c-4796-941e-4f75ad3a7217-image.png

                                      Das Ganze muß ich erst mal verarbeiten. Ich werde morgen noch mal frisch ran gehen.
                                      Ist diese Beschreibung richtig? https://docs.influxdata.com/flux/v0/stdlib/universe/range/ u.a.m.

                                      icebearI Offline
                                      icebearI Offline
                                      icebear
                                      wrote on last edited by
                                      #59

                                      @laser said in Stapel-Balkengrafik mit Grafana:

                                      Das Ganze muß ich erst mal verarbeiten. Ich werde morgen noch mal frisch ran gehen.

                                      Ich würde dir auch empfehlen in Zukunft Alias-ID's zu verwenden.
                                      Wenn du mit den ellenlangen DP-Bezeichnung weiterarbeitest kannst du bei komplexeren Abfragen schnell den Überblick verlieren.

                                      Du kannst ja beim anlegen für die influxDB unten eine Alias-ID vergeben, das ist dann später bei komplexen Abfragen wesentlich übersichtlicher.

                                      Z.B. anstatt

                                      sourceanalytix.0.alias__0__Shelly1EM-Power__Total-EM1.currentYear.delivered.01_currentDay

                                      nimmst du als Alias

                                      Shelly1_Pow_Total_curDay

                                      L 1 Reply Last reply
                                      1
                                      • icebearI icebear

                                        @laser said in Stapel-Balkengrafik mit Grafana:

                                        Das Ganze muß ich erst mal verarbeiten. Ich werde morgen noch mal frisch ran gehen.

                                        Ich würde dir auch empfehlen in Zukunft Alias-ID's zu verwenden.
                                        Wenn du mit den ellenlangen DP-Bezeichnung weiterarbeitest kannst du bei komplexeren Abfragen schnell den Überblick verlieren.

                                        Du kannst ja beim anlegen für die influxDB unten eine Alias-ID vergeben, das ist dann später bei komplexen Abfragen wesentlich übersichtlicher.

                                        Z.B. anstatt

                                        sourceanalytix.0.alias__0__Shelly1EM-Power__Total-EM1.currentYear.delivered.01_currentDay

                                        nimmst du als Alias

                                        Shelly1_Pow_Total_curDay

                                        L Offline
                                        L Offline
                                        Laser
                                        wrote on last edited by Laser
                                        #60

                                        @icebear @mickemup Der zweite Balken ist heute aufgetaucht. Die Balken wandern jetzt nach links? Auch nicht verkehrt.
                                        Bisher hatte ich 7 Balken mit der Unterschrift der Wochentage. Fing links an und rechts war es noch leer.
                                        Aliasnamen, die ich auch zuordnen kann, muß ich mir noch schnell überlegen.

                                        029c0edb-5e27-4393-9fdf-25c727d51288-image.png

                                        mickemupM 1 Reply Last reply
                                        0
                                        • L Laser

                                          @icebear @mickemup Der zweite Balken ist heute aufgetaucht. Die Balken wandern jetzt nach links? Auch nicht verkehrt.
                                          Bisher hatte ich 7 Balken mit der Unterschrift der Wochentage. Fing links an und rechts war es noch leer.
                                          Aliasnamen, die ich auch zuordnen kann, muß ich mir noch schnell überlegen.

                                          029c0edb-5e27-4393-9fdf-25c727d51288-image.png

                                          mickemupM Offline
                                          mickemupM Offline
                                          mickemup
                                          wrote on last edited by mickemup
                                          #61

                                          @laser Dann schau einfach meinen letzten Post an, dort habe ich dir das mal "aufbereitet" von Mo bis So....
                                          Und gib doch den Dingern via Override (auch im Post ersichtlich) mal anständige Namen :-)

                                          L 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          338

                                          Online

                                          32.7k

                                          Users

                                          82.6k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe