From 1e3c5fa83306c25ea667c6fbc7ebbe6e62365e36 Mon Sep 17 00:00:00 2001 From: alanmgomes <42685254+alanmgomes@users.noreply.github.com> Date: Sat, 3 Jan 2026 14:23:39 -0300 Subject: [PATCH 1/6] Added Support for ZVL-PRO - Nova Digital Just adding support to a new water valve made by Tuya and white label Nova Digital --- src/devices/tuya.ts | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/devices/tuya.ts b/src/devices/tuya.ts index 1288ea0405c6c..3d76bcf1c8731 100644 --- a/src/devices/tuya.ts +++ b/src/devices/tuya.ts @@ -22952,4 +22952,38 @@ Ensure all 12 segments are defined and separated by spaces.`, ], }, }, + { + fingerprint: [ + { + modelID: 'TS0601', + manufacturerName: '_TZE200_fphxkxue' + } + ], + model: 'ZVL-PRO', + vendor: 'Nova Digital', + description: 'Water Valve (Advanced Map)', + fromZigbee: [tuya.fz.datapoints], + toZigbee: [tuya.tz.datapoints], + onEvent: tuya.onEventSetLocalTime, + configure: tuya.configureMagicPacket, + exposes: [ + e.switch().setAccess('state', ea.STATE_SET), + e.battery(), + e.numeric('countdown', ea.STATE_SET).withUnit('s').withValueMin(0).withValueMax(86400) + .withDescription('Tempo de contagem regressiva em segundos'), + e.enum('work_state', ea.STATE, ['auto', 'manual', 'idle']) + .withDescription('Estado atual de opera o'), + e.numeric('water_once', ea.STATE).withUnit('L').withDescription('Consumo da ltima rega'), + ], + meta: { + tuyaDatapoints: [ + [1, 'state', tuya.valueConverter.onOff], + [7, 'battery', tuya.valueConverter.raw], + [11, 'countdown', tuya.valueConverter.raw], + [12, 'work_state', tuya.valueConverter.raw], + [5, 'water_once', tuya.valueConverter.raw], + [4, 'fault', tuya.valueConverter.raw], + ], + }, +}; ]; From 798cf9978756cac6060d91e406e17fe66029dc89 Mon Sep 17 00:00:00 2001 From: alanmgomes <42685254+alanmgomes@users.noreply.github.com> Date: Sat, 3 Jan 2026 14:26:26 -0300 Subject: [PATCH 2/6] Removing the _TZE200_fphxkxue from moes.ts, its a old pull request --- src/devices/moes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devices/moes.ts b/src/devices/moes.ts index b86487f1b652d..7d388764beb4a 100644 --- a/src/devices/moes.ts +++ b/src/devices/moes.ts @@ -1262,7 +1262,7 @@ export const definitions: DefinitionWithExtend[] = [ whiteLabel: [tuya.whitelabel("Tuya", "iH-F8260", "Universal smart IR remote control", ["_TZ3290_gnl5a6a5xvql7c2a", "_TZ3290_785fbxik"])], }, { - fingerprint: tuya.fingerprint("TS0049", ["_TZ3000_cjfmu5he", "_TZ3000_mq4wujmp", "_TZ3000_5af5r192", "_TZE200_fphxkxue"]), + fingerprint: tuya.fingerprint("TS0049", ["_TZ3000_cjfmu5he", "_TZ3000_mq4wujmp", "_TZ3000_5af5r192"]), model: "ZWV-YC", vendor: "Moes", description: "Water valve", From 4eaca2cc26d9953b0286a5e221dc9936270c0cc1 Mon Sep 17 00:00:00 2001 From: alanmgomes <42685254+alanmgomes@users.noreply.github.com> Date: Sat, 3 Jan 2026 14:52:16 -0300 Subject: [PATCH 3/6] Update tuya.ts --- src/devices/tuya.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devices/tuya.ts b/src/devices/tuya.ts index 3d76bcf1c8731..faaee4ab0ea61 100644 --- a/src/devices/tuya.ts +++ b/src/devices/tuya.ts @@ -22985,5 +22985,5 @@ Ensure all 12 segments are defined and separated by spaces.`, [4, 'fault', tuya.valueConverter.raw], ], }, -}; +}, ]; From 1ab38a7bb8b0b41353e294fcf349aa7939202a82 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Sat, 3 Jan 2026 17:52:51 +0000 Subject: [PATCH 4/6] [autofix.ci] apply automated fixes --- src/devices/tuya.ts | 69 +++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/src/devices/tuya.ts b/src/devices/tuya.ts index faaee4ab0ea61..fec7ecb2fdc7c 100644 --- a/src/devices/tuya.ts +++ b/src/devices/tuya.ts @@ -22953,37 +22953,40 @@ Ensure all 12 segments are defined and separated by spaces.`, }, }, { - fingerprint: [ - { - modelID: 'TS0601', - manufacturerName: '_TZE200_fphxkxue' - } - ], - model: 'ZVL-PRO', - vendor: 'Nova Digital', - description: 'Water Valve (Advanced Map)', - fromZigbee: [tuya.fz.datapoints], - toZigbee: [tuya.tz.datapoints], - onEvent: tuya.onEventSetLocalTime, - configure: tuya.configureMagicPacket, - exposes: [ - e.switch().setAccess('state', ea.STATE_SET), - e.battery(), - e.numeric('countdown', ea.STATE_SET).withUnit('s').withValueMin(0).withValueMax(86400) - .withDescription('Tempo de contagem regressiva em segundos'), - e.enum('work_state', ea.STATE, ['auto', 'manual', 'idle']) - .withDescription('Estado atual de opera o'), - e.numeric('water_once', ea.STATE).withUnit('L').withDescription('Consumo da ltima rega'), - ], - meta: { - tuyaDatapoints: [ - [1, 'state', tuya.valueConverter.onOff], - [7, 'battery', tuya.valueConverter.raw], - [11, 'countdown', tuya.valueConverter.raw], - [12, 'work_state', tuya.valueConverter.raw], - [5, 'water_once', tuya.valueConverter.raw], - [4, 'fault', tuya.valueConverter.raw], - ], - }, -}, + fingerprint: [ + { + modelID: "TS0601", + manufacturerName: "_TZE200_fphxkxue", + }, + ], + model: "ZVL-PRO", + vendor: "Nova Digital", + description: "Water Valve (Advanced Map)", + fromZigbee: [tuya.fz.datapoints], + toZigbee: [tuya.tz.datapoints], + onEvent: tuya.onEventSetLocalTime, + configure: tuya.configureMagicPacket, + exposes: [ + e.switch().setAccess("state", ea.STATE_SET), + e.battery(), + e + .numeric("countdown", ea.STATE_SET) + .withUnit("s") + .withValueMin(0) + .withValueMax(86400) + .withDescription("Tempo de contagem regressiva em segundos"), + e.enum("work_state", ea.STATE, ["auto", "manual", "idle"]).withDescription("Estado atual de opera o"), + e.numeric("water_once", ea.STATE).withUnit("L").withDescription("Consumo da ltima rega"), + ], + meta: { + tuyaDatapoints: [ + [1, "state", tuya.valueConverter.onOff], + [7, "battery", tuya.valueConverter.raw], + [11, "countdown", tuya.valueConverter.raw], + [12, "work_state", tuya.valueConverter.raw], + [5, "water_once", tuya.valueConverter.raw], + [4, "fault", tuya.valueConverter.raw], + ], + }, + }, ]; From e1168f1dcddacc0a0fc36cdfb0fe8df991af40ad Mon Sep 17 00:00:00 2001 From: alanmgomes <42685254+alanmgomes@users.noreply.github.com> Date: Sun, 11 Jan 2026 10:06:34 -0300 Subject: [PATCH 5/6] Update tuya.ts updated texts to english --- src/devices/tuya.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/devices/tuya.ts b/src/devices/tuya.ts index fec7ecb2fdc7c..5000828fb3fed 100644 --- a/src/devices/tuya.ts +++ b/src/devices/tuya.ts @@ -22974,9 +22974,9 @@ Ensure all 12 segments are defined and separated by spaces.`, .withUnit("s") .withValueMin(0) .withValueMax(86400) - .withDescription("Tempo de contagem regressiva em segundos"), - e.enum("work_state", ea.STATE, ["auto", "manual", "idle"]).withDescription("Estado atual de opera o"), - e.numeric("water_once", ea.STATE).withUnit("L").withDescription("Consumo da ltima rega"), + .withDescription("Countdown time in seconds"), + e.enum("work_state", ea.STATE, ["auto", "manual", "idle"]).withDescription("Current state of operation"), + e.numeric("water_once", ea.STATE).withUnit("L").withDescription("Consumption from the last watering"), ], meta: { tuyaDatapoints: [ From 64acab9b2fd8397fe5c18e2c89086ade45fed513 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Sun, 11 Jan 2026 20:33:36 +0100 Subject: [PATCH 6/6] u --- src/devices/tuya.ts | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/devices/tuya.ts b/src/devices/tuya.ts index 5000828fb3fed..ed76105b5e1bf 100644 --- a/src/devices/tuya.ts +++ b/src/devices/tuya.ts @@ -22953,28 +22953,15 @@ Ensure all 12 segments are defined and separated by spaces.`, }, }, { - fingerprint: [ - { - modelID: "TS0601", - manufacturerName: "_TZE200_fphxkxue", - }, - ], + fingerprint: tuya.fingerprint("TS0601", ["_TZE200_fphxkxue"]), model: "ZVL-PRO", vendor: "Nova Digital", - description: "Water Valve (Advanced Map)", - fromZigbee: [tuya.fz.datapoints], - toZigbee: [tuya.tz.datapoints], - onEvent: tuya.onEventSetLocalTime, - configure: tuya.configureMagicPacket, + description: "Water walve", + extend: [tuya.modernExtend.tuyaBase({dp: true})], exposes: [ e.switch().setAccess("state", ea.STATE_SET), e.battery(), - e - .numeric("countdown", ea.STATE_SET) - .withUnit("s") - .withValueMin(0) - .withValueMax(86400) - .withDescription("Countdown time in seconds"), + e.numeric("countdown", ea.STATE_SET).withUnit("s").withValueMin(0).withValueMax(86400).withDescription("Countdown time in seconds"), e.enum("work_state", ea.STATE, ["auto", "manual", "idle"]).withDescription("Current state of operation"), e.numeric("water_once", ea.STATE).withUnit("L").withDescription("Consumption from the last watering"), ],