[APP][Pro] Relax Moes Zigbee

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.

Summary

“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”
}
}
}
}
}

Hi could you please add the smart button switch? It also have rotating (dimming knob)

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:

  • Model: TS0044
  • Manufacturer Name: _TZ3000_kfu8zapd
  • Device: Moes Scene Remote Control ZR-SR-R01 (4-button)
  • Zigbee type: End device (battery powered)
  • Endpoints: 1–4 (each with On/Off cluster 0x0006)

Homey Pro Mini behaviour:

  • Device pairs successfully via your app
  • It appears as a generic “Zigbee Device”
  • It creates 4x On/Off + 4x Battery capabilities
  • No Flow “Button pressed / single / double / hold” trigger cards are available
  • No timeline or event updates when buttons are pressed

Developer tools observation:

  • Endpoints 1–4 present
  • Input clusters: 0x0001, 0x0006
  • Output clusters: 0x0019, 0x000A (endpoint 1)
  • Button presses do not generate observable events in Homey logs

Expected behaviour:
This device is a standard Tuya TS0044 4-gang scene controller and should expose:

  • button 1–4 single press
  • button 1–4 double press
  • button 1–4 hold press

(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:

  • _TZ3000_kfu8zapd

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? :folded_hands:

I got impatient so I decided to DIY :grinning_face_with_smiling_eyes:

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:

  • Model: TS0044
  • Manufacturer: _TZ3000_kfu8zapd
  • Product / remote type: Moes 4-button scene remote
  • Endpoints: 1-4
  • Cluster used for button events: genOnOff / 0x0006

Working actions:

  • Button 1 single / double / hold
  • Button 2 single / double / hold
  • Button 3 single / double / hold
  • Button 4 single / double / hold

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

  1. Install the Homey CLI:

    npm install --global homey
    
  2. Log in:

    homey login
    
  3. Clone the repo:

    git clone https://github.com/Primordial1/homey-moes-ts0044-remote.git
    cd homey-moes-ts0044-remote
    
  4. Install dependencies:

    npm install
    
  5. Install the app to your Homey:

    homey app install
    
  6. Pair the remote in Homey using the app’s driver:

    • Moes 4 Button Scene Remote
  7. Put the remote into scene/event mode:

    • hold buttons 2 + 4 for about 6 seconds
  8. Create 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_kfu8zapd

If the maintainer of an existing Moes / TS0044 Homey app wants to add this fingerprint upstream, the implementation pattern is straightforward:

  • bind genOnOff on endpoints 1-4
  • handle Tuya action commands
  • map action values as:
    • 0 = single
    • 1 = double
    • 2 = hold

If posting repos is not allowed, let me know. Happy to remove and let the maintainer put it through the app.

P

Hi Relax_swe,

Would it be possible to integer MOES A5 device into App, please ?

image

Please tell me if you need Manufactor-ID and Product-ID.

Regards,
SoPhos

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. :sports_medal:

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