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. Frage wegen Warnings in Blockly Prg

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

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

Frage wegen Warnings in Blockly Prg

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
63 Beiträge 8 Kommentatoren 3.5k Aufrufe 3 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.
  • hg6806H hg6806

    Also, ich möchte dass eine Schleife gestartet wird, wenn die Variable Heizung-Boost auf "wahr" ist, sobald man auf "false" geht, soll es abgebrochen werden.
    (Trigger1)
    In der Schleife soll zuerst der aktuelle Wert der Soll Raumtemperatur gespeichert werden, dann ein Smartmeter Wert ständig abgefragt werden.
    Wenn weniger als -500W erreicht ist, soll, wenn der Wert 30 noch nicht erreicht ist, die Soll Raumtemperatur um 0,5 erhöht werden und danach 1 Minute gewartet werden
    Wenn mehr als -50W erreicht ist, soll, wenn der Wert noch höher als der vorher gespeicherte Wert ist, die Soll Raumtemp. um 0,5 verringert werden.
    (Trigger2)
    Wenn "Heizung-Boost" als false geht, soll die Schleife beendet werden und der alte gespeicherte Wert als Soll Raumtemp. geschrieben werden.

    Ich hoffe es ist verständlich ausgedrückt :neutral_face:

    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von paul53
    #25

    @hg6806 sagte: Ich hoffe es ist verständlich ausgedrückt

    Ja. Vorschlag:

    Bild_2021-10-31_202012.png

    Der Leistungswert ändert sich oft genug?

    Wert:

    Blockly_DP_Props.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

    hg6806H 1 Antwort Letzte Antwort
    0
    • hg6806H hg6806

      Ja das habe ich schon verstanden. Aber wieso gehen dann nicht zwei Trigger?
      Sind doch im Prinzip "zwei abonnierte DP"

      L Offline
      L Offline
      lessthanmore
      schrieb am zuletzt editiert von
      #26

      @hg6806 Getrennt voneinander.
      Wie sollte der zweite Trigger denn triggern wenn der erste nie angefangen hat bzw. das eigentliche Skript nie angestoßen wurde?

      1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @hg6806 sagte: Ich hoffe es ist verständlich ausgedrückt

        Ja. Vorschlag:

        Bild_2021-10-31_202012.png

        Der Leistungswert ändert sich oft genug?

        Wert:

        Blockly_DP_Props.JPG

        hg6806H Offline
        hg6806H Offline
        hg6806
        Most Active
        schrieb am zuletzt editiert von
        #27

        @paul53
        Danke für deinen Vorschlag, den ich versuche zu verstehen.

        Im rechten Block ersetze ich oben d39594e5-8972-4d38-ab97-6696fab1188c-image.png durch "Wert von Freigabe = Wahr" oder?

        Wo finde ich "setze Sollwert auf"?

        Wann benutze ich Setze, wann steure, wann aktualisiere?
        Ist für immer das Gleiche.

        paul53P 1 Antwort Letzte Antwort
        0
        • hg6806H hg6806

          @paul53
          Danke für deinen Vorschlag, den ich versuche zu verstehen.

          Im rechten Block ersetze ich oben d39594e5-8972-4d38-ab97-6696fab1188c-image.png durch "Wert von Freigabe = Wahr" oder?

          Wo finde ich "setze Sollwert auf"?

          Wann benutze ich Setze, wann steure, wann aktualisiere?
          Ist für immer das Gleiche.

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #28

          @hg6806 sagte: Im rechten Block ersetze ich oben durch "Wert von Freigabe = Wahr" oder?

          Nein. Wert (unter "Trigger") ist effektiver und entspricht "Wert von Freigabe = Wahr".

          @hg6806 sagte in Frage wegen Warnings in Blockly Prg:

          Wo finde ich "setze Sollwert auf"?

          Unter "Variablen" nachdem die Variable sollwert erstellt wurde.

          @hg6806 sagte in Frage wegen Warnings in Blockly Prg:

          Wann benutze ich Setze, wann steure, wann aktualisiere?

          "setze" ändert Variablen, "steuere" ändert Adapter-Datenpunkte und "aktualisiere" ändert eigene Datenpunkte (unter "0_userdata.0").

          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

          hg6806H 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @hg6806 sagte: Im rechten Block ersetze ich oben durch "Wert von Freigabe = Wahr" oder?

            Nein. Wert (unter "Trigger") ist effektiver und entspricht "Wert von Freigabe = Wahr".

            @hg6806 sagte in Frage wegen Warnings in Blockly Prg:

            Wo finde ich "setze Sollwert auf"?

            Unter "Variablen" nachdem die Variable sollwert erstellt wurde.

            @hg6806 sagte in Frage wegen Warnings in Blockly Prg:

            Wann benutze ich Setze, wann steure, wann aktualisiere?

            "setze" ändert Variablen, "steuere" ändert Adapter-Datenpunkte und "aktualisiere" ändert eigene Datenpunkte (unter "0_userdata.0").

            hg6806H Offline
            hg6806H Offline
            hg6806
            Most Active
            schrieb am zuletzt editiert von
            #29

            @paul53

            Wert unter "Trigger" finde ich nicht.

            Davon verstehe ich den Sinn nicht.
            9ebe1c02-33ea-4b2b-9bd9-c7c1c12be09e-image.png

            @paul53 sagte in Frage wegen Warnings in Blockly Prg:

            "setze" ändert Variablen, "steuere" ändert Adapter-Datenpunkte und "aktualisiere" ändert eigene Datenpunkte (unter "0_userdata.0").

            Eigene Datenpunkte sind für mich Variablen. Ich erzeuge die immer in javascript.o.xxxx
            Wieso dann extra Variablen hier in Blockly?
            Deswegen ist wohl auch in Variablen nur ein Block mit "Element" womit ich nichts anfangen kann.

            HomoranH dslraserD 2 Antworten Letzte Antwort
            0
            • hg6806H hg6806

              @paul53

              Wert unter "Trigger" finde ich nicht.

              Davon verstehe ich den Sinn nicht.
              9ebe1c02-33ea-4b2b-9bd9-c7c1c12be09e-image.png

              @paul53 sagte in Frage wegen Warnings in Blockly Prg:

              "setze" ändert Variablen, "steuere" ändert Adapter-Datenpunkte und "aktualisiere" ändert eigene Datenpunkte (unter "0_userdata.0").

              Eigene Datenpunkte sind für mich Variablen. Ich erzeuge die immer in javascript.o.xxxx
              Wieso dann extra Variablen hier in Blockly?
              Deswegen ist wohl auch in Variablen nur ein Block mit "Element" womit ich nichts anfangen kann.

              HomoranH Nicht stören
              HomoranH Nicht stören
              Homoran
              Global Moderator Administrators
              schrieb am zuletzt editiert von Homoran
              #30

              @hg6806 sagte in Frage wegen Warnings in Blockly Prg:

              Eigene Datenpunkte sind für mich Variablen.

              das sind aber keine Variablen sondern States

              @hg6806 sagte in Frage wegen Warnings in Blockly Prg:

              Wieso dann extra Variablen hier in Blockly?

              Wie gesagt nicht extra, sondern tatsächlich Variablen.
              Diese werden nicht extern geschrieben (was Zeit dauert und bei zu frühem Zugriffsversuch noch nicht geschrieben sein könnten = siehe auch Asynchronität) sondern ausschließlich im js/Blockly verwendet.
              Dadurch ist der Inhalt auch zur Laufzeit immer korrekt.
              Zum Schluss eines Skriptes kannst du deine Variable in deine Datenpunkte schreiben, um sie zu Visualisieren oder woanders zu verwenden.


              @hg6806 sagte in Frage wegen Warnings in Blockly Prg:

              Wert unter "Trigger" finde ich nicht.

              Das ist unter der Kategorie "Trigger" der kleine Baustein mit dem Pulldownmenü hinter dem sich viele nütliche Funktionen, u.a. eben "Wert", befinden

              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

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

              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

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

                10772b6f-9ab7-4ee9-88f9-527899d14916-image.png
                Ist das der Baustein aus Logik?
                Wenn ja, wie geht der übereinander statt nebeneinander?

                J dslraserD 2 Antworten Letzte Antwort
                0
                • hg6806H hg6806

                  10772b6f-9ab7-4ee9-88f9-527899d14916-image.png
                  Ist das der Baustein aus Logik?
                  Wenn ja, wie geht der übereinander statt nebeneinander?

                  J Offline
                  J Offline
                  Jan1
                  schrieb am zuletzt editiert von
                  #32

                  @hg6806
                  auf externe Eingänge umschalten ;)

                  1 Antwort Letzte Antwort
                  0
                  • hg6806H hg6806

                    10772b6f-9ab7-4ee9-88f9-527899d14916-image.png
                    Ist das der Baustein aus Logik?
                    Wenn ja, wie geht der übereinander statt nebeneinander?

                    dslraserD Offline
                    dslraserD Offline
                    dslraser
                    Forum Testing Most Active
                    schrieb am zuletzt editiert von
                    #33

                    @hg6806 sagte in Frage wegen Warnings in Blockly Prg:

                    Wenn ja, wie geht der übereinander statt nebeneinander?

                    rechte Maustaste auf den Baustein und dann umschalten externe/interne Eingänge

                    1 Antwort Letzte Antwort
                    0
                    • hg6806H hg6806

                      @paul53

                      Wert unter "Trigger" finde ich nicht.

                      Davon verstehe ich den Sinn nicht.
                      9ebe1c02-33ea-4b2b-9bd9-c7c1c12be09e-image.png

                      @paul53 sagte in Frage wegen Warnings in Blockly Prg:

                      "setze" ändert Variablen, "steuere" ändert Adapter-Datenpunkte und "aktualisiere" ändert eigene Datenpunkte (unter "0_userdata.0").

                      Eigene Datenpunkte sind für mich Variablen. Ich erzeuge die immer in javascript.o.xxxx
                      Wieso dann extra Variablen hier in Blockly?
                      Deswegen ist wohl auch in Variablen nur ein Block mit "Element" womit ich nichts anfangen kann.

                      dslraserD Offline
                      dslraserD Offline
                      dslraser
                      Forum Testing Most Active
                      schrieb am zuletzt editiert von
                      #34

                      @hg6806 sagte in Frage wegen Warnings in Blockly Prg:

                      Wert unter "Trigger" finde ich nicht.

                      der hier...(wie @Homoran schreibt---Kategorie Trigger)

                      Bildschirmfoto 2021-11-05 um 15.33.49.png

                      Bildschirmfoto 2021-11-05 um 15.34.14.png

                      Das hat @paul53 in seinem Beispiel auch gezeigt.

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

                        901bad47-18dd-4aab-a130-601e8bf2c6f0-image.png

                        Ein "und" bekomme ich hier nicht

                        J 1 Antwort Letzte Antwort
                        0
                        • hg6806H hg6806

                          901bad47-18dd-4aab-a130-601e8bf2c6f0-image.png

                          Ein "und" bekomme ich hier nicht

                          J Offline
                          J Offline
                          Jan1
                          schrieb am zuletzt editiert von Jan1
                          #36

                          @hg6806
                          Es ist doch nicht so schwer sich die richtigen Blöcke selber zu suchen.
                          UND ist Logik
                          e66e9a15-7e74-4dde-a235-d46ba574540f-grafik.png

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

                            So, habe es umgesetzt, tut leider nicht.
                            Der aktuelle Wert wird abgespeichert, aber es wird wenn die Bedingung erfüllt ist, nicht hochgezählt.
                            Wie kann man die Variable abfragen?

                            ed474326-fbe7-47bc-a43e-ffca876ed6b5-image.png

                            "timeout" hatte ich als Variable ebenfalls angelegt, war das richtig?

                            dslraserD 1 Antwort Letzte Antwort
                            0
                            • hg6806H hg6806

                              So, habe es umgesetzt, tut leider nicht.
                              Der aktuelle Wert wird abgespeichert, aber es wird wenn die Bedingung erfüllt ist, nicht hochgezählt.
                              Wie kann man die Variable abfragen?

                              ed474326-fbe7-47bc-a43e-ffca876ed6b5-image.png

                              "timeout" hatte ich als Variable ebenfalls angelegt, war das richtig?

                              dslraserD Offline
                              dslraserD Offline
                              dslraser
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von dslraser
                              #38

                              @hg6806
                              Im unteren Blockly hast Du Wert von Objekt ID….als Trigger, das geht schon mal nicht. (nur Objekt ID nehmen)

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

                                Stimmt!
                                Ist gefixt.

                                Ich bekomme allerdings noch immer ein Warning:

                                c74bf71a-58f4-49fe-8e92-ccb687c34b93-image.png

                                Ist Zeile 17?

                                9035f9f5-2dfa-480f-814b-bb509acb159c-image.png

                                HomoranH 1 Antwort Letzte Antwort
                                0
                                • hg6806H hg6806

                                  Stimmt!
                                  Ist gefixt.

                                  Ich bekomme allerdings noch immer ein Warning:

                                  c74bf71a-58f4-49fe-8e92-ccb687c34b93-image.png

                                  Ist Zeile 17?

                                  9035f9f5-2dfa-480f-814b-bb509acb159c-image.png

                                  HomoranH Nicht stören
                                  HomoranH Nicht stören
                                  Homoran
                                  Global Moderator Administrators
                                  schrieb am zuletzt editiert von
                                  #40

                                  @hg6806 Kein Screenshot!
                                  ich kann da nichts zitieren!

                                  kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

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

                                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

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

                                    OK, hier das Javascript:

                                    var Boost_Soll_T_Raum, timeout, timeout;
                                    
                                    
                                    on({id: 'smartmeter.0.1-0:16_7_0__255.value', change: "ne"}, async function (obj) {
                                      var value = obj.state.val;
                                      var oldValue = obj.oldState.val;
                                      if (getState("javascript.0.PV.Heizung-Boost").val && !timeout) {
                                        if ((obj.state ? obj.state.val : "") < -500) {
                                          if (Boost_Soll_T_Raum < 30) {
                                            Boost_Soll_T_Raum = (typeof Boost_Soll_T_Raum == 'number' ? Boost_Soll_T_Raum : 0) + 0.5;
                                          }
                                        }
                                      } else if ((obj.state ? obj.state.val : "") < -50 && Boost_Soll_T_Raum > getState("javascript.0.PV.Raumtemp-Soll_alt").val) {
                                        Boost_Soll_T_Raum = (typeof Boost_Soll_T_Raum == 'number' ? Boost_Soll_T_Raum : 0) + -0.5;
                                      }
                                      if (getState("smartmeter.0.1-0:16_7_0__255.value").val != Boost_Soll_T_Raum) {
                                        setState("fhem.0.myHPSU.HPSU~Soll_T_Raum_1"/*myHPSU HPSU.Soll_T_Raum_1*/, Boost_Soll_T_Raum);
                                        timeout = setTimeout(async function () {
                                          timeout = null;
                                        }, 60000);
                                      }
                                    });
                                    
                                    setState("javascript.0.PV.Heizung-Boost"/*Heizung-Boost*/, false);
                                    on({id: 'javascript.0.PV.Heizung-Boost', change: "ne"}, async function (obj) {
                                      var value = obj.state.val;
                                      var oldValue = obj.oldState.val;
                                      if ((obj.state ? obj.state.val : "")) {
                                        Boost_Soll_T_Raum = getState("fhem.0.myHPSU.HPSU~Soll_T_Raum_1").val;
                                        setState("javascript.0.PV.Raumtemp-Soll_alt"/*Raumtemp-Soll_alt*/, Boost_Soll_T_Raum, true);
                                      } else {
                                        setState("fhem.0.myHPSU.HPSU~Soll_T_Raum_1"/*myHPSU HPSU.Soll_T_Raum_1*/, getState("javascript.0.PV.Raumtemp-Soll_alt").val);
                                      }
                                    });
                                    
                                    HomoranH 1 Antwort Letzte Antwort
                                    0
                                    • hg6806H hg6806

                                      OK, hier das Javascript:

                                      var Boost_Soll_T_Raum, timeout, timeout;
                                      
                                      
                                      on({id: 'smartmeter.0.1-0:16_7_0__255.value', change: "ne"}, async function (obj) {
                                        var value = obj.state.val;
                                        var oldValue = obj.oldState.val;
                                        if (getState("javascript.0.PV.Heizung-Boost").val && !timeout) {
                                          if ((obj.state ? obj.state.val : "") < -500) {
                                            if (Boost_Soll_T_Raum < 30) {
                                              Boost_Soll_T_Raum = (typeof Boost_Soll_T_Raum == 'number' ? Boost_Soll_T_Raum : 0) + 0.5;
                                            }
                                          }
                                        } else if ((obj.state ? obj.state.val : "") < -50 && Boost_Soll_T_Raum > getState("javascript.0.PV.Raumtemp-Soll_alt").val) {
                                          Boost_Soll_T_Raum = (typeof Boost_Soll_T_Raum == 'number' ? Boost_Soll_T_Raum : 0) + -0.5;
                                        }
                                        if (getState("smartmeter.0.1-0:16_7_0__255.value").val != Boost_Soll_T_Raum) {
                                          setState("fhem.0.myHPSU.HPSU~Soll_T_Raum_1"/*myHPSU HPSU.Soll_T_Raum_1*/, Boost_Soll_T_Raum);
                                          timeout = setTimeout(async function () {
                                            timeout = null;
                                          }, 60000);
                                        }
                                      });
                                      
                                      setState("javascript.0.PV.Heizung-Boost"/*Heizung-Boost*/, false);
                                      on({id: 'javascript.0.PV.Heizung-Boost', change: "ne"}, async function (obj) {
                                        var value = obj.state.val;
                                        var oldValue = obj.oldState.val;
                                        if ((obj.state ? obj.state.val : "")) {
                                          Boost_Soll_T_Raum = getState("fhem.0.myHPSU.HPSU~Soll_T_Raum_1").val;
                                          setState("javascript.0.PV.Raumtemp-Soll_alt"/*Raumtemp-Soll_alt*/, Boost_Soll_T_Raum, true);
                                        } else {
                                          setState("fhem.0.myHPSU.HPSU~Soll_T_Raum_1"/*myHPSU HPSU.Soll_T_Raum_1*/, getState("javascript.0.PV.Raumtemp-Soll_alt").val);
                                        }
                                      });
                                      
                                      HomoranH Nicht stören
                                      HomoranH Nicht stören
                                      Homoran
                                      Global Moderator Administrators
                                      schrieb am zuletzt editiert von Homoran
                                      #42

                                      @hg6806 sagte in Frage wegen Warnings in Blockly Prg:

                                      setState("fhem.0.myHPSU.HPSU~Soll_T_Raum_1"/myHPSU HPSU.Soll_T_Raum_1/, Boost_Soll_T_Raum)

                                      was macht die Tilde da?
                                      Heisst deine ID wirklich so?

                                      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

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

                                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

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

                                        Ja, die wilde Tilde ist leider Bestandteil des Datenpunktes.
                                        Der kommt von FHEM.

                                        dslraserD 1 Antwort Letzte Antwort
                                        0
                                        • hg6806H hg6806

                                          Ja, die wilde Tilde ist leider Bestandteil des Datenpunktes.
                                          Der kommt von FHEM.

                                          dslraserD Offline
                                          dslraserD Offline
                                          dslraser
                                          Forum Testing Most Active
                                          schrieb am zuletzt editiert von
                                          #44

                                          @hg6806
                                          hast Du mal probiert dafür einen Alias zu erstellen und dann den im Blockly zu verwenden ?
                                          Da kannst Du dann wenigstens „vernünftige“ Namen und ID vergeben (ohne wilde Tilde)

                                          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

                                          398

                                          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