Skip to content

[External Converter]: TS0601 from _TZE200_m6lwazh9 #31196

@Golli10

Description

@Golli10

Link

https://www.a-okmotor.com/am25-dc-intelligent-zigbee-tubular-motor_p13.html

Database entry

{"id":40,"type":"EndDevice","ieeeAddr":"0x70c59cfffeb50ceb","nwkAddr":2743,"manufId":4098,"manufName":"_TZE200_m6lwazh9","powerSource":"Battery","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\u0007\u0000\u0000\u0000\u0000\u0012\u0000\u0000\u0000\u0000\u0012","65506":31,"65508":0,"65534":0,"appVersion":72,"modelId":"TS0601","manufacturerName":"_TZE200_m6lwazh9","powerSource":3,"zclVersion":3,"stackVersion":0,"hwVersion":1,"dateCode":""}}},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":72,"stackVersion":0,"hwVersion":1,"dateCode":"","zclVersion":3,"interviewCompleted":true,"interviewState":"SUCCESSFUL","meta":{"configured":"0.0.0"},"lastSeen":1772168823340}

Zigbee2MQTT version

2.8.0 (unknown)

External converter

// TS0601 cover for _TZE200_m6lwazh9 (Tuya 0xEF00) 

const tuya = require('zigbee-herdsman-converters/lib/tuya');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const e = exposes.presets;
const ea = exposes.access;

module.exports = {
  fingerprint: tuya.fingerprint('TS0601', ['_TZE200_m6lwazh9']),
  model: 'TS0601_m6lwazh9_cover',
  vendor: 'Tuya',
  description: 'Cover motor',
  icon: '/device_icons/A-OK_AM25.png',

  fromZigbee: [tuya.fz.datapoints],  
  toZigbee:   [tuya.tz.datapoints],
  onEvent:    tuya.onEventSetTime,
  configure:  tuya.configureMagicPacket,

  exposes: [
    e.cover_position().setAccess('position', ea.STATE_SET),

    e.enum('reverse_direction', ea.STATE_SET, ['Forward','Back'])
      .withDescription('Reverse the motor direction (DP5)'),

    e.enum('work_state', ea.STATE, ['idle','opening','closing'])
      .withDescription('Motor work state (DP103: 0=Idle, 4=Opening, 8=Closing)'),

    e.battery(),
  ],

options: [
  exposes.options.invert_cover(),
],

  meta: {
    tuyaSendCommand: 'sendData',
    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.coverPosition], 
      [5,   'reverse_direction', tuya.valueConverterBasic.lookup({ forward: tuya.enum(0), back: tuya.enum(1) })],
      [13,  'position',          tuya.valueConverter.coverPosition],
      [103, 'work_state',        tuya.valueConverterBasic.lookup({
                                  idle: tuya.enum(0), opening: tuya.enum(4), closing: tuya.enum(8) })],
      [15,  'battery',           tuya.valueConverter.raw],
    ],
  },
};

What does/doesn't work with the external definition?

This is for newer A-OK AM25 units that have the separate power switch.

Can control by state (Open, Close, Stop) and position (0-100%)
Can reverse motor direction, as well as invert_cover for display.
Work state is displayed (Idle, Opening, Closing) but this can get 'stuck' if multiple commands are issued to the unit.
It allows for battery, but am unsure if it actually reports battery.

Notes

software_build_id: undefined
date_code: ``
endpoints:

{"1":{"clusters":{"input":["genBasic","genGroups","genScenes","manuSpecificTuya"],"output":["genOta","genTime"]}}}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions