NEWS
Zeitsteuerung über Variable
-
Hallo zusammen,
ich möchte mit einem Script eine Ein- und Ausschaltzeit aus je einer Variable lesen und damit das Ein- und Ausschalten unserer Aussenbeleuchtung steuern.
Ich mach das über eine Variable, um später die Ein- und Ausschaltzeiten über VIS einstellen zu können.
Hier das Script:
log("ZEITSTEUERUNG AUSSENBEREICH: Script gestartet", "info"); on(/^javascript.4.Einschaltzeit/, function(obj) { log("ZEITSTEUERUNG AUSSENBEREICH: Einschalt-Sequenz gestartet", "info"); var StrEinschaltzeit = getState("javascript.4.Einschaltzeit").val; var timeHourOn = StrEinschaltzeit.substring(0, 2); var timeMinuteOn = StrEinschaltzeit.substring(3, 5); schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () { setState('hm-rpc.0.XXXXXXXXXX.1.STATE', true); setState('hm-rpc.0.YYYYYYYYYY.3.STATE', true); setState('hm-rpc.0.ZZZZZZZZZZ.1.STATE', true); DateObject = new Date(); Hours = DateObject.getHours(); Minutes = DateObject.getMinutes(); sendTo("pushover.0", {message: 'Es ist ' + Hours + ':' + Minutes + ' Uhr, Aussenbeleuchtung Eingang eingeschaltet', title: 'Information - Zu Hause', priority: 0}); log("ZEITSTEUERUNG AUSSENBEREICH: Es ist " + Hours + ":" + Minutes + " Uhr, Aussenbeleuchtung Eingang eingeschaltet", "info"); }); });
Wenn ich nun aber javascript.4.Einschaltzeit und javascript.4.Ausschaltzeit auf jeweils eine Uhrzeit stelle, passiert leider nichts.
In den Zuständen sind javascript.4.Einschaltzeit und javascript.4.Ausschaltzeit mit ihren korrekten Werten zu sehen.
Habe ich hier einen Denkfehler???
-
Da Du die komplette ID "javascript.4.Einschaltzeit" zum Triggern verwendest, solltest Du nicht RegExp verwenden. Scheduler sollten auch wieder gelöscht werden. Um von führender "0" unabhängig zu sein, macht sich eine Array-Operation besser.
var ontime = null; on('javascript.4.Einschaltzeit', function(dp) { log("ZEITSTEUERUNG AUSSENBEREICH: Einschalt-Sequenz gestartet", "info"); var Einschaltzeit = dp.state.val.split(':'); // Array: [h,m] var timeHourOn = Einschaltzeit[0]; var timeMinuteOn = Einschaltzeit[1]; if (ontime) clearSchedule(ontime); ontime = schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () { setState('hm-rpc.0.XXXXXXXXXX.1.STATE', true); setState('hm-rpc.0.YYYYYYYYYY.3.STATE', true); setState('hm-rpc.0.ZZZZZZZZZZ.1.STATE', true); DateObject = new Date(); Hours = DateObject.getHours(); Minutes = DateObject.getMinutes(); sendTo("pushover.0", {message: 'Es ist ' + Hours + ':' + Minutes + ' Uhr, Aussenbeleuchtung Eingang eingeschaltet', title: 'Information - Zu Hause', priority: 0}); log("ZEITSTEUERUNG AUSSENBEREICH: Es ist " + Hours + ":" + Minutes + " Uhr, Aussenbeleuchtung Eingang eingeschaltet", "info"); }); });
-
Jawoll, funktioniert perfekt!
Vielen Dank!
-
Was mache ich falsch. Funktioniert irgendwie nicht. Was muss ich beim Anlegen der variablen beachten?
-
Was hast du denn gemacht? Gibt es Fehlermeldungen? Dann kann man vllt besser helfen
-
Da Du die komplette ID "javascript.4.Einschaltzeit" zum Triggern verwendest, solltest Du nicht RegExp verwenden. Scheduler sollten auch wieder gelöscht werden. Um von führender "0" unabhängig zu sein, macht sich eine Array-Operation besser.
var ontime = null; on('javascript.4.Einschaltzeit', function(dp) { log("ZEITSTEUERUNG AUSSENBEREICH: Einschalt-Sequenz gestartet", "info"); var Einschaltzeit = dp.state.val.split(':'); // Array: [h,m] var timeHourOn = Einschaltzeit[0]; var timeMinuteOn = Einschaltzeit[1]; if (ontime) clearSchedule(ontime); ontime = schedule(timeMinuteOn + ' ' + timeHourOn + ' * * *', function () { setState('hm-rpc.0.XXXXXXXXXX.1.STATE', true); setState('hm-rpc.0.YYYYYYYYYY.3.STATE', true); setState('hm-rpc.0.ZZZZZZZZZZ.1.STATE', true); DateObject = new Date(); Hours = DateObject.getHours(); Minutes = DateObject.getMinutes(); sendTo("pushover.0", {message: 'Es ist ' + Hours + ':' + Minutes + ' Uhr, Aussenbeleuchtung Eingang eingeschaltet', title: 'Information - Zu Hause', priority: 0}); log("ZEITSTEUERUNG AUSSENBEREICH: Es ist " + Hours + ":" + Minutes + " Uhr, Aussenbeleuchtung Eingang eingeschaltet", "info"); }); }); ```` `
Einschalten vom Licht funktioniert aber wie schaltet sich das Licht wieder aus?
Wofür sind diese beiden Zeilen bzw Variablen?
var timeHourOn = Einschaltzeit[0];
var timeMinuteOn = Einschaltzeit[1];
-
Fürs Ausschalten brauchts ein gleichlautendes 2. Skript bzw. eine Erweiterung auf die Ausschaltzeit.
Dieser Teil des Scriptes regiert lediglich auf die Einschaltzeit.
Und ganau dafür sind auch die beiden Zeilen.
Die Einschaltzeit (z. B. 17:15) wird in "timeHourOn" (17) und "timeMinuteOn" (15) zerlegt.
Damit wird dann der schedule zusammengesetzt
-
Oh vielen Dank für die rasche Antwort.