NEWS
Funktion: Prüfen, ob innerhalb eines Zeitfensters
Funktion: Prüfen, ob innerhalb eines Zeitfensters
-
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; } -
Hallo ich habe ein problem mit dem script
habe das script Funktion als globales script angelegt
script.js.innerhalb_Zeitfenster_global und aktiviert
habe jetz ein neues script das die lichtscene bei einen bestimmten helligkeit und innnerhalb eines Zeitfenster einschalten soll aber es geht nicht
on('hm-rpc.0.LEQ1282876.1.BRIGHTNESS', function (obj) { if (obj.newState.val < 190 && isTimeInRange('13:00:00', '22:00:00')) setState('scene.0.lichter', true); if (obj.newState.val > 220) setState('scene.0.lichter', false); });was mache ich falsch Gruß Stephan
-
isTimeInRange('13:00:00', '22:00:00') habe ich gechekt. Geht.
Kannst du log einbauen?
on('hm-rpc.0.LEQ1282876.1.BRIGHTNESS', function (obj) { console.log('BRIGHTNESS: ' + obj.newState.val + ', time: ' + isTimeInRange('13:00:00', '22:00:00')); if (obj.newState.val < 190 && isTimeInRange('13:00:00', '22:00:00')) setState('scene.0.lichter', true); if (obj.newState.val > 220) setState('scene.0.lichter', false); }); -
Hallo Bluefox Fehler lag nicht am Script sondern am Bewegungsmelder
Der Helligkeitswert wird nur alle 6 Minuten aktuallisiert und aus den letzten 8 werten ein mittelwert gebildet
habe es eingestellt das der letze Wert genommen wird.
wie kann ich den gesammten log eigentlich ansehen wenn ich iobroker aufrufen wird nur der log ab den aufruf angezeigt?
Gruß Stephan
und vielen Dank für den wahnsinnigen Einsatz hier im Forum
-
Hallo,
auf http://forum.iobroker.org/viewtopic.php?f=21&t=2620&sid=05378781a10e917095e547ff02dcc4e1&sid=05378781a10e917095e547ff02dcc4e1#p23104 hin, habe ich auch mal genau nach Deinem Vorbild isDateInRange gebastelt.
Siehe hier:
http://forum.iobroker.org/viewtopic.php … 20&p=23136
Gruß
Pix
-
vielen Dank für das Skript, hat mir sehr geholfen.
Leider sind die Forenlinks von @pix einer Forenumstellung zum Opfer gefallen@klassisch Gerade konnte man noch das .org durch .de ersetzen und wurde zum neuen Thread weitergeleitet.
Jetzt funktioniert es nicht mehr mit derFehlermeldung .Cannot GET /viewtopic.phpEgal, hier der Thread:
https://forum.iobroker.net/topic/2289/frage-istimeinrange-umschreiben-auf-datum/9 -
@klassisch Gerade konnte man noch das .org durch .de ersetzen und wurde zum neuen Thread weitergeleitet.
Jetzt funktioniert es nicht mehr mit derFehlermeldung .Cannot GET /viewtopic.phpEgal, hier der Thread:
https://forum.iobroker.net/topic/2289/frage-istimeinrange-umschreiben-auf-datum/9