TS0601 2button UNSUPPORTED switch

Greetings.
There is a two-button zigbee switch Снимок экрана 2023-06-08 211403
(https://aliexpress.ru/item/1005004836095177.html?spm=a2g2w.orderdetail.0.0.166b4aa674zBEp&sku_id=12000030675485388), in zigbee2mqtt defined as unsupported Снимок экрана 2023-06-08 211043
please help me to connect this switch, I broke my whole head ( thanks in advance for the replies.

Done. I had to write an external converter. Everything is working.
//

const legacy = require(‘zigbee-herdsman-converters/lib/legacy’);
const fz = {…require(‘zigbee-herdsman-converters/converters/fromZigbee’), legacy: require(‘zigbee-herdsman-converters/lib/legacy’).fromZigbee};
const tz = {…require(‘zigbee-herdsman-converters/converters/toZigbee’), legacy: require(‘zigbee-herdsman-converters/lib/legacy’).toZigbee};

//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 utils = require(‘zigbee-herdsman-converters/lib/utils’);
const reporting = require(‘zigbee-herdsman-converters/lib/reporting’);
const extend = require(‘zigbee-herdsman-converters/lib/extend’);
const tuya = require(‘zigbee-herdsman-converters/lib/tuya’);
const e = exposes.presets;
const ea = exposes.access;

const definition = {fingerprint: [
{modelID: ‘TS0601’, manufacturerName: ‘_TZE204_wvovwe9h’},

],
model: ‘TS0601_switch_2_gang’,
vendor: ‘TuYa’,
description: ‘2 gang switch’,
exposes: [e.switch().withEndpoint(‘l1’).setAccess(‘state’, ea.STATE_SET),
e.switch().withEndpoint(‘l2’).setAccess(‘state’, ea.STATE_SET)],
fromZigbee: [fz.ignore_basic_report, legacy.fromZigbee.tuya_switch],
toZigbee: [legacy.toZigbee.tuya_switch_state],
meta: {multiEndpoint: true},
configure: async (device, coordinatorEndpoint, logger) => {
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, [‘genOnOff’]);
if (device.getEndpoint(2)) await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, [‘genOnOff’]);
},
endpoint: (device) => {
// Endpoint selection is made in tuya_switch_state
return {‘l1’: 1, ‘l2’: 1};
},
};

// data types: https://github.com/Koenkk/zigbee-herdsman-converters/blob/3541b57f5cd3d5c8f02a5ff369bf6b8d8644ed06/lib/tuya.js

// Status report:
// Received Zigbee message from ‘Moes 3 Gang Dimmer’, type ‘attributeReport’, cluster ‘genBasic’, data ‘{“65506”:32,“65508”:0,“appVersion”:64}’ from endpoint 1 with groupID 0

// Button 1
// ON:
// type ‘commandDataResponse’, cluster ‘manuSpecificTuya’, data ‘{“dpValues”:[{“data”:{“data”:[1],“type”:“Buffer”},“datatype”:1,“dp”:1}],“seq”:44288}’ from endpoint 1 with groupID 0
// Received Tuya DataPoint #1 from 0xa4c1387aacc2a6d1 with raw data ‘{“dp”:1,“datatype”:1,“data”:{“type”:“Buffer”,“data”:[1]}}’: type=‘commandDataResponse’, datatype=‘bool’, value=‘true’, known DP# usage: [“state”,“moesSsystemMode”,“tuyaSabCOalarm”,“moes105DimmerState1”,“trsPresenceState”,“trsfPresenceState”,“haozeeSystemMode”,“nousTemperature”,“wlsWaterLeak”,“AM02Control”,“garageDoorTrigger”,“connecteState”,“tshpsPresenceState”,“lmsState”,“alectoSmokeState”]
// OFF
// type ‘commandDataResponse’, cluster ‘manuSpecificTuya’, data ‘{“dpValues”:[{“data”:{“data”:[0],“type”:“Buffer”},“datatype”:1,“dp”:1}],“seq”:44544}’ from endpoint 1 with groupID 0

// Dimming
// Received Tuya DataPoint #2 from 0xa4c1387aacc2a6d1 with raw data ‘{“dp”:2,“datatype”:2,“data”:{“type”:“Buffer”,“data”:[0,0,2,238]}}’: type=‘commandDataResponse’, datatype=‘value’, value=‘750’, known DP# usage: [“heatingSetpoint”,“coverPosition”,“eardaDimmerLevel”,“moesHold”,“moesSheatingSetpoint”,“silvercrestChangeMode”,“tuyaSabCO2”,“tuyaSahkMP25”,“tuyaSabCO”,“moes105DimmerLevel1”,“trsSensitivity”,“trsfSensitivity”,“tvMode”,“haozeeHeatingSetpoint”,“nousHumidity”,“tIlluminanceLux”,“evanellMode”,“AM02PercentControl”,“connecteMode”,“tshpscSensitivity”,“alectoSmokeValue”]
// Button 2
// ON:
// type ‘commandDataResponse’, cluster ‘manuSpecificTuya’, data ‘{“dpValues”:[{“data”:{“data”:[1],“type”:“Buffer”},“datatype”:1,“dp”:7}],“seq”:43776}’ from endpoint 1 with groupID 0
// OFF:
// type ‘commandDataResponse’, cluster ‘manuSpecificTuya’, data ‘{“dpValues”:[{“data”:{“data”:[0],“type”:“Buffer”},“datatype”:1,“dp”:7}],“seq”:45056}’ from endpoint 1 with groupID 0
// Button 3:
// ON:
// type ‘commandDataResponse’, cluster ‘manuSpecificTuya’, data ‘{“dpValues”:[{“data”:{“data”:[1],“type”:“Buffer”},“datatype”:1,“dp”:15}],“seq”:45312}’ from endpoint 1 with groupID 0
// OFF:
// type ‘commandDataResponse’, cluster ‘manuSpecificTuya’, data ‘{“dpValues”:[{“data”:{“data”:[0],“type”:“Buffer”},“datatype”:1,“dp”:15}],“seq”:45568}’ from endpoint 1 with groupID 0

