NEWS
[gelöst]: Nur in bestimmten Zeitbereichen on({id …}
-
Blöde Frage:
Ausgelöst durch ein Ereignis soll es starten … aber eben nur, wenn es in einem bestimmten Uhrzeit ist (8-18 Uhr).
Wie schränke ich das ein??? Habe da irgendwie keine Idee dazu ...
on({id: "hm-rpc.3.000xxxxxxxx.1.MOTION"}, function (obj) { //nur von 8-10 Uhr gewünscht - nicht immer. sendTo('telegram.0', 'Test'); // })PS:
Kann man auch mehrere on - Kommando als ODER angeben … oder muss ich jede einzeln kopieren (wenn nachfolgende Aktionen immer gleich sind).
-
Blöde Frage:
Ausgelöst durch ein Ereignis soll es starten … aber eben nur, wenn es in einem bestimmten Uhrzeit ist (8-18 Uhr).
Wie schränke ich das ein??? Habe da irgendwie keine Idee dazu ...
on({id: "hm-rpc.3.000xxxxxxxx.1.MOTION"}, function (obj) { //nur von 8-10 Uhr gewünscht - nicht immer. sendTo('telegram.0', 'Test'); // })PS:
Kann man auch mehrere on - Kommando als ODER angeben … oder muss ich jede einzeln kopieren (wenn nachfolgende Aktionen immer gleich sind). `
Hmm, mit ner IF abfangen ?
Probier mal:
on({id: "hm-rpc.3.000xxxxxxxx.1.MOTION"}, function (obj) { //nur von 8-10 Uhr gewünscht - nicht immer. if (compareTime('08:00', null, ">", null) && compareTime('10:00', null, "<", null)) { sendTo('telegram.0', 'Test');; } // })Diese frage verstehe ich net ;)
> Kann man auch mehrere on - Kommando als ODER angeben … oder muss ich jede einzeln kopieren (wenn nachfolgende Aktionen immer gleich sind). -
Hi,
oder so….
eine Funktion (eigentlich 3 - gehören aber zusammen ) für time in range. Gibt es auch für den DatumsCheck:
hier: http://www.iobroker.net/docu/?page_id=3591&lang=de
Aufruf z.B.
var zeit1von = "17:00:00"; // Uhrzeit von
var zeit1bis = "21:30:00"; //Uhrzeit bis
if(isTimeInRange(zeit1von , zeit1bis )) {
// Code ausführen wenn true
}
vG looxer
!
! //----------------------------------------------------------------------------------------------------- // 3 Funktionen zum Zeitrange check zur Prüfung ob die Schaltungszeiten erreicht sind // Autor ist Beatz - uebernommen aus: // viewtopic.php?f=21&t=1072&p=11167&hilit=isTimeInRange&sid=4dca8ea2c7f9337cdc73a1a9e4824a40#p11167 //----------------------------------------------------------------------------------------------------- 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; } ! 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; } ! -
Ich meinte, ob man mehrere Geräte mit && oder ODER auch verknüpfen kann … `
Nein, das geht nicht.Du kannst aber zB alle Geräte eines Gewerks abfragen:
http://forum.iobroker.net/viewtopic.php?f=21&t=1321
Grundsätzlich kannst du aber den Code, der ausgeführt werden soll, in eine Funktion packen.
function tueDies() { Befehle .... } on(id1, function(obj) { tueDies(); }); on(id2, function(obj) { tueDies(); }); on(id3, function(obj) { tueDies(); });Gruß
Pix
-
Ich meinte, ob man mehrere Geräte mit && oder ODER auch verknüpfen kann … `
Mittels http://forum.iobroker.net/viewtopic.php?f=21&t=2251&p=19529#p19529 ist es möglich.on(/^hm-rpc\.0\.(xxxxx&yyyyy)\.1\.MOTION$/, function (obj) { //Code }); -
Hallo,
ich bin auf der Suche nach dem TimeRange Skript… kann es hier im Forum nicht (mehr) finden
Leider führen beide Links von hier - sowohl für Zeitbereich wie auch Datumsbereich - versehentlich zum identischen Skript.
http://www.iobroker.net/docu/?page_id=3591&lang=de
Vielen Dank.
Gruß
Thomas
-
Hallo,
ich bin auf der Suche nach dem TimeRange Skript… kann es hier im Forum nicht (mehr) finden
Leider führen beide Links von hier - sowohl für Zeitbereich wie auch Datumsbereich - versehentlich zum identischen Skript.
http://www.iobroker.net/docu/?page_id=3591&lang=de
Vielen Dank.
Gruß
Thomas `
Time Range Script:
! // isTimeInRange
! 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;
! }
! // isTimeInRange ENDE
! createState('Sayit.Trigger', false, {
! name: 'Sayit-Ansage bei Bewegung steuern',
! type: 'boolean'
! });
! createState('Sayit.Zeitsteuerung', false, {
! name: 'Sayit-Ansage nur innerhalb Zeitfenster schalten',
! type: 'boolean'
! });
! var idBewegung = "hm-rpc.0.MEQ1849741.3.MOTION",
! idTrigger = 'Sayit.Trigger';
! on({id: idBewegung, val: true}, function (obj) {
! if ( isTimeInRange('06:00:00', '06:45:00') || isTimeInRange('07:00:00', '07:45:00') || isTimeInRange('8:30:00', '9:15:00')) setState(idTrigger, true); // Trigger auslösen
! });
! // Zurücksetzen vom Trigger
! schedule("46 6 * * *", function () {
! setState(idTrigger, false);
! });
! schedule("46 7 * * *", function () {
! setState(idTrigger, false);
! });
! schedule("16 9 * * *", function () {
! setState(idTrigger, false);
! });
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden