Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Fenster offen Script

    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

    Fenster offen Script

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

      Hallo zusammen,

      ich habe bisher die Fenster offen Scripte nie für nötig gehalten (meine Frau jetzt aber doch).
      Habe ein Script gefunden welches mir eigentlich von der Funktion her sehr zusagt Fenster offen Script

      Dies "funktioniert" auch wenn es gestartet wird, aber nicht so richtig.
      Die zum Startzeitpunkt offenen Fenster werden gezählt, aber eine Aktualisierung findet nicht statt.

      Es werden auch Fehler ausgegeben, leider bin ich bei JS nicht so tief im Thema drinnen.
      Kann es sein das Timer verwendet werden die es nicht mehr gibt?

      Folgende Fehlermeldungen werden ausgegeben:

      javascript.0
      	2025-02-06 16:36:50.339	error	at process.processTimers (node:internal/timers:519:7)
      javascript.0
      	2025-02-06 16:36:50.339	error	at listOnTimeout (node:internal/timers:581:17)
      javascript.0
      	2025-02-06 16:36:50.339	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:3219:34)
      javascript.0
      	2025-02-06 16:36:50.339	error	at Object.<anonymous> (script.js.common.Fenster_Tueren:1388:25)
      javascript.0
      	2025-02-06 16:36:50.339	error	at CheckWindow (script.js.common.Fenster_Tueren:1014:64)
      javascript.0
      	2025-02-06 16:36:50.339	error	at Meldung (script.js.common.Fenster_Tueren:388:25)
      javascript.0
      	2025-02-06 16:36:50.339	error	Error in callback: ReferenceError: Say is not defined
      
      
      

      Kann mir da jemand einen Tipp geben wo ich nach dem Fehler suchen müsste?
      Würde das Script, aufgrund der flexiblen Anpassung gerne nutzen, oder hat jemand eine ähnliche Alternative?

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

        @ralalla sagte: Say is not defined

        Zeile 42:

        const UseSay = true; // Sollen Nachrichten via Say ausgegeben werden? Autorenfunktion, muß deaktiviert werden.
        
        crunchip 1 Reply Last reply Reply Quote 0
        • crunchip
          crunchip Forum Testing Most Active @paul53 last edited by

          @paul53 das script läuft aber auch anderweitig nicht mehr, zumindest bei mir, siehe
          https://github.com/Pittini/iobroker-Fensterauswertung/issues/52

          selbst wenn ich das original script einfüge und starte

          crunchip77 created this issue in Pittini/iobroker-Fensterauswertung

          open javascript 8.7.6 #52

          1 Reply Last reply Reply Quote 0
          • R
            ralalla last edited by

            Hm schade.
            Auch wenn ich "say" (hatte ich wohl übersehen) abschalte funktioniert es nicht.
            Wurde ja von @crunchip auch erwähnt.

            Hat jemand eine Alternative die ähnliche Ergebnisse bringt und funktioniert?

            Codierknecht 1 Reply Last reply Reply Quote 0
            • Codierknecht
              Codierknecht Developer Most Active @ralalla last edited by

              @ralalla sagte in Fenster offen Script:

              Hat jemand eine Alternative die ähnliche Ergebnisse bringt und funktioniert?

              Was brauchst Du denn?
              Nur die Anzahl offener Fenster?
              Oder tatsächlich auch eine Meldung? Wenn ja: Wohin? Sprachausgabe, Telegram, Signal, Email, etc. p.p.

              1 Reply Last reply Reply Quote 0
              • R
                ralalla last edited by

                Hm also eigentlich würde auch die Anzahl offener Türen/ offener Fenster reichen.
                Den Rest bekomme ich alleine „zusammengebastelt“. 😉

                Codierknecht paul53 2 Replies Last reply Reply Quote 0
                • Codierknecht
                  Codierknecht Developer Most Active @ralalla last edited by

                  @ralalla

                  const ids = $('(functions=window)').toArray();
                  // Alternativ über gleichartige DP
                  // const ids = $('zigbee.0.*.opened').toArray();
                  
                  on({id: ids, change: "ne"}, async function() {
                      let count = 0;
                      for (let id of ids) {
                          if (getState(id).val) count++;
                      }
                      setStateAsync("0_userdata.0.Vis.fenster", count, true);
                  });
                  

                  Für die hier verwendete Variante habe ich unter "Kategorien" eine Funktion angelegt, in der die entsprechenden States aufgelistet sind. Das funktioniert prima, weil bei mir unterschiedliche Sensoren verbaut sind (Zigbee und Alarmanlage).

                  Wenn alles nur aus einem Adapter kommt, kann man auch die Alternative Variante verwenden.

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

                    @ralalla
                    Wann soll die Prüfung erfolgen? Bei Verlassen des Hauses?
                    Wenn genau den zu prüfenden Datenpunkten das Gewerk "fenster" (Schreibweise in der ID) und ein Raum zugewiesen wurde, kann es etwa so erfolgen:

                    const ids = $('*(functions=fenster)').toArray();
                    const idMsg = 'xyz'; // ID eintragen
                    const idVerlassen = 'abc'; // ID eintragen
                    
                    on({id: idVerlassen, change: 'gt'}, function() {
                        const Liste = [];
                        for(const id of ids) {
                            if(getState(id).val) { // offen?
                                const raum = getObject(id, 'rooms').enumNames[0];
                                Liste.push(raum);
                            }
                        }        
                        if(Liste.length) {
                            const msg = Liste.length + ' offene Fenster im\n' + Liste.join(', ');
                            setState(idMsg, msg); // oder sendTo() mit msg
                        }
                    });
                    
                    1 Reply Last reply Reply Quote 0
                    • R
                      ralalla last edited by

                      Danke euch beiden.

                      So wie von @Codierknecht geschrieben passt das schon mal ganz gut.
                      Die Zusätze von @paul53 schaue ich mir morgen mal an und übernehme das dann.

                      Nachricht brauche ich erst mal keine.
                      Gut wäre wenn man halt immer den aktuellen Status sehen kann. Das klappt ja damit schon mal.
                      Nice to Have für die Visu wenn man sieht wo was offen ist.

                      Nachricht nur wenn keiner zu Hause ist. Da ich viel in Blockly zusammen klicke schaffe ich das mit der Nachricht auch im Blockly. Wobei das hier natürlich ein Ansporn ist zu lernen 😉

                      crunchip 1 Reply Last reply Reply Quote 0
                      • crunchip
                        crunchip Forum Testing Most Active @ralalla last edited by

                        @ralalla sagte in Fenster offen Script:

                        viel in Blockly

                        hab gerade mal bei mir nachgesehen, hab das noch in den scripten
                        https://forum.iobroker.net/post/904083

                        1 Reply Last reply Reply Quote 0
                        • T
                          ticaki Developer last edited by

                          ich würde ja in so Skripts noch ein

                          schedule('1 1 * * *', () => {startScript(name);}
                          

                          einbauen - dann braucht man auch nicht ans neustarten zu denken, wenn man 6 Monate später mal nen Sensor austauscht 🙂

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          806
                          Online

                          31.8k
                          Users

                          80.0k
                          Topics

                          1.3m
                          Posts

                          5
                          11
                          412
                          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