Skip to content
  • 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
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. [Vorlage] Variable Zeitsteuerung mit VIS Editor

NEWS

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

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

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

[Vorlage] Variable Zeitsteuerung mit VIS Editor

Geplant Angeheftet Gesperrt Verschoben Visualisierung
vistemplate
919 Beiträge 47 Kommentatoren 278.8k Aufrufe 75 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.
  • S Offline
    S Offline
    stromie
    schrieb am zuletzt editiert von
    #905

    Hallo Zusammen

    hab jetzt auch mal versucht mit der Zeitsteuerung zu spielen.
    Lieder bekomme ich folgende Meldung:

    code_text
    2023-12-04 09:12:39.218 - info: javascript.0 (190) Start javascript script.js.MIC_System.Zeitschaltuhr
    2023-12-04 09:12:39.228 - info: javascript.0 (190) script.js.MIC_System.Zeitschaltuhr: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
    2023-12-04 09:12:40.731 - error: javascript.0 (190) Error in callback: TypeError: Cannot read properties of null (reading 'hasOwnProperty')
    2023-12-04 09:12:40.732 - error: javascript.0 (190) at Object.main (script.js.MIC_System.Zeitschaltuhr:1509:27)
    2023-12-04 09:12:40.732 - error: javascript.0 (190) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2777:34)
    2023-12-04 09:12:40.732 - error: javascript.0 (190) at listOnTimeout (node:internal/timers:559:17)
    2023-12-04 09:12:40.732 - error: javascript.0 (190) at processTimers (node:internal/timers:502:7)
    2023-12-04 09:12:41.229 - error: javascript.0 (190) Error in callback: TypeError: Cannot convert undefined or null to object
    2023-12-04 09:12:41.230 - error: javascript.0 (190) at Function.keys ()
    2023-12-04 09:12:41.230 - error: javascript.0 (190) at Object.updateCond (script.js.MIC_System.Zeitschaltuhr:290:12)
    2023-12-04 09:12:41.230 - error: javascript.0 (190) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2777:34)
    2023-12-04 09:12:41.230 - error: javascript.0 (190) at listOnTimeout (node:internal/timers:559:17)
    2023-12-04 09:12:41.230 - error: javascript.0 (190) at processTimers (node:internal/timers:502:7)```
    

    die beiden Aufzählungen habe ich angelegt. Auch das Script mehrfach gestartet.

    1f498aa5-aafe-4e65-bd22-4a86ae9491c8-image.png
    4b4bbf0c-692d-45fd-bee5-81ed8a16ef56-image.png

    c7339ae9-c5b8-406f-96fc-f5ce03329ea9-image.png

    0063a4f5-fd11-4dca-aee7-334ee49ba329-image.png

    wo liegt mein Fehler?

    Grüße Ronny

    G 2 Antworten Letzte Antwort
    0
    • S stromie

      Hallo Zusammen

      hab jetzt auch mal versucht mit der Zeitsteuerung zu spielen.
      Lieder bekomme ich folgende Meldung:

      code_text
      2023-12-04 09:12:39.218 - info: javascript.0 (190) Start javascript script.js.MIC_System.Zeitschaltuhr
      2023-12-04 09:12:39.228 - info: javascript.0 (190) script.js.MIC_System.Zeitschaltuhr: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
      2023-12-04 09:12:40.731 - error: javascript.0 (190) Error in callback: TypeError: Cannot read properties of null (reading 'hasOwnProperty')
      2023-12-04 09:12:40.732 - error: javascript.0 (190) at Object.main (script.js.MIC_System.Zeitschaltuhr:1509:27)
      2023-12-04 09:12:40.732 - error: javascript.0 (190) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2777:34)
      2023-12-04 09:12:40.732 - error: javascript.0 (190) at listOnTimeout (node:internal/timers:559:17)
      2023-12-04 09:12:40.732 - error: javascript.0 (190) at processTimers (node:internal/timers:502:7)
      2023-12-04 09:12:41.229 - error: javascript.0 (190) Error in callback: TypeError: Cannot convert undefined or null to object
      2023-12-04 09:12:41.230 - error: javascript.0 (190) at Function.keys ()
      2023-12-04 09:12:41.230 - error: javascript.0 (190) at Object.updateCond (script.js.MIC_System.Zeitschaltuhr:290:12)
      2023-12-04 09:12:41.230 - error: javascript.0 (190) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2777:34)
      2023-12-04 09:12:41.230 - error: javascript.0 (190) at listOnTimeout (node:internal/timers:559:17)
      2023-12-04 09:12:41.230 - error: javascript.0 (190) at processTimers (node:internal/timers:502:7)```
      

      die beiden Aufzählungen habe ich angelegt. Auch das Script mehrfach gestartet.

      1f498aa5-aafe-4e65-bd22-4a86ae9491c8-image.png
      4b4bbf0c-692d-45fd-bee5-81ed8a16ef56-image.png

      c7339ae9-c5b8-406f-96fc-f5ce03329ea9-image.png

      0063a4f5-fd11-4dca-aee7-334ee49ba329-image.png

      wo liegt mein Fehler?

      Grüße Ronny

      G Offline
      G Offline
      GiuseppeS
      schrieb am zuletzt editiert von
      #906

      @stromie
      Kommen die Fehler nach den ersten starts oder wenn bereits ein Timer abgelaufen ist, d.h. wenn der Timer auslöst?
      Das letzte Mal habe ich vor Ewigkeiten was am Code geändert. Würde mich wundern wenn es daran liegt.
      Kann es später mal testen, beginnend bei 0.

      Ich frage nur um sicher zu gehen:
      In beiden Aufzählungen sind ausschließlich States enthalten, korrekt? Es dürfen keine Folder, Channel oder Devices angegeben werden.

      1 Antwort Letzte Antwort
      0
      • S stromie

        Hallo Zusammen

        hab jetzt auch mal versucht mit der Zeitsteuerung zu spielen.
        Lieder bekomme ich folgende Meldung:

        code_text
        2023-12-04 09:12:39.218 - info: javascript.0 (190) Start javascript script.js.MIC_System.Zeitschaltuhr
        2023-12-04 09:12:39.228 - info: javascript.0 (190) script.js.MIC_System.Zeitschaltuhr: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
        2023-12-04 09:12:40.731 - error: javascript.0 (190) Error in callback: TypeError: Cannot read properties of null (reading 'hasOwnProperty')
        2023-12-04 09:12:40.732 - error: javascript.0 (190) at Object.main (script.js.MIC_System.Zeitschaltuhr:1509:27)
        2023-12-04 09:12:40.732 - error: javascript.0 (190) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2777:34)
        2023-12-04 09:12:40.732 - error: javascript.0 (190) at listOnTimeout (node:internal/timers:559:17)
        2023-12-04 09:12:40.732 - error: javascript.0 (190) at processTimers (node:internal/timers:502:7)
        2023-12-04 09:12:41.229 - error: javascript.0 (190) Error in callback: TypeError: Cannot convert undefined or null to object
        2023-12-04 09:12:41.230 - error: javascript.0 (190) at Function.keys ()
        2023-12-04 09:12:41.230 - error: javascript.0 (190) at Object.updateCond (script.js.MIC_System.Zeitschaltuhr:290:12)
        2023-12-04 09:12:41.230 - error: javascript.0 (190) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2777:34)
        2023-12-04 09:12:41.230 - error: javascript.0 (190) at listOnTimeout (node:internal/timers:559:17)
        2023-12-04 09:12:41.230 - error: javascript.0 (190) at processTimers (node:internal/timers:502:7)```
        

        die beiden Aufzählungen habe ich angelegt. Auch das Script mehrfach gestartet.

        1f498aa5-aafe-4e65-bd22-4a86ae9491c8-image.png
        4b4bbf0c-692d-45fd-bee5-81ed8a16ef56-image.png

        c7339ae9-c5b8-406f-96fc-f5ce03329ea9-image.png

        0063a4f5-fd11-4dca-aee7-334ee49ba329-image.png

        wo liegt mein Fehler?

        Grüße Ronny

        G Offline
        G Offline
        GiuseppeS
        schrieb am zuletzt editiert von GiuseppeS
        #907

        @stromie

        Bei mir startet alles einwandfrei mit original Skript aus Github.

        Wie schaut dein TimerJSON aus, wenn Du das Skript gestartet hast? Der State TimerJSON wird vom Skript erstellt und befindet sich Standard unter:
        javascript.0.Timer.Devices.TimerJSON

        Kannst Du auch ein Screenshot vom State S_DG08_01 erstellen, so wie bereits für den State Trigger_Abend. Meine Vermutung ist, dass dieser State nicht korrekt verarbeitet wird.

        Auch hilfreich wäre ein Screenshot von Zeile 285 - 295 im Skript. Ich vermute den Fehler im original Skript in Zeile 289, aber bei dir wird 290 angezeigt, was ich merkwürdig finde.

        Falls Du im original Skript im oberen Teil etwas verändert hast, wäre davon ein Screenshot auch hifreich.

        1 Antwort Letzte Antwort
        0
        • S Offline
          S Offline
          stromie
          schrieb am zuletzt editiert von stromie
          #908

          Hi

          hab mal etwas debuggt und folgendes gefunden, dass es bei mir geht.

          a6f2f21f-5489-4e6e-be6f-755691cba067-image.png

          3413f871-ee02-4a28-b4bd-49da341d3e13-image.png

          wenn ich das Script bei ersten mal laufen lasse, werden die States erzeugt. Beim zweiten und weiteren Starts prüft er ja auff null. Im State steht auch nix drin. Er geht aber nicht in die If Anweisung sondern in die else.

          wenn ich das Script so ändere

          64e69d5b-8ccc-4453-b7c3-4798e83a36f3-image.png

          geht es.

          Grüße Ronny

          G 1 Antwort Letzte Antwort
          1
          • S stromie

            Hi

            hab mal etwas debuggt und folgendes gefunden, dass es bei mir geht.

            a6f2f21f-5489-4e6e-be6f-755691cba067-image.png

            3413f871-ee02-4a28-b4bd-49da341d3e13-image.png

            wenn ich das Script bei ersten mal laufen lasse, werden die States erzeugt. Beim zweiten und weiteren Starts prüft er ja auff null. Im State steht auch nix drin. Er geht aber nicht in die If Anweisung sondern in die else.

            wenn ich das Script so ändere

            64e69d5b-8ccc-4453-b7c3-4798e83a36f3-image.png

            geht es.

            Grüße Ronny

            G Offline
            G Offline
            GiuseppeS
            schrieb am zuletzt editiert von
            #909

            @stromie
            Klasse, super analysiert. Dann hat sich das Verhalten anscheinend verändert, wie der Leere Wert eines neuen States interpretiert wird. Werde ich zeitnah auf github aktualisieren. Kurios ist aber weiterhin, dass es bei mir ohne Anpassung funktioniert.
            Bist du bei Javascript oder Admin Adapter auf einer Beta Version unterwegs? Würde es gerne bei mir nachstellen. Evtl genügt auch eine Abfrage auf Leerstring statt null.

            1 Antwort Letzte Antwort
            0
            • S Offline
              S Offline
              stromie
              schrieb am zuletzt editiert von
              #910

              Hi
              hier noch die Version der Adapter

              Admin ist auf 6.12.0
              Javascript auf 7.1.4

              Beta bin ich eigentlich nicht.

              Grüße Ronny

              G 1 Antwort Letzte Antwort
              0
              • S stromie

                Hi
                hier noch die Version der Adapter

                Admin ist auf 6.12.0
                Javascript auf 7.1.4

                Beta bin ich eigentlich nicht.

                Grüße Ronny

                G Offline
                G Offline
                GiuseppeS
                schrieb am zuletzt editiert von
                #911

                @stromie
                Seltsam aber kann man nicht ändern. Habe selbe Admin Version und bei JS die 7.1.6.
                Da du den Bug ausfindig gemacht hast, werde ich es eben so einbinden. Werde es mit Leerstring umsetzen. D.h. beim Erstellen des States mit "" füllen und später darauf abprüfen. Wer weiß ob null später auch zu Problemen führt.

                Danke dir. Hoffe dass der Timer ansonsten wie erwartet funktioniert.

                1 Antwort Letzte Antwort
                0
                • S Offline
                  S Offline
                  stromie
                  schrieb am zuletzt editiert von
                  #912

                  Ich prüf das mal.

                  Grüße Ronny

                  M 1 Antwort Letzte Antwort
                  0
                  • S stromie

                    Ich prüf das mal.

                    Grüße Ronny

                    M Offline
                    M Offline
                    Michael 6
                    schrieb am zuletzt editiert von
                    #913

                    @stromie
                    Ich finde Skript und Visualisierung genial. Wird es eine Anpassung für VIS-2 geben?

                    G 1 Antwort Letzte Antwort
                    0
                    • M Michael 6

                      @stromie
                      Ich finde Skript und Visualisierung genial. Wird es eine Anpassung für VIS-2 geben?

                      G Offline
                      G Offline
                      GiuseppeS
                      schrieb am zuletzt editiert von
                      #914

                      @michael-6
                      Das Projekt ist auf github veröffentlicht, daher kann jeder gerne beitragen. Ich persönlich habe mich noch nicht mit vis2 beschäftigt, daher ist mir noch nicht bekannt, wie die Kommunikation zwischen VIS und Javascript Adapter hergestellt werden kann. Ob es z.B. weiterhin ähnlich funktionieren kann wie bisher. Auch bzgl des Aufwandes für die VIS Widgets kann ich nicht abschätzen.
                      Wenn es möglich ist, das Projekt zu vis2 zu migrieren, wird es früher oder später migriert werden. Ich nutze es ja selbst auch weiterhin.

                      1 Antwort Letzte Antwort
                      1
                      • K Offline
                        K Offline
                        klaus88
                        schrieb am zuletzt editiert von
                        #915

                        Ich habe eine Frage an euch:
                        Auf Zeile 1579 löscht er den Stat ScrollPos:

                         // #############################################
                                // Anpassung der States nach Skript-Update #####
                        
                                if (existsState("javascript." + instance + ".Timer." + path + ".ScrollPos")) deleteState("javascript." + instance + ".Timer." + path + ".ScrollPos");
                        
                                // Ende der Erweiterungen ######################
                                // #############################################
                        

                        dadurch gibt er mir einen Fehler aus, dass er den State nicht findet - wisst ihr warum das gemacht wird ?
                        Zuerst erzeugen und dann löschen?

                        Danke
                        Klaus

                        G 1 Antwort Letzte Antwort
                        0
                        • K klaus88

                          Ich habe eine Frage an euch:
                          Auf Zeile 1579 löscht er den Stat ScrollPos:

                           // #############################################
                                  // Anpassung der States nach Skript-Update #####
                          
                                  if (existsState("javascript." + instance + ".Timer." + path + ".ScrollPos")) deleteState("javascript." + instance + ".Timer." + path + ".ScrollPos");
                          
                                  // Ende der Erweiterungen ######################
                                  // #############################################
                          

                          dadurch gibt er mir einen Fehler aus, dass er den State nicht findet - wisst ihr warum das gemacht wird ?
                          Zuerst erzeugen und dann löschen?

                          Danke
                          Klaus

                          G Offline
                          G Offline
                          GiuseppeS
                          schrieb am zuletzt editiert von GiuseppeS
                          #916

                          @klaus88
                          Bist du absolut sicher, dass der Fehler mit diesem State zusammenhängt?
                          Beim Update des Skripts zur nächsten Version wurde dieser State unnötig, deshalb habe ich diese Bereinigung unnötiger States drin.

                          Edit:
                          Wahrscheinlich hatte ich vergessen, überhaupt das Erstellen des States zu entfernen. Deshalb wird es in der letzten Version noch erstellt und anschließend gelöscht.

                          Lösche die Zeile, wo das State erstellt wird.

                          K 1 Antwort Letzte Antwort
                          0
                          • G GiuseppeS

                            @klaus88
                            Bist du absolut sicher, dass der Fehler mit diesem State zusammenhängt?
                            Beim Update des Skripts zur nächsten Version wurde dieser State unnötig, deshalb habe ich diese Bereinigung unnötiger States drin.

                            Edit:
                            Wahrscheinlich hatte ich vergessen, überhaupt das Erstellen des States zu entfernen. Deshalb wird es in der letzten Version noch erstellt und anschließend gelöscht.

                            Lösche die Zeile, wo das State erstellt wird.

                            K Offline
                            K Offline
                            klaus88
                            schrieb am zuletzt editiert von
                            #917

                            @giuseppes Danke

                            1 Antwort Letzte Antwort
                            0
                            • G GiuseppeS

                              Hallo Leute,

                              habe mir eine Zeitsteuerung für die Bedienung auf meinem Smartphone programmiert, die ich gerne mit euch teile.

                              Alle notwendigen Infos sind auf Github zu finden:

                              https://github.com/gsicilia82/Timer_iobroker

                              Fragen / Probleme / Wünsche können gerne als Issue auf Github oder hier im Thread gestellt werden.

                              In diesem Thread werde ich auch über zukünftige Updates informieren. Bei Interesse, einfach diesen Thread auf "beobachten" setzen.


                              Beispiel Screenshots:

                              Hauptansicht für die Timer

                              f1242ab0-61b4-45b3-acb0-72c531e46e25-image.png

                              PopUp-View für die Bearbeitung

                              7be029ea-d8c3-4949-8e5a-66e31515665c-image.png

                              K Offline
                              K Offline
                              Kapitaen31
                              schrieb am zuletzt editiert von Kapitaen31
                              #918

                              Hallo,

                              ich bin vor kurzem erst auf diesen schönen Timer gestoßen.
                              Ich finde, ihr habt eine echt tolle Arbeit geleistet.
                              Diesen Timer habe ich vor ein paar Tagen in meiner VIS eingebaut.

                              Nun sind mir ein paar Dinge eingefallen, die ich noch mit integrieren möchte.
                              Bei mir werden diverse Schaltsteckdosen über Astro Funktionen gesteuert. Dies funktioniert auch sehr gut.
                              Normalerweise wird bei Sonnenuntergang "eingeschaltet" und z.B. um 21 Uhr wieder ausgeschaltet. Das ist jetzt im Winter sehr gut realisierbar. Aber in den Sommer Monaten ist der Sonnenuntergang ja später als 21 Uhr. Wie kann ich das am besten realisieren ?
                              Meine Idee war, ich erstelle mir ein Bool DP, wo ich reinschreibe, wann Sonnenuntergang ist, der später als 21 Uhr ist (Als Bedingung im Timer den DP einfügen). Nur wenn ich diese ausschalt Zeit nun doch weiter nach hinten verlegen möchte, muss ich wieder den DP händisch anpassen. Wie kann ich das in Bezug zur eingestellten Zeit in diesem Timer realisieren ?
                              Dann war meine nächste Überlegung, wenn ich im Urlaub andere Ausschaltzeiten haben möchte, als in der Arbeitszeit, gibt es dort eine einfache Art dies zu verändern....
                              Es sind dann ja immer nicht nur zwei Schaltsteckdosen, sondern so einige.... und wenn ich das immer von Hand ändere, ist es ganz schön nervig...

                              Hat da jemand von euch eine Idee ?

                              Andreas


                              Raspberry 4 mit 120GB SSD Bookworm
                              Grafana, influxDB2, Hue, Zwave, Zigbee2MQTT, Shelly,usw.

                              G 1 Antwort Letzte Antwort
                              0
                              • K Kapitaen31

                                Hallo,

                                ich bin vor kurzem erst auf diesen schönen Timer gestoßen.
                                Ich finde, ihr habt eine echt tolle Arbeit geleistet.
                                Diesen Timer habe ich vor ein paar Tagen in meiner VIS eingebaut.

                                Nun sind mir ein paar Dinge eingefallen, die ich noch mit integrieren möchte.
                                Bei mir werden diverse Schaltsteckdosen über Astro Funktionen gesteuert. Dies funktioniert auch sehr gut.
                                Normalerweise wird bei Sonnenuntergang "eingeschaltet" und z.B. um 21 Uhr wieder ausgeschaltet. Das ist jetzt im Winter sehr gut realisierbar. Aber in den Sommer Monaten ist der Sonnenuntergang ja später als 21 Uhr. Wie kann ich das am besten realisieren ?
                                Meine Idee war, ich erstelle mir ein Bool DP, wo ich reinschreibe, wann Sonnenuntergang ist, der später als 21 Uhr ist (Als Bedingung im Timer den DP einfügen). Nur wenn ich diese ausschalt Zeit nun doch weiter nach hinten verlegen möchte, muss ich wieder den DP händisch anpassen. Wie kann ich das in Bezug zur eingestellten Zeit in diesem Timer realisieren ?
                                Dann war meine nächste Überlegung, wenn ich im Urlaub andere Ausschaltzeiten haben möchte, als in der Arbeitszeit, gibt es dort eine einfache Art dies zu verändern....
                                Es sind dann ja immer nicht nur zwei Schaltsteckdosen, sondern so einige.... und wenn ich das immer von Hand ändere, ist es ganz schön nervig...

                                Hat da jemand von euch eine Idee ?

                                Andreas

                                G Offline
                                G Offline
                                GiuseppeS
                                schrieb am zuletzt editiert von GiuseppeS
                                #919

                                @kapitaen31
                                Freut mich dass der Timer nach so langer aktiver Zeit weiterhin neue Fans findet.

                                Grundsätzlich können für die Schaltzeiten Astro Zeiten statt manuelle Zeiten gewählt werden. Objekte, die zur selben Zeit / Astro geschaltet werden sollen, können der selben Gruppe zugeordnet werden. Wenn solch ein Timer dann im Sommer verändert wird, können die Änderungen der Zeiten für die Gruppe übernommen werden. Änderungen für eine Gruppe können unabhängig zwischen Zeiten und / oder Bedingungen übernommen werden.

                                Eine Art Hauptschalter für die verschiedenen Timer gibt es nicht. Aber grundsätzlich kann der Timer mehrfach in Javascript eingebunden werden. Somit könnte eine "Instanz" für die Urlaubsgeräte und die andere "Instanz" für den regulären Betrieb genutzt werden.

                                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

                                758

                                Online

                                32.4k

                                Benutzer

                                81.4k

                                Themen

                                1.3m

                                Beiträge
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                ioBroker Community 2014-2025
                                logo
                                • Anmelden

                                • Du hast noch kein Konto? Registrieren

                                • Anmelden oder registrieren, um zu suchen
                                • Erster Beitrag
                                  Letzter Beitrag
                                0
                                • Aktuell
                                • Tags
                                • Ungelesen 0
                                • Kategorien
                                • Unreplied
                                • Beliebt
                                • GitHub
                                • Docu
                                • Hilfe