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

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    [Vorlage] Generisches Fensteroffenskript + Vis

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

      @pittini
      Hallo,

      nutze Dein wirklich gelungenes Skript schon lange und es funktioniert alles einwandfrei.

      Nun habe ich ein paar Alexa mehr und wollte mal fragen, wie ich mehrere Alexa (hier die anzugebene ID) in das Skript bekomme, so das die Ansage an alle Alexas ausgegeben wird.

      Bisher hatte ich die eine ID ja hier eingegeben:

      //Alexa
      const UseAlexa = false; // Sollen Nachrichten via Alexa ausgegeben werden?
      const AlexaInstance = "alexa2.0";
      const AlexaId = "G090..."; // Die Alexa Seriennummer.
      const AlexaVolume = "50"; // Lautstärke der Nachrichten. Wert von 1 bis 100
      

      Hatte hier versucht die durch Komma/Semikolon getrennt einzugeben etc., hat aber leider nicht funktioniert.

      Wie könnte ich denn mehrere IDs eingeben? 🙂

      qqolli P I 3 Replies Last reply Reply Quote 0
      • qqolli
        qqolli @qqolli last edited by

        @Pittini

        Hi,

        wollte nur mal nachfragen wegen meiner Anfrage 🙂

        1 Reply Last reply Reply Quote 0
        • M
          Malz1902 last edited by

          versuchs mal als array <also ['id1, 'id2'] vielleicht gehts

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

            @qqolli Sorry, da kann ich Dir nich helfen, ich hab nich mal eine Alexa, von daher kein Plan wie das umzusetzen wäre.

            1 Reply Last reply Reply Quote 0
            • I
              intruder7 @qqolli last edited by

              @qqolli leg doch bei alexa mehrere Geräte zusammen als Gruppe. Diese Gruppe taucht dann auch beim alexa adapter unter devices auf.

              1 Reply Last reply Reply Quote 1
              • S
                Sesamstrasse last edited by

                Hallo zusammen,
                ich kriege das Skript leider nicht zum laufen und steh gerade auf den Schlauch. Ich habe die Standard Funktion für Fenster und Türen vom IoBroker verwendet.
                a3c111ae-e2a3-4c76-a0da-94e1c9d1b31f-image.png

                Und diese meinen Sensoren zugeordnet.
                50eb9b5e-65cd-4d91-92f9-9d1c75c6555a-image.png

                Im script habe ich die ids (habs auch mit dem Namen probiert) eingetragen.

                const WhichWindowFunctionToUse = "window"; // Legt fest nach welchem Begriff in Funktionen gesucht wird. Diese Funktion nur dem Datenpunkt zuweisen, NICHT dem ganzen Channel!
                const WhichDoorFunctionToUse = "door"; // Legt fest nach welchem Begriff in Funktionen gesucht wird. Diese Funktion nur dem Datenpunkt zuweisen, NICHT dem ganzen Channel!
                

                leider schmeißt das Skript nach dem Start immer viele Warnungen, dann Fehler und bricht ab.
                Says und EventLog habe ich auf false.

                11:03:00.878	info	javascript.0 (5215) Start javascript script.js.common.Messages.WindowDoorStatus
                11:03:00.897	info	javascript.0 (5215) script.js.common.Messages.WindowDoorStatus: starting Fensterskript, Version 1.6.15
                11:03:00.899	info	javascript.0 (5215) script.js.common.Messages.WindowDoorStatus: registered 0 subscriptions and 0 schedules
                11:03:00.927	warn	javascript.0 (5215) at init (script.js.common.Messages.WindowDoorStatus:325:26)
                11:03:00.928	warn	javascript.0 (5215) at main (script.js.common.Messages.WindowDoorStatus:349:5)
                11:03:00.928	warn	javascript.0 (5215) at InitialSort (script.js.common.Messages.WindowDoorStatus:314:5)
                11:03:00.929	warn	javascript.0 (5215) at Object.<anonymous> (script.js.common.Messages.WindowDoorStatus:278:13)
                11:03:00.932	warn	javascript.0 (5215) at init (script.js.common.Messages.WindowDoorStatus:326:35)
                11:03:00.932	warn	javascript.0 (5215) at main (script.js.common.Messages.WindowDoorStatus:349:5)
                11:03:00.933	warn	javascript.0 (5215) at InitialSort (script.js.common.Messages.WindowDoorStatus:314:5)
                11:03:00.933	warn	javascript.0 (5215) at Object.<anonymous> (script.js.common.Messages.WindowDoorStatus:278:13)
                11:03:00.937	warn	javascript.0 (5215) at init (script.js.common.Messages.WindowDoorStatus:327:37)
                11:03:00.937	warn	javascript.0 (5215) at main (script.js.common.Messages.WindowDoorStatus:349:5)
                11:03:00.938	warn	javascript.0 (5215) at InitialSort (script.js.common.Messages.WindowDoorStatus:314:5)
                11:03:00.938	warn	javascript.0 (5215) at Object.<anonymous> (script.js.common.Messages.WindowDoorStatus:278:13)
                11:03:00.940	warn	javascript.0 (5215) at init (script.js.common.Messages.WindowDoorStatus:328:32)
                11:03:00.940	warn	javascript.0 (5215) at main (script.js.common.Messages.WindowDoorStatus:349:5)
                11:03:00.941	warn	javascript.0 (5215) at InitialSort (script.js.common.Messages.WindowDoorStatus:314:5)
                11:03:00.941	warn	javascript.0 (5215) at Object.<anonymous> (script.js.common.Messages.WindowDoorStatus:278:13)
                11:03:00.943	warn	javascript.0 (5215) at init (script.js.common.Messages.WindowDoorStatus:329:30)
                11:03:00.944	warn	javascript.0 (5215) at main (script.js.common.Messages.WindowDoorStatus:349:5)
                11:03:00.944	warn	javascript.0 (5215) at InitialSort (script.js.common.Messages.WindowDoorStatus:314:5)
                11:03:00.945	warn	javascript.0 (5215) at Object.<anonymous> (script.js.common.Messages.WindowDoorStatus:278:13)
                11:03:00.949	warn	javascript.0 (5215) at init (script.js.common.Messages.WindowDoorStatus:341:27)
                11:03:00.949	warn	javascript.0 (5215) at main (script.js.common.Messages.WindowDoorStatus:349:5)
                11:03:00.950	warn	javascript.0 (5215) at InitialSort (script.js.common.Messages.WindowDoorStatus:314:5)
                11:03:00.951	warn	javascript.0 (5215) at Object.<anonymous> (script.js.common.Messages.WindowDoorStatus:278:13)
                11:03:00.960	error	javascript.0 (5215) at CreateRoomsWithOpenDoorsList (script.js.common.Messages.WindowDoorStatus:866:45)
                11:03:00.961	error	javascript.0 (5215) at main (script.js.common.Messages.WindowDoorStatus:351:5)
                11:03:00.961	error	javascript.0 (5215) at InitialSort (script.js.common.Messages.WindowDoorStatus:314:5)
                11:03:00.962	error	javascript.0 (5215) at Object.<anonymous> (script.js.common.Messages.WindowDoorStatus:278:13)
                

                Ich bin gerade mit meinem Latein am Ende und hoffe ihr habt noch eine Idee.

                Viele Grüße
                Flo

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

                  @sesamstrasse

                  Probiere doch mal, überall Tuer zu nutzen. Also als Name der Aufzählung und der ID und im Script. Einfach nur mal als Test.

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

                    @dominik-f Leider selber Ergebnis. Ich habe jetzt auch noch alle Leerzeichen bei den Räumen raus. Hat aber auch nichts gebracht.

                    1 Reply Last reply Reply Quote 0
                    • S
                      Sesamstrasse last edited by

                      Ich habe mal ein kleines Testskript gemacht. Bei mir scheint die Funktion zum ermitteln der Räume im Javascript Adapter nicht zu funktionieren.

                      
                      const testVar = $('zigbee.0.*.opened'/*Clients*/);
                      
                      console.log('test');
                      testVar.each(function (id, i) {
                          console.log('*******************');
                          console.log(id);
                          let name = getObject(id).common.name;
                          console.log(name);
                          let room = getObject(id, 'rooms').enumNames[0];
                          if (typeof room == 'object') room = room.de;
                          console.log(room);
                      
                      });
                      

                      liefert das Ergebnis

                      14:40:20.880	info	javascript.0 (5215) script.js.TestJs: test
                      14:40:20.881	info	javascript.0 (5215) script.js.TestJs: *******************
                      14:40:20.883	info	javascript.0 (5215) script.js.TestJs: zigbee.0.00158d0007bf12fa.opened
                      14:40:20.883	info	javascript.0 (5215) script.js.TestJs: Is open
                      14:40:20.884	info	javascript.0 (5215) script.js.TestJs: undefined
                      14:40:20.884	info	javascript.0 (5215) script.js.TestJs: *******************
                      14:40:20.884	info	javascript.0 (5215) script.js.TestJs: zigbee.0.00158d0007d11bc3.opened
                      14:40:20.885	info	javascript.0 (5215) script.js.TestJs: Is open
                      14:40:20.885	info	javascript.0 (5215) script.js.TestJs: undefined
                      14:40:20.886	info	javascript.0 (5215) script.js.TestJs: *******************
                      14:40:20.886	info	javascript.0 (5215) script.js.TestJs: zigbee.0.00158d0007d11fd2.opened
                      14:40:20.892	info	javascript.0 (5215) script.js.TestJs: Is open
                      14:40:20.893	info	javascript.0 (5215) script.js.TestJs: undefined
                      

                      ....

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

                        Ich habe es gelöst. Der javascript Adapter kriegt Änderungen an den Aufzählungen Raum/Funktion nicht mit... Man muss erst alles Konfigurieren, dann den Javascript Adapter neustarten und dann funktioniert auch das Skript...

                        A bug or a feature? 🙂

                        link text

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

                          @sesamstrasse

                          Okay super, ich bin davon ausgegangen, dass du dies gemacht hast, da es auch in der Anleitung steht 🙂

                          Nach der Zuweisung, bzw. dem anlegen neuer Aufzählungspunkte ist es empfehlenswert die JS Instanz neu zu starten da diese bei Aufzählungsänderungen gerne mal "zickt" was dann zu Skriptfehlern führt.
                          
                          S 1 Reply Last reply Reply Quote 0
                          • S
                            Sesamstrasse @Dominik F. last edited by

                            @dominik-f Ich könnte schwören, dass ich das bei meinem ersten Versuch auch getan habe. 😉 Aber daran lag es bei mir definitiv.

                            S 1 Reply Last reply Reply Quote 1
                            • S
                              Sesamstrasse @Sesamstrasse last edited by

                              Das zweite Problem war, dass ich die ids der Aufzählung door/window verwendet habe. Darum hat es zuerst nicht funktioniert. Das Skript geht explizit auf die DE Anzeigetexte. Darum ging es beim ersten Versuch nicht, als ich den JS Adapter durchgestartet habe.

                              Jetzt macht es Sinn.

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

                                @sesamstrasse

                                Ah okay, das ist mir noch nie aufgefallen, da ich generell immer die gleiche ID und Name verwende in den Aufzählungen

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

                                  @Pittini Mir ist aufgefallen das seit einiger Zeit mein Ram voll läuft und mittlerweile auch IoB nach ein paar Tagen nicht mehr erreichbar ist, sobald ich dieses Script laufen habe. Ich habe die neuste Version. In der Log sehe ich leider nichts, was in Verbindung mit deinem Script stehen könnte, dennoch ist es so, wenn ich es deaktiviere läuft der ioB tagelang unauffällig, starte ich das Script geht es nach 1-3 Tagen los. Ram wird immer voller, Teilweise auch bis an die Grenze, beruhigt sich dann wieder. Mittlerweile schmiert dann auch irgendwie der iob ab, ich komm dann gar nicht mehr aufs Web If.

                                  Ich häng hier dennoch mal die Log an, vllt kannst du da was sehen...

                                  log.txt

                                  Die Log ist voll vom DB Close, ich hab da mal jede Menge gelöscht sonst hätte ich es nicht hochladen können.

                                  Auch sonst ist das System auf dem neusten Stand. (Latest)

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

                                    @d3ltoroxp Das Skript ist so oft im Einsatz, dass ich ein generisches Problem ausschliesse. Du müßtest jetzt rausfinden, was bei Dir anders als bei den anderen, mich eingeschlossen, ist.

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      Manolo last edited by

                                      Das Script läuft bei mir jetzt schon einige Wochen ohne Probleme.
                                      Ist zwar sehr groß und mächtig, aber man kann ja Funktionen die nicht benötigt werden ausschalten.
                                      Bei mir habe ich noch eine Variable für den Wallpanel Adapter eingefügt, damit die Ansagen auf dem Tablet über Wallpanel gemacht werden. War sehr einfach umzusetzen.

                                      Nun hätte ich aber noch eine bitte!
                                      Es gibt zwar die Variable für Anwesenheit, aber keine Möglichkeit eine Meldung auszugeben wenn man das Haus verläßt und ein Fenster noch irgendwo offen steht.
                                      Zum Beispiel: Anwesenheit wird false, Fenster offen ist true, dann sofort eine Meldung per Telegramm.

                                      Momentan habe ich das mit einem separaten Script realisiert.

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

                                        @manolo Wie Du selber sagst, ist das Skript eh schon recht fett, deswegen werd ich das nicht integrieren, Dein Weg ist da genau der richtige. Das Skript stellt die Info zur Verfügung ob noch was offen ist, und darauf setzt Du ein eigenes Mini Skript auf.

                                        sigi234 1 Reply Last reply Reply Quote 0
                                        • sigi234
                                          sigi234 Forum Testing Most Active @Pittini last edited by

                                          @pittini

                                          Hallo, könnte man dein Skript auch für die Anzeige von Echo Dots verwenden?
                                          Also im Raum XYZ läuft gerade ein Lied? Ist das sehr Aufwendig das anzupassen?

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

                                            @sigi234 Wenns dafür iwo nen true/fals Dp gibt, würde das Konzept funktionieren, aber anpassen....eher nicht, das ist zu speziell auf Türen/Fenster, da wär der Aufwand größer als ein neues Skript zu machen und evtl. Teile zu verwenden. Da ich aber keiner Echos, Alexas etc. habe, werd ich da nix machen, könnt ja nich mal testen.

                                            sigi234 reindeer-web 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

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