External Converter - Zigbee2MQTT

 avatar
unknown
javascript
7 days ago
4.1 kB
6
Indexable
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 tuya = require('zigbee-herdsman-converters/lib/tuya');
const e = exposes.presets;
const ea = exposes.access;

const definition = {
    fingerprint: [
        {
            modelID: 'TS0601',
            manufacturerName: '_TZE200_0kihjsys',
        },
    ],
    model: 'TS0601_5gang_decoupler',
    vendor: 'Tuya',
    description: '5-gang smart decoupler switch with timer and restart settings',
    fromZigbee: [tuya.fz.datapoints],
    toZigbee: [tuya.tz.datapoints],
    onEvent: tuya.onEventSetTime,
    configure: tuya.configureMagicPacket,
    exposes: [
        e.switch().withEndpoint('switch_1').withDescription('Switch 1'),
        e.switch().withEndpoint('switch_2').withDescription('Switch 2'),
        e.switch().withEndpoint('switch_3').withDescription('Switch 3'),
        e.switch().withEndpoint('switch_4').withDescription('Switch 4'),
        e.switch().withEndpoint('switch_5').withDescription('Switch 5'),
        e.numeric('timer_1', ea.STATE_SET).withUnit('s').withDescription('Countdown timer for Switch 1'),
        e.numeric('timer_2', ea.STATE_SET).withUnit('s').withDescription('Countdown timer for Switch 2'),
        e.numeric('timer_3', ea.STATE_SET).withUnit('s').withDescription('Countdown timer for Switch 3'),
        e.numeric('timer_4', ea.STATE_SET).withUnit('s').withDescription('Countdown timer for Switch 4'),
        e.numeric('timer_5', ea.STATE_SET).withUnit('s').withDescription('Countdown timer for Switch 5'),
        e.binary('restart_status', ea.STATE_SET, 'ON', 'OFF').withDescription('Overall restart status'),
        e.enum('indicator_mode', ea.STATE_SET, ['off', 'on', 'previous']).withDescription('Indicator light mode (use "previous" for decoupling mode)'),
        e.enum('restart_status_1', ea.STATE_SET, ['off', 'on', 'previous']).withDescription('Power on behavior for Switch 1'),
        e.enum('restart_status_2', ea.STATE_SET, ['off', 'on', 'previous']).withDescription('Power on behavior for Switch 2'),
        e.enum('restart_status_3', ea.STATE_SET, ['off', 'on', 'previous']).withDescription('Power on behavior for Switch 3'),
        e.enum('restart_status_4', ea.STATE_SET, ['off', 'on', 'previous']).withDescription('Power on behavior for Switch 4'),
        e.enum('restart_status_5', ea.STATE_SET, ['off', 'on', 'previous']).withDescription('Power on behavior for Switch 5'),
    ],
    endpoint: (device) => {
        return {
            switch_1: 1,
            switch_2: 1,
            switch_3: 1,
            switch_4: 1,
            switch_5: 1,
        };
    },
    meta: {
        multiEndpoint: true,
        tuyaDatapoints: [
            [1, 'state_switch_1', tuya.valueConverter.onOff],
            [2, 'state_switch_2', tuya.valueConverter.onOff],
            [3, 'state_switch_3', tuya.valueConverter.onOff],
            [4, 'state_switch_4', tuya.valueConverter.onOff],
            [5, 'state_switch_5', tuya.valueConverter.onOff],
            [7, 'timer_1', tuya.valueConverter.countdown],
            [8, 'timer_2', tuya.valueConverter.countdown],
            [9, 'timer_3', tuya.valueConverter.countdown],
            [10, 'timer_4', tuya.valueConverter.countdown],
            [11, 'timer_5', tuya.valueConverter.countdown],
            [14, 'restart_status', tuya.valueConverter.onOff],
            [15, 'indicator_mode', tuya.valueConverter.powerOnBehaviorEnum],
            [29, 'restart_status_1', tuya.valueConverter.powerOnBehaviorEnum],
            [30, 'restart_status_2', tuya.valueConverter.powerOnBehaviorEnum],
            [31, 'restart_status_3', tuya.valueConverter.powerOnBehaviorEnum],
            [32, 'restart_status_4', tuya.valueConverter.powerOnBehaviorEnum],
            [33, 'restart_status_5', tuya.valueConverter.powerOnBehaviorEnum],
        ],
    },
};

module.exports = definition;
Editor is loading...
Leave a Comment