Skip to content

Update tuya.ts#12499

Open
mrctorres wants to merge 3 commits into
Koenkk:masterfrom
mrctorres:patch-4
Open

Update tuya.ts#12499
mrctorres wants to merge 3 commits into
Koenkk:masterfrom
mrctorres:patch-4

Conversation

@mrctorres

Copy link
Copy Markdown

Add support for Nova Digital ZIG-04 W/B and ZIG-06 W/B switches

This PR adds support for two Nova Digital wall switch models that were previously unsupported:

  • Nova Digital ZIG-04 W/B (4-gang)
  • Nova Digital ZIG-06 W/B (6-gang)

Added fingerprints

4-gang model

Added fingerprint:

_TZE204_tayx2ud6

White label added:

Nova Digital ZIG-04 W/B

6-gang model

Added fingerprint:

_TZE204_tpnnym5s

White label added:

Nova Digital ZIG-06 W/B

Device investigation

The implementation was based on information obtained directly from the Tuya IoT Platform device model definitions.

Although both devices belong to the same TS0601 switch family, their firmware exposes different datapoints and capabilities.

ZIG-04 W/B (4-gang)

The Tuya device model exposes:

DP Function
1-4 switch_1 ... switch_4
7-10 countdown_1 ... countdown_4
14 relay_status
16 backlight_switch
19 switch_inching
209 cycle_timing
210 random_timing

Notably, this model does not expose a light_mode datapoint.

ZIG-06 W/B (6-gang)

The Tuya device model exposes:

DP Function
1-6 switch_1 ... switch_6
7-12 countdown_1 ... countdown_6
14 relay_status
15 light_mode
16 backlight_switch
19 switch_inching
106 child_lock
209 cycle_timing
210 random_timing

Added functionality

4-gang model

Added support for:

DP14 - relay_status

Mapped to:

power_on_behavior

Values:

off
on
memory

DP16 - backlight_switch

Mapped as a boolean entity:

backlight_switch

6-gang model

The existing definition already supported:

DP14 - relay_status

Mapped to:

power_on_behavior

DP15 - light_mode

Mapped to:

indicator_mode

Values:

none
relay
pos

This PR additionally adds support for:

DP16 - backlight_switch

Mapped as a boolean entity:

backlight_switch

Notes

During testing it was verified that:

  • The 4-gang model does not implement light_mode.
  • The 6-gang model implements both light_mode and backlight_switch.
  • The two devices therefore cannot share exactly the same DP mapping despite belonging to the same TS0601 family.
  • The mappings included in this PR match the Tuya cloud device definitions and were validated against the actual devices.

No existing fingerprints or datapoint mappings were modified; this PR only extends support for additional Nova Digital variants and exposes functionality already implemented by the device firmware.

Link to picture pull request: TODO

mrctorres and others added 2 commits June 21, 2026 21:13
## Add support for Nova Digital ZIG-04 W/B and ZIG-06 W/B switches

This PR adds support for two Nova Digital wall switch models that were previously unsupported:

* Nova Digital ZIG-04 W/B (4-gang)
* Nova Digital ZIG-06 W/B (6-gang)

### Added fingerprints

#### 4-gang model

Added fingerprint:

```text
_TZE204_tayx2ud6
```

White label added:

```text
Nova Digital ZIG-04 W/B
```

#### 6-gang model

Added fingerprint:

```text
_TZE204_tpnnym5s
```

White label added:

```text
Nova Digital ZIG-06 W/B
```

---

## Device investigation

The implementation was based on information obtained directly from the Tuya IoT Platform device model definitions.

Although both devices belong to the same TS0601 switch family, their firmware exposes different datapoints and capabilities.

### ZIG-04 W/B (4-gang)

The Tuya device model exposes:

| DP   | Function                    |
| ---- | --------------------------- |
| 1-4  | switch_1 ... switch_4       |
| 7-10 | countdown_1 ... countdown_4 |
| 14   | relay_status                |
| 16   | backlight_switch            |
| 19   | switch_inching              |
| 209  | cycle_timing                |
| 210  | random_timing               |

Notably, this model does **not** expose a `light_mode` datapoint.

### ZIG-06 W/B (6-gang)

The Tuya device model exposes:

| DP   | Function                    |
| ---- | --------------------------- |
| 1-6  | switch_1 ... switch_6       |
| 7-12 | countdown_1 ... countdown_6 |
| 14   | relay_status                |
| 15   | light_mode                  |
| 16   | backlight_switch            |
| 19   | switch_inching              |
| 106  | child_lock                  |
| 209  | cycle_timing                |
| 210  | random_timing               |

---

## Added functionality

### 4-gang model

Added support for:

#### DP14 - relay_status

Mapped to:

```text
power_on_behavior
```

Values:

```text
off
on
memory
```

#### DP16 - backlight_switch

Mapped as a boolean entity:

```text
backlight_switch
```

---

### 6-gang model

The existing definition already supported:

#### DP14 - relay_status

Mapped to:

```text
power_on_behavior
```

#### DP15 - light_mode

Mapped to:

```text
indicator_mode
```

Values:

```text
none
relay
pos
```

This PR additionally adds support for:

#### DP16 - backlight_switch

Mapped as a boolean entity:

```text
backlight_switch
```

---

## Notes

During testing it was verified that:

* The 4-gang model does not implement `light_mode`.
* The 6-gang model implements both `light_mode` and `backlight_switch`.
* The two devices therefore cannot share exactly the same DP mapping despite belonging to the same TS0601 family.
* The mappings included in this PR match the Tuya cloud device definitions and were validated against the actual devices.

No existing fingerprints or datapoint mappings were modified; this PR only extends support for additional Nova Digital variants and exposes functionality already implemented by the device firmware.
@mrctorres

Copy link
Copy Markdown
Author

Additional device information:

Product page: https://www.novadigitalsmart.com.br/produtos/interruptor-inteligente-4x4-zigbee-zig

Device photo attached.
ZIG-04 W

@andrei-lazarov

Copy link
Copy Markdown
Contributor

Please re-do the PR from the latest version of master. You reverted some previous changes

Comment thread src/devices/tuya.ts
},
transitionSeconds * 1000 + 100,
).unref();
);

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should stay as is.

Comment thread src/devices/tuya.ts
const payload = [...be4(utcTime), ...be4(localTime)];
await ep.command("manuSpecificTuya", "mcuSyncTime", {payloadSize: 8, payload}, {disableDefaultResponse: true});
await utils.sleep(500);
await new Promise((r) => setTimeout(r, 500));

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was this changed?

Comment thread src/devices/tuya.ts
},
},
{
fingerprint: tuya.fingerprint("TS0601", ["_TZE200_jwsjbxjs", "_TZE200_leaqthqq"]),

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Support for both these devices are now removed, is that intentional?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants