[APP][Pro] Universal TUYA Zigbee Device App - test

Thank you so much for your help. But i get this:

✓ Pre-processing app…
× Command failed: npm ls --parseable --all --only=prod
npm warn config only Use --omit=dev to omit dev dependencies from the install.
npm error code ELSPROBLEMS
npm error missing: @octokit/rest@^22.0.1, required by com.dlnraja.tuya.zigbee@34.0.1
npm error missing: homey-zigbeedriver@^2.2.2, required by com.dlnraja.tuya.zigbee@34.0.1
npm error A complete log of this run can be found in: C:\Users\Pieter Pessers\AppData\Local\npm-cache_logs\2026-01-27T21_35_57_554Z-debug-0.log

× Error: This error may be fixed by running npm install in your app.
at C:\Users\Pieter Pessers\AppData\Roaming\npm\node_modules\homey\lib\App.js:1002:15
at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
at async App._copyAppProductionDependencies (C:\Users\Pieter Pessers\AppData\Roaming\npm\node_modules\homey\lib\App.js:999:26)
at async App.preprocess (C:\Users\Pieter Pessers\AppData\Roaming\npm\node_modules\homey\lib\App.js:890:7)
at async App.install (C:\Users\Pieter Pessers\AppData\Roaming\npm\node_modules\homey\lib\App.js:823:7)
at async exports.handler (C:\Users\Pieter Pessers\AppData\Roaming\npm\node_modules\homey\bin\cmds\app\install.js:25:5)

Yes you need npm and docker

Thank you Dylan. Can i install docker by node.js and how or is it a stand alone docker?

stand alone docker yoiu also need to unstall homey wirh npm install -g homry ( g for global )

@packetninja (Attilla),

Thank you for this excellent PR! :tada:

Your BSEED switch implementation with physical button detection via attribute reports has been MERGED into v5.5.913.

The code was already integrated in a previous version but your PR confirmed the correct approach and fingerprints. I’ve updated all references to credit you properly.

Changes in v5.5.913:

  • PR references updated to #118
  • Your name credited in code comments and changelog
  • printNode() debug call added per your approach

The fingerprints _TZ3000_ysdv91bk and _TZ3000_blhvsaqf are fully supported in the switch_1gang driver with:

  • ZCL-only mode (no Tuya DP)
  • 2000ms app command window
  • Physical button detection via attribute reports
  • Custom clusters 0xE000/0xE001 support

Thank you for your contribution! :folded_hands:

Best regards, Dylan

Thanks both Dylan and Attilla. But this goes right over my head. I will wait for just a update. I understand a little bit of node.js, but something is changed in the approach for homey. Installed docker desktop, but i’m completly lost in that program. I will just wait until it is implented in the universal tuya zigbee.

Just wanted to let you know that both 1 button BSEED wall switches is still seen as unknow zigbee devices with V5.5.915

HOBEIAN ZG-101ZL button still not working when pressing 1, 2 or long.

Update 5.5.915 diag: 093bfeb8-4a84-4f38-a63f-8f333d0d2949

Interview

