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. ioBroker Allgemein
  4. Adapter Klipper-Moonraker

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.1k

Adapter Klipper-Moonraker

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
klippermoonrakeradapter update
124 Beiträge 24 Kommentatoren 20.9k Aufrufe 23 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.
  • K Kammi_

    Ich bin hier am verzweifeln mir die restzeit raus zu fummeln in HA gehts ja auch hat jemand schon ne lösung dafür ?

    in HA schaut das ganze so aus

    swx1_time_remaining:
            unique_id: sensor.swx1_time_remaining
            friendly_name: "T-remaining"
            icon_template: mdi:clock-end
            value_template: >-
              {{ (((states.sensor.swx1_sensor.attributes['print_stats']['print_duration'] / states.sensor.swx1_sensor.attributes['display_status']['progress'] - states.sensor.swx1_sensor.attributes['print_stats']['print_duration']) if states.sensor.swx1_sensor.attributes['display_status']['progress'] > 0 else 0) | timestamp_custom('%H:%M:%S', 0)) if is_state('sensor.swx1_sensor', 'OK') else None }}
    
    1Topf1 Offline
    1Topf1 Offline
    1Topf
    schrieb am zuletzt editiert von
    #74

    @kammi_

    Die Restzeit hat es mir gestern unter "display-status" - "message" angezeigt. Heute steht dort nur "printing". :face_with_rolling_eyes:

    foxriver76F 1 Antwort Letzte Antwort
    0
    • K Kammi_

      Ich bin hier am verzweifeln mir die restzeit raus zu fummeln in HA gehts ja auch hat jemand schon ne lösung dafür ?

      in HA schaut das ganze so aus

      swx1_time_remaining:
              unique_id: sensor.swx1_time_remaining
              friendly_name: "T-remaining"
              icon_template: mdi:clock-end
              value_template: >-
                {{ (((states.sensor.swx1_sensor.attributes['print_stats']['print_duration'] / states.sensor.swx1_sensor.attributes['display_status']['progress'] - states.sensor.swx1_sensor.attributes['print_stats']['print_duration']) if states.sensor.swx1_sensor.attributes['display_status']['progress'] > 0 else 0) | timestamp_custom('%H:%M:%S', 0)) if is_state('sensor.swx1_sensor', 'OK') else None }}
      
      Merlin123M Offline
      Merlin123M Offline
      Merlin123
      schrieb am zuletzt editiert von
      #75

      @kammi_ Hab leider keine Möglichkeit gefunden. Der Adapter liefert da keinen brauchbaren Wert

      Beta-Tester

      1 Antwort Letzte Antwort
      0
      • 1Topf1 1Topf

        @kammi_

        Die Restzeit hat es mir gestern unter "display-status" - "message" angezeigt. Heute steht dort nur "printing". :face_with_rolling_eyes:

        foxriver76F Offline
        foxriver76F Offline
        foxriver76
        Developer
        schrieb am zuletzt editiert von
        #76

        @1topf Bei mir gibt es display_status.progress als DP. Habe da auch einen Alias drauf für *100 wenn das immer eine Konvertierung benötigt, kann man das auch im Adapter einbauen ja.

        Videotutorials & mehr

        Hier könnt ihr mich unterstützen.

        Merlin123M 1 Antwort Letzte Antwort
        1
        • foxriver76F foxriver76

          @1topf Bei mir gibt es display_status.progress als DP. Habe da auch einen Alias drauf für *100 wenn das immer eine Konvertierung benötigt, kann man das auch im Adapter einbauen ja.

          Merlin123M Offline
          Merlin123M Offline
          Merlin123
          schrieb am zuletzt editiert von
          #77

          @foxriver76 Schöner wäre die geplante Endzeit ;)

          Beta-Tester

          foxriver76F K 2 Antworten Letzte Antwort
          0
          • Merlin123M Merlin123

            @foxriver76 Schöner wäre die geplante Endzeit ;)

            foxriver76F Offline
            foxriver76F Offline
            foxriver76
            Developer
            schrieb am zuletzt editiert von
            #78

            @merlin123 gibt es nicht über die API

            Videotutorials & mehr

            Hier könnt ihr mich unterstützen.

            Merlin123M 1 Antwort Letzte Antwort
            0
            • foxriver76F foxriver76

              @merlin123 gibt es nicht über die API

              Merlin123M Offline
              Merlin123M Offline
              Merlin123
              schrieb am zuletzt editiert von
              #79

              @foxriver76 Ah ok. Schade :( Ich finde aber irgendwie auch sonst keine Möglichkeit, die Restlaufzeit oder so herauszufinden.
              Hab mal versucht über den Fortschritt und die verstrichene Zeit was zu machen, aber der Fortschritt scheint sich nicht auf die Zeit zu beziehen..

              Beta-Tester

              1 Antwort Letzte Antwort
              0
              • K Offline
                K Offline
                Kammi_
                schrieb am zuletzt editiert von Kammi_
                #80

                so nach einigen hin und her auch wenn es umständlich ist, wenn ich jetzt meine API abrufe

                http://192.168.0.84:7125/printer/objects/query?display_status
                

                bekomm ich folgende ausgabe

                	
                result	
                eventtime	21482.066148242
                status	
                display_status	
                progress	0
                message	"00-22"
                

                gelöst durch dieses makro

                [gcode_macro M73]
                rename_existing: M990073
                #variable_R: 0
                #variable_P: 0
                #default_parameter_P: 0
                #default_parameter_R: 0
                gcode:
                #SET_GCODE_VARIABLE MACRO=M73 VARIABLE=R TYPE=int VALUE={params.R}
                #SET_GCODE_VARIABLE MACRO=M73 VARIABLE=P TYPE=int VALUE={params.P}
                    M990073 P{ params.P|int} 
                    M117 { "%02d-%02d" % (params.R|int // 60, (params.R|int) % 60) } 
                
                Merlin123M 1 Antwort Letzte Antwort
                0
                • Merlin123M Merlin123

                  @foxriver76 Schöner wäre die geplante Endzeit ;)

                  K Offline
                  K Offline
                  Kammi_
                  schrieb am zuletzt editiert von
                  #81

                  @merlin123

                  lässt sich doch jetzt mit blockly etc und der simpleapi einfach umsetzen

                  1Topf1 1 Antwort Letzte Antwort
                  0
                  • K Kammi_

                    @merlin123

                    lässt sich doch jetzt mit blockly etc und der simpleapi einfach umsetzen

                    1Topf1 Offline
                    1Topf1 Offline
                    1Topf
                    schrieb am zuletzt editiert von 1Topf
                    #82

                    @kammi_

                    Also ich hab das alles ohne API, sondern nur über die IP des Druckers. Jetzt drucke ich gerade etwas (... meine Frau guckt schon komisch ... :grin: ), und da zeigt es die verbleibende Zeit wieder an. Ich muß nur mal in Ruhe vergleichen, wo der Unterschied liegt: jetzt habe ich die Datei per CURA zum Drucker geschickt, die vorige (ohne Anzeige im DP) aber mit ELEGOO CURA (abgewandelte Form vom Hersteller). Morgen habe ich eventuell Zeit für Vergleiche.

                    ioBroker01.jpg

                    K 1 Antwort Letzte Antwort
                    0
                    • 1Topf1 1Topf

                      @kammi_

                      Also ich hab das alles ohne API, sondern nur über die IP des Druckers. Jetzt drucke ich gerade etwas (... meine Frau guckt schon komisch ... :grin: ), und da zeigt es die verbleibende Zeit wieder an. Ich muß nur mal in Ruhe vergleichen, wo der Unterschied liegt: jetzt habe ich die Datei per CURA zum Drucker geschickt, die vorige (ohne Anzeige im DP) aber mit ELEGOO CURA (abgewandelte Form vom Hersteller). Morgen habe ich eventuell Zeit für Vergleiche.

                      ioBroker01.jpg

                      K Offline
                      K Offline
                      Kammi_
                      schrieb am zuletzt editiert von
                      #83

                      @1topf

                      Das mit der API liegt daran das ich nich die VIS sondern ein Dashboard benutze

                      1 Antwort Letzte Antwort
                      0
                      • K Kammi_

                        so nach einigen hin und her auch wenn es umständlich ist, wenn ich jetzt meine API abrufe

                        http://192.168.0.84:7125/printer/objects/query?display_status
                        

                        bekomm ich folgende ausgabe

                        	
                        result	
                        eventtime	21482.066148242
                        status	
                        display_status	
                        progress	0
                        message	"00-22"
                        

                        gelöst durch dieses makro

                        [gcode_macro M73]
                        rename_existing: M990073
                        #variable_R: 0
                        #variable_P: 0
                        #default_parameter_P: 0
                        #default_parameter_R: 0
                        gcode:
                        #SET_GCODE_VARIABLE MACRO=M73 VARIABLE=R TYPE=int VALUE={params.R}
                        #SET_GCODE_VARIABLE MACRO=M73 VARIABLE=P TYPE=int VALUE={params.P}
                            M990073 P{ params.P|int} 
                            M117 { "%02d-%02d" % (params.R|int // 60, (params.R|int) % 60) } 
                        
                        Merlin123M Offline
                        Merlin123M Offline
                        Merlin123
                        schrieb am zuletzt editiert von Merlin123
                        #84

                        @kammi_ Also zum Verständnis:
                        Ich muss das Marco in Klipper einbauen, dann kann ich mit

                        http://192.168.0.252:7125/printer/objects/query?display_status
                        

                        nicht nur

                        {"result": {"eventtime": 37888.166006499, "status": {"display_status": {"progress": 0.81, "message": null}}}}
                        

                        Sondern auch die Message in der Art "00-22" was dann ein Ende um 0:20Uhr bedeuten würde?

                        NACHTRAG:
                        Wenn ich das Macro ans Ende der gcode_macro.cfg kopiere und den status abrufe, hat sich nichts geändert :(
                        Ich hab das auf nem Creality K1 am Laufen

                        Beta-Tester

                        K 1 Antwort Letzte Antwort
                        0
                        • Merlin123M Merlin123

                          @kammi_ Also zum Verständnis:
                          Ich muss das Marco in Klipper einbauen, dann kann ich mit

                          http://192.168.0.252:7125/printer/objects/query?display_status
                          

                          nicht nur

                          {"result": {"eventtime": 37888.166006499, "status": {"display_status": {"progress": 0.81, "message": null}}}}
                          

                          Sondern auch die Message in der Art "00-22" was dann ein Ende um 0:20Uhr bedeuten würde?

                          NACHTRAG:
                          Wenn ich das Macro ans Ende der gcode_macro.cfg kopiere und den status abrufe, hat sich nichts geändert :(
                          Ich hab das auf nem Creality K1 am Laufen

                          K Offline
                          K Offline
                          Kammi_
                          schrieb am zuletzt editiert von Kammi_
                          #85

                          @merlin123

                          Moin und Frohe Weihnachten euch allen. Ich habe das am anfang bei mir eingefügt

                          # QIDI Plus4 V1.6.0
                          #20241102 
                          #1. 起始代码腔室加热将在调平后开启
                          #2. 腔室加热开启必须带着热床升温
                          #3. M141和M191宏定义修改,热床低于70会开启热床加热
                          #4. 
                          ## eigener code anfang
                          
                          [gcode_macro M73]
                          rename_existing: M990073
                          #variable_R: 0
                          #variable_P: 0
                          #default_parameter_P: 0
                          #default_parameter_R: 0
                          gcode:
                          #SET_GCODE_VARIABLE MACRO=M73 VARIABLE=R TYPE=int VALUE={params.R}
                          #SET_GCODE_VARIABLE MACRO=M73 VARIABLE=P TYPE=int VALUE={params.P}
                              M990073 P{ params.P|int} 
                              M117 { "%02d%02d" % (params.R|int // 60, (params.R|int) % 60) } 
                          
                          
                          ## Eigener code ende
                          [gcode_macro _CG28]
                          gcode:
                          

                          mit dieser adresse kannst du dir alles anzeigen lassen

                          http://192.168.0.84:7125/printer/objects/list
                          

                          würde dann so aussehen wenn du daten abrufen willst

                          http://192.168.0.84:7125/printer/objects/query?display_status&heaters&print_stats
                          

                          die 00-22 sind in minuten du kannst die zeile auch so ändern

                          M117 { "%02d:%02d" % (params.R|int // 60, (params.R|int) % 60) } Minuten
                          

                          dann wäre die Ausgabe 00:22 Minuten oder was du auch immer dahinter schreibst. Wie ich das anders Formatiere hab ich keine Ahnung gcode is ne andere Welt für mich.

                          bei mir sieht das dann so aus in der übersicht was mich allerdings nicht stört

                          M117-qidi.png

                          Merlin123M 1 Antwort Letzte Antwort
                          0
                          • K Kammi_

                            @merlin123

                            Moin und Frohe Weihnachten euch allen. Ich habe das am anfang bei mir eingefügt

                            # QIDI Plus4 V1.6.0
                            #20241102 
                            #1. 起始代码腔室加热将在调平后开启
                            #2. 腔室加热开启必须带着热床升温
                            #3. M141和M191宏定义修改,热床低于70会开启热床加热
                            #4. 
                            ## eigener code anfang
                            
                            [gcode_macro M73]
                            rename_existing: M990073
                            #variable_R: 0
                            #variable_P: 0
                            #default_parameter_P: 0
                            #default_parameter_R: 0
                            gcode:
                            #SET_GCODE_VARIABLE MACRO=M73 VARIABLE=R TYPE=int VALUE={params.R}
                            #SET_GCODE_VARIABLE MACRO=M73 VARIABLE=P TYPE=int VALUE={params.P}
                                M990073 P{ params.P|int} 
                                M117 { "%02d%02d" % (params.R|int // 60, (params.R|int) % 60) } 
                            
                            
                            ## Eigener code ende
                            [gcode_macro _CG28]
                            gcode:
                            

                            mit dieser adresse kannst du dir alles anzeigen lassen

                            http://192.168.0.84:7125/printer/objects/list
                            

                            würde dann so aussehen wenn du daten abrufen willst

                            http://192.168.0.84:7125/printer/objects/query?display_status&heaters&print_stats
                            

                            die 00-22 sind in minuten du kannst die zeile auch so ändern

                            M117 { "%02d:%02d" % (params.R|int // 60, (params.R|int) % 60) } Minuten
                            

                            dann wäre die Ausgabe 00:22 Minuten oder was du auch immer dahinter schreibst. Wie ich das anders Formatiere hab ich keine Ahnung gcode is ne andere Welt für mich.

                            bei mir sieht das dann so aus in der übersicht was mich allerdings nicht stört

                            M117-qidi.png

                            Merlin123M Offline
                            Merlin123M Offline
                            Merlin123
                            schrieb am zuletzt editiert von Merlin123
                            #86

                            @kammi_ ok. Danke. Muss ich mir mal anschauen, werd aber erst morgen dazu kommen. Sind das dann stunden:Minuten?

                            Beta-Tester

                            K 1 Antwort Letzte Antwort
                            0
                            • Merlin123M Merlin123

                              @kammi_ ok. Danke. Muss ich mir mal anschauen, werd aber erst morgen dazu kommen. Sind das dann stunden:Minuten?

                              K Offline
                              K Offline
                              Kammi_
                              schrieb am zuletzt editiert von Kammi_
                              #87

                              @merlin123

                              Ja ist es, muss jetzt nur noch nen weg finden, wie ich das in blockly umsetz das ich die aktuelle Zeit + die druck Zeit zusammen zähle und die mir ausgeben lasse so das ich se dann wiederum mit der api abrufen kann.

                              //edit
                              was ich festgestellt habe ist das es sich bei der Zeit wo ausgegeben wir um reine durck Zeit handelt. Also ohne aufheizen und was sonst noch vor dem eigentlichen druck passiert.

                              1Topf1 1 Antwort Letzte Antwort
                              1
                              • K Kammi_

                                @merlin123

                                Ja ist es, muss jetzt nur noch nen weg finden, wie ich das in blockly umsetz das ich die aktuelle Zeit + die druck Zeit zusammen zähle und die mir ausgeben lasse so das ich se dann wiederum mit der api abrufen kann.

                                //edit
                                was ich festgestellt habe ist das es sich bei der Zeit wo ausgegeben wir um reine durck Zeit handelt. Also ohne aufheizen und was sonst noch vor dem eigentlichen druck passiert.

                                1Topf1 Offline
                                1Topf1 Offline
                                1Topf
                                schrieb am zuletzt editiert von
                                #88

                                @kammi_

                                So. Ich bekomme die Zeit in den Objekten angezeigt, wenn ich in CURA das Script "Display Info on LCD" hinzufüge. Natürlich betrifft das nur die reine Druckzeit, hochheizen ist da nicht dabei.

                                cura script 01.jpg

                                Leider wird auch die Endzeit "Fertig um ..." nicht mit übermittelt.

                                druck01.jpg

                                Aber es gibt genug Datenpunkte, um den Drucker per smarter Steckdose auszuschalten, z.B. die Temperatur vom Druckbett.
                                Was momentan wirklich stört ist, daß der Adapter den Fehlerspeicher von ioB füllt, sobald die Verbindung zum Drucker weg ist. Und auch, daß der Adapter mit jedem neuen Druck einen Neustart benötigt.

                                Sonst hab ich nix zu meckern. :grinning:

                                S V DiginixD 3 Antworten Letzte Antwort
                                0
                                • 1Topf1 1Topf

                                  @kammi_

                                  So. Ich bekomme die Zeit in den Objekten angezeigt, wenn ich in CURA das Script "Display Info on LCD" hinzufüge. Natürlich betrifft das nur die reine Druckzeit, hochheizen ist da nicht dabei.

                                  cura script 01.jpg

                                  Leider wird auch die Endzeit "Fertig um ..." nicht mit übermittelt.

                                  druck01.jpg

                                  Aber es gibt genug Datenpunkte, um den Drucker per smarter Steckdose auszuschalten, z.B. die Temperatur vom Druckbett.
                                  Was momentan wirklich stört ist, daß der Adapter den Fehlerspeicher von ioB füllt, sobald die Verbindung zum Drucker weg ist. Und auch, daß der Adapter mit jedem neuen Druck einen Neustart benötigt.

                                  Sonst hab ich nix zu meckern. :grinning:

                                  S Nicht stören
                                  S Nicht stören
                                  stenmic
                                  schrieb am zuletzt editiert von stenmic
                                  #89

                                  @1topf schau dir mal die mqtt Funktion von moonraker an. Hab vor langer Zeit darauf umgestellt. Damit hast du die Probleme nicht.

                                  hier kannst dir meine vis dazu anschauen https://forum.iobroker.net/topic/77997/meine-vis-mit-76-seiten?_=1735153770056

                                  1 Antwort Letzte Antwort
                                  0
                                  • 1Topf1 Offline
                                    1Topf1 Offline
                                    1Topf
                                    schrieb am zuletzt editiert von Homoran
                                    #90

                                    @stenmic Über mqtt bin ich heute beim Lesen auch schon gestolpert. Wie hast Du das "aktiviert"? Offiziell gibt es da ja keine Einstellungen, zumindest seh ich nix.
                                    Ich habe mir dann dieses MQTT-Plugin: (https://github.com/SuperKohl/Moonraker-MQTT-plugin) installiert, aber ich bekomme keine Verbindung. Hab jetzt gerade auch keine Lust mehr ... :expressionless:
                                    Ich probiere es später nochmal.

                                    S 1 Antwort Letzte Antwort
                                    0
                                    • 1Topf1 1Topf

                                      @stenmic Über mqtt bin ich heute beim Lesen auch schon gestolpert. Wie hast Du das "aktiviert"? Offiziell gibt es da ja keine Einstellungen, zumindest seh ich nix.
                                      Ich habe mir dann dieses MQTT-Plugin: (https://github.com/SuperKohl/Moonraker-MQTT-plugin) installiert, aber ich bekomme keine Verbindung. Hab jetzt gerade auch keine Lust mehr ... :expressionless:
                                      Ich probiere es später nochmal.

                                      S Nicht stören
                                      S Nicht stören
                                      stenmic
                                      schrieb am zuletzt editiert von
                                      #91

                                      @1topf das ist das falsche Plugin, du brauchst dieses.
                                      IMG_0962.jpeg

                                      in den Einstellungen einen Benutzer und Passwort vergeben.
                                      IMG_0963.jpeg

                                      dann in der Moonraker.conf den Bereich mqtt aktivieren.
                                      Bei den status_objects musst du testen welche du benötigst.
                                      Die Werte werden dann alle 2 Sekunden an den ioBroker gesendet.
                                      Aber nur wenn sie sich ändern.
                                      Zu finden unter mqtt.
                                      IMG_0964.png

                                      1Topf1 Merlin123M 2 Antworten Letzte Antwort
                                      0
                                      • K Offline
                                        K Offline
                                        Kammi_
                                        schrieb am zuletzt editiert von Kammi_
                                        #92

                                        dank @paul53 seiner hilfe bin ich fertig damit

                                        qudi-fertig.png

                                        1 Antwort Letzte Antwort
                                        0
                                        • S stenmic

                                          @1topf das ist das falsche Plugin, du brauchst dieses.
                                          IMG_0962.jpeg

                                          in den Einstellungen einen Benutzer und Passwort vergeben.
                                          IMG_0963.jpeg

                                          dann in der Moonraker.conf den Bereich mqtt aktivieren.
                                          Bei den status_objects musst du testen welche du benötigst.
                                          Die Werte werden dann alle 2 Sekunden an den ioBroker gesendet.
                                          Aber nur wenn sie sich ändern.
                                          Zu finden unter mqtt.
                                          IMG_0964.png

                                          1Topf1 Offline
                                          1Topf1 Offline
                                          1Topf
                                          schrieb am zuletzt editiert von
                                          #93

                                          @stenmic

                                          Den MQTT-Adapter für ioB hab ich natürlich. Das Plugin von oben hab ich direkt auf dem Drucker installiert. Habe aber gestern abend unabhängig davon auch die Änderungen direkt in der moonraker.conf gemacht, dort nur die falsche IP reingeschrieben :man-facepalming: . Mittlerweile taucht der Drucker in den mqtt-Objekten auch auf.

                                          @Kammi_

                                          Mehr Infos gönnst Du uns wohl nicht? :man-shrugging:

                                          K 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
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          787

                                          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