[External Converter]: TS0601 from _TZE200_7upwjcca
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 15.7k
- Forks
- 2k
- Avg merge
- 18h 55m
- Merged PRs (30d)
- 35
Description
Link
https://drive.google.com/file/d/1F-8mIUSqviSUa_fgdCuvo6bDBHuwaa2C/view?usp=drive_link
Database entry
{"id":26,"type":"Router","ieeeAddr":"0xc4d8c8fffe128575","nwkAddr":26694,"manufId":4098,"manufName":"_TZE200_7upwjcca","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":"\u0000\u0000\u0000\u0000\u0005\u0000\u0000\u0000\u0000\u0005","65506":31,"65508":1,"65534":0,"modelId":"TS0601","manufacturerName":"_TZE200_7upwjcca","powerSource":1,"zclVersion":3,"appVersion":71,"stackVersion":0,"hwVersion":1,"dateCode":""}}},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":71,"stackVersion":0,"hwVersion":1,"dateCode":"","zclVersion":3,"interviewCompleted":true,"interviewState":"SUCCESSFUL","meta":{"configured":"0.0.0"},"lastSeen":1787396906520}
Zigbee2MQTT version
2.13.0 (unknown)
External converter
const tuya = require('zigbee-herdsman-converters/lib/tuya');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const e = exposes.presets;
const ea = exposes.access;
const tzLocal = {
calibration: {
key: ["calibration"],
convertSet: async (entity, key, value, meta) => {
await tuya.sendDataPointBool(entity, 102, true);
},
},
factory_reset: {
key: ["factory_reset"],
convertSet: async (entity, key, value, meta) => {
await tuya.sendDataPointBool(entity, 110, true);
},
},
motor_speed_reset: {
key: ["motor_speed_reset"],
convertSet: async (entity, key, value, meta) => {
await tuya.sendDataPointEnum(entity, 105, 0);
},
},
normally_closed_reset: {
key: ["normally_closed_reset"],
convertSet: async (entity, key, value, meta) => {
await tuya.sendDataPointEnum(entity, 107, 0);
},
},
};
const definition = {
fingerprint: tuya.fingerprint("TS0601", ["_TZE200_7upwjcca"]),
model: "TS0601_cover_14",
vendor: "Tuya",
description: "Cover motor",
extend: [tuya.modernExtend.tuyaBase({ dp: true })],
exposes: [
e.cover_position().setAccess("position", ea.STATE_SET),
e.enum("calibration", ea.SET, ["calibrate"]),
e.enum("factory_reset", ea.SET, ["reset"]).withDescription("Resets all settings to default without unpairing the device"),
e.binary("anti_pinch", ea.STATE_SET, true, false).withCategory("config"),
e.numeric("anti_pinch_force_level", ea.STATE_SET).withUnit("level").withValueMin(1).withValueMax(5).withValueStep(1).withCategory("config"),
e.binary("lockdown", ea.STATE_SET, true, false).withCategory("config"),
e.binary("sensor_activation", ea.STATE, true, false).withCategory("diagnostic"),
e.binary("manual_activation", ea.STATE_SET, true, false).withCategory("config"),
e.enum("motor_direction", ea.STATE_SET, ["normal", "reversed"]).withDescription("Set the motor direction"),
e.enum("motor_speed_reset", ea.SET, ["reset"]).withCategory("config"),
e.enum('motor_speed_mode', ea.STATE, ["default", "soft", "fast"]).withCategory("diagnostic"),
e.enum("normally_closed_reset", ea.SET, ["reset"]).withCategory("config"),
e.enum("normally_closed_mode", ea.STATE, ["OFF", "NC"]).withCategory("diagnostic"),
e.numeric("normally_closed_time_delay", ea.STATE_SET).withUnit("s").withValueMin(0).withValueMax(20).withValueStep(1).withCategory("config"),
],
toZigbee: [
tzLocal.calibration,
tzLocal.factory_reset,
tzLocal.motor_speed_reset,
tzLocal.normally_closed_reset,
],
meta: {
tuyaDatapoints: [
[
1,
"state",
tuya.valueConverterBasic.lookup({
OPEN: tuya.enum(0),
STOP: tuya.enum(1),
CLOSE: tuya.enum(2),
}),
],
[2, "position", tuya.valueConverter.coverPosition],
[3, "position", tuya.valueConverter.raw],
[5, "motor_direction", tuya.valueConverter.tubularMotorDirection],
[6, "manual_activation", tuya.valueConverter.raw],
[101, "lockdown", tuya.valueConverter.raw],
[103, "anti_pinch", tuya.valueConverter.raw],
[104, "anti_pinch_force_level", tuya.valueConverter.raw],
[105, "motor_speed_mode", tuya.valueConverterBasic.lookup({ default: 0, soft: 1, fast: 2 })],
[107, "normally_closed_mode", tuya.valueConverterBasic.lookup({ OFF: 0, NC: 2 })],
[108, "normally_closed_time_delay", tuya.valueConverter.raw],
[109, "sensor_activation", tuya.valueConverter.raw],
],
},
};
module.exports = definition;
What does/doesn't work with the external definition?
Tested on the controller only; on-site commissioning and debugging pending.
Notes
software_build_id: undefined
date_code: ``
endpoints:
{"1":{"clusters":{"input":["genBasic","genGroups","genScenes","manuSpecificTuya"],"output":["genOta","genTime"]}}}
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start from the external JavaScript converter and the TS0601 database entry provided in the issue, then compare them with the project’s existing Tuya device definitions. Validate the listed cover controls and datapoint mappings on the controller, and confirm the device works during on-site commissioning before considering support complete.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- embedded-iot
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100