Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. [Vorlage] Variable Zeitsteuerung mit VIS Editor

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    [Vorlage] Variable Zeitsteuerung mit VIS Editor

    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      GiuseppeS @Glasfaser last edited by

      @Glasfaser
      Ok, dann ist es wie in meinem letzten Post beschrieben und auf diese Art reproduzierbar.
      Geänderte Bedingungen löschen nicht zuvor gesetzte Timer.
      Werde schauen was ich finden kann...

      Glasfaser 1 Reply Last reply Reply Quote 0
      • Glasfaser
        Glasfaser @GiuseppeS last edited by

        @GiuseppeS

        Mache in Ruhe …dich auf die suche ... 🤔 wo der Fehler ist ,
        ich habe mein Datenpunkt / Skript für den Terrassenrollladen erstmal wieder aktiviert wie vor deinen Änderungen im Skript , da ich ab morgen im Urlaub bin .🏖

        War auch eine harte Nuss die ich dir zur Erweiterung des Skripts gegeben habe 😳

        G 2 Replies Last reply Reply Quote 0
        • G
          GiuseppeS @Glasfaser last edited by

          @Glasfaser
          Dieses ToDo hatte ich allerdings schon länger auf der Liste, aber mit mangelhafter Motivation 🙄
          Aber keine Sorge, debuggen mach ich gern, auch wenn es bedeutet, dass zuvor etwas nicht perfekt lief 🤦‍♂️

          1 Reply Last reply Reply Quote 0
          • G
            GiuseppeS @Glasfaser last edited by GiuseppeS

            @Glasfaser
            Ich versuche gerade den Fehler zu reproduzieren, bisher erfolglos.

            Meine Vorgehensweise:

            • Bedingung wäre erfüllt aber Timer ist noch inaktiv
            • Timer wird aktiviert; schedule wird laut log erstellt da Bedingung erfüllt
            • States werden verändert damit Bedingungen = false werden
            • Im nächsten Cron-Durchlauf wird Änderung des States der Bedingung erkannt und Darstellung der Bedingung wird rot
              -> schedule wird laut log gelöscht und nicht neu erstellt

            Das entspricht doch deinen Tests wo es wiederholt nicht geklappt hat, oder?
            Ich kann zwar gerade nichts am Skript testen aber zumindest das Reproduzieren wäre möglich...

            Edit:
            Habe jetzt unterschiedliche Wege probiert.

            • Timer aktiviert / deaktiviert während Bedingung immer true war.
            • Bedingung true / false während Timer dauerhaft Aktiviert war
            • Test wie Original-Post aber Bedingung zunächst false, dann true und danach wieder false.

            Kann den Fehler einfach nicht reproduzieren. Kannst du dein Original Skript hochladen?
            In der Zwischenzeit grübel ich mal weiter. Morgen geht wieder der Flug gen Heimat, da gibt's genug Wartezeit 😖

            Glasfaser 1 Reply Last reply Reply Quote 0
            • Glasfaser
              Glasfaser @GiuseppeS last edited by Glasfaser

              @GiuseppeS

              Hier das Skript , nur der Name Device wurde auf RollladenTerrassentuer geändert und

              setState("javascript.0.Timer.RollladenTerrassentuer.Editor.Device", "Timer.RollladenTerrassentuer.Editor.Verschluss", true); in den Gänsefüßchen RollladenTerrassentuer

              xxxxxxxxxxxxxxxxxxxxxxxx.JPG

              "
              Glasfaser Skript Rollladen.txt

              1 Reply Last reply Reply Quote 0
              • G
                GiuseppeS last edited by GiuseppeS

                @Glasfaser
                Ich konnte nichts auffälliges in deinem Skript finden. Kann mir weiterhin nicht erklären wieso es bei dir dieses Verhalten gibt. Ich schau mal ob ich dein Skript ohne großen Aufwand bei mir zum Laufen bringen kann.

                Habe eben übrigens ein kleines Update des Skripts hochgeladen. Diesmal gezippt Datei, damit die Umlaute weiterhin passen.
                Habe ein paar Kleinigkeiten angepasst (siehe Edit im Post 1).

                Kann bitte eine Person, die auch das Skript nutzt, testen ob die Bedingungen alle zum gewünschten Ergebnis führen: werden die Timer korrekt gesetzt bzw. gelöscht? Ich kann leider weiterhin nicht die Fehlerfälle von @Glasfaser reproduzieren.

                Danke

                sigi234 1 Reply Last reply Reply Quote 0
                • sigi234
                  sigi234 Forum Testing Most Active @GiuseppeS last edited by sigi234

                  @GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:

                  Kann bitte eine Person, die auch das Skript nutzt, testen ob die Bedingungen alle zum gewünschten Ergebnis führen: werden die Timer korrekt gesetzt bzw. gelöscht?

                  Skript aktualisiert,
                  Skript Fehler:

                  Screenshot (3661).png

                  javascript.0	2019-07-14 20:15:00.017	error	at listOnTimeout (timers.js:263:5)
                  javascript.0	2019-07-14 20:15:00.017	error	at tryOnTimeout (timers.js:300:5)
                  javascript.0	2019-07-14 20:15:00.017	error	at ontimeout (timers.js:436:11)
                  javascript.0	2019-07-14 20:15:00.017	error	at Timeout._onTimeout (C:\ioBroker\node_modules\iobroker.javascript\node_modules\node-schedule\lib\schedule.js:501:7)
                  javascript.0	2019-07-14 20:15:00.017	error	at C:\ioBroker\node_modules\iobroker.javascript\node_modules\node-schedule\lib\schedule.js:543:11
                  javascript.0	2019-07-14 20:15:00.017	error	at Job.invoke (C:\ioBroker\node_modules\iobroker.javascript\node_modules\node-schedule\lib\schedule.js:173:10)
                  javascript.0	2019-07-14 20:15:00.017	error	at Job.nodeSchedule.scheduleJob [as job] (C:\ioBroker\node_modules\iobroker.javascript\lib\sandbox.js:1191:34)
                  javascript.0	2019-07-14 20:15:00.017	error	at Object.compareCond (script.js.Sigi.Timer_Licht:71:30)
                  javascript.0	2019-07-14 20:15:00.017	error	at JSON.parse (<anonymous>:null:null)
                  javascript.0	2019-07-14 20:15:00.017	error	Error in callback: SyntaxError: Unexpected end of JSON input
                  javascript.0	2019-07-14 20:15:00.014	info	script.js.Test.Countdown_Datum: NaN Resttage (NaN Wochen) bis zum (Sigi)
                  javascript.0	2019-07-14 20:14:00.007	info	script.js.Test.Countdown_Datum: NaN Resttage (NaN Wochen) bis zum (Sigi)
                  javascript.0	2019-07-14 20:14:00.005	error	at Timer.processTimers (timers.js:223:10)
                  javascript.0	2019-07-14 20:14:00.005	error	at listOnTimeout (timers.js:263:5)
                  javascript.0	2019-07-14 20:14:00.005	error	at tryOnTimeout (timers.js:300:5)
                  javascript.0	2019-07-14 20:14:00.005	error	at ontimeout (timers.js:436:11)
                  javascript.0	2019-07-14 20:14:00.005	error	at Timeout._onTimeout (C:\ioBroker\node_modules\iobroker.javascript\node_modules\node-schedule\lib\schedule.js:501:7)
                  javascript.0	2019-07-14 20:14:00.005	error	at C:\ioBroker\node_modules\iobroker.javascript\node_modules\node-schedule\lib\schedule.js:543:11
                  javascript.0	2019-07-14 20:14:00.005	error	at Job.invoke (C:\ioBroker\node_modules\iobroker.javascript\node_modules\node-schedule\lib\schedule.js:173:10)
                  javascript.0	2019-07-14 20:14:00.005	error	at Job.nodeSchedule.scheduleJob [as job] (C:\ioBroker\node_modules\iobroker.javascript\lib\sandbox.js:1191:34)
                  javascript.0	2019-07-14 20:14:00.005	error	at Object.compareCond (script.js.Sigi.Timer_Licht:71:30)
                  javascript.0	2019-07-14 20:14:00.005	error	at JSON.parse (<anonymous>:null:null)
                  javascript.0	2019-07-14 20:14:00.005	error	Error in callback: SyntaxError: Unexpected end of JSON input
                  javascript.0	2019-07-14 20:13:22.994	error	at Timer.processTimers (timers.js:223:10)
                  javascript.0	2019-07-14 20:13:22.994	error	at listOnTimeout (timers.js:263:5)
                  javascript.0	2019-07-14 20:13:22.994	error	at tryOnTimeout (timers.js:300:5)
                  javascript.0	2019-07-14 20:13:22.994	error	at ontimeout (timers.js:438:13)
                  javascript.0	2019-07-14 20:13:22.994	error	at Timeout._onTimeout (C:\ioBroker\node_modules\iobroker.javascript\lib\sandbox.js:1886:34)
                  javascript.0	2019-07-14 20:13:22.994	error	at Object.main (script.js.Sigi.Timer_Licht:820:5)
                  javascript.0	2019-07-14 20:13:22.994	error	at createConditionsJSON (script.js.Sigi.Timer_Licht:48:50)
                  javascript.0	2019-07-14 20:13:22.994	error	Error in callback: TypeError: Cannot read property 'common' of null
                  javascript.0	2019-07-14 20:13:22.993	warn	Object "enum.functions.timerconditions" does not exist
                  
                  G 1 Reply Last reply Reply Quote 0
                  • G
                    GiuseppeS @sigi234 last edited by

                    @sigi234
                    Die Aufzählung "timerconditions" existiert bei dir nicht. Daher diese Fehler.
                    Auf welcher Version warst du? Noch die ohne variable Bedingungen?
                    Dann wäre es auch wichtig das Popup-View einzulesen. Außerdem wäre es wichtig die States alle zu löschen.

                    • Skript stoppen
                    • PopUp View importieren
                    • Alle Objekte unter javascript.0.timer löschen
                    • Aufzählung "timerconditions" erstellen und states für die Bedingungen reinziehen, z.B. sowas wie AtHome was jeder in ähnlicher Form nutzt
                    • Skript neu starten (2 Mal)

                    Falls du die Bedingungen nicht nutzen willst, kannst du auch einfach wieder das alte Script weiternutzen.

                    sigi234 2 Replies Last reply Reply Quote 0
                    • sigi234
                      sigi234 Forum Testing Most Active @GiuseppeS last edited by

                      @GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:

                      Falls du die Bedingungen nicht nutzen willst, kannst du auch einfach wieder das alte Script weiternutzen.

                      Hab ich jetzt nicht mehr.............

                      1 Reply Last reply Reply Quote 0
                      • sigi234
                        sigi234 Forum Testing Most Active @GiuseppeS last edited by

                        @GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:

                        Aufzählung "timerconditions" erstellen und states für die Bedingungen reinziehen, z.B. sowas wie AtHome was jeder in ähnlicher Form nutzt

                        Wie genau?

                        G 1 Reply Last reply Reply Quote 0
                        • G
                          GiuseppeS @sigi234 last edited by

                          @sigi234
                          Du hast doch eine Aufzählung, worin alle Rollläden drin stehen.
                          Jetzt muss eine neue Aufzählung erstellt werden. Kannst du nennen wie du magst. Hier sollten Objekte/States rein kommen, die als Bedingung für die spätere Ausführung der Timer genutzt werden sollen.
                          Hast du Türkontakte? Die wären z.B. sinnvoll.
                          Den Namen der neuen Aufzählung gibst du oben im Script an. So wie du es mit den Rollläden auch gemacht hattest.

                          Wenn noch etwas unklar ist, bitte genau beschreiben was unklar ist.

                          sigi234 1 Reply Last reply Reply Quote 0
                          • sigi234
                            sigi234 Forum Testing Most Active @GiuseppeS last edited by

                            @GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:

                            Du hast doch eine Aufzählung, worin alle Rollläden drin stehen.

                            Nimm ja die Funktion Licht (Hue).......egal, ich mache alles mal neu.

                            G 1 Reply Last reply Reply Quote 0
                            • G
                              GiuseppeS @sigi234 last edited by GiuseppeS

                              @sigi234
                              Die Aufzählung "Licht" ist bei dir für das, was du steuern möchtest.

                              Du musst im Skript ein paar Zeilen darunter noch eine weitere Aufzählung angeben. Bei mir heißt die "timerconditions". Diese Aufzählung ist für die Bedingungen, die man Hinterlegen kann.

                              Im ersten Post steht auch nochmal alles beschrieben.

                              1 Reply Last reply Reply Quote 0
                              • K
                                K_o_bold last edited by

                                @GiuseppeS ,

                                vielen Dank für das Bereitstellen deines Timers. Da steckt eine Menge Arbeit dahinter, wenn man die Menge an Codezeilen und die VIS Views genauer betrachtet.
                                Das ist nicht selbstverständlich, dass jemand sowas einfach so bereit stellt. Tolle Arbeit und sehr professionell gelöst.!

                                Ich habe die aktuellste Version getestet und bin genauso vorgegangen, wie du es im ersten Poste beschrieben hast. Es funktioniert alles einwandfrei.
                                Eine Bedingung habe ich für meine Terrassentüre ( Xiaomi Türsensor ) auch erfolgreich getestet. Ich kann die Probleme, die Glasfaser hatte nicht nachvollziehen.

                                Wenn ich mir noch was wünschen würde, dann zusätzlich einen Offset in Sekunden definieren zu können.
                                Ich möchte z.B. meine Rollläden im 5 s Takt nacheinander schalten können.

                                G 1 Reply Last reply Reply Quote 0
                                • G
                                  GiuseppeS @K_o_bold last edited by

                                  @K_o_bold
                                  Danke für deine Tests. Falls dir noch was auffallen sollte, einfach melden.

                                  Werde schauen, dass ich folgende Punkte zeitnah integrieren kann:

                                  • Offset mit 5s, 10s, 15s usw.
                                  • Reihenfolge der Geräte in Tabelle über Reihenfolge in "javascript.0.Timer.Devices.Editor.DropDownDevice" editierbar.
                                    Wenn Reihenfolge für Dropdown geändert wird, dann ändert sich auch die Reihenfolge in der Tabelle. Werde dafür das Dropdown-State eine Ebene höher ziehen (nicht unter "Editor").
                                  Glasfaser 1 Reply Last reply Reply Quote 0
                                  • Glasfaser
                                    Glasfaser @GiuseppeS last edited by

                                    @GiuseppeS
                                    (So... Urlaub leider zu Ende .)

                                    Habe dein neues Skript auf meine Bedürfnisse geändert.

                                    Sieht sehr gut aus !!
                                    Alle Bedingungen / Simulationen habe ich wie schon oben Beschrieben genauso auf dein neues überarbeitetes Skript angewandt und es läuft wie es sein soll.
                                    Deine neu eingesetzt Debug Option habe ich mal für mich aktiviert.
                                    Im Log werden auch alle Bedingungen / Schedule protokolliert..

                                    Ich werde es dann mal einige Tage einen Dauertest unterziehen .😉

                                    G 1 Reply Last reply Reply Quote 0
                                    • G
                                      GiuseppeS @Glasfaser last edited by

                                      @Glasfaser
                                      Willkommen zurück aus dem Urlaub. Viel Spaß beim Testen. Wenn dir was auffällt, einfach Bescheid geben. Lass den Debug-Switch an, bis du sicher bist dass alles läuft. Betrifft zwar aktuell nur eine Ausgabe (werde bei der nächsten Version weitere als debug drin haben) aber die wäre wichtig für deine letzten Fehlerfällen.

                                      1 Reply Last reply Reply Quote 0
                                      • G
                                        GiuseppeS last edited by GiuseppeS

                                        Habe heute ein kleines Update erstellt:

                                        Die Reihenfolge der Timer innerhalb der Tabelle kann nun über das folgende DropDown State verändert werden:

                                        javascript.0.Timer.Devices.DropDownDevice

                                        203c440a-2a48-41db-a854-b785b5f55c23-image.png

                                        Bitte achtet dabei, dass die Semikolons weiterhin korrekt gesetzt sind:
                                        z.B. wird aus

                                        "Schlafz.;Balkon_Li;Balkon_Re;Esstisch;Kueche;Bad;Kinderz."

                                        dann

                                        "Schlafz.;Balkon_Li;Balkon_Re;Esstisch;Kueche;Kinderz.;Bad"

                                        Somit sind die letzten beiden Einträge vertauscht. Die Einträge in dieser Liste dienen nicht dazu, die Namen innerhalb der Tabelle zu ändern!

                                        Dieser State bestand eigentlich im Unterordner Editor, aber ich habe ihn eine Ebene höher geholt, damit es leichter zu finden ist.
                                        Bitte beachten, dass die Verlinkung innerhalb der VIS angepasst werden muss, wenn nun das Skript geupdated wird:

                                        778c4c78-2c47-47ef-aec0-6e6d16dff0fc-image.png

                                        Wer ein Ordnungs-Fanatiker ist, kann genau das alte State im Unterordner "Editor" löschen. Dieser hat keine Funktion mehr:
                                        javascript.0.Timer.Devices.Editor.DropDownDevice

                                        Nicht jedermann ist ein Fan von Log-Ausgaben, die können nun komplett abgestellt werden (stdLog und debugLog auf false setzen).

                                        Offene Punkte für zukünftige Updates:
                                        • Ausführung des nächsten Timers in Objekt ausgeben. Objekt kann dann individuell in der VIS ausgegeben werden.
                                        • 5s, 10s, 15s und 30s als mögliche Offsets rein nehmen, zusätzlich zu den Minuten

                                        Glasfaser 1 Reply Last reply Reply Quote 0
                                        • Glasfaser
                                          Glasfaser @GiuseppeS last edited by Glasfaser

                                          @GiuseppeS
                                          Die Testwoche ist noch nicht ganz rum ⏳ , aber ich kann dir jetzt schon mitteilen das alle Bedingungen berücksichtigt wurden 😳 , also alles Top. 👍

                                          Habe gerade nebenbei dein neues Script getestet . Alles OK , aber für mich erstmal kein Update Wert 😎 😜

                                          Stehe gerade auf dem Schlau , was meinst Du mit: Ausführung des nächsten Timers in Objekt ausgeben. Objekt kann dann individuell in der VIS ausgegeben werden.

                                          1 Reply Last reply Reply Quote 0
                                          • G
                                            GiuseppeS last edited by

                                            @Glasfaser
                                            Freut mich, dass alles weiterhin gut funktioniert. Wer weiß was letztes Mal schief gelaufen war.

                                            Dadurch, dass du alle Geräte unterteilt hast, ziehst du wirklich keinen Nutzen aus diesem Update.

                                            Ausgabe des nächsten Timers:
                                            Wenn es aktuell 15 Uhr ist, wird geschaut wann ab dem aktuellen Zeitpunkt der nächste Timer greift.
                                            Dann würde im Objekt z.B. stehen:
                                            "18:57 Uhr Rollo_Bad" oder wenn nichts mehr am selben Tag stattfindet :
                                            "Mo 9:38 Uhr Rollo_Kueche"

                                            Vorschläge willkommen 😉
                                            (war eine Anfrage von @K_o_bold )

                                            Glasfaser K 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            template vis
                                            47
                                            919
                                            200290
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo