Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Vorlage] Generisches Fensteroffenskript + Vis

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [Vorlage] Generisches Fensteroffenskript + Vis

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

      Update zu V 1.5.0

      aktuelle Features

      • Kann beliebige Tür/Fenster Kontakte verwenden. Noch nicht erfasste Varianten können über die Einstellungen hinzugefügt werden.
      • Berücksichtigt mehrflügelige Fenster bzw. mehrere Fenster pro Raum.
      • Legt pro Raum sieben Datenpunkte an (Raumfensteroffenzähler, Raumfenstergekipptzähler, Raumfensterstatus und die Einstellfelder für die Lüftungsempfehlung und welche Nachrichten Ihr haben möchtet), sowie 10 Datenpunkte fürs gesamte. (Siehe Beschreibung der Datenpunkte weiter unten)
      • Möglichkeit eine Meldung/Ansage via Mail/Telegram/Alexa nach x Minuten einmalig oder zyklisch bis Fensterschließung auszugeben.
      • Meldungen können bei Bedarf über einen Mute Datenpunkt entweder gesamt oder nur für Sprachnachrichten stummgeschaltet werden.
      • Gibt dynamische HTML Tabelle mit Übersicht aller Räume und farblicher Kennzeichnug der jeweiligen Stati aus. Verwendete Bilder und Farben sind frei konfigurierbar.
      • Gibt zeitbezogene Lüftungswarnung aus wenn Fenster für Zeit x (pro Raum einstellbar) nicht geöffnet wurden.
      • Gibt Liste mit Räumen für welche aktuell eine Fensteroffen Warnung besteht aus.
      • Gibt Liste mit Räumen in denen gekippte Fenster sind aus.
      • Gibt Liste mit Räumen für welche aktuell eine Lüftungs Warnung besteht aus.
      • Kann kurze auf/zu Änderungen innerhalb Zeit x (einstellbar) ignorieren.

      Changelog

      24.4.20 (V 1.5.0)

      • Add: Nachrichtenausgabe kann nun in den Raumdatenpunkten pro Raum konfiguriert werden. Hierzu die Datenpunkte: SendOpenCloseMsg, SendVentMsg und SendWarnMsg angelegt.
      • Add: In den Skripteinstellungen, MaxMsg hinzugefügt. Hier kann festgelegt werden wieviele Nachrichten Ihr maximal pro Raum erhalten möchtet. Wegfall der Option RepeatInfoMsg, da dies durch MaxMsg=1 konfiguriert werden kann.
      • Add: Zusätzlicher Status "gekippt". Ausgabe der entsprechenden Werte sowohl als Gesamtzählung, als Liste, als auch pro Raum. Entsprechende Änderung der Texte (Wenn Fenster im Raum nur gekippt, Ausgabe Fenster gekippt, wenn nur offen, Ausgabe Fenster offen, wenn Fenster im Raum sowohl gekippt als auch offen, Ausgabe x Fenster offen, davon x Fenster gekippt). Zusätzliche Farbe und Bild für HTML Tabelle.
      • Fix: Problem mit inkorrekten Lüftungswarnungen nach öffnen/schliessen innerhalb Berechnungstimeout.
      • Add: Kurzzeitige (Zeit einstellbar) öffnen/schliessen Aktionen werden nun ignoriert (z.B. mal schnell aus dem Fenster guggen)
      S 1 Reply Last reply Reply Quote 0
      • Dominik F.
        Dominik F. @Pittini last edited by

        @Pittini

        Ich verstehe was du meinst, mir ist nur nicht ganz klar ob das die Lösung meines Problems ist. Ich könnte durch den zweiten Sensor eine Stellung des Drehgriffkontaktes ersetzen, damit wenn die Tür zu ist, aber nicht verschlossen, die Tür als zu angezeigt wird. Das würde Grundsätzlich das Problem lösen. Nur dann hab ich keinen Überblick mehr, ob die Tür wirklich zu ist wenn ich vorm verlassen des Hauses nochmal kurz nachschauen möchte.

        Freue mich schon auf deine neue Version, werde sie heute abend noch testen 🙂

        1 Reply Last reply Reply Quote 0
        • S
          Saschag @Pittini last edited by Saschag

          @Pittini

          ich habe folgen Fehler:

          javascript.0	2020-04-24 20:22:39.761	error	(20140) at runMicrotasks (<anonymous>:null:null)
          javascript.0	2020-04-24 20:22:39.760	error	(20140) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49
          javascript.0	2020-04-24 20:22:39.760	error	(20140) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
          javascript.0	2020-04-24 20:22:39.760	error	(20140) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:534:55
          javascript.0	2020-04-24 20:22:39.760	error	(20140) at script.js.common.FensterUeberwachung:161:13
          javascript.0	2020-04-24 20:22:39.760	error	(20140) at main (script.js.common.FensterUeberwachung:194:5)
          javascript.0	2020-04-24 20:22:39.759	error	(20140) at init (script.js.common.FensterUeberwachung:188:9)
          javascript.0	2020-04-24 20:22:39.759	error	(20140) at VentCheck (script.js.common.FensterUeberwachung:421:37)
          javascript.0	2020-04-24 20:22:39.759	error	(20140) at Meldung (script.js.common.FensterUeberwachung:229:5)
          javascript.0	2020-04-24 20:22:39.759	error	(20140) at WriteMessageLog (script.js.common.FensterUeberwachung:234:37)
          javascript.0	2020-04-24 20:22:39.758	error	(20140) script.js.common.FensterUeberwachung: TypeError: Cannot read property 'split' of nul
          

          ne Idee?#
          Habe heute meinen neuen PI4 aufgesetzt.

          P 1 Reply Last reply Reply Quote 0
          • P
            Pittini Developer @Saschag last edited by Pittini

            @Saschag sagte in [Vorlage] Generisches Fensteroffenskript + Vis:

            ne Idee?#

            3 Posts weiter oben steht was zu tun ist. Hab aber mal noch was geändert um (hoffentlich) den Fehler abzufangen, einfach nochmal von Git holen, is die gleiche Versionsnummer.

            T S 2 Replies Last reply Reply Quote 0
            • T
              Turbo @Pittini last edited by Turbo

              @Pittini vielen Dank nochmal für das tolle script. Funktioniert bei mir einwandfrei.
              Eine persönliche Frage hätte ich noch dazu, komme aber mit Javascript noch nicht so klar: Ich würde gerne eine Nachricht (evtl. per Telegram/pushover + Alexa) über noch offene Fenster bekommen, wenn ein Datenpunkt (z.B. Abwesend) geschalten wird. Könnte man das noch irgendwie einfügen?

              P 1 Reply Last reply Reply Quote 0
              • P
                Pittini Developer @Turbo last edited by

                @Turbo sagte in [Vorlage] Generisches Fensteroffenskript + Vis:

                Ich würde gerne eine Nachricht (evtl. per Telegram/pushover + Alexa) über noch offene Fenster bekommen, wenn ein Datenpunkt (z.B. Abwesend) geschalten wird.

                Dafür kannste doch den Mute Datenpunkt nehmen. Wenn anwesend läßte das über ein Miniskript oder Blockly muten, wenn abwesend den mute wieder aufheben.

                T 2 Replies Last reply Reply Quote 0
                • T
                  Turbo @Pittini last edited by

                  @Pittini aaah, ok, danke, den habe ich total übersehen. Werde das gleich mal testen.

                  1 Reply Last reply Reply Quote 0
                  • S
                    Saschag @Pittini last edited by

                    @Pittini
                    Läuft! Vielen Dank!!

                    1 Reply Last reply Reply Quote 0
                    • T
                      Turbo @Pittini last edited by

                      @Pittini sagte in [Vorlage] Generisches Fensteroffenskript + Vis:

                      @Turbo sagte in [Vorlage] Generisches Fensteroffenskript + Vis:

                      Ich würde gerne eine Nachricht (evtl. per Telegram/pushover + Alexa) über noch offene Fenster bekommen, wenn ein Datenpunkt (z.B. Abwesend) geschalten wird.

                      Dafür kannste doch den Mute Datenpunkt nehmen. Wenn anwesend läßte das über ein Miniskript oder Blockly muten, wenn abwesend den mute wieder aufheben.

                      Läuft, muss (natürlich) die "Zeit bis Nachricht"-Meldung auf 0 stellen und das Javascript bei Abwesend starten/antriggern, sonst sind ja die Meldungen schon rum.

                      P 1 Reply Last reply Reply Quote 0
                      • P
                        Pittini Developer @Turbo last edited by

                        @Turbo sagte in [Vorlage] Generisches Fensteroffenskript + Vis:

                        Läuft, muss (natürlich) die "Zeit bis Nachricht"-Meldung auf 0 stellen und das Javascript bei Abwesend starten/antriggern, sonst sind ja die Meldungen schon rum.

                        ZeitBisNachricht auf 0 zu stellen is eigentlich keine gute Idee, das ist ja die Zeit nach der die Fensteroffenwarnung kommt, wenn Du die auf 0 stellst kommt die ja sofort und die Funktion ist nutzlos. Dafür gibts ja außerdem schon die OpenCloseMsg.
                        Wenn ich Dein Vorhaben richtig deute, willst Du erreichen dass Du quasi die "verpassten" Meldungen im nachhinein bei Anwesenheit bekommen möchtest? Dafür haste aber ja auch schon das Log. Und ich versteh auch nicht was das Skript starten/antriggern bei Abwesenheit bringen soll.

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          Turbo @Pittini last edited by

                          @Pittini ich möchte einfach, wenn wir das Haus verlassen (Abwesend drücken), sofort die Meldung bekommen, welche Fenster noch offen sind. Wenn die "Zeit bis Nachricht" auf 0 steht, kommt diese Meldung auch sofort, aber erst nach Starten des Scripts. Deshalb kurz nochmal starten.

                          Ich wollte mir nicht noch ein Riesen Blockly-Script basteln, sondern die Daten einfach von Deinem Script nehmen...

                          Vielleicht hab ich ja auch nen Denkfehler und es wäre einfacher zu lösen, aber für mich funktioniert es so ganz gut.

                          P 1 Reply Last reply Reply Quote 0
                          • P
                            Pittini Developer @Turbo last edited by

                            @Turbo sagte in [Vorlage] Generisches Fensteroffenskript + Vis:

                            ich möchte einfach, wenn wir das Haus verlassen (Abwesend drücken), sofort die Meldung bekommen, welche Fenster noch offen sind. Wenn die "Zeit bis Nachricht" auf 0 steht, kommt diese Meldung auch sofort, aber erst nach Starten des Scripts. Deshalb kurz nochmal starten.

                            Wie gesagt, Du kastrierst das Skript damit, die Funktion die Dir im Winter sagt dass das Fenster zulange offen ist, ist damit tot. Die Information die Du haben willst steht doch als Klartext im Datenpunkt javascript.0.FensterUeberwachung.RoomsWithOpenWindows. Lass Dir das anzeigen/vorlesen und gut ists.

                            Ich wollte mir nicht noch ein Riesen Blockly-Script basteln, sondern die Daten einfach von Deinem Script nehmen...
                            Vielleicht hab ich ja auch nen Denkfehler und es wäre einfacher zu lösen, aber für mich funktioniert es so ganz gut.

                            Siehe oben

                            T 1 Reply Last reply Reply Quote 0
                            • T
                              Turbo @Pittini last edited by

                              @Pittini Ja, das würde natürlich funktionieren, ich bekomme nur über Blockly die Formatierung des Textes nicht richtig hin und Alexa redet lauter wirres Zeugs mit mir...

                              Ich probiere mal weiter...

                              P 1 Reply Last reply Reply Quote 0
                              • P
                                Pittini Developer @Turbo last edited by Pittini

                                @Turbo sagte in [Vorlage] Generisches Fensteroffenskript + Vis:

                                Ja, das würde natürlich funktionieren, ich bekomme nur über Blockly die Formatierung des Textes nicht richtig hin und Alexa redet lauter wirres Zeugs mit mir...
                                Ich probiere mal weiter...

                                Na, soviel is da doch nicht zu formatieren? Einfach die <br< durchn Komma ersetzen und gut. Oder will Alexa Zahlen als Text?

                                T 1 Reply Last reply Reply Quote 0
                                • T
                                  Turbo @Pittini last edited by

                                  @Pittini

                                  Einfach die <br< durchn Komma ersetzen und gut.

                                  Ja, doch wie mache ich das mit Blockly?!? 🤔

                                  P 1 Reply Last reply Reply Quote 0
                                  • P
                                    Pittini Developer @Turbo last edited by Pittini

                                    @Turbo sagte in [Vorlage] Generisches Fensteroffenskript + Vis:

                                    Ja, doch wie mache ich das mit Blockly?!?

                                    Gegenfrage: Verwendest Du den Text auch in Vis zur Anzeige? Wenn nein, kannste im Skript (Zeile 51) das Trennzeichen aufn Komma umstellen. Sollte klappen aber es gibt dann im Vis dafür keinen Zeilenumbruch mehr.

                                    PS: Von Blockly hab ich wenig bis keine Ahnung.

                                    T Dominik F. 2 Replies Last reply Reply Quote 0
                                    • T
                                      Turbo @Pittini last edited by

                                      @Pittini sagte in [Vorlage] Generisches Fensteroffenskript + Vis:

                                      @Turbo sagte in [Vorlage] Generisches Fensteroffenskript + Vis:

                                      Ja, doch wie mache ich das mit Blockly?!?

                                      Gegenfrage: Verwendest Du den Text auch in Vis zur Anzeige? Wenn nein, kannste im Skript (Zeile 51) das Trennzeichen aufn Komma umstellen. Sollte klappen aber es gibt dann im Vis dafür keinen Zeilenumbruch mehr.

                                      PS: Von Blockly hab ich wenig bis keine Ahnung.

                                      Ja, ich verwende auch den Text für vis.
                                      Wie schon gesagt, ich wollte da jetzt nicht noch ein ellenlanges Programm dafür machen, deshalb eben die "kastrierte" Version, bis mir etwas anderes einfällt.

                                      Im Moment funktioniert es ganz gut, bis Winter habe ich noch etwas Zeit, will Dich ja auch nicht mit meinem Blockly belästigen.

                                      Das mit dem RoomsWithOpenWindows bekomme ich schon noch hin.
                                      Auf jeden Fall vielen Dank für den Tip.

                                      1 Reply Last reply Reply Quote 0
                                      • Dominik F.
                                        Dominik F. @Pittini last edited by Dominik F.

                                        @Pittini

                                        In deinem Skript scheint ein kleiner Fehler zu sein. Wenn mein HM IP Drehgriffkontakt auf open geht, wird mir in der Vis gekippt angezeigt, bei tilted wird mir geöffnet angezeigt.

                                        Ich kann das natürlich in den Einstellungen der Arrays ändern, wollte dich aber darauf hinweisen.
                                        So müsste es aussehen.

                                        const WindowIsOpenWhen = ["true", "offen", "open", "opened", "2"]; // Hier können eigene States für offen angegeben werden, immer !!! in Kleinschreibung
                                        const WindowIsClosedWhen = ["false", "geschlossen", "closed", "0"]; // Hier können eigene States für geschlossen angegeben werden, immer !!! in Kleinschreibung
                                        const WindowIsTiltedWhen = ["tilted", "gekippt", "1"]; // Hier können eigene States für gekippt angegeben werden, immer !!! in Kleinschreibung
                                        
                                        
                                        P 2 Replies Last reply Reply Quote 0
                                        • P
                                          Pittini Developer @Dominik F. last edited by Pittini

                                          @Dominik-F sagte in [Vorlage] Generisches Fensteroffenskript + Vis:

                                          Ich kann das natürlich in den Einstellungen der Arrays ändern, wollte dich aber darauf hinweisen.

                                          Ja, danke. Ich hatte paar mal in der Telegram Gruppe um diese Info gebeten und als nach 3 Tagen immer noch keiner geantwortet hatte, dacht ich mir, es trifft je eh diejenigen die jetzt nicht antworten und hab das mit ner 50/50 Chance einfach geraten 🤡 . Werd das jetzt korrigieren.

                                          Edit: Haha, eigentlich isses eh egal was ich mach, da sich die HM Geräte scheinbar nicht einig sind was jetzt eigentlich open ist, hat mir einer auf FB gepostet:
                                          94707610_3070825066309441_960740628851851264_o.jpg

                                          dslraser 1 Reply Last reply Reply Quote 1
                                          • D
                                            dodi666 last edited by

                                            Hallo zusammen,
                                            würde das Skript gerne ans laufen bekommen.
                                            Bekomme folgende Fehlermeldung:

                                            javascript.0	2020-04-27 12:45:00.363	error	(9318) at process._tickCallback (internal/process/next_tick.js:68:7)
                                            javascript.0	2020-04-27 12:45:00.363	error	(9318) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49)
                                            javascript.0	2020-04-27 12:45:00.362	error	(9318) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
                                            javascript.0	2020-04-27 12:45:00.362	error	(9318) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:580:17)
                                            javascript.0	2020-04-27 12:45:00.362	error	(9318) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:855:17)
                                            javascript.0	2020-04-27 12:45:00.362	error	(9318) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1264:17)
                                            javascript.0	2020-04-27 12:45:00.362	error	(9318) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1211:37)
                                            javascript.0	2020-04-27 12:45:00.362	error	(9318) at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:988:28)
                                            javascript.0	2020-04-27 12:45:00.361	error	(9318) at Object.createScript (vm.js:277:10)
                                            javascript.0	2020-04-27 12:45:00.361	error	(9318) at new Script (vm.js:83:7)
                                            javascript.0	2020-04-27 12:45:00.361	error	(9318) SyntaxError: Unexpected end of input
                                            javascript.0	2020-04-27 12:45:00.361	error	(9318)
                                            javascript.0	2020-04-27 12:45:00.361	error	(9318) log('registered ' + __engine.__subscriptions + ' subscription' + (__engine.__subscriptions === 1 ? '' : 's' ) + ' and ' + __engine.__schedules + ' schedule' + (__engine.__schedules === 1 ? ''
                                            javascript.0	2020-04-27 12:45:00.360	error	at script.js._Testumgebung.Fensterüberwachung:259
                                            javascript.0	2020-04-27 12:45:00.360	error	(9318) script.js._Testumgebung.Fensterüberwachung compile failed: 
                                            

                                            Einer ne Idee, woran das liegen könnte?

                                            Grüße

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            633
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript monitoring template
                                            81
                                            768
                                            152632
                                            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