Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  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.5k

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

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

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

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
25 Beiträge 3 Kommentatoren 1.8k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    Mitch
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • smartboartS Offline
      smartboartS Offline
      smartboart
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • M Offline
        M Offline
        Mitch
        schrieb am zuletzt editiert von
        #6

        Das mit latest ist bei mir auch.

        1 Antwort Letzte Antwort
        0
        • smartboartS Offline
          smartboartS Offline
          smartboart
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • smartboartS Offline
            smartboartS Offline
            smartboart
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                • M Offline
                  M Offline
                  Mitch
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    0
                    • M Offline
                      M Offline
                      Mitch
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      0
                      • paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • M Offline
                          M Offline
                          Mitch
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • smartboartS Offline
                            smartboartS Offline
                            smartboart
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            0
                            • paul53P Offline
                              paul53P Offline
                              paul53
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              0
                              • paul53P Offline
                                paul53P Offline
                                paul53
                                schrieb am zuletzt editiert von
                                #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 Antwort Letzte Antwort
                                0
                                • smartboartS Offline
                                  smartboartS Offline
                                  smartboart
                                  schrieb am zuletzt editiert von
                                  #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 Antwort Letzte Antwort
                                  0
                                  • paul53P Offline
                                    paul53P Offline
                                    paul53
                                    schrieb am zuletzt editiert von
                                    #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 Antwort Letzte Antwort
                                    0
                                    • M Offline
                                      M Offline
                                      Mitch
                                      schrieb am zuletzt editiert von
                                      #21

                                      Hallo Paul,

                                      erstmal vielen Dank für deine Hilfe. Bei mir funktioniert der obere Teil noch nicht so ganz. Ist da ein Fehler im Javascript 4.0.5 Adapter?

                                      Dann sollte man doch den Fehler melden, oder?

                                      Folgendes Skript führe ich auf Anforderung aus:

                                      `const sensor = getObject('enum.functions.sensors').common.members;
                                      
                                               sendTo('telegram.0', {
                                                  text:   'BlaBla'
                                               });
                                      
                                      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 <= 4.8) {
                                               sendTo('telegram.0', {
                                                  text:   'Die Batterie vom Sensor ' + name + ' neigt sich dem Ende zu. Die aktuelle Spannung beträgt ' + dp.state.val + ' V.'
                                               });
                                            }
                                         });
                                      }`
                                      
                                      Effekt: BlaBla schreibt er noch, aber bzgl. des Batterie-Anzeige wird nichts generiert. Ich habe mal den Value auf 4.8 hochgesetzt. Das sollte bei allen meinen Zigbee-Devices gelten, aber nichts passiert.
                                      
                                      Kann man vielleicht nur den Javascript-Adapter auf die ältere Version downgraden, ohne Probleme zu erwarten?
                                      
                                      Zumindestens bis das Problem behoben ist?[/i][/i]
                                      
                                      1 Antwort Letzte Antwort
                                      0
                                      • paul53P Offline
                                        paul53P Offline
                                        paul53
                                        schrieb am zuletzt editiert von
                                        #22

                                        @Mitch:

                                        Das sollte bei allen meinen Zigbee-Devices gelten, aber nichts passiert. `
                                        Während das Skript aktiv ist, muss sich der Wert <u>ändern</u>, damit getriggert wird.

                                        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 Antwort Letzte Antwort
                                        0
                                        • M Offline
                                          M Offline
                                          Mitch
                                          schrieb am zuletzt editiert von
                                          #23

                                          Hallo zusammen,

                                          vielen Dank nochmal an Paul. Er hat mir mit seinen Hinweisen zum Ziel geleitet.

                                          Hier das fertige Skript. Es läuft unter dem Javascript 4.0.5 Adapter:

                                          `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] + '.battery', function (dp) { 
                                                  if(dp.state.val <= 20) {
                                                      var name = getObject(sensor[i]).common.name;
                                                      sendTo('telegram.0', {
                                                          text:   'Die Batterie vom Sensor '+ name +' neigt sich dem Ende zu. Aktuell noch ' + dp.state.val + '% Batterie.'
                                                      });
                                                  }
                                              });
                                              on(sensor[i] + '.voltage', function (dp) { 
                                                  if(dp.state.val <= 2.8) {
                                                      var name = getObject(sensor[i]).common.name;
                                                      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] + '.opened', function (dp) { 
                                                  if(dp.state.val == true) {
                                                      var name = getObject(sensor[i]).common.name;
                                                      var id = getObject(sensor[i])._id;
                                                      var idkurz = id.split('.')[2];            
                                                      createState('isopen.'+idkurz, true, {
                                                          read: true, 
                                                          write: true, 
                                                          desc: name, 
                                                          type: "boolean", 
                                                          def: false
                                                      });
                                                  }
                                                  if(dp.state.val == false) {
                                                      var name = getObject(sensor[i]).common.name;
                                                      var id = getObject(sensor[i])._id;
                                                      var idkurz = id.split('.')[2];
                                                      deleteState('isopen.'+idkurz);
                                                  }
                                              });
                                          }`
                                          
                                          Ich setze den Thread auf gelöst.[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
                                          
                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          302

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe