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@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Vorlage] Flexibles Timerskript + Vis

    This topic has been deleted. Only users with topic management privileges can see it.
    • Rene55
      Rene55 last edited by

      @Pittini
      Ich hatte nach dem Fehler natürlich den TimerTarget wieder entfernt.
      Hier nochmals der Screenshot: Gosund4.png
      und der daraus resultierende Logeintrag:
      error_218.png
      Ich hoffe, dass ich hiermit weiterhelfen kann.
      LG Rainer

      1 Reply Last reply Reply Quote 0
      • F
        FuXXz2 last edited by

        Vorerst danke für das tolle Timerscript👍

        Ich habe dazu zwei fragen.

        1. Mein test Timer funktioniert zwar, aber ich bekomme folgende Einträge ins log, bei jedem Schaltvorgang:
        javascript.0	2020-12-04 14:41:00.014	error	(24887) at processTimers (internal/timers.js:497:7)
        javascript.0	2020-12-04 14:41:00.014	error	(24887) at listOnTimeout (internal/timers.js:554:17)
        javascript.0	2020-12-04 14:41:00.013	error	(24887) at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/schedule.js:510:7)
        javascript.0	2020-12-04 14:41:00.013	error	(24887) at /opt/iobroker/node_modules/node-schedule/lib/schedule.js:552:11
        javascript.0	2020-12-04 14:41:00.013	error	(24887) at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/schedule.js:173:10)
        javascript.0	2020-12-04 14:41:00.013	error	(24887) at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1291:34)
        javascript.0	2020-12-04 14:41:00.013	error	(24887) at Object.<anonymous> (script.js.tests.Pittini_iobroker-Timer:608:13)
        javascript.0	2020-12-04 14:41:00.012	error	(24887) at DoAction (script.js.tests.Pittini_iobroker-Timer:676:48)
        javascript.0	2020-12-04 14:41:00.012	error	(24887) at Meldung (script.js.tests.Pittini_iobroker-Timer:111:13)
        javascript.0	2020-12-04 14:41:00.012	error	(24887) Error in callback: ReferenceError: WriteEventLog is not defined
        
        1. Sieht bei mir die Zeiteingabe komisch aus. Da hat er irgendwelche Stylings nicht genutzt.
          Screenshot 2020-12-04 144616.jpg
        qqolli P 2 Replies Last reply Reply Quote 0
        • qqolli
          qqolli @FuXXz2 last edited by

          @FuXXz2

          Hallo,

          bei mir sieht/sah es auch immer so aus. Habe es aber nie richtig "ordentlich" hinbekommen. Falls Du eine Lösung findest, wäre ich auch dankbar dafür wenn Du sie teilen würdest 🙂

          f1f6c52a-c725-4a02-b3b4-8ca6278569b4-image.png

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

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

            Mein test Timer funktioniert zwar, aber ich bekomme folgende Einträge ins log, bei jedem Schaltvorgang:

            Na, steht doch da was der Fehler ist. Stell mal UseEventLog in den Einstellungen auf false wie auch sowohl in der Anleitung als auch im Skript selber ausdrücklich gefordert.

            Sieht bei mir die Zeiteingabe komisch aus. Da hat er irgendwelche Stylings nicht genutzt.

            Ja, ich kenn das Problem, wüsste aber nicht was ich dagegen machen sollte, is auch nicht bei jedem und bisher hab ich noch nicht rausgefunden was bei jenen wo es funktioniert anders wär. Evtl. kann euch der Entwickler vom MaterialDesign CSS/Skript da helfen, hab Ihr da schon mal nachgefragt?: https://forum.iobroker.net/topic/30363/projekt-mdcss-v2-material-design-css-version-2/634

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

              @Pittini Ich hatte den raw vom Datenpunkt noch vergessen. Hier ist er:

              {
                "common": {
                  "name": "SmartHome/Gosund4/cmnd/POWER",
                  "write": true,
                  "read": true,
                  "role": "state",
                  "desc": "mqtt client variable",
                  "type": "string",
                  "custom": {
                    "influxdb.0": {
                      "enabled": true,
                      "changesOnly": false,
                      "debounce": "",
                      "maxLength": 10,
                      "retention": "31536000",
                      "changesRelogInterval": 0,
                      "changesMinDelta": "",
                      "storageType": "String",
                      "aliasId": ""
                    }
                  }
                },
                "native": {
                  "topic": "SmartHome/Gosund4/cmnd/POWER"
                },
                "type": "state",
                "from": "system.adapter.influxdb.0",
                "user": "system.user.admin",
                "ts": 1606836913713,
                "_id": "mqtt.0.SmartHome.Gosund4.cmnd.POWER",
                "acl": {
                  "object": 1636,
                  "state": 1636,
                  "owner": "system.user.admin",
                  "ownerGroup": "system.group.administrator"
                }
              }
              

              LG Rainer

              P 1 Reply Last reply Reply Quote 0
              • Q
                quorle last edited by

                Servus @Pittini ich hab nun dein Timerscript einmal eingebunden. Hätte aber dazu noch eine Frage, kann man mit diesem Script einen Intervall machen. Sprich jeweils für eine bestimmte Zeit einschalten und dann wieder für eine bestimmte Zeit ausschalten. Und dies sollte sich dann immer widerholen.

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

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

                  Servus @Pittini ich hab nun dein Timerscript einmal eingebunden. Hätte aber dazu noch eine Frage, kann man mit diesem Script einen Intervall machen. Sprich jeweils für eine bestimmte Zeit einschalten und dann wieder für eine bestimmte Zeit ausschalten. Und dies sollte sich dann immer widerholen.

                  Naja, für nen reinen Intervall brauchst kein Timerskript, dasn 4 Zeiler. Und nein, ist nicht drin oder vorgesehen.

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

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

                    Ich hatte den raw vom Datenpunkt noch vergessen. Hier ist er:

                    Ok, ich seh zwei Probleme. Zum einen ist der Power true/false kein Boolean Datenpunkt und zum anderen der channel kein echter channel. Erstell mal ein kleines Skript mit diesem Einzeiler, lass es einmal laufen und starte dann das Timerskript nochmal und gugg was der Fehler macht.

                    setObject("mqtt.0.SmartHome.Gosund4.cmnd", { type: 'channel', common: { name: "" }, native: {} }); //Channel machen
                    
                    

                    Bleibt der Fehler gleich, versuch in den Timereinstellungen nicht die Option Anschalten oder Ausschalten zu verwenden, sondern versuchs mal mit "Wert setzen" und als Wert mal true oder false zu verwenden.

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

                      @Pittini Ich bin jetzt ein Stück weiter. Dein Fix-Script hat den Channel angelegt und das Timerscript kann das Device anlegen und schalten.
                      Gosund_4.png
                      Mit den eingebauten Funktionen Einschalten und Ausschalten klappt es, obwohl sich ioBroker dann beschwert, dass er hierfür einen String erwartet, aber ein boolean bekommt.

                      You are assigning a boolean to the state "mqtt.0.SmartHome.Gosund4.cmnd.POWER" which expects a string. Please fix your code to use a string or change the state type to boolean. This warning might become an error in future versions.
                      

                      Das senden des Wertes "true" hat den gleichen Effekt: Schalten ja aber mit gleicher Warnung.
                      Kann ich mit leben bis halt "in future versions". Danke für die professionelle Hilfe - hätte ich alleine nicht hinbekommen.
                      LG Rainer

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

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

                        Das senden des Wertes "true" hat den gleichen Effekt: Schalten ja aber mit gleicher Warnung.

                        Ja, das ist was ich oben schon schrieb, der mqtt Adapter will nen String obwohls eigentlich ja nen bool ist, deswegen das gemaule. Werd mal überlegen wie ich auf den Sonderfall reagier. Schreib am besten ein Issue auf Git damits nicht untergeht und ichs nicht vergess.

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

                          @Pittini gemacht:
                          Nochmals Danke fürs Script und die Hilfe.

                          LG Rainer

                          D 1 Reply Last reply Reply Quote 0
                          • gelberlemmy
                            gelberlemmy @Rene55 last edited by

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

                            @Pittini
                            Hier der Screenshot rund um den Gosund:!
                            Gosund4.png

                            Warum die Gosund Steckdosen mit dem MQTT Adapter. Installiere doch den Sonoff Adapter. Dann hast Du keine Sorgen. Wunderbare Werte wie man Sie gleich nutzen kann. Die Steckdosen werden ja mit Tasmota gleich in dem Sonoff Adapter gefunden. Da ist der MQTT Adapter viel zu komplex...

                            1 Reply Last reply Reply Quote 0
                            • D
                              DirkS @Rene55 last edited by DirkS

                              Ja, vielen Dank für den Hinweis bzgl. der Channel. Dies hatte ich nun korrigiert. Nun erhalte ich ein anderen Fehler. Bin mir nicht sicher, ob dies mit dem letzten Update des JS Script Adapter vielleicht zusammenhängt?
                              Es gibt noch einen zweiten Fehler, der im Zusammenhang mit createStates steht. Der ist in Zeile 260.

                              51174b33-8626-4a79-8e50-4139eafbd7b2-grafik.png

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

                                @gelberlemmy
                                Danke für den Hinweis. Den Adapter kannte ich noch gar nicht und habe ihn gleich ausprobiert.
                                Schalten kann ich ihn damit, aber ich bekommen keine Anzeige der Energiedaten. Muss ich da was besonderes einstellen?
                                LG Rainer

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

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

                                  Ja, vielen Dank für den Hinweis bzgl. der Channel. Dies hatte ich nun korrigiert. Nun erhalte ich ein anderen Fehler. Bin mir nicht sicher, ob dies mit dem letzten Update des JS Script Adapter vielleicht zusammenhängt?
                                  Es gibt noch einen zweiten Fehler, der im Zusammenhang mit createStates steht. Der ist in Zeile 260.

                                  51174b33-8626-4a79-8e50-4139eafbd7b2-grafik.png

                                  Ein Fehler ist erst dann ein Fehler wenn er rote Einträge im Log erzeugt. Nur weil die Syntaxprüfung mault is das noch lang kein Fehler, kannste ignorieren.

                                  D 1 Reply Last reply Reply Quote 0
                                  • D
                                    DirkS @Pittini last edited by

                                    @Pittini
                                    Da fehlte dann wohl der wichtigere Teil:
                                    5489b686-a116-438f-b9be-aa2b5cf6a1f8-grafik.png

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

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

                                      Da fehlte dann wohl der wichtigere Teil:

                                      DAS ist ein Fehler, ja. Aber die Ursache ist trotzdem nicht in dem unterkringelten Teil.
                                      Wie der Fehler aussieht.....vermute ich jetzt mal...das Du entweder die js Instanz nach der Änderung an den Aufzählungen nicht neu gestartet hast, oder irgendwo ein leeres Feld als TimerTarget definiert hast.

                                      Zeig doch mal ein komplettes startlog vom Skript und nen Screenshot von nem Datenpunkt wo die Funktion TimerTarget gesetzt ist.

                                      D 1 Reply Last reply Reply Quote 0
                                      • D
                                        DirkS @Pittini last edited by DirkS

                                        @Pittini
                                        Hier der Log vom Starten des Skripts. Ich hatte vorher einmal die Einträge aus javascript.0.Timer. gelöscht.


                                        javascript.0 2020-12-08 13:53:48.779 error (14747) at processImmediate (timers.js:658:5)
                                        javascript.0 2020-12-08 13:53:48.779 error (14747) at tryOnImmediate (timers.js:676:5)
                                        javascript.0 2020-12-08 13:53:48.779 error (14747) at runCallback (timers.js:705:18)
                                        javascript.0 2020-12-08 13:53:48.778 error (14747) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37)
                                        javascript.0 2020-12-08 13:53:48.778 error (14747) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:472:25)
                                        javascript.0 2020-12-08 13:53:48.778 error (14747) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1070:38)
                                        javascript.0 2020-12-08 13:53:48.778 error (14747) at Object.<anonymous> (script.js.TimerSwitch:1099:130)
                                        javascript.0 2020-12-08 13:53:48.778 error (14747) at DetermineNextActiveAstroDay (script.js.TimerSwitch:520:32)
                                        javascript.0 2020-12-08 13:53:48.777 error (14747) at CheckTodayAstroIsOver (script.js.TimerSwitch:630:21)
                                        javascript.0 2020-12-08 13:53:48.777 error (14747) at getAstroDate (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1324:65)
                                        javascript.0 2020-12-08 13:53:48.777 error (14747) Error in callback: TypeError: Cannot read property 'toLowerCase' of undefined
                                        javascript.0 2020-12-08 13:53:48.771 warn (14747) at processImmediate (timers.js:658:5)
                                        javascript.0 2020-12-08 13:53:48.771 warn (14747) at tryOnImmediate (timers.js:676:5)
                                        javascript.0 2020-12-08 13:53:48.771 warn (14747) at runCallback (timers.js:705:18)
                                        javascript.0 2020-12-08 13:53:48.771 warn (14747) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37)
                                        javascript.0 2020-12-08 13:53:48.770 warn (14747) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:472:25)
                                        javascript.0 2020-12-08 13:53:48.770 warn (14747) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1070:38)
                                        javascript.0 2020-12-08 13:53:48.770 warn (14747) at Object.<anonymous> (script.js.TimerSwitch:1099:84)
                                        javascript.0 2020-12-08 13:53:48.769 warn (14747) getState "javascript.0.Timer.Template.TimerChoice" not found (3)
                                        javascript.0 2020-12-08 13:53:48.769 warn (14747) at processImmediate (timers.js:658:5)
                                        javascript.0 2020-12-08 13:53:48.769 warn (14747) at tryOnImmediate (timers.js:676:5)
                                        javascript.0 2020-12-08 13:53:48.769 warn (14747) at runCallback (timers.js:705:18)
                                        javascript.0 2020-12-08 13:53:48.768 warn (14747) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37)
                                        javascript.0 2020-12-08 13:53:48.768 warn (14747) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:472:25)
                                        javascript.0 2020-12-08 13:53:48.768 warn (14747) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1070:38)
                                        javascript.0 2020-12-08 13:53:48.768 warn (14747) at Object.<anonymous> (script.js.TimerSwitch:1097:27)
                                        javascript.0 2020-12-08 13:53:48.764 warn (14747) getState "javascript.0.Timer.Template.TimerChoice" not found (3)
                                        javascript.0 2020-12-08 13:53:48.746 info (14747) script.js.TimerSwitch: Names are: G_Licht,K_Licht,,HWR_Zirkulationspumpe
                                        javascript.0 2020-12-08 13:53:48.746 info (14747) script.js.TimerSwitch: 4 Targets found - Targets are: zigbee.1.XXXXXXfffe3668fb.state,zigbee.1.XXXXXXXX.state,mqtt-client.0.cmnd.FHEM.IT_V3_2590a6c0.state,zigbee.1.XXXXXXXXX.st
                                        javascript.0 2020-12-08 13:53:48.745 info (14747) script.js.TimerSwitch: GetParentId(Targets[y])=zigbee.1.XXXXXXXX
                                        javascript.0 2020-12-08 13:53:48.745 info (14747) script.js.TimerSwitch: GetParentId(Targets[y])=mqtt-client.0.cmnd.FHEM.IT_V3_2590a6c0
                                        javascript.0 2020-12-08 13:53:48.744 info (14747) script.js.TimerSwitch: GetParentId(Targets[y])=zigbee.1.XXXXXXXXXX
                                        javascript.0 2020-12-08 13:53:48.741 info (14747) script.js.TimerSwitch: GetParentId(Targets[y])=zigbee.1.XXXXXXXXX
                                        javascript.0 2020-12-08 13:53:48.741 warn (14747) at process._tickCallback (internal/process/next_tick.js:68:7)
                                        javascript.0 2020-12-08 13:53:48.740 warn (14747) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49)
                                        javascript.0 2020-12-08 13:53:48.740 warn (14747) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
                                        javascript.0 2020-12-08 13:53:48.740 warn (14747) at client.set.err (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:547:55)
                                        javascript.0 2020-12-08 13:53:48.740 warn (14747) at script.js.TimerSwitch:211:17
                                        javascript.0 2020-12-08 13:53:48.739 warn (14747) at main (script.js.TimerSwitch:460:5)
                                        javascript.0 2020-12-08 13:53:48.739 warn (14747) at init (script.js.TimerSwitch:421:15)
                                        javascript.0 2020-12-08 13:53:48.738 warn (14747) getState "javascript.0.Timer.MsgMute" not found (3)
                                        javascript.0 2020-12-08 13:53:48.738 warn (14747) at process._tickCallback (internal/process/next_tick.js:68:7)
                                        javascript.0 2020-12-08 13:53:48.738 warn (14747) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49)
                                        javascript.0 2020-12-08 13:53:48.738 warn (14747) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
                                        javascript.0 2020-12-08 13:53:48.737 warn (14747) at client.set.err (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:547:55)
                                        javascript.0 2020-12-08 13:53:48.737 warn (14747) at script.js.TimerSwitch:211:17
                                        javascript.0 2020-12-08 13:53:48.737 warn (14747) at main (script.js.TimerSwitch:460:5)
                                        javascript.0 2020-12-08 13:53:48.736 warn (14747) at init (script.js.TimerSwitch:419:18)
                                        javascript.0 2020-12-08 13:53:48.731 warn (14747) getState "javascript.0.Timer.TimerCount" not found (3)
                                        javascript.0 2020-12-08 13:53:47.058 info (14747) script.js.TimerSwitch: registered 0 subscriptions and 0 schedules
                                        javascript.0 2020-12-08 13:53:47.044 info (14747) script.js.TimerSwitch: Starting TimerSkript V2.1.8
                                        javascript.0 2020-12-08 13:53:46.922 info (14747) Start javascript script.js.TimerSwitch
                                        javascript.0 2020-12-08 13:53:42.692 info (14747) Stop script script.js.TimerSwitch
                                        javascript.0 2020-12-08 13:48:36.652 info (14747) received all states
                                        javascript.0 2020-12-08 13:48:35.099 info (14747) received all objects
                                        javascript.0 2020-12-08 13:48:33.782 info (14747) requesting all objects
                                        javascript.0 2020-12-08 13:48:33.779 info (14747) requesting all states
                                        javascript.0 2020-12-08 13:48:33.641 info (14747) starting. Version 4.10.8 in /opt/iobroker/node_modules/iobroker.javascript, node: v10.19.0, js-controller: 3.1.6

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

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

                                          Ich hatte vorher einmal die Einträge aus javascript.0.Timer. gelöscht.

                                          Das Skript findet etliche Datenpunkte nicht, hast Du da was manuell aus der internen Struktur gelöscht?

                                          javascript.0 2020-12-08 13:53:48.731 warn (14747) getState "javascript.0.Timer.TimerCount" not found (3)
                                          javascript.0 2020-12-08 13:53:48.738 warn (14747) getState "javascript.0.Timer.MsgMute" not found (3)
                                          javascript.0 2020-12-08 13:53:48.764 warn (14747) getState "javascript.0.Timer.Template.TimerChoice" not found (3)

                                          Lösch mal den kompletten Timerchannel , der wird dann beim nächsten Skriptstart wieder neu und richtig angelegt. Andere Probleme seh ich eigentlich nicht, Deine 4 Targets wurden erkannt. Grundsätzlich NIE einfach manuell was aus der Struktur löschen, nur über die entsprechende Löschfunktion im Skript bzw. im Vis.

                                          D 1 Reply Last reply Reply Quote 0
                                          • D
                                            DirkS @Pittini last edited by

                                            @Pittini
                                            Seltsam, hatte nichts anderes vorher auch gemacht. Also Timer Channel gelöscht und JS Adapter neu gestartet. Nun sind keine Fehler mehr im Log vorhanden.
                                            Danke für die Hilfe über die Straße. 😊

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            938
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

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