// Button 2:
// Received unexpected Tuya DataPoint #7 from 0xa4c1387aacc2a6d1 with raw data ‘{“dp”:7,“datatype”:1,“data”:{“type”:“Buffer”,“data”:[0]}}’: type=‘commandDataResponse’, datatype=‘bool’, value=‘false’, known DP# usage: [“childLock”,“coverChange”,“moesSreset”,“moesCoverBacklight”,“neoAODuration”,“moes105DimmerState2”,“haozeeWindowState”,“thitIlluminanceLux”,“AM02WorkState”]
// Button 3:
// Received unexpected Tuya DataPoint #15 from 0xa4c1387aacc2a6d1 with raw data ‘{“dp”:15,“datatype”:1,“data”:{“type”:“Buffer”,“data”:[1]}}’: type=‘commandDataResponse’, datatype=‘bool’, value=‘true’, known DP# usage: [“neoAOBattPerc”,“haozeeMinTemp”,“nousHumiAlarm”,“moesSwitchIndicateLight”,“alectoBatteryPercentage”]

module.exports = definition;

/*

dimmerMinLevel: 3, = 10
dimmerMaxLevel: 5 = 1000
silvercrestSetEffect: 6, = 0
mode: 4, = 0
dimmerMaxLevel 11 = 1000
dimmerMinLevel 9 = 10

dimmerMaxLevel 19 = 1000
dimmerMinLevel 17 = 10

moesSwitchPowerOnBehavior: 14, = 0

arning 2022-07-16 19:12:45zigbee-herdsman-converters:MOES: NOT RECOGNIZED DP #5 with data {“dp”:5,“datatype”:2,“data”:{“type”:“Buffer”,“data”:[0,0,3,232]}}
Warning 2022-07-16 19:12:45zigbee-herdsman-converters:MOES: NOT RECOGNIZED DP #3 with data {“dp”:3,“datatype”:2,“data”:{“type”:“Buffer”,“data”:[0,0,0,10]}}
Warning 2022-07-16 19:12:45zigbee-herdsman-converters:MOES: NOT RECOGNIZED DP #6 with data {“dp”:6,“datatype”:2,“data”:{“type”:“Buffer”,“data”:[0,0,0,0]}}
Warning 2022-07-16 19:12:45zigbee-herdsman-converters:MOES: NOT RECOGNIZED DP #4 with data {“dp”:4,“datatype”:4,“data”:{“type”:“Buffer”,“data”:[0]}}
Warning 2022-07-16 19:12:46zigbee-herdsman-converters:MOES: NOT RECOGNIZED DP #11 with data {“dp”:11,“datatype”:2,“data”:{“type”:“Buffer”,“data”:[0,0,3,232]}}
Warning 2022-07-16 19:12:46zigbee-herdsman-converters:MOES: NOT RECOGNIZED DP #9 with data {“dp”:9,“datatype”:2,“data”:{“type”:“Buffer”,“data”:[0,0,0,10]}}
Warning 2022-07-16 19:12:46zigbee-herdsman-converters:MOES: NOT RECOGNIZED DP #12 with data {“dp”:12,“datatype”:2,“data”:{“type”:“Buffer”,“data”:[0,0,0,0]}}
Warning 2022-07-16 19:12:46zigbee-herdsman-converters:MOES: NOT RECOGNIZED DP #10 with data {“dp”:10,“datatype”:4,“data”:{“type”:“Buffer”,“data”:[0]}}
Warning 2022-07-16 19:12:46zigbee-herdsman-converters:MOES: NOT RECOGNIZED DP #19 with data {“dp”:19,“datatype”:2,“data”:{“type”:“Buffer”,“data”:[0,0,3,232]}}
Warning 2022-07-16 19:12:46zigbee-herdsman-converters:MOES: NOT RECOGNIZED DP #17 with data {“dp”:17,“datatype”:2,“data”:{“type”:“Buffer”,“data”:[0,0,0,10]}}
Warning 2022-07-16 19:12:47zigbee-herdsman-converters:MOES: NOT RECOGNIZED DP #20 with data {“dp”:20,“datatype”:2,“data”:{“type”:“Buffer”,“data”:[0,0,0,0]}}
Warning 2022-07-16 19:12:47zigbee-herdsman-converters:MOES: NOT RECOGNIZED DP #20 with data {“dp”:20,“datatype”:2,“data”:{“type”:“Buffer”,“data”:[0,0,0,0]}}
Warning 2022-07-16 19:12:47zigbee-herdsman-converters:MOES: NOT RECOGNIZED DP #18 with data {“dp”:18,“datatype”:4,“data”:{“type”:“Buffer”,“data”:[0]}}
Warning 2022-07-16 19:12:47zigbee-herdsman-converters:MOES: NOT RECOGNIZED DP #21 with data {“dp”:21,“datatype”:4,“data”:{“type”:“Buffer”,“data”:[1]}}
Warning 2022-07-16 19:12:47zigbee-herdsman-converters:MOES: NOT RECOGNIZED DP #14 with data {“dp”:14,“datatype”:4,“data”:{“type”:“Buffer”,“data”:[0]}}

*/