Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    762

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

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

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

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
9 Beiträge 7 Kommentatoren 2.1k 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 Online
                    wendy2702W Online
                    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

                    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
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    377

                    Online

                    32.8k

                    Benutzer

                    82.7k

                    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