NEWS
[Gelöst] Zeitbereich als Trigger für On()
-
Hallo Zusammen,
erstmal muss ich sagen dass das ein super Forum ist. Ich versuche gerade in die Javascript-Programmierung einzusteigen und mir fehlt an der ein oder anderen Stelle noch etwas das Verständnis.
Ich wollte mittels Blockly ein Skript erstellen das nur getriggert wird wenn die Zeit zwischen zwei Zeiten liegt.

Bei der Code-Prüfung ist alles ok und wenn ich das Skript starte bekomme ich folgende Meldungen wenn die Zeit außerhalb des Zeitraumes ist
javascript.0 2017-04-13 21:15:08.605 info script.js.ontest_Blockly: registered 1 subscription and 0 schedules javascript.0 2017-04-13 21:15:08.605 error Error by subscription: empty ID defined. All states matched. javascript.0 2017-04-13 21:15:08.602 info Start javascript script.js.ontest_Blockly javascript.0 2017-04-13 21:15:08.578 error unsubscribe: invalid type of id - booleanWenn sie innerhalb liegt hätte ich die Ausgabe von "Test" im Log erwartet, aber es passiert nichts.
Kann das überhaupt funktionieren oder setzt On() zwingend eine Id voraus.
Gruß
Dolomiti
-
@fsjoke: Also war meine Vermutung mit der Id richtig.
@nobse: Aber der Zeitplan wird doch nur zu einem bestimmten wiederkehrend Zeitpunkt ausgeführt.
Vielleicht zur Erklärung folgendes:
Ziel des Ganzen soll sein dass in meinem Arbeitszimmer die Rollade runterfährt wenn ein Spiel gestartet wird. Dieses Skript funktioniert über Aufruf von Schedule() jede Minute auch soweit. Das ganze ist aber nur nötig wenn es hell draussen ist. Also wollte ich den Skriptteil innerhalb von Schedule() nur tagsüber ausführen lassen und jetzt hänge ich.
!
+ '%" '; if (x < Spieleliste.length-1) { Abfrage += 'or '; } } ! /* Prozesse vom PC abfragen und auswerten */ schedule("*/1 * * * *", function(){ exec("wmic -Uxxx%xxx //10.20.30.40 \'SELECT Name FROM win32_process WHERE " + Abfrage + "\'", function (error, stdout, stderr) { var Prozessliste = stdout.split('\n'); var status = false; var laufendesSpiel = "Keins"; for (x = 2; x < Prozessliste.length-1; x++) { for (y=0; y < Spieleliste.length; y++) { status = (Prozessliste[x].includes(Spieleliste[y])); if (status && getState("hm-rpc.0.xxxx.LEVEL").val >= '60') { setState("hm-rpc.0.xxx.LEVEL",30); laufendesSpiel = Spieleliste[y]; //log('laufendes Spiel: ' + laufendesSpiel); break; } } } }); }); ! -
Der Code bringt dich nicht weiter.
Ziehe bitte dann noch aus Funktionen das Javascript_Funktion rein und hier kannst du dann dein script einstellen.
function setAllCamOn() { var request = require("request"); var url_ein = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; request(url_ein); log("20.00 Uhr CAM alle Eingeschaltet"); } schedule("*/5 * * * *", function () { if (compareTime('20:00', null, ">", null)) { setAllCamOn(); } });So jetzt ist Ostern. Muss mich ab morgen um die Enkelkinder kümmern.
Gruß Norbert