“ids”: {
“modelId”: “ZG-101ZL”,
“manufacturerName”: “HOBEIAN”
},
“endpoints”: {
“ieeeAddress”: “a4:c1:38:25:a9:e0:3a:df”,
“networkAddress”: 46175,
“modelId”: “ZG-101ZL”,
“manufacturerName”: “HOBEIAN”,
“endpointDescriptors”: [
{
“status”: “SUCCESS”,
“nwkAddrOfInterest”: 46175,
“_reserved”: 36,
“endpointId”: 1,
“applicationProfileId”: 260,
“applicationDeviceId”: 0,
“applicationDeviceVersion”: 0,
“_reserved1”: 1,
“inputClusters”: [
0,
1,
3,
4,
6,
4096,
57345
],
“outputClusters”: [
25,
10,
3,
4,
6,
8,
4096
]
}
],
“deviceType”: “enddevice”,
“receiveWhenIdle”: false,
“swBuildId”: “0122052017”,
“capabilities”: {
“alternatePANCoordinator”: false,
“deviceType”: false,
“powerSourceMains”: false,
“receiveWhenIdle”: false,
“security”: false,
“allocateAddress”: true
},
“extendedEndpointDescriptors”: {
“1”: {
“clusters”: {
“basic”: {
“attributes”: [
{
“acl”: [
“readable”
],
“id”: 0,
“name”: “zclVersion”,
“value”: 3
},
{
“acl”: [
“readable”
],
“id”: 1,
“name”: “appVersion”,
“value”: 147
},
{
“acl”: [
“readable”
],
“id”: 2,
“name”: “stackVersion”,
“value”: 2
},
{
“acl”: [
“readable”
],
“id”: 3,
“name”: “hwVersion”,
“value”: 1
},
{
“acl”: [
“readable”,
“reportable”
],
“id”: 4,
“name”: “manufacturerName”,
“value”: “HOBEIAN”,
“reportingConfiguration”: {
“status”: “NOT_FOUND”,
“direction”: “reported”
}
},
{
“acl”: [
“readable”
],
“id”: 5,
“name”: “modelId”,
“value”: “ZG-101ZL”
},
{
“acl”: [
“readable”
],
“id”: 7,
“name”: “powerSource”,
“value”: “battery”
},
{
“acl”: [
“readable”,
“writable”
],
“id”: 18,
“name”: “deviceEnabled”,
“value”: true
},
{
“acl”: [
“readable”
],
“id”: 16384,
“name”: “swBuildId”,
“value”: “0122052017”
},
{
“acl”: [
“readable”
],
“id”: 65533,
“name”: “clusterRevision”,
“value”: 1
}
],
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
},
“powerConfiguration”: {
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
},
“identify”: {
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
},
“groups”: {
“attributes”: [
{
“acl”: [
“readable”,
“writable”
],
“id”: 0,
“name”: “nameSupport”,
“value”: {
“type”: “Buffer”,
“data”: [
0
]
}
},
{
“acl”: [
“writable”
],
“id”: 0,
“name”: “nameSupport”
},
{
“acl”: [
“writable”
],
“id”: 3
},
{
“acl”: [
“readable”
],
“id”: 65533,
“name”: “clusterRevision”,
“value”: 1
}
],
“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”: 0,
“maxInterval”: 170,
“status”: “SUCCESS”
}
},
{
“acl”: [
“readable”
],
“id”: 16384
},
{
“acl”: [
“readable”,
“writable”
],
“id”: 16385,
“name”: “onTime”,
“value”: 0
},
{
“acl”: [
“readable”,
“writable”
],
“id”: 16386,
“name”: “offWaitTime”,
“value”: 0
},
{
“acl”: [
“readable”,
“writable”
],
“id”: 16387
},
{
“acl”: [
“readable”,
“writable”
],
“id”: 32770
},
{
“acl”: [
“readable”,
“writable”
],
“id”: 20480
},
{
“acl”: [
“readable”
],
“id”: 65533,
“name”: “clusterRevision”,
“value”: 1
}
],
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
},
“touchlink”: {
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
}
},
“bindings”: {
“identify”: {
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
},
“groups”: {
“attributes”: [
{
“acl”: [
“readable”,
“writable”
],
“id”: 0,
“name”: “nameSupport”,
“value”: {
“type”: “Buffer”,
“data”: [
0
]
}
},
{
“acl”: [
“writable”
],
“id”: 0,
“name”: “nameSupport”
},
{
“acl”: [
“writable”
],
“id”: 3
},
{
“acl”: [
“readable”
],
“id”: 65533,
“name”: “clusterRevision”,
“value”: 1
}
],
“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”: 0,
“maxInterval”: 170,
“status”: “SUCCESS”
}
},
{
“acl”: [
“readable”
],
“id”: 16384
},
{
“acl”: [
“readable”,
“writable”
],
“id”: 16385,
“name”: “onTime”,
“value”: 0
},
{
“acl”: [
“readable”,
“writable”
],
“id”: 16386,
“name”: “offWaitTime”,
“value”: 0
},
{
“acl”: [
“readable”,
“writable”
],
“id”: 16387
},
{
“acl”: [
“readable”,
“writable”
],
“id”: 32770
},
{
“acl”: [
“readable”,
“writable”
],
“id”: 20480
},
{
“acl”: [
“readable”
],
“id”: 65533,
“name”: “clusterRevision”,
“value”: 1
}
],
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
},
“touchlink”: {
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
},
“ota”: {},
“time”: {
“attributes”: [],
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
},
“levelControl”: {
“attributes”: [],
“commandsGenerated”: “UNSUP_GENERAL_COMMAND”,
“commandsReceived”: “UNSUP_GENERAL_COMMAND”
}
}
}
}
}

I got it installed with NPM (Now installed your’s with V5.5.859 development) and i can say that both the BSEED 1 button wall switch is recognized. Perfect and thanks. Is it also possible to include backgroundlightmodus for the blue led? Sorry for asking much.

