-
Notifications
You must be signed in to change notification settings - Fork 4k
Open
Description
This is my external converter for TS0601 from _TZE284_qoi1aqxg. A MOES model roller blind motor FWJZCEH18A001.
software_build_id: undefined
date_code: 2026-01-04
endpoints:
{"1":{"clusters":{"input":["genGroups","genScenes","manuSpecificTuya","genBasic","zosungIRTransmit"],"output":["genOta","genTime"]}}}What works / what doesn't?
All functions work, but the battery has not yet refreshed (needs 24 hours,)
- open, close, stop
- position 0,25,50,75,100
- position as a slider
- motor direction (forward/back)
- border settings (up, down, up delete, down delete, remove_top_bottoms
- battery (not yet refreshed)
- link quality
Uncertain if works, but I have good hopes
- battery percentage
Do I need to make a pull request? Or how is this reviewed and added (if approved?), thanks.
Converter
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: '_TZE284_qoi1aqxg',
},
],
model: 'TS0601_roller_blind_motor',
vendor: 'MOES / Tuya',
description: 'Moes roller blind motor 16mm-25mm - FWJZCEH18A001',
extend: [
tuya.modernExtend.tuyaBase({
dp: true,
// Enable this line in case the device has a clock, if time is incorrect with
// `1970`, try with `2000`.
// timeStart: "1970",
}),
],
exposes: [
e.cover_position().setAccess("position", ea.STATE_SET),
e.enum("motor_direction", ea.STATE_SET, ["forward", "back"]).withDescription("Motor direction"),
e.enum("border", ea.STATE_SET, ["up", "down", "up_delete", "down_delete", "remove_top_bottom"]).withDescription("Limit setting"),
e.battery(),
],
meta: {
// All datapoints go in here
// All datapoints according to home assistant method:
//{"1":"Control","2":"Time Total","3":"Work State","8":"Percent State","9":"Percent Control","11":"Control Back","12":"Situation Set","13":"Battery Percentage","16":"Border","19":"Position Best","20":"Click Control"}
tuyaDatapoints: [
[1, "state", tuya.valueConverterBasic.lookup({OPEN: tuya.enum(0), STOP: tuya.enum(1), CLOSE: tuya.enum(2)})],
[9, "position", tuya.valueConverter.coverPosition], // Percent control - set position (0-100)
[8, "position", tuya.valueConverter.coverPosition], // Percent state - current position (0-100)
[11, "motor_direction", tuya.valueConverterBasic.lookup({forward: tuya.enum(0), back: tuya.enum(1)})],
[13, "battery", tuya.valueConverter.raw],
[16, "border", tuya.valueConverterBasic.lookup
({
up: tuya.enum(0),
down: tuya.enum(1),
up_delete: tuya.enum(2),
down_delete: tuya.enum(3),
remove_top_bottom: tuya.enum(4),
}),
],
]
},
};
module.exports = definition;
Metadata
Metadata
Assignees
Labels
No labels