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

  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. CC2530/CC2531 als Custom-Zigbee-Aktor/Sensor

NEWS

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

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

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

CC2530/CC2531 als Custom-Zigbee-Aktor/Sensor

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
zigbeediyptvo
166 Beiträge 10 Kommentatoren 24.4k Aufrufe 12 Watching
  • Ä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.
  • skvarelS skvarel

    @asgothian .. das funktioniert leider überhaupt nicht

    94dc8da6-ed93-4fa0-aafd-40524a50b9d4-image.png

    Sobald ich deine Teile einsetze, kommt gar nichts mehr an. Bei dir waren noch ein paar Klammern offen. Die habe ich geschlossen.

    So hatte ich den Code verwendet:

    const fzlocal = {
      ptvo_switch_analog_to_boolean: {
              cluster: 'genAnalogInput',
              type: ['attributeReport', 'readResponse'],
              convert: (model, msg, publish, options, meta) => {
                  const value =( msg.data['presentValue'] > 300 );
                  const action = (value ? 'occupied':'free');
                  return {action: postfixWithEndpointName(action, msg, model, meta)};
               },
      }
    };
    
    const device = {
        zigbeeModel: ['CC2531.US100'],
        model: 'CC2531.US100',
        vendor: 'inventwo',
        description: '[CC2531 w. US-100 Sensor](https://github.com/inventwo/custom-zigbee)',
        fromZigbee: [fz.ignore_basic_report, fz.ptvo_switch_uart, fz.ptvo_switch_analog_input, fzlocal.ptvo_switch_analog_to_boolean],
        toZigbee: [tz.ptvo_switch_trigger, tz.ptvo_switch_uart,],
        exposes: [
          exposes.numeric('l1', ea.STATE).withDescription('Innenraummessung').withUnit('mm'),
          exposes.action(['occupied']).withDescription('Innenraum belegt'),
          exposes.action(['free']).withDescription('Innenraum frei'),
        ],
        meta: {
            multiEndpoint: true,
                    
        },
        endpoint: (device) => {
            return {
                l1: 1,
            };
        },
        
        configure: async (device, coordinatorEndpoint, logger) => {
          const endpoint = device.getEndpoint(1);
          await endpoint.read('genBasic', ['modelId', 'swBuildId', 'powerSource']);
        },
    
    };
    
    AsgothianA Offline
    AsgothianA Offline
    Asgothian
    Developer
    schrieb am zuletzt editiert von
    #92

    @skvarel ich hab nochmal was angepasst. Versuch bitte mal so:

    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.legacy = ptvo_switch.meta.tuyaThermostatPreset;
    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 fzlocal = {
      local_analog_switch: {
        cluster: 'genAnalogInput',
        type: ['attributeReport', 'readResponse'],
        convert: (model, msg, publish, options, meta) => {
            const payload = {};
            const channel = msg.endpoint.ID;
            const name = `l${channel}`;
            const endpoint = msg.endpoint;
            payload[name] = precisionRound(msg.data['presentValue'], 3);
            payload[`contact_${channel}`] = (msg.data['presentValue']  < 300)
            const cluster = 'genLevelCtrl';
            if (endpoint && (endpoint.supportsInputCluster(cluster) || endpoint.supportsOutputCluster(cluster))) {
                payload['brightness_' + name] = msg.data['presentValue'];
            } else if (msg.data.description !== undefined) {
                const data1 = msg.data['description'];
                if (data1) {
                    const data2 = data1.split(',');
                    const devid = data2[1];
                    const unit = data2[0];
                    if (devid) {
                        payload['device_' + name] = devid;
                    }
    
                    const valRaw = msg.data['presentValue'];
                    if (unit) {
                        let val = precisionRound(valRaw, 1);
    
                        const nameLookup = {
                            C: 'temperature',
                            '%': 'humidity',
                            m: 'altitude',
                            Pa: 'pressure',
                            ppm: 'quality',
                            psize: 'particle_size',
                            V: 'voltage',
                            A: 'current',
                            Wh: 'energy',
                            W: 'power',
                            Hz: 'frequency',
                            pf: 'power_factor',
                            lx: 'illuminance',
                        };
    
                        let nameAlt = '';
                        if (unit === 'A' || unit === 'pf') {
                            if (valRaw < 1) {
                                val = precisionRound(valRaw, 3);
                            }
                        }
                        if (unit.startsWith('mcpm') || unit.startsWith('ncpm')) {
                            const num = unit.substr(4, 1);
                            nameAlt = num === 'A' ? unit.substr(0, 4) + '10' : unit;
                            val = precisionRound(valRaw, 2);
                        } else {
                            nameAlt = nameLookup[unit];
                        }
                        if (nameAlt === undefined) {
                            const valueIndex = parseInt(unit, 10);
                            if (!isNaN(valueIndex)) {
                                nameAlt = 'val' + unit;
                            }
                        }
    
                        if (nameAlt !== undefined) {
                            payload[nameAlt + '_' + name] = val;
                        }
                    }
                }
            }
            return payload;
        },
      },
    
      
    }
    
    const device = {
        zigbeeModel: ['CC2531.US100'],
        model: 'CC2531.US100',
        vendor: 'inventwo',
        description: '[CC2531 w. US-100 Sensor](https://github.com/inventwo/custom-zigbee)',
        fromZigbee: [fz.ignore_basic_report, fz.ptvo_switch_uart, fzlocal.local_analog_switch,],
        toZigbee: [tz.ptvo_switch_trigger, tz.ptvo_switch_uart,],
        exposes: [
          exposes.numeric('l1', ea.STATE).withDescription('Innenraummessung').withUnit('mm'),
          e.contact().withEndpoint('l1'),
        ],
        meta: {
            multiEndpoint: true,
                    
        },
        endpoint: (device) => {
            return {
                l1: 1,
            };
        },
          configure: async (device, coordinatorEndpoint, logger) => {
          const endpoint = device.getEndpoint(1);
          await endpoint.read('genBasic', ['modelId', 'swBuildId', 'powerSource']);
        },
    
    };
    
    module.exports = device;
    

    (wieder ohne icon)

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

    skvarelS 1 Antwort Letzte Antwort
    0
    • AsgothianA Asgothian

      @skvarel ich hab nochmal was angepasst. Versuch bitte mal so:

      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.legacy = ptvo_switch.meta.tuyaThermostatPreset;
      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 fzlocal = {
        local_analog_switch: {
          cluster: 'genAnalogInput',
          type: ['attributeReport', 'readResponse'],
          convert: (model, msg, publish, options, meta) => {
              const payload = {};
              const channel = msg.endpoint.ID;
              const name = `l${channel}`;
              const endpoint = msg.endpoint;
              payload[name] = precisionRound(msg.data['presentValue'], 3);
              payload[`contact_${channel}`] = (msg.data['presentValue']  < 300)
              const cluster = 'genLevelCtrl';
              if (endpoint && (endpoint.supportsInputCluster(cluster) || endpoint.supportsOutputCluster(cluster))) {
                  payload['brightness_' + name] = msg.data['presentValue'];
              } else if (msg.data.description !== undefined) {
                  const data1 = msg.data['description'];
                  if (data1) {
                      const data2 = data1.split(',');
                      const devid = data2[1];
                      const unit = data2[0];
                      if (devid) {
                          payload['device_' + name] = devid;
                      }
      
                      const valRaw = msg.data['presentValue'];
                      if (unit) {
                          let val = precisionRound(valRaw, 1);
      
                          const nameLookup = {
                              C: 'temperature',
                              '%': 'humidity',
                              m: 'altitude',
                              Pa: 'pressure',
                              ppm: 'quality',
                              psize: 'particle_size',
                              V: 'voltage',
                              A: 'current',
                              Wh: 'energy',
                              W: 'power',
                              Hz: 'frequency',
                              pf: 'power_factor',
                              lx: 'illuminance',
                          };
      
                          let nameAlt = '';
                          if (unit === 'A' || unit === 'pf') {
                              if (valRaw < 1) {
                                  val = precisionRound(valRaw, 3);
                              }
                          }
                          if (unit.startsWith('mcpm') || unit.startsWith('ncpm')) {
                              const num = unit.substr(4, 1);
                              nameAlt = num === 'A' ? unit.substr(0, 4) + '10' : unit;
                              val = precisionRound(valRaw, 2);
                          } else {
                              nameAlt = nameLookup[unit];
                          }
                          if (nameAlt === undefined) {
                              const valueIndex = parseInt(unit, 10);
                              if (!isNaN(valueIndex)) {
                                  nameAlt = 'val' + unit;
                              }
                          }
      
                          if (nameAlt !== undefined) {
                              payload[nameAlt + '_' + name] = val;
                          }
                      }
                  }
              }
              return payload;
          },
        },
      
        
      }
      
      const device = {
          zigbeeModel: ['CC2531.US100'],
          model: 'CC2531.US100',
          vendor: 'inventwo',
          description: '[CC2531 w. US-100 Sensor](https://github.com/inventwo/custom-zigbee)',
          fromZigbee: [fz.ignore_basic_report, fz.ptvo_switch_uart, fzlocal.local_analog_switch,],
          toZigbee: [tz.ptvo_switch_trigger, tz.ptvo_switch_uart,],
          exposes: [
            exposes.numeric('l1', ea.STATE).withDescription('Innenraummessung').withUnit('mm'),
            e.contact().withEndpoint('l1'),
          ],
          meta: {
              multiEndpoint: true,
                      
          },
          endpoint: (device) => {
              return {
                  l1: 1,
              };
          },
            configure: async (device, coordinatorEndpoint, logger) => {
            const endpoint = device.getEndpoint(1);
            await endpoint.read('genBasic', ['modelId', 'swBuildId', 'powerSource']);
          },
      
      };
      
      module.exports = device;
      

      (wieder ohne icon)

      skvarelS Offline
      skvarelS Offline
      skvarel
      Developer
      schrieb am zuletzt editiert von skvarel
      #93

      @asgothian .. Meldungen im Log:

      z2m: Exception while calling fromZigbee converter: precisionRound is not defined}

      So sieht es beim neuen Code aus:

      094d1bc2-1361-46c9-b010-0f985c4d64c0-image.png

      #TeamInventwo
      • vis-inventwo & vis-2-widgets-inventwo
      • vis-icontwo & vis-2-widgets-icontwo

      AsgothianA 1 Antwort Letzte Antwort
      0
      • skvarelS skvarel

        @asgothian .. Meldungen im Log:

        z2m: Exception while calling fromZigbee converter: precisionRound is not defined}

        So sieht es beim neuen Code aus:

        094d1bc2-1361-46c9-b010-0f985c4d64c0-image.png

        AsgothianA Offline
        AsgothianA Offline
        Asgothian
        Developer
        schrieb am zuletzt editiert von
        #94

        @skvarel das ist nachdem du die Fehlermeldung eliminiert hast oder vorher ? einfach den Aufruf zu precisionRound entfernen und den Wert direkt nutzen

        aus

        precisionRound(msg.data['presentValue'], 3);
        

        wird

        msg.data['presentValue'];
        

        A.

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

        skvarelS 1 Antwort Letzte Antwort
        0
        • AsgothianA Asgothian

          @skvarel das ist nachdem du die Fehlermeldung eliminiert hast oder vorher ? einfach den Aufruf zu precisionRound entfernen und den Wert direkt nutzen

          aus

          precisionRound(msg.data['presentValue'], 3);
          

          wird

          msg.data['presentValue'];
          

          A.

          skvarelS Offline
          skvarelS Offline
          skvarel
          Developer
          schrieb am zuletzt editiert von skvarel
          #95

          @asgothian sagte in CC2530/CC2531 als Custom-Zigbee-Aktor/Sensor:

          msg.data['presentValue'];

          Der Fehler ist jetzt weg! Die Änderung hat geholfen.

          Es bleibt aber bei N/A

          89733758-4587-4db1-a1b3-84316476d3e5-image.png

          #TeamInventwo
          • vis-inventwo & vis-2-widgets-inventwo
          • vis-icontwo & vis-2-widgets-icontwo

          AsgothianA 1 Antwort Letzte Antwort
          0
          • skvarelS skvarel

            @asgothian sagte in CC2530/CC2531 als Custom-Zigbee-Aktor/Sensor:

            msg.data['presentValue'];

            Der Fehler ist jetzt weg! Die Änderung hat geholfen.

            Es bleibt aber bei N/A

            89733758-4587-4db1-a1b3-84316476d3e5-image.png

            AsgothianA Offline
            AsgothianA Offline
            Asgothian
            Developer
            schrieb am zuletzt editiert von
            #96

            @skvarel Du bist doch auf dem ioBroker discord. Wollen wir uns da kurz zusammen hängen - geht einfacher als hier per posts.

            Ich bin einfach mal im '2 user only' channel :)

            A.

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

            skvarelS 1 Antwort Letzte Antwort
            1
            • AsgothianA Asgothian

              @skvarel Du bist doch auf dem ioBroker discord. Wollen wir uns da kurz zusammen hängen - geht einfacher als hier per posts.

              Ich bin einfach mal im '2 user only' channel :)

              A.

              skvarelS Offline
              skvarelS Offline
              skvarel
              Developer
              schrieb am zuletzt editiert von
              #97

              @asgothian .. heute schaffe ich es leider nicht mehr. Morgen hätte ich Zeit.

              #TeamInventwo
              • vis-inventwo & vis-2-widgets-inventwo
              • vis-icontwo & vis-2-widgets-icontwo

              AsgothianA 1 Antwort Letzte Antwort
              0
              • skvarelS skvarel

                @asgothian .. heute schaffe ich es leider nicht mehr. Morgen hätte ich Zeit.

                AsgothianA Offline
                AsgothianA Offline
                Asgothian
                Developer
                schrieb am zuletzt editiert von
                #98

                @skvarel morgen tuts. Wann ?

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

                skvarelS 1 Antwort Letzte Antwort
                1
                • AsgothianA Asgothian

                  @skvarel morgen tuts. Wann ?

                  skvarelS Offline
                  skvarelS Offline
                  skvarel
                  Developer
                  schrieb am zuletzt editiert von
                  #99

                  @asgothian .. ab späten Vormittag. Uhrzeit ist mir egal. Ich habe nichts weiter vor!

                  #TeamInventwo
                  • vis-inventwo & vis-2-widgets-inventwo
                  • vis-icontwo & vis-2-widgets-icontwo

                  AsgothianA 1 Antwort Letzte Antwort
                  0
                  • skvarelS skvarel

                    @asgothian .. ab späten Vormittag. Uhrzeit ist mir egal. Ich habe nichts weiter vor!

                    AsgothianA Offline
                    AsgothianA Offline
                    Asgothian
                    Developer
                    schrieb am zuletzt editiert von
                    #100

                    @skvarel sagte in CC2530/CC2531 als Custom-Zigbee-Aktor/Sensor:

                    @asgothian .. ab späten Vormittag. Uhrzeit ist mir egal. Ich habe nichts weiter vor!

                    sagen wir 11 ?

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

                    skvarelS 2 Antworten Letzte Antwort
                    1
                    • AsgothianA Asgothian

                      @skvarel sagte in CC2530/CC2531 als Custom-Zigbee-Aktor/Sensor:

                      @asgothian .. ab späten Vormittag. Uhrzeit ist mir egal. Ich habe nichts weiter vor!

                      sagen wir 11 ?

                      skvarelS Offline
                      skvarelS Offline
                      skvarel
                      Developer
                      schrieb am zuletzt editiert von
                      #101

                      @asgothian .. das passt! Vielen Dank nochmal, bis morgen :)

                      #TeamInventwo
                      • vis-inventwo & vis-2-widgets-inventwo
                      • vis-icontwo & vis-2-widgets-icontwo

                      1 Antwort Letzte Antwort
                      1
                      • AsgothianA Asgothian

                        @skvarel sagte in CC2530/CC2531 als Custom-Zigbee-Aktor/Sensor:

                        @asgothian .. ab späten Vormittag. Uhrzeit ist mir egal. Ich habe nichts weiter vor!

                        sagen wir 11 ?

                        skvarelS Offline
                        skvarelS Offline
                        skvarel
                        Developer
                        schrieb am zuletzt editiert von skvarel
                        #102

                        @asgothian .. vielen Dank! Ich bin begeistert :)

                        bfc9cc53-9425-46fa-a8a6-3e4224019a1f-image.png

                        Jetzt gehe ich an die anderen Konverter. Da müssen die Namen noch angepasst werden.

                        Das wichtigste wäre mir beim Gewächshaus, direkt Fenster und Tür sowie Heizung und Licht .. anstatt Kontakt und State

                        #TeamInventwo
                        • vis-inventwo & vis-2-widgets-inventwo
                        • vis-icontwo & vis-2-widgets-icontwo

                        1 Antwort Letzte Antwort
                        1
                        • skvarelS Offline
                          skvarelS Offline
                          skvarel
                          Developer
                          schrieb am zuletzt editiert von
                          #103

                          1fca3515-6735-46f1-9b50-190484b150fc-image.png

                          ed0865ec-52b7-4192-9f30-90a953d12f74-image.png

                          #TeamInventwo
                          • vis-inventwo & vis-2-widgets-inventwo
                          • vis-icontwo & vis-2-widgets-icontwo

                          1 Antwort Letzte Antwort
                          0
                          • skvarelS Offline
                            skvarelS Offline
                            skvarel
                            Developer
                            schrieb am zuletzt editiert von skvarel
                            #104

                            Sooo, nächster Konverter angepasst. @jkvarel hat mir geholfen ;)

                            Gefällt mir aber wegen der fehlenden Icons bei den Temperaturen noch nicht.

                            5aba0649-344a-4275-929a-51400c794ea4-image.png

                            #TeamInventwo
                            • vis-inventwo & vis-2-widgets-inventwo
                            • vis-icontwo & vis-2-widgets-icontwo

                            1 Antwort Letzte Antwort
                            0
                            • skvarelS Offline
                              skvarelS Offline
                              skvarel
                              Developer
                              schrieb am zuletzt editiert von
                              #105

                              @Asgothian .. ich könnte noch mal deine Hilfe gebrauchen

                              005e3090-be85-49af-9913-a8caa9821c7c-image.png

                              Ich möchte gern das Icon davor haben.

                              Hier mal mein Konverter, den ich mit @jkvarel gemacht habe:

                              const precisionRound = zigbeeHerdsmanUtils.precisionRound;
                              const fzlocal = {
                                  local_analog_switch: {
                                    cluster: 'genAnalogInput',
                                    type: ['attributeReport', 'readResponse'],
                                    convert: (model, msg, publish, options, meta) => {
                                        const payload = {};
                                        const channel = msg.endpoint.ID;
                                        const mapping = {
                                          1: 'Vorlauftemperatur',
                                          2: 'Ruecklauftemperatur'
                                        }
                              
                                        if(mapping[channel] === undefined) return payload
                              
                                        payload[mapping[channel]] = precisionRound(msg.data['presentValue'], 1)
                              
                                        return payload
                              
                              
                                    }
                                  }
                              }  
                              
                              const device = {
                                  zigbeeModel: ['CC2531.DS18B20'],
                                  model: 'CC2531.DS18B20',
                                  vendor: 'inventwo',
                                  description: '[CC2531 w. DS18B20 Sensor](https://github.com/inventwo/custom-zigbee)',
                                  fromZigbee: [fz.ignore_basic_report, fz.ptvo_switch_analog_input, fzlocal.local_analog_switch],
                                  toZigbee: [tz.ptvo_switch_trigger,],
                                  exposes: [
                                      exposes.numeric('Vorlauftemperatur', ea.STATE).withUnit('°C'),
                                      exposes.numeric('Ruecklauftemperatur', ea.STATE).withUnit('°C'),
                              ],
                                  meta: {
                                      multiEndpoint: true,
                                      
                                  },
                                  endpoint: (device) => {
                                      return {
                                          Vorlauftemperatur: 1, Ruecklauftemperatur: 2,
                                      };
                              

                              #TeamInventwo
                              • vis-inventwo & vis-2-widgets-inventwo
                              • vis-icontwo & vis-2-widgets-icontwo

                              AsgothianA 1 Antwort Letzte Antwort
                              0
                              • skvarelS skvarel

                                @Asgothian .. ich könnte noch mal deine Hilfe gebrauchen

                                005e3090-be85-49af-9913-a8caa9821c7c-image.png

                                Ich möchte gern das Icon davor haben.

                                Hier mal mein Konverter, den ich mit @jkvarel gemacht habe:

                                const precisionRound = zigbeeHerdsmanUtils.precisionRound;
                                const fzlocal = {
                                    local_analog_switch: {
                                      cluster: 'genAnalogInput',
                                      type: ['attributeReport', 'readResponse'],
                                      convert: (model, msg, publish, options, meta) => {
                                          const payload = {};
                                          const channel = msg.endpoint.ID;
                                          const mapping = {
                                            1: 'Vorlauftemperatur',
                                            2: 'Ruecklauftemperatur'
                                          }
                                
                                          if(mapping[channel] === undefined) return payload
                                
                                          payload[mapping[channel]] = precisionRound(msg.data['presentValue'], 1)
                                
                                          return payload
                                
                                
                                      }
                                    }
                                }  
                                
                                const device = {
                                    zigbeeModel: ['CC2531.DS18B20'],
                                    model: 'CC2531.DS18B20',
                                    vendor: 'inventwo',
                                    description: '[CC2531 w. DS18B20 Sensor](https://github.com/inventwo/custom-zigbee)',
                                    fromZigbee: [fz.ignore_basic_report, fz.ptvo_switch_analog_input, fzlocal.local_analog_switch],
                                    toZigbee: [tz.ptvo_switch_trigger,],
                                    exposes: [
                                        exposes.numeric('Vorlauftemperatur', ea.STATE).withUnit('°C'),
                                        exposes.numeric('Ruecklauftemperatur', ea.STATE).withUnit('°C'),
                                ],
                                    meta: {
                                        multiEndpoint: true,
                                        
                                    },
                                    endpoint: (device) => {
                                        return {
                                            Vorlauftemperatur: 1, Ruecklauftemperatur: 2,
                                        };
                                
                                AsgothianA Offline
                                AsgothianA Offline
                                Asgothian
                                Developer
                                schrieb am zuletzt editiert von
                                #106

                                @skvarel Ich fürchte da läufst du auf die Grenzen des Möglichen. Soweit ich das korrekt erkannt habe wird das Icon aus der Benennung des Payloads gemacht - genau das was du da gerade 'umbenannt' hast.

                                Was du versuchen kannst:

                                • 'Vorlauftemperatur' durch 'temperatur_vorlauf' ersetzen (überall wo es auftritt)
                                • 'Ruecklauftemperatur' durch 'temperatur_ruecklauf' ersetzen (überall wo es auftritt)
                                • hoffen :)

                                A.

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

                                skvarelS 1 Antwort Letzte Antwort
                                1
                                • AsgothianA Asgothian

                                  @skvarel Ich fürchte da läufst du auf die Grenzen des Möglichen. Soweit ich das korrekt erkannt habe wird das Icon aus der Benennung des Payloads gemacht - genau das was du da gerade 'umbenannt' hast.

                                  Was du versuchen kannst:

                                  • 'Vorlauftemperatur' durch 'temperatur_vorlauf' ersetzen (überall wo es auftritt)
                                  • 'Ruecklauftemperatur' durch 'temperatur_ruecklauf' ersetzen (überall wo es auftritt)
                                  • hoffen :)

                                  A.

                                  skvarelS Offline
                                  skvarelS Offline
                                  skvarel
                                  Developer
                                  schrieb am zuletzt editiert von
                                  #107

                                  @asgothian .. das teste ich morgen direkt. Dann habe ich aber nicht mehr meine Wunschnamen in der Zigbee-Kachel. Einen Tod muss ich da wohl sterben.

                                  #TeamInventwo
                                  • vis-inventwo & vis-2-widgets-inventwo
                                  • vis-icontwo & vis-2-widgets-icontwo

                                  AsgothianA 1 Antwort Letzte Antwort
                                  0
                                  • skvarelS skvarel

                                    @asgothian .. das teste ich morgen direkt. Dann habe ich aber nicht mehr meine Wunschnamen in der Zigbee-Kachel. Einen Tod muss ich da wohl sterben.

                                    AsgothianA Offline
                                    AsgothianA Offline
                                    Asgothian
                                    Developer
                                    schrieb am zuletzt editiert von
                                    #108

                                    @skvarel sagte in CC2530/CC2531 als Custom-Zigbee-Aktor/Sensor:

                                    @asgothian .. das teste ich morgen direkt. Dann habe ich aber nicht mehr meine Wunschnamen in der Zigbee-Kachel. Einen Tod muss ich da wohl sterben.

                                    Das, oder wir machen eine Anpassung bei zigbee2mqtt.io das man die icons über die exposes vorgeben kann - das ist dann aber ein größerer Wurf.

                                    A.

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

                                    skvarelS 2 Antworten Letzte Antwort
                                    0
                                    • AsgothianA Asgothian

                                      @skvarel sagte in CC2530/CC2531 als Custom-Zigbee-Aktor/Sensor:

                                      @asgothian .. das teste ich morgen direkt. Dann habe ich aber nicht mehr meine Wunschnamen in der Zigbee-Kachel. Einen Tod muss ich da wohl sterben.

                                      Das, oder wir machen eine Anpassung bei zigbee2mqtt.io das man die icons über die exposes vorgeben kann - das ist dann aber ein größerer Wurf.

                                      A.

                                      skvarelS Offline
                                      skvarelS Offline
                                      skvarel
                                      Developer
                                      schrieb am zuletzt editiert von
                                      #109

                                      @asgothian .. über die Exposes wäre ein Traum. Ich denke, ich bin da aber wohl ein Einzellfall ;)

                                      #TeamInventwo
                                      • vis-inventwo & vis-2-widgets-inventwo
                                      • vis-icontwo & vis-2-widgets-icontwo

                                      1 Antwort Letzte Antwort
                                      0
                                      • AsgothianA Asgothian

                                        @skvarel sagte in CC2530/CC2531 als Custom-Zigbee-Aktor/Sensor:

                                        @asgothian .. das teste ich morgen direkt. Dann habe ich aber nicht mehr meine Wunschnamen in der Zigbee-Kachel. Einen Tod muss ich da wohl sterben.

                                        Das, oder wir machen eine Anpassung bei zigbee2mqtt.io das man die icons über die exposes vorgeben kann - das ist dann aber ein größerer Wurf.

                                        A.

                                        skvarelS Offline
                                        skvarelS Offline
                                        skvarel
                                        Developer
                                        schrieb am zuletzt editiert von skvarel
                                        #110

                                        @asgothian .. ich könnte auch mit dem Eintrag 'Temperatur' und dem Icon leben, wenn ich den Namen in der Klammer (das ist der Endpoint) ändern könnte.

                                        Das teste ich morgen nochmal.

                                        Dann hätte ich der Kachel: Temperatur (Vorlauf) anstatt: Temperatur (l1) stehen.

                                        Ich meine, das hatten wir heute schon mal. Ich weiß nur nicht mehr wann das war. Wir haben so vieles geändert :)

                                        #TeamInventwo
                                        • vis-inventwo & vis-2-widgets-inventwo
                                        • vis-icontwo & vis-2-widgets-icontwo

                                        AsgothianA 1 Antwort Letzte Antwort
                                        0
                                        • skvarelS skvarel

                                          @asgothian .. ich könnte auch mit dem Eintrag 'Temperatur' und dem Icon leben, wenn ich den Namen in der Klammer (das ist der Endpoint) ändern könnte.

                                          Das teste ich morgen nochmal.

                                          Dann hätte ich der Kachel: Temperatur (Vorlauf) anstatt: Temperatur (l1) stehen.

                                          Ich meine, das hatten wir heute schon mal. Ich weiß nur nicht mehr wann das war. Wir haben so vieles geändert :)

                                          AsgothianA Offline
                                          AsgothianA Offline
                                          Asgothian
                                          Developer
                                          schrieb am zuletzt editiert von
                                          #111

                                          @skvarel das sollte gehen. Können wir morgen mal versuchen

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

                                          skvarelS 1 Antwort Letzte Antwort
                                          1
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          697

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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