The others are still not known and seen as unknown zigbee devices. But you and Dylan are getting there.

If you want to see the interview of the other wall switches can be found here.

BSEED 2 button wallswitch zigbee with neutral _TZ3000_l9brjwau TS0003

BSEED 3 button wall switch zigbee with neutral _TZ3000_qkixdnon TS0003

Sorry, what is a background led mode?

It is difficult to explain. Maybe this screenshot could help you. But not important. :wink: You see it by configuration.

Ok, so it controls the led of the panel based on the state of the light.

Yess. I made it maybe to difficult to explain. :slight_smile:

Your words, not mine. I didn’t know they had that feature. Let me see what I can do with that. Seems good, because I have a few in the hallway where I’d like them on, but not in e.g the bedroom at night.

Exactly. I would prefer more if the led could switch to red and blue, like my old neo coolcam wall switches, so you could really see when on or off. Some of them don’t switch lights, but are more some kind of remotes.

Good job, by the way. Thank you.

The LED backlight functionality is already properly implemented in HybridSwitchBase.js with backlight_mode setting that uses DP15 with values: off=0, normal=1, inverted=2 (Z2M compatible). All switch drivers (1-4 gang) have this setting in their driver.compose.json files.

On the next version :slight_smile:

Ver.915. Watersensor installs but alarm still inactivated. Contact sensors still in reverse.

@dlnraja I see that you merged the last PR of the bseed panel with the “switch_1gang” driver. I completely understand keeping things unbranded (e.g Livolo and Aubess make similar panels). However, I’d like to propose a naming scheme based on electrical industry standards:

  • wall_switch_1gang_1way - Wall-mounted switches with physical buttons/LEDs
  • wall_dimmer_1gang_1way - Wall-mounted dimmers with physical controls
  • module_switch_1gang - Relay modules hidden in junction boxes

This is standard industry terminology, makes it clear to users what kind of device it is (e.g with categories to select and images) and it is more scalable in my opinion. More importantly though, we can also separate functionality:

  • Physical button support only for devices that have actual (touch) buttons
  • Led control only for devices that have visible leds
  • Wall devices have clear use-case (a module can be used for different use-cases than e.g a light)
  • No feature creep like the battery capability for devices that don’t have a battery

We can keep the current naming without “module” if it’s too much work for now, but I would be happy to put in a PR for the wall devices, since I added the last two anyway. This would give me the opportunity to look at led control as well.

2 Likes

Hi Dylan Good morning :sun_with_face:,

I’m @ version 915 now and readded my HOBEIAN Multisensor again finally no Distance anymore on the screen :+1:t2: but still no Battery, Temperature & Humidity data.

Diagnostic code: add1366d-9538-4f8c-9ba4-1252034e5ce4

Good luck with fixing it and have a nice day,
Best regards Peter.

gread idea, i will try to implement this standard on the the next version

yes you can do an new pr :slight_smile: feel free , it’s verry apreciate your support.

i have checked the sugestion but :

Naming: He suggests wall_switch_1gang_1way vs module_switch_1gang - but we already have a similar structure but i will improve the light / led /bacllight regonition

Thank you for the excellent feedback on industry naming standards and feature separation!

v5.5.929 implements your suggestions:

Feature Separation Done:

  1. module_mini_switch - Removed battery capability and all battery-related settings (relay modules don’t have batteries!)
  2. LED control - Added LED indicator settings + flow cards for:
    • Switches (1-4 gang): LED backlight mode via DP15
    • Smart plugs: LED indicator mode via DP26/27
    • Mini switch modules: LED indicator via DP17
  3. Power-on behavior - Added to plugs and modules

:crystal_ball: Naming Convention:

I appreciate the industry-standard naming suggestion:

  • wall_switch_1gang_1way - Wall-mounted with buttons/LEDs
  • module_switch_1gang - Hidden relay modules

This would require a larger refactor but I’m open to a PR if you’d like to contribute! The current switch_1gang vs module_mini_switch separation is a good start.

:clipboard: Flow Cards Added:

  • switch_Xgang_set_backlight - LED control for wall switches
  • plug_smart_set_indicator - LED control for plugs
  • plug_smart_set_power_on - Power-on behavior

Thanks again for the detailed feedback - it really helps improve the app!

Install latest: https://homey.app/a/com.dlnraja.tuya.zigbee/

published soon ( hopping this night )