Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst]: Nur in bestimmten Zeitbereichen on({id …}

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    924

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[gelöst]: Nur in bestimmten Zeitbereichen on({id …}

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
9 Beiträge 7 Kommentatoren 2.0k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    mdsv
    schrieb am zuletzt editiert von
    #1

    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).

    1 Antwort Letzte Antwort
    0
    • DutchmanD Offline
      DutchmanD Offline
      Dutchman
      Developer Most Active Administrators
      schrieb am zuletzt editiert von
      #2

      @mdsv:

      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).

      1 Antwort Letzte Antwort
      0
      • L Offline
        L Offline
        looxer01
        schrieb am zuletzt editiert von
        #3

        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; } !

        1 Antwort Letzte Antwort
        0
        • M Offline
          M Offline
          mdsv
          schrieb am zuletzt editiert von
          #4

          Perfekt :-). Vielen Dank.

          zu PS: Ich meinte, ob man mehrere Geräte mit && oder ODER auch verknüpfen kann …

          on({id: "hm-rpc.0.xxxxx.1.MOTION" && id: "hm-rpc.0.xxxxx.1.MOTION"}, function (obj) {
          //Code
          }
          });
          
          1 Antwort Letzte Antwort
          0
          • P Offline
            P Offline
            pix
            schrieb am zuletzt editiert von
            #5

            @mdsv:

            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

            ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

            1 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @mdsv:

              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
              });
              

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              1 Antwort Letzte Antwort
              0
              • M Offline
                M Offline
                mdsv
                schrieb am zuletzt editiert von
                #7

                Perfekt :-). Ist doch immer genial, was alles geht.

                1 Antwort Letzte Antwort
                0
                • N Offline
                  N Offline
                  Nordlicht
                  schrieb am zuletzt editiert von
                  #8

                  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

                  1 Antwort Letzte Antwort
                  0
                  • wendy2702W Offline
                    wendy2702W Offline
                    wendy2702
                    schrieb am zuletzt editiert von
                    #9

                    @Nordlicht:

                    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);
                    ! });

                    Bitte keine Fragen per PN, die gehören ins Forum!

                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                    1 Antwort Letzte Antwort
                    0
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    724

                    Online

                    32.6k

                    Benutzer

                    82.2k

                    Themen

                    1.3m

                    Beiträge
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Anmelden

                    • Du hast noch kein Konto? Registrieren

                    • Anmelden oder registrieren, um zu suchen
                    • Erster Beitrag
                      Letzter Beitrag
                    0
                    • Home
                    • Aktuell
                    • Tags
                    • Ungelesen 0
                    • Kategorien
                    • Unreplied
                    • Beliebt
                    • GitHub
                    • Docu
                    • Hilfe