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. Skripten / Logik
  4. Blockly
  5. (gelöst) Klimaanlagen einschalten, Reihenfolge

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    6
    1
    253

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    9
    1
    243

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    901

(gelöst) Klimaanlagen einschalten, Reihenfolge

Scheduled Pinned Locked Moved Blockly
17 Posts 3 Posters 1.1k 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.
  • HomoranH Homoran

    @perladd sagte in Klimaanlagen einschalten, Rheinfolge geändet, Hiiilfe:

    ich weiß nicht ob du noch die Blockly Bilder gesehen hast

    ja, hab ich.

    Das ist mir aber ehrlich gesagt zu viel.
    Bei so einem Riesenblockly müsste ich mich sehr lange einarbeiten, wenn ich es nicht selber schrittweise entwickelt und immer wieder erweitert habe.

    du müsstest es jetzt mit der funktionierenden Urversion vergleichen welche Änderungen du durchgeführt und dadurch ggf. die Hierarchien ineinandergreifender Aktionen zerstört hast

    P Offline
    P Offline
    perladd
    wrote on last edited by
    #7

    @homoran

    Okay kann ich natürlich verstehen, jeder hat sein eigenes Programmierung und weg führt nach Rom 😂😂😂

    Trotzdem danke 😊

    1 Reply Last reply
    0
    • P perladd

      @perladd

      Ich habe noch einige Kommentare hinzugefügt, zur besseren Übersicht

      1.png

      2.png

      3.png

      4.png

      5.png

      6.png

      7.png

      8.png

      9.png

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by paul53
      #8

      @perladd sagte: Ausschalten

      Dachgeschoss
      Kinderzimmer
      Schlafzimmer

      Blockly_temp.JPG

      Weshalb wird beim Ausschalten die Freigabe geprüft? Beim Ausschalten des Schlafzimmergerätes muss geprüft werden, ob die beiden anderen Geräte bereits ausgeschaltet sind:
      sonst falls nicht DG-Gerät ein UND nicht Kinderzimmergerät ein UND nicht delayOff3.
      Gleiche Logik mit ODER:

      Blockly_temp.JPG

      Das gilt analog auch für das Kinderzimmergerät:
      sonst falls nicht DG-Gerät ein UND nicht delayOff2.

      Blockly_temp.JPG

      Beim Ausschalten des DG-Gerätes als erstes darf nur nicht delayOff geprüft werden.

      Blockly_temp.JPG

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      P 2 Replies Last reply
      0
      • P perladd

        Hallo Leute,

        ich habe ein Blockly, wo die Klimaanlagen nach einer bestimmten Reihenfolge ein- und ausgeschaltet werden sollen. Ich habe diese Reihenfolge aber geändert und das Blockly funktioniert jetzt nicht mehr richtig vom Ablauf.

        So sollte es jetzt sein
        Einschalten:

        1. Schlafzimmer
        2. Kinderzimmer
        3. Dachgeschoss

        Ausschalten

        1. Dachgeschoss
        2. Kinderzimmer
        3. Schlafzimmer

        Ich habe das ganze jetzt allerdings per Java hier hinzugefügt, weil per Screenshot sind es immer sehr viele Bilder

        Wenn ich es doch als Blockly rein setzten soll, bitte eine kurze Info

        var bezug, grenzwertEin, grenzwertAus, cnt, delayOn, delayOn2, msg, delayOn3, delayOff, delayOff2, delayOff3;
        
        
        on({ id: [].concat(['discovergy.0.60671207.Power_Consumption']).concat(['discovergy.0.60671207.Power_Delivery']), change: 'ne' }, async (obj) => {
          bezug = getState('discovergy.0.60671207.Power_Consumption').val - getState('discovergy.0.60671207.Power_Delivery').val;
          grenzwertEin = -500;
          // Hysterese etwas größer als Leistungsaufnahme
          grenzwertAus = grenzwertEin + 700;
          console.info((['Bezug:',bezug,'W. Grenzwert Ein:',grenzwertEin].join('')));
          // Klimaanlagen einschalten
          if (bezug >= grenzwertEin) {
            (() => { if (delayOn) { clearInterval(delayOn); delayOn = null; }})();
            setState('0_userdata.0.Klimaanlagen.SZ.SZ_RestLZ_einschalten' /* SZ_RestLZ_einschalten */, 0, true);
          } else if (!delayOn) {
            // Klima Schlafzimmer einschalten
            cnt = 50;
            delayOn = setInterval(async () => {
              if (cnt > 0) {
                msg = '';
                cnt = (typeof cnt === 'number' ? cnt : 0) + -1;
                if (getState('0_userdata.0.Klimaanlagen.SZ.Freigabe1').val && !getState('melcloud.0.devices.58426692.control.power').val) {
                  setState('0_userdata.0.Klimaanlagen.SZ.SZ_RestLZ_einschalten' /* SZ_RestLZ_einschalten */, (cnt / 10), true);
                  if (cnt == 0) {
                    setState('melcloud.0.devices.58426692.control.power' /* Power */, true);
                    msg = 'Klima Schlafzimmer an';
                    (() => { if (delayOn) { clearInterval(delayOn); delayOn = null; }})();
                  }
                }
                if (msg) {
                  sendTo('email.0', 'send', {
                    text: msg,
                    to: '',
                    subject: msg,
                  });
                  console.log('email: ' + msg);
                }
              }
            }, 6000);
          }
          if (bezug >= grenzwertEin) {
            (() => { if (delayOn2) { clearInterval(delayOn2); delayOn2 = null; }})();
            setState('0_userdata.0.Klimaanlagen.KZ.KZ_RestLZ_einschalten' /* KZ_RestLZ_einschalten */, 0, true);
          } else if ((getState('melcloud.0.devices.58426692.control.power').val || (!getState('0_userdata.0.Klimaanlagen.SZ.Freigabe1').val)) && (!delayOn2)) {
            // Klima Kinderzimmer einschalten
            cnt = 100;
            delayOn2 = setInterval(async () => {
              if (cnt > 0) {
                msg = '';
                cnt = (typeof cnt === 'number' ? cnt : 0) + -1;
                if (getState('0_userdata.0.Klimaanlagen.KZ.Freigabe2').val && !getState('melcloud.0.devices.58426763.control.power').val) {
                  setState('0_userdata.0.Klimaanlagen.KZ.KZ_RestLZ_einschalten' /* KZ_RestLZ_einschalten */, (cnt / 10), true);
                  if (cnt == 0) {
                    setState('melcloud.0.devices.58426763.control.power' /* Power */, true);
                    msg = 'Klima Kinderzimmer an';
                    (() => { if (delayOn2) { clearInterval(delayOn2); delayOn2 = null; }})();
                  }
                }
                if (msg) {
                  sendTo('email.0', 'send', {
                    text: msg,
                    to: '',
                    subject: msg,
                  });
                  console.log('email: ' + msg);
                }
              }
            }, 6000);
          }
          if (bezug >= grenzwertEin) {
            (() => { if (delayOn3) { clearInterval(delayOn3); delayOn3 = null; }})();
            setState('0_userdata.0.Klimaanlagen.DG.DG_RestLZ_einschalten' /* DG_RestLZ_einschalten */, 0, true);
          } else if ((getState('melcloud.0.devices.58426692.control.power').val || (!getState('0_userdata.0.Klimaanlagen.SZ.Freigabe1').val)) && (getState('melcloud.0.devices.58426763.control.power').val || (!getState('0_userdata.0.Klimaanlagen.KZ.Freigabe2').val)) && (!delayOn3)) {
            // Klima Dachgeschoss einschalten
            cnt = 100;
            delayOn3 = setInterval(async () => {
              if (cnt > 0) {
                msg = '';
                cnt = (typeof cnt === 'number' ? cnt : 0) + -1;
                if (getState('0_userdata.0.Klimaanlagen.DG.Freigabe3').val && !getState('melcloud.0.devices.58426579.control.power').val) {
                  setState('0_userdata.0.Klimaanlagen.DG.DG_RestLZ_einschalten' /* DG_RestLZ_einschalten */, (cnt / 10), true);
                  if (cnt == 0) {
                    setState('melcloud.0.devices.58426579.control.power' /* Power */, true);
                    msg = 'Klima Dachgeschoss an';
                    (() => { if (delayOn3) { clearInterval(delayOn3); delayOn3 = null; }})();
                  }
                }
                if (msg) {
                  sendTo('email.0', 'send', {
                    text: msg,
                    to: '',
                    subject: msg,
                  });
                  console.log('email: ' + msg);
                }
              }
            }, 6000);
          }
          // Klimaanlagen auschalten
          if (bezug <= grenzwertAus) {
            (() => { if (delayOff) { clearInterval(delayOff); delayOff = null; }})();
            setState('0_userdata.0.Klimaanlagen.DG.DG_RestLZ_ausschalten' /* DG_RestLZ_ausschalten */, 0, true);
          } else if ((!getState('melcloud.0.devices.58426692.control.power').val) && getState('0_userdata.0.Klimaanlagen.SZ.Freigabe1').val && (!delayOff)) {
            // Klima Dachgeschoss ausschalten
            cnt = 50;
            delayOff = setInterval(async () => {
              if (cnt > 0) {
                msg = '';
                cnt = (typeof cnt === 'number' ? cnt : 0) + -1;
                if (getState('melcloud.0.devices.58426579.control.power').val) {
                  setState('0_userdata.0.Klimaanlagen.DG.DG_RestLZ_ausschalten' /* DG_RestLZ_ausschalten */, (cnt / 10), true);
                  if (cnt == 0) {
                    setState('melcloud.0.devices.58426579.control.power' /* Power */, false);
                    msg = 'Klima Dachgeschoss aus';
                    (() => { if (delayOn) { clearInterval(delayOn); delayOn = null; }})();
                  }
                }
                if (msg) {
                  sendTo('email.0', 'send', {
                    text: msg,
                    to: '',
                    subject: msg,
                  });
                  console.log('email: ' + msg);
                }
              }
            }, 6000);
          }
          if (bezug <= grenzwertAus) {
            (() => { if (delayOff2) { clearInterval(delayOff2); delayOff2 = null; }})();
            setState('0_userdata.0.Klimaanlagen.KZ.KZ_RestLZ_ausschalten' /* KZ_RestLZ_ausschalten */, 0, true);
          } else if ((!getState('melcloud.0.devices.58426692.control.power').val) && getState('0_userdata.0.Klimaanlagen.SZ.Freigabe1').val && (!delayOff2)) {
            // Klima Kinderzimmer ausschalten
            cnt = 100;
            delayOff2 = setInterval(async () => {
              if (cnt > 0) {
                msg = '';
                cnt = (typeof cnt === 'number' ? cnt : 0) + -1;
                if (getState('melcloud.0.devices.58426763.control.power').val) {
                  setState('0_userdata.0.Klimaanlagen.KZ.KZ_RestLZ_ausschalten' /* KZ_RestLZ_ausschalten */, (cnt / 10), true);
                  if (cnt == 0) {
                    setState('melcloud.0.devices.58426763.control.power' /* Power */, false);
                    msg = 'Klima Kinderzimmer aus';
                    (() => { if (delayOn2) { clearInterval(delayOn2); delayOn2 = null; }})();
                  }
                }
                if (msg) {
                  sendTo('email.0', 'send', {
                    text: msg,
                    to: '',
                    subject: msg,
                  });
                  console.log('email: ' + msg);
                }
              }
            }, 6000);
          }
          if (bezug <= grenzwertAus) {
            (() => { if (delayOff3) { clearInterval(delayOff3); delayOff3 = null; }})();
            setState('0_userdata.0.Klimaanlagen.SZ.SZ_RestLZ_ausschalten' /* SZ_RestLZ_ausschalten */, 0, true);
          } else if ((!delayOff3) && getState('0_userdata.0.Klimaanlagen.SZ.Freigabe1').val) {
            // Klima Schlafzimmer ausschalten
            cnt = 100;
            delayOff3 = setInterval(async () => {
              if (cnt > 0) {
                msg = '';
                cnt = (typeof cnt === 'number' ? cnt : 0) + -1;
                if (getState('melcloud.0.devices.58426692.control.power').val) {
                  setState('0_userdata.0.Klimaanlagen.SZ.SZ_RestLZ_ausschalten' /* SZ_RestLZ_ausschalten */, (cnt / 10), true);
                  if (cnt == 0) {
                    setState('melcloud.0.devices.58426692.control.power' /* Power */, false);
                    msg = 'Klima Schlafzimmer aus';
                    (() => { if (delayOn3) { clearInterval(delayOn3); delayOn3 = null; }})();
                  }
                }
                if (msg) {
                  sendTo('email.0', 'send', {
                    text: msg,
                    to: '',
                    subject: msg,
                  });
                  console.log('email: ' + msg);
                }
              }
            }, 6000);
          }
        });
        
        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by paul53
        #9

        @perladd sagte: Rheinfolge

        Fluss abwärts oder Fluss aufwärts?

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Reply Last reply
        1
        • paul53P paul53

          @perladd sagte: Ausschalten

          Dachgeschoss
          Kinderzimmer
          Schlafzimmer

          Blockly_temp.JPG

          Weshalb wird beim Ausschalten die Freigabe geprüft? Beim Ausschalten des Schlafzimmergerätes muss geprüft werden, ob die beiden anderen Geräte bereits ausgeschaltet sind:
          sonst falls nicht DG-Gerät ein UND nicht Kinderzimmergerät ein UND nicht delayOff3.
          Gleiche Logik mit ODER:

          Blockly_temp.JPG

          Das gilt analog auch für das Kinderzimmergerät:
          sonst falls nicht DG-Gerät ein UND nicht delayOff2.

          Blockly_temp.JPG

          Beim Ausschalten des DG-Gerätes als erstes darf nur nicht delayOff geprüft werden.

          Blockly_temp.JPG

          P Offline
          P Offline
          perladd
          wrote on last edited by
          #10

          @paul53

          Hallo,

          vielen Dank, dank dieser Anleitung habe ich es glaub ich hinbekommen. Es ist immer wieder das Kopierproblem :) :)
          Hab zu viel vom einschalten kopiert.
          Du bist echt fit mit den Blocklys :)

          VG
          Thomas

          1 Reply Last reply
          0
          • paul53P paul53

            @perladd sagte: Ausschalten

            Dachgeschoss
            Kinderzimmer
            Schlafzimmer

            Blockly_temp.JPG

            Weshalb wird beim Ausschalten die Freigabe geprüft? Beim Ausschalten des Schlafzimmergerätes muss geprüft werden, ob die beiden anderen Geräte bereits ausgeschaltet sind:
            sonst falls nicht DG-Gerät ein UND nicht Kinderzimmergerät ein UND nicht delayOff3.
            Gleiche Logik mit ODER:

            Blockly_temp.JPG

            Das gilt analog auch für das Kinderzimmergerät:
            sonst falls nicht DG-Gerät ein UND nicht delayOff2.

            Blockly_temp.JPG

            Beim Ausschalten des DG-Gerätes als erstes darf nur nicht delayOff geprüft werden.

            Blockly_temp.JPG

            P Offline
            P Offline
            perladd
            wrote on last edited by
            #11

            @paul53

            Hallo,

            sorry das ich dich nocheinmal belästige.
            Ich verstehe eine Berechnung beim einschalten nicht. Die Klima SZ steht auf 50, geht also wunderbar nach 5 Minuten in Betrieb. Die Klima Kinderz. steht auf 100 und geht ebenfalls nach 10 Minuten in Betrieb. Die Klima DG steht ebenfalls auf 100, bleibt aber allerdings bei 0,1 Minuten stehen und geht nicht in Betrieb. Setzte ich die Zeit z.B. auf 18 geht auch die Klima DG nach 1,8 Minuten in Betrieb. Muss ich das verstehen ?????
            Hat das was mit dem Delay und 6 Sek. zu tun, aber dann dürfte die Klima SZ ja auch nicht nach 10 Minuten in Betrieb gehen.
            Vielleicht hast du da noch eine Erklärung für

            VG

            Thomas

            paul53P 1 Reply Last reply
            0
            • HomoranH Do not disturb
              HomoranH Do not disturb
              Homoran
              Global Moderator Administrators
              wrote on last edited by
              #12

              @perladd sagte in Klimaanlagen einschalten, Rheinfolge geändet, Hiiilfe:

              Muss ich das verstehen

              dann ist irgenwo beim DG ein falscher Faktor drin

              kein Support per PN! - Fragen im Forum stellen -
              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
              Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              P 1 Reply Last reply
              0
              • HomoranH Homoran

                @perladd sagte in Klimaanlagen einschalten, Rheinfolge geändet, Hiiilfe:

                Muss ich das verstehen

                dann ist irgenwo beim DG ein falscher Faktor drin

                P Offline
                P Offline
                perladd
                wrote on last edited by
                #13

                @homoran

                Hallo,

                für mich stehen hier überall die gleichen Werte 🙄 , bis auf die Einschaltzeiten natürlich

                Screenshot 2024-07-04 140032.png
                Screenshot 2024-07-04 135956.png
                Screenshot 2024-07-04 135909.png

                HomoranH 1 Reply Last reply
                0
                • P perladd

                  @homoran

                  Hallo,

                  für mich stehen hier überall die gleichen Werte 🙄 , bis auf die Einschaltzeiten natürlich

                  Screenshot 2024-07-04 140032.png
                  Screenshot 2024-07-04 135956.png
                  Screenshot 2024-07-04 135909.png

                  HomoranH Do not disturb
                  HomoranH Do not disturb
                  Homoran
                  Global Moderator Administrators
                  wrote on last edited by
                  #14

                  @perladd 🤷

                  kein Support per PN! - Fragen im Forum stellen -
                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                  Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                  1 Reply Last reply
                  0
                  • P perladd

                    @paul53

                    Hallo,

                    sorry das ich dich nocheinmal belästige.
                    Ich verstehe eine Berechnung beim einschalten nicht. Die Klima SZ steht auf 50, geht also wunderbar nach 5 Minuten in Betrieb. Die Klima Kinderz. steht auf 100 und geht ebenfalls nach 10 Minuten in Betrieb. Die Klima DG steht ebenfalls auf 100, bleibt aber allerdings bei 0,1 Minuten stehen und geht nicht in Betrieb. Setzte ich die Zeit z.B. auf 18 geht auch die Klima DG nach 1,8 Minuten in Betrieb. Muss ich das verstehen ?????
                    Hat das was mit dem Delay und 6 Sek. zu tun, aber dann dürfte die Klima SZ ja auch nicht nach 10 Minuten in Betrieb gehen.
                    Vielleicht hast du da noch eine Erklärung für

                    VG

                    Thomas

                    paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by paul53
                    #15

                    @perladd sagte: Vielleicht hast du da noch eine Erklärung für

                    Leider nein.
                    Versuche es mal mit einer gesonderten Zählvariable z.B. cntDG.

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    P 1 Reply Last reply
                    0
                    • paul53P paul53

                      @perladd sagte: Vielleicht hast du da noch eine Erklärung für

                      Leider nein.
                      Versuche es mal mit einer gesonderten Zählvariable z.B. cntDG.

                      P Offline
                      P Offline
                      perladd
                      wrote on last edited by
                      #16

                      @paul53

                      Hallo,

                      habe ich soweit umgesetzt. Scheint besser zu funktionieren, ist nicht mehr hängengeblieben.

                      Jetzt nur noch eine Verständnisfrage für mich, du kennst mein Blockly ja mittlerweile sehr gut :)

                      Wenn das Blockly läuft, kann ich dann z.B. eine Freigabe wegnehmen, oder muss ich das Blockly dafür neu starten?

                      Ich hab es zwar schon getestet und blieb immer etwas hängen, aber das könnte an den ganzen Fehlern noch gehangen haben.

                      VG
                      Thomas

                      paul53P 1 Reply Last reply
                      0
                      • P perladd

                        @paul53

                        Hallo,

                        habe ich soweit umgesetzt. Scheint besser zu funktionieren, ist nicht mehr hängengeblieben.

                        Jetzt nur noch eine Verständnisfrage für mich, du kennst mein Blockly ja mittlerweile sehr gut :)

                        Wenn das Blockly läuft, kann ich dann z.B. eine Freigabe wegnehmen, oder muss ich das Blockly dafür neu starten?

                        Ich hab es zwar schon getestet und blieb immer etwas hängen, aber das könnte an den ganzen Fehlern noch gehangen haben.

                        VG
                        Thomas

                        paul53P Offline
                        paul53P Offline
                        paul53
                        wrote on last edited by paul53
                        #17

                        @perladd sagte: kann ich dann z.B. eine Freigabe wegnehmen, oder muss ich das Blockly dafür neu starten?

                        Das Skript muss nicht neu gestartet werden, denn es wird oft genug getriggert. Allerdings sollte bei Wegnahme einer Freigabe auch ausgeschaltet werden, denn das passiert nicht automatisch. Beispiel:

                        Blockly_temp.JPG

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        1 Reply Last reply
                        0

                        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                        With your input, this post could be even better 💗

                        Register Login
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        260

                        Online

                        32.8k

                        Users

                        82.8k

                        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