Koenkk / Koenkk/zigbee2mqtt

[New device support]: TS0001 >> vendor: '_TZ3210_0x3s31ks'

Open Beginner friendly
#32,969 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

new device support
Dominant language
TypeScript
Stars
15.7k
Forks
2k
Avg merge
18h 55m
Merged PRs (30d)
35

Description

Link

https://de.aliexpress.com/item/1005012784838528.html

Database entry

{"id":56,"type":"EndDevice","ieeeAddr":"0xa4c138ffd72bbb7f","nwkAddr":53453,"manufId":4417,"manufName":"_TZ3210_0x3s31ks","powerSource":"Battery","modelId":"TS0001","epList":[1],"endpoints":{"1":{"profId":260,"epId":1,"devId":0,"inClusterList":[6,61184,0],"outClusterList":[25,10],"clusters":{"genBasic":{"attributes":{"65503":"xV\u001a2\u0019�V\u001a2\u0019hW\u001a2\u0019�W\u001a2\u0019XX\u001a2\u0019�X\u001a2\u0019HY\u001a2\u0019�Y\u001a2\u0019","65506":54,"65508":0,"65534":0,"modelId":"TS0001","manufacturerName":"_TZ3210_0x3s31ks","powerSource":3,"zclVersion":3,"appVersion":125,"stackVersion":0,"hwVersion":1,"dateCode":""}},"genOnOff":{"attributes":{"onOff":1}}},"binds":[{"cluster":6,"type":"endpoint","deviceIeeeAddress":"0x00212effff0e168c","endpointID":1}],"configuredReportings":[],"meta":{}}},"appVersion":125,"stackVersion":0,"hwVersion":1,"dateCode":"","zclVersion":3,"interviewCompleted":true,"interviewState":"SUCCESSFUL","meta":{"configured":"0.0.0"},"lastSeen":1788017250957}

Zigbee2MQTT version

2.13.0

External definition
import * as m from 'zigbee-herdsman-converters/lib/modernExtend';

export default {
    zigbeeModel: ['TS0001'],
    model: 'TS0001',
    vendor: '_TZ3210_0x3s31ks',
    description: 'Automatically generated definition',
    extend: [m.onOff({"powerOnBehavior":false})],
};
What does/doesn't work with the external definition?

Not yet tested — I have not enabled enable_external_js on this
production instance yet, and the device is currently in active use
(it presses the reset button on a faulty home battery storage system).

Without any external definition, the device is matched to the generic
Tuya TS0001 "1 gang switch" definition. It exposes only state and
power_on_behavior; the latter always reports null because the
fingerbot does not implement that attribute. On/off works and reliably
actuates the arm, so the Zigbee side is fine — LQI is 255 and commands
are acknowledged.

Missing: mode, lower, upper, delay, reverse, touch and
battery. The arm cannot be calibrated and the CR2 battery level is
invisible.

Confirmed working mode is click: the arm extends and retracts on its
own after a single on/off command.

Since this appears to be the same situation as _TZ3210_j4pdtz9v
(#6207) and _TZ3210_7vgttna6, I expect adding _TZ3210_0x3s31ks to
the existing TS0001_fingerbot fingerprint is sufficient — no new
datapoint mapping needed. Happy to test a patched build and report back.

The database entry confirms the device exposes cluster 0xEF00 (61184)
on endpoint 1 alongside genOnOff, and devId is 0 rather than a switch
device type — consistent with the other fingerbot variants and not with
a wall switch. The generic TS0001 definition simply never touches EF00,
which is why no datapoints surface. Power source is Battery, appVersion
125.

Additional data point: with the current (generic TS0001) definition the
device never emits anything on cluster 0xEF00. Toggling it produces only
genOnOff attributeReports:

17:58:08 read genTime ["localTime"]
17:58:45 attributeReport genOnOff {"onOff":0}
17:59:00 attributeReport genOnOff {"onOff":1}

Presumably because the generic definition never sends the Tuya magic
packet, so the MCU never starts reporting datapoints. Note the genTime
read — the device asks the coordinator for local time, which is typical
Tuya MCU behaviour and matches onEventSetTime in the fingerbot
definition.

So I cannot verify the datapoint mapping without loading an external
converter. Happy to do that if it helps, but given EF00 is present in the
inClusterList and devId is 0, this still looks like a plain missing
fingerprint rather than a device needing new DP work.

Checked: not in the latest-dev changelog, and no existing issue or PR
for _TZ3210_0x3s31ks.

Notes

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Locate the existing TS0001_fingerbot definition and inspect its fingerprint list, comparing the related variants referenced in issues #6207 and #32969. Add the reported manufacturer fingerprint, then validate with the external definition that mode, arm controls, delay, reverse, touch, and battery are exposed without breaking on/off behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
embedded-iot
Issue type
Feature
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
76/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.