Thanks for the amazing app, sadly the 4 gang switch doesn’t work for me, when I pair mine they always say “unknown Zigbee device’“.
I also have a different manufacturer ID.
Do you know what the problem could be?
Confirm the 1-button works perfect.
Alex:
Did you use the test version app or the Moes app that is already listed?
All my 4 gang buttons switches working great with the app that is listed.
I got the app as usual from the store, so should be the listed one.
I will add this tonight.
This is now in test version that you can find here:
It usually takes a week for the version to be published to production version.
I finally got around to testing it, and so far it works perfectly, thank you so much
Hi!
Could you please add support for this 4 gang wall switch device id?
_TZ3000_xabckq1v
TS004F
Added in test version
Thank you, that was fast. The device still gets added as a generic zigbee device though. I’ve put a complete device interview in the hidden part below.
“ids”: {
“modelId”: “TS004F”,
“manufacturerName”: “_TZ3000_xabckq1v”
},
“endpoints”: {
“ieeeAddress”: “60:a4:23:ff:fe:fd:dc:ab”,
“networkAddress”: 10376,
“modelId”: “TS004F”,
“manufacturerName”: “_TZ3000_xabckq1v”,
“endpointDescriptors”: [
{
“status”: “SUCCESS”,
“nwkAddrOfInterest”: 10376,
“_reserved”: 36,
“endpointId”: 1,
“applicationProfileId”: 260,
“applicationDeviceId”: 260,
“applicationDeviceVersion”: 0,
“_reserved1”: 1,
“inputClusters”: [
0,
1,
3,
4,
6,
4096
],
“outputClusters”: [
25,
10,
3,
4,
5,
6,
8,
4096
]
}
],
“deviceType”: “enddevice”,
“receiveWhenIdle”: false,
“capabilities”: {
“alternatePANCoordinator”: false,
“deviceType”: false,
“powerSourceMains”: false,
“receiveWhenIdle”: false,
“security”: false,
“allocateAddress”: true
},
“extendedEndpointDescriptors”: {
“1”: {
“clusters”: {
“basic”: {
“attributes”: [
{
“acl”: [
“readable”,
“reportable”
],
“id”: 0,
“dataTypeId”: 32,
“name”: “zclVersion”,
“value”: 3,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 1,
“dataTypeId”: 32,
“name”: “appVersion”,
“value”: 65,
“reportingConfiguration”: {
“direction”: “reported”,
“attributeDataType”: 32,
“minInterval”: 1,
“maxInterval”: 65534,
“minChange”: 0,
“status”: “SUCCESS”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 2,
“dataTypeId”: 32,
“name”: “stackVersion”,
“value”: 0,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 3,
“dataTypeId”: 32,
“name”: “hwVersion”,
“value”: 1,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 4,
“dataTypeId”: 66,
“name”: “manufacturerName”,
“value”: “_TZ3000_xabckq1v”,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 5,
“dataTypeId”: 66,
“name”: “modelId”,
“value”: “TS004F”,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 6,
“dataTypeId”: 66,
“name”: “dateCode”,
“value”: “”,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 7,
“dataTypeId”: 48,
“name”: “powerSource”,
“value”: “battery”,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“writable”,
“reportable”
],
“id”: 65502,
“dataTypeId”: 32,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 65533,
“dataTypeId”: 33,
“name”: “clusterRevision”,
“value”: 2,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 65534,
“dataTypeId”: 48,
“name”: “attributeReportingStatus”,
“value”: “PENDING”,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 65504,
“dataTypeId”: 72,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 65505,
“dataTypeId”: 72,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 65506,
“dataTypeId”: 32,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 65507,
“dataTypeId”: 72,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
}
],
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
},
“powerConfiguration”: {
“attributes”: [
{
“acl”: [
“readable”,
“reportable”
],
“id”: 0,
“dataTypeId”: 33,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 32,
“dataTypeId”: 32,
“name”: “batteryVoltage”,
“value”: 30,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 33,
“dataTypeId”: 32,
“name”: “batteryPercentageRemaining”,
“value”: 200,
“reportingConfiguration”: {
“direction”: “reported”,
“attributeDataType”: 32,
“minInterval”: 14400,
“maxInterval”: 65534,
“minChange”: 10,
“status”: “SUCCESS”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 65533,
“dataTypeId”: 33,
“name”: “clusterRevision”,
“value”: 1,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
}
],
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
},
“identify”: {
“attributes”: [
{
“acl”: [
“readable”,
“writable”,
“reportable”
],
“id”: 0,
“dataTypeId”: 33,
“name”: “identifyTime”,
“value”: 0,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 65533,
“dataTypeId”: 33,
“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,
“dataTypeId”: 24,
“name”: “nameSupport”,
“value”: {
“type”: “Buffer”,
“data”: [
0
]
},
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 65533,
“dataTypeId”: 33,
“name”: “clusterRevision”,
“value”: 1,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
}
],
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
},
“onOff”: {
“attributes”: [
{
“acl”: [
“readable”,
“writable”,
“reportable”
],
“id”: 32772,
“dataTypeId”: 48,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
}
],
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
},
“touchlink”: {
“attributes”: [
{
“acl”: [
“readable”,
“reportable”
],
“id”: 65533,
“dataTypeId”: 33,
“name”: “clusterRevision”,
“value”: 1,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
}
],
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
}
},
“bindings”: {
“identify”: {
“attributes”: [
{
“acl”: [
“readable”,
“writable”,
“reportable”
],
“id”: 0,
“dataTypeId”: 33,
“name”: “identifyTime”,
“value”: 0,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 65533,
“dataTypeId”: 33,
“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,
“dataTypeId”: 24,
“name”: “nameSupport”,
“value”: {
“type”: “Buffer”,
“data”: [
0
]
},
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 65533,
“dataTypeId”: 33,
“name”: “clusterRevision”,
“value”: 1,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
}
],
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
},
“onOff”: {
“attributes”: [
{
“acl”: [
“readable”,
“writable”,
“reportable”
],
“id”: 32772,
“dataTypeId”: 48,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
}
],
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
},
“touchlink”: {
“attributes”: [
{
“acl”: [
“readable”,
“reportable”
],
“id”: 65533,
“dataTypeId”: 33,
“name”: “clusterRevision”,
“value”: 1,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
}
],
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
},
“ota”: {},
“time”: {},
“scenes”: {
“attributes”: [],
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
},
“levelControl”: {
“attributes”: [],
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
}
}
}
}
}
Just received my 4-gang switch. Pairing is smooth, but seconds later the switch leaves the zigbee network. Pairing was close to my Pro 2026.
Also tried the Tuya app, but none of the three device-options worked.
Any other idea?
Is it possible to add this device to your list. I had help with an AI who recommended contacting you with this information. Many thanks!
Device details:
Homey Pro Mini behaviour:
Developer tools observation:
Expected behaviour:
This device is a standard Tuya TS0044 4-gang scene controller and should expose:
(12 actions total)
Other TS0044 variants (e.g. _TZ3000_zgyzgdua, _TZ3000_wkai4ga5) already appear to be supported in your app, but this manufacturer variant is not:
It likely uses the same cluster structure and command model, but a different manufacturer fingerprint.
If possible, could you please add _TZ3000_kfu8zapd to the TS0044 driver mapping?
Happy to provide additional logs or re-test builds if needed.
Thanks!
+1
Can some legend please add this device _TZ3000_kfu8zapd? ![]()
I got impatient so I decided to DIY ![]()
I got the Moes 4-button Zigbee scene remote working on Homey and pushed the app source here:
Primordial1/homey-moes-ts0044-remote
Tested device details:
TS0044_TZ3000_kfu8zapd1-4genOnOff / 0x0006Working actions:
Important:
This remote needs to be in scene/event mode (default mode) or Homey won’t receive button actions correctly.
To switch mode, hold buttons 2 + 4 for about 6 seconds until the LED indicates the mode change.
Homey Flow trigger exposed by the app:
Button [[button]] was [[action]]Install instructions
Install the Homey CLI:
npm install --global homey
Log in:
homey login
Clone the repo:
git clone https://github.com/Primordial1/homey-moes-ts0044-remote.git
cd homey-moes-ts0044-remote
Install dependencies:
npm install
Install the app to your Homey:
homey app install
Pair the remote in Homey using the app’s driver:
Moes 4 Button Scene RemotePut the remote into scene/event mode:
2 + 4 for about 6 secondsCreate Flows using:
Button [[button]] was [[action]]If the device was previously paired as a generic Zigbee device, remove it first and then pair it again using this app.
This was built specifically because this fingerprint was not matched by the TS0044 support I had available:
_TZ3000_kfu8zapdIf the maintainer of an existing Moes / TS0044 Homey app wants to add this fingerprint upstream, the implementation pattern is straightforward:
genOnOff on endpoints 1-40 = single1 = double2 = holdIf posting repos is not allowed, let me know. Happy to remove and let the maintainer put it through the app.
P
Hi,
Sorry I will not be continue to update this app as im moving to another home automation system.
Feel free to overtake the project.
BR
Hi Relax_swe,
As I mentioned in PM, I will take over the project and rename the app from Relax Moes Zigbee to MOES Zigbee.
I’m currently in contact with MOES to ensure that everything is done properly.
At the moment, I’m rebuilding the App from scratch and plan to release it first as a test app.
However, with your permission, I would be happy to reuse parts of your code. Of course, I will make sure to give you full credit for your excellent work. ![]()
Regards,
SoPhos
Sounds great!
If/whan You start extendin the app would You mind adding the “TS0044” / “_TZ3000_kfu8zapd” remote to the Moes app?
I can add the interview if/when needed..
HI all,
I published the first test version of the new MOES App, already available for testing :
A dedicated new thread has also been created here
Regards,
SoPhos