<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Zigbee Adapter, Expert Mode, json (TS011F, EM8SW1)]]></title><description><![CDATA[<p dir="auto">Moin,</p>
<p dir="auto">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.<br />
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.<br />
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?</p>
<pre><code>{
    "devId": "a4c138e8e97a04ee",
    "ep": "1",
    "cid": "haElectricalMeasurement",
    "cmd": "read",
    "cmdType": "foundation",
    "zclData": {
        "activePower": {}
    },
    "cfg": null
}
</code></pre>
<p dir="auto">Externer Converter:</p>
<pre><code>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) =&gt; {
                if (utils.hasAlreadyProcessedMessage(msg, model)) return;
                const result = {};
                const data = msg.data;
                
                // BL0937 Leistung (W) -&gt; Durch 10 teilen
                if (data.hasOwnProperty('activePower')) {
                    result.power = data['activePower'] / 10;
                }
                
                // BL0937 Spannung (V) -&gt; 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) -&gt; 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) =&gt; {
                if (utils.hasAlreadyProcessedMessage(msg, model)) return;
                const result = {};
                const data = msg.data;
                
                // Verbrauch (kWh) -&gt; 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) =&gt; {
                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) =&gt; {
                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) =&gt; {
        const endpoint = device.getEndpoint(1);
        await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'seMetering']);
        await reporting.onOff(endpoint);
    },
};

module.exports = definition;

</code></pre>
]]></description><link>https://forum.iobroker.net/topic/85288/zigbee-adapter-expert-mode-json-ts011f-em8sw1</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 05:20:04 GMT</lastBuildDate><atom:link href="https://forum.iobroker.net/topic/85288.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Sep 2026 11:44:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zigbee Adapter, Expert Mode, json (TS011F, EM8SW1) on Mon, 07 Sep 2026 11:45:59 GMT]]></title><description><![CDATA[<p dir="auto">Cluster 0x0b04: Electrical Measurement:<br />
Attribute 0xF007 : Coefficient for calculating current<br />
Attribute 0xF008 : Coefficient for calculating voltage</p>
<p dir="auto">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.<br />
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.<br />
Vielleicht liegt es auch an dem externen Converter.<br />
Bin da auch nicht so tief in dem Thema drin, aber lernbegierig :-)<br />
Da Hauptproblem des Plugs ist ja gelöst, er funktioniert wieder.</p>
]]></description><link>https://forum.iobroker.net/post/1354064</link><guid isPermaLink="true">https://forum.iobroker.net/post/1354064</guid><dc:creator><![CDATA[Badwater]]></dc:creator><pubDate>Mon, 07 Sep 2026 11:45:59 GMT</pubDate></item><item><title><![CDATA[Reply to Zigbee Adapter, Expert Mode, json (TS011F, EM8SW1) on Fri, 04 Sep 2026 20:46:25 GMT]]></title><description><![CDATA[<p dir="auto">Beschreib doch mal im Detail welches Attribut du von welchem Cluster genau auslesen willst. So richtig werde ich aus deiner Frage nicht schlau.</p>
<p dir="auto">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.</p>
<p dir="auto">A.</p>
]]></description><link>https://forum.iobroker.net/post/1353646</link><guid isPermaLink="true">https://forum.iobroker.net/post/1353646</guid><dc:creator><![CDATA[Asgothian]]></dc:creator><pubDate>Fri, 04 Sep 2026 20:46:25 GMT</pubDate></item></channel></rss>