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: 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
                      • werner2000x
                        werner2000x @paul53 last edited by

                        @paul53 sorry, habe falsch eingefügt. Jetzt klappt es. 🙂

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        470
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

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