Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Vorlage] Flexibles Timerskript + Vis

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    [Vorlage] Flexibles Timerskript + Vis

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      Pittini Developer @Baerny last edited by

      @Baerny sagte in [Vorlage] Flexibles Timerskript + Vis:

      Hallo Pittini, ich würde gerne als Schaltziel einen "Alias" nehmen. wie ich gesehen und getestet habe ist dies auch möglich. Jedoch wird mit immer nur als Name "Stammordner für Alias, sh. Screenshot" angezeigt und das auch nur für Datenpunkte die in der ersten Ebene liegen. Was mache ich falsch ?

      Du machst nix falsch, Alias Ordner isn Sonderfall. Normalerweise ist der übergeordnete Channel eines Dps, der mit dem Namen, deswegen nimmt das Skript defaultmäßig dann diesen. Du hast jetzt 2 Lösungswege. Entweder Du benutzt benutzerdefinierte Namen oder Du nutzt im Skript unter Optionen die Variante in Zeile 10 und stellst die auf false. Letzteres gilt dann aber global.

      B 1 Reply Last reply Reply Quote 0
      • P
        Pittini Developer @fastfoot last edited by

        @fastfoot sagte in [Vorlage] Flexibles Timerskript + Vis:

        @Pittini sagte in [Vorlage] Flexibles Timerskript + Vis:

        Der Fehler is atypisch und bisher noch bei niemand aufgetreten. Ich kanns leider auch nicht reproduzieren. Da Du aber ne Fehlermeldung hast, würd ich mich gern erst mal da drum kümmern (also genau andersrum als Du dachtest). Poste bitte mal das Log wenn der Fehler auftritt.

        Also ich habe ein komplett neues System aufgesetzt, nur mit JS und Hue-Adapter und VIS, Hier nochmal die Ausgangssituation, diesmal mit Zeiten
        Timer11.PNG

        Gelöscht wird nun Timer3(Play2), in der VIS verschwindet jedoch Timer2
        Timer22.PNG

        Nun lösche ich wieder die Play2(nun Timer2), in der VIS verschwindet jedoch Timer1
        Timer33.PNG

        Was jetzt aber absolut unverständlich ist, die originalen Zeiten der ersten beiden Timer wurden mit den verbleibenden Zielen gemischt, d.h. die Play2 geht um 19:22:00 an und um 19:22:30 aus, wie es eigentlich für den Strip gescheduled war. (siehe auch LOG Zeilen 219 + 224). Der gestern beschriebene Fehler erscheint zur Zeit des originalen Timers 4(in Bild3 Timer2)

        Kann wer anders diesen Fehler, bzw. Probleme beim löschen bestätigen?

        F 1 Reply Last reply Reply Quote 0
        • B
          Baerny @Pittini last edited by

          @Pittini Danke, werde ich mal testen

          1 Reply Last reply Reply Quote 0
          • F
            fastfoot @Pittini last edited by

            @Pittini sagte in [Vorlage] Flexibles Timerskript + Vis:

            Kann wer anders diesen Fehler, bzw. Probleme beim löschen bestätigen?

            Evtl. hast Du es ja überlesen, aber ich habe mittlerweile schon gezeigt, dass es sich um einen Fehler im Skript handelt, und der muss jeden Nutzer betreffen. Mich verwundert, wieso das nicht nachvollziehbar sein soll, es fällt doch schon rein optisch auf.

            1 Reply Last reply Reply Quote 0
            • P
              Pittini Developer @fastfoot last edited by

              @fastfoot sagte in [Vorlage] Flexibles Timerskript + Vis:

              Damit baut sich die Tabelle nach dem Löschen jetzt richtig auf und auch die Timer stimmen danach.

              Muß ich mir bei Gelegenheit noch mal in Ruhe anschauen. Aber Du darfst mir glauben, ich hab hier drölfzich Timer erstellt und gelöscht, sowohl beim testen als auch im Produktivbetrieb und es hat mit dem alten Code immer gepasst. Aber ich werd gern Deine Variante mal durchtesten, wie die sich dann verhält wenns der erste oder letzte Timer ist.

              F 1 Reply Last reply Reply Quote 0
              • F
                fastfoot @Pittini last edited by

                @Pittini sagte in [Vorlage] Flexibles Timerskript + Vis:

                @fastfoot sagte in [Vorlage] Flexibles Timerskript + Vis:

                Damit baut sich die Tabelle nach dem Löschen jetzt richtig auf und auch die Timer stimmen danach.

                Muß ich mir bei Gelegenheit noch mal in Ruhe anschauen. Aber Du darfst mir glauben, ich hab hier drölfzich Timer erstellt und gelöscht, sowohl beim testen als auch im Produktivbetrieb und es hat mit dem alten Code immer gepasst. Aber ich werd gern Deine Variante mal durchtesten, wie die sich dann verhält wenns der erste oder letzte Timer ist.

                Hiermit kannst du sehr leicht prüfen, was mit der Originalversion falsch läuft und dass meine Variante funktioniert, es ist die abgespeckte DeleteTimer() Funktion und es wird aus einem Array mit 4 Feldern immer ein Feld gelöscht, von 0-3

                let MyTimer = ['T0','T1','T2','T3'];
                let TimerCount = MyTimer.length;
                
                function DeleteTimer(whichone, x){
                    let TempArray = [];
                    let NewArray = [];
                
                    if (whichone == 0) { //Erster Eintrag des Arrays soll gelöscht werden
                        NewArray = MyTimer.slice(whichone + 1, TimerCount);
                        if(x)log('Richtig => ' + whichone + ' ' + NewArray);
                    }
                    else if (whichone == TimerCount - 1) {//Letzter Eintrag des Arrays soll gelöscht werden
                        NewArray = MyTimer.slice(0, whichone);
                        if(x)log('Richtig => ' + whichone + ' ' + NewArray);
                    }
                    else { //Eintrag aus der Mitte des Array soll gelöscht werden
                        NewArray = TempArray.concat(MyTimer.slice(0, whichone - 1), MyTimer.slice(whichone, TimerCount));
                        if(x)log('Falsch => ' + whichone + ' ' + NewArray);
                    };
                
                    NewArray = TempArray.concat(MyTimer.slice(0, whichone), MyTimer.slice(whichone + 1));
                    if(!x)log('Richtig => ' + whichone + ' ' + NewArray);
                
                    //MyTimer = NewArray;
                    //MakeTable();
                }
                log('Original');
                for(let i = 0; i < TimerCount; i++){
                    DeleteTimer(i,1);
                }
                log('nach Änderung');
                for(let i = 0; i < TimerCount; i++){
                    DeleteTimer(i,0);
                }
                
                1 Reply Last reply Reply Quote 0
                • gelberlemmy
                  gelberlemmy @Pittini last edited by

                  @Pittini einen grossen Dank an Deine persönliche Hilfe über Fernverwaltung. Fehler ist gefunden. Das Problem lag an meiner Tabs Vorlage. Wie auf meinen Screenshots zu sehen ist, habe ich oberhalb der VIS Tabs der einzelnen Seiten. Dort muss es einen Bug geben. Wenn wir dies ohne diese Tabs Voreinstellung ausführen besteht der Fehler nicht.
                  HERZLICHEN DANK 👍 💯

                  1 Reply Last reply Reply Quote 0
                  • S
                    Saschag last edited by

                    @Pittini

                    Ich habe häufiger das Problem dass der Javascriptadapter abstürzt beim hinzufügen eines neuen Timers

                    javascript.0	2020-08-15 22:20:03.237	info	(10516) received all objects
                    javascript.0	2020-08-15 22:20:01.859	info	(10516) received all states
                    javascript.0	2020-08-15 22:19:59.847	info	(10516) requesting all objects
                    javascript.0	2020-08-15 22:19:59.845	info	(10516) requesting all states
                    javascript.0	2020-08-15 22:19:59.751	info	(10516) starting. Version 4.6.17 in /opt/iobroker/node_modules/iobroker.javascript, node: v12.18.3, js-controller: 3.1.6
                    javascript.0	2020-08-15 22:19:26.560	error	(8468) at processTicksAndRejections (internal/process/task_queues.js:97:5)
                    javascript.0	2020-08-15 22:19:26.560	error	(8468) at runMicrotasks (<anonymous>)
                    javascript.0	2020-08-15 22:19:26.560	error	(8468) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49
                    javascript.0	2020-08-15 22:19:26.559	error	(8468) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
                    javascript.0	2020-08-15 22:19:26.559	error	(8468) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:547:55
                    javascript.0	2020-08-15 22:19:26.559	error	(8468) at script.js.Timer.TimerV217:260:17
                    javascript.0	2020-08-15 22:19:26.559	error	(8468) at FillTimerArray (script.js.Timer.TimerV217:281:9)
                    javascript.0	2020-08-15 22:19:26.559	error	(8468) at CreateDeviceTrigger (script.js.Timer.TimerV217:1056:5)
                    javascript.0	2020-08-15 22:19:26.558	error	(8468) at on (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1151:28)
                    javascript.0	2020-08-15 22:19:26.558	error	(8468) at Object.subscribe (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:973:112)
                    javascript.0	2020-08-15 22:19:26.557	error	(8468) script.js.Timer.TimerV217: TypeError: Cannot read property 'period' of null
                    

                    Eine Idee und Danke im Voraus

                    P 1 Reply Last reply Reply Quote 0
                    • P
                      Pittini Developer @Saschag last edited by

                      @Saschag sagte in [Vorlage] Flexibles Timerskript + Vis:

                      Eine Idee und Danke im Voraus

                      N komplettes Log wär schon hilfreich.

                      1 Reply Last reply Reply Quote 0
                      • R
                        rotamint last edited by

                        Hallo, guten Abend zusammen! Ich brauche bitte (mal wieder) Eure Hilfe. Ich habe den Aktor der Poolpumpe getauscht und einen neuen Namen vergeben. Die Timer haben sich nicht löschen lassen, daher habe ich in der Java-Instanz alles gelöscht ....

                        timer1.JPG

                        Auch das Script habe ich neu installiert, auch wenn ich nicht wüsste, in welchem Zusammenhang es stehen sollte, dass ich immernoch folgende Meldung erhalte

                        timer-immernochpumpeda.JPG

                        Sonoff.0.Poolpumpe war der alte Aktor, der existiert nicht mehr, und ich bin der Meinung, ich habe auch alles entsprechend gelöscht.

                        Wer hat eine Idee, wo der Fehler versteckt sein könnte?

                        Danke für Eure Hilfe!

                        Schönen Abend, Gruß Stefan.

                        P 1 Reply Last reply Reply Quote 0
                        • P
                          Pittini Developer @rotamint last edited by

                          @rotamint sagte in [Vorlage] Flexibles Timerskript + Vis:

                          Wer hat eine Idee, wo der Fehler versteckt sein könnte?

                          Das sieht mir nach ner Leiche in den Aufzählungen aus. Wenn man nen Dp löscht, der ner Funktion zugeordnet war, wird diese Zuordnung manchmal nicht gelöscht. Geh mal in Aufzählungen > Funktionen und kontrollier bei TimerTarget ob da der alte Dp noch aufgeführt ist. Wenn ja, dort löschen, dann sollte es wieder klappen.

                          R 1 Reply Last reply Reply Quote 0
                          • R
                            rotamint @Pittini last edited by

                            @Pittini Perfekt! Wieder einmal vielen Dank für Deine schnelle & kompetente Hilfe. Genau dort hatte sich der Fehler versteckt 🙂

                            Danke. Stefan.

                            1 Reply Last reply Reply Quote 0
                            • D
                              deta Most Active @Pittini last edited by

                              Hallo, ich hab auch mal was wieder 🙂

                              @Pittini , gestern warum auch immer waren alle einzelnen Positionen weg. Vielleicht hat es mit dem Skript Engerie Update gestern zu tun gehabt, es kam ja heute bereits wieder ein Update davon.
                              Wie auch immer es waren alle Postionen weg 😞
                              Musste alle wieder neu eintragen, wollte kein Backup der letzten Tage komplett wieder einspielen.
                              Es geht wieder alles.
                              Was super wäre:

                              1. Backup Möglichkeit der einzelnen Positionen, einfach irgendwo ein Button, draufklicken und die Postionen werden gespeichert. Sollte es noch mal passieren, Restore Button um die Positionen wieder einzuspielen. Dann spart man sich die ganze Arbeit.

                              2. Sortierung nach Zeit der Positionen. Das diese ggf. nicht durcheinander sind. z.b. hab ich vergessen einmal eine Ausschaltzeit einzugeben, kann man nachträglich, aber dann ist diese an der letzten Position.

                              So das war erst mal. Vielleicht kann man gelegentlich mal Einbauen.
                              Danke

                              P 1 Reply Last reply Reply Quote 0
                              • P
                                Pittini Developer @deta last edited by

                                @deta sagte in [Vorlage] Flexibles Timerskript + Vis:

                                Was super wäre:

                                Backup Möglichkeit der einzelnen Positionen, einfach irgendwo ein Button, draufklicken und die Postionen werden gespeichert. Sollte es noch mal passieren, Restore Button um die Positionen wieder einzuspielen. Dann spart man sich die ganze Arbeit.

                                Sortierung nach Zeit der Positionen. Das diese ggf. nicht durcheinander sind. z.b. hab ich vergessen einmal eine Ausschaltzeit einzugeben, kann man nachträglich, aber dann ist diese an der letzten Position.

                                So das war erst mal. Vielleicht kann man gelegentlich mal Einbauen.

                                Hm, sorry, wirds beides nicht geben, aus unterschiedlichen Gründen.
                                Backup wirds nicht geben weil, der Datenverlust kam ja nicht durchn Skriptfehler. In dem Fall wäre der einfachste Backup Weg wohln Screenshot, dann ist das doch fix wieder eingetragen. Von wieviel Timern sprechen wir denn?
                                Die Sache mit dem sortieren nach Zeit fände ich sinnvoll, hab auch schon mal drüber nachgedacht, war mir aber ehrlich gesagt zuviel Aufwand. Mal sehen, vieleicht is mir ja mal langweilig 😊 .

                                D Dominik F. 2 Replies Last reply Reply Quote 0
                                • D
                                  deta Most Active @Pittini last edited by

                                  @Pittini sagte in [Vorlage] Flexibles Timerskript + Vis:

                                  @deta sagte in [Vorlage] Flexibles Timerskript + Vis:

                                  Was super wäre:

                                  Backup Möglichkeit der einzelnen Positionen, einfach irgendwo ein Button, draufklicken und die Postionen werden gespeichert. Sollte es noch mal passieren, Restore Button um die Positionen wieder einzuspielen. Dann spart man sich die ganze Arbeit.

                                  Sortierung nach Zeit der Positionen. Das diese ggf. nicht durcheinander sind. z.b. hab ich vergessen einmal eine Ausschaltzeit einzugeben, kann man nachträglich, aber dann ist diese an der letzten Position.

                                  So das war erst mal. Vielleicht kann man gelegentlich mal Einbauen.

                                  Hm, sorry, wirds beides nicht geben, aus unterschiedlichen Gründen.
                                  Backup wirds nicht geben weil, der Datenverlust kam ja nicht durchn Skriptfehler. In dem Fall wäre der einfachste Backup Weg wohln Screenshot, dann ist das doch fix wieder eingetragen. Von wieviel Timern sprechen wir denn?

                                  War nicht das große drama, aber wäre eine gute Erleichterung, kommt ja nicht jeden Tag vor, aber warum das mit einmal weg war, keine Ahnung. Alles andere lief.

                                  Die Sache mit dem sortieren nach Zeit fände ich sinnvoll, hab auch schon mal drüber nachgedacht, war mir aber ehrlich gesagt zuviel Aufwand. Mal sehen, vieleicht is mir ja mal langweilig 😊 .

                                  Jup, hat ja keine Eile 🙂 So wie du Lust und Laune hast.

                                  1 Reply Last reply Reply Quote 0
                                  • Dominik F.
                                    Dominik F. @Pittini last edited by

                                    @Pittini

                                    Ich weiß nicht ob es hier schon angemerkt wurde oder schon gelöst wurde weil ich jetzt länger nicht mehr so intensiv dem Thread folgen konnte.

                                    Mir ist aufgefallen, dass wenn ich z.B. Beginn Sonnenuntergang als Zeit auswähle, der richtige Zeitpunkt ausgewählt wird, sich aber über ein paar Tage hinweg nicht selbstständig aktualisiert. Erst beim erneuten speichern eines Timers wird der Zeitpunkt aktualisiert. Ich könnte mir vorstellen, dass dies nicht von dir gewollt ist.

                                    P 1 Reply Last reply Reply Quote 0
                                    • Rene55
                                      Rene55 last edited by

                                      @Pittini Vielen Dank für das tolle Script - hat nach den Anweisungen zur Installation auch bei mir als relativem Neuling sofort geklappt. Ich habe nur festgetellt, dass beim Löschen von Timern etwas nicht stimmt. Wenn ich Timer 5 löschen will muss ich auf Timer 6 einstellen, sonst wird der falsche Eintrag gelöscht. Somit kann ich den letzten Timer auch nicht löschen. Liegt das an mir oder hat sonst jemand auch diesen Effekt.
                                      Danke fürs nachschauen.

                                      F 1 Reply Last reply Reply Quote 0
                                      • F
                                        fastfoot @Rene55 last edited by

                                        @Rene55 sagte in [Vorlage] Flexibles Timerskript + Vis:

                                        @Pittini Vielen Dank für das tolle Script - hat nach den Anweisungen zur Installation auch bei mir als relativem Neuling sofort geklappt. Ich habe nur festgetellt, dass beim Löschen von Timern etwas nicht stimmt. Wenn ich Timer 5 löschen will muss ich auf Timer 6 einstellen, sonst wird der falsche Eintrag gelöscht. Somit kann ich den letzten Timer auch nicht löschen. Liegt das an mir oder hat sonst jemand auch diesen Effekt.
                                        Danke fürs nachschauen.

                                        siehe hier, @Pittini kann es aber nicht nachvollziehen

                                        1 Reply Last reply Reply Quote 0
                                        • Rene55
                                          Rene55 last edited by

                                          @fastfoot Danke für die prompte Antwort. Ich habe es daraufhin gerade nochmals versucht: Angewählt habe Timer 4 -> und Timer 3 wurde gelöscht. Scheint also reproduzierbar zu sein.

                                          F 1 Reply Last reply Reply Quote 0
                                          • F
                                            fastfoot @Rene55 last edited by

                                            @Rene55 sagte in [Vorlage] Flexibles Timerskript + Vis:

                                            @fastfoot Danke für die prompte Antwort. Ich habe es daraufhin gerade nochmals versucht: Angewählt habe Timer 4 -> und Timer 3 wurde gelöscht. Scheint also reproduzierbar zu sein.

                                            Ja, ist es. Der erste und letzte Timer lassen sich aber problemlos löschen. Im Beitrag darunter habe ich meine Lösung dazu gepostet

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            491
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript template
                                            40
                                            500
                                            75793
                                            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