Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Mehrere Fenster - Check, ob länger als 15min geöffnet

    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

    Mehrere Fenster - Check, ob länger als 15min geöffnet

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

      Hallo zusammen,

      Iobroker ist echt genial. Bin seit 2 Wochen dabei. Sehr genial.

      Ich möchte gerne folgendes umsetzen.

      Alle Fenster sollen bei Statusänderungen überprüft werden. Das bekomme ich hin.
      Wenn festgestellt wurde, dass ein Fenster geöffnet ist, soll nach 15 Minuten wieder überprüft werden, ob es immer noch geöffnet ist. Wenn ja, soll eine Benachrichtigung versendet werden.

      Ich könnte jetzt für jedes Fenster und für jede Tür ein Script schreiben und mit Intervall 15 Minuten dies realisieren.

      Frage: Kann man das auch in einem Script bewerkstelligen?

      Idee: Ein Script mit Threads damit die Überprüfung bei STATE Änderung weiter läuft. Aber wie geht das? Geht das überhaupt?
      Oder muss ich wirklich für jedes ein eigenes Script haben?

      Danke im Voraus.
      Sven

      paul53 htrecksler 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @piro last edited by paul53

        @piro sagte:

        muss ich wirklich für jedes ein eigenes Script haben?

        Nein, aber für jedes Fenster einen eigenen Trigger und eine eigene Verzögerung (timeout) bzw. eigenes Intervall.

        1 Reply Last reply Reply Quote 0
        • htrecksler
          htrecksler Forum Testing @piro last edited by

          @piro
          Das Script macht das was du möchtest.

          var idFensterAuf = "hm-rpc.0.NEQ1158xxx.1.STATE";
          var timer    = null;
          subscribe(idFensterAuf, function (obj) {
             if (obj.newState.val) {
                // Starte timer für 60 Minuten
                if (!timer) {
                   timer = setTimeout(function () {
                      timer = null;
                      //log("Fenster länger als 60 Minuten auf", 'warn');
                   }, 60*60000);
                }
             } else {
                // Fenster zugemacht. Falls timer läuft = stopp
                //log('Fenster geschlossen!', 'warn');
                if (timer) {
                   clearTimeout(timer);
                   timer = null;
                }
             }
          });
          
          
          1 Reply Last reply Reply Quote 0
          • P
            piro last edited by

            @htrecksler mit deinem Script würde ich es aber für jedes Fenster bzw. Tür erstellen müssen, oder?

            @paul53 Ok, es wäre dann ein Script aber ganz viele Trigger. Da geht auch die Übersichtlichkeit verloren.

            Aktuell arbeite ich mit dem Selector, um zu schauen, ob sich ein Zustand ändert.

            Ich versuche einfach mal ein Script und berücksichtige eure Hinweise.

            Trotzdem bin ich dankbar für weitere Hilfestellung

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

              @piro sagte:

              ganz viele Trigger. Da geht auch die Übersichtlichkeit verloren.

              Alternative: Ein Array mit IDs und dazu ein Array mit Timer-Variablen.

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

                oh, dass ist Neuland für mich. Ich versuche heute Abend mal mein Glück und werde es euch wissen lassen.

                B 1 Reply Last reply Reply Quote 0
                • B
                  BoehserWolf @piro last edited by

                  @piro Glaube das Script von @Pittini ist was du suchst.

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

                    @piro sagte:

                    Aktuell arbeite ich mit dem Selector

                    @paul53 sagte:

                    Array mit IDs und dazu ein Array mit Timer-Variablen.

                    Etwa so:

                    const STATEs = $('*.STATE');
                    const ids = [];
                    const timers = [];
                    
                    STATEs.each(function(id, i) {
                        ids[i] = id;
                    });
                    
                    on(ids, function(dp) {
                        let idx = ids.indexOf(dp.id);
                        if(dp.state.val) {
                            timers[idx] = setInterval(function() {
                                sendTo('telegram.0', 'Fenster ' + dp.common.name + ' ist mind. 15 Minuten offen');
                            }, 900000); // 15 Minuten
                        }
                        else if(timers[idx]) clearInterval(timers[idx]);
                    });
                    
                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    741
                    Online

                    31.8k
                    Users

                    80.0k
                    Topics

                    1.3m
                    Posts

                    blockly
                    4
                    8
                    517
                    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