Navigation

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

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Problem mit "Fenster offen Script"

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

      @werner2000x sagte: Script angepasst

      Es muss die Schreibweise in der ID "enum.functions.window" verwendet werden:

      log($('*(functions=window)').toArray());
      

      muss eine ID-Liste mit allen Fenstern ausgeben.

      1 Reply Last reply Reply Quote 0
      • werner2000x
        werner2000x @Codierknecht last edited by

        @codierknecht Ja stimmt, aber mit window gab es ja keine ergebnisse,
        Das object DoorsOpen ist 0.

        Homoran Codierknecht 2 Replies Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators @werner2000x last edited by

          @werner2000x was steht im log nach dem Start des letzten Skripts von @paul53 ?

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

            @werner2000x sagte in Problem mit "Fenster offen Script":

            aber mit window gab es ja keine ergebnisse

            Zeigt genau die States, die ich in die Kategorie gepackt habe:

            20439edb-95a9-4cc5-93e0-2b753d06808e-image.png

            1 Reply Last reply Reply Quote 0
            • werner2000x
              werner2000x @Homoran last edited by

              @homoran 2024-11-13 15:49:07.665 warn get state error: DB closed

              Homoran 1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @werner2000x last edited by Homoran

                @werner2000x sagte in Problem mit "Fenster offen Script":

                @homoran 2024-11-13 15:49:07.665 warn get state error: DB closed

                bitte alles im Kontext zeigen.
                So ein Schnipsel hilft nicht wirklich

                ist das wirklich das Skript, das Paul und Codierknecht benutzt haben?

                werner2000x 1 Reply Last reply Reply Quote 0
                • werner2000x
                  werner2000x @Homoran last edited by

                  @homoran ich finde den log nicht mehr. Aber jetzt sehe ich 3 offene Fenster im object "DoorsOpen". Jedoch ändert sich die Anzahl nicht, wenn ich eine neues Fenster aufmache.

                  Homoran 1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @werner2000x last edited by

                    @werner2000x Bitte lass dir helfen!
                    Das geht nicht wenn du immer etwas anderes machst, als wir dich bitten!

                    Wir sind im Moment hier;

                    @paul53 sagte in Problem mit "Fenster offen Script":

                    @werner2000x sagte: Script angepasst

                    Es muss die Schreibweise in der ID "enum.functions.window" verwendet werden:

                    log($('*(functions=window)').toArray());
                    

                    muss eine ID-Liste mit allen Fenstern ausgeben.

                    1 Reply Last reply Reply Quote 1
                    • werner2000x
                      werner2000x last edited by werner2000x

                      Ich bin doch jetzt neuen script, da es mir einfacher ist:

                      const ids = Array.prototype.slice.apply($("(functions=window)"));
                       
                      on({id: ids, change: "ne"}, async function() {
                          let count = 0;
                          for (let id of ids) {
                              if (getState(id).val) count++;
                          }
                          setStateAsync("javascript.0.FensterUeberwachung.DoorsOpen", count, true);
                      });
                      
                      Codierknecht Homoran paul53 3 Replies Last reply Reply Quote 0
                      • Codierknecht
                        Codierknecht Developer Most Active @werner2000x last edited by

                        @werner2000x sagte in Problem mit "Fenster offen Script":

                        Ich bin doch jetzt neuen script:

                        Wir aber (noch) nicht.
                        Wir möchten erstmal Stück für Stück sehen, was da wie eingerichtet ist.

                        1 Reply Last reply Reply Quote 1
                        • Homoran
                          Homoran Global Moderator Administrators @werner2000x last edited by

                          @werner2000x sagte in Problem mit "Fenster offen Script":

                          Ich bin doch jetzt neuen script:

                          sollst du aber nicht

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

                            @werner2000x sagte: neuen script

                            Dann ergänze es durch Log-Ausgaben:

                            const ids = Array.prototype.slice.apply($("(functions=window)"));
                            log(ids);
                             
                            on({id: ids, change: "ne"}, async function() {
                                let count = 0;
                                for (let id of ids) {
                                    if (getState(id).val) count++;
                                }
                                setStateAsync("javascript.0.FensterUeberwachung.DoorsOpen", count, true);
                                log('Anzahl offen: ' + count);
                            });
                            
                            werner2000x 1 Reply Last reply Reply Quote 2
                            • werner2000x
                              werner2000x @paul53 last edited by

                              @paul53 Hier der Log:

                              javascript.0	16:11:59.416	info	script.js.Meine_Geräte.FensterOffenWarung: Anzahl offen: 3
                              
                              paul53 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @werner2000x last edited by

                                @werner2000x sagte: Hier der Log:

                                Wo ist der Log aus Zeile 2?

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

                                  @paul53 Log aus 2. Zeile:

                                  avascript.0	16:15:19.420	info	script.js.Meine_Geräte.FensterOffenWarung: [ 'innogy-smarthome.0.Esszimmer.Fenstersensor-Esszimmer.Fenstersensor-Esszimmer.IsOpen', 'innogy-smarthome.0.Flur.Tür-und-Fenstersensor-1.Tür-und-Fenstersensor-1.IsOpen', 'innogy-smarthome.0.Küche.Fenstersensor-Küche.Fenstersensor-Küche.IsOpen', 'innogy-smarthome.0.Schlafzimmer.Fenster.WDS.IsOpen', 'zigbee.0.00158d008b158119.contact', 'zigbee.0.00158d008b159b8c.contact', 'zigbee.0.00158d008b159c0a.contact', 'zigbee.0.00158d008b31a568.contact' ]
                                  javascript.0	16:15:19.421	info	script.js.Meine_Geräte.FensterOffenWarung: registered 8 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                  
                                  paul53 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @werner2000x last edited by paul53

                                    @werner2000x sagte: Log aus 2. Zeile

                                    Da sind doch die 8 Datenpunkt-IDs der Fenster!
                                    Liefert "contact" ebenfalls true bei "offen"?

                                    werner2000x 1 Reply Last reply Reply Quote 1
                                    • werner2000x
                                      werner2000x @paul53 last edited by werner2000x

                                      @paul53 Die Fenster isopen (innogy) liefern 0 bei zu, die contact-event 1 bei zu.

                                      Kategorie3.jpg

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

                                        @werner2000x sagte: contact-event 1 bei zu.

                                        Dann modifiziere die Schleife:

                                            for (let id of ids) {
                                                let open = getState(id).val;
                                                if(id.includes('contact')) open = !open;
                                                if(open) count++;
                                            }
                                        

                                        Ich würde allerdings eine Vereinheitlichung per Alias bevorzugen, wie @Codierknecht bereits erwähnte.

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

                                          @paul53 Danke für die Hilfe.
                                          Es kommt der Fehler "open is not defined"

                                          onst ids = Array.prototype.slice.apply($("(functions=window)"));
                                          log(ids);
                                           
                                          on({id: ids, change: "ne"}, async function() {
                                              let count = 0;
                                              for (let id of ids) {
                                                  if (getState(id).val) count++;
                                                   if(id.includes('contact')) open = !open;
                                                  if(open) count++;
                                              }
                                              setStateAsync("javascript.0.FensterUeberwachung.DoorsOpen", count, true);
                                              log('Anzahl offen: ' + count);
                                              	
                                              
                                          });
                                          
                                          paul53 1 Reply Last reply Reply Quote 0
                                          • paul53
                                            paul53 @werner2000x last edited by

                                            @werner2000x sagte: "contact event" jedoch immer noch als offen gewertet.

                                            Du solltest die bestehende Schleife modifizieren und nicht eine weitere Schleife hinzufügen.

                                            const ids = Array.prototype.slice.apply($("(functions=window)"));
                                            // log(ids);
                                             
                                            on({id: ids, change: "ne"}, async function() {
                                                let count = 0;
                                                for (let id of ids) {
                                                    let open = getState(id).val;
                                                    if(id.includes('contact')) open = !open;
                                                    if(open) count++;
                                                }
                                                setStateAsync("javascript.0.FensterUeberwachung.DoorsOpen", count, true);
                                                log('Anzahl offen: ' + count);
                                            });
                                            
                                            werner2000x 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            798
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            71
                                            2603
                                            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