Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Frage zu Fensterskript

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

Frage zu Fensterskript

Frage zu Fensterskript

Scheduled Pinned Locked Moved JavaScript
19 Posts 3 Posters 695 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    martinschm
    wrote on last edited by
    #1

    Hi,

    ich nutze das Fensterskript von smarthome-tricks.de. Dachte auch es verstanden zu haben, leider aktualisiert es die Werte nicht.

    function countOpenWindowsDoors()
    {
        var openWindows = 0;
        var openDoors = 0;
     
    // Fenster
            var windows = getObject("enum.functions.fenster").common.members;
            for(let i = 0; i < windows.length; i++) {
                var Status = getState(windows[i]+ ".state").val;
                if ( Status ) { openWindows = openWindows + 1; }
            }
     
    // Türen
            var doors = getObject("enum.functions.tueren").common.members;
            for(let i = 0; i < doors.length; i++) { 
                var Status = getState(doors[i]+ ".state").val; 
                if ( Status ) { openDoors = openDoors + 1; } 
            } 
            
        var openWindowsText = "Kein Fenster geöffnet"; 
        var openDoorText = "Keine Tür geöffnet"; 
        
        if ( openWindows > 0 ) {
            openWindowsText = openWindows + " Fenster geöffnet";
        }
    
    
        if ( openDoors > 0 ) {
            openDoorText = openDoors + " Türe(n) geöffnet";
        }
     
            setState('javascript.0.Status.StatusWindowOpenText', openWindowsText );
            setState('javascript.0.Status.StatusDoorOpenText', openDoorText );
            setState('javascript.0.Status.StatusWindowOpen', openWindows, true );
            setState('javascript.0.Status.StatusDoorOpen', openDoors, true );
    }
     
    function registerSubscription()
    {
        $('state(functions=fenster)').on(function(obj) {
            countOpenWindowsDoors();
        });
     
        $('state(functions=tueren)').on(function(obj) {
            countOpenWindowsDoors();
        });
    }
     
    registerSubscription();
    countOpenWindowsDoors();
    

    Hab im Vergleich zum Originalskript die Namen der Functions angepasst. Dort hießen sie doorstatus und windowstatus, bei mir nur fenster und tueren.

    Wenn ich das Skript ausführe oder neulade, läuft es auch durch. Aber die Subscription auf State changes scheint nicht zu funktionieren.

    paul53P 1 Reply Last reply
    0
    • M martinschm

      Hi,

      ich nutze das Fensterskript von smarthome-tricks.de. Dachte auch es verstanden zu haben, leider aktualisiert es die Werte nicht.

      function countOpenWindowsDoors()
      {
          var openWindows = 0;
          var openDoors = 0;
       
      // Fenster
              var windows = getObject("enum.functions.fenster").common.members;
              for(let i = 0; i < windows.length; i++) {
                  var Status = getState(windows[i]+ ".state").val;
                  if ( Status ) { openWindows = openWindows + 1; }
              }
       
      // Türen
              var doors = getObject("enum.functions.tueren").common.members;
              for(let i = 0; i < doors.length; i++) { 
                  var Status = getState(doors[i]+ ".state").val; 
                  if ( Status ) { openDoors = openDoors + 1; } 
              } 
              
          var openWindowsText = "Kein Fenster geöffnet"; 
          var openDoorText = "Keine Tür geöffnet"; 
          
          if ( openWindows > 0 ) {
              openWindowsText = openWindows + " Fenster geöffnet";
          }
      
      
          if ( openDoors > 0 ) {
              openDoorText = openDoors + " Türe(n) geöffnet";
          }
       
              setState('javascript.0.Status.StatusWindowOpenText', openWindowsText );
              setState('javascript.0.Status.StatusDoorOpenText', openDoorText );
              setState('javascript.0.Status.StatusWindowOpen', openWindows, true );
              setState('javascript.0.Status.StatusDoorOpen', openDoors, true );
      }
       
      function registerSubscription()
      {
          $('state(functions=fenster)').on(function(obj) {
              countOpenWindowsDoors();
          });
       
          $('state(functions=tueren)').on(function(obj) {
              countOpenWindowsDoors();
          });
      }
       
      registerSubscription();
      countOpenWindowsDoors();
      

      Hab im Vergleich zum Originalskript die Namen der Functions angepasst. Dort hießen sie doorstatus und windowstatus, bei mir nur fenster und tueren.

      Wenn ich das Skript ausführe oder neulade, läuft es auch durch. Aber die Subscription auf State changes scheint nicht zu funktionieren.

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by paul53
      #2

      @martinschm
      Zeige mal (mind.) einen Objektbaum, aus dem die Zuordnung des Gewerkes "fenster" ersichtlich ist.

                  var Status = getState(windows[i]+ ".state").val;
      

      + ".state" ist sicherlich falsch !

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      M 1 Reply Last reply
      0
      • paul53P paul53

        @martinschm
        Zeige mal (mind.) einen Objektbaum, aus dem die Zuordnung des Gewerkes "fenster" ersichtlich ist.

                    var Status = getState(windows[i]+ ".state").val;
        

        + ".state" ist sicherlich falsch !

        M Offline
        M Offline
        martinschm
        wrote on last edited by
        #3

        @paul53 said in Frage zu Fensterskript:

        @martinschm
        Zeige mal (mind.) einen Objektbaum, aus dem die Zuordnung des Gewerkes "fenster" ersichtlich ist.

                    var Status = getState(windows[i]+ ".state").val;
        

        + ".state" ist sicherlich falsch !

        Hier der Objektbaum
        278d5bff-1680-42fe-b1dc-cac955ef2c81-image.png

        Das +.state muß ich bei Xiaomi Sensoren machen. Ansonsten klappt es nicht. Das Skript läuft wie gesagt auch durch wenn man es manuell neulädt.

        paul53P 2 Replies Last reply
        0
        • M martinschm

          @paul53 said in Frage zu Fensterskript:

          @martinschm
          Zeige mal (mind.) einen Objektbaum, aus dem die Zuordnung des Gewerkes "fenster" ersichtlich ist.

                      var Status = getState(windows[i]+ ".state").val;
          

          + ".state" ist sicherlich falsch !

          Hier der Objektbaum
          278d5bff-1680-42fe-b1dc-cac955ef2c81-image.png

          Das +.state muß ich bei Xiaomi Sensoren machen. Ansonsten klappt es nicht. Das Skript läuft wie gesagt auch durch wenn man es manuell neulädt.

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by paul53
          #4

          @martinschm sagte:

          Hier der Objektbaum

          Ich meinte nicht den Gewerkeobjektbaum, sondern den Objektbaum mit Fenster-Geräten und -Datenpunkten, bei dem man die Gewerkezuordnung sieht.

          Das +.state muß ich bei Xiaomi Sensoren machen.

          Hast Du das Gewerk Kanälen zugeordnet ? Dann muss der Trigger anders aussehen.

          $('channel[state.id=*.state](functions=fenster)').on
          

          oder Du ersetzt alles ab Zeile 38 durch:

          on(/.+\.state$/, countOpenWindowsDoors);
          
          countOpenWindowsDoors();
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          M 1 Reply Last reply
          0
          • M martinschm

            @paul53 said in Frage zu Fensterskript:

            @martinschm
            Zeige mal (mind.) einen Objektbaum, aus dem die Zuordnung des Gewerkes "fenster" ersichtlich ist.

                        var Status = getState(windows[i]+ ".state").val;
            

            + ".state" ist sicherlich falsch !

            Hier der Objektbaum
            278d5bff-1680-42fe-b1dc-cac955ef2c81-image.png

            Das +.state muß ich bei Xiaomi Sensoren machen. Ansonsten klappt es nicht. Das Skript läuft wie gesagt auch durch wenn man es manuell neulädt.

            paul53P Offline
            paul53P Offline
            paul53
            wrote on last edited by
            #5

            @martinschm sagte:

            Das Skript läuft wie gesagt auch durch wenn man es manuell neulädt.

            Das Original-Skript setzt voraus, dass das Gewerk dem Datenpunkt (Name "Is opened") zugeordnet wird und nicht dem Kanal.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            1 Reply Last reply
            0
            • paul53P paul53

              @martinschm sagte:

              Hier der Objektbaum

              Ich meinte nicht den Gewerkeobjektbaum, sondern den Objektbaum mit Fenster-Geräten und -Datenpunkten, bei dem man die Gewerkezuordnung sieht.

              Das +.state muß ich bei Xiaomi Sensoren machen.

              Hast Du das Gewerk Kanälen zugeordnet ? Dann muss der Trigger anders aussehen.

              $('channel[state.id=*.state](functions=fenster)').on
              

              oder Du ersetzt alles ab Zeile 38 durch:

              on(/.+\.state$/, countOpenWindowsDoors);
              
              countOpenWindowsDoors();
              
              M Offline
              M Offline
              martinschm
              wrote on last edited by martinschm
              #6

              @paul53 said in Frage zu Fensterskript:

              @martinschm sagte:

              Hier der Objektbaum

              Ich meinte nicht den Gewerkeobjektbaum, sondern den Objektbaum mit Fenster-Geräten und -Datenpunkten, bei dem man die Gewerkezuordnung sieht.

              Das +.state muß ich bei Xiaomi Sensoren machen.

              Hast Du das Gewerk Kanälen zugeordnet ? Dann muss der Trigger anders aussehen.

              $('channel[state.id=*.state](functions=fenster)').on
              

              oder Du ersetzt alles ab Zeile 38 durch:

              on(/.+\.state$/, countOpenWindowsDoors);
              
              countOpenWindowsDoors();
              

              Der Objektbaum sieht so aus:
              55cbdb6a-b9c2-44d0-9d21-402a7bd3373c-image.png

              Dachte es reicht wenn die Fenster einer Aufzählung zugeordnet sind und das Skript da durchläuft.

              Ich sehe grade in dem Artikel (https://www.smarthome-tricks.de/software-iobroker/iobroker-aufzaehlungen-fuer-das-zaehlen-von-offenen-fenstern-oder-tueren-verwenden/), das dort nur die States und nicht die Geräte zugeordnet wurden.

              Wie muß ich das Skript denn ändern wenn ich lieber das Gerät als den State zuordnen will ?

              paul53P 1 Reply Last reply
              0
              • M martinschm

                @paul53 said in Frage zu Fensterskript:

                @martinschm sagte:

                Hier der Objektbaum

                Ich meinte nicht den Gewerkeobjektbaum, sondern den Objektbaum mit Fenster-Geräten und -Datenpunkten, bei dem man die Gewerkezuordnung sieht.

                Das +.state muß ich bei Xiaomi Sensoren machen.

                Hast Du das Gewerk Kanälen zugeordnet ? Dann muss der Trigger anders aussehen.

                $('channel[state.id=*.state](functions=fenster)').on
                

                oder Du ersetzt alles ab Zeile 38 durch:

                on(/.+\.state$/, countOpenWindowsDoors);
                
                countOpenWindowsDoors();
                

                Der Objektbaum sieht so aus:
                55cbdb6a-b9c2-44d0-9d21-402a7bd3373c-image.png

                Dachte es reicht wenn die Fenster einer Aufzählung zugeordnet sind und das Skript da durchläuft.

                Ich sehe grade in dem Artikel (https://www.smarthome-tricks.de/software-iobroker/iobroker-aufzaehlungen-fuer-das-zaehlen-von-offenen-fenstern-oder-tueren-verwenden/), das dort nur die States und nicht die Geräte zugeordnet wurden.

                Wie muß ich das Skript denn ändern wenn ich lieber das Gerät als den State zuordnen will ?

                paul53P Offline
                paul53P Offline
                paul53
                wrote on last edited by paul53
                #7

                @martinschm sagte:

                Wie muß ich das Skript denn ändern wenn ich lieber das Gerät als den State zuordnen will ?

                Das habe ich in meiner vorletzten Antwort geschrieben. Alles ab Zeile 38 ersetzen durch

                on(/.+\.state$/, countOpenWindowsDoors); // triggert alle .state bei Wertänderung
                
                countOpenWindowsDoors(); // Skriptstart
                

                Hier wird kein Selector verwendet, sondern ein RegExp, mit dem auf alle Datenpunkte getriggert wird, die mit ".state" enden. Die Selektion nach Gewerk erfolgt in der Funktion countOpenWindowsDoors().

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                R M 2 Replies Last reply
                0
                • paul53P paul53

                  @martinschm sagte:

                  Wie muß ich das Skript denn ändern wenn ich lieber das Gerät als den State zuordnen will ?

                  Das habe ich in meiner vorletzten Antwort geschrieben. Alles ab Zeile 38 ersetzen durch

                  on(/.+\.state$/, countOpenWindowsDoors); // triggert alle .state bei Wertänderung
                  
                  countOpenWindowsDoors(); // Skriptstart
                  

                  Hier wird kein Selector verwendet, sondern ein RegExp, mit dem auf alle Datenpunkte getriggert wird, die mit ".state" enden. Die Selektion nach Gewerk erfolgt in der Funktion countOpenWindowsDoors().

                  R Offline
                  R Offline
                  ReverZ
                  wrote on last edited by ReverZ
                  #8

                  @paul53

                  Bei meinen Xiaomi-Kontakten muss der Teil so heissen, damit es funktioniert (contact statt state):

                  on(/.+\.contact$/, countOpenWindowsDoors); // triggert alle .contact bei Wertänderung
                  countOpenWindowsDoors();
                  

                  Oder:

                  function registerSubscription()
                  {
                  $('state[state.id=*.contact](functions=fenster)').on(function(obj) {
                  countOpenWindowsDoors();
                  });
                   
                  $('state[state.id=*.contact](functions=tueren)').on(function(obj) {
                  countOpenWindowsDoors();
                  });
                  }
                  

                  Und ich hab natürlich überall Status durch !Status ersetzt, da der Wert "true" ist, wenn der Kontakt geschlossen und nicht offen ist:

                  if ( !Status ) { openWindows = openWindows + 1; }
                  

                  Aber Achtung: Ich verwende den Zigbee-Adapter. Hier sind die Datenpunkte und Werte unterschiedlich zum MiHome-Adapter.

                  paul53P 1 Reply Last reply
                  0
                  • R ReverZ

                    @paul53

                    Bei meinen Xiaomi-Kontakten muss der Teil so heissen, damit es funktioniert (contact statt state):

                    on(/.+\.contact$/, countOpenWindowsDoors); // triggert alle .contact bei Wertänderung
                    countOpenWindowsDoors();
                    

                    Oder:

                    function registerSubscription()
                    {
                    $('state[state.id=*.contact](functions=fenster)').on(function(obj) {
                    countOpenWindowsDoors();
                    });
                     
                    $('state[state.id=*.contact](functions=tueren)').on(function(obj) {
                    countOpenWindowsDoors();
                    });
                    }
                    

                    Und ich hab natürlich überall Status durch !Status ersetzt, da der Wert "true" ist, wenn der Kontakt geschlossen und nicht offen ist:

                    if ( !Status ) { openWindows = openWindows + 1; }
                    

                    Aber Achtung: Ich verwende den Zigbee-Adapter. Hier sind die Datenpunkte und Werte unterschiedlich zum MiHome-Adapter.

                    paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by
                    #9

                    @ReverZ sagte:

                    contact statt state

                    Verwendet ihr verschiedene Adapter ?

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    R M 2 Replies Last reply
                    0
                    • paul53P paul53

                      @ReverZ sagte:

                      contact statt state

                      Verwendet ihr verschiedene Adapter ?

                      R Offline
                      R Offline
                      ReverZ
                      wrote on last edited by
                      #10

                      @paul53
                      Ich verwende die Version 0.10.2 des Zigbee-Adapters.

                      1 Reply Last reply
                      0
                      • paul53P paul53

                        @ReverZ sagte:

                        contact statt state

                        Verwendet ihr verschiedene Adapter ?

                        M Offline
                        M Offline
                        martinschm
                        wrote on last edited by
                        #11

                        @paul53 said in Frage zu Fensterskript:

                        @ReverZ sagte:

                        contact statt state

                        Verwendet ihr verschiedene Adapter ?

                        Ich verwende den Xiaomi Adapter

                        1 Reply Last reply
                        0
                        • R Offline
                          R Offline
                          ReverZ
                          wrote on last edited by
                          #12

                          Ah OK, das erklärt natürlich einiges.

                          1 Reply Last reply
                          0
                          • paul53P paul53

                            @martinschm sagte:

                            Wie muß ich das Skript denn ändern wenn ich lieber das Gerät als den State zuordnen will ?

                            Das habe ich in meiner vorletzten Antwort geschrieben. Alles ab Zeile 38 ersetzen durch

                            on(/.+\.state$/, countOpenWindowsDoors); // triggert alle .state bei Wertänderung
                            
                            countOpenWindowsDoors(); // Skriptstart
                            

                            Hier wird kein Selector verwendet, sondern ein RegExp, mit dem auf alle Datenpunkte getriggert wird, die mit ".state" enden. Die Selektion nach Gewerk erfolgt in der Funktion countOpenWindowsDoors().

                            M Offline
                            M Offline
                            martinschm
                            wrote on last edited by
                            #13

                            @paul53 said in Frage zu Fensterskript:

                            @martinschm sagte:

                            Wie muß ich das Skript denn ändern wenn ich lieber das Gerät als den State zuordnen will ?

                            Das habe ich in meiner vorletzten Antwort geschrieben. Alles ab Zeile 38 ersetzen durch

                            on(/.+\.state$/, countOpenWindowsDoors); // triggert alle .state bei Wertänderung
                            
                            countOpenWindowsDoors(); // Skriptstart
                            

                            Hier wird kein Selector verwendet, sondern ein RegExp, mit dem auf alle Datenpunkte getriggert wird, die mit ".state" enden. Die Selektion nach Gewerk erfolgt in der Funktion countOpenWindowsDoors().

                            Aber wird dann nicht auf alle Sensoren mit state reagiert, also auch Bewegungsmelder oder Rauchmelder

                            R paul53P 2 Replies Last reply
                            0
                            • M martinschm

                              @paul53 said in Frage zu Fensterskript:

                              @martinschm sagte:

                              Wie muß ich das Skript denn ändern wenn ich lieber das Gerät als den State zuordnen will ?

                              Das habe ich in meiner vorletzten Antwort geschrieben. Alles ab Zeile 38 ersetzen durch

                              on(/.+\.state$/, countOpenWindowsDoors); // triggert alle .state bei Wertänderung
                              
                              countOpenWindowsDoors(); // Skriptstart
                              

                              Hier wird kein Selector verwendet, sondern ein RegExp, mit dem auf alle Datenpunkte getriggert wird, die mit ".state" enden. Die Selektion nach Gewerk erfolgt in der Funktion countOpenWindowsDoors().

                              Aber wird dann nicht auf alle Sensoren mit state reagiert, also auch Bewegungsmelder oder Rauchmelder

                              R Offline
                              R Offline
                              ReverZ
                              wrote on last edited by
                              #14

                              @martinschm
                              Mit der Subscription ja aber in deiner Funktion wird ja widerum auf die gewünschten Aufzählungen "gefiltert". Hat paul53 weiter oben auch schon erklärt.

                              M 1 Reply Last reply
                              0
                              • M martinschm

                                @paul53 said in Frage zu Fensterskript:

                                @martinschm sagte:

                                Wie muß ich das Skript denn ändern wenn ich lieber das Gerät als den State zuordnen will ?

                                Das habe ich in meiner vorletzten Antwort geschrieben. Alles ab Zeile 38 ersetzen durch

                                on(/.+\.state$/, countOpenWindowsDoors); // triggert alle .state bei Wertänderung
                                
                                countOpenWindowsDoors(); // Skriptstart
                                

                                Hier wird kein Selector verwendet, sondern ein RegExp, mit dem auf alle Datenpunkte getriggert wird, die mit ".state" enden. Die Selektion nach Gewerk erfolgt in der Funktion countOpenWindowsDoors().

                                Aber wird dann nicht auf alle Sensoren mit state reagiert, also auch Bewegungsmelder oder Rauchmelder

                                paul53P Offline
                                paul53P Offline
                                paul53
                                wrote on last edited by
                                #15

                                @martinschm sagte:

                                wird dann nicht auf alle Sensoren mit state reagiert

                                Ja, aber da sie nicht in den "members" enthalten sind, passiert nichts.

                                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                1 Reply Last reply
                                0
                                • R ReverZ

                                  @martinschm
                                  Mit der Subscription ja aber in deiner Funktion wird ja widerum auf die gewünschten Aufzählungen "gefiltert". Hat paul53 weiter oben auch schon erklärt.

                                  M Offline
                                  M Offline
                                  martinschm
                                  wrote on last edited by
                                  #16

                                  @ReverZ said in Frage zu Fensterskript:

                                  @martinschm
                                  Mit der Subscription ja aber in deiner Funktion wird ja widerum auf die gewünschten Aufzählungen "gefiltert". Hat paul53 weiter oben auch schon erklärt.

                                  Hi, ok hab ich am Handy wahrscheinlich überlesen. Finde die Handhabung nicht so vorteilhaft, da wird ja unter Umständen viel zu häufig das Skript aufgerufen nur um dann nichts zu machen.

                                  Da muss ich mal nach einer anderen Lösung schauen.

                                  Danke schonmal für eure Hilfe.

                                  paul53P 1 Reply Last reply
                                  0
                                  • M martinschm

                                    @ReverZ said in Frage zu Fensterskript:

                                    @martinschm
                                    Mit der Subscription ja aber in deiner Funktion wird ja widerum auf die gewünschten Aufzählungen "gefiltert". Hat paul53 weiter oben auch schon erklärt.

                                    Hi, ok hab ich am Handy wahrscheinlich überlesen. Finde die Handhabung nicht so vorteilhaft, da wird ja unter Umständen viel zu häufig das Skript aufgerufen nur um dann nichts zu machen.

                                    Da muss ich mal nach einer anderen Lösung schauen.

                                    Danke schonmal für eure Hilfe.

                                    paul53P Offline
                                    paul53P Offline
                                    paul53
                                    wrote on last edited by paul53
                                    #17

                                    @martinschm sagte:

                                    Finde die Handhabung nicht so vorteilhaft, da wird ja unter Umständen viel zu häufig das Skript aufgerufen nur um dann nichts zu machen.

                                    Ob die Filterung in der Javascript-Instanz oder im eigenen Skript vorgenommen wird, macht keinen großen Unterschied. Etwas Entlastung bringt das Einlesen der Arrays windows und doors außerhalb der Funktion.

                                    const windows = getObject("enum.functions.fenster").common.members;
                                    const doors = getObject("enum.functions.tueren").common.members;
                                    
                                    function countOpenWindowsDoors() {
                                    

                                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                    M 1 Reply Last reply
                                    0
                                    • paul53P paul53

                                      @martinschm sagte:

                                      Finde die Handhabung nicht so vorteilhaft, da wird ja unter Umständen viel zu häufig das Skript aufgerufen nur um dann nichts zu machen.

                                      Ob die Filterung in der Javascript-Instanz oder im eigenen Skript vorgenommen wird, macht keinen großen Unterschied. Etwas Entlastung bringt das Einlesen der Arrays windows und doors außerhalb der Funktion.

                                      const windows = getObject("enum.functions.fenster").common.members;
                                      const doors = getObject("enum.functions.tueren").common.members;
                                      
                                      function countOpenWindowsDoors() {
                                      
                                      M Offline
                                      M Offline
                                      martinschm
                                      wrote on last edited by
                                      #18

                                      @paul53 said in Frage zu Fensterskript:

                                      @martinschm sagte:

                                      Finde die Handhabung nicht so vorteilhaft, da wird ja unter Umständen viel zu häufig das Skript aufgerufen nur um dann nichts zu machen.

                                      Ob die Filterung in der Javascript-Instanz oder im eigenen Skript vorgenommen wird, macht keinen großen Unterschied. Etwas Entlastung bringt das Einlesen der Arrays windows und doors außerhalb der Funktion.

                                      const windows = getObject("enum.functions.fenster").common.members;
                                      const doors = getObject("enum.functions.tueren").common.members;
                                      
                                      function countOpenWindowsDoors() {
                                      

                                      Kann ich nicht eine Subscription auf die Objekte einer Aufzählung machen?

                                      paul53P 1 Reply Last reply
                                      0
                                      • M martinschm

                                        @paul53 said in Frage zu Fensterskript:

                                        @martinschm sagte:

                                        Finde die Handhabung nicht so vorteilhaft, da wird ja unter Umständen viel zu häufig das Skript aufgerufen nur um dann nichts zu machen.

                                        Ob die Filterung in der Javascript-Instanz oder im eigenen Skript vorgenommen wird, macht keinen großen Unterschied. Etwas Entlastung bringt das Einlesen der Arrays windows und doors außerhalb der Funktion.

                                        const windows = getObject("enum.functions.fenster").common.members;
                                        const doors = getObject("enum.functions.tueren").common.members;
                                        
                                        function countOpenWindowsDoors() {
                                        

                                        Kann ich nicht eine Subscription auf die Objekte einer Aufzählung machen?

                                        paul53P Offline
                                        paul53P Offline
                                        paul53
                                        wrote on last edited by paul53
                                        #19

                                        @martinschm sagte:

                                        Kann ich nicht eine Subscription auf die Objekte einer Aufzählung machen?

                                        Nein, außer mit einem Selector. Subscriben kann man nur Datenpunkte, Deine Aufzählungen enthalten aber Channels. Wie ich weiter oben schon mal geschrieben habe, kannst Du es mit einem veränderten Selector versuchen.

                                        $('channel[state.id=*.state](functions=fenster)').on(countOpenWindowsDoors);
                                        $('channel[state.id=*.state](functions=tueren)').on(countOpenWindowsDoors);
                                        

                                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                        1 Reply Last reply
                                        0
                                        Reply
                                        • Reply as topic
                                        Log in to reply
                                        • Oldest to Newest
                                        • Newest to Oldest
                                        • Most Votes


                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        466

                                        Online

                                        32.4k

                                        Users

                                        81.3k

                                        Topics

                                        1.3m

                                        Posts
                                        Community
                                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                        ioBroker Community 2014-2025
                                        logo
                                        • Login

                                        • Don't have an account? Register

                                        • Login or register to search.
                                        • First post
                                          Last post
                                        0
                                        • Recent
                                        • Tags
                                        • Unread 0
                                        • Categories
                                        • Unreplied
                                        • Popular
                                        • GitHub
                                        • Docu
                                        • Hilfe