Repository navigation
TS0003 three-output non-metering — four 0.4 identities + three pending candidates #795
Description
Device Information
- Device Name:
Zemismart Tuya Zigbee Smart Wall Light Switch EU Push Button Interruptor 3 Gangs - Device Model:
K6-G03 - Device Description:
Wall Light Switch - Link to device image:

Link to where you bought the device:
(https://www.zemismart.com/products/606-k6)
Device Interview
"ids": {
"modelId": "TS0003",
"manufacturerName": "_TZ3000_lmcp6b0a"
},
"endpoints": {
"ieeeAddress": "6c:5c:b1:ff:fe:20:62:80",
"networkAddress": 42287,
"modelId": "TS0003",
"manufacturerName": "_TZ3000_lmcp6b0a",
"endpointDescriptors": [
{
"status": "SUCCESS",
"nwkAddrOfInterest": 42287,
"_reserved": 26,
"endpointId": 1,
"applicationProfileId": 260,
"applicationDeviceId": 256,
"applicationDeviceVersion": 0,
"_reserved1": 1,
"inputClusters": [
0,
3,
4,
5,
6,
57344,
57345
],
"outputClusters": [
25,
10
]
},
{
"status": "SUCCESS",
"nwkAddrOfInterest": 42287,
"_reserved": 20,
"endpointId": 2,
"applicationProfileId": 260,
"applicationDeviceId": 256,
"applicationDeviceVersion": 0,
"_reserved1": 1,
"inputClusters": [
3,
4,
5,
6,
57344,
57345
],
"outputClusters": []
},
{
"status": "SUCCESS",
"nwkAddrOfInterest": 42287,
"_reserved": 20,
"endpointId": 3,
"applicationProfileId": 260,
"applicationDeviceId": 256,
"applicationDeviceVersion": 0,
"_reserved1": 1,
"inputClusters": [
3,
4,
5,
6,
57344,
57345
],
"outputClusters": []
},
{
"status": "SUCCESS",
"nwkAddrOfInterest": 42287,
"_reserved": 10,
"endpointId": 242,
"applicationProfileId": 41440,
"applicationDeviceId": 97,
"applicationDeviceVersion": 0,
"_reserved1": 0,
"inputClusters": [],
"outputClusters": [
33
]
}
],
"deviceType": "router",
"receiveWhenIdle": true,
"capabilities": {
"alternatePANCoordinator": false,
"deviceType": true,
"powerSourceMains": true,
"receiveWhenIdle": true,
"security": false,
"allocateAddress": true
},
"extendedEndpointDescriptors": {
"1": {
"clusters": {
"basic": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 0,
"name": "zclVersion",
"value": 3,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 1,
"name": "appVersion",
"value": 80,
"reportingConfiguration": {
"direction": "reported",
"attributeDataType": 32,
"minInterval": 1,
"maxInterval": 150,
"minChange": 0,
"status": "SUCCESS"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 2,
"name": "stackVersion",
"value": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 3,
"name": "hwVersion",
"value": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 4,
"name": "manufacturerName",
"value": "_TZ3000_lmcp6b0a",
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 5,
"name": "modelId",
"value": "TS0003",
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 6,
"name": "dateCode",
"value": "",
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 7,
"name": "powerSource",
"value": "mains",
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 65502,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 2,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65534,
"name": "attributeReportingStatus",
"value": "PENDING",
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65504,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65505,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65506,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65507,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": "UNSUP_GENERAL_COMMAND",
"commandsReceived": "UNSUP_GENERAL_COMMAND"
},
"identify": {
"attributes": [
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 0,
"name": "identifyTime",
"value": 142,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": "UNSUP_GENERAL_COMMAND",
"commandsReceived": "UNSUP_GENERAL_COMMAND"
},
"groups": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 0,
"name": "nameSupport",
"value": {
"type": "Buffer",
"data": [
0
]
},
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 2,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": "UNSUP_GENERAL_COMMAND",
"commandsReceived": "UNSUP_GENERAL_COMMAND"
},
"scenes": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 2,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 3,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 4,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 2,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": "UNSUP_GENERAL_COMMAND",
"commandsReceived": "UNSUP_GENERAL_COMMAND"
},
"onOff": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 0,
"name": "onOff",
"value": false,
"reportingConfiguration": {
"direction": "reported",
"attributeDataType": 16,
"minInterval": 60,
"maxInterval": 600,
"status": "SUCCESS"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 2,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 16385,
"name": "onTime",
"value": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 16386,
"name": "offWaitTime",
"value": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 32769,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 32770,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 20480,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": "UNSUP_GENERAL_COMMAND",
"commandsReceived": "UNSUP_GENERAL_COMMAND"
}
},
"bindings": {
"ota": {},
"time": {
"attributes": [],
"commandsGenerated": "UNSUP_GENERAL_COMMAND",
"commandsReceived": "UNSUP_GENERAL_COMMAND"
}
}
},
"2": {
"clusters": {
"identify": {
"attributes": [
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 0,
"name": "identifyTime",
"value": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": "UNSUP_GENERAL_COMMAND",
"commandsReceived": "UNSUP_GENERAL_COMMAND"
},
"groups": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 0,
"name": "nameSupport",
"value": {
"type": "Buffer",
"data": [
0
]
},
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 2,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": "UNSUP_GENERAL_COMMAND",
"commandsReceived": "UNSUP_GENERAL_COMMAND"
},
"scenes": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 2,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 3,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 4,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 2,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": "UNSUP_GENERAL_COMMAND",
"commandsReceived": "UNSUP_GENERAL_COMMAND"
},
"onOff": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 0,
"name": "onOff",
"value": false,
"reportingConfiguration": {
"direction": "reported",
"attributeDataType": 16,
"minInterval": 1,
"maxInterval": 65534,
"status": "SUCCESS"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 2,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 16385,
"name": "onTime",
"value": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 16386,
"name": "offWaitTime",
"value": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 32769,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 32770,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 20480,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": "UNSUP_GENERAL_COMMAND",
"commandsReceived": "UNSUP_GENERAL_COMMAND"
}
},
"bindings": {}
},
"3": {
"clusters": {
"identify": {
"attributes": [
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 0,
"name": "identifyTime",
"value": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": "UNSUP_GENERAL_COMMAND",
"commandsReceived": "UNSUP_GENERAL_COMMAND"
},
"groups": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 0,
"name": "nameSupport",
"value": {
"type": "Buffer",
"data": [
0
]
},
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 2,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": "UNSUP_GENERAL_COMMAND",
"commandsReceived": "UNSUP_GENERAL_COMMAND"
},
"scenes": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 2,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 3,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 4,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 2,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": "UNSUP_GENERAL_COMMAND",
"commandsReceived": "UNSUP_GENERAL_COMMAND"
},
"onOff": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 0,
"name": "onOff",
"value": false,
"reportingConfiguration": {
"direction": "reported",
"attributeDataType": 16,
"minInterval": 1,
"maxInterval": 65534,
"status": "SUCCESS"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 2,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 16385,
"name": "onTime",
"value": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 16386,
"name": "offWaitTime",
"value": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 32769,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 32770,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 20480,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": "UNSUP_GENERAL_COMMAND",
"commandsReceived": "UNSUP_GENERAL_COMMAND"
}
},
"bindings": {}
},
"242": {
"clusters": {},
"bindings": {}
}
}
}Batch 74 — two physical full-E000/E001 TS0003 wall switch variants
Two separately interviewed three-gang variants have same observed EP1/EP2/EP3 standard OnOff6, with each endpoint advertising Basic0, Identify3, Groups4, Scenes5 and BOTH manufacturer clusters E000 (57344) and E001 (57345); EP242 Green Power; applicationDeviceId 256 on every gang.
- Original TS0003 three-output non-metering — four 0.4 identities + three pending candidates #795: _TZ3000_lmcp6b0a / TS0003, Zemismart 3-gang wall switch.
- Original Device Request - Tuya 3-gang wall switch - _TZ3000_v4l4b0lp / TS0003 #1353: _TZ3000_v4l4b0lp / TS0003, Tuya wall switch whose reporter currently sees only the first gang in generic pairing.
Neither exact identity is in frozen 0.3.0 or 0.3.1. They are two independent test specimens for one narrow non-metering three-output OnOff investigation. Confirm EP1/2/3 all exposed, independent on/off and physical/local state updates, Flow card mapping and restart behavior; inspect manufacturer setting attributes separately. No 0x0702/0x0B04 in their interviews; do not combine with the structurally DIFFERENT three-output metering canonical #408, or conflate manufacturer optional layout with legacy #1338 BSEED EP1-only E000 siblings.
#1353 is closed as duplicate development tracking into this still-unimplemented task, not completed support. Full original interview remains readable.
Metadata
Metadata
Assignees
Labels
Projects
- StatusShow more project fieldsTo do
Activity
[-]Device Request - [Zemismart Tuya Zigbee Smart Wall Light Switch EU Push Button Interruptor 3 Gangs] - [_TZ3000_lmcp6b0a] / [TS0003][/-][+]TS0003 non-metering full-E000/E001 three-output wall-switch profile[/+]feat: add two exact TS0003 non-metering three-channel profiles (#795)
JohanBendz commentedon Oct 1, 2026
develop-0.4 / 0.4.0 implementation checkpoint — 2026-10-02
Implemented a separate
switch_3_gang_ts0003pairing profile in commit **3c57a3ffor exactly two physically interviewed pairs:_TZ3000_lmcp6b0a / TS0003._TZ3000_v4l4b0lp / TS0003(the user previously only saw gang 1 under generic pairing).Original-interview correction: EP1 includes Basic0, Identify3, Groups4, Scenes5, OnOff6, E000/57344 and E001/57345; EP2/EP3 actually include Identify3, Groups4, Scenes5, OnOff6, E000/E001, not Basic0. The previous Batch74 prose claiming Basic0 on all endpoints is inaccurate. The new Homey Compose profile deliberately requires only established common core standard cluster inputs: EP1 [0,4,5,6], EP2 [4,5,6], EP3 [4,5,6], OnOff bindings EP1/2/3. Manufacturer E000/E001 and Identify3 on EP2/EP3 remain optional observed physical features, with no new writes or speculative mode settings.
The new driver reuses existing unmodified
switch_3_gang/device.jsanddriver.js, registering mainonoffon endpoint 1 and two child tilessecondSwitchEP2 /thirdSwitchEP3. Nothing was added to the existing broad multi-device driver; only two exact identities with productIdTS0003can match this profile. No phantom metering or vendor DP/EF00. Generic switch assets, Compose, generatedapp.json, supported-device index, 0.4.0 development changelog and three new regression tests were added. Tests exercise the actual reused runtime, independent channel endpoint registration and optional Basic failure on the parent.CI289 SUCCESS at exact commit
3c57a3f: 126 total, 123 pass, 0 fail, 3 pre-existing CCT TODO; clean install, Homey Compose, committed app manifest and index, Node tests, Homey publish validation and whitespace pass.Status stays OPEN: A successful build proves profile/registration logic, not physical user acceptance. After future 0.4 Test availability, ask both exact fingerprint reporters to confirm three Homey tiles, independent EP1/EP2/EP3 physical ON/OFF and local state feedback, Flow actions/triggers for gangs 2/3, restart/rejoin and realistic mains-power behavior. #1353 stays closed only as consolidated development tracking; its physical proof must not be discarded.
Safety isolation: No edits to shared switch runtime, any existing light runtime or custom Color Control, frozen 0.3.1 Test, 0.2.76 Live, or Draft PR #1470.
[-]TS0003 non-metering full-E000/E001 three-output wall-switch profile[/-][+]TS0003 non-metering three-output family — four exact identities[/+]JohanBendz commentedon Oct 2, 2026
Batch 92 — consolidate all FOUR exact standard non-metering TS0003 variants (2026-10-02)
This remains the OPEN canonical
switch_3_gang_ts0003implementation + physical Test feedback investigation, not merely the two earlier full-E000/E001 endpoint variants. Verified against actual generated 0.4app.json: exactly FOUR manufacturers are present with productIdTS0003, EP1 required standard [0,4,5,6] and EP2/EP3 [4,5,6], bind OnOff6 on each. No mandatory private E000/E001 and NO metering/Electrical Measurement._TZ3000_lmcp6b0a / TS0003_TZ3000_v4l4b0lp / TS0003_TZ3000_qkixdnon / TS0003_TZ3000_iol4bl2y / TS0003Critical exclusion: the ORIGINAL BODY of #1152 supplies a DIFFERENT exact pair
_TZ3000_ly9apzky / TS0003with EP1 Metering0x0702 and Electrical Measurement0x0B04, consolidated under still-OPEN metering canonical #408. Do not import that metering identity into this non-metering driver or attribute its interview to #1500. Manufacturer cluster layouts differ in the four rows; our new driver requires only the common standard OnOff core.Current public status: New 0.4 profile is in
develop-0.4; it is not yet physically accepted via released 0.4. Full physical verification takes place after the 0.4 Test release and requires per-fingerprint pairing with THREE distinct Homey channels/tiles (EP1 parent, EP2 secondSwitch, EP3 thirdSwitch), independent Homey and wall action, state/Flow update, restart/rejoin; explicitly prioritize #1500 and #1353's historically missing extra channels. The 0.4 acceptance matrix preserves each original physical source separately.Housekeeping: #1500 is a duplicate TRACKING thread (not an identical manufacturer/firmware variant), as its full interview and outstanding physical work are now preserved here; close #1500 with permanent backlinks after adding canonical/cross-reference notes. #1338 must remain OPEN for the other three BSEED channel-count variants. No app code or Homey publication change.
JohanBendz commentedon Oct 2, 2026
Batch 93 — two further FULL-interview non-metering TS0003 candidates (2026-10-02)
This canonical #795 remains the OPEN shared engineering / physical Test workstream for standard three independently controllable OnOff endpoints. Its FOUR already implemented and separately sourced
develop-0.4manufacturer/model pairs documented in the Batch 92 comment remain unchanged. The following TWO additional, not implemented or included in the generated 0.4 manifest are now preserved here as separate potential additions. Their common required standard endpoint contract matches the narrow existingswitch_3_gang_ts0003implementation shape; they are NOT assumed to be identical retail products or firmware._TZ3210_n0wbkysi / TS0003_TZ3000_f09j9qjb / TS0003Both original interviews have no
0x0702Metering,0x0B04Electrical Measurement or0xEF00DP-control path. The shared pairing core (EP1[0,4,5,6], EP2 and EP3[4,5,6], standard OnOff6 on each) is a candidate engineering route, not proof their different physical products are working in 0.4. We still need individual exact fingerprint matching, Homey UI semantics and eventual hardware acceptance in public 0.4 Test, not pre-Test. Any profile expansion must be separately reviewed/tested; do not claim current 0.4 supports these two.Critical exclusion: superficially similar USB-A #990 advertises EP1
0x0702AND0x0B04; it is already preserved under still-OPEN metering canonical #408. Do not move it here or copy its meter capabilities onto #1402. Original full #1402 and #1014 reports remain permanently accessible and maintain distinct Test-acceptance rows. Only the redundant parallel development tracking in these source issues may close asduplicate, nevercompleted.No app code, release, manifest, Compose or sensitive light changes in this batch.
[-]TS0003 non-metering three-output family — four exact identities[/-][+]TS0003 non-metering three-output family — four 0.4 identities + two pending candidates[/+][-]TS0003 non-metering three-output family — four 0.4 identities + two pending candidates[/-][+]TS0003 three-output non-metering — four 0.4 identities + three pending candidates[/+]JohanBendz commentedon Oct 3, 2026
Batch 105 — extra legacy TS0003 three-gang identity-only row from mixed #128 (2026-10-03)
#128 also requests literal
_TZ3000_ho0cjoi2 / TS0003as a THREE-gang wall switch, but the source original BODY provides ONLY manufacturer/product and number of gangs, NO physical Homey interview. This becomes a new THIRD pending/verification-needed TS0003 identity here; not an additional codedswitch_3_gang_ts0003matcher. Preserve distinct status of the existing FOUR exact coded 0.4 candidates and two earlier future-profile candidates, including physical sources, optional layouts and separate public Test.For this new source, first obtain literal Homey
ids, physical EP1/2/3 OnOff6/input/output, presence/absence of EP1 standard Metering1794/ElectricalMeasurement2820, product/local behavior, E000/E001 and power. Its label '3 gang' alone does NOT prove NON-METERING: if standard metering exists, use separate metering canonical #408 rather than attach a wrong driver. On eventual matching, test all three outputs, Homey subdevices, local updates and Flow separately in 0.4 public Test; do not infer support now. Exact_TZ3000_ho0cjoi2absent frozen 0.3.1 anddevelop-0.4app.json Batch105. Close mixed source #128 only after all six rows have a permanent destination. No code or release change.KDu-code commentedon Oct 10, 2026
Test results for _TZ3000_v4l4b0lp / TS0003 (pending candidate from #1353), physical device, Homey Pro (2026).
Note: tested with a private test app (standard On/Off cluster + Tuya attributes 0x8001/0x8002 on the On/Off cluster), not with the Tuya Zigbee app itself. Interview is already in #1353.
Pairing: three independent devices on endpoints 1, 2, 3.
Basic cluster read at pairing: appVersion 71, powerSource mains.
On/off from Homey works independently on EP1, EP2 and EP3.
Physical (local) presses report status back to Homey on all three gangs (onOff attribute reports from each endpoint).
Attribute 0x8001 (indicator mode), written on EP1, shared by all three gangs. Each value written and confirmed visually:
0 – LED off
1 – green LED lit when the circuit is on (factory default)
2 – green LED lit when the circuit is off
Attribute 0x8002 (power-on behaviour): factory value read as 0; writes of 0 and 1 were accepted. Behaviour after a real power cut not tested yet.
Not tested: Tuya Zigbee app Flow cards (the device is not in the app yet).
fp(bastien): _TZ3000_lmcp6b0a + TS0003 (Zemismart 3-gang) into switch…
fp(W4): _TZ3000_lmcp6b0a off climate_sensor (owner switch_3_gang, Joh…
KDu-code commentedon Oct 12, 2026
Follow-up for _TZ3000_v4l4b0lp / TS0003 – power-on behaviour and backlight, tested with a real power cut (circuit breaker) on Homey Pro (2026), private test app, logs + physical check.
Power-on behaviour (genOnOff 0x8002) is ONE value for the whole switch, not per endpoint – unlike the Z2M definition (powerOnBehavior2 exposed per endpoint l1/l2/l3):
After writing 0x8002 on EP1, reading it back from EP1, EP2 and EP3 returns the same value.
Only a write through EP1 is applied after a power cut. Writes through EP2/EP3 are accepted (status SUCCESS) and change the value returned by reads, but the switch does not apply them at power-up. Two tests with different values written via EP2/EP3 both followed the last value written via EP1.
Written via EP1, verified with the breaker:
0 (off) – all channels on before the cut → all off after,
1 (on) – all channels off before the cut → all on after,
2 (previous) – ch1 on, ch2 off, ch3 on before the cut → same after.
Suggestion: treat power-on behaviour for this device as a single device-wide setting written to endpoint 1.
Other attributes (all on EP1, shared by all channels):
0x5000 (tuyaBacklightSwitch, "backlight switch" in the Tuya app) – weak white button backlight, 0 off / 1 on, verified visually.
0off,1lit when the circuit is on,2lit when the circuit is off (Tuya app: "indicate switch" / "indicate position").Also observed: no end-device announce after power returns; the switch reports the on/off state of all three channels twice, ~12 s apart.