NEWS
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...
-
@Johannes-Bauerstatter
ausserdem mußt du nichtcurrent_state4 = getState('javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_4').val;
current_state4 = obj.state.val;
-
@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; });
-
@homecineplexx OK. Danke. Werd heut Abend mal umstellen und testen.
-
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
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.
-
@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.
-
@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.
-
Datenpunkt unter "scriptEnable" ist irgendwie der falsche ort.
javascript.0.scriptEnabled.Funksteckdosen.Schalter_Funksteckdose_4macht besser javascript.0.Funksteckdosen.Schalter_Funksteckdose_4
oder bei controller >2 den neuen Pfad user.0.xxx
-
@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.
-
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.