GMG-01Z - moduł przełącznika sterowania drzwiami garażowymi

Witam.

Kupiłem taki moduł jak w temacie, lecz niestety w zigbee2mqtt jest jako “niewspierany”.

Jak dodać takie urządzenie od zera? Z wyglądu przypomina Tuya PJ-ZGD01 control via MQTT | Zigbee2MQTT

OK, tylko przydałoby mi się na czymś bazować, podobnym. Bo nie wiem, jak się za to zabrać.

OK, chyba się udało i działa. Bazowałem na Tuya TS0603 control via MQTT | Zigbee2MQTT

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 modernExtend = require('zigbee-herdsman-converters/lib/modernExtend');
const e = exposes.presets;
const ea = exposes.access;
const tuya = require('zigbee-herdsman-converters/lib/tuya');

const definition = {
    // Since a lot of Tuya devices use the same modelID, but use different datapoints
    // it's necessary to provide a fingerprint instead of a zigbeeModel
    fingerprint: [
        {
            // The model ID from: Device with modelID 'TS0601' is not supported
            // You may need to add \u0000 at the end of the name in some cases
            modelID: 'TS0601',
            // The manufacturer name from: Device with modelID 'TS0601' is not supported.
            manufacturerName: '_TZE20C_qw6nyd2u',
        },
    ],
    model: 'TS0601',
    vendor: 'Tuya',
    description: 'Fill in a description of the device here',
    fromZigbee: [tuya.fz.datapoints],
    toZigbee: [tuya.tz.datapoints],
    onEvent: tuya.onEventSetTime, // Add this if you are getting no converter for 'commandMcuSyncTime'
    configure: async (device, coordinatorEndpoint) => {
            await tuya.configureMagicPacket(device, coordinatorEndpoint);
            const endpoint = device.getEndpoint(1);
            await reporting.bind(endpoint, coordinatorEndpoint, ['genBasic']);
        },
    exposes: [
        e.binary('state', ea.STATE_SET, true, false).withDescription('Trigger the door movement'),
            e.binary('garage_door_contact', ea.STATE, true, false).withDescription('Indicates if the garage door contact is closed (= true) or open (= false)'),
    ],
    meta: {
        tuyaDatapoints: [
                [1, 'state', tuya.valueConverter.raw],
                [3, 'garage_door_contact', tuya.valueConverter.trueFalseInvert],
                [12, null, null],
            ],
    },
    extend: [
        // A preferred new way of extending functionality.
    ],
};

module.exports = definition;

Jeszcze jedno, jak synchronizować stan przełącznika, gdy np brama jest zamknięta ?

Czyli udało się ale nie w całości, to powinien zapewnić konwerter, ktory napisałeś.

Co więc proponujesz ? Jestem w tym temacie bez doświadczenia, więc liczę na konstruktywne uwagi.

Podałeś jakiś model “bliźniaczy” do twojego - odszukaj go w kodzie na repozytorium i spróbuj znaleźć czy czegoś nie brakuje.

Znalazłem ten kod w zigbee-herdsman-converters/src/devices/tuya.ts at dff93c38faf5c8b31e14d60a9e208290b81eb711 · Koenkk/zigbee-herdsman-converters · GitHub

Może inaczej zadam pytanie, chciałbym by w dashboard, funkcja “state” była jako przycisk, coś jak toggle. Bo urządzenie po naciśnięciu przycisku działa monostabilne, czyli odpala przekaźnik na około 2 sekundy.