ioBroker Skript um zu prüfen, ob die aktuelle Uhrzeit innerhalb eines bestimmten Zeitfensters liegt

Uhrzeit
Lesedauer: 2 Minuten

Mit ioBroker und JavaScript lässt sich (fast) alles einstellen, umstellen, kontrollieren oder überwachen. Mit diesem Skript kannst Du eine Funktion implementieren, die prüft, ob die aktuelle Uhrzeit im Bereich einer Zeitspanne liegt. Diese arbeitet auch tagübergreifend. So kann eine Startzeit bei 05:00:00 liegen und um 04:30:00 enden. Somit ist klar, das der Endzeitpunkt am nächsten Tag liegt.

Skript in ioBroker anlegen

Dieses Skript legst Du am Besten wieder im global Bereich an, damit es auch von anderen Skripten im common Bereich genutzt werden kann.

/*
 * @copyright 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln>
 *
 * @author 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln>
 *
 * Dieses Skript dient zur freien Verwendung in ioBroker zur Verbrauchserfassung der Shelly Geräte.
 * Jegliche Verantwortung liegt beim Benutzer. Das Skript wurde unter Berücksichtigung der bestmöglichen Nutzung
 * und Performance entwickelt.
 * Der Entwickler versichert, das keine böswilligen Systemeingriffe im originalen Skript vorhanden sind.
 *
 * Sollte das Skript wider Erwarten nicht korrekt funktionieren, so hast Du jederzeit die Möglichkeit, Dich auf
 * https://www.kreyenborg.koeln
 * für Unterstützung zu melden. Jedes Skript besitzt seine eigene Kommentarseite, auf der,
 * nach zeitlicher Möglichkeit des Autors, Hilfe angeboten wird. Ein Anrecht hierauf besteht nicht!
 * 
 * Ansprüche gegenüber Dritten bestehen nicht. 
 * 
 * Skript Name:		Zeitbereich
 * Skript Version:	1.0
 * Erstell-Datum:	16. April 2020
 * 
 */
function Zeitbereich(startTime,endTime) {
    // Aktuelles Datum abholen
    var currentDate = new Date();

    // Startdatum formatieren   
    var startDate = new Date(currentDate.getTime());
    startDate.setHours(startTime.split(":")[0]);
    startDate.setMinutes(startTime.split(":")[1]);
    if (startTime.split(":")[2]) {
        startDate.setSeconds(startTime.split(":")[2]);
    }

    // Enddatum formatieren
    var endDate = new Date(currentDate.getTime());
    endDate.setHours(endTime.split(":")[0]);
    endDate.setMinutes(endTime.split(":")[1]);
    if (endTime.split(":")[2]) {
        endDate.setSeconds(endTime.split(":")[2]);
    }

    //Setze Zeitbereich zurück
    var valid_time_frame = false
    
    if (endTime > startTime) {
        // Zeitbereich ist im gleichen Tag
        valid_time_frame = (currentDate >= startDate && currentDate <= endDate) ? true : false;
    } else {
        // Zeitbereich endet im nächsten Tag
        valid_time_frame = (currentDate >= endDate && currentDate <= startDate) ? false : true;
    }
    return valid_time_frame;
}

Andere Skripte können nun die Funktion Zeitbereich(start,ende); nutzen.
Der Funktionsaufruf ist wie folgt:

if (Zeitbereich("05:00:00","04:30:00")) {
     // Zeitbereich zwischen 5 Uhr morgens und 4:30 Uhr des nächsten Morgens
     // Hier kannst Du etwas ausführen lassen, was zu dem Zeitraum passt.
 }
 
 if (Zeitbereich("09:00:00","13:00:00")) {
     // Zeitbereich zwischen 9 Uhr morgens und 13:00 Uhr mittags
     // Hier kannst Du etwas ausführen lassen, was zu dem Zeitraum passt.
 }

oder ohne Sekunden

 if (Zeitbereich("09:00","13:00")) {
     // Zeitbereich zwischen 9 Uhr morgens und 13:00 Uhr mittags
     // Hier kannst Du etwas ausführen lassen, was zu dem Zeitraum passt.
 }

Dieses Skript lässt sich hervorragend mit meinem Beitrag:
HomeMatic Sprachausgabe mit Alexa, ioBroker und JavaScript verwenden.

Wie hat Dir der Beitrag gefallen?
Bewertung: 5/5 - abgegebene Bewertungen: 2

3 Gedanken zu „ioBroker Skript um zu prüfen, ob die aktuelle Uhrzeit innerhalb eines bestimmten Zeitfensters liegt

  1. T. Antworten

    Hallo,

    in der Zeile 46 ist der Ausdruck

    if (endTime > startTime)

    wobei endTime und startTime ein String ist.

    Das kann m. E. nicht sauber funktionieren.

    Gruß T.

    • Stephan Autor des BeitragsAntworten

      Hallo T.,
      Bevor Du solche Behauptungen aufstellst, würde ich empfehlen, sich einmal mit Programmierung auseinander zu setzen.

      Gruß,
      Stephan

  2. Pingback: HomeMatic Sprachausgabe mit Alexa, ioBroker und JavaScript | Kreyenborg.koeln

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert