Weiter zum Inhalt
  • Home
  • Aktuell
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. ioBroker Allgemein
  4. Zigbee Adapter, Expert Mode, json (TS011F, EM8SW1)

NEWS

  • Monatsrückblick Juli / August 2026 ist online!
    BluefoxB
    Bluefox
    10
    1
    1.2k

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    1.4k

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    11
    1
    3.9k

Zigbee Adapter, Expert Mode, json (TS011F, EM8SW1)

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
3 Beiträge 2 Kommentatoren 60 Aufrufe 2 Beobachtet
  • Ä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.
  • B Offline
    B Offline
    Badwater
    schrieb am zuletzt editiert von
    #1

    Moin,

    ich habe eine China-Zigbee-Smart-Plug (TS011F) mit der FW von pvvx-TlsrSmartSwitch (EM8SW1) geflashed. Das Gerät hat den bekannten Fehler, dass es sich immer selbstständig ausgeschaltet hat.
    Die Einbindung in den Zigbee-Adapter mit externem Converter hat soweit geklappt, Leistung wird ausgegeben, nur Spannung und Strom sind immer 0; d. h. die FW hat die Strom und Spannungswerte.
    Ich habe nun im Adapter im Entwickler-Tab mir den befehl zum Auslesen der Leistung zusammen-ge-klickt und das funktioniert auch. Meine Idee ist die Calibrierung und Keoffizienten auszulesen um zu sehen ob da irgenswas nicht richtig initialisiert oder auf 0 steht. Diese mit Attribut ID z. B. 0xF008 bietet die Auswahl nicht an. Der Weg über den Expert-Mode geht mit der Angabe ActivePower, aber wie ersetze ich das mit der ID für ActivePower=2191?

    {
        "devId": "a4c138e8e97a04ee",
        "ep": "1",
        "cid": "haElectricalMeasurement",
        "cmd": "read",
        "cmdType": "foundation",
        "zclData": {
            "activePower": {}
        },
        "cfg": null
    }
    

    Externer Converter:

    const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
    const tz = require('zigbee-herdsman-converters/converters/toZigbee');
    const exposes = require('zigbee-herdsman-converters/lib/exposes');
    const reporting = require('zigbee-herdsman-converters/lib/reporting');
    const utils = require('zigbee-herdsman-converters/lib/utils');
    
    const e = exposes.presets;
    const ea = exposes.access;
    
    const attrRelayKeyLock = 0xf001;
    const attrRelayLedCtrl = 0xf002;
    
    const definition = {
        zigbeeModel: ['EM8SW1_z', 'EM0SW2_z', 'EW8SW1'],
        model: 'EM8SW1_z',
        vendor: 'Telink-pvvx',
        description: 'Custom Smart Switch with BL0937 (ioBroker Core Fix)',
        fromZigbee: [
            fz.on_off,
            {
                cluster: 'haElectricalMeasurement',
                type: ['attributeReport', 'readResponse'],
                convert: (model, msg, publish, options, meta) => {
                    if (utils.hasAlreadyProcessedMessage(msg, model)) return;
                    const result = {};
                    const data = msg.data;
                    
                    // BL0937 Leistung (W) -> Durch 10 teilen
                    if (data.hasOwnProperty('activePower')) {
                        result.power = data['activePower'] / 10;
                    }
                    
                    // BL0937 Spannung (V) -> Direkt ausgeben oder Fallback prüfen
                    if (data.hasOwnProperty('rmsVoltage')) {
                        result.voltage = data['rmsVoltage']; 
                    } else if (data.hasOwnProperty('rmsVoltagePhB')) {
                        result.voltage = data['rmsVoltagePhB'];
                    }
                    
                    // BL0937 Strom (A) -> Durch 1000 teilen (mA zu A)
                    if (data.hasOwnProperty('rmsCurrent')) {
                        result.current = data['rmsCurrent'] / 1000;
                    } else if (data.hasOwnProperty('rmsCurrentPhB')) {
                        result.current = data['rmsCurrentPhB'] / 1000;
                    }
                    
                    return result;
                },
            },
            {
                cluster: 'seMetering',
                type: ['attributeReport', 'readResponse'],
                convert: (model, msg, publish, options, meta) => {
                    if (utils.hasAlreadyProcessedMessage(msg, model)) return;
                    const result = {};
                    const data = msg.data;
                    
                    // Verbrauch (kWh) -> Wh durch 1000 teilen
                    if (data.hasOwnProperty('currentSummDelivered')) {
                        result.energy = data['currentSummDelivered'] / 1000;
                    }
                    return result;
                },
            }
        ],
        toZigbee: [
            tz.on_off,
            {
                key: ['key_lock'],
                convertSet: async (entity, key, value, meta) => {
                    const val = value === 'LOCK' || value === 1 ? 1 : 0;
                    await entity.write('genOnOff', { [attrRelayKeyLock]: { value: val, type: 0x10 } });
                    return { state: { [key]: value } };
                },
            },
            {
                key: ['led_control'],
                convertSet: async (entity, key, value, meta) => {
                    const lookup = { 'off': 0, 'on': 1, 'on/off': 2 };
                    await entity.write('genOnOff', { [attrRelayLedCtrl]: { value: lookup[value], type: 0x30 } });
                    return { state: { [key]: value } };
                },
            }
        ],
        exposes: [
            e.switch(),
            e.power().withUnit('W'),
            e.current().withUnit('A'),
            e.voltage().withUnit('V'),
            e.energy().withUnit('kWh'),
            exposes.binary('key_lock', ea.ALL, 'LOCK', 'UNLOCK').withDescription('Key lock enable/disable'),
            exposes.enum('led_control', ea.ALL, ['off', 'on', 'on/off']).withDescription('Led control')
        ],
        configure: async (device, coordinatorEndpoint) => {
            const endpoint = device.getEndpoint(1);
            await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'seMetering']);
            await reporting.onOff(endpoint);
        },
    };
    
    module.exports = definition;
    
    
    1 Antwort Letzte Antwort
    0
    • AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      schrieb am zuletzt editiert von
      #2

      Beschreib doch mal im Detail welches Attribut du von welchem Cluster genau auslesen willst. So richtig werde ich aus deiner Frage nicht schlau.

      Solange es sich bei dem Attribut um eines der Standard Attribute vom gewünschten Cluster handelt (und es sich um einen Standard-Cluster) handelt ist alles ok. Wenn das nicht so ist musst du den Cluster selber definieren und hinzufügen.

      A.

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

      1 Antwort Letzte Antwort
      0
      • B Offline
        B Offline
        Badwater
        schrieb zuletzt editiert von
        #3

        Cluster 0x0b04: Electrical Measurement:
        Attribute 0xF007 : Coefficient for calculating current
        Attribute 0xF008 : Coefficient for calculating voltage

        Der Cluster ist definiert, darin stehen z.B. die Werte rmsvoltage und rmscurrent, die ich mit Wert 0 auslese. Die findet man auch in der Auswahl im Expert Mode. Die o. g. Coefficienten nicht. Weil das Leseergebnis 0 ist war meine Idee zu schauen, ob die Coefficienten richtig initialisiert sind.
        Ich gehe davon aus, dass die HW funktioniert, da das Lesen von activepower und Verbrauch einen sinnvollen Wert gibt; d.h. Strom und Spannung der FW bekannt sind.
        Vielleicht liegt es auch an dem externen Converter.
        Bin da auch nicht so tief in dem Thema drin, aber lernbegierig :-)
        Da Hauptproblem des Plugs ist ja gelöst, er funktioniert wieder.

        1 Antwort Letzte Antwort
        0

        Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

        Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

        Mit deinem Input könnte dieser Beitrag noch besser werden 💗

        Registrieren Anmelden
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate
        FAQ Cloud / IOT
        HowTo: Node.js-Update
        HowTo: Backup/Restore
        Downloads
        BLOG

        138

        Online

        33.1k

        Benutzende

        83.7k

        Themen

        1.3m

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

        • Du hast noch kein Konto? Registrieren

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