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. Skripten / Logik
  4. [Vorlage] Multi Ereignislisten Skript

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

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

[Vorlage] Multi Ereignislisten Skript

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascripttemplate
112 Beiträge 28 Kommentatoren 22.1k Aufrufe 30 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.
  • NashraN Offline
    NashraN Offline
    Nashra
    Most Active Forum Testing
    schrieb am zuletzt editiert von Nashra
    #96

    Ähm, war das jetzt richtig das Script auf Debug zu setzen, weil da kommt

    javascript.0	2019-12-08 12:43:58.507	warn	(27890) script.js.Ereignisse.Test: setForeignState(id=javascript.0.Ereignisliste.default.event, state="Test") - wurde nicht ausgeführt, während der Debug-Modus aktiv ist
    

    Oder den Adapter javascript auf Debug?

    Gruß Ralf
    Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht übers Wasser gelaufen!!

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

    a200A 1 Antwort Letzte Antwort
    0
    • NashraN Nashra

      Ähm, war das jetzt richtig das Script auf Debug zu setzen, weil da kommt

      javascript.0	2019-12-08 12:43:58.507	warn	(27890) script.js.Ereignisse.Test: setForeignState(id=javascript.0.Ereignisliste.default.event, state="Test") - wurde nicht ausgeführt, während der Debug-Modus aktiv ist
      

      Oder den Adapter javascript auf Debug?

      a200A Offline
      a200A Offline
      a200
      schrieb am zuletzt editiert von
      #97

      @Nashra der javascript-adapter sollte auf debug stehen

      IoBroker auf QNAP TS-451, Raspi und NUC

      1 Antwort Letzte Antwort
      0
      • NashraN Offline
        NashraN Offline
        Nashra
        Most Active Forum Testing
        schrieb am zuletzt editiert von
        #98

        Hatte ich als erstes gemacht aber da kommt nichts wenn ich schalte,
        deswegen hatte ich das überwachende Script auf Debug gesetzt.
        In der html-Liste wird es aber angezeigt das ich ein- und ausgeschaltet habe

        Gruß Ralf
        Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht übers Wasser gelaufen!!

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        1 Antwort Letzte Antwort
        0
        • B Offline
          B Offline
          Besserso
          schrieb am zuletzt editiert von
          #99

          vielen Dank für das tolle Script. Ich habe nun beide Scripte in mein System kopiert. Das Globale Script läuft auch, aber das Allgemeine Script hat bei mir auch den Fehler in Zeile 140. Welcher hier schon öfters angesprochen wurde. Liegt der Fehler im Kopieren? Was muss ich in der Zeile ändern damit es läuft?

          1 Antwort Letzte Antwort
          0
          • L Offline
            L Offline
            Lachi
            schrieb am zuletzt editiert von Lachi
            #100

            Könnte jemand das 0.2.2 Skript hier reinstellen. Bei mir läuft das 0.2.3 auch nicht wegen Zeile 140.

            error	javascript.0 script.js.common.Ereignisliste compile failed: at script.js.common.Ereignisliste:140
            

            Anbei die Log datei,


            javascript.0 2020-02-06 12:30:54.539 error at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
            javascript.0 2020-02-06 12:30:54.538 error at Socket.Readable.push (_stream_readable.js:224:10)
            javascript.0 2020-02-06 12:30:54.538 error at readableAddChunk (_stream_readable.js:269:11)
            javascript.0 2020-02-06 12:30:54.538 error at addChunk (_stream_readable.js:288:12)
            javascript.0 2020-02-06 12:30:54.538 error at Socket.emit (events.js:198:13)
            javascript.0 2020-02-06 12:30:54.537 error at Socket.realHandler (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/node_modules/ws/lib/WebSocket.js:825:20)
            javascript.0 2020-02-06 12:30:54.537 error at Receiver.add (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/node_modules/ws/lib/Receiver.js:103:24)
            javascript.0 2020-02-06 12:30:54.537 error at Receiver.expectHandler (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/node_modules/ws/lib/Receiver.js:499:31)
            javascript.0 2020-02-06 12:30:54.536 error at Receiver.finish (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/node_modules/ws/lib/Receiver.js:541:12)
            javascript.0 2020-02-06 12:30:54.536 error at Receiver.flush (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/node_modules/ws/lib/Receiver.js:347:3)
            javascript.0 2020-02-06 12:30:54.535 error at /opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/node_modules/ws/lib/Receiver.js:508:14
            javascript.0 2020-02-06 12:30:54.535 error at Receiver.applyExtensions (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/node_modules/ws/lib/Receiver.js:371:5)
            javascript.0 2020-02-06 12:30:54.535 error at /opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/node_modules/ws/lib/Receiver.js:536:18
            javascript.0 2020-02-06 12:30:54.535 error at Receiver.ontext (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/node_modules/ws/lib/WebSocket.js:841:10)
            javascript.0 2020-02-06 12:30:54.534 error at WebSocket.emit (events.js:198:13)
            javascript.0 2020-02-06 12:30:54.534 error at WebSocket.onMessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/node_modules/ws/lib/WebSocket.js:442:14)
            javascript.0 2020-02-06 12:30:54.534 error at WebSocket.ws.onmessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transports/websocket.js:146:10)
            javascript.0 2020-02-06 12:30:54.533 error at WS.Transport.onData (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transport.js:137:8)
            javascript.0 2020-02-06 12:30:54.533 error at WS.Transport.onPacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transport.js:145:8)
            javascript.0 2020-02-06 12:30:54.532 error at WS.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
            javascript.0 2020-02-06 12:30:54.532 error at WS.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/socket.js:268:10)
            javascript.0 2020-02-06 12:30:54.532 error at Socket.onPacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/socket.js:451:14)
            javascript.0 2020-02-06 12:30:54.531 error at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
            javascript.0 2020-02-06 12:30:54.531 error at Socket.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
            javascript.0 2020-02-06 12:30:54.531 error at Manager.ondata (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:322:16)
            javascript.0 2020-02-06 12:30:54.530 error at Decoder.add (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/socket.io-parser/index.js:246:12)
            javascript.0 2020-02-06 12:30:54.530 error at Decoder.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/socket.io-parser/node_modules/component-emitter/index.js:134:20)
            javascript.0 2020-02-06 12:30:54.529 error at Decoder.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
            javascript.0 2020-02-06 12:30:54.529 error at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:332:8)
            javascript.0 2020-02-06 12:30:54.528 error at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
            javascript.0 2020-02-06 12:30:54.528 error at Manager.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
            javascript.0 2020-02-06 12:30:54.528 error at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:236:12)
            javascript.0 2020-02-06 12:30:54.527 error at Socket.onack (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:312:9)
            javascript.0 2020-02-06 12:30:54.527 error at Socket.adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:745:17)
            javascript.0 2020-02-06 12:30:54.526 error at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1123:17)
            javascript.0 2020-02-06 12:30:54.526 error at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1070:37)
            javascript.0 2020-02-06 12:30:54.525 error at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:878:28)
            javascript.0 2020-02-06 12:30:54.525 error at Object.createScript (vm.js:277:10)
            javascript.0 2020-02-06 12:30:54.524 error at new Script (vm.js:83:7)
            javascript.0 2020-02-06 12:30:54.524 error SyntaxError: missing ) after argument list
            javascript.0 2020-02-06 12:30:54.523 error ^^^^
            javascript.0 2020-02-06 12:30:54.523 error for (var i=0; i<this.length; i++)/if/(a="==" this[i])/return/true/false/}/function/makejsonarr()/{/for/(var/liste/in/listenjson)/jsonarr[liste]="readListEvent(pfad+liste+".eventlistArr")
            javascript.0 2020-02-06 12:30:54.523 error script.js.common.Ereignisliste compile failed: at script.js.common.Ereignisliste:140
            javascript.0 2020-02-06 12:30:54.522 info Start javascript script.js.common.Ereignisliste

            IM POST 64 KANN MAN DAS FUNKTIONIERENDE SKRIPT LADEN.

            1 Antwort Letzte Antwort
            1
            • RK62R RK62

              Ich hatte das Skript für mich angepasst und habe versucht die Ursprungsversion wieder herzustellen.
              Siehe Anlage: AdapterEventList.js und hier die globale Funktion: global.js
              Und hier als zip: EventList.zip

              Gruß, Ralf

              B Offline
              B Offline
              Besserso
              schrieb am zuletzt editiert von
              #101

              @RK62 said in [Vorlage] Multi Ereignislisten Skript:

              Ich hatte das Skript für mich angepasst und habe versucht die Ursprungsversion wieder herzustellen.
              Siehe Anlage: AdapterEventList.js und hier die globale Funktion: global.js
              Und hier als zip: EventList.zip

              Gruß, Ralf

              Konnte damit meine Scriptfehler (Zeile 140) beheben. Vielen Dank!!!

              1 Antwort Letzte Antwort
              0
              • maeb3M Offline
                maeb3M Offline
                maeb3
                schrieb am zuletzt editiert von
                #102

                Hat zufälligerweise schon jemand dieses Script so umgebaut, dass man die Datenpunkte auch unter 0_userdata.0 statt unter javascript.0 anlegen kann?

                (Bin gerade am Umstellen meiner Scripte).

                siggi85S B 2 Antworten Letzte Antwort
                1
                • maeb3M maeb3

                  Hat zufälligerweise schon jemand dieses Script so umgebaut, dass man die Datenpunkte auch unter 0_userdata.0 statt unter javascript.0 anlegen kann?

                  (Bin gerade am Umstellen meiner Scripte).

                  siggi85S Offline
                  siggi85S Offline
                  siggi85
                  schrieb am zuletzt editiert von
                  #103

                  @maeb3 sagte in [Vorlage] Multi Ereignislisten Skript:

                  Hat zufälligerweise schon jemand dieses Script so umgebaut, dass man die Datenpunkte auch unter 0_userdata.0 statt unter javascript.0 anlegen kann?

                  (Bin gerade am Umstellen meiner Scripte).

                  Noch besser wäre ein eigener Adapter, aber das wäre auch schon sehr nützlich. 😊👍

                  1 Antwort Letzte Antwort
                  0
                  • maeb3M maeb3

                    Hat zufälligerweise schon jemand dieses Script so umgebaut, dass man die Datenpunkte auch unter 0_userdata.0 statt unter javascript.0 anlegen kann?

                    (Bin gerade am Umstellen meiner Scripte).

                    B Offline
                    B Offline
                    baennjer
                    schrieb am zuletzt editiert von baennjer
                    #104

                    @maeb3
                    Ich habe mich jetzt mal bisschen näher mit dem Script beschäftigt und habe es auf 0_userdata.0. umgestellt.
                    Man muss im globalen und im eigentlichen Script was umstellen.
                    Im globalen Script die Variable defaultPfad umstellen:

                    var defaultPfad         = "0_userdata.0.Ereignisliste.";
                    

                    Und im eigentlichen Script die Variable Pfad auf genau den gleichen Zweig umstellen:

                    var pfad                = "0_userdata.0.Ereignisliste.";
                    

                    Läuft bis jetzt fehlerfrei.

                    1 Antwort Letzte Antwort
                    0
                    • M Offline
                      M Offline
                      MadTrinity
                      schrieb am zuletzt editiert von
                      #105

                      Hi,

                      seid dem Admin Update auf 5 kommt bei mir immer im Log folgende Warnung
                      Read-only state "javascript.0.Ereignisliste.Licht.event" has been written without ack-flag with value "Ku Led Aus"

                      Weiß einer welsche Zeile ich anpassen muss damit nicht immer diese Fehlermeldung kommt.

                      Vielen Dank vorab

                      1 Antwort Letzte Antwort
                      0
                      • hg6806H Offline
                        hg6806H Offline
                        hg6806
                        Most Active
                        schrieb am zuletzt editiert von
                        #106

                        Auch ich habe hier die Fehlermeldungen.
                        Gibt es da einen workaround?

                        RK62R 1 Antwort Letzte Antwort
                        0
                        • hg6806H hg6806

                          Auch ich habe hier die Fehlermeldungen.
                          Gibt es da einen workaround?

                          RK62R Offline
                          RK62R Offline
                          RK62
                          schrieb am zuletzt editiert von
                          #107

                          @hg6806 @MadTrinity
                          In der function dpAnlegen(callback) muss überall write: false raus genommen werden.

                          // VOR ÄNDERUNG:
                          stateListe.push({id: pfad+liste+".eventlistStr", val:"", write: false});
                          // NACH ÄNDERUNG:
                          stateListe.push({id: pfad+liste+".eventlistStr", val:""});
                          

                          Das wirkt sich allerdings erst bei der Neuanlage von Listen aus. Also entweder den Objektbaum löschen und neu anlegen lassen oder die States manuell korrigieren.

                          1 Antwort Letzte Antwort
                          0
                          • Martin BlankM Offline
                            Martin BlankM Offline
                            Martin Blank
                            schrieb am zuletzt editiert von
                            #108

                            Sehr geiles Script. Vielen dank schon mal.
                            Ich hab allerdings zwei fragen.

                            • Kann man events direkt aus dem ical Adapter nutzen?
                            • wie kann man in Blockly ein event erzeugen welches dann in einer liste auftaucht bin da in JS nicht so bewandert.
                            liv-in-skyL 1 Antwort Letzte Antwort
                            0
                            • Martin BlankM Martin Blank

                              Sehr geiles Script. Vielen dank schon mal.
                              Ich hab allerdings zwei fragen.

                              • Kann man events direkt aus dem ical Adapter nutzen?
                              • wie kann man in Blockly ein event erzeugen welches dann in einer liste auftaucht bin da in JS nicht so bewandert.
                              liv-in-skyL Offline
                              liv-in-skyL Offline
                              liv-in-sky
                              schrieb am zuletzt editiert von
                              #109

                              @martin-blank
                              @hg6806 @MadTrinity

                              dafür gibt es doch mittlerweile den adapter ereignisliste (eventlist) - ist der nicht das richtige für eure zwecke

                              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                              Martin BlankM 1 Antwort Letzte Antwort
                              0
                              • liv-in-skyL liv-in-sky

                                @martin-blank
                                @hg6806 @MadTrinity

                                dafür gibt es doch mittlerweile den adapter ereignisliste (eventlist) - ist der nicht das richtige für eure zwecke

                                Martin BlankM Offline
                                Martin BlankM Offline
                                Martin Blank
                                schrieb am zuletzt editiert von
                                #110

                                @liv-in-sky

                                Ja sehr gut. Hatte ich noch nicht gesehen. Werde ich mir gleich mal anschauen.
                                Kannst du mir denn trotzdem erklären, wie ich mit Hilfe von Blockly ein event erzeugen kann.

                                Lg Martin

                                liv-in-skyL 1 Antwort Letzte Antwort
                                0
                                • Martin BlankM Martin Blank

                                  @liv-in-sky

                                  Ja sehr gut. Hatte ich noch nicht gesehen. Werde ich mir gleich mal anschauen.
                                  Kannst du mir denn trotzdem erklären, wie ich mit Hilfe von Blockly ein event erzeugen kann.

                                  Lg Martin

                                  liv-in-skyL Offline
                                  liv-in-skyL Offline
                                  liv-in-sky
                                  schrieb am zuletzt editiert von liv-in-sky
                                  #111

                                  @martin-blank

                                  eignetlich ungern

                                  weil

                                  das ganze arbeitet mit einem global script - d.h. jedes script bekommt das globale script angehängt, damit du in jedem script die möglichkeit hast, die event function aufzurufen

                                  d.h. du mußt in jedem script, indem der wert (event) vorkommt, den event selbst erzeugen - in einem javascript oder einem blockly - das ist sehr aufwendig

                                  der eventlist adapter kann einfach definiert werden - wenn ein wert geändert wird - dann schreibe den event - und dann ist es egal, in welchen scripten der wert vorkommt - du brauchst keinen block in einem script schreiben - das wird alles im eventlist adapter definiert

                                  um eine globale function in einem blockly aufzurufen, benötigst du eine javascript function, die im blockly eingebunden ist - dh. du musst einen function block nehmen, definieren,. welche werte du übergeben willst und im function block wird dann event() aufgerufen - und das musst du in jedem script machen, indem der event vorkommen könnte - wie gesagt umständlich - aber als das script gemacht wurde, gab es den eventlist adapter nicht und daher war das gut gemacht

                                  wenn du mit der zeit scripte anhäufst, wird die verwaltung der aufrufe der events unüberschaubar - kenn ich von einem anderen globalen script bei mir - zusätzlich: wenn das globale script einen fehler hat, wird dieser fehler in jedem script (da angehängt) ausgeführt - das führt leicht zu abstürzen des iob !!!

                                  nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                                  Martin BlankM 1 Antwort Letzte Antwort
                                  0
                                  • liv-in-skyL liv-in-sky

                                    @martin-blank

                                    eignetlich ungern

                                    weil

                                    das ganze arbeitet mit einem global script - d.h. jedes script bekommt das globale script angehängt, damit du in jedem script die möglichkeit hast, die event function aufzurufen

                                    d.h. du mußt in jedem script, indem der wert (event) vorkommt, den event selbst erzeugen - in einem javascript oder einem blockly - das ist sehr aufwendig

                                    der eventlist adapter kann einfach definiert werden - wenn ein wert geändert wird - dann schreibe den event - und dann ist es egal, in welchen scripten der wert vorkommt - du brauchst keinen block in einem script schreiben - das wird alles im eventlist adapter definiert

                                    um eine globale function in einem blockly aufzurufen, benötigst du eine javascript function, die im blockly eingebunden ist - dh. du musst einen function block nehmen, definieren,. welche werte du übergeben willst und im function block wird dann event() aufgerufen - und das musst du in jedem script machen, indem der event vorkommen könnte - wie gesagt umständlich - aber als das script gemacht wurde, gab es den eventlist adapter nicht und daher war das gut gemacht

                                    wenn du mit der zeit scripte anhäufst, wird die verwaltung der aufrufe der events unüberschaubar - kenn ich von einem anderen globalen script bei mir - zusätzlich: wenn das globale script einen fehler hat, wird dieser fehler in jedem script (da angehängt) ausgeführt - das führt leicht zu abstürzen des iob !!!

                                    Martin BlankM Offline
                                    Martin BlankM Offline
                                    Martin Blank
                                    schrieb am zuletzt editiert von
                                    #112

                                    @liv-in-sky

                                    Wow das nenn ich mal eine sehr gute Erklärung da.
                                    Ok dann werde ich es weiter mit dem Adapter versuch.

                                    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

                                    452

                                    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