Skip to content

[External Converter] Moes TS0601 from _TZE284_qoi1aqxg - FWJZCEH18A001 #11193

@Tom744744

Description

@Tom744744

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions