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

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Vorlage] Generisches Fensteroffenskript + Vis

    This topic has been deleted. Only users with topic management privileges can see it.
    • crunchip
      crunchip Forum Testing Most Active @dslraser last edited by crunchip

      @dslraser und wo soll ich das im Script eintragen?

      
                  if (UseAlexa) {
                      if (AlexaId != "") setState("alexa2.0.Echo-Devices." + AlexaId + ".Commands.announcement"/*announcement*/, msg);
                  };
      
      dslraser 1 Reply Last reply Reply Quote 0
      • dslraser
        dslraser Forum Testing Most Active @crunchip last edited by

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

        und wo soll ich das im Script eintragen?

        dafür kenne ich das Script zu wenig, das wird Dir @Pittini schon sagen...
        Mir ging es nur darum, das man auch bei Ankündigungen die Lautstärke über den selben Weg mitgeben kannst, wie z.B. bei speak.

        und wenn Du keine Ankündigung willst (also ohne das DingDong), dann mach doch da mal speak draus.

        if (AlexaId != "") setState("alexa2.0.Echo-Devices." + AlexaId + ".Commands.speak"/*speak*/, msg);
        
        crunchip 1 Reply Last reply Reply Quote 0
        • crunchip
          crunchip Forum Testing Most Active @dslraser last edited by crunchip

          @dslraser wenn ich die Zeile änder und "Commands.speak" verwende funktioniert die Ausgabe nicht mehr richtig, dann kommt nur noch 1 Raum als Meldung, die anderen Räume werden nicht mit ausgegeben.

          Jetzt hab ich die Originalzeile wieder eingefügt und nun kamen alle drei Räume mit der gleichen Lautstärke,
          irgendwie sehr seltsam @Pittini
          zum Test, hab ich das script nun paar mal neu gestartet um die Ausgabe zu testen, Lautstärke blieb konstant, jedoch ist mir nun aufgefallen

          • Räume kommen immer in unterschiedlicher Reihenfolge
          • Teilweise fehlen Raum Nachrichten, in der Logausgabe sind sie aber zu sehen

          hängt das vllt mit javascript, socketio oder sonst der gleichen zusammen??

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

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

            dann kommt nur noch 1 Raum als Meldung, die anderen Räume werden nicht mit ausgegeben.

            Ich habe die Erfahrung gemacht, das Commands.announcement alles "durch schiebt", auch wenn es zeitgleich gesendet wird und nacheinander ansagt.
            Commands.speak sagt immer das letzte an, was gesendet wurde und bricht eventuell laufende Ansagen ab.

            Wie genau sieht denn die Ansage aus ? (also nicht das Log) Steht der Text noch drinn in Commands.announcement , oder ist das nach der Ansage weg ? Wenn da noch was drinn steht, kannst Du das mal hier posten.
            (Es könnte ja tatsächlich sein, das es mehrere Nachrichten sind und die mit Komma oder Semikolon getrennt sind und dann die zweite Nachricht kommt und die fängt vielleicht mit einer Zahl, irgendwas an, und die verstellt Dir die Lautstärke ?)

            crunchip 1 Reply Last reply Reply Quote 0
            • F
              fastfoot @crunchip last edited by

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

              Küche nicht gelüftet 2 Tage 20 Std. 10 Min.,14.07.2020 16:27:32: Kinderzimmer nicht gelüftet 2 Tage 1 Std. 8 Min.,14.07.2020 16:27:32: Badezimmer nicht gelüftet 2 Tage 6 Std. 9 Min.

              Man bräuchte hier die Original Message, nicht das LOG. Habe es aber herausgefunden, nachdem ich mir ein paar virtuelle Sensoren 'besorgt' habe. Die Nachricht wird leiser, wenn die Sprach-Kommandos zu schnell aufeinanderfolgen, ich denke das muss/sollte man so hinnehmen.

              Mit der Lautstärke könnte man es so lösen:

              const UseAlexa = true; // Sollen Nachrichten via Alexa ausgegeben werden?
              const AlexaId = "G090xxxxxxxx1876"; // Die Alexa Seriennummer.
              const AlexaTmpVolume = 45; // Alexa Lautstärke
              .
              .
              .
                          if (UseAlexa) {
                              let tmpMsg = AlexaTmpVolume + ';' + msg;
                              if (AlexaId != "") setState("alexa2.0.Echo-Devices." + AlexaId + ".Commands.announcement"/*announcement*/, tmpMsg);
                          };
              
              
              crunchip 1 Reply Last reply Reply Quote 1
              • crunchip
                crunchip Forum Testing Most Active @dslraser last edited by

                @dslraser
                in Commands.announcement steht auch nur die letzte Meldung drin.
                und gerade getestet und verglichen, Ausgabe Kinderzimmer und Badezimmer kamen , Küche blieb aber aus, obwohl es im DP steht
                e5f77971-30d7-4023-ac34-3950485fce21-image.png
                irgendwie ist da doch was faul, mal gehts korrekt, mal nicht.
                Ist mir ja auch nur aufgefallen, als ich für mehrere Fenster den VentWarnTime eingerichtet hatte, alle anderen Sprachausgaben kommen ja nicht am Stück

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

                  @fastfoot perfekt, das klappt schon mal👍

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

                  wenn die Sprach-Kommandos zu schnell aufeinanderfolgen,

                  ist nur blöd, wenn man es eh nicht so laut eingestellt hat, bekommt man den Rest der Meldung gar nicht mit, weil man es gar nimmer hört.

                  bleibt nur noch das Phänomen, das ab und an nicht alles Sprachlich ausgegeben wird

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

                    @crunchip
                    eigentlich bleibt da nur alle anstehenden Nachrichten ein zu sammeln und als eine Nachricht (250 Zeichen Grenze beachten und mit Semikolon trennen) zu senden, oder aber etwas Zeitversetzt einzelne Nachrichten zu senden. Wieviel Zeitversetzt weiß ich aber auch nicht, da ja die Ansagen sicherlich verschieden lang sein können.
                    Na ja, da fällt dem Script Ersteller sicher auch noch was ein.

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

                      @dslraser wenn es ein generelles zeitliches Problem der Ausgabe sein sollte, müssten es andere ja auch haben und nicht nur bei mir der Fall sein.
                      Ausser man Lüftet immer schön alle Räume, dann kommen die Meldung ja erst gar nicht zu Stande😊 und fällt keinem auf

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

                        Ich hab hier auch ein kleines Problem, ich möchte für ein Fenster keine Audioausgabe, dort habe ich für öffnen/schließen false gesetzt und auch überschreiten der Öffnungszeit auf false. Es stellt sich jedes mal wieder auf true um. Hatte schon Script gestoppt, auf false gestellt und dann wieder Script gestartet, sofort wieder auf true. Das gleiche anders rum erst auf false gesetzt dann stop / start Script. Das selbe und wenn ich es nur auf false stelle, stellt es sich selber nach einer Zeit wieder auf true.

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

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

                          Ich hab hier auch ein kleines Problem, ich möchte für ein Fenster keine Audioausgabe, dort habe ich für öffnen/schließen false gesetzt und auch überschreiten der Öffnungszeit auf false. Es stellt sich jedes mal wieder auf true um. Hatte schon Script gestoppt, auf false gestellt und dann wieder Script gestartet, sofort wieder auf true. Das gleiche anders rum erst auf false gesetzt dann stop / start Script. Das selbe und wenn ich es nur auf false stelle, stellt es sich selber nach einer Zeit wieder auf true.

                          Hmm, da kann ich wenig helfen denk ich. Im Skript is eigentlich nix was das machen könnte, es gibt weder nen setstate auf diese States noch ist iwo forcecreation an.
                          Jemand ne Idee?

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

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

                            Jemand ne Idee?

                            Vielleicht hat es damit zu tun ?

                            https://forum.iobroker.net/post/466824

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

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

                              Vielleicht hat es damit zu tun ?
                              https://forum.iobroker.net/post/466824

                              @D3ltoroxp
                              Wär ne Möglichkeit, sollte sich ja nach dem update verifizieren lassen.

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

                                @Pittini Genau, das scheint es gewesen zu sein. Die gesetzten States bleiben bestehen.

                                Danke @dslraser

                                @Pittini Weil du grad hier bist. Gibt es eine Möglichkeit, die Liste aus deinem Script nutzen um mir von Alexa ansagen zu lassen, welche Fenster alle offen sind ? Wenn ich sie z.b. danach frage, oder wenn man das Haus verlässt `?

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

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

                                  Gibt es eine Möglichkeit, die Liste aus deinem Script nutzen um mir von Alexa ansagen zu lassen, welche Fenster alle offen sind ? Wenn ich sie z.b. danach frage, oder wenn man das Haus verlässt `?

                                  Die Daten dazu liegen ja vor in:
                                  javascript.0.FensterUeberwachung.RoomsWithOpenWindows
                                  javascript.0.FensterUeberwachung.RoomsWithOpenDoors
                                  javascript.0.FensterUeberwachung.RoomsWithOpenings

                                  Wie man Alexa dazu bringt die Dir vorzulesen weis ich nicht, da ich die Abhörwanze nicht nutze. Aber da kann Dir bestimmt wer anders hier weiterhelfen.

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

                                    @Pittini Erstmal danke für das super Skript. Ich bin dabei dieses mit mein eigenem zu vereinen. Dabei hätte ich eventuell noch 2 Anregungen, die Du noch aufnehmen könntest, welche bestimmt auch für andere Nutzer interessant wären.

                                    1. Devices, wo man trotz NoMsgAtPresence = true immer eine Meldung bekommen kann unabhängig Presence
                                    2. Wenn man unterwegs ist (Presence false) und es eine Öffnung registriert, dass eine zusätzliche "Alarmvariable" gesetzt werden kann. Zusätzlich Infodevices, die die Alarmauslösung verhindern (z.B. keine Außentüren/Fenster)

                                    Ich hatte es in meinem Skript so in der Art eingebunden:

                                        // Nur wenn Alarmanlage scharf oder Device Info dann Meldung
                                        if (alarm === 1 || alarm === 2 || alarm === 3 || infodevice.indexOf(serial) != -1) {
                                            if (alarm === 1 || alarm === 2) setStateDelayed(idAlarm, 3,  1000);
                                        }
                                    

                                    Ebenfalls ist mir aufgefallen das die Variable PresenceDp nie ausgewertet wird, sondern nur NoMsgAtPresence für Push-Meldungen. Nutze Version 1.6.5.

                                    Ist nur ne Anregung/Idee. Ansonsten sehr genial das Skript.

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

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

                                      @Pittini Erstmal danke für das super Skript. Ich bin dabei dieses mit mein eigenem zu vereinen. Dabei hätte ich eventuell noch 2 Anregungen, die Du noch aufnehmen könntest, welche bestimmt auch für andere Nutzer interessant wären.

                                      1. Devices, wo man trotz NoMsgAtPresence = true immer eine Meldung bekommen kann unabhängig Presence
                                      2. Wenn man unterwegs ist (Presence false) und es eine Öffnung registriert, dass eine zusätzliche "Alarmvariable" gesetzt werden kann. Zusätzlich Infodevices, die die Alarmauslösung verhindern (z.B. keine Außentüren/Fenster)

                                      Ich hatte es in meinem Skript so in der Art eingebunden:

                                          // Nur wenn Alarmanlage scharf oder Device Info dann Meldung
                                          if (alarm === 1 || alarm === 2 || alarm === 3 || infodevice.indexOf(serial) != -1) {
                                              if (alarm === 1 || alarm === 2) setStateDelayed(idAlarm, 3,  1000);
                                          }
                                      

                                      Die Vorschläge wären sicher machbar, aber das is mir zu spezifisch, sind eh schon drölfich Einstelloptionen, sollen ja auch Einsteiger ne Chance haben das Skript zu nutzen.

                                      Ebenfalls ist mir aufgefallen das die Variable PresenceDp nie ausgewertet wird, sondern nur NoMsgAtPresence für Push-Meldungen. Nutze Version 1.6.5.

                                      Das stimmt so nicht, in Zeile 1396 wird ein Trigger draufgelegt, der Wert steht dann in Presence. Von da wird er allerdings tatsächlich nicht weitergenutzt, wird gefixt.

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

                                        @Pittini Ich habe es bei mir so gelöst (Zeile 1396):

                                            if (PresenceDp != "") { //Trigger für Anwesenheitsdatenpunkt erzeugen wenn vorhanden
                                                on("PresenceDp", function (dp) { //Trigger für PresenceDp erzeugen
                                                    Presence = dp.state.val;
                                                    if (NoMsgAtPresence && Presence) NoMsgAtPresence = false;
                                                });
                                            }
                                        

                                        Ist aber noch in Testphase...

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

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

                                          @Pittini Ich habe es bei mir so gelöst (Zeile 1396):

                                              if (PresenceDp != "") { //Trigger für Anwesenheitsdatenpunkt erzeugen wenn vorhanden
                                                  on("PresenceDp", function (dp) { //Trigger für PresenceDp erzeugen
                                                      Presence = dp.state.val;
                                                      if (NoMsgAtPresence && Presence) NoMsgAtPresence = false;
                                                  });
                                              }
                                          

                                          Ist aber noch in Testphase...

                                          Das kannste so nicht machen, das ist doppelt unsauber. Erstens isses ne Konstante deren Wert Du gar nicht ändern kannst. Zweitens würde ich das weder im Trigger machen noch überhaupt NoMsgAtPresence ändern, dafür gibts doch Presence.

                                          Ich hab das gestern (auch noch Testphase) so gelöst (Ab Zeile 335):

                                          function Meldung(msg) {
                                              if (logging) log("Reaching Meldung, msg= " + msg + " NoMsgAtPresence= " + NoMsgAtPresence + " Presence= " + Presence);
                                          
                                              if (NoMsgAtPresence && Presence) {
                                                  if (logging) log("Meldung blocked cause, NoMsgAtPresence= " + NoMsgAtPresence + " Presence= " + Presence);
                                              }
                                              else {
                                                  if (MuteMode != 1 && MuteMode != 2) {
                                                      if (UseSay) Say(msg);
                                          
                                                      if (UseAlexa) {
                                                          if (AlexaId != "") setState("alexa2.0.Echo-Devices." + AlexaId + ".Commands.announcement"/*announcement*/, msg);
                                                      };
                                                  };
                                                  if (MuteMode != 2) {
                                                      if (UseEventLog) {
                                                          WriteEventLog(msg);
                                                      };
                                          
                                                      if (UseTelegram) {
                                                          sendTo("telegram.0", "send", {
                                                              text: msg
                                                          });
                                                      };
                                          
                                                      if (UseMail) {
                                                          sendTo("email", {
                                                              html: msg
                                                          });
                                                      };
                                                  }
                                                  setState(praefix + "LastMessage", msg);
                                                  WriteMessageLog(msg);
                                              };
                                          }
                                          
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • H
                                            HoffmannOs last edited by

                                            Das Script hängt sich immer auf, ich habe in meiner Homematic den Geräten Gewerken und Räumen zugeordnet, dann kommt der fehler in IOB beim Neustart : ,,script.js.Log.Fensterauswertung: Reaching CreateRoomsWithVentWarnings" Iobroker hängt sich auf, wenn ich dann Manuell in den Aufzählungen bei den Geräten nur den States den Raum und das Gewerk zuordne geht es, gibt es da eine Lösung?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            818
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

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