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 @qqolli last edited by

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

      Habe mal ein Log angehängt, zeigt das öffnen und schließen eines Fensters:

      javascript.0	2020-07-10 17:21:02.918	info	(4270) script.js.Olli.TFK_Zählen: Reaching Meldung, msg= Keller Fenster geöffnet!
      

      Genau hier wird die Meldung abgesetzt.
      Das Skript springt die Funktion korrekt an, es wird korrekt der Text übergeben und innerhalb der Funktion gibts keine Fehlermeldung. Soweit von Skriptseite alles ok. Wenn Alexa nix sagt, sag ich mal liegts an Alexa oder deren Einstellungen. Da muß Dir wer helfen der ne Alexa hat, ich verweigere der Wanze den Zutritt hier bei mir und hab Snips laufen.

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

        @qqolli hat die Sprachausgabe schon mal funktioniert? weiter oben hattest du von Problemen geschrieben mit der neue Version und zu vor lief alles?
        welche Alexa verwendest du denn?

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

          @Pittini

          Ja, da hast Du natürlich recht. Hab das Ding auch nur geschenkt bekommen und dachte, probier es mal aus 🙂

          Snips scheint eine gute Alternative zu sein, wurde aber wohl letztes Jahr von Sonos "geschluckt". Hast Du für Snips Infos, wie man was aufbaut usw. Würde mich echt interessieren.

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

            @crunchip

            Hi, mit alles funktionieren meinte ich den Rest (also ohne Sprachausgabe). Ich benutze einen Sonos One im Alexa-Mode, kann sein das es daran liegt. Morgen bekomme ich noch ein Echo Dot (3. Generation), so das ich es mal am Wochenende ausprobieren kann, quasi Sonos vs. "Origignal". Mal sehen, ich halte Euch auf dem laufenden.

            @Pittini ,@crunchip Vielen Dank für Eure Hilfe und Mühe!

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

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

              Ich benutze einen Sonos One im Alexa-Mode, kann sein das es daran liegt.

              ja, da findest Du hier im Forum viele Beiträge. Mal gehen die Sonos und mal nicht.

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

                @dslraser

                Aber der Sound ist wirklich gut und die Dinger sind einfach anzuschliessen 🙂

                Bis jetzt, in den paar Tagen wo ich ihn habe, hat er was Alexa betrifft ganz gut funktioniert. Mal sehen, wie sich der Echo Dot schlägt.

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

                  @qqolli
                  es geht dabei um z.B. speak, oder ssml, oder auch Ankündigungen. Die gingen in den letzten Monaten immer mal wieder nicht auf sonos, auf allen anderen Alexa Geräten die das können ging es weiterhin.

                  Beispiel

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

                  qqolli 1 Reply Last reply Reply Quote 0
                  • Negalein
                    Negalein Global Moderator last edited by

                    @Pittini

                    Ich habe gerade das Script auf 1.6.5 geändert und bekomme 5 Warnmeldungen.

                    20:01:33.384	warn	javascript.0 (592) at init (script.js.Fenster.Fensterauswertung:308:45)
                    20:01:33.384	warn	javascript.0 (592) at main (script.js.Fenster.Fensterauswertung:323:5)
                    20:01:33.385	warn	javascript.0 (592) at InitialSort (script.js.Fenster.Fensterauswertung:291:5)
                    20:01:33.385	warn	javascript.0 (592) at script.js.Fenster.Fensterauswertung:255:13
                    20:01:33.390	info	javascript.0 (592) script.js.Fenster.Fensterauswertung: Reaching CheckForHmShit val=null typof val=string x=6 Sensor[x]=mihome.0.devices.magnet_158d0003cd4123
                    20:01:33.390	warn	javascript.0 (592) script.js.Fenster.Fensterauswertung: Unknown Windowstate undefined detected at mihome.0.devices.magnet_158d0003cd4123, please check your configuration
                    

                    Der Fensterkontakt zeigt jedoch den richtigen State an.
                    objects - ioBroker.png

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

                      @Negalein was hast du eingestellt im Script?
                      Tür/Fenster
                      du hast in deiner Aufzählung ...Verschluss, Tür?
                      ausserdem ist mihome.0.devices.magnet_158d0003cd4123 nicht der in deinem screen

                      Negalein 1 Reply Last reply Reply Quote 0
                      • Negalein
                        Negalein Global Moderator @crunchip last edited by

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

                        @Negalein was hast du eingestellt im Script?

                        const Skriptversion = "1.6.5" //vom 05.07.2020 - https://github.com/Pittini/iobroker-Fensterauswertung - https://forum.iobroker.net/topic/31674/vorlage-generisches-fensteroffenskript-vis
                        //Script um offene Fenster/Türen pro Raum und insgesamt zu zählen.
                        //Möglichkeit eine Ansage nach x Minuten einmalig oder zyklisch bis Fensterschließung anzugeben
                        //Dynamische erzeugung einer HTML Übersichtstabelle
                        //WICHTIG!!!
                        //Vorraussetzungen: Den Geräten müssen Räume zugewiesen sein, sowie die Funktion "Fenster" bzw "Tuer" für jeden entsprechenden Datenpunkt.
                        
                        //Grundeinstellungen
                        const logging = true; //Erweiterte Logs ausgeben?
                        const praefix = "javascript.0.FensterUeberwachung."; //Grundpfad für Script DPs - Muß innerhalb javascript.x sein.
                        const PresenceDp = "" //Pfad zum Anwesenheitsdatenpunkt, leer lassen wenn nicht vorhanden
                        const WhichWindowFunctionToUse = "Fenster"; // Legt fest nach welchem Begriff in Funktionen gesucht wird. Diese Funktion nur dem Datenpunkt zuweisen, NICHT dem ganzen Channel!
                        const WhichDoorFunctionToUse = "Tuer"; // Legt fest nach welchem Begriff in Funktionen gesucht wird. Diese Funktion nur dem Datenpunkt zuweisen, NICHT dem ganzen Channel!
                        const WindowIgnoreTime = 10000; // 10000 ms = 10 Sekunden - Zeit in ms für die kurzzeitiges öffnen/schliessen ignoriert wird
                        const DoorIgnoreTime = 5000; // 1000 ms = 1 Sekunden - Zeit in ms für die kurzzeitiges öffnen/schliessen ignoriert wird
                        
                        
                        //Nachrichteneinstellungen
                        const TimeToMsg = 1200000 // 300000 ms = 5 Minuten - Zyklus- bzw. Ablaufzeit für Tür/Fenster-offenwarnung/en
                        const MaxMessages = 5; //Maximale Anzahl der Nachrichten pro Raum 
                        
                        const UseTelegram = false; // Sollen Nachrichten via Telegram gesendet werden?
                        const UseAlexa = false; // Sollen Nachrichten via Alexa ausgegeben werden?
                        const AlexaId = ""; // Die Alexa Seriennummer.
                        const UseMail = true; //Nachricht via Mail versenden?
                        const UseSay = false; // Sollen Nachrichten via Say ausgegeben werden? Autorenfunktion, muß deaktiviert werden.
                        const UseEventLog = false; // Sollen Nachrichten ins Eventlog geschreiben werden? Autorenfunktion, muß deaktiviert werden.
                        const NoMsgAtPresence = false; //Sollen Nachrichten bei Anwesenheit unterdrückt werden?
                        
                        //Tabelleneinstellungen
                        const DoorOpenImg = "/icons-mfd-svg/fts_door_open.svg"; //Icon für Tür offen
                        const DoorCloseImg = "/icons-mfd-svg/fts_door.svg"; // Icon für Tür geschlossen
                        const DoorTiltedImg = "/icons-mfd-svg/fts_door_tilt.svg" // Icon für Tür gekippt
                        const WindowOpenImg = "/icons-mfd-svg/fts_window_1w_open.svg"; //Icon für Fenster offen
                        const WindowCloseImg = "/icons-mfd-svg/fts_window_1w.svg"; // Icon für Fenster geschlossen
                        const WindowTiltedImg = "/icons-mfd-svg/fts_window_1w_tilt.svg" //Icon für Fenster gekippt
                        const WindowOpenTiltedImg = "/icons-mfd-svg/fts_window_2w_open_l_tilt_r.svg" //Icon für offen und gekippt in einem Raum gleichzeitig
                        const VentImg = "/icons-mfd-svg/vent_ventilation.svg"; //Icon für Lüftungsinfo
                        const ImgInvert = 1; // Bildfarben invertieren? Erlaubte Werte von 0 bis 1
                        const OpenWindowColor = "#f44336"; // Farbe für Fenster offen
                        const OpenDoorColor = "darkorange"; //Farbe für Tür offen
                        const TiltedWindowColor = "#F56C62"; //Farbe für gekippte Fenster o. Tür/en
                        const ClosedWindowColor = "#4caf50"; // Farbe für geschlossene Fenster o. Tür/en
                        const VentWarnColor = "#ffc107"; // Farbe für Lüftungswarnung
                        const ShowCaptionTbl = false; // Überschrift anzeigen?
                        const ShowSummaryTbl = true; // Zusammenfassung anzeigen?
                        const ShowDetailTbl = true; // Details anzeigen?
                        const RoomSortMode = 1; //0= Raumliste unsortiert, 1= alpabetisch sortiert, 2= Benutzerdefinierte Sortierung
                        
                        //Logeinstellungen
                        const MaxLogEntrys = 20; //Maximale Anzahl der zu speichernden Logeinträge
                        const AutoAddTimestamp = true; //Soll den geloggten Nachrichten automatisch ein Zeitsempel zugeordnet werden?
                        const LogTimeStampFormat = "TT.MM.JJJJ SS:mm:ss"; //Zeitformatierung für Log Zeitstempel
                        const LogEntrySeparator = "<br>"; //Trennzeichen für Logeinträge
                        

                        Tür/Fenster
                        du hast in deiner Aufzählung ...Verschluss, Tür?

                        Verschluss ist jetzt weg (keine Ahnung von wo der gekommen ist). Meldungen bleiben

                        20:23:28.475	warn	javascript.0 (592) at init (script.js.Fenster.Fensterauswertung:308:45)
                        20:23:28.476	warn	javascript.0 (592) at main (script.js.Fenster.Fensterauswertung:323:5)
                        20:23:28.476	warn	javascript.0 (592) at InitialSort (script.js.Fenster.Fensterauswertung:291:5)
                        20:23:28.476	warn	javascript.0 (592) at Object.<anonymous> (script.js.Fenster.Fensterauswertung:255:13)
                        20:23:28.477	warn	javascript.0 (592) script.js.Fenster.Fensterauswertung: Unknown Windowstate undefined detected at mihome.0.devices.magnet_158d0002ec2655, please check your configuration
                        20:23:28.480	warn	javascript.0 (592) at init (script.js.Fenster.Fensterauswertung:308:45)
                        20:23:28.480	warn	javascript.0 (592) at main (script.js.Fenster.Fensterauswertung:323:5)
                        20:23:28.481	warn	javascript.0 (592) at InitialSort (script.js.Fenster.Fensterauswertung:291:5)
                        20:23:28.481	warn	javascript.0 (592) at Object.<anonymous> (script.js.Fenster.Fensterauswertung:255:13)
                        20:23:28.482	warn	javascript.0 (592) script.js.Fenster.Fensterauswertung: Unknown Windowstate undefined detected at mihome.0.devices.magnet_158d0003139ea7, please check your configuration
                        20:23:28.485	warn	javascript.0 (592) at init (script.js.Fenster.Fensterauswertung:308:45)
                        20:23:28.485	warn	javascript.0 (592) at main (script.js.Fenster.Fensterauswertung:323:5)
                        20:23:28.485	warn	javascript.0 (592) at InitialSort (script.js.Fenster.Fensterauswertung:291:5)
                        20:23:28.485	warn	javascript.0 (592) at Object.<anonymous> (script.js.Fenster.Fensterauswertung:255:13)
                        20:23:28.486	warn	javascript.0 (592) script.js.Fenster.Fensterauswertung: Unknown Windowstate undefined detected at mihome.0.devices.magnet_158d000316d3ad, please check your configuration
                        20:23:28.489	warn	javascript.0 (592) at init (script.js.Fenster.Fensterauswertung:308:45)
                        20:23:28.489	warn	javascript.0 (592) at main (script.js.Fenster.Fensterauswertung:323:5)
                        20:23:28.489	warn	javascript.0 (592) at InitialSort (script.js.Fenster.Fensterauswertung:291:5)
                        20:23:28.489	warn	javascript.0 (592) at Object.<anonymous> (script.js.Fenster.Fensterauswertung:255:13)
                        20:23:28.490	warn	javascript.0 (592) script.js.Fenster.Fensterauswertung: Unknown Windowstate undefined detected at mihome.0.devices.magnet_158d00032b770e, please check your configuration
                        20:23:28.493	warn	javascript.0 (592) at init (script.js.Fenster.Fensterauswertung:308:45)
                        20:23:28.493	warn	javascript.0 (592) at main (script.js.Fenster.Fensterauswertung:323:5)
                        20:23:28.494	warn	javascript.0 (592) at InitialSort (script.js.Fenster.Fensterauswertung:291:5)
                        20:23:28.494	warn	javascript.0 (592) at Object.<anonymous> (script.js.Fenster.Fensterauswertung:255:13)
                        20:23:28.494	warn	javascript.0 (592) script.js.Fenster.Fensterauswertung: Unknown Windowstate undefined detected at mihome.0.devices.magnet_158d0003cd589f, please check your configuration
                        20:23:28.497	warn	javascript.0 (592) at init (script.js.Fenster.Fensterauswertung:308:45)
                        20:23:28.498	warn	javascript.0 (592) at main (script.js.Fenster.Fensterauswertung:323:5)
                        20:23:28.498	warn	javascript.0 (592) at InitialSort (script.js.Fenster.Fensterauswertung:291:5)
                        20:23:28.498	warn	javascript.0 (592) at Object.<anonymous> (script.js.Fenster.Fensterauswertung:255:13)
                        20:23:28.499	warn	javascript.0 (592) script.js.Fenster.Fensterauswertung: Unknown Windowstate undefined detected at mihome.0.devices.magnet_158d0003cd2299, please check your configuration
                        20:23:28.502	warn	javascript.0 (592) at init (script.js.Fenster.Fensterauswertung:308:45)
                        20:23:28.502	warn	javascript.0 (592) at main (script.js.Fenster.Fensterauswertung:323:5)
                        20:23:28.502	warn	javascript.0 (592) at InitialSort (script.js.Fenster.Fensterauswertung:291:5)
                        20:23:28.502	warn	javascript.0 (592) at Object.<anonymous> (script.js.Fenster.Fensterauswertung:255:13)
                        20:23:28.503	warn	javascript.0 (592) script.js.Fenster.Fensterauswertung: Unknown Windowstate undefined detected at mihome.0.devices.magnet_158d0003cd4123, please check your configuration
                        

                        ausserdem ist mihome.0.devices.magnet_158d0003cd4123 nicht der in deinem screen

                        War ein Beispiel. Hab den falschen Screenshot erwischt. Es betrifft alle 7 Sensoren.

                        Obwohl 1 offen ist (Küche), wird es geschlossen angezeigt.
                        vis.png

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

                          @Negalein Verschluss war noch aus den anfangszeiten des scripts
                          überprüfe deine Sensoren nochmal genau aller Räume Türen und Fenster.
                          Danach Instanz javascript einmal neustarten, danach müsste auch das script funktionieren

                          die Anzeige nutze ich gar nicht, nur die Sprachausgabe, für die Anzeige habe ich was anderes

                          Negalein 2 Replies Last reply Reply Quote 0
                          • Negalein
                            Negalein Global Moderator @crunchip last edited by

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

                            überprüfe deine Sensoren nochmal genau aller Räume Türen und Fenster.

                            leider keine Änderung

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

                              @Negalein welche Meldung kommt dann jetzt?
                              bei mir sieht das z.b so aus
                              6d8907d1-1b6b-4c79-8387-a293e231ad2a-image.png

                              Negalein 1 Reply Last reply Reply Quote 0
                              • Negalein
                                Negalein Global Moderator @crunchip last edited by

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

                                welche Meldung kommt dann jetzt?

                                An den Meldungen hat sich nichts geändert

                                20:42:16.151	warn	javascript.0 (1602) at init (script.js.Fenster.Fensterauswertung:308:45)
                                20:42:16.151	warn	javascript.0 (1602) at main (script.js.Fenster.Fensterauswertung:323:5)
                                20:42:16.151	warn	javascript.0 (1602) at InitialSort (script.js.Fenster.Fensterauswertung:291:5)
                                20:42:16.152	warn	javascript.0 (1602) at Object.<anonymous> (script.js.Fenster.Fensterauswertung:255:13)
                                20:42:16.153	info	javascript.0 (1602) script.js.Fenster.Fensterauswertung: Reaching CheckForHmShit val=null typof val=string x=4 Sensor[x]=mihome.0.devices.magnet_158d0003cd589f
                                20:42:16.153	warn	javascript.0 (1602) script.js.Fenster.Fensterauswertung: Unknown Windowstate undefined detected at mihome.0.devices.magnet_158d0003cd589f, please check your configuration
                                
                                Dominik F. 1 Reply Last reply Reply Quote 0
                                • Dominik F.
                                  Dominik F. @Negalein last edited by

                                  @Negalein

                                  Du hast den ganzen Channel Tuer genannt, es soll jedoch nur der einzelne State in die Aufzählung

                                  Negalein 1 Reply Last reply Reply Quote 0
                                  • Negalein
                                    Negalein Global Moderator @Dominik F. last edited by

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

                                    Du hast den ganzen Channel Tuer genannt, es soll jedoch nur der einzelne State in die Aufzählung

                                    Ah, muss ich überlesen haben.
                                    Ändere es gleich.

                                    1 Reply Last reply Reply Quote 0
                                    • Negalein
                                      Negalein Global Moderator last edited by

                                      @crunchip @Dominik-F

                                      Bingo, es läuft
                                      Danke

                                      1 Reply Last reply Reply Quote 0
                                      • Negalein
                                        Negalein Global Moderator @crunchip last edited by

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

                                        für die Anzeige habe ich was anderes

                                        was verwendest du dafür?

                                        Gibt es dort auch einen DP für die Anzahl aller Türen und Fenster gemeinsam?

                                        Derzeit verwende ich noch dieses Script mit dem "Metro - tile String" Widget.
                                        Screenshot_2020-07-11 Edit vis.png

                                        /* Status Zahl Fenster
                                        Homematic var cacheSelectorLevel = $('channel[state.id=*.STATE](functions="Fenster")');
                                        Mi var cacheSelectorState = $('state[id=*.state](functions="Fenster")');
                                        {1}
                                        */
                                        var logging = false;
                                         
                                        var idAnzahlEin = 'javascript.0.Status.Fenster.Anzahl_auf',
                                            idAnzahl = 'javascript.0.Status.Fenster.Anzahl',
                                            idText = 'javascript.0.Status.Fenster.Text',
                                            idRaum = 'javascript.0.Status.Fenster.Raum', // <---- NEU
                                            idAnsage = 'javascript.0.Status.Fenster.Ansage';
                                         
                                        // Ab hier nix mehr ändern
                                        createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Lichter
                                            type: 'number',
                                            name: 'Anzahl aller Fenster',
                                            min: 0,
                                            def: 0,
                                            role: 'value'
                                        });
                                        createState(idAnzahlEin, { // Anzahl der Fenster, die auf sind als Variable unter Javascript.0 anlegen
                                            type: 'number',
                                            name: 'Anzahl der offenen Fenster',
                                            min: 0,
                                            def: 0,
                                            role: 'value'
                                        });
                                        createState(idText, { // Anzahl der brennenden Lichter und deren Namen als Variable unter Javascript.0 anlegen
                                            type: 'string',
                                            name: 'Offene Fenster',
                                            desc: 'Namen der offenen Fenster',
                                            def: ' ',
                                            role: 'value'
                                        });
                                        createState(idAnsage, {
                                            type: 'string',
                                            name: 'Offene Fenster (Ansage)',
                                            desc: 'Namen der offenen Fenster (für Ansage aufbereitet)',
                                            def: ' ',
                                            role: 'value'
                                        });
                                        createState(idRaum, { // Räume, in denen Lichter brennen // <---- NEU
                                            type: 'string',
                                            name: 'Räume mit offenen Fenster',
                                            desc: 'Namen der Räume, in denen Fenster offen sind',
                                            def: ' ',
                                            role: 'value'
                                        });
                                         
                                        //var cacheSelectorState = $('channel[state.id=*.STATE](functions="Licht")'); // Gewerk Licht
                                        var cacheSelectorLevel = $('channel[state.id=*.LEVEL](functions="XXX")');
                                        //var cacheSelectorHue = $('state[id=*.on](functions=Licht)');
                                        var cacheSelectorState2 = $('channel[state.id=*.STATE](functions="Fenster")'); //Homematic
                                        var cacheSelectorState = $('state[id=*.state](functions="Fenster")'); //Mi
                                         
                                        function checkDevices(obj) {
                                            // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Licht auf 0
                                            var anzahlLichterAn = 0;
                                            var anzahlLichter = 0;
                                            var textLichterAn = [];
                                            var textRaum = [];
                                            if (logging) {
                                                log('++++++ Fenster Anzahl ++++ ');
                                                log('#### Mi ##### ');
                                            }
                                            cacheSelectorState.each(function(id, i) { // Schleife für jedes gefundenen Element *.state im Gewerk Fenster
                                                var status = getState(id).val; // Zustand *.state abfragen (jedes Element)
                                                var deviceId = id.substring(0, id.lastIndexOf("."));
                                                var devicename = getObject(deviceId).common.name; 
                                                var raumname = getObject(id, "rooms").enumNames[0];
                                                if (logging) {
                                                    log('---Mi----');
                                                    log('Raum: ' + JSON.stringify(raumname));
                                                    log('Status: ' + status);
                                                }
                                                if (status) { // wenn Zustand = true, dann wird die Anzahl der Fenster hochgezählt
                                                    ++anzahlLichterAn;
                                                    textLichterAn.push(devicename); // Zu Array hinzufügen
                                                    textRaum.push(raumname); // <---- NEU
                                                }
                                                ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                                            });
                                            
                                            cacheSelectorState2.each(function(id, i) { // Schleife für jedes gefundenen Element *.ON im Gewerk Licht
                                                var obj = getObject(id);
                                                var name = getObject(id).common.name;
                                                var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                                                var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
                                                var raumname = getObject(id, "rooms"); // <---- NEU
                                         
                                                // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                                                // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) { 
                                                if (logging) {
                                                    log('---Homematic----');
                                                    log('Kanal: ' + name);
                                                    log('Status: ' + status);
                                                }
                                                if (status) { // wenn Zustand = true, dann wird die Anzahl der Lichter hochgezählt
                                                    ++anzahlLichterAn;
                                                    textLichterAn.push(devicename); // Zu Array hinzufügen
                                                    textRaum.push(raumname.enumNames); // <---- NEU
                                                }
                                                ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                                                // } // ENDE VK-Abfrage
                                            });
                                         
                                            if (logging) log('#### DIMMER ##### ');
                                            cacheSelectorLevel.each(function(id, i) { // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Licht
                                                var obj = getObject(id);
                                                var name = getObject(id).common.name;
                                                var status = getState(id).val; // Zustand *.LEVEL abfragen (jedes Element)
                                                var devicename = name.substring(0, name.indexOf(".LEVEL")); //.state aus Text entfernen
                                                var raumname = getObject(id, "rooms"); // <---- NEU
                                         
                                                // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                                                // if ( (devicename.search(/(CUX)|(K2)|(K3)|(V10)|(VK)|(:)/ig) == -1) ) { // Geräte mit diesen Strings im namen nicht beachten
                                                
                                                if (logging) {
                                                    log('-------');
                                                    log('Kanal: ' + name);
                                                    log('Status: ' + status + '%');
                                                }
                                                if (parseFloat(status) > 0) { // Wenn Dimmwert über 0
                                                    ++anzahlLichterAn;
                                                    textLichterAn.push(devicename); // Zu Array hinzufügen
                                                    textRaum.push(raumname.enumNames); // <---- NEU
                                                }
                                                ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                                                // } // Ende Abfrage VK 
                                            });
                                         
                                            // Array mit Lichternamen sortieren
                                            textLichterAn.sort();
                                            textRaum.sort(); // <---- NEU
                                            // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
                                            if (logging) log("Text: " + textLichterAn);
                                            if (logging) log("Anzahl Fenster: " + anzahlLichter + " # davon Fenster offen: " + anzahlLichterAn);
                                            // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                                            setState(idText, textLichterAn.join(', ')); // Schreibt die aktuelle Namen der eingeschalteten Lichter
                                            setState(idAnzahlEin, textLichterAn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
                                            setState(idAnzahl, anzahlLichter); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
                                            // setState(idRaum, textRaum.join(',<br>')); // Räume, in denen Licht brennt // <---- NEU
                                            setState(idRaum, textRaum.join(', ')); // Räume, in denen Licht brennt // <---- NEU
                                        }
                                         
                                        // Trigger
                                        cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Licht
                                            if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                            checkDevices();
                                        });
                                        cacheSelectorState2.on(function(obj) { // bei Zustandänderung *.ON von HUE Lampen im Gewerk Licht
                                            if (logging) log('Auslösende Homematic: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                            checkDevices();
                                        });
                                        cacheSelectorLevel.on(function(obj) { // bei Zustandänderung *.LEVEL im Gewerk Licht
                                            if (logging) log('Auslösender Dimmer: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                            checkDevices();
                                        });
                                         
                                        function main() {
                                            setTimeout(function() {
                                                if (logging) log('Auslöser Skriptstart');
                                                checkDevices();
                                            }, 2000);
                                        }
                                         
                                        main(); // Skriptstart-Auslöser
                                         
                                        // Aufbereitung für Ansage
                                        function strip_tags(data) {
                                            var rueckgabe = data.replace(/(&nbsp;|<([^>]+)>)/ig, " ");
                                            return (rueckgabe);
                                        }
                                         
                                        on(idText, function(obj) {
                                            var text = obj.state.val;
                                            text = (getState(idAnzahl).val > 0) ? 'Fenster offen: ' + strip_tags(text) : 'Alle Fenster geschlossen';
                                            setState(idAnsage, text);
                                        });
                                        

                                        Das Script von Pitini gibt leider keine Gesamtanzahl aus.

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

                                          @Negalein ich habe oben in meiner Menüleiste über Sichtbarkeit gesteuert. Wenn Licht an, bzw Fenster oder Tür geöffnet ist, wird mir der Raumname eingeblendet, ansonsten ist alles ausgeblendet
                                          1e0b594f-243d-4308-9605-2659eea1a23b-image.png
                                          50b2d85e-b6df-40a4-806d-682a23e94c2d-image.png

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

                                            @Pittini Danke! Vor lauter Bäumen den Wald nicht gesehen...

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            822
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

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