NEWS
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; }
-
schönes Beispiel. Danke!
-
Super, kann ich gut gebrauchen. Vielen Dank.
Gruß
Pix
Gesendet von meinem iPhone mit Tapatalk
-
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 Stephan,
schau mal ins Verzeichnis /opt/iobroker/logs.
Da liegen die Log-Dateien der letzten sieben Tage.
-
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.php
Egal, hier der Thread:
https://forum.iobroker.net/topic/2289/frage-istimeinrange-umschreiben-auf-datum/9 -
@night2k5 vielen Dank!
Das sind halt immer die Kosten einer Forumsumstellung. Bei mir ist auch firefox nicht mehr wirklich nutzbar. Die Güterabwägung bei der Kosten-Nutzenanalyse fällt halt nicht überall gleich aus.