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. [gelöst] Überwachung Fensterkontakte (zigbee) per Javascript 4.0.5 funktioniert nicht mehr

NEWS

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

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

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

[gelöst] Überwachung Fensterkontakte (zigbee) per Javascript 4.0.5 funktioniert nicht mehr

Scheduled Pinned Locked Moved Skripten / Logik
25 Posts 3 Posters 1.8k Views
  • 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
    Mitch
    wrote on last edited by
    #1

    Hallo zusammen,

    ich hatte meine Fensterkontakte in enum.functions.sensors zusammengefasst. Darauf habe ich folgendes Skript genutzt, was aus einem Skript hier im Forum aufbaut:

    `const sensor = getObject('enum.functions.sensors').common.members;
    
    for(let i = 0; i < sensor.length; i++) {
        $('state[id='+sensor[i]+']').each(function(id) {
            on({id: id, change: 'ne'}, function (obj) {
                var name = getObject(sensor[i]).common.name;
                var idkurz = id.split('.')[2];
                switch(getObject(id).common.name)
                {
                    case "Battery percent":
                        if(obj.newState.val <= 20)
                        {
                            sendTo('telegram.0', {
                                text:   'Die Batterie vom Sensor '+ name +' neigt sich dem Ende zu. Aktuell noch ' + obj.newState.val + '% Batterie.'
                            });    
                        }
                        break;
                    case "Battery voltage":
                        if(obj.newState.val <= 2.8)
                        {
                            sendTo('telegram.0', {
                                text:   'Die Batterie vom Sensor '+ name +' neigt sich dem Ende zu. Die aktuelle Spannung beträgt ' + obj.newState.val + ' V.'
                            });
                        }
                        break;
                    case "Is open":
                        if(obj.newState.val == true)
                        {
                            createState('isopen.'+idkurz, true, {
                                read: true, 
                                write: true, 
                                desc: name, 
                                type: "boolean", 
                            def: false
                            });
    
                            sendTo('telegram.0', {
                                text:   'Test'
                            });    
    
                        }
                        if(obj.newState.val == false)
                        {
                            deleteState('isopen.'+idkurz);
                        }                    
                        break;
                }
            });
        });
    }`
    
    Ich hatte gesehen, das jetzt opened das Element das ist unter zigbee, aber nicht mehr isopen. Das Case heisst aber immer noch Is Open. Dementsprechend sollte doch mein Skript laufen und wie gewohnt unter javascript,0 Elemente mit den Namen + idkurz anlegen. Macht er aber nicht.
    
    Danach bin ich hergegangen und habe unter Zigbee die alten isopen-Elememte gelöscht, da es ja opened jetzt gibt und dies auch in meinen Test aktualisiert wurde, nachdem ich den Kontakt geschaltet habe.
    
    Hat jemand eine Idee, was hier falsch läuft?
    
    EDIT: Wie im Skript oben erkennbar ist, sense ich Test an den Telegram Adapter. Das Script schafft also nicht mal mehr den "Is open" Case sauber zu erkennen. Ich habe vor einigen Tagen den JavaScript Adapter geupdated,[/i]
    
    1 Reply Last reply
    0
    • smartboartS Offline
      smartboartS Offline
      smartboart
      wrote on last edited by
      #2

      Habe das selbe Problem kann keine zigbee Hardware ueber enum Funktionen einsammeln… Die selektor funktion funktioniert nicht... Warum weiß ich nicht... Habe alles ausprobiert.. STATE channel Gewerke usw.. Alle restliche Hardware und angelegte states kein Problem... Dazu habe ich auch in 2 weiteren Diskussionen was geschrieben...

      Gesendet von meinem CLT-L09 mit Tapatalk

      1 Reply Last reply
      0
      • M Offline
        M Offline
        Mitch
        wrote on last edited by
        #3

        Ja, das kann ich bestätigen. Ich habe im Skript Textausgaben eingebaut. Es hängt wirklich daran, das die Liste unter enum.functions.sensors nicht mehr funktioniert. Deshalb kommt er im Skript nicht weiter. Hast Du da letzte Javascript Update eingespielt? Es gab auch ein ioBroker Update, was ich eingespielt habe.

        Welche Versionen hast Du in beiden Fällen?

        1 Reply Last reply
        0
        • M Offline
          M Offline
          Mitch
          wrote on last edited by
          #4
          {
            "_id": "enum.functions.sensors",
            "common": {
              "name": {
                "en": "sensors",
                "de": "Sensoren"
              },
              "members": [
                "zigbee.0.00158d000232c0b0",
                "zigbee.0.00158d000232c10f",
                "zigbee.0.00158d000232c17f",
                "zigbee.0.00158d000232c18e",
                "zigbee.0.00158d000232c1ac",
                "zigbee.0.00158d000232c51a",
                "zigbee.0.00158d000232cb9f",
                "zigbee.0.00158d000232dcbb",
                "zigbee.0.00158d000232dd62",
                "zigbee.0.00158d00023870bf",
                "zigbee.0.00158d0002387310",
                "zigbee.0.00158d00024354f0",
                "zigbee.0.00158d0002436400",
                "zigbee.0.00158d000243640f"
              ],
              "icon": "",
              "color": false
            },
            "type": "enum",
            "from": "system.adapter.admin.0",
            "user": "system.user.admin",
            "ts": 1537111456954,
            "acl": {
              "object": 1636,
              "owner": "system.user.admin",
              "ownerGroup": "system.group.administrator"
            },
            "native": {}
          }
          

          Ich habe die Liste mal neu aufgebaut, aber immer noch das selbe Problem. Weiss jemand welches Update damit zu tun haben könnte? Bzw. was da im Moment broken ist.

          Ich habe:

          Typ: js-controller

          Titel: JS controller

          OS: linux

          Verfügbar: 1.4.2

          Eingerichtet: 1.5.3

          Und den Javascript Adapter 4.0.5

          1 Reply Last reply
          0
          • smartboartS Offline
            smartboartS Offline
            smartboart
            wrote on last edited by
            #5

            Bin gerade unterwegs und kann nicht schauen… Mein repo ist allerdings auf latest eingestellt.. Bin mit allen Adaptern aktuell... Kann heute mittag mal genauer schauen

            Gesendet von meinem CLT-L09 mit Tapatalk

            1 Reply Last reply
            0
            • M Offline
              M Offline
              Mitch
              wrote on last edited by
              #6

              Das mit latest ist bei mir auch.

              1 Reply Last reply
              0
              • smartboartS Offline
                smartboartS Offline
                smartboart
                wrote on last edited by
                #7

                Node.js: v8.14.0

                NPM: 6.4.1

                Zigbee 0.8.0

                Admin 3.5.10

                javascript 4.0.5

                all das habe ich ausprobiert.. sobald .state oder die functions dazu kommen geht nix…

                var cacheSelector = $('stateid=zigbee.0.*');

                var cacheSelector = $('stateid=zigbee.0.*.state');

                var cacheSelector = $('stateid=*.state');

                var cacheSelector = $('stateid=zigbee.0.zigbee.0.84182600000b343c.state');

                var cacheSelector = $('statestate.id=zigbee.0.*.state');

                funtkionieren tut nur das

                var cacheSelector = $('state[id=zigbee.0.*]');

                1 Reply Last reply
                0
                • smartboartS Offline
                  smartboartS Offline
                  smartboart
                  wrote on last edited by
                  #8

                  Hier steht auch was zu dem Thema…

                  Wurde ein issue auf github angelegt...

                  viewtopic.php?f=21&t=16224&p=203966#p203966

                  vestehe nur nicht warum das am javascript Adapter liegen soll, wenn es nur mit zigbee Geräten nicht geht...

                  1 Reply Last reply
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by
                    #9

                    @Mitch:

                    Es hängt wirklich daran, das die Liste unter enum.functions.sensors nicht mehr funktioniert. `
                    Wie sieht die Liste aus ?

                    const sensor = getObject('enum.functions.sensors').common.members;
                    log(JSON.stringify(sensor));
                    

                    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 Offline
                      paul53P Offline
                      paul53
                      wrote on last edited by
                      #10

                      @smartboart:

                      sobald .state oder die functions dazu kommen geht nix… `
                      Wie sieht das Objekt "enum.functions.Steckdose" aus (RAW-Ansicht) ?

                      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
                      • M Offline
                        M Offline
                        Mitch
                        wrote on last edited by
                        #11

                        @paul53:

                        @Mitch:

                        Es hängt wirklich daran, das die Liste unter enum.functions.sensors nicht mehr funktioniert. `
                        Wie sieht die Liste aus ?

                        const sensor = getObject('enum.functions.sensors').common.members;
                        log(JSON.stringify(sensor));
                        ```` `  
                        

                        javascript.0 script.js.Skriptsammlung.Test_enumsensors: ["zigbee.0.00158d000232c0b0","zigbee.0.00158d000232c10f","zigbee.0.00158d000232c17f","zigbee.0.00158d000232c18e","zigbee.0.00158d000232c1ac","zigbee.0.00158d000232c51a","zigbee.0.00158d000232cb9f","zigbee.0.00158d000232dcbb","zigbee.0.00158d000232dd62","zigbee.0.00158d00023870bf","zigbee.0.00158d0002387310","zigbee.0.00158d00024354f0","zigbee.0.00158d0002436400","zigbee.0.00158d000243640f"]

                        1 Reply Last reply
                        0
                        • paul53P Offline
                          paul53P Offline
                          paul53
                          wrote on last edited by
                          #12

                          Das Array mit den Zigbee-Geräten wir geliefert. Dann muss auch die Schleife funktionieren:

                          `const sensor = getObject('enum.functions.sensors').common.members;
                          
                          for(let i = 0; i < sensor.length; i++) {
                             log(sensor[i]);
                          }`[/i]
                          

                          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
                          • M Offline
                            M Offline
                            Mitch
                            wrote on last edited by
                            #13

                            Stimmt, ist auch so:

                            14.12.2018, 15:42:30.367	[info ]: javascript.0 Start javascript script.js.Skriptsammlung.Test_enumsensors2
                            14.12.2018, 15:42:30.369	[info ]: javascript.0 script.js.Skriptsammlung.Test_enumsensors2: zigbee.0.00158d000232c0b0
                            14.12.2018, 15:42:30.369	[info ]: javascript.0 script.js.Skriptsammlung.Test_enumsensors2: zigbee.0.00158d000232c10f
                            14.12.2018, 15:42:30.369	[info ]: javascript.0 script.js.Skriptsammlung.Test_enumsensors2: zigbee.0.00158d000232c17f
                            14.12.2018, 15:42:30.369	[info ]: javascript.0 script.js.Skriptsammlung.Test_enumsensors2: zigbee.0.00158d000232c18e
                            14.12.2018, 15:42:30.369	[info ]: javascript.0 script.js.Skriptsammlung.Test_enumsensors2: zigbee.0.00158d000232c1ac
                            14.12.2018, 15:42:30.369	[info ]: javascript.0 script.js.Skriptsammlung.Test_enumsensors2: zigbee.0.00158d000232c51a
                            14.12.2018, 15:42:30.369	[info ]: javascript.0 script.js.Skriptsammlung.Test_enumsensors2: zigbee.0.00158d000232cb9f
                            14.12.2018, 15:42:30.370	[info ]: javascript.0 script.js.Skriptsammlung.Test_enumsensors2: zigbee.0.00158d000232dcbb
                            14.12.2018, 15:42:30.370	[info ]: javascript.0 script.js.Skriptsammlung.Test_enumsensors2: zigbee.0.00158d000232dd62
                            14.12.2018, 15:42:30.370	[info ]: javascript.0 script.js.Skriptsammlung.Test_enumsensors2: zigbee.0.00158d00023870bf
                            14.12.2018, 15:42:30.370	[info ]: javascript.0 script.js.Skriptsammlung.Test_enumsensors2: zigbee.0.00158d0002387310
                            14.12.2018, 15:42:30.371	[info ]: javascript.0 script.js.Skriptsammlung.Test_enumsensors2: zigbee.0.00158d00024354f0
                            14.12.2018, 15:42:30.371	[info ]: javascript.0 script.js.Skriptsammlung.Test_enumsensors2: zigbee.0.00158d0002436400
                            14.12.2018, 15:42:30.371	[info ]: javascript.0 script.js.Skriptsammlung.Test_enumsensors2: zigbee.0.00158d000243640f
                            14.12.2018, 15:42:30.371	[info ]: javascript.0 script.js.Skriptsammlung.Test_enumsensors2: registered 0 subscriptions and 0 schedules
                            

                            Dann muss das Problem erst später auftreten, richtig!

                            1 Reply Last reply
                            0
                            • paul53P Offline
                              paul53P Offline
                              paul53
                              wrote on last edited by
                              #14

                              @Mitch:

                              Dann muss das Problem erst später auftreten, richtig! `
                              Ja, den Selector kann ich nicht nachvollziehen. Außerdem - wenn der Selector funktionieren würde - wird eine Trigger auf jeden Datenpunkt der Zigbee-Geräte aus dem Array gebildet. Viele sind aber unnötig und erhöhen nur die Systemlast. Ich würde nur auf die Datenpunkte triggern, die relevant sind.

                              `const sensor = getObject('enum.functions.sensors').common.members;
                              
                              for(let i = 0; i < sensor.length; i++) {
                                 var name = getObject(sensor[i]).common.name;
                                 on(sensor[i] + '.voltage', function (dp) { 
                                    if(dp.state.val <= 2.8) {
                                       sendTo('telegram.0', {
                                          text:   'Die Batterie vom Sensor ' + name + ' neigt sich dem Ende zu. Die aktuelle Spannung beträgt ' + dp.state.val + ' V.'
                                       });
                                    }
                                 });
                                 on(sensor[i] + '.battery', function(dp) {
                              //       ...usw.`
                              Es ist ohnehin besser, die Datenpunkt-ID als Selektionskriterium zu verwenden, da der Name beliebig geändert werden kann.[/i][/i][/i]
                              

                              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
                              • M Offline
                                M Offline
                                Mitch
                                wrote on last edited by
                                #15

                                @smartboart:

                                Node.js: v8.14.0

                                NPM: 6.4.1

                                Zigbee 0.8.0

                                Admin 3.5.10

                                javascript 4.0.5 `

                                Ich habe:

                                Node.js: v6.14.4

                                NPM: 3.10.10

                                Zigbee 0.8.0

                                Admin 3.5.10

                                javascript 4.0.5

                                Ich habe eine ältere Node.js und NPM Version. Ich nutze den buanet docker container auf der synology.

                                1 Reply Last reply
                                0
                                • smartboartS Offline
                                  smartboartS Offline
                                  smartboart
                                  wrote on last edited by
                                  #16

                                  @paul53:

                                  @smartboart:

                                  sobald .state oder die functions dazu kommen geht nix… Wie sieht das Objekt "enum.functions.Steckdose" aus (RAW-Ansicht) ?

                                  geht um das zählen script… siehe cahceselektor unten...Alle gehen bis auf die fürs Zigbee nicht...

                                  diese funktionieren ja auch...die states sehen nicht anders aus...

                                  var cacheSelectorPOWER1 = $('state[state.id=*.POWER1](functions="Steckdose")');
                                  var cacheSelectorPOWER2 = $('state[state.id=*.POWER2](functions="Steckdose")');
                                  var cacheSelectorPOWER3 = $('state[state.id=*.POWER3](functions="Steckdose")');
                                  var cacheSelectorPOWER4 = $('state[state.id=*.POWER4](functions="Steckdose")'); 
                                  //var cacheSelectorPOWER = $('state[state.id=*.POWER](functions="Steckdose")'); 
                                  var cacheSelectorState = $('state[state.id=*.STATE](functions="Steckdose")'); 
                                  

                                  objekt siehe Foto…

                                  Habe schon etliche varianten durch...

                                  all das habe ich ausprobiert..

                                  var cacheSelector = $('stateid=zigbee.0.*');

                                  var cacheSelector = $('stateid=zigbee.0.*.state');

                                  var cacheSelector = $('stateid=*.state');

                                  var cacheSelector = $('stateid=zigbee.0.zigbee.0.84182600000b343c.state');

                                  var cacheSelector = $('statestate.id=zigbee.0.*.state');
                                  6558_unbenannt.png

                                  var logging = true;
                                  
                                  var idAnzahlEin = 'javascript.0.Status.Steckdosen.Anzahl_ein',
                                  idAnzahl = 'javascript.0.Status.Steckdosen.Anzahl',
                                  idText = 'javascript.0.Status.Steckdosen.Text',
                                  idAnsage = 'javascript.0.Status.Steckdosen.Ansage';
                                  
                                  // Ab hier nix mehr ändern
                                  createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Steckdosen
                                  type: 'number',
                                  name: 'Anzahl aller Steckdosen',
                                  min: 0,
                                  def: 0,
                                  role: 'value'
                                  });
                                  createState(idAnzahlEin, { // Anzahl der Steckdosen, die auf sind als Variable unter Javascript.0 anlegen
                                  type: 'number',
                                  name: 'Anzahl der eingeschalteten Steckdosen',
                                  min: 0,
                                  def: 0,
                                  role: 'value'
                                  });
                                  createState(idText, { // Anzahl der brennenden Steckdosen und deren Namen als Variable unter Javascript.0 anlegen
                                  type: 'string',
                                  name: 'Eingeschaltete Steckdosen',
                                  desc: 'Namen der eingeschalteten Steckdosen',
                                  def: ' ',
                                  role: 'value'
                                  });
                                  createState(idAnsage, {
                                  type: 'string',
                                  name: 'Eingeschaltete Steckdosen (Ansage)',
                                  desc: 'Namen der eingeschalteten Steckdosen (für Ansage aufbereitet)',
                                  def: ' ',
                                  role: 'value'
                                  });
                                  
                                  var cacheSelectorPOWER1 = $('state[state.id=*.POWER1](functions="Steckdose")');
                                  var cacheSelectorPOWER2 = $('state[state.id=*.POWER2](functions="Steckdose")');
                                  var cacheSelectorPOWER3 = $('state[state.id=*.POWER3](functions="Steckdose")');
                                  var cacheSelectorPOWER4 = $('state[state.id=*.POWER4](functions="Steckdose")'); 
                                  //var cacheSelectorPOWER = $('state[state.id=*.POWER](functions="Steckdose")'); 
                                  var cacheSelectorState = $('state[state.id=*.STATE](functions="Steckdose")'); 
                                  var cacheSelector = $('state[state.id=*.state](functions="Steckdose")');
                                  
                                  function checkDevices(obj) {
                                  // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Steckdose auf 0
                                  var anzahlSteckdosenAn = 0;
                                  var anzahlSteckdosen = 0;
                                  var textSteckdosenAn = [];
                                  //******************************************************
                                  
                                  cacheSelectorState.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Steckdose
                                  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); //.state aus Text entfernen
                                  
                                  if (status) { // wenn Zustand = true, dann wird die ANzahl der Steckdosen hochgezählt
                                  ++anzahlSteckdosenAn; 
                                  textSteckdosenAn.push(devicename); // Zu Array hinzufügen
                                  }
                                  ++anzahlSteckdosen; // Zählt die Anzahl der vorhandenen Steckdosen unabhängig vom Status
                                  // } // ENDE VK-Abfrage
                                  
                                  });
                                  
                                  //******************************************************
                                  
                                  cacheSelector.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Steckdose
                                  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); //.state aus Text entfernen
                                  
                                  if (status) { // wenn Zustand = true, dann wird die ANzahl der Steckdosen hochgezählt
                                  ++anzahlSteckdosenAn; 
                                  textSteckdosenAn.push(devicename); // Zu Array hinzufügen
                                  }
                                  ++anzahlSteckdosen; // Zählt die Anzahl der vorhandenen Steckdosen unabhängig vom Status
                                  // } // ENDE VK-Abfrage
                                  
                                  });
                                  
                                  //****************************************************************** */
                                  /*
                                  
                                  cacheSelectorPOWER.each(function (id, i) { // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Steckdose
                                  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(".POWER")); //.state aus Text entfernen
                                  
                                  if (status) { // Wenn Dimmwert über 0
                                  ++anzahlSteckdosenAn; 
                                  textSteckdosenAn.push(devicename); // Zu Array hinzufügen
                                  }
                                  ++anzahlSteckdosen; // Zählt die Anzahl der vorhandenen Steckdosen unabhängig vom Status
                                  // } // Ende Abfrage VK 
                                  
                                  }); 
                                  */
                                  //***************************************************
                                  
                                  cacheSelectorPOWER1.each(function (id, i) { // Schleife für jedes gefundenen Element *.POWER im Gewerk Steckdose
                                  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); //.state aus Text entfernen
                                  
                                  if (status) { // wenn Zustand = true, dann wird die ANzahl der Steckdosen hochgezählt
                                  ++anzahlSteckdosenAn; 
                                  textSteckdosenAn.push(devicename); // Zu Array hinzufügen
                                  }
                                  ++anzahlSteckdosen; // Zählt die Anzahl der vorhandenen Steckdosen unabhängig vom Status
                                  // } // ENDE VK-Abfrage
                                  
                                  });
                                  
                                  cacheSelectorPOWER2.each(function (id, i) { // Schleife für jedes gefundenen Element *.POWER1 im Gewerk Steckdose
                                  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); //.state aus Text entfernen
                                  
                                  if (status) { // wenn Zustand = true, dann wird die ANzahl der Steckdosen hochgezählt
                                  ++anzahlSteckdosenAn; 
                                  textSteckdosenAn.push(devicename); // Zu Array hinzufügen
                                  }
                                  ++anzahlSteckdosen; // Zählt die Anzahl der vorhandenen Steckdosen unabhängig vom Status
                                  // } // ENDE VK-Abfrage
                                  
                                  });
                                  
                                  cacheSelectorPOWER3.each(function (id, i) { // Schleife für jedes gefundenen Element *.POWER1 im Gewerk Steckdose
                                  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); //.state aus Text entfernen
                                  
                                  if (status) { // wenn Zustand = true, dann wird die ANzahl der Steckdosen hochgezählt
                                  ++anzahlSteckdosenAn; 
                                  textSteckdosenAn.push(devicename); // Zu Array hinzufügen
                                  }
                                  ++anzahlSteckdosen; // Zählt die Anzahl der vorhandenen Steckdosen unabhängig vom Status
                                  // } // ENDE VK-Abfrage
                                  
                                  });
                                  
                                  cacheSelectorPOWER4.each(function (id, i) { // Schleife für jedes gefundenen Element *.POWER1 im Gewerk Steckdose
                                  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); //.state aus Text entfernen
                                  
                                  if (status) { // wenn Zustand = true, dann wird die ANzahl der Steckdosen hochgezählt
                                  ++anzahlSteckdosenAn; 
                                  textSteckdosenAn.push(devicename); // Zu Array hinzufügen
                                  }
                                  ++anzahlSteckdosen; // Zählt die Anzahl der vorhandenen Steckdosen unabhängig vom Status
                                  // } // ENDE VK-Abfrage
                                  
                                  });
                                  
                                  // Array mit Steckdosennamen sortieren
                                  textSteckdosenAn.sort();
                                  // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
                                  if (logging) log("Text: " + textSteckdosenAn);
                                  if (logging) log("Anzahl Steckdosen: " + anzahlSteckdosen + "  davon Steckdosen an:  " + anzahlSteckdosenAn);
                                  // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                                  setState(idText, textSteckdosenAn.join(',
                                  ')); // Schreibt die aktuelle Namen der eingeschalteten Steckdosen
                                  setState(idAnzahlEin, textSteckdosenAn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Steckdosen
                                  setState(idAnzahl, anzahlSteckdosen); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Steckdose
                                  }
                                  
                                  // Trigger
                                  
                                  cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Steckdose
                                  if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                  checkDevices();
                                  });
                                  /*
                                  cacheSelectorPOWER.on(function(obj) { // bei Zustandänderung *.LEVEL im Gewerk Steckdose
                                  if (logging) log('Auslösender Dimmer: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                  checkDevices();
                                  });
                                  */
                                  cacheSelectorPOWER1.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Steckdose
                                  if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                  checkDevices();
                                  });
                                  cacheSelectorPOWER2.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Steckdose
                                  if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                  checkDevices();
                                  });
                                  cacheSelectorPOWER3.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Steckdose
                                  if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                  checkDevices();
                                  });
                                  cacheSelectorPOWER4.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Steckdose
                                  if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                  checkDevices();
                                  });
                                  cacheSelector.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Steckdose
                                  if (logging) log('Auslösender Schalter: ' + 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(/( |<([^>]+)>)|(_)|(0)|(:)/ig, " ");
                                  return(rueckgabe);
                                  }
                                  
                                  on(idText, function (obj) {
                                  var text = obj.state.val;
                                  text = (getState(idAnzahl).val > 0 ) ? '' + strip_tags(text) : ' Alle Steckdosen sind ausgeschaltet ';
                                  setState(idAnsage, text);
                                  });
                                  
                                  1 Reply Last reply
                                  0
                                  • paul53P Offline
                                    paul53P Offline
                                    paul53
                                    wrote on last edited by
                                    #17

                                    @smartboart:

                                    objekt siehe Foto… `
                                    Du hast "Steckdose" dem Gerät zugeordnet. Da Zigbee-Geräte keine Kanäle haben, https://forum.iobroker.net/viewtopic.php?f=21&t=16564&p=174031#p174031.

                                    Wenn Du "Steckdose" den betreffenden Datenpunkten zuordnest, wird der Selektor funktionieren (alle Versionen). Vorzugsweise:

                                    var cacheSelector = $('state[id=zigbee.0.*.state](functions="Steckdose")');
                                    

                                    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 Offline
                                      paul53P Offline
                                      paul53
                                      wrote on last edited by
                                      #18

                                      @smartboart:

                                      javascript 4.0.5 `
                                      In dieser Version wurde gegenüber der Version 3.6.4 einiges geändert. Vielleicht funktioniert jetzt

                                      var cacheSelector = $('device[state.id=*.state](functions="Steckdose")');
                                      

                                      , wenn das Gewerk dem Gerät zugeordnet ist ?

                                      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
                                      • smartboartS Offline
                                        smartboartS Offline
                                        smartboart
                                        wrote on last edited by
                                        #19

                                        @paul53:

                                        @smartboart:

                                        javascript 4.0.5 `
                                        In dieser Version wurde gegenüber der Version 3.6.4 einiges geändert. Vielleicht funktioniert jetzt

                                        var cacheSelector = $('device[state.id=*.state](functions="Steckdose")');
                                        

                                        , wenn das Gewerk dem Gerät zugeordnet ist ? `

                                        Hallo Paul, danke für deine Unterstützung…

                                        Habe ich auch ausprobiert...funktioniert auch nicht...

                                        beide Varianten nicht...

                                        vermute eher das irgendwas mit den zigbee states nicht stimmt... Habe die aber schon gelöscht und wieder angelegt...

                                        Habe 12 verschiedene Scripte um mittels Selektor infos zu visualiieren...funktionieren alle! Ausser die welche ich nun für meine neue Zigbe Hardware anlegen wollte, bzw. diese Geräte integrieren wollte...

                                        6558_unbenannt2.png 6558_unbenannt1.png 6558_unbenannt.png

                                        1 Reply Last reply
                                        0
                                        • paul53P Offline
                                          paul53P Offline
                                          paul53
                                          wrote on last edited by
                                          #20

                                          Habe auf Version 4.0.5 hochgezogen und getestet (Gewerk "batterie" zwei Geräten zugeordnet).

                                          $('device[state.id=*.state](functions=batterie)');
                                          

                                          funktioniert nicht.

                                          const rm = $('*.state(functions=batterie)');
                                          
                                          rm.each(function(id, i) {
                                              log(id);
                                          });
                                          
                                          

                                          funktioniert erst nach Neustart (Javascript / ioBroker).

                                          19:50:11.243	info	javascript.1 script.js.common.Test3: zigbee.0.002.state
                                          19:50:11.243	info	javascript.1 script.js.common.Test3: zigbee.0.003.state
                                          
                                          

                                          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

                                          242

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          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