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. ioBroker Allgemein
  4. Hue Dimmer Switch

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Hue Dimmer Switch

Scheduled Pinned Locked Moved ioBroker Allgemein
20 Posts 10 Posters 8.0k Views 1 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.
  • H Offline
    H Offline
    haiperf
    wrote on last edited by
    #1

    Hallo,

    ich habe mir einen Hue Dimmer Switch und eine Hue Bridge 2 besorgt, in der Hoffnung, damit über den ioBroker diverse Dinge schalten zu können. Ich habe den Dimmer Switch mit der Hue Bridge gekoppelt und im ioBroker eine Instanz vom Hue Adapter die mit der Bridge gekoppelt ist.

    Es taucht aber leider kein Switch in den Objekten auf und Ereignisse sehe ich auch keine, wenn ich einen der Knöpfe drücke. Kann ich den Dimmer Switch irgendwie im ioBroker sichtbar machen und nutzen? Was muss ich dafür tun?

    Vielen Dank!

    1 Reply Last reply
    0
    • H Offline
      H Offline
      haiperf
      wrote on last edited by
      #2

      Ok, scheint nicht direkt zu gehen. Nach langer Suche, viel Gebastel und in kleinen Schritten habe ich mein Ziel beinahe erreicht. Da der Weg dahin evtl. für dein ein oder anderen interessant ist und ich bisher noch keine derartige (vollständig funktionierende) Lösung gefunden habe, möchte ich das hier mal kurz skizzieren. Da das ganze eigentlich nichts mehr mit dem Hue Adapter zu tun hat, kann ein Mod den Thread gern in ein passendes Unterforum verschieben.

      Der User moses123 hat hier http://forum.iobroker.net/viewtopic.php … 043#p87043 die entscheidende Vorlage geliefert, ohne die ich es nicht hinbekommen hätte. In seinem Script fehlte lediglich ein bisschen Code für den Switch. Die für mich unnötigen Codeanteile habe ich rausgenommen und den Switch ergänzt. Dazu noch eine Abfrage gebastelt, die prüft, ob sich der Zustand geändet hat (sprich ein Knopf gedrückt wurde), um nur dann ein Event im ioBroker zu erzeugen.

      Es sind die IP und der USER einzutragen. node-hue-api, http und https müssen ggf. noch über npm installiert werden. Die Bridge wird einmal pro Sekunde gepollt.

      var hue = require('node-hue-api');
      var HueApi = hue.HueApi;
      var api;
      
      var request = require('request');
      
      var presenceID=0;
      var laststatechanged='';
      
      var bridge='[IP-DER-HUE-Bridge]';
      var user='[USER-AUF-DER-HUE-Bridge]';
      var port=80;
      
      var displayResult = function(result) {
          console.log(JSON.stringify(result, null, 2));
      };
      
      api = new HueApi(bridge, user, 0, port);
      
      schedule("*/1 * * * * *", readAllHueSensors); 
      createHueSensors();
      
      function createHueSensors() {
          api.sensors(function(err, config) {
              if (err) throw err;
              var sensors = config.sensors;
              console.log('sensors create');
              for (var sid in sensors) {
                  var sensor = sensors[sid];
      
                  if (sensor.type=='ZLLSwitch') {
      
                      var sensorName =  sensor.name.replace(/\s/g, '');
                      if (getState('hueSensors.'+sensorName).notExist===true) {
                          console.log('hueSensors.'+sensorName +' wird erstellt.')
                          createState('hueSensors.'+sensorName, sensorName, true, {
                              read: true, 
                             write: true, 
                              name: sensorName, 
                              type: "string", 
                              role: "channel",
                              def: false
                          });
      
                          if (sensor.type=='ZLLSwitch') {
                              createState('hueSensors.'+sensorName+'.buttonevent', sensor.state.buttonevent, true, {
                                  read: true, 
                                 write: true, 
                                  name: "buttonevent", 
                                  type: "number", 
                                  role: "state",
                                  def: 0
                              });
                              createState('hueSensors.'+sensorName+'.lastupdated', sensor.state.lastupdated, true, {
                                  read: true, 
                                 write: true, 
                                  name: "lastupdated", 
                                  type: "string", 
                                  role: "date",
                                  def: false
                              });
                              //Config
                              createState('hueSensors.'+sensorName+'.on', sensor.config.on, true, {
                                  read: true, 
                                 write: true, 
                                  name: "on", 
                                  type: "boolean", 
                                  role: "config",
                                  def: false
                              });
                              createState('hueSensors.'+sensorName+'.battery', sensor.config.battery, true, {
                                  read: true, 
                                 write: true, 
                                  name: "battery", 
                                  type: "number", 
                                  role: "config",
                                  def: 0
                              });
                              createState('hueSensors.'+sensorName+'.reachable', sensor.config.reachable, true, {
                                  read: true, 
                                 write: true, 
                                  name: "reachable", 
                                  type: "boolean", 
                                  role: "config",
                                  def: false
                              });
                              createState('hueSensors.'+sensorName+'.pending', sensor.config.pending, true, {
                                  read: true, 
                                 write: true, 
                                  name: "pending", 
                                  type: "number", 
                                  role: "config",
                                  def: 0
                              });
                          }
      
                      }
                  }
              }
          });
      }
      
      function readAllHueSensors() {
          //console.log('sensors refresh');
          api.sensors(function(err, config) {
              if (err) throw err;
              var sensors = config.sensors;
              for (var sid in sensors) {
                  var sensor = sensors[sid];
                  if (sensor.type=='ZLLSwitch') {
                      var sensorName =  sensor.name.replace(/\s/g, '');
                      //console.log(sensorName)
      
                      if (sensor.type=='ZLLSwitch') {
                          // Hue Dimmer Switch
      
                          if (sensor.state.lastupdated != getState('hueSensors.'+sensorName+'.lastupdated').val) {
                              console.log('UPDATE HueSwitch');
                              //console.log(sensor.state.lastupdated);
                              //console.log(getState('hueSensors.'+sensorName+'.lastupdated').val);                   
      
                              setState('hueSensors.'+sensorName+'.buttonevent', sensor.state.buttonevent);
                              setState('hueSensors.'+sensorName+'.lastupdated', sensor.state.lastupdated);
                              setState('hueSensors.'+sensorName+'.reachable', sensor.config.reachable);
                              setState('hueSensors.'+sensorName+'.on', sensor.config.on);
                              setState('hueSensors.'+sensorName+'.battery', parseFloat(sensor.config.battery));
                              setState('hueSensors.'+sensorName+'.pending', sensor.config.pending);
                          }
                      }                    
                  }
              }
          });
      }
      
      1 Reply Last reply
      0
      • DutchmanD Offline
        DutchmanD Offline
        Dutchman
        Developer Most Active Administrators
        wrote on last edited by
        #3

        sieht ja gut aus, waehre es fuer dich moeglich das auch im git zu hinterlegen z.b. als issue ?

        Wen de jetzige adapter keine bewegungsmelder und switches sieht aber bereits loesungen mit scripten vorhanden ist kan der entwickles das evenutell integrieren ?

        https://github.com/ioBroker/ioBroker.hue/issues

        1 Reply Last reply
        0
        • E Offline
          E Offline
          edyelektrik
          wrote on last edited by
          #4

          @haiperf:

          Ok, scheint nicht direkt zu gehen. Nach langer Suche, viel Gebastel und in kleinen Schritten habe ich mein Ziel beinahe erreicht. Da der Weg dahin evtl. für dein ein oder anderen interessant ist und ich bisher noch keine derartige (vollständig funktionierende) Lösung gefunden habe, möchte ich das hier mal kurz skizzieren. Da das ganze eigentlich nichts mehr mit dem Hue Adapter zu tun hat, kann ein Mod den Thread gern in ein passendes Unterforum verschieben.

          Der User moses123 hat hier http://forum.iobroker.net/viewtopic.php … 043#p87043 die entscheidende Vorlage geliefert, ohne die ich es nicht hinbekommen hätte. In seinem Script fehlte lediglich ein bisschen Code für den Switch. Die für mich unnötigen Codeanteile habe ich rausgenommen und den Switch ergänzt. Dazu noch eine Abfrage gebastelt, die prüft, ob sich der Zustand geändet hat (sprich ein Knopf gedrückt wurde), um nur dann ein Event im ioBroker zu erzeugen.

          Es sind die IP und der USER einzutragen. node-hue-api, http und https müssen ggf. noch über npm installiert werden. Die Bridge wird einmal pro Sekunde gepollt.

          var hue = require('node-hue-api');
          var HueApi = hue.HueApi;
          var api;
          
          var request = require('request');
          
          var presenceID=0;
          var laststatechanged='';
          
          var bridge='[IP-DER-HUE-Bridge]';
          var user='[USER-AUF-DER-HUE-Bridge]';
          var port=80;
          
          var displayResult = function(result) {
              console.log(JSON.stringify(result, null, 2));
          };
          
          api = new HueApi(bridge, user, 0, port);
          
          schedule("*/1 * * * * *", readAllHueSensors); 
          createHueSensors();
          
          function createHueSensors() {
              api.sensors(function(err, config) {
                  if (err) throw err;
                  var sensors = config.sensors;
                  console.log('sensors create');
                  for (var sid in sensors) {
                      var sensor = sensors[sid];
                      
                      
                      if (sensor.type=='ZLLSwitch') {
          
                          var sensorName =  sensor.name.replace(/\s/g, '');
                          if (getState('hueSensors.'+sensorName).notExist===true) {
                              console.log('hueSensors.'+sensorName +' wird erstellt.')
                              createState('hueSensors.'+sensorName, sensorName, true, {
                                  read: true, 
                                 write: true, 
                                  name: sensorName, 
                                  type: "string", 
                                  role: "channel",
                                  def: false
                              });
                              
                              if (sensor.type=='ZLLSwitch') {
                                  createState('hueSensors.'+sensorName+'.buttonevent', sensor.state.buttonevent, true, {
                                      read: true, 
                                     write: true, 
                                      name: "buttonevent", 
                                      type: "number", 
                                      role: "state",
                                      def: 0
                                  });
                                  createState('hueSensors.'+sensorName+'.lastupdated', sensor.state.lastupdated, true, {
                                      read: true, 
                                     write: true, 
                                      name: "lastupdated", 
                                      type: "string", 
                                      role: "date",
                                      def: false
                                  });
                                  //Config
                                  createState('hueSensors.'+sensorName+'.on', sensor.config.on, true, {
                                      read: true, 
                                     write: true, 
                                      name: "on", 
                                      type: "boolean", 
                                      role: "config",
                                      def: false
                                  });
                                  createState('hueSensors.'+sensorName+'.battery', sensor.config.battery, true, {
                                      read: true, 
                                     write: true, 
                                      name: "battery", 
                                      type: "number", 
                                      role: "config",
                                      def: 0
                                  });
                                  createState('hueSensors.'+sensorName+'.reachable', sensor.config.reachable, true, {
                                      read: true, 
                                     write: true, 
                                      name: "reachable", 
                                      type: "boolean", 
                                      role: "config",
                                      def: false
                                  });
                                  createState('hueSensors.'+sensorName+'.pending', sensor.config.pending, true, {
                                      read: true, 
                                     write: true, 
                                      name: "pending", 
                                      type: "number", 
                                      role: "config",
                                      def: 0
                                  });
                              }
                                   
                          }
                      }
                  }
              });
          }
          
          function readAllHueSensors() {
              //console.log('sensors refresh');
              api.sensors(function(err, config) {
                  if (err) throw err;
                  var sensors = config.sensors;
                  for (var sid in sensors) {
                      var sensor = sensors[sid];
                      if (sensor.type=='ZLLSwitch') {
                          var sensorName =  sensor.name.replace(/\s/g, '');
                          //console.log(sensorName)
          
                          if (sensor.type=='ZLLSwitch') {
                              // Hue Dimmer Switch
                              
                              if (sensor.state.lastupdated != getState('hueSensors.'+sensorName+'.lastupdated').val) {
                                  console.log('UPDATE HueSwitch');
                                  //console.log(sensor.state.lastupdated);
                                  //console.log(getState('hueSensors.'+sensorName+'.lastupdated').val);                   
                              
                                  setState('hueSensors.'+sensorName+'.buttonevent', sensor.state.buttonevent);
                                  setState('hueSensors.'+sensorName+'.lastupdated', sensor.state.lastupdated);
                                  setState('hueSensors.'+sensorName+'.reachable', sensor.config.reachable);
                                  setState('hueSensors.'+sensorName+'.on', sensor.config.on);
                                  setState('hueSensors.'+sensorName+'.battery', parseFloat(sensor.config.battery));
                                  setState('hueSensors.'+sensorName+'.pending', sensor.config.pending);
                              }
                          }                    
                      }
                  }
              });
          }
          ```` `  
          

          Hallo

          Da ich noch nicht so den Plan habe frage ich mal nach.

          Wie hast du die API installiert?

          Ich bekomme die Nachricht im Log " script.js.Philips_HUe.Skript1: Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-hue-api'"

          Vielleicht könnt ihr mir weiter helfen.

          Edit: Habe es selbst hin bekommen. Man muss in den Adapter ein zusätzlches NPM - Modul eintragen :roll:

          1 Reply Last reply
          0
          • M Offline
            M Offline
            Marko
            wrote on last edited by
            #5

            Hallo,

            ich habe das Problem einfach über den NodeRed Adapter gelöst. Da gibt es eine Library über Hue Switch/Dimm/Sensor. Diese nutzen und an IO Broker übergeben. Jetzt kann man ganz einfach diesen Zustand im Skript weiterverarbeiten.

            Gruß

            Marko

            1 Reply Last reply
            0
            • C Offline
              C Offline
              CyberMicha
              wrote on last edited by
              #6

              Hi zusammen,

              möchte auch gerne den Sensor und Dimmerswitch ansprechen. Kann mir bitte jemand mal auf die Sprünge helfen? versehe die Aussagen hier in dem Thread leider nicht so ganz.

              LG Micha

              1 Reply Last reply
              0
              • K Offline
                K Offline
                Kueppert
                wrote on last edited by
                #7

                @Dutchman:

                sieht ja gut aus, waehre es fuer dich moeglich das auch im git zu hinterlegen z.b. als issue ?

                Wen de jetzige adapter keine bewegungsmelder und switches sieht aber bereits loesungen mit scripten vorhanden ist kan der entwickles das evenutell integrieren ?

                https://github.com/ioBroker/ioBroker.hue/issues ` Ist schon paar Monate offen :(

                Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk

                UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                1 Reply Last reply
                0
                • C Offline
                  C Offline
                  cernst1980
                  wrote on last edited by
                  #8

                  Wenn ich es richtig im Kopf habe, hättet Ihr das auch einfacher haben können.

                  Einfach folgendes installieren über die Admin - URL/Git Funktion:

                  4997_bildschirmfoto_2018-02-17_um_13.01.18.png

                  https://github.com/robbsta/ioBroker.hue

                  https://github.com/abwaters/node-hue-api

                  Damit werden dann auch die Sensoren angezeigt…

                  1 Reply Last reply
                  0
                  • K Offline
                    K Offline
                    Kueppert
                    wrote on last edited by
                    #9

                    Das Script nutze ich auch für meine Hue Motion Sensoren ;) allerdings nicht für die Bewegungsmeldung, da ich dafür den Hue zu oft abfragen müsste…

                    Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk

                    UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                    1 Reply Last reply
                    0
                    • C Offline
                      C Offline
                      CyberMicha
                      wrote on last edited by
                      #10

                      @cernst1980:

                      Wenn ich es richtig im Kopf habe, hättet Ihr das auch einfacher haben können.

                      Einfach folgendes installieren über die Admin - URL/Git Funktion:

                      Bildschirmfoto 2018-02-17 um 13.01.18.png

                      https://github.com/robbsta/ioBroker.hue

                      https://github.com/abwaters/node-hue-api

                      Damit werden dann auch die Sensoren angezeigt… `

                      Brauche ich für das Node-hue noch irgrgendwas? ioBroker meckert
                      > npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.node-red/package.json'

                      Vermutlich Node Red?

                      Kuppert: Meinst du mit Script das Node Hue?

                      Mein Ziel wäre es meine Osram Lampen über die Bewegungsmelder der Hue zu steuern. Sollte doch sicher irgendwie gehen?

                      Direkt die Osram Lampen in das Hue Gateway einbinden macht immer Probleme bzw da ist es ja nicht möglich eine Helligkeit zu speichern wenn Strom mal weg ist. Das geht ja leider nur mit dem Osram GW.

                      LG Michael

                      1 Reply Last reply
                      0
                      • K Offline
                        K Offline
                        Kueppert
                        wrote on last edited by
                        #11

                        Hi,

                        ich meine den Beitrag von cernst. Hab im Javascript Adapter eine Code Zeile hinzugefügt und nutze sein Script:

                        http://forum.iobroker.net/viewtopic.php?t=11610

                        Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk

                        UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                        1 Reply Last reply
                        0
                        • MicM Offline
                          MicM Offline
                          Mic
                          Developer
                          wrote on last edited by
                          #12

                          Ich habe hier übrigens eine Lösung vorgestellt: https://forum.iobroker.net/viewtopic.php?f=35&t=14605

                          1 Reply Last reply
                          0
                          • arteckA Offline
                            arteckA Offline
                            arteck
                            Developer Most Active
                            wrote on last edited by
                            #13

                            @Mic:

                            Ich habe hier übrigens eine Lösung vorgestellt: https://forum.iobroker.net/viewtopic.php?f=35&t=14605 `

                            dir ist schon klar, dass der Adapter das seit Monaten auch kann..

                            zigbee hab ich, zwave auch, nuc's genauso und HA auch

                            1 Reply Last reply
                            0
                            • MicM Offline
                              MicM Offline
                              Mic
                              Developer
                              wrote on last edited by
                              #14

                              Theoretisch ja, arteck. Den 4stelligen Zahlencode könnte man auch noch über ein switch-Statement entsprechend in sprechende Variablen etc. bringen. Nur reagiert der Adapter (Version1.0.0) bei dem Dimmer-Switch viel zu langsam (teils 7-8 Sekunden und länger) und teilweise wurden Tastendrücke gar nicht in den Datenpunkt geschrieben.

                              1 Reply Last reply
                              0
                              • N Offline
                                N Offline
                                Nikoxx
                                wrote on last edited by
                                #15

                                @arteck:

                                dir ist schon klar, dass der Adapter das seit Monaten auch kann.. `
                                Wie ?? Hab jetzt Version 1.0.0 installiert, aber bekomm nur meine Lampen angezeigt. Muss ich noch irgendwas beachten ?

                                Gruss Niko

                                1 Reply Last reply
                                0
                                • arteckA Offline
                                  arteckA Offline
                                  arteck
                                  Developer Most Active
                                  wrote on last edited by
                                  #16

                                  schau genauer hin in die Objekte

                                  so wie du den Schalter benamst hast ist der auch da zu finden

                                  zigbee hab ich, zwave auch, nuc's genauso und HA auch

                                  1 Reply Last reply
                                  0
                                  • arteckA Offline
                                    arteckA Offline
                                    arteck
                                    Developer Most Active
                                    wrote on last edited by
                                    #17

                                    @Mic:

                                    Theoretisch ja, arteck. Den 4stelligen Zahlencode könnte man auch noch über ein switch-Statement entsprechend in sprechende Variablen etc. bringen. Nur reagiert der Adapter (Version1.0.0) bei dem Dimmer-Switch viel zu langsam (teils 7-8 Sekunden und länger) und teilweise wurden Tastendrücke gar nicht in den Datenpunkt geschrieben. `

                                    der reagiert so wie das polling eingestellt ist.. so einfach ist das … wurde schon zig tausendmal von mir erwähnt.. die api ist halt so ... ja auch unter node..

                                    zigbee hab ich, zwave auch, nuc's genauso und HA auch

                                    1 Reply Last reply
                                    0
                                    • MicM Offline
                                      MicM Offline
                                      Mic
                                      Developer
                                      wrote on last edited by
                                      #18

                                      Wäre schön, wenn es so einfach wäre: Polling auch bei 1 Sekunde: Reaktion deutlich später, in Node-RED nicht der Fall.

                                      1 Reply Last reply
                                      0
                                      • N Offline
                                        N Offline
                                        Nikoxx
                                        wrote on last edited by
                                        #19

                                        @arteck:

                                        schau genauer hin in die Objekte

                                        so wie du den Schalter benamst hast ist der auch da zu finden `

                                        Da war nichts, sonst hätte ich nicht gefragt. Hab den Adapter dann mal komplett neuinstalliert und … Schalter gefunden.

                                        Allerdings reagieren sie, wie Mic schon schrieb, trotz Polling von einer Sekunde sehr träge. So nicht wirklich zu gebrauchen.

                                        Aber trotzdem Danke zumindest sind sie jetzt da :)

                                        1 Reply Last reply
                                        0
                                        • arteckA Offline
                                          arteckA Offline
                                          arteck
                                          Developer Most Active
                                          wrote on last edited by
                                          #20

                                          @Mic:

                                          Wäre schön, wenn es so einfach wäre: Polling auch bei 1 Sekunde: Reaktion deutlich später, in Node-RED nicht der Fall. `

                                          wir überfluten ndie Bridge nicht mit anfragen… das wird mit paar Geräten funktionieren aber irgendwann steigt die Bridge aus...

                                          wir haben intern eine min polling Zeit von 10 sec.

                                          zigbee hab ich, zwave auch, nuc's genauso und HA auch

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

                                          296

                                          Online

                                          32.7k

                                          Users

                                          82.4k

                                          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