### Link
Custom builds
### Database entry
{"id":78,"type":"Router","ieeeAddr"…:"0xa46dd4fffe204c56","nwkAddr":36323,"manufId":4098,"manufName":"_TZE200_2odrmqwq","powerSource":"Mains (single phase)","modelId":"TS0601","epList":[1],"endpoints":{"1":{"profId":260,"epId":1,"devId":81,"inClusterList":[0,4,5,61184],"outClusterList":[25,10],"clusters":{"genBasic":{"attributes":{"65503":"���-\u0016\u0000\u0000\u0000\u0000\u0005","65506":31,"65508":0,"modelId":"TS0601","manufacturerName":"_TZE200_2odrmqwq","powerSource":1,"zclVersion":3,"appVersion":72,"stackVersion":0,"hwVersion":1,"dateCode":""}}},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":72,"stackVersion":0,"hwVersion":1,"dateCode":"","zclVersion":3,"interviewCompleted":true,"meta":{},"lastSeen":1716804475405}
### Comments
Dear all,
The customer ordered custom-made curtains with "ZigBee driver".
I cannot see any device markings, but the external definition makes them work perfectly.
Thank you.
### External definition
```shell
// TZE200_2odrmqwq.js
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 extend = require('zigbee-herdsman-converters/lib/extend'); // with new Z2M not working
const {} = require('zigbee-herdsman-converters/lib/modernExtend');
const e = exposes.presets;
const ea = exposes.access;
const tuya = require('zigbee-herdsman-converters/lib/tuya');
const legacy = require('zigbee-herdsman-converters/lib/legacy')
const definition = {
fingerprint: [
// Curtain motors:
{modelID: 'TS0601', manufacturerName: '_TZE200_2odrmqwq'}, // Jac for Wieslaw
],
model: 'TS0601_cover_1_Jac',
vendor: 'TuYa',
description: 'Curtain motor/roller blind motor/window pusher/tubular motor',
whiteLabel: [
{vendor: 'Yushun', model: 'YS-MT750'},
tuya.whitelabel('Yushun', 'YS-MT750L', 'Curtain motor', ['_TZE200_bqcqqjpb', '_TZE200_gaj531w3']),
{vendor: 'Zemismart', model: 'ZM79E-DT'},
{vendor: 'Binthen', model: 'BCM100D'},
{vendor: 'Binthen', model: 'CV01A'},
{vendor: 'Zemismart', model: 'M515EGB'},
{vendor: 'Oz Smart Things', model: 'ZM85EL-1Z'},
{vendor: 'TuYa', model: 'M515EGZT'},
{vendor: 'TuYa', model: 'DT82LEMA-1.2N'},
{vendor: 'TuYa', model: 'ZD82TN', description: 'Curtain motor'},
{vendor: 'Larkkey', model: 'ZSTY-SM-1SRZG-EU'},
{vendor: 'Zemismart', model: 'AM43', description: 'Roller blind motor'},
{vendor: 'Zemismart', model: 'M2805EGBZTN', description: 'Tubular motor'},
{vendor: 'Zemismart', model: 'BCM500DS-TYZ', description: 'Curtain motor'},
{vendor: 'A-OK', model: 'AM25', description: 'Tubular motor'},
{vendor: 'Alutech', model: 'AM/R-Sm', description: 'Tubular motor'},
tuya.whitelabel('Shenzhen Golden Security Technology', 'GM46', 'Curtain motor', ['_TZE204_guvc7pdy']),
{vendor: 'Quoya', model: 'AT8510-TY'},
tuya.whitelabel('Somgoms', 'ZSTY-SM-1DMZG-US-W_1', 'Curtain switch', ['_TZE200_axgvo9jh']),
tuya.whitelabel('HUARUI', 'CMD900LE', 'Lithium battery intelligent curtain opening and closing motor', ['_TZE200_zxxfv8wi']),
],
fromZigbee: [legacy.fromZigbee.tuya_cover, fz.ignore_basic_report],
toZigbee: [legacy.toZigbee.tuya_cover_control, legacy.toZigbee.tuya_cover_options],
exposes: [
e.cover_position().setAccess('position', ea.STATE_SET),
e.composite('options', 'options', ea.STATE_SET)
.withFeature(e.numeric('motor_speed', ea.STATE_SET)
.withValueMin(0).withValueMax(255).withDescription('Motor speed'))
.withFeature(e.binary('reverse_direction', ea.STATE_SET, true, false)
.withDescription('Reverse the motor direction'))
],
};
module.exports = definition;
```