From e18257403ea865c15d83ec6b8b5b59f36b769d9f Mon Sep 17 00:00:00 2001 From: Bartosz Malkowski Date: Tue, 6 Jan 2026 17:22:55 +0100 Subject: [PATCH 1/2] Add support for _TZE200_t1blo2bj / TS0601 Siren --- README.md | 1 + app.json | 5 +++-- drivers/siren/driver.compose.json | 5 +++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d0418a47cd..6e010e45e8 100644 --- a/README.md +++ b/README.md @@ -813,6 +813,7 @@ Supported devices: - Siren _TZE200_d0yu2xgi / TS0601 _TZE204_t1blo2bj / TS0601 + _TZE200_t1blo2bj / TS0601 - Finger Bot _TZ3210_j4pdtz9v / TS0001 (MOES) diff --git a/app.json b/app.json index 8581cd84ac..5aaf91d4f1 100644 --- a/app.json +++ b/app.json @@ -6572,7 +6572,8 @@ }, "zigbee": { "manufacturerName": [ - "_TZE204_t1blo2bj" + "_TZE204_t1blo2bj", + "_TZE200_t1blo2bj" ], "productId": [ "TS0601" @@ -13950,4 +13951,4 @@ "setable": true } } -} \ No newline at end of file +} diff --git a/drivers/siren/driver.compose.json b/drivers/siren/driver.compose.json index f3fbded094..1fd4eab450 100644 --- a/drivers/siren/driver.compose.json +++ b/drivers/siren/driver.compose.json @@ -28,7 +28,8 @@ }, "zigbee": { "manufacturerName": [ - "_TZE204_t1blo2bj" + "_TZE204_t1blo2bj", + "_TZE200_t1blo2bj" ], "productId": [ "TS0601" @@ -58,4 +59,4 @@ } } } -} \ No newline at end of file +} From c495e03188547ca334f2b6850524a02a821ee8ee Mon Sep 17 00:00:00 2001 From: Bartosz Malkowski Date: Fri, 9 Jan 2026 11:24:20 +0100 Subject: [PATCH 2/2] Fix volume setting --- app.json | 6 +++--- drivers/siren/device.js | 28 +++++++++++++------------- drivers/siren/driver.flow.compose.json | 8 ++++---- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/app.json b/app.json index 5aaf91d4f1..15954da51d 100644 --- a/app.json +++ b/app.json @@ -1415,7 +1415,7 @@ "type": "dropdown", "values": [ { - "id": "2", + "id": "0", "label": { "en": "Low", "nl": "Laag", @@ -1435,7 +1435,7 @@ } }, { - "id": "0", + "id": "2", "label": { "en": "High (default)", "nl": "Hoog (standaard)", @@ -13951,4 +13951,4 @@ "setable": true } } -} +} \ No newline at end of file diff --git a/drivers/siren/device.js b/drivers/siren/device.js index 3cdce001bc..54bcaad38c 100644 --- a/drivers/siren/device.js +++ b/drivers/siren/device.js @@ -110,32 +110,32 @@ class siren extends TuyaSpecificClusterDevice { } return true; }); - + const actionSirenVolume = this.homey.flow.getActionCard('siren_volume_setting'); actionSirenVolume.registerRunListener(async (args, state) => { - this.log('FlowCardAction Set Alarm volume to: ', args.siren_volume_setting); - args.device.sendAlarmVolume(args.siren_volume_setting); + this.log('FlowCardAction Set Alarm volume to: ', args.siren_volume); + args.device.sendAlarmVolume(args.siren_volume); }); - + const actionAlarmDuration = this.homey.flow.getActionCard('siren_alarm_duration'); actionAlarmDuration.registerRunListener(async (args, state) => { this.log('FlowCardAction Set Alarm Duration to: ', args.duration); args.device.sendAlarmDuration(args.duration); }); - + const actionAlarmTune = this.homey.flow.getActionCard('siren_alarm_tune'); actionAlarmTune.registerRunListener(async (args, state) => { this.log('FlowCardAction Set Alarm Tune to: ', args.siren_alarm_tune); args.device.sendAlarmTune(args.siren_alarm_tune); }); } - + async processResponse(data) { this.log('########### Response: ', data); const parsedValue = getDataValue(data); this.log('Parsed value ', parsedValue); } - + async processReporting(data) { this.log('########### Reporting: ', data); const parsedValue = getDataValue(data); @@ -171,17 +171,17 @@ class siren extends TuyaSpecificClusterDevice { this.log('DP ', data.dp, ' not handled!'); } } - + async processDatapoint(data) { this.log('########### Datapoint: ', data); const parsedValue = getDataValue(data); this.log('Parsed value ', parsedValue); } - + onDeleted() { this.log('ZigbeeSiren removed'); } - + async onSettings({ oldSettings, newSettings, changedKeys }) { changedKeys.forEach((updatedSetting) => { this.log('########### Updated setting: ', updatedSetting, ' => ', newSettings[updatedSetting]); @@ -201,24 +201,24 @@ class siren extends TuyaSpecificClusterDevice { } }); } - + sendAlarmVolume(volume) { // (05) volume [ENUM] 0:high 1:mid 2:low const volumeName = volumeMapping.get(Number(volume)); this.log('Sending alarm volume: ', volumeName, ' (', volume, ')'); this.writeEnum(dataPoints.TUYA_DP_VOLUME, volume); } - + sendAlarmDuration(duration) { this.log('Sending alarm duration: ', duration, 's'); this.writeData32(dataPoints.TUYA_DP_DURATION, duration); } - + sendAlarmTune(tune) { const tuneNr = Number(tune); this.log('Sending alarm tune: ', melodiesMapping.get(tuneNr), ' (', tuneNr, ')'); this.writeEnum(dataPoints.TUYA_DP_MELODY, tuneNr); } - + } module.exports = siren; diff --git a/drivers/siren/driver.flow.compose.json b/drivers/siren/driver.flow.compose.json index 14bcbc0d21..89eceda05c 100644 --- a/drivers/siren/driver.flow.compose.json +++ b/drivers/siren/driver.flow.compose.json @@ -151,13 +151,13 @@ "type": "dropdown", "values": [ { - "id": "2", + "id": "0", "label": { "en": "Low", "nl": "Laag", "de": "Niedrig", "sv": "Låg", - "it": "Basso" + "it": "Basso" } }, { @@ -171,7 +171,7 @@ } }, { - "id": "0", + "id": "2", "label": { "en": "High (default)", "nl": "Hoog (standaard)", @@ -397,4 +397,4 @@ ] } ] -} \ No newline at end of file +}