Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst]: Nur in bestimmten Zeitbereichen on({id …}

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mdsv last edited by

      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 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        @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 Reply Last reply Reply Quote 0
        • L
          looxer01 last edited by

          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 Reply Last reply Reply Quote 0
          • M
            mdsv last edited by

            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 Reply Last reply Reply Quote 0
            • P
              pix last edited by

              @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

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 last edited by

                @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
                });
                
                1 Reply Last reply Reply Quote 0
                • M
                  mdsv last edited by

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

                  1 Reply Last reply Reply Quote 0
                  • N
                    Nordlicht last edited by

                    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 Reply Last reply Reply Quote 0
                    • wendy2702
                      wendy2702 last edited by

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

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      965
                      Online

                      31.9k
                      Users

                      80.3k
                      Topics

                      1.3m
                      Posts

                      7
                      9
                      1768
                      Loading More Posts
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes
                      Reply
                      • Reply as topic
                      Log in to reply
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      The ioBroker Community 2014-2023
                      logo