Skip to content
  • Home
  • 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
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Tester gesucht: Zigbee 3.2.x

NEWS

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

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

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

Tester gesucht: Zigbee 3.2.x

Scheduled Pinned Locked Moved Tester
3.2alphazigbee
50 Posts 10 Posters 1.7k Views 18 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.
  • FabioF Fabio

    @asgothian nein kein Alias und im Matter Adapter gibt es keine Datenpunkte wie beim ZigBee Adapter und du kannst da nachträglich nichts ändern da bleibt nur das Gerät löschen und wieder neu übergeben.

    .... so sieht das aus:

    {
      "type": "state",
      "common": {
        "name": "Available",
        "color": null,
        "type": "boolean",
        "read": true,
        "write": false,
        "role": "state"
      },
      "native": {},
      "from": "system.adapter.zigbee.1",
      "user": "system.user.admin",
      "ts": 1750057449953,
      "_id": "zigbee.1.04cf8cdf3c7c2a0e.available",
      "acl": {
        "object": 1636,
        "state": 1636,
        "owner": "system.user.admin",
        "ownerGroup": "system.group.administrator"
      }
    }
    
    AsgothianA Offline
    AsgothianA Offline
    Asgothian
    Developer
    wrote on last edited by
    #28

    @fabio dann mal mit dem Experten Modus aus dem das machen:

    {
      "type": "state",
      "common": {
        "name": "Available",
        "color": null,
        "type": "boolean",
        "read": true,
        "write": false,
        "role": "indicator.reachable"
      },
      "native": {},
      "from": "system.adapter.zigbee.1",
      "user": "system.user.admin",
      "ts": 1750057449953,
      "_id": "zigbee.1.04cf8cdf3c7c2a0e.available",
      "acl": {
        "object": 1636,
        "state": 1636,
        "owner": "system.user.admin",
        "ownerGroup": "system.group.administrator"
      }
    }
    

    und dann im Matter Adapter rauswerfen und neu hinzufügen.

    Wobei mir dann nicht klar wird warum der Matter adapter sich anders verhält wenn du den Zigbee Adapter anpasst. Der Available State wurde auch sonst immer mal wieder aktualisiert.

    A.

    ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
    "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

    FabioF 1 Reply Last reply
    0
    • AsgothianA Asgothian

      @fabio dann mal mit dem Experten Modus aus dem das machen:

      {
        "type": "state",
        "common": {
          "name": "Available",
          "color": null,
          "type": "boolean",
          "read": true,
          "write": false,
          "role": "indicator.reachable"
        },
        "native": {},
        "from": "system.adapter.zigbee.1",
        "user": "system.user.admin",
        "ts": 1750057449953,
        "_id": "zigbee.1.04cf8cdf3c7c2a0e.available",
        "acl": {
          "object": 1636,
          "state": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator"
        }
      }
      

      und dann im Matter Adapter rauswerfen und neu hinzufügen.

      Wobei mir dann nicht klar wird warum der Matter adapter sich anders verhält wenn du den Zigbee Adapter anpasst. Der Available State wurde auch sonst immer mal wieder aktualisiert.

      A.

      FabioF Offline
      FabioF Offline
      Fabio
      wrote on last edited by
      #29

      @asgothian ich hoffe ich hab es richtig gemacht die role geändert.

      Screenshot 2025-11-03 171748.png
      Screenshot 2025-11-03 172213.png

      Dann das Gerät im Matter Adapter gelöscht. Gewartet bis es bei Apple raus war und dann wieder neu hinzugefügt. Jetzt heißt es warten und schauen was passiert.

      Iobroker:

      • Für mich persöhnlich, gibt es nichts besseres, ich liebe es.

      • Das hat unser Smarthome erst zu Smarthome gemacht.

      • Du wächst mit ioBroker und ioBroker wächst mit dir.

      • Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      FabioF 1 Reply Last reply
      0
      • FabioF Fabio

        @asgothian ich hoffe ich hab es richtig gemacht die role geändert.

        Screenshot 2025-11-03 171748.png
        Screenshot 2025-11-03 172213.png

        Dann das Gerät im Matter Adapter gelöscht. Gewartet bis es bei Apple raus war und dann wieder neu hinzugefügt. Jetzt heißt es warten und schauen was passiert.

        FabioF Offline
        FabioF Offline
        Fabio
        wrote on last edited by
        #30

        @Asgothian so Test beendet. Ich bestätige das dieser Fehler durch deinen Workaround behoben ist. Hab jetzt alle Geräte wo das war umgestellt, blöd nur das ich sie dann auch erst löschen musste im Matter Adapter.
        Sollte man apollon77 das evtl. mitteilen? Ist das überhaupt ein Bug? Erst mal herzlichen Dank melde dich wenn du Zeit hast.👌
        Grüße Fabio

        Iobroker:

        • Für mich persöhnlich, gibt es nichts besseres, ich liebe es.

        • Das hat unser Smarthome erst zu Smarthome gemacht.

        • Du wächst mit ioBroker und ioBroker wächst mit dir.

        • Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        AsgothianA 1 Reply Last reply
        0
        • FabioF Fabio

          @Asgothian so Test beendet. Ich bestätige das dieser Fehler durch deinen Workaround behoben ist. Hab jetzt alle Geräte wo das war umgestellt, blöd nur das ich sie dann auch erst löschen musste im Matter Adapter.
          Sollte man apollon77 das evtl. mitteilen? Ist das überhaupt ein Bug? Erst mal herzlichen Dank melde dich wenn du Zeit hast.👌
          Grüße Fabio

          AsgothianA Offline
          AsgothianA Offline
          Asgothian
          Developer
          wrote on last edited by Asgothian
          #31

          @fabio sagte in Tester gesucht: Zigbee 3.2.x:

          @Asgothian so Test beendet. Ich bestätige das dieser Fehler durch deinen Workaround behoben ist. Hab jetzt alle Geräte wo das war umgestellt, blöd nur das ich sie dann auch erst löschen musste im Matter Adapter.
          Sollte man apollon77 das evtl. mitteilen? Ist das überhaupt ein Bug? Erst mal herzlichen Dank melde dich wenn du Zeit hast.👌
          Grüße Fabio

          • das der Type detektor den available state als 'SET_ACTUAL` deklariert ist unglücklich. Das der Matter Adapter den einfach so übernimmt auch.
          • Das der Matter Adapter nicht von sich aus auf geänderte Rollen reagiert ist meiner Meinung nach ein Bug - allerdings kann es sein das @apollon77 das absichtlich so umgesetzt hat.

          Nen Issue ist das auf aber jeden Fall wert - dann kann geschaut werden ob das absicht, versehen oder bug ist.

          Zum Thema Type Detektor (das ist denk ich nicht apollons direkte Baustelle) - das was da gemacht wird ist denkbar unschön:

          Lt. der Rollen definition soll ein Datenpunkt dessen Role nicht zu den vordefinierten passt die Role state bekommen:

          • state - very common purpose. If you don't know which role the state has, use this one.

          Die Doku zum Type-Detector für lights sagt in der Tabelle das der Wert für ON_ACTUAL ein Boolean mit der Role sensor.light sein soll. Leider sagt das Match-Muster das daneben auch Boolean states mit der Role state oder switch als ON_ACTUAL genommen werden.

          In der Kombination muss das eigentlich schief gehen. Ob das ein Fehler im Matter Adapter, im Type Detektor oder in der Role Definition ist weiss ich nicht.
          Ich kenne verschiedene Zigbee Devices die als Light erkannt werden sollen, die aber weitere boolean States beinhalten - nicht nur available. Bei einigen davon gibt es sogar mehrere read only boolean states.

          In der 3.2.6 wird jedenfalls zumindest der state available eine andere Role bekommen: indicator.reachable

          Trotzdem ist die Kombination von Role definition, Device-Detektor und Matter Adapter in der Form mindestens mal unglücklich.

          A.

          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

          FabioF 1 Reply Last reply
          1
          • AsgothianA Asgothian

            @fabio sagte in Tester gesucht: Zigbee 3.2.x:

            @Asgothian so Test beendet. Ich bestätige das dieser Fehler durch deinen Workaround behoben ist. Hab jetzt alle Geräte wo das war umgestellt, blöd nur das ich sie dann auch erst löschen musste im Matter Adapter.
            Sollte man apollon77 das evtl. mitteilen? Ist das überhaupt ein Bug? Erst mal herzlichen Dank melde dich wenn du Zeit hast.👌
            Grüße Fabio

            • das der Type detektor den available state als 'SET_ACTUAL` deklariert ist unglücklich. Das der Matter Adapter den einfach so übernimmt auch.
            • Das der Matter Adapter nicht von sich aus auf geänderte Rollen reagiert ist meiner Meinung nach ein Bug - allerdings kann es sein das @apollon77 das absichtlich so umgesetzt hat.

            Nen Issue ist das auf aber jeden Fall wert - dann kann geschaut werden ob das absicht, versehen oder bug ist.

            Zum Thema Type Detektor (das ist denk ich nicht apollons direkte Baustelle) - das was da gemacht wird ist denkbar unschön:

            Lt. der Rollen definition soll ein Datenpunkt dessen Role nicht zu den vordefinierten passt die Role state bekommen:

            • state - very common purpose. If you don't know which role the state has, use this one.

            Die Doku zum Type-Detector für lights sagt in der Tabelle das der Wert für ON_ACTUAL ein Boolean mit der Role sensor.light sein soll. Leider sagt das Match-Muster das daneben auch Boolean states mit der Role state oder switch als ON_ACTUAL genommen werden.

            In der Kombination muss das eigentlich schief gehen. Ob das ein Fehler im Matter Adapter, im Type Detektor oder in der Role Definition ist weiss ich nicht.
            Ich kenne verschiedene Zigbee Devices die als Light erkannt werden sollen, die aber weitere boolean States beinhalten - nicht nur available. Bei einigen davon gibt es sogar mehrere read only boolean states.

            In der 3.2.6 wird jedenfalls zumindest der state available eine andere Role bekommen: indicator.reachable

            Trotzdem ist die Kombination von Role definition, Device-Detektor und Matter Adapter in der Form mindestens mal unglücklich.

            A.

            FabioF Offline
            FabioF Offline
            Fabio
            wrote on last edited by
            #32

            @asgothian
            Type detektor available wird als state als 'SET_ACTUAL` deklariert
            https://github.com/ioBroker/ioBroker.matter/issues/618

            Iobroker:

            • Für mich persöhnlich, gibt es nichts besseres, ich liebe es.

            • Das hat unser Smarthome erst zu Smarthome gemacht.

            • Du wächst mit ioBroker und ioBroker wächst mit dir.

            • Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            1 Reply Last reply
            0
            • apollon77A Offline
              apollon77A Offline
              apollon77
              wrote on last edited by apollon77
              #33

              Hey. Ja das an einigen stellen im type detector auch generische „state“ rollen genutzt werden sind der vergangenheit geschuldet. Kann ich leider so einfach nicht ändern. Alternative sind aliase oder Rollen korrigieren. Aber ja man kann gern type detector issue mit Beispiel Objekt Export anlegen dann kann man das diskutieren.

              Das der matter Adapter (oder auch iot) nicht auf sich ändernde Rollen reagiert ohne restart bzw neustarten der Bridge liegt einfach daran das sich Rollen im Normalfall nicht einfach so ändern. Also für so einen Sonderfall Logik zu bauen empfinde ich daher als eher unnötig um ehrlich zu sein.

              Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

              • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
              • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
              FabioF AsgothianA 2 Replies Last reply
              0
              • apollon77A apollon77

                Hey. Ja das an einigen stellen im type detector auch generische „state“ rollen genutzt werden sind der vergangenheit geschuldet. Kann ich leider so einfach nicht ändern. Alternative sind aliase oder Rollen korrigieren. Aber ja man kann gern type detector issue mit Beispiel Objekt Export anlegen dann kann man das diskutieren.

                Das der matter Adapter (oder auch iot) nicht auf sich ändernde Rollen reagiert ohne restart bzw neustarten der Bridge liegt einfach daran das sich Rollen im Normalfall nicht einfach so ändern. Also für so einen Sonderfall Logik zu bauen empfinde ich daher als eher unnötig um ehrlich zu sein.

                FabioF Offline
                FabioF Offline
                Fabio
                wrote on last edited by Fabio
                #34

                @apollon77 ich bin nur ein einfacher Nutzer und kein Developer und verstehe auch nicht immer die Zusammenhänge.
                Aber, ich persöhnlich finde das sehr merkwürdig, das An sich ändert wenn der State dafür aber nicht geschaltet wurde, sondern nur weil value generated 'true' from device a4c1389893367f90 for 'Available' geändert sprich abgefragt wurde, so weiß man letztendlich nicht wie in der Apple Home App, ist das Gerät nun wirklich An oder Aus. Und das finde ich ist ne Dikussion oder Änderung alle mal wert. ;-)

                Herzliche Grüße
                Fabio

                Iobroker:

                • Für mich persöhnlich, gibt es nichts besseres, ich liebe es.

                • Das hat unser Smarthome erst zu Smarthome gemacht.

                • Du wächst mit ioBroker und ioBroker wächst mit dir.

                • Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                1 Reply Last reply
                0
                • apollon77A apollon77

                  Hey. Ja das an einigen stellen im type detector auch generische „state“ rollen genutzt werden sind der vergangenheit geschuldet. Kann ich leider so einfach nicht ändern. Alternative sind aliase oder Rollen korrigieren. Aber ja man kann gern type detector issue mit Beispiel Objekt Export anlegen dann kann man das diskutieren.

                  Das der matter Adapter (oder auch iot) nicht auf sich ändernde Rollen reagiert ohne restart bzw neustarten der Bridge liegt einfach daran das sich Rollen im Normalfall nicht einfach so ändern. Also für so einen Sonderfall Logik zu bauen empfinde ich daher als eher unnötig um ehrlich zu sein.

                  AsgothianA Offline
                  AsgothianA Offline
                  Asgothian
                  Developer
                  wrote on last edited by
                  #35

                  @apollon77

                  Das der matter Adapter (oder auch iot) nicht auf sich ändernde Rollen reagiert ohne restart bzw >neustarten der Bridge liegt einfach daran das sich Rollen im Normalfall nicht einfach so ändern. Also für so einen Sonderfall Logik zu bauen empfinde ich daher als eher unnötig um ehrlich zu sein

                  Nur als Klarstellung - beim Neustart des matter Adapters werden die Änderungen der Role erkannt ?

                  A.

                  ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                  "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                  apollon77A 1 Reply Last reply
                  1
                  • AsgothianA Asgothian

                    @apollon77

                    Das der matter Adapter (oder auch iot) nicht auf sich ändernde Rollen reagiert ohne restart bzw >neustarten der Bridge liegt einfach daran das sich Rollen im Normalfall nicht einfach so ändern. Also für so einen Sonderfall Logik zu bauen empfinde ich daher als eher unnötig um ehrlich zu sein

                    Nur als Klarstellung - beim Neustart des matter Adapters werden die Änderungen der Role erkannt ?

                    A.

                    apollon77A Offline
                    apollon77A Offline
                    apollon77
                    wrote on last edited by
                    #36

                    @asgothian Sogar beim "Nur neustarten (einmal aus und an) der Bridge" weil dann wird alles eingelesen und gemappt. Ja

                    Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                    • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                    • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                    1 Reply Last reply
                    2
                    • apollon77A Offline
                      apollon77A Offline
                      apollon77
                      wrote on last edited by
                      #37

                      Ich hab mal https://github.com/ioBroker/ioBroker.type-detector/issues/155 angelegt. Gern dort Meinungen rein hauen

                      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                      1 Reply Last reply
                      2
                      • F Offline
                        F Offline
                        Flaterick
                        wrote on last edited by Flaterick
                        #38

                        Hab da ein Problem weis aber nicht Obs hier rein Passt.
                        Zumindest ist es die Testversion die ansonsten zuverlässig geht.
                        Hab angefangen zu Basteln, dazu wollte ich einen Externen Converter einbinden. Denke er wird auch gefunden nur der zugriff wird verweigert.Screenshot 2025-11-24 173105.png

                        Das ganze läuft auf aktuellem Ubuntu unter Docker, ioBroker ist auch aktuell.

                        Screenshot 2025-11-24 174305.png

                        1 Reply Last reply
                        0
                        • AsgothianA Offline
                          AsgothianA Offline
                          Asgothian
                          Developer
                          wrote on last edited by
                          #39

                          Bitte posten:

                          • den externen konverter den du nutzt
                          • die Einträge zum externen Konverter beim Start des Adapters. Da muss so etwas (o.a.) stehen
                          2025-11-23 20:12:40.755 - info: zigbee.0 (983320) Adding code from './../zigbee-herdsman-converters/dist/lib/modernExtend' as 'm' to sandbox -- success
                          2025-11-23 20:12:40.756 - info: zigbee.0 (983320) Adding code from './../zigbee-herdsman-converters/dist/lib/types' as 'type {DefinitionWithExtend}' to sandbox -- success
                          2025-11-23 20:12:40.757 - warn: zigbee.0 (983320) Trying to run sandbox for /opt/iobroker/iobroker-data/zigbee_0/shelly.js
                          2025-11-23 20:12:40.759 - info: zigbee.0 (983320) Model S4SW-001X8EU defined in external converter /opt/iobroker/iobroker-data/zigbee_0/shelly.js
                          2025-11-23 20:12:40.759 - info: zigbee.0 (983320) added external converter using addExternalDefinition (0 ms)
                          2025-11-23 20:12:40.760 - warn: zigbee.0 (983320) Trying to run sandbox for /opt/iobroker/iobroker-data/zigbee_0/esp.js
                          2025-11-23 20:12:40.763 - info: zigbee.0 (983320) Model ZBColorLightBulb defined in external converter /opt/iobroker/iobroker-data/zigbee_0/esp.js
                          2025-11-23 20:12:40.763 - info: zigbee.0 (983320) added external converter using addExternalDefinition (0 ms)
                          

                          A.

                          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                          1 Reply Last reply
                          0
                          • F Offline
                            F Offline
                            Flaterick
                            wrote on last edited by
                            #40

                            Das ist schon mal der Konverter wurde von PTVO erzeugt.

                            const zigbeeHerdsmanConverters = require('zigbee-herdsman-converters');
                            const zigbeeHerdsmanUtils = require('zigbee-herdsman-converters/lib/utils');
                            
                            
                            const exposes = zigbeeHerdsmanConverters['exposes'] || require("zigbee-herdsman-converters/lib/exposes");
                            const ea = exposes.access;
                            const e = exposes.presets;
                            const modernExposes = (e.hasOwnProperty('illuminance_lux'))? false: true;
                            
                            const fz = zigbeeHerdsmanConverters.fromZigbeeConverters || zigbeeHerdsmanConverters.fromZigbee;
                            const tz = zigbeeHerdsmanConverters.toZigbeeConverters || zigbeeHerdsmanConverters.toZigbee;
                            
                            const ptvo_switch = (zigbeeHerdsmanConverters.findByModel)?zigbeeHerdsmanConverters.findByModel('ptvo.switch'):zigbeeHerdsmanConverters.findByDevice({modelID: 'ptvo.switch'});
                            fz.ptvo_on_off = {
                              cluster: 'genOnOff',
                              type: ['attributeReport', 'readResponse'],
                              convert: (model, msg, publish, options, meta) => {
                                  if (msg.data.hasOwnProperty('onOff')) {
                                      const channel = msg.endpoint.ID;
                                      const endpointName = `l${channel}`;
                                      const binaryEndpoint = model.meta && model.meta.binaryEndpoints && model.meta.binaryEndpoints[endpointName];
                                      const prefix = (binaryEndpoint) ? model.meta.binaryEndpoints[endpointName] : 'state';
                                      const property = `${prefix}_${endpointName}`;
                            	  if (binaryEndpoint) {
                                        return {[property]: msg.data['onOff'] === 1};
                                      }
                                      return {[property]: msg.data['onOff'] === 1 ? 'ON' : 'OFF'};
                                  }
                              },
                            };
                            
                            
                            const switchTypesList = {
                                'switch': 0x00,
                                'single click': 0x01,
                                'multi-click': 0x02,
                                'reset to defaults': 0xff,
                            };
                            
                            const switchActionsList = {
                                on: 0x00,
                                off: 0x01,
                                toggle: 0x02,
                            };
                            
                            const inputLinkList = {
                                no: 0x00,
                                yes: 0x01,
                            };
                            
                            const bindCommandList = {
                                'on/off': 0x00,
                                'toggle': 0x01,
                                'change level up': 0x02,
                                'change level down': 0x03,
                                'change level up with off': 0x04,
                                'change level down with off': 0x05,
                                'recall scene 0': 0x06,
                                'recall scene 1': 0x07,
                                'recall scene 2': 0x08,
                                'recall scene 3': 0x09,
                                'recall scene 4': 0x0A,
                                'recall scene 5': 0x0B,
                                'dimmer': 0x0C,
                                'dimmer (hue)': 0x0D,
                                'dimmer (saturation)': 0x0E,
                                'dimmer (color temperature)': 0x0F,
                                'intruder alarm systems (ias)': 0x20,
                            };
                            
                            function getSortedList(source) {
                                const keysSorted = [];
                                for (const key in source) {
                                    keysSorted.push([key, source[key]]);
                                }
                            
                                keysSorted.sort(function(a, b) {
                                    return a[1] - b[1];
                                });
                            
                                const result = [];
                                keysSorted.forEach((item) => {
                                    result.push(item[0]);
                                });
                                return result;
                            }
                            
                            function getListValueByKey(source, value) {
                                const intVal = parseInt(value, 10);
                                return source.hasOwnProperty(value) ? source[value] : intVal;
                            }
                            
                            const getKey = (object, value) => {
                                for (const key in object) {
                                    if (object[key] == value) return key;
                                }
                            };
                            
                            tz.ptvo_on_off_config = {
                                key: ['switch_type', 'switch_actions', 'link_to_output', 'bind_command'],
                                convertGet: async (entity, key, meta) => {
                                    await entity.read('genOnOffSwitchCfg', ['switchType', 'switchActions', 0x4001, 0x4002]);
                                },
                                convertSet: async (entity, key, value, meta) => {
                                    let payload;
                                    let data;
                                    switch (key) {
                                    case 'switch_type':
                                        data = getListValueByKey(switchTypesList, value);
                                        payload = {switchType: data};
                                        break;
                                    case 'switch_actions':
                                        data = getListValueByKey(switchActionsList, value);
                                        payload = {switchActions: data};
                                        break;
                                    case 'link_to_output':
                                        data = getListValueByKey(inputLinkList, value);
                                        payload = {0x4001: {value: data, type: 32 /* uint8 */}};
                                        break;
                                    case 'bind_command':
                                        data = getListValueByKey(bindCommandList, value);
                                        payload = {0x4002: {value: data, type: 32 /* uint8 */}};
                                        break;
                                    }
                                    await entity.write('genOnOffSwitchCfg', payload);
                                },
                            };
                            
                            fz.ptvo_on_off_config = {
                                cluster: 'genOnOffSwitchCfg',
                                type: ['readResponse', 'attributeReport'],
                                convert: (model, msg, publish, options, meta) => {
                                    const channel = getKey(model.endpoint(msg.device), msg.endpoint.ID);
                                    const {switchActions, switchType} = msg.data;
                                    const inputLink = msg.data[0x4001];
                                    const bindCommand = msg.data[0x4002];
                                    return {
                                        [`switch_type_${channel}`]: getKey(switchTypesList, switchType),
                                        [`switch_actions_${channel}`]: getKey(switchActionsList, switchActions),
                                        [`link_to_output_${channel}`]: getKey(inputLinkList, inputLink),
                                        [`bind_command_${channel}`]: getKey(bindCommandList, bindCommand),
                                    };
                                },
                            };
                            
                            function ptvo_on_off_config_exposes(epName) {
                                const features = [];
                                features.push(exposes.enum('switch_type', exposes.access.ALL,
                                    getSortedList(switchTypesList)).withEndpoint(epName));
                                features.push(exposes.enum('switch_actions', exposes.access.ALL,
                                    getSortedList(switchActionsList)).withEndpoint(epName));
                                features.push(exposes.enum('link_to_output', exposes.access.ALL,
                                    getSortedList(inputLinkList)).withEndpoint(epName));
                                features.push(exposes.enum('bind_command', exposes.access.ALL,
                                    getSortedList(bindCommandList)).withEndpoint(epName));
                                return features;
                            }
                            
                            
                            
                            
                            const device = {
                                zigbeeModel: ['Mat-LED'],
                                model: 'Mat-LED',
                                vendor: 'Mat',
                                description: '[Configurable firmware](https://ptvo.info/zigbee-configurable-firmware-features/)',
                                fromZigbee: [fz.ignore_basic_report, fz.ptvo_on_off, fz.ptvo_multistate_action, fz.ptvo_on_off_config, fz.electrical_measurement,],
                                toZigbee: [tz.ptvo_switch_trigger, tz.on_off, tz.ptvo_on_off_config,],
                                exposes: [e.switch().withDescription('Impulsschalter').withEndpoint('l1'),
                                  e.action(['single', 'double', 'triple', 'hold', 'release']),
                                  ...ptvo_on_off_config_exposes('l1'),
                                  e.voltage().withAccess(ea.STATE).withEndpoint('l3'),
                            ],
                                meta: {
                                    multiEndpoint: true,
                                    
                                },
                                endpoint: (device) => {
                                    return {
                                        l1: 1, l3: 3,
                                    };
                                },
                                configure: async (device, coordinatorEndpoint, logger) => {
                                  const endpoint = device.getEndpoint(1);
                                  await endpoint.read('genBasic', ['modelId', 'swBuildId', 'powerSource']);
                                for (const endpoint of device.endpoints) {
                                    if (endpoint.supportsInputCluster('haElectricalMeasurement')) {
                                        endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', {dcCurrentDivisor: 1000, dcCurrentMultiplier: 1,
                                            dcPowerDivisor: 10, dcPowerMultiplier: 1, dcVoltageDivisor: 100, dcVoltageMultiplier: 1,
                                            acVoltageDivisor: 100, acVoltageMultiplier: 1, acCurrentDivisor: 1000, acCurrentMultiplier: 1,
                                            acPowerDivisor: 1, acPowerMultiplier: 1});
                                    }
                                    if (endpoint.supportsInputCluster('seMetering')) {
                                        endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 1000, multiplier: 1});
                                    }
                                }
                                },
                            
                            };
                            
                            module.exports = device;
                            
                            
                            1 Reply Last reply
                            0
                            • F Offline
                              F Offline
                              Flaterick
                              wrote on last edited by
                              #41

                              Hat leider etwas gedauert.
                              Ich Finde keine Entsprechenden Einträge.
                              Unter zigbee2mqtt funktioniert es.

                              1 Reply Last reply
                              0
                              • F Offline
                                F Offline
                                Flaterick
                                wrote on last edited by Flaterick
                                #42

                                Habs Hinbekommen, Hatte in der Konfiguration in der Zigbeeinstanz einen Schreibfehler.
                                Danke

                                1 Reply Last reply
                                0
                                • AsgothianA Offline
                                  AsgothianA Offline
                                  Asgothian
                                  Developer
                                  wrote on last edited by
                                  #43

                                  Ok.. jetzt bin ich verwirrt. Das Problem lag nicht am externen Konverter, sondern ?

                                  A.

                                  ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                                  "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                                  1 Reply Last reply
                                  0
                                  • F Offline
                                    F Offline
                                    Flaterick
                                    wrote on last edited by Flaterick
                                    #44

                                    Ich war hier zu doof den richtigen Namen einzutragen (Schreibfehler).
                                    Und ja es sind nur ein Paar Buchstaben.

                                    Screenshot 2025-11-25 213448.png

                                    Wieso allerdings die Fehlermeldung Illegal operation on a directory read,
                                    gekommen ist weiß ich auch nicht.

                                    1 Reply Last reply
                                    0
                                    • AsgothianA Offline
                                      AsgothianA Offline
                                      Asgothian
                                      Developer
                                      wrote on last edited by
                                      #45

                                      ok.. Dann bin ich ja beruhigt :)

                                      Ich hatte am Konverter nix auffälliges gefunden, und die Fehlermeldung sah seltsam aus.

                                      A.

                                      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                                      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                                      1 Reply Last reply
                                      0
                                      • F Offline
                                        F Offline
                                        Flaterick
                                        wrote on last edited by
                                        #46

                                        Trotzdem Danke fürs Drüber schauen.

                                        1 Reply Last reply
                                        0
                                        • AsgothianA Offline
                                          AsgothianA Offline
                                          Asgothian
                                          Developer
                                          wrote on last edited by
                                          #47

                                          Dafür nicht.

                                          Noch ein Tip:

                                          Wenn du den device = Teil des Konverters so anpasst wie unten gepostet, und du parallel zum Konverter auch noch ein Icon (PNG Format, max 512x512 px, am besten mit transparentem Hintergrund) hinterlegst (z.Bsp. als Mat-LED.png), dann sollte der Adapter das Icon automatisch auch einbinden.

                                          const device = {
                                              zigbeeModel: ['Mat-LED'],
                                              model: 'Mat-LED',
                                              vendor: 'Mat',
                                              description: '[Configurable firmware](https://ptvo.info/zigbee-configurable-firmware-features/)',
                                              fromZigbee: [fz.ignore_basic_report, fz.ptvo_on_off, fz.ptvo_multistate_action, fz.ptvo_on_off_config, fz.electrical_measurement,],
                                              toZigbee: [tz.ptvo_switch_trigger, tz.on_off, tz.ptvo_on_off_config,],
                                              exposes: [e.switch().withDescription('Impulsschalter').withEndpoint('l1'),
                                                e.action(['single', 'double', 'triple', 'hold', 'release']),
                                                ...ptvo_on_off_config_exposes('l1'),
                                                e.voltage().withAccess(ea.STATE).withEndpoint('l3'),
                                               ],
                                              meta: {
                                                  multiEndpoint: true,
                                              },
                                              endpoint: (device) => { return { l1: 1, l3: 3,}; },
                                              configure: async (device, coordinatorEndpoint, logger) => {
                                                const endpoint = device.getEndpoint(1);
                                                await endpoint.read('genBasic', ['modelId', 'swBuildId', 'powerSource']);
                                                for (const endpoint of device.endpoints) {
                                                  if (endpoint.supportsInputCluster('haElectricalMeasurement')) {
                                                      endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', {dcCurrentDivisor: 1000, dcCurrentMultiplier: 1,
                                                          dcPowerDivisor: 10, dcPowerMultiplier: 1, dcVoltageDivisor: 100, dcVoltageMultiplier: 1,
                                                          acVoltageDivisor: 100, acVoltageMultiplier: 1, acCurrentDivisor: 1000, acCurrentMultiplier: 1,
                                                          acPowerDivisor: 1, acPowerMultiplier: 1});
                                                  }
                                                  if (endpoint.supportsInputCluster('seMetering')) {
                                                      endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 1000, multiplier: 1});
                                                  }
                                              }
                                            },
                                            icon: "./Mat-LED.png",
                                          };
                                          

                                          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                                          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                                          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

                                          364

                                          Online

                                          32.4k

                                          Users

                                          81.5k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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