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. [Vorlage] Heizungsthermostatsteuerung 2.1 - Script

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

[Vorlage] Heizungsthermostatsteuerung 2.1 - Script

Scheduled Pinned Locked Moved Skripten / Logik
javascripttemplateheatingclimate
1.1k Posts 115 Posters 414.8k Views 61 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.
  • L Offline
    L Offline
    looxer01
    wrote on last edited by
    #574

    Hi
    @swordfisch:

    Hab aktuell nur ein paar warn's im log gefunden `

    schau bitte mal in den Datenpunkt der über folgende Variable im Script definiert wird:

    var StateAnwesenheitFunction = JSPath + "Anwesenheitssteuerung.Userlist.JemandDa";
    
    

    Das Script erwartet da einen Boolean Wert und vermutlich ist dies nicht der Fall - Oder das Feld ist nicht als Boolean definiert.

    vG Looxer

    1 Reply Last reply
    0
    • I Offline
      I Offline
      IDiver
      wrote on last edited by
      #575

      Hallo, vielen Dank für's Teilen und die Unterstützung!

      Nachdem ich so ziemlich die meisten hier beschriebenen Einstellungsfehler ebenfalls gemacht habe bleibt leider ein Problemchen offen.

      Ist ein Fenster über einen Zeitabschnittswechsel geöffnet, wird nicht auf den neuen Zeitabschnitt gewechselt sondern der zum Zeitpunkt

      der Fensteröffnung verwendete Zeitabschnitt wird weiterverwendet bis ein neuer Wechsel eintritt oder das Script neu gestartet wird.

      Verwendet wird ein Raumthermostat "HM-TC-IT-WM-W-EU", 2 St. HK-Thermostate "HM-CC-RT-DN" und 2 St. Fensterkontakte "HM-Sec-SCo"

      Konnte leider im Forum zu diesem verhalten nichts finden.

      Irgend eine Idee dazu?

      Danke

      Lg, Helmut

      1 Reply Last reply
      0
      • L Offline
        L Offline
        looxer01
        wrote on last edited by
        #576

        @looxer01:

        Ist ein Fenster über einen Zeitabschnittswechsel geöffnet, wird nicht auf den neuen Zeitabschnitt gewechselt sondern der zum Zeitpunkt

        der Fensteröffnung verwendete Zeitabschnitt wird weiterverwendet bis ein neuer Wechsel eintritt oder das Script neu gestartet wird. `
        Hi,

        Hab mir gerade mal den Code angesehen und es scheint, dass ich bei "nicht drekt verknuepften" Sensoren bei Fensterstatus "geschlossen" eine neue TempFindung anstosse aber nicht bei direkt verknüpften Sensoren.

        Scheint ein Fehler zu sein und ist mir noch nicht aufgefallen.

        Deine Sensoren sind direkt verknuepft - korrekt ?

        vG Looxer

        1 Reply Last reply
        0
        • I Offline
          I Offline
          IDiver
          wrote on last edited by
          #577

          Hallo,

          Ja sind direkt verknüpft.

          Danke

          Lg Helmut

          1 Reply Last reply
          0
          • S Offline
            S Offline
            swordfisch
            wrote on last edited by
            #578

            @looxer01:

            Hi
            @swordfisch:

            Hab aktuell nur ein paar warn's im log gefunden `

            schau bitte mal in den Datenpunkt der über folgende Variable im Script definiert wird:

            var StateAnwesenheitFunction = JSPath + "Anwesenheitssteuerung.Userlist.JemandDa";
            
            

            Das Script erwartet da einen Boolean Wert und vermutlich ist dies nicht der Fall - Oder das Feld ist nicht als Boolean definiert.

            vG Looxer `

            Ok ja das ist bei mir der Fall liegt dann also an meiner config

            Nutze Radar als Anwesenheitseroennung auf Bluetooth bzw Wifi Basis

            Grüße Swordfisch

            1 Reply Last reply
            0
            • I Offline
              I Offline
              IDiver
              wrote on last edited by
              #579

              @looxer01:

              @looxer01:

              Ist ein Fenster über einen Zeitabschnittswechsel geöffnet, wird nicht auf den neuen Zeitabschnitt gewechselt sondern der zum Zeitpunkt

              der Fensteröffnung verwendete Zeitabschnitt wird weiterverwendet bis ein neuer Wechsel eintritt oder das Script neu gestartet wird. `
              Hi,

              Hab mir gerade mal den Code angesehen und es scheint, dass ich bei "nicht drekt verknuepften" Sensoren bei Fensterstatus "geschlossen" eine neue TempFindung anstosse aber nicht bei direkt verknüpften Sensoren.

              Scheint ein Fehler zu sein und ist mir noch nicht aufgefallen.

              Deine Sensoren sind direkt verknuepft - korrekt ?

              vG Looxer `

              Hallo,

              Habe jetzt im Script bei dem Raumthermostat und den HK-Thermostaten den Punkt "7.Steuerung DV " auf "false" und bei den

              Verschlüssen den Punkt 7 "Direktverknuepft" ebenfalls auf "false" gesetzt OHNE die Verknüpfung auf der CCu tatsächlich aufzulösen.

              Jetzt geht's, es wird nach dem Schließen des Fensters die Richtige Temperatur hergenommen und der richtige Zeitabschnitt angezeigt.

              Danke für deine Hilfe, lasse es jetzt mal so laufen.

              Lg Helmut

              1 Reply Last reply
              0
              • L Offline
                L Offline
                looxer01
                wrote on last edited by
                #580

                @IDiver:

                Habe jetzt im Script bei dem Raumthermostat und den HK-Thermostaten den Punkt "7.Steuerung DV " auf "false" und bei den

                Verschlüssen den Punkt 7 "Direktverknuepft" ebenfalls auf "false" gesetzt OHNE die Verknüpfung auf der CCu tatsächlich aufzulösen. `
                Hi,

                ja, das geht natürlich aber da könnten dann unerwünschte Nebeneffekte auftreten.

                Könntest du folgenden Fix mal testen ? Dann brauchst du nicht auf nicht direkt verknüpft umstellen.

                vG Looxer

                //-----------------------------------------------------------------------------------------------------
                // Funktion SensorChange  erkennt die Verschlussstellung eines Sensors und stellt die Temperatur entsprechend ein
                //-----------------------------------------------------------------------------------------------------
                function SensorChange(id) {
                    var tabNo;
                    tabNo = SensorFind(id);
                
                    if (tabNo === 999) {
                       log("Routine SensorChange: Sensor " + id + " nicht in Sensorliste gefunden","info");
                       return; // Sensor nicht in Sensorlist gefunden
                    }
                
                    SensorList[tabNo][7] = SensorStatCalc(id, SensorList[tabNo][2]); // id des Sensors und device type - Der Status des Sensors wird ermittelt und in die sensorliste eingetragen
                
                    // Status des Verschlusses in Tabelle updaten
                    var room = SensorList[tabNo][0].toString();
                
                    // Wenn keine Heizperiode
                    if (getState(StateHeizperiode).val === false) {
                        return; // keine Heizperiode
                    }
                    if (getState(path + "." + room + ".Source_Profil").val === 0 ) {
                        return; // es ist noch kein Profil dem Raum zugeordnet
                    }
                    if (debug) {
                        log("Routine SensorChange: Fenster " + id + " status geaendert fuer " +  SensorList[tabNo][1] + " " +  SensorList[tabNo][0] + " " + SensorList[tabNo][7], "info" );
                        log("Routine SensorChange: Raum " + room, "info");
                        log("Routine SensorChange: Sensor ist direktverknuepft ? " + SensorList[tabNo][9]);
                        log("Routine SensorChange: Sensor status ist ? " +  SensorList[tabNo][7]);
                    }
                
                    if (SensorList[tabNo][9] ) {  // Sensor ist direktverknuepft und wurde geoeffnet
                        if (debug) {
                            log("Routine SensorChange: Sensor Direktverknuepft  Sensorstatus geaendert - ID " + id + " Raum " + room +" auf "+  SensorList[tabNo][7], "info" );
                        }
                        writelog(room, id, "Routine SensorChange: Sensor Direktverknuepft  Sensorstatus geaendert - ID " + id + " Raum " + room +" auf "+  SensorList[tabNo][7])  ;
                        if (VerschlussRaumStatus(room) === true ) { // Mindestens ein Fenster ist geoeffnet
                            setOwnState(path + "." + room + ".RaumStatusVerschluss", true);  // Raum ist geoeffnet         
                            SaveStatus("Fenster", room,false); // Meldung Absenkung  ein Fenster ist geoeffnet
                        } else {
                            ExecuteTempDetermination(roomName, id);
                            writelog(roomName, id, "Sensor ausgeloest - auf geschlossen");
                            setOwnState(path + "." + room + ".RaumStatusVerschluss", false);  // Raum ist geschlossen 
                            SaveStatus("Heizplan", room,false); // Meldung loeschen
                        }
                        return;                                                                                                                     // nichts machen, da die Absenkung automatisch passiert
                
                    }
                
                    LoopDevices(room, true);
                
                } // ende Funktion
                
                
                1 Reply Last reply
                0
                • I Offline
                  I Offline
                  IDiver
                  wrote on last edited by
                  #581

                  @looxer01:

                  @IDiver:

                  Habe jetzt im Script bei dem Raumthermostat und den HK-Thermostaten den Punkt "7.Steuerung DV " auf "false" und bei den

                  Verschlüssen den Punkt 7 "Direktverknuepft" ebenfalls auf "false" gesetzt OHNE die Verknüpfung auf der CCu tatsächlich aufzulösen. `
                  Hi,

                  ja, das geht natürlich aber da könnten dann unerwünschte Nebeneffekte auftreten.

                  Könntest du folgenden Fix mal testen ? Dann brauchst du nicht auf nicht direkt verknüpft umstellen.

                  vG Looxer

                  //-----------------------------------------------------------------------------------------------------
                  // Funktion SensorChange  erkennt die Verschlussstellung eines Sensors und stellt die Temperatur entsprechend ein
                  //-----------------------------------------------------------------------------------------------------
                  function SensorChange(id) {
                      var tabNo;
                      tabNo = SensorFind(id);
                  
                      if (tabNo === 999) {
                         log("Routine SensorChange: Sensor " + id + " nicht in Sensorliste gefunden","info");
                         return; // Sensor nicht in Sensorlist gefunden
                      }
                  
                      SensorList[tabNo][7] = SensorStatCalc(id, SensorList[tabNo][2]); // id des Sensors und device type - Der Status des Sensors wird ermittelt und in die sensorliste eingetragen
                  
                      // Status des Verschlusses in Tabelle updaten
                      var room = SensorList[tabNo][0].toString();
                  
                      // Wenn keine Heizperiode
                      if (getState(StateHeizperiode).val === false) {
                          return; // keine Heizperiode
                      }
                      if (getState(path + "." + room + ".Source_Profil").val === 0 ) {
                          return; // es ist noch kein Profil dem Raum zugeordnet
                      }
                      if (debug) {
                          log("Routine SensorChange: Fenster " + id + " status geaendert fuer " +  SensorList[tabNo][1] + " " +  SensorList[tabNo][0] + " " + SensorList[tabNo][7], "info" );
                          log("Routine SensorChange: Raum " + room, "info");
                          log("Routine SensorChange: Sensor ist direktverknuepft ? " + SensorList[tabNo][9]);
                          log("Routine SensorChange: Sensor status ist ? " +  SensorList[tabNo][7]);
                      }
                  
                      if (SensorList[tabNo][9] ) {  // Sensor ist direktverknuepft und wurde geoeffnet
                          if (debug) {
                              log("Routine SensorChange: Sensor Direktverknuepft  Sensorstatus geaendert - ID " + id + " Raum " + room +" auf "+  SensorList[tabNo][7], "info" );
                          }
                          writelog(room, id, "Routine SensorChange: Sensor Direktverknuepft  Sensorstatus geaendert - ID " + id + " Raum " + room +" auf "+  SensorList[tabNo][7])  ;
                          if (VerschlussRaumStatus(room) === true ) { // Mindestens ein Fenster ist geoeffnet
                              setOwnState(path + "." + room + ".RaumStatusVerschluss", true);  // Raum ist geoeffnet         
                              SaveStatus("Fenster", room,false); // Meldung Absenkung  ein Fenster ist geoeffnet
                          } else {
                              ExecuteTempDetermination(roomName, id);
                              writelog(roomName, id, "Sensor ausgeloest - auf geschlossen");
                              setOwnState(path + "." + room + ".RaumStatusVerschluss", false);  // Raum ist geschlossen 
                              SaveStatus("Heizplan", room,false); // Meldung loeschen
                          }
                          return;                                                                                                                     // nichts machen, da die Absenkung automatisch passiert
                          
                      }
                  
                      LoopDevices(room, true);
                  
                  } // ende Funktion
                  
                  ```` `  
                  

                  Hallo,

                  Funkt leider nicht,

                  ist eigentlich gleich wie vorher nur dass "Absenkung - Verschluss geoeffnet" weiter angezeigt wird obwohl das Fenster geschlossen ist.

                  Im Log diese Fehlermeldungen:

                  2018-10-21 20:37:31.687 - error: javascript.0 Error in callback: ReferenceError: roomName is not defined

                  2018-10-21 20:37:31.688 - error: javascript.0 at SensorChange (script.js.common.Heizungskontrolle:1029:38)

                  2018-10-21 20:37:31.688 - error: javascript.0 at Object. (script.js.common.Heizungskontrolle:707:29)

                  Danke

                  Lg Helmut

                  1 Reply Last reply
                  0
                  • L Offline
                    L Offline
                    looxer01
                    wrote on last edited by
                    #582

                    @IDiver:

                    Funkt leider nicht, `

                    kannst du das nochmal versuchen ?

                    sah jetzt bei mir ok aus.

                    
                    //-----------------------------------------------------------------------------------------------------
                    // Funktion SensorChange  erkennt die Verschlussstellung eines Sensors und stellt die Temperatur entsprechend ein
                    //-----------------------------------------------------------------------------------------------------
                    function SensorChange(id) {
                        var tabNo;
                        tabNo = SensorFind(id);
                    
                        if (tabNo === 999) {
                           log("Routine SensorChange: Sensor " + id + " nicht in Sensorliste gefunden","info");
                           return; // Sensor nicht in Sensorlist gefunden
                        }
                    
                        SensorList[tabNo][7] = SensorStatCalc(id, SensorList[tabNo][2]); // id des Sensors und device type - Der Status des Sensors wird ermittelt und in die sensorliste eingetragen
                    
                        // Status des Verschlusses in Tabelle updaten
                        var room = SensorList[tabNo][0].toString();
                    
                        // Wenn keine Heizperiode
                        if (getState(StateHeizperiode).val === false) {
                            return; // keine Heizperiode
                        }
                        if (getState(path + "." + room + ".Source_Profil").val === 0 ) {
                            return; // es ist noch kein Profil dem Raum zugeordnet
                        }
                        if (debug) {
                            log("Routine SensorChange: Fenster " + id + " status geaendert fuer " +  SensorList[tabNo][1] + " " +  SensorList[tabNo][0] + " " + SensorList[tabNo][7], "info" );
                            log("Routine SensorChange: Raum " + room, "info");
                            log("Routine SensorChange: Sensor ist direktverknuepft ? " + SensorList[tabNo][9]);
                            log("Routine SensorChange: Sensor status ist ? " +  SensorList[tabNo][7]);
                        }
                    
                        if (SensorList[tabNo][9] ) {  // Sensor ist direktverknuepft und wurde geoeffnet
                            if (debug) {
                                log("Routine SensorChange: Sensor Direktverknuepft  Sensorstatus geaendert - ID " + id + " Raum " + room +" auf "+  SensorList[tabNo][7], "info" );
                            }
                            writelog(room, id, "Routine SensorChange: Sensor Direktverknuepft  Sensorstatus geaendert - ID " + id + " Raum " + room +" auf "+  SensorList[tabNo][7])  ;
                            if (VerschlussRaumStatus(room) === true ) { // Mindestens ein Fenster ist geoeffnet
                                setOwnState(path + "." + room + ".RaumStatusVerschluss", true);  // Raum ist geoeffnet         
                                SaveStatus("Fenster", room,false); // Meldung Absenkung  ein Fenster ist geoeffnet
                                return;   
                            } else {
                                setOwnState(path + "." + room + ".RaumStatusVerschluss", false);  // Raum ist geschlossen 
                                SaveStatus("Heizplan", room,false); // Meldung loeschen
                            }
                                                                                                                                      // nichts machen, da die Absenkung automatisch passiert
                    
                        }
                    
                        LoopDevices(room, true);
                    
                    } // ende Funktion
                    
                    
                    1 Reply Last reply
                    0
                    • P Offline
                      P Offline
                      PicNic
                      wrote on last edited by
                      #583

                      @looxer01:

                      @IDiver:

                      Funkt leider nicht, `

                      kannst du das nochmal versuchen ?

                      sah jetzt bei mir ok aus. `

                      Hallo looxer01,

                      ich klinke mich hier mal mit ein :-) … ich habe/hatte das gleiche Problem wie IDiver und habe deinen zweiten Fix mal eingebaut und soweit ich das beurteilen kann funktioniert es habe drei mal ein wenig mit dem Heizplan gespielt, die Zeiten für die Temperaturänderung geändert und zu den Schaltzeiten immer das Fenster geöffnet gehabt. Danach fünf Minuten gewartet und dann das Fenster geschlossen. Die Temperatur wurde danach immer auf die neue Temperatur des Schedules gestellt.

                      Also erst mal top und vielen Dank!

                      Falls im normalen Praxisbetrieb noch etwas auftaucht werde ich mich melden, aber IDiver wird das ja sicherlich auch noch bei sich einbauen und testen.

                      Vielen Dank

                      PicNic

                      1 Reply Last reply
                      0
                      • T Offline
                        T Offline
                        thobastian
                        wrote on last edited by
                        #584

                        Hallo,

                        erstmal vielen Dank für eure Hilfe hier. :-)

                        Ich konnte das Problem beheben, in dem ich neu installiert hatte.

                        Aber ich habe noch ein kleines Problem: Das Script stellt 1 Grad weniger ein, als in der Tabelle eingetragen. Muss ich noch etwas beachten, damit die Werte übereinstimmen?

                        HW: Homematic CCU2, Amazon Echo, diverse NodeMCU's mit Sensoren,

                        SW: IOBroker: immer neueste Version mit ESPEasy auf den NodeMCU's

                        1 Reply Last reply
                        0
                        • H Online
                          H Online
                          holgerwolf
                          wrote on last edited by
                          #585

                          @thobastian:

                          Aber ich habe noch ein kleines Problem: Das Script stellt 1 Grad weniger ein, als in der Tabelle eingetragen. Muss ich noch etwas beachten, damit die Werte übereinstimmen? `

                          Wird vielleicht die Abwesenheitsabsenkung getriggert?

                          Gruß

                          Holger

                          1 Reply Last reply
                          0
                          • T Offline
                            T Offline
                            thobastian
                            wrote on last edited by
                            #586

                            ? Wenn ich Anwesend aktiviere, wird die Temperatur um 1 erhöht.

                            Ist diese Angabe Zwang ? Ich will im Moment keine Unterscheidung machen zwischen Anwesend und Nicht-Anwesend.

                            HW: Homematic CCU2, Amazon Echo, diverse NodeMCU's mit Sensoren,

                            SW: IOBroker: immer neueste Version mit ESPEasy auf den NodeMCU's

                            1 Reply Last reply
                            0
                            • H Online
                              H Online
                              holgerwolf
                              wrote on last edited by
                              #587

                              Dann schreib da doch einfach eine "0" rein.

                              Gruß

                              Holger

                              1 Reply Last reply
                              0
                              • T Offline
                                T Offline
                                thobastian
                                wrote on last edited by
                                #588

                                Hallo Holger,

                                ich steh etwas auf dem Schlauch. Wo kann ich denn die 0 eintragen?

                                Bei "Anwesend" kann ich doch nur ein Kreuz machen.

                                HW: Homematic CCU2, Amazon Echo, diverse NodeMCU's mit Sensoren,

                                SW: IOBroker: immer neueste Version mit ESPEasy auf den NodeMCU's

                                1 Reply Last reply
                                0
                                • H Online
                                  H Online
                                  holgerwolf
                                  wrote on last edited by
                                  #589

                                  Bei der Abwesenheits Absenkung. Zwei Blöcke weiter rechts. Da steht per Default 1 drin.

                                  Gruß

                                  Holger

                                  1 Reply Last reply
                                  0
                                  • I Offline
                                    I Offline
                                    IDiver
                                    wrote on last edited by
                                    #590

                                    @looxer01:

                                    @IDiver:

                                    Funkt leider nicht, `

                                    kannst du das nochmal versuchen ?

                                    sah jetzt bei mir ok aus. `

                                    Hallo,

                                    Hab's jetzt 1 1/2 Stunden im 10 Minuten Wechsel durchlaufen lassen jedes mal mit geöffneten Fenster und ca. 2 min nach dem

                                    Zeitabschnitt Fenster geschlossen, Raumthermostat wurde sofort umgestellt und nach ~5 min die HK-Thermostate.

                                    Also ohne Fehler funktioniert. :D

                                    Danke!!

                                    Lg Helmut

                                    1 Reply Last reply
                                    0
                                    • T Offline
                                      T Offline
                                      thobastian
                                      wrote on last edited by
                                      #591

                                      @holgerwolf:

                                      Bei der Abwesenheits Absenkung. Zwei Blöcke weiter rechts. Da steht per Default 1 drin.

                                      Gruß

                                      Holger `

                                      Vielen Dank !!

                                      Gruß

                                      Thomas

                                      HW: Homematic CCU2, Amazon Echo, diverse NodeMCU's mit Sensoren,

                                      SW: IOBroker: immer neueste Version mit ESPEasy auf den NodeMCU's

                                      1 Reply Last reply
                                      0
                                      • L Offline
                                        L Offline
                                        looxer01
                                        wrote on last edited by
                                        #592

                                        @IDiver:

                                        Hab's jetzt 1 1/2 Stunden im 10 Minuten Wechsel durchlaufen lassen jedes mal mit geöffneten Fenster und ca. 2 min nach dem

                                        Zeitabschnitt Fenster geschlossen, Raumthermostat wurde sofort umgestellt und nach ~5 min die HK-Thermostate.

                                        Also ohne Fehler funktioniert `
                                        Danke euch fürs Testen. Dann werde ich zum WE eine neue Version machen.

                                        vG Looxer

                                        1 Reply Last reply
                                        0
                                        • I Offline
                                          I Offline
                                          IDiver
                                          wrote on last edited by
                                          #593

                                          Danke euch fürs Testen. Dann werde ich zum WE eine neue Version machen.

                                          vG Looxer

                                          Wir haben zu Danken!!

                                          Lg

                                          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

                                          632

                                          Online

                                          32.6k

                                          Users

                                          82.3k

                                          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