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. Node-Red
  5. Alexa Gerät auslesen und nutzen.

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Alexa Gerät auslesen und nutzen.

Geplant Angeheftet Gesperrt Verschoben Node-Red
13 Beiträge 4 Kommentatoren 862 Aufrufe 4 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.
  • AphofisA Aphofis

    Ich habe da einen skill Virtual Smart Home (VSH) installiert und mit Node-Red verbunden.
    Über die installierte Node node-red-contrib-virtual-smart-home : vsh-virtual-device
    Bei dem Klick in Alexa in dem Gerät als Switch eingestellt kommt folgendes raus.
    Screenshot 2025-06-21 135359.png
    wie kann man jetzt powerState: "ON" / powerState: "OFF" verarbeiten um daraus zb true und false oder den wert 1000 zu machen.

    Per Function Node komme ich weiter aber wie macht man aus powerState ON OFF dann zB true false oder 1000/1000 ?

    P Offline
    P Offline
    peterfido
    schrieb am zuletzt editiert von
    #2

    @aphofis Der Change Node kann das. Statt setze die Funktion Ändere nehmen.

    638dc1bb-bcba-4203-b755-556f424de032-image.png

    Gruß

    Peterfido


    Proxmox auf Intel NUC12WSHi5
    ioBroker: Debian (VM)
    CCU: Debmatic (VM)
    Influx: Debian (VM)
    Grafana: Debian (VM)
    eBus: Debian (VM)
    Zigbee: Debian (VM) mit zigbee2mqtt

    1 Antwort Letzte Antwort
    0
    • AphofisA Offline
      AphofisA Offline
      Aphofis
      schrieb am zuletzt editiert von Aphofis
      #3

      @peterfido
      Da kommt als Befehl leider nur object Object bei raus

      Screenshot 2025-06-21 181025.png
      Screenshot 2025-06-21 181043.png

      {"powerState":"OFF","source":"alexa","directive":"TurnOff","name":"Test Gerät","type":"SWITCH","rawDirective":{"directive":{"header":{"namespace":"Alexa.PowerController","name":"TurnOff","correlationToken":"SUdTVEs6AAE6AAg6eyJpZCI6ImQzNzU4OGVkLWFmZmUtNGIyYS05MGM1LTdlYzU4MTZlYjg1MyIsInVyaSI6Imh0dHBzOi8vZC1hY3JzLWV1LXAtN2EyLTIyNzM5YzhmLmV1LXdlc3QtMS5hbWF6b24uY29tOjk0NDQiLCJzZXNzaW9uSWQiOiI5N2M3ODA3OC1iZjVlLTQyZTMtYTZiMi01MjQ3MTg1MmQ4NjkifQ=="},"endpoint":{"endpointId":"vshd-c43862983eea1705"},"payload":{}}}}
      

      Das wird alles gesendet

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        peterfido
        schrieb am zuletzt editiert von peterfido
        #4

        @aphofis Hinter Deinem Hub fehlen die Devices.
        cb2ee4c2-b37c-430c-8b24-e9607df9198d-image.png

        Es gibt doch eine gute Hilfe zu den Nodes.
        1b419493-50dc-456c-848f-951e1b8cbe10-image.png

        Das rechte Skript:

        var newMsg = {
           payload: false
        }
        if (msg.on) {
           newMsg.payload = true;
        }
        
        return newMsg;
        

        Die linke Funktion:

        var nodeid = "HIER DIE NODE-ID VOM JEWEILIGEN DEVICE REIN";
        var ison=false;
        
        if (msg.payload > 0){
           ison=true;
        }
        
        var newMsg={
           payload: ''
        }
        
        newMsg.payload= {
           nodeid: nodeid,
           on: ison,
           }
        
        node.status({text:"on: "+ison});
        return newMsg;
        

        Die Node ID vom Device, welche in die Funktion eingetragen werden muss, steht unter Info, wenn die Node / das Device (in meinem Beispiel "Küchenlicht") markiert ist. Die wird benötigt, damit Alexa den Ist-Zustand bekommt und diesen in der App entsprechend anzeigen kann.

        43ec1ae3-565e-49a4-b04d-4ab39634308e-image.png

        Gruß

        Peterfido


        Proxmox auf Intel NUC12WSHi5
        ioBroker: Debian (VM)
        CCU: Debmatic (VM)
        Influx: Debian (VM)
        Grafana: Debian (VM)
        eBus: Debian (VM)
        Zigbee: Debian (VM) mit zigbee2mqtt

        AphofisA 1 Antwort Letzte Antwort
        0
        • P peterfido

          @aphofis Hinter Deinem Hub fehlen die Devices.
          cb2ee4c2-b37c-430c-8b24-e9607df9198d-image.png

          Es gibt doch eine gute Hilfe zu den Nodes.
          1b419493-50dc-456c-848f-951e1b8cbe10-image.png

          Das rechte Skript:

          var newMsg = {
             payload: false
          }
          if (msg.on) {
             newMsg.payload = true;
          }
          
          return newMsg;
          

          Die linke Funktion:

          var nodeid = "HIER DIE NODE-ID VOM JEWEILIGEN DEVICE REIN";
          var ison=false;
          
          if (msg.payload > 0){
             ison=true;
          }
          
          var newMsg={
             payload: ''
          }
          
          newMsg.payload= {
             nodeid: nodeid,
             on: ison,
             }
          
          node.status({text:"on: "+ison});
          return newMsg;
          

          Die Node ID vom Device, welche in die Funktion eingetragen werden muss, steht unter Info, wenn die Node / das Device (in meinem Beispiel "Küchenlicht") markiert ist. Die wird benötigt, damit Alexa den Ist-Zustand bekommt und diesen in der App entsprechend anzeigen kann.

          43ec1ae3-565e-49a4-b04d-4ab39634308e-image.png

          AphofisA Offline
          AphofisA Offline
          Aphofis
          schrieb am zuletzt editiert von
          #5

          @peterfido

          Es funktioniert auch ohne Gerät und wird sauber von Alexa als Gerät erkannt.
          Ich frage, weil ich gerne Thermostate und Temp Sensoren abfragen möchte

          Screenshot 2025-06-22 135110.png

          [
              {
                  "id": "c30dae8c9636a674",
                  "type": "vsh-virtual-device",
                  "z": "11e1d19459653027",
                  "name": "Test Gerät",
                  "topic": "payload",
                  "metadata": "",
                  "connection": "8707b9c1c29bf88f",
                  "template": "SWITCH",
                  "retrievable": false,
                  "passthrough": false,
                  "diff": false,
                  "filter": false,
                  "filterTopic": false,
                  "plan": "free",
                  "x": 210,
                  "y": 340,
                  "wires": [
                      [
                          "1d70f5f0c42697a6"
                      ]
                  ]
              },
              {
                  "id": "47540399b675ba15",
                  "type": "ioBroker out",
                  "z": "11e1d19459653027",
                  "name": "Test gerät",
                  "topic": "0_userdata.0.GordonX-Home.0.Test_Gerät",
                  "ack": "false",
                  "autoCreate": "false",
                  "stateName": "",
                  "role": "",
                  "payloadType": "",
                  "readonly": "",
                  "stateUnit": "",
                  "stateMin": "",
                  "stateMax": "",
                  "x": 740,
                  "y": 300,
                  "wires": []
              },
              {
                  "id": "2ad85599e4621d6a",
                  "type": "debug",
                  "z": "11e1d19459653027",
                  "name": "debug 10",
                  "active": true,
                  "tosidebar": true,
                  "console": false,
                  "tostatus": false,
                  "complete": "false",
                  "statusVal": "",
                  "statusType": "auto",
                  "x": 740,
                  "y": 360,
                  "wires": []
              },
              {
                  "id": "a61d04f354ef02ba",
                  "type": "function",
                  "z": "11e1d19459653027",
                  "name": "true",
                  "func": "msg.payload = true;\nreturn msg;",
                  "outputs": 1,
                  "timeout": 0,
                  "noerr": 0,
                  "initialize": "",
                  "finalize": "",
                  "libs": [],
                  "x": 490,
                  "y": 320,
                  "wires": [
                      [
                          "47540399b675ba15",
                          "2ad85599e4621d6a"
                      ]
                  ]
              },
              {
                  "id": "be68890204958124",
                  "type": "function",
                  "z": "11e1d19459653027",
                  "name": "false",
                  "func": "msg.payload = false;\nreturn msg;",
                  "outputs": 1,
                  "timeout": 0,
                  "noerr": 0,
                  "initialize": "",
                  "finalize": "",
                  "libs": [],
                  "x": 490,
                  "y": 360,
                  "wires": [
                      [
                          "2ad85599e4621d6a",
                          "47540399b675ba15"
                      ]
                  ]
              },
              {
                  "id": "1d70f5f0c42697a6",
                  "type": "switch",
                  "z": "11e1d19459653027",
                  "name": "An/Aus",
                  "property": "payload.powerState",
                  "propertyType": "msg",
                  "rules": [
                      {
                          "t": "cont",
                          "v": "ON",
                          "vt": "str"
                      },
                      {
                          "t": "cont",
                          "v": "OFF",
                          "vt": "str"
                      }
                  ],
                  "checkall": "true",
                  "repair": false,
                  "outputs": 2,
                  "x": 360,
                  "y": 340,
                  "wires": [
                      [
                          "a61d04f354ef02ba"
                      ],
                      [
                          "be68890204958124"
                      ]
                  ]
              },
              {
                  "id": "8707b9c1c29bf88f",
                  "type": "vsh-connection",
                  "name": "web@gordonx.de",
                  "port": "8883",
                  "accessTokenExpiry": "1750509703126",
                  "debug": false,
                  "backendUrl": "https://kfd5m4a21f.execute-api.eu-west-1.amazonaws.com/dev",
                  "lwaClientId": "amzn1.application-oa2-client.3f1bb07133854b078261ad43f2484c18"
              }
          ]
          

          P 1 Antwort Letzte Antwort
          0
          • S Offline
            S Offline
            Skippy07
            schrieb am zuletzt editiert von
            #6

            Hi, ich habe das so gelöst:

            FireShot Capture 139 - node-red-0 - MiniPC - 192.168.178.59.png

            FireShot Capture 140 - node-red-0 - MiniPC - 192.168.178.59.png

            Bei Anschalten eben "True" und ausschalten "False"

            AphofisA mickymM 2 Antworten Letzte Antwort
            0
            • AphofisA Aphofis

              @peterfido

              Es funktioniert auch ohne Gerät und wird sauber von Alexa als Gerät erkannt.
              Ich frage, weil ich gerne Thermostate und Temp Sensoren abfragen möchte

              Screenshot 2025-06-22 135110.png

              [
                  {
                      "id": "c30dae8c9636a674",
                      "type": "vsh-virtual-device",
                      "z": "11e1d19459653027",
                      "name": "Test Gerät",
                      "topic": "payload",
                      "metadata": "",
                      "connection": "8707b9c1c29bf88f",
                      "template": "SWITCH",
                      "retrievable": false,
                      "passthrough": false,
                      "diff": false,
                      "filter": false,
                      "filterTopic": false,
                      "plan": "free",
                      "x": 210,
                      "y": 340,
                      "wires": [
                          [
                              "1d70f5f0c42697a6"
                          ]
                      ]
                  },
                  {
                      "id": "47540399b675ba15",
                      "type": "ioBroker out",
                      "z": "11e1d19459653027",
                      "name": "Test gerät",
                      "topic": "0_userdata.0.GordonX-Home.0.Test_Gerät",
                      "ack": "false",
                      "autoCreate": "false",
                      "stateName": "",
                      "role": "",
                      "payloadType": "",
                      "readonly": "",
                      "stateUnit": "",
                      "stateMin": "",
                      "stateMax": "",
                      "x": 740,
                      "y": 300,
                      "wires": []
                  },
                  {
                      "id": "2ad85599e4621d6a",
                      "type": "debug",
                      "z": "11e1d19459653027",
                      "name": "debug 10",
                      "active": true,
                      "tosidebar": true,
                      "console": false,
                      "tostatus": false,
                      "complete": "false",
                      "statusVal": "",
                      "statusType": "auto",
                      "x": 740,
                      "y": 360,
                      "wires": []
                  },
                  {
                      "id": "a61d04f354ef02ba",
                      "type": "function",
                      "z": "11e1d19459653027",
                      "name": "true",
                      "func": "msg.payload = true;\nreturn msg;",
                      "outputs": 1,
                      "timeout": 0,
                      "noerr": 0,
                      "initialize": "",
                      "finalize": "",
                      "libs": [],
                      "x": 490,
                      "y": 320,
                      "wires": [
                          [
                              "47540399b675ba15",
                              "2ad85599e4621d6a"
                          ]
                      ]
                  },
                  {
                      "id": "be68890204958124",
                      "type": "function",
                      "z": "11e1d19459653027",
                      "name": "false",
                      "func": "msg.payload = false;\nreturn msg;",
                      "outputs": 1,
                      "timeout": 0,
                      "noerr": 0,
                      "initialize": "",
                      "finalize": "",
                      "libs": [],
                      "x": 490,
                      "y": 360,
                      "wires": [
                          [
                              "2ad85599e4621d6a",
                              "47540399b675ba15"
                          ]
                      ]
                  },
                  {
                      "id": "1d70f5f0c42697a6",
                      "type": "switch",
                      "z": "11e1d19459653027",
                      "name": "An/Aus",
                      "property": "payload.powerState",
                      "propertyType": "msg",
                      "rules": [
                          {
                              "t": "cont",
                              "v": "ON",
                              "vt": "str"
                          },
                          {
                              "t": "cont",
                              "v": "OFF",
                              "vt": "str"
                          }
                      ],
                      "checkall": "true",
                      "repair": false,
                      "outputs": 2,
                      "x": 360,
                      "y": 340,
                      "wires": [
                          [
                              "a61d04f354ef02ba"
                          ],
                          [
                              "be68890204958124"
                          ]
                      ]
                  },
                  {
                      "id": "8707b9c1c29bf88f",
                      "type": "vsh-connection",
                      "name": "web@gordonx.de",
                      "port": "8883",
                      "accessTokenExpiry": "1750509703126",
                      "debug": false,
                      "backendUrl": "https://kfd5m4a21f.execute-api.eu-west-1.amazonaws.com/dev",
                      "lwaClientId": "amzn1.application-oa2-client.3f1bb07133854b078261ad43f2484c18"
                  }
              ]
              

              P Offline
              P Offline
              peterfido
              schrieb am zuletzt editiert von peterfido
              #7

              @aphofis Normal simulieren die Hub-Nodes eine Hue Bridge. Pro Gerät ein Hue Bridge wäre wohl machbar. Allerdings kann nur eine davon den Port 80 bekommen.

              Eine Bridge und zig Geräte dran ist der vorgesehene Weg.

              Gruß

              Peterfido


              Proxmox auf Intel NUC12WSHi5
              ioBroker: Debian (VM)
              CCU: Debmatic (VM)
              Influx: Debian (VM)
              Grafana: Debian (VM)
              eBus: Debian (VM)
              Zigbee: Debian (VM) mit zigbee2mqtt

              1 Antwort Letzte Antwort
              0
              • AphofisA Offline
                AphofisA Offline
                Aphofis
                schrieb am zuletzt editiert von
                #8

                @peterfido
                Ich habe nicht den Node installiert. Ich benutze virtual device
                Screenshot 2025-06-22 195156.png
                Das scheint anders zu laufen. Dort wird kein Port angegeben.
                Es wird mit dem Alexa Skill virtual smart home verknüpft.

                P 1 Antwort Letzte Antwort
                0
                • S Skippy07

                  Hi, ich habe das so gelöst:

                  FireShot Capture 139 - node-red-0 - MiniPC - 192.168.178.59.png

                  FireShot Capture 140 - node-red-0 - MiniPC - 192.168.178.59.png

                  Bei Anschalten eben "True" und ausschalten "False"

                  AphofisA Offline
                  AphofisA Offline
                  Aphofis
                  schrieb am zuletzt editiert von
                  #9

                  @skippy07 sagte in Alexa Gerät auslesen und nutzen.:

                  Hi, ich habe das so gelöst:

                  FireShot Capture 139 - node-red-0 - MiniPC - 192.168.178.59.png

                  FireShot Capture 140 - node-red-0 - MiniPC - 192.168.178.59.png

                  Bei Anschalten eben "True" und ausschalten "False"

                  Das habe ich so auch gelöst. nur wie kann man nun spezifische Temperatur Geräte einbinden und in alexa anzeigen lassen. Also zB einen Iob In node mit einem Datenpunkt eines Temp sensors den ich in alexa anzeigen lassen will bzw diesen dann per speak ausgeben lassen möchte.

                  1 Antwort Letzte Antwort
                  0
                  • S Skippy07

                    Hi, ich habe das so gelöst:

                    FireShot Capture 139 - node-red-0 - MiniPC - 192.168.178.59.png

                    FireShot Capture 140 - node-red-0 - MiniPC - 192.168.178.59.png

                    Bei Anschalten eben "True" und ausschalten "False"

                    mickymM Offline
                    mickymM Offline
                    mickym
                    Most Active
                    schrieb am zuletzt editiert von mickym
                    #10

                    @skippy07 sagte in Alexa Gerät auslesen und nutzen.:

                    Hi, ich habe das so gelöst:

                    FireShot Capture 139 - node-red-0 - MiniPC - 192.168.178.59.png

                    FireShot Capture 140 - node-red-0 - MiniPC - 192.168.178.59.png

                    Bei Anschalten eben "True" und ausschalten "False"

                    Was ich nicht verstehe, warum man den Flow verzweigen muss, wenn dann doch beide Äste an die gleiche Ausgabe geschickt werden.
                    Ausserdem ist das doch verkehrt, wenn man true, false als String in die Ausgabe schickt - das soll doch ein Boolean werden.
                    9550cac1-48db-4063-a7ea-30282390f929-image.png
                    Ich würde halt mal die Logik anpassen und dann kann man das Ganze in EINER Change Node abwickeln.

                    Als erstes würde ich halt mal die payload aus der Eigenschaft "powerState" des originellen Ausgangsobjekt selektieren und dann in ein Boolean umwandeln. Das kann entweder über Änderungsregeln oder JSONATA erfolgen.

                    1. Lösung:
                      f4cefc5f-0b28-4223-8dd8-271af4fa5fc9-image.png

                    2. Lösung mit JSONATA
                      47dcb395-f468-488d-9d0a-ee338efd1757-image.png

                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                    AphofisA 1 Antwort Letzte Antwort
                    0
                    • AphofisA Aphofis

                      @peterfido
                      Ich habe nicht den Node installiert. Ich benutze virtual device
                      Screenshot 2025-06-22 195156.png
                      Das scheint anders zu laufen. Dort wird kein Port angegeben.
                      Es wird mit dem Alexa Skill virtual smart home verknüpft.

                      P Offline
                      P Offline
                      peterfido
                      schrieb am zuletzt editiert von peterfido
                      #11

                      @aphofis Ah ok. Dann haben die die gleiche Optik, bauen aber auf eine Cloud auf. Da war ich falsch unterwegs.

                      Ich nutze die ohne Cloud, welche allerdings nur Lampen emulieren können. Aber irgendwas ist ja immer. :grin:

                      @mickym ist ein Profi, was mindestens Node-Red betrifft.

                      Gruß

                      Peterfido


                      Proxmox auf Intel NUC12WSHi5
                      ioBroker: Debian (VM)
                      CCU: Debmatic (VM)
                      Influx: Debian (VM)
                      Grafana: Debian (VM)
                      eBus: Debian (VM)
                      Zigbee: Debian (VM) mit zigbee2mqtt

                      AphofisA 1 Antwort Letzte Antwort
                      0
                      • mickymM mickym

                        @skippy07 sagte in Alexa Gerät auslesen und nutzen.:

                        Hi, ich habe das so gelöst:

                        FireShot Capture 139 - node-red-0 - MiniPC - 192.168.178.59.png

                        FireShot Capture 140 - node-red-0 - MiniPC - 192.168.178.59.png

                        Bei Anschalten eben "True" und ausschalten "False"

                        Was ich nicht verstehe, warum man den Flow verzweigen muss, wenn dann doch beide Äste an die gleiche Ausgabe geschickt werden.
                        Ausserdem ist das doch verkehrt, wenn man true, false als String in die Ausgabe schickt - das soll doch ein Boolean werden.
                        9550cac1-48db-4063-a7ea-30282390f929-image.png
                        Ich würde halt mal die Logik anpassen und dann kann man das Ganze in EINER Change Node abwickeln.

                        Als erstes würde ich halt mal die payload aus der Eigenschaft "powerState" des originellen Ausgangsobjekt selektieren und dann in ein Boolean umwandeln. Das kann entweder über Änderungsregeln oder JSONATA erfolgen.

                        1. Lösung:
                          f4cefc5f-0b28-4223-8dd8-271af4fa5fc9-image.png

                        2. Lösung mit JSONATA
                          47dcb395-f468-488d-9d0a-ee338efd1757-image.png

                        AphofisA Offline
                        AphofisA Offline
                        Aphofis
                        schrieb am zuletzt editiert von
                        #12

                        @mickym
                        Das teste ich mal, sobald ich zu Hause bin. Bin momentan aud Montage auf Sylt am We werde ich das mal ausprobieren. Klingt aber auch logisch. Das war ja das, was ich wissen wollte wie man die einzelen einträge abfragt und dann zB in true/false oder was auch immer umwandelt.
                        Danke für das aufzeigen des Weges.

                        1 Antwort Letzte Antwort
                        0
                        • P peterfido

                          @aphofis Ah ok. Dann haben die die gleiche Optik, bauen aber auf eine Cloud auf. Da war ich falsch unterwegs.

                          Ich nutze die ohne Cloud, welche allerdings nur Lampen emulieren können. Aber irgendwas ist ja immer. :grin:

                          @mickym ist ein Profi, was mindestens Node-Red betrifft.

                          AphofisA Offline
                          AphofisA Offline
                          Aphofis
                          schrieb am zuletzt editiert von
                          #13

                          @peterfido
                          Das stimmt wohl ! :+1: :blush:

                          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

                          404

                          Online

                          32.6k

                          Benutzer

                          82.1k

                          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