Hallo Zusammen,
ich habe über die globalen Funktionen eine JavaScript Funktion geschrieben, mittels der man prüfen kann, ob die aktuelle Zeit innerhalb eines Zeitfensters liegt. In meinem Fall verwende ich das beispielsweise beim Ausschalten des Fernsehers. Geschieht dies zwischen 21:30 Uhr und 5:00 Uhr gehe ich davon aus, dass ich schlafen gehe. Mit dieser Funktion können die Zeiträume auch tagesübergreifend gemacht werden.
Funktionsaufruf
on({
id: "onkyo.0.system-power"/*system-power*/,
change: "ne",
val: "standby",
logic: "and"
}, function (obj) {
if(isTimeInRange('21:30:00', '05:00:00')) {
// Programm, wenn ich schlafen gehe (Licht ein und zeitverzögert aus. Schlafzimmerlicht gedimmt einschalten, Zirkulationsleitung zeitversetzt ausschalten.
}
Funktion (am besten als globales Script einbinden, damit es in jedem Script genutzt werden kann)
function currentDate() {
var d = new Date();
return new Date(d.getFullYear(), d.getMonth(), d.getDate());
}
function addTime(strTime) {
var time = strTime.split(':');
var d = currentDate();
d.setHours(time[0]);
d.setMinutes(time[1]);
d.setSeconds(time[2]);
return d;
}
function isTimeInRange(strLower, strUpper) {
var now = new Date();
var lower = addTime(strLower);
var upper = addTime(strUpper);
var inRange = false;
if (upper > lower) {
// opens and closes in same day
inRange = (now >= lower && now <= upper) ? true : false;
} else {
// closes in the following day
inRange = (now >= upper && now <= lower) ? false : true;
}
return inRange;
}