Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Javascript + Schedule funktioniert nicht

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Javascript + Schedule funktioniert nicht

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

      Ich habe einen virtuellen Schalter (...Funksteckdose_4) angelegt welcher mittels Script meine Funksteckdosen schaltet:

      on ('javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_4', function (obj) 
      {
      current_state4 = getState('javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_4').val;
      
      if (current_state4 == "1")
          setTimeout(function() { exec('/opt/433Utils/RPi_utils/codesend 1131857'); }, 2000);
      else
          setTimeout(function(){ exec('/opt/433Utils/RPi_utils/codesend 1131860'); }, 2000);
      });
      

      dies funktioniert ohne Probleme. Jetzt wollte ich diese mittels Zeitprogramm ein-ausschalten:

      //Zeitprogramm Morgens ein-----------------------------------------------------------------------------------------Zeitprogramm Morgens ein
      schedule('0 6 * * *', function () 
      {
          setState('javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_3', 1); //Weihnachten EG
          setState('javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_4', 1); //Weihnachten OG
      }    
      );
      
      //Zeitprogramm Morgens aus-----------------------------------------------------------------------------------------Zeitprogramm Morgens aus
      schedule('0 8 * * *', function () 
      {
          setState('javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_3', 0); //Weihnachten EG
          setState('javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_4', 0); //Weihnachten OG
      }
      );
      

      in den Objekten und auch im VIS werden die virtuellen Schalter von 0 auf 1 gesetzt. Soweit OK, aber die Steckdosen werden nicht geschalten.
      Hat jemand eine Idee warum? Das Zeitprogramm triggert und auch das Script für die Steckdose funktioniert bei manuellem Schalten.

      J.A.R.V.I.S. 1 Reply Last reply Reply Quote 0
      • J.A.R.V.I.S.
        J.A.R.V.I.S. Developer @Johannes Bauerstatter last edited by

        @Johannes-Bauerstatter was für ein Datentyp haben die DPs?

        Johannes Bauerstatter 1 Reply Last reply Reply Quote 0
        • Johannes Bauerstatter
          Johannes Bauerstatter @J.A.R.V.I.S. last edited by

          @J-A-R-V-I-S Anbei ein Bild der Datenpunkte:
          3463457b-de9e-43ff-a1b1-14b362bdbeec-image.png

          so schaut es im VIS aus:
          c032b1fb-ebbd-4e92-a9b3-9939412b992b-image.png

          Einstellung im VIS:
          b5882eae-fc2a-4f6a-be13-d4f14a416677-image.png

          Die Schalter werden als geschaltet angezeigt, jedoch werden die Steckdosen nicht geschalten.

          1 Reply Last reply Reply Quote 0
          • H
            homecineplexx last edited by

            hast du nicht das change: any/ne vergessen?

            Johannes Bauerstatter 1 Reply Last reply Reply Quote 0
            • Johannes Bauerstatter
              Johannes Bauerstatter @homecineplexx last edited by

              @homecineplexx Du meinst im Script für das Schalten der Steckdosen oder wird es im Schedule Script benötigt? Das Steckdosen Script schaltet manuell ja ohne Fehler, daher dachte ich, ich kann es weglassen...

              H 1 Reply Last reply Reply Quote 0
              • H
                homecineplexx last edited by

                @Johannes-Bauerstatter
                ausserdem mußt du nicht

                current_state4 = getState('javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_4').val;
                
                current_state4 = obj.state.val;
                
                1 Reply Last reply Reply Quote 0
                • H
                  homecineplexx @Johannes Bauerstatter last edited by

                  @Johannes-Bauerstatter said in Javascript + Schedule funktioniert nicht:

                  @homecineplexx Du meinst im Script für das Schalten der Steckdosen oder wird es im Schedule Script benötigt? Das Steckdosen Script schaltet manuell ja ohne Fehler, daher dachte ich, ich kann es weglassen...

                  Bei mir sieht das immer so aus

                  on({id: 'id', change: "ne"}, function (obj) {
                      var value = obj.state.val;
                    
                  });
                  
                  Johannes Bauerstatter 2 Replies Last reply Reply Quote 0
                  • Johannes Bauerstatter
                    Johannes Bauerstatter @homecineplexx last edited by

                    @homecineplexx OK. Danke. Werd heut Abend mal umstellen und testen.

                    1 Reply Last reply Reply Quote 0
                    • Johannes Bauerstatter
                      Johannes Bauerstatter @homecineplexx last edited by

                      @homecineplexx

                      Code Script 1 schaut jetzt wie folgt aus:

                      //Weihnachten EG---------------------------------------------------------------------------------------------------------------------------
                      on ({id:'javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_3', change: "ne"}, function (obj3)
                      {
                      var value3 = obj3.state.val;
                      if (value3 == "1")
                          setTimeout(function() { exec('/opt/433Utils/RPi_utils/codesend 1312081'); }, 1000);
                      else
                          setTimeout(function(){ exec('/opt/433Utils/RPi_utils/codesend 1312084'); }, 1000);
                      });
                      //Weihnachten OG---------------------------------------------------------------------------------------------------------------------------
                      on ({id:'javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_4', change: "ne"}, function (obj4)
                      {
                      var value4 = obj4.state.val;
                      if (value4 == "1")
                          setTimeout(function() { exec('/opt/433Utils/RPi_utils/codesend 1131857'); }, 1000);
                      else
                          setTimeout(function(){ exec('/opt/433Utils/RPi_utils/codesend 1131860'); }, 1000);
                      });
                      

                      Test-Script 2 zum schalten von Script 1:

                      schedule('15 15 * * *', function () //1700
                      {
                          setState('javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_3', "1"); //Weihnachten EG
                          setState('javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_4', "1"); //Weihnachten OG
                      }
                      );
                      

                      Manuell schalten geht noch immer normal. Test-Script2 wird getriggert und schaltet in den Objekten und im Vis auf 1
                      8c0e1d39-318a-4388-bedf-7d185b936b8c-image.png

                      Leider werden die Steckdosen noch immer nicht geschalten. Folgend das Log zum Script:

                      javascript.0	2019-12-06 15:15:00.029	warn	(715) at Timer.processTimers (timers.js:223:10)
                      javascript.0	2019-12-06 15:15:00.029	warn	(715) at listOnTimeout (timers.js:263:5)
                      javascript.0	2019-12-06 15:15:00.028	warn	(715) at tryOnTimeout (timers.js:300:5)
                      javascript.0	2019-12-06 15:15:00.028	warn	(715) at ontimeout (timers.js:436:11)
                      javascript.0	2019-12-06 15:15:00.027	warn	(715) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7)
                      javascript.0	2019-12-06 15:15:00.027	warn	(715) at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11
                      javascript.0	2019-12-06 15:15:00.026	warn	(715) at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10)
                      javascript.0	2019-12-06 15:15:00.023	warn	(715) at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1181:34)
                      javascript.0	2019-12-06 15:15:00.022	warn	(715) at Object.<anonymous> (script.js.Zeitprogramme.Skript_1:4:5)
                      javascript.0	2019-12-06 15:15:00.022	warn	(715) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1258:20)
                      javascript.0	2019-12-06 15:15:00.020	warn	(715) Wrong type of javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_4: "string". Please fix, while deprecated and will not work in next versions.
                      javascript.0	2019-12-06 15:15:00.020	warn	(715) at Timer.processTimers (timers.js:223:10)
                      javascript.0	2019-12-06 15:15:00.019	warn	(715) at listOnTimeout (timers.js:263:5)
                      javascript.0	2019-12-06 15:15:00.019	warn	(715) at tryOnTimeout (timers.js:300:5)
                      javascript.0	2019-12-06 15:15:00.018	warn	(715) at ontimeout (timers.js:436:11)
                      javascript.0	2019-12-06 15:15:00.018	warn	(715) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7)
                      javascript.0	2019-12-06 15:15:00.018	warn	(715) at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11
                      javascript.0	2019-12-06 15:15:00.017	warn	(715) at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10)
                      javascript.0	2019-12-06 15:15:00.017	warn	(715) at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1181:34)
                      javascript.0	2019-12-06 15:15:00.016	warn	(715) at Object.<anonymous> (script.js.Zeitprogramme.Skript_1:3:5)
                      javascript.0	2019-12-06 15:15:00.016	warn	(715) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1258:20)
                      javascript.0	2019-12-06 15:15:00.014	warn	(715) Wrong type of javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_3: "string". Please fix, while deprecated and will not work in next versions.
                      
                      Homoran 1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @Johannes Bauerstatter last edited by

                        @Johannes-Bauerstatter
                        warum nutzst du "script.enabled" zum schalten?
                        Das soll man nicht machen.

                        Ein js-Script wird nicht gestoppt. Das arbeitet ohne Unterbrechung dauerhaft ereignisorientiert und wartet auf eine Aktion.

                        1 Reply Last reply Reply Quote 0
                        • J.A.R.V.I.S.
                          J.A.R.V.I.S. Developer last edited by

                          @Johannes-Bauerstatter sagte in Javascript + Schedule funktioniert nicht:

                          Wrong type of javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_4: "string"

                          Du weist dem DP eine String ("1") zu. Der Datenpunkt erwartet aber etwas anderes. Interger? Boolean? Bitte ändern.

                          Johannes Bauerstatter 1 Reply Last reply Reply Quote 0
                          • dbweb
                            dbweb last edited by

                            Datenpunkt unter "scriptEnable" ist irgendwie der falsche ort.
                            javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_4

                            macht besser javascript.0.Funksteckdosen.Schalter_Funksteckdose_4

                            oder bei controller >2 den neuen Pfad user.0.xxx

                            1 Reply Last reply Reply Quote 0
                            • Johannes Bauerstatter
                              Johannes Bauerstatter @J.A.R.V.I.S. last edited by

                              @J-A-R-V-I-S Danke. Ja der DP war ein Boolean. Darauf wär ich nicht gekommen, da ich im VIS 1 oder 0 zugeweist habe und es trotzdem funktioniert hat. Mit True and False funktioniert jetzt alles.

                              Vielen Dank für die zahlreiche Hilfe.

                              Johannes Bauerstatter 1 Reply Last reply Reply Quote 0
                              • Johannes Bauerstatter
                                Johannes Bauerstatter @Johannes Bauerstatter last edited by Johannes Bauerstatter

                                Ich dachte es sei gelöst, aber leider funktioniert es nur sporadisch.

                                Habe jetzt mal versucht zu finden, woran es liegen kann und anscheinend wird folgendes nur sporadisch ausgeführt:

                                schedule('23 21 * * *', function () 
                                {
                                     setTimeout(function() { exec('/opt/433Utils/RPi_utils/codesend 1312084'); }, 2000);
                                     setTimeout(function() { exec('/opt/433Utils/RPi_utils/codesend 1131860'); }, 2000);
                                    
                                });
                                

                                Ich habe verschiedene Zeiten ausprobiert und manchmal schaltet und manchmal nicht.
                                Im Verbose Modus wird mir die Zeile im LOG angezeigt, aber es scheint als würde das Kommando nicht immer sauber ausgeführt. Hat wer eine Idee was ich noch machen könnte?

                                Wenn ich im VIS manuell schalte funktioniert es immer. Egal wie oft ich klicke.

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                785
                                Online

                                31.8k
                                Users

                                80.0k
                                Topics

                                1.3m
                                Posts

                                5
                                14
                                931
                                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