zigbee-herdsman-converters 25.37.2 → 25.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +40 -0
- package/dist/converters/fromZigbee.d.ts +0 -5
- package/dist/converters/fromZigbee.d.ts.map +1 -1
- package/dist/converters/fromZigbee.js +2 -28
- package/dist/converters/fromZigbee.js.map +1 -1
- package/dist/devices/adeo.d.ts.map +1 -1
- package/dist/devices/adeo.js +0 -1
- package/dist/devices/adeo.js.map +1 -1
- package/dist/devices/airam.js +2 -2
- package/dist/devices/airam.js.map +1 -1
- package/dist/devices/alecto.d.ts.map +1 -1
- package/dist/devices/alecto.js +1 -2
- package/dist/devices/alecto.js.map +1 -1
- package/dist/devices/bticino.js +1 -1
- package/dist/devices/bticino.js.map +1 -1
- package/dist/devices/busch_jaeger.d.ts.map +1 -1
- package/dist/devices/busch_jaeger.js +1 -10
- package/dist/devices/busch_jaeger.js.map +1 -1
- package/dist/devices/candeo.d.ts.map +1 -1
- package/dist/devices/candeo.js +8 -9
- package/dist/devices/candeo.js.map +1 -1
- package/dist/devices/centralite.js +2 -2
- package/dist/devices/centralite.js.map +1 -1
- package/dist/devices/climax.js +1 -1
- package/dist/devices/climax.js.map +1 -1
- package/dist/devices/custom_devices_diy.d.ts.map +1 -1
- package/dist/devices/custom_devices_diy.js +6 -7
- package/dist/devices/custom_devices_diy.js.map +1 -1
- package/dist/devices/develco.js +2 -2
- package/dist/devices/develco.js.map +1 -1
- package/dist/devices/diyruz.js +1 -1
- package/dist/devices/diyruz.js.map +1 -1
- package/dist/devices/evology.js +1 -1
- package/dist/devices/evology.js.map +1 -1
- package/dist/devices/fantem.js +1 -1
- package/dist/devices/fantem.js.map +1 -1
- package/dist/devices/ge.js +1 -1
- package/dist/devices/ge.js.map +1 -1
- package/dist/devices/gewiss.js +1 -1
- package/dist/devices/gewiss.js.map +1 -1
- package/dist/devices/heiman.js +6 -6
- package/dist/devices/heiman.js.map +1 -1
- package/dist/devices/hive.d.ts.map +1 -1
- package/dist/devices/hive.js +1 -8
- package/dist/devices/hive.js.map +1 -1
- package/dist/devices/honyar.js +1 -1
- package/dist/devices/honyar.js.map +1 -1
- package/dist/devices/immax.js +2 -2
- package/dist/devices/immax.js.map +1 -1
- package/dist/devices/index.d.ts.map +1 -1
- package/dist/devices/index.js +5 -1
- package/dist/devices/index.js.map +1 -1
- package/dist/devices/inovelli.js +1 -1
- package/dist/devices/inovelli.js.map +1 -1
- package/dist/devices/iotperfect.d.ts.map +1 -1
- package/dist/devices/iotperfect.js +2 -3
- package/dist/devices/iotperfect.js.map +1 -1
- package/dist/devices/iris.js +1 -1
- package/dist/devices/iris.js.map +1 -1
- package/dist/devices/javis.js +1 -1
- package/dist/devices/javis.js.map +1 -1
- package/dist/devices/legrand.d.ts.map +1 -1
- package/dist/devices/legrand.js +10 -41
- package/dist/devices/legrand.js.map +1 -1
- package/dist/devices/lellki.js +1 -1
- package/dist/devices/lellki.js.map +1 -1
- package/dist/devices/lidl.js +2 -2
- package/dist/devices/lidl.js.map +1 -1
- package/dist/devices/lonsonho.js +3 -3
- package/dist/devices/lonsonho.js.map +1 -1
- package/dist/devices/lumi.d.ts.map +1 -1
- package/dist/devices/lumi.js +4 -16
- package/dist/devices/lumi.js.map +1 -1
- package/dist/devices/mercator.js +2 -2
- package/dist/devices/mercator.js.map +1 -1
- package/dist/devices/moes.js +6 -6
- package/dist/devices/moes.js.map +1 -1
- package/dist/devices/namron.d.ts.map +1 -1
- package/dist/devices/namron.js +1 -9
- package/dist/devices/namron.js.map +1 -1
- package/dist/devices/neo.js +2 -2
- package/dist/devices/neo.js.map +1 -1
- package/dist/devices/novo.d.ts.map +1 -1
- package/dist/devices/novo.js +1 -2
- package/dist/devices/novo.js.map +1 -1
- package/dist/devices/nyce.d.ts.map +1 -1
- package/dist/devices/nyce.js +0 -6
- package/dist/devices/nyce.js.map +1 -1
- package/dist/devices/orvibo.js +2 -2
- package/dist/devices/orvibo.js.map +1 -1
- package/dist/devices/osram.js +1 -1
- package/dist/devices/osram.js.map +1 -1
- package/dist/devices/owon.js +2 -2
- package/dist/devices/owon.js.map +1 -1
- package/dist/devices/perenio.js +2 -2
- package/dist/devices/perenio.js.map +1 -1
- package/dist/devices/philips.d.ts.map +1 -1
- package/dist/devices/philips.js +33 -5
- package/dist/devices/philips.js.map +1 -1
- package/dist/devices/qa.js +2 -2
- package/dist/devices/qa.js.map +1 -1
- package/dist/devices/qoto.js +1 -1
- package/dist/devices/qoto.js.map +1 -1
- package/dist/devices/robb.js +2 -2
- package/dist/devices/robb.js.map +1 -1
- package/dist/devices/rtx.js +1 -1
- package/dist/devices/rtx.js.map +1 -1
- package/dist/devices/saswell.js +1 -1
- package/dist/devices/saswell.js.map +1 -1
- package/dist/devices/schneider_electric.d.ts.map +1 -1
- package/dist/devices/schneider_electric.js +3 -27
- package/dist/devices/schneider_electric.js.map +1 -1
- package/dist/devices/siglis.d.ts.map +1 -1
- package/dist/devices/siglis.js +1 -10
- package/dist/devices/siglis.js.map +1 -1
- package/dist/devices/siterwell.d.ts.map +1 -1
- package/dist/devices/siterwell.js +1 -2
- package/dist/devices/siterwell.js.map +1 -1
- package/dist/devices/slacky_diy.d.ts.map +1 -1
- package/dist/devices/slacky_diy.js +0 -1
- package/dist/devices/slacky_diy.js.map +1 -1
- package/dist/devices/sohan_electric.d.ts.map +1 -1
- package/dist/devices/sohan_electric.js +1 -2
- package/dist/devices/sohan_electric.js.map +1 -1
- package/dist/devices/somgoms.d.ts.map +1 -1
- package/dist/devices/somgoms.js +4 -5
- package/dist/devices/somgoms.js.map +1 -1
- package/dist/devices/sonoff.d.ts.map +1 -1
- package/dist/devices/sonoff.js +10 -1
- package/dist/devices/sonoff.js.map +1 -1
- package/dist/devices/sunricher.js +1 -1
- package/dist/devices/sunricher.js.map +1 -1
- package/dist/devices/terncy.js +1 -1
- package/dist/devices/terncy.js.map +1 -1
- package/dist/devices/tnce.d.ts +3 -0
- package/dist/devices/tnce.d.ts.map +1 -0
- package/dist/devices/tnce.js +54 -0
- package/dist/devices/tnce.js.map +1 -0
- package/dist/devices/trust.js +3 -3
- package/dist/devices/trust.js.map +1 -1
- package/dist/devices/tuya.d.ts.map +1 -1
- package/dist/devices/tuya.js +257 -97
- package/dist/devices/tuya.js.map +1 -1
- package/dist/devices/vesternet.js +8 -8
- package/dist/devices/vesternet.js.map +1 -1
- package/dist/devices/vimar.js +1 -1
- package/dist/devices/vimar.js.map +1 -1
- package/dist/devices/visonic.js +2 -2
- package/dist/devices/visonic.js.map +1 -1
- package/dist/devices/vsmart.d.ts +3 -0
- package/dist/devices/vsmart.d.ts.map +1 -0
- package/dist/devices/vsmart.js +442 -0
- package/dist/devices/vsmart.js.map +1 -0
- package/dist/devices/weten.d.ts.map +1 -1
- package/dist/devices/weten.js +1 -2
- package/dist/devices/weten.js.map +1 -1
- package/dist/devices/woox.js +2 -2
- package/dist/devices/woox.js.map +1 -1
- package/dist/devices/xyzroe.d.ts.map +1 -1
- package/dist/devices/xyzroe.js +1 -10
- package/dist/devices/xyzroe.js.map +1 -1
- package/dist/devices/zemismart.js +4 -4
- package/dist/devices/zemismart.js.map +1 -1
- package/dist/lib/modernExtend.d.ts +2 -0
- package/dist/lib/modernExtend.d.ts.map +1 -1
- package/dist/lib/modernExtend.js +18 -2
- package/dist/lib/modernExtend.js.map +1 -1
- package/dist/lib/tuya.js +1 -1
- package/dist/lib/tuya.js.map +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/models-index.json +1 -1
- package/package.json +1 -1
package/dist/devices/tuya.js
CHANGED
|
@@ -273,9 +273,8 @@ const convLocal = {
|
|
|
273
273
|
from: (v, meta, options) => {
|
|
274
274
|
const invertedEnergyFlowKey = `invert_energy_flow_${channel}`;
|
|
275
275
|
const result_key = options[invertedEnergyFlowKey] ? `energy_produced_${channel}` : `energy_${channel}`;
|
|
276
|
-
const energy_sign = options[invertedEnergyFlowKey] ? -1 : 1;
|
|
277
276
|
const result = {};
|
|
278
|
-
result[result_key] =
|
|
277
|
+
result[result_key] = v / 100;
|
|
279
278
|
return result;
|
|
280
279
|
},
|
|
281
280
|
};
|
|
@@ -285,9 +284,8 @@ const convLocal = {
|
|
|
285
284
|
from: (v, meta, options) => {
|
|
286
285
|
const invertedEnergyFlowKey = `invert_energy_flow_${channel}`;
|
|
287
286
|
const result_key = options[invertedEnergyFlowKey] ? `energy_${channel}` : `energy_produced_${channel}`;
|
|
288
|
-
const energy_sign = options[invertedEnergyFlowKey] ? 1 : -1;
|
|
289
287
|
const result = {};
|
|
290
|
-
result[result_key] =
|
|
288
|
+
result[result_key] = v / 100;
|
|
291
289
|
return result;
|
|
292
290
|
},
|
|
293
291
|
};
|
|
@@ -362,6 +360,17 @@ const convLocal = {
|
|
|
362
360
|
},
|
|
363
361
|
};
|
|
364
362
|
const tzLocal = {
|
|
363
|
+
ts0049_countdown: {
|
|
364
|
+
key: ["water_countdown"],
|
|
365
|
+
convertSet: async (entity, key, value, meta) => {
|
|
366
|
+
utils.assertNumber(value);
|
|
367
|
+
const data = Buffer.alloc(5);
|
|
368
|
+
const scaledValue = value * 60; //
|
|
369
|
+
data.writeUInt32BE(scaledValue, 1); //
|
|
370
|
+
data[0] = 0x0b; //
|
|
371
|
+
await entity.command("manuSpecificTuyaE001", "setCountdown", { data });
|
|
372
|
+
},
|
|
373
|
+
},
|
|
365
374
|
ts110eCountdown: {
|
|
366
375
|
key: ["countdown"],
|
|
367
376
|
convertSet: async (entity, key, value, meta) => {
|
|
@@ -928,6 +937,21 @@ const fzLocal = {
|
|
|
928
937
|
return result;
|
|
929
938
|
},
|
|
930
939
|
},
|
|
940
|
+
ts0049_countdown: {
|
|
941
|
+
cluster: "manuSpecificTuyaE001",
|
|
942
|
+
type: "raw",
|
|
943
|
+
convert: (model, msg, publish, options, meta) => {
|
|
944
|
+
const len = msg.data.length;
|
|
945
|
+
const command = msg.data[2];
|
|
946
|
+
if (len > 10 && command === 0x0a && msg.data[7] === 0x0b && (msg.data[6] === 0x05 || msg.data[6] === 0x06)) {
|
|
947
|
+
const data = msg.data.slice(8);
|
|
948
|
+
const value = data.readUInt32BE(0);
|
|
949
|
+
return {
|
|
950
|
+
countdown: value / 60,
|
|
951
|
+
};
|
|
952
|
+
}
|
|
953
|
+
},
|
|
954
|
+
},
|
|
931
955
|
};
|
|
932
956
|
exports.definitions = [
|
|
933
957
|
{
|
|
@@ -936,7 +960,7 @@ exports.definitions = [
|
|
|
936
960
|
vendor: "Tuya",
|
|
937
961
|
description: "Gas sensor",
|
|
938
962
|
whiteLabel: [{ vendor: "Tesla Smart", model: "TSL-SEN-GAS" }],
|
|
939
|
-
fromZigbee: [fz.ias_gas_alarm_1
|
|
963
|
+
fromZigbee: [fz.ias_gas_alarm_1],
|
|
940
964
|
toZigbee: [],
|
|
941
965
|
exposes: [e.gas(), e.tamper()],
|
|
942
966
|
},
|
|
@@ -1062,7 +1086,7 @@ exports.definitions = [
|
|
|
1062
1086
|
model: "TS0203",
|
|
1063
1087
|
vendor: "Tuya",
|
|
1064
1088
|
description: "Door/window sensor",
|
|
1065
|
-
fromZigbee: [fz.ias_contact_alarm_1, fz.battery, fz.
|
|
1089
|
+
fromZigbee: [fz.ias_contact_alarm_1, fz.battery, fz.ias_contact_alarm_1_report],
|
|
1066
1090
|
toZigbee: [],
|
|
1067
1091
|
whiteLabel: [
|
|
1068
1092
|
{ vendor: "CR Smart Home", model: "TS0203" },
|
|
@@ -1260,7 +1284,7 @@ exports.definitions = [
|
|
|
1260
1284
|
model: "TS0203_1",
|
|
1261
1285
|
vendor: "Tuya",
|
|
1262
1286
|
description: "Door sensor with scene switch",
|
|
1263
|
-
fromZigbee: [fz.ias_contact_alarm_1, fz.battery, fz.
|
|
1287
|
+
fromZigbee: [fz.ias_contact_alarm_1, fz.battery, fz.ias_contact_alarm_1_report],
|
|
1264
1288
|
extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
|
|
1265
1289
|
exposes: [e.action(["single", "double", "hold"]), e.contact(), e.battery_low(), e.tamper(), e.battery(), e.battery_voltage()],
|
|
1266
1290
|
meta: {
|
|
@@ -2026,7 +2050,7 @@ exports.definitions = [
|
|
|
2026
2050
|
tuya.whitelabel("Tuya", "TS0505B_2_2", "Zigbee GU10/E14 5W smart bulb", ["_TZ3210_it1u8ahz"]),
|
|
2027
2051
|
],
|
|
2028
2052
|
toZigbee: [tz.on_off, tzLocal.led_control, tuya.tz.do_not_disturb],
|
|
2029
|
-
fromZigbee: [fz.on_off, fz.tuya_led_controller, fz.brightness
|
|
2053
|
+
fromZigbee: [fz.on_off, fz.tuya_led_controller, fz.brightness],
|
|
2030
2054
|
exposes: [e.light_brightness_colortemp_colorhs([143, 500]).removeFeature("color_temp_startup"), tuya.exposes.doNotDisturb()],
|
|
2031
2055
|
configure: (device, coordinatorEndpoint) => {
|
|
2032
2056
|
device.getEndpoint(1).saveClusterAttributeKeyValue("lightingColorCtrl", {
|
|
@@ -2134,7 +2158,7 @@ exports.definitions = [
|
|
|
2134
2158
|
model: "TS0202_3",
|
|
2135
2159
|
vendor: "Tuya",
|
|
2136
2160
|
description: "Motion detector with illuminance",
|
|
2137
|
-
fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery, fz.
|
|
2161
|
+
fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery, fz.ias_occupancy_alarm_1_report],
|
|
2138
2162
|
toZigbee: [],
|
|
2139
2163
|
extend: [m.illuminance(), tuya.modernExtend.tuyaBase({ timeStart: "2000" })],
|
|
2140
2164
|
exposes: [e.occupancy(), e.battery_low(), e.battery(), e.tamper()],
|
|
@@ -2173,7 +2197,7 @@ exports.definitions = [
|
|
|
2173
2197
|
vendor: "Tuya",
|
|
2174
2198
|
description: "Motion sensor",
|
|
2175
2199
|
// Requires alarm_1_with_timeout https://github.com/Koenkk/zigbee2mqtt/issues/2818#issuecomment-776119586
|
|
2176
|
-
fromZigbee: [fz.ias_occupancy_alarm_1_with_timeout, fz.battery
|
|
2200
|
+
fromZigbee: [fz.ias_occupancy_alarm_1_with_timeout, fz.battery],
|
|
2177
2201
|
toZigbee: [],
|
|
2178
2202
|
exposes: [e.occupancy(), e.battery_low(), e.battery(), e.battery_voltage()],
|
|
2179
2203
|
configure: async (device, coordinatorEndpoint) => {
|
|
@@ -2202,7 +2226,7 @@ exports.definitions = [
|
|
|
2202
2226
|
tuya.whitelabel("Tuya", "HW500A", "Motion sensor", ["_TZ3000_bsvqrxru"]),
|
|
2203
2227
|
tuya.whitelabel("Nedis", "ZBSM10WT", "Motion sensor", ["_TZ3000_nss8amz9"]),
|
|
2204
2228
|
],
|
|
2205
|
-
fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery, fz.
|
|
2229
|
+
fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery, fz.ias_occupancy_alarm_1_report],
|
|
2206
2230
|
toZigbee: [],
|
|
2207
2231
|
exposes: (device, options) => {
|
|
2208
2232
|
const exps = [e.occupancy(), e.battery_low(), e.battery(), e.battery_voltage()];
|
|
@@ -2228,7 +2252,7 @@ exports.definitions = [
|
|
|
2228
2252
|
model: "ZM-35H-Q",
|
|
2229
2253
|
vendor: "Tuya",
|
|
2230
2254
|
description: "Motion sensor",
|
|
2231
|
-
fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery, fz.
|
|
2255
|
+
fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery, fz.ZM35HQ_attr, legacy.fromZigbee.ZM35HQ_battery],
|
|
2232
2256
|
toZigbee: [tz.ZM35HQ_attr],
|
|
2233
2257
|
extend: [m.quirkCheckinInterval(15000)],
|
|
2234
2258
|
exposes: [
|
|
@@ -2247,7 +2271,7 @@ exports.definitions = [
|
|
|
2247
2271
|
model: "IH012-RT01",
|
|
2248
2272
|
vendor: "Tuya",
|
|
2249
2273
|
description: "Motion sensor",
|
|
2250
|
-
fromZigbee: [fz.
|
|
2274
|
+
fromZigbee: [fz.ZM35HQ_attr, fz.battery],
|
|
2251
2275
|
toZigbee: [tz.ZM35HQ_attr],
|
|
2252
2276
|
extend: [
|
|
2253
2277
|
m.quirkCheckinInterval(15000),
|
|
@@ -2284,7 +2308,7 @@ exports.definitions = [
|
|
|
2284
2308
|
model: "IH012-RT02",
|
|
2285
2309
|
vendor: "Tuya",
|
|
2286
2310
|
description: "Motion sensor",
|
|
2287
|
-
fromZigbee: [fz.ias_occupancy_alarm_1, fz.
|
|
2311
|
+
fromZigbee: [fz.ias_occupancy_alarm_1, fz.ZM35HQ_attr, fz.battery],
|
|
2288
2312
|
toZigbee: [tz.ZM35HQ_attr],
|
|
2289
2313
|
extend: [m.quirkCheckinInterval(15000)],
|
|
2290
2314
|
exposes: [
|
|
@@ -2335,7 +2359,7 @@ exports.definitions = [
|
|
|
2335
2359
|
model: "TS0207_water_leak_detector",
|
|
2336
2360
|
vendor: "Tuya",
|
|
2337
2361
|
description: "Water leak detector",
|
|
2338
|
-
fromZigbee: [fz.ias_water_leak_alarm_1, fz.battery
|
|
2362
|
+
fromZigbee: [fz.ias_water_leak_alarm_1, fz.battery],
|
|
2339
2363
|
whiteLabel: [
|
|
2340
2364
|
{ vendor: "CR Smart Home", model: "TS0207" },
|
|
2341
2365
|
{
|
|
@@ -3180,7 +3204,7 @@ exports.definitions = [
|
|
|
3180
3204
|
e.switch().withEndpoint("l3").setAccess("state", ea.STATE_SET),
|
|
3181
3205
|
e.switch().withEndpoint("l4").setAccess("state", ea.STATE_SET),
|
|
3182
3206
|
],
|
|
3183
|
-
fromZigbee: [
|
|
3207
|
+
fromZigbee: [legacy.fromZigbee.tuya_switch],
|
|
3184
3208
|
toZigbee: [legacy.toZigbee.tuya_switch_state],
|
|
3185
3209
|
meta: { multiEndpoint: true },
|
|
3186
3210
|
whiteLabel: [
|
|
@@ -3345,6 +3369,31 @@ exports.definitions = [
|
|
|
3345
3369
|
tuya.whitelabel("Nova Digital", "SA-6", "Safira smart switch - 6 gang", ["_TZE204_gxbdnfrh"]),
|
|
3346
3370
|
],
|
|
3347
3371
|
},
|
|
3372
|
+
{
|
|
3373
|
+
fingerprint: tuya.fingerprint("TS0601", ["_TZE200_raz9qavg"]),
|
|
3374
|
+
model: "KRC-103",
|
|
3375
|
+
vendor: "Videosec",
|
|
3376
|
+
description: "6 gang kinetic switch actuator",
|
|
3377
|
+
extend: [tuya.modernExtend.tuyaBase({ dp: true }), m.deviceEndpoints({ endpoints: { l1: 1, l2: 1, l3: 1, l4: 1, l5: 1, l6: 1 } })],
|
|
3378
|
+
exposes: [
|
|
3379
|
+
e.switch().withEndpoint("l1"),
|
|
3380
|
+
e.switch().withEndpoint("l2"),
|
|
3381
|
+
e.switch().withEndpoint("l3"),
|
|
3382
|
+
e.switch().withEndpoint("l4"),
|
|
3383
|
+
e.switch().withEndpoint("l5"),
|
|
3384
|
+
e.switch().withEndpoint("l6"),
|
|
3385
|
+
],
|
|
3386
|
+
meta: {
|
|
3387
|
+
tuyaDatapoints: [
|
|
3388
|
+
[19, "state_l1", tuya.valueConverter.onOff],
|
|
3389
|
+
[20, "state_l2", tuya.valueConverter.onOff],
|
|
3390
|
+
[21, "state_l3", tuya.valueConverter.onOff],
|
|
3391
|
+
[22, "state_l4", tuya.valueConverter.onOff],
|
|
3392
|
+
[23, "state_l5", tuya.valueConverter.onOff],
|
|
3393
|
+
[24, "state_l6", tuya.valueConverter.onOff],
|
|
3394
|
+
],
|
|
3395
|
+
},
|
|
3396
|
+
},
|
|
3348
3397
|
{
|
|
3349
3398
|
zigbeeModel: ["ZG-302Z1"],
|
|
3350
3399
|
fingerprint: tuya.fingerprint("TS0601", ["_TZE204_ojtqawav", "_TZE204_gbagoilo", "_TZE200_ojtqawav"]),
|
|
@@ -3352,7 +3401,7 @@ exports.definitions = [
|
|
|
3352
3401
|
vendor: "Tuya",
|
|
3353
3402
|
description: "1 gang switch",
|
|
3354
3403
|
exposes: [e.switch().setAccess("state", ea.STATE_SET)],
|
|
3355
|
-
fromZigbee: [
|
|
3404
|
+
fromZigbee: [legacy.fromZigbee.tuya_switch],
|
|
3356
3405
|
toZigbee: [legacy.toZigbee.tuya_switch_state],
|
|
3357
3406
|
whiteLabel: [tuya.whitelabel("Shawader", "SMKG-1KNL-US/TZB-W", "1 gang switch", ["_TZE204_ojtqawav"])],
|
|
3358
3407
|
configure: async (device, coordinatorEndpoint) => {
|
|
@@ -3403,7 +3452,7 @@ exports.definitions = [
|
|
|
3403
3452
|
vendor: "Tuya",
|
|
3404
3453
|
description: "2 gang switch",
|
|
3405
3454
|
exposes: [e.switch().withEndpoint("l1").setAccess("state", ea.STATE_SET), e.switch().withEndpoint("l2").setAccess("state", ea.STATE_SET)],
|
|
3406
|
-
fromZigbee: [
|
|
3455
|
+
fromZigbee: [legacy.fromZigbee.tuya_switch],
|
|
3407
3456
|
toZigbee: [legacy.toZigbee.tuya_switch_state],
|
|
3408
3457
|
meta: { multiEndpoint: true },
|
|
3409
3458
|
configure: async (device, coordinatorEndpoint) => {
|
|
@@ -3455,7 +3504,7 @@ exports.definitions = [
|
|
|
3455
3504
|
e.switch().withEndpoint("l2").setAccess("state", ea.STATE_SET),
|
|
3456
3505
|
e.switch().withEndpoint("l3").setAccess("state", ea.STATE_SET),
|
|
3457
3506
|
],
|
|
3458
|
-
fromZigbee: [
|
|
3507
|
+
fromZigbee: [legacy.fromZigbee.tuya_switch],
|
|
3459
3508
|
toZigbee: [legacy.toZigbee.tuya_switch_state],
|
|
3460
3509
|
meta: { multiEndpoint: true },
|
|
3461
3510
|
configure: async (device, coordinatorEndpoint) => {
|
|
@@ -3639,7 +3688,7 @@ exports.definitions = [
|
|
|
3639
3688
|
vendor: "Tuya",
|
|
3640
3689
|
description: "RGB+CCT LED",
|
|
3641
3690
|
toZigbee: [tz.on_off, tz.tuya_led_control],
|
|
3642
|
-
fromZigbee: [fz.on_off, fz.tuya_led_controller, fz.brightness
|
|
3691
|
+
fromZigbee: [fz.on_off, fz.tuya_led_controller, fz.brightness],
|
|
3643
3692
|
exposes: [e.light_brightness_colortemp_colorhs([153, 500]).removeFeature("color_temp_startup")],
|
|
3644
3693
|
},
|
|
3645
3694
|
{
|
|
@@ -3729,8 +3778,8 @@ exports.definitions = [
|
|
|
3729
3778
|
vendor: "Tuya",
|
|
3730
3779
|
description: "Temperature & humidity sensor",
|
|
3731
3780
|
fromZigbee: [fzLocal.TS0201_battery, fz.temperature, fz.humidity],
|
|
3732
|
-
|
|
3733
|
-
exposes: [e.
|
|
3781
|
+
extend: [m.battery()],
|
|
3782
|
+
exposes: [e.temperature(), e.humidity(), e.battery_voltage()],
|
|
3734
3783
|
configure: tuya.configureMagicPacket,
|
|
3735
3784
|
whiteLabel: [tuya.whitelabel("Tuya", "RSH-HS06_1", "Temperature & humidity sensor", ["_TZ3000_zl1kmjqx"])],
|
|
3736
3785
|
},
|
|
@@ -4235,7 +4284,7 @@ exports.definitions = [
|
|
|
4235
4284
|
model: "TS0601_water_sensor",
|
|
4236
4285
|
vendor: "Tuya",
|
|
4237
4286
|
description: "Water leak sensor",
|
|
4238
|
-
fromZigbee: [legacy.fromZigbee.tuya_water_leak
|
|
4287
|
+
fromZigbee: [legacy.fromZigbee.tuya_water_leak],
|
|
4239
4288
|
exposes: [e.water_leak()],
|
|
4240
4289
|
toZigbee: [],
|
|
4241
4290
|
whiteLabel: [{ vendor: "NEO", model: "NAS-WS02B0" }],
|
|
@@ -4245,7 +4294,7 @@ exports.definitions = [
|
|
|
4245
4294
|
model: "WLS-100z",
|
|
4246
4295
|
vendor: "Tuya",
|
|
4247
4296
|
description: "Water leak sensor",
|
|
4248
|
-
fromZigbee: [fz.
|
|
4297
|
+
fromZigbee: [fz.ignore_tuya_raw, legacy.fromZigbee.wls100z_water_leak],
|
|
4249
4298
|
extend: [tuya.modernExtend.tuyaBase({ timeStart: "2000", bindBasicOnConfigure: true })],
|
|
4250
4299
|
exposes: [e.battery(), e.water_leak()],
|
|
4251
4300
|
},
|
|
@@ -4270,7 +4319,7 @@ exports.definitions = [
|
|
|
4270
4319
|
description: "Switch with power monitoring",
|
|
4271
4320
|
vendor: "Tuya",
|
|
4272
4321
|
ota: true,
|
|
4273
|
-
fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering,
|
|
4322
|
+
fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, tuya.fz.power_outage_memory, tuya.fz.switch_type],
|
|
4274
4323
|
toZigbee: [tz.on_off, tuya.tz.power_on_behavior_1, tuya.tz.switch_type],
|
|
4275
4324
|
configure: async (device, coordinatorEndpoint) => {
|
|
4276
4325
|
await tuya.configureMagicPacket(device, coordinatorEndpoint);
|
|
@@ -4372,7 +4421,7 @@ exports.definitions = [
|
|
|
4372
4421
|
model: "TS000F_power",
|
|
4373
4422
|
description: "Switch with power monitoring",
|
|
4374
4423
|
vendor: "Tuya",
|
|
4375
|
-
fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering,
|
|
4424
|
+
fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, tuya.fz.power_on_behavior_1, tuya.fz.switch_type],
|
|
4376
4425
|
toZigbee: [tz.on_off, tuya.tz.power_on_behavior_1, tuya.tz.switch_type],
|
|
4377
4426
|
configure: async (device, coordinatorEndpoint) => {
|
|
4378
4427
|
const endpoint = device.getEndpoint(1);
|
|
@@ -4955,7 +5004,7 @@ exports.definitions = [
|
|
|
4955
5004
|
tuya.whitelabel("Novato", "WPK", "Smart curtain track", ["_TZE204_lh3arisb"]),
|
|
4956
5005
|
tuya.whitelabel("Zemismart", "ZMS1-TYZ", "Smart curtain track", ["_TZE204_zuq5xxib"]),
|
|
4957
5006
|
],
|
|
4958
|
-
fromZigbee: [legacy.fromZigbee.tuya_cover
|
|
5007
|
+
fromZigbee: [legacy.fromZigbee.tuya_cover],
|
|
4959
5008
|
toZigbee: [legacy.toZigbee.tuya_cover_control, legacy.toZigbee.tuya_cover_options],
|
|
4960
5009
|
exposes: [
|
|
4961
5010
|
e.cover_position().setAccess("position", ea.STATE_SET),
|
|
@@ -4970,7 +5019,7 @@ exports.definitions = [
|
|
|
4970
5019
|
model: "M3TYW-2.0-13",
|
|
4971
5020
|
vendor: "Tuya",
|
|
4972
5021
|
description: "Longsam M3 curtain motor",
|
|
4973
|
-
fromZigbee: [legacy.fromZigbee.tuya_cover
|
|
5022
|
+
fromZigbee: [legacy.fromZigbee.tuya_cover],
|
|
4974
5023
|
toZigbee: [tzLocal.invert_cover_percent_fix, legacy.toZigbee.tuya_cover_options],
|
|
4975
5024
|
exposes: [
|
|
4976
5025
|
e.cover_position().setAccess("position", ea.STATE_SET),
|
|
@@ -4990,7 +5039,7 @@ exports.definitions = [
|
|
|
4990
5039
|
tuya.whitelabel("Zemismart", "BCM100DB", "Curtain Motor", ["_TZE200_eegnwoyw"]),
|
|
4991
5040
|
tuya.whitelabel("Nova Digital", "ZBCMR-01", "Roller Blind Motor", ["_TZE600_ogyg1y6b"]),
|
|
4992
5041
|
],
|
|
4993
|
-
fromZigbee: [legacy.fromZigbee.tuya_cover
|
|
5042
|
+
fromZigbee: [legacy.fromZigbee.tuya_cover],
|
|
4994
5043
|
toZigbee: [legacy.toZigbee.tuya_cover_control],
|
|
4995
5044
|
exposes: [e.cover_position().setAccess("position", ea.STATE_SET)],
|
|
4996
5045
|
},
|
|
@@ -5455,7 +5504,7 @@ exports.definitions = [
|
|
|
5455
5504
|
},
|
|
5456
5505
|
ota: true,
|
|
5457
5506
|
extend: [tuya.modernExtend.tuyaBase({ forceTimeUpdates: true })],
|
|
5458
|
-
fromZigbee: [legacy.fromZigbee.tuya_thermostat, fz.
|
|
5507
|
+
fromZigbee: [legacy.fromZigbee.tuya_thermostat, fz.ignore_tuya_set_time],
|
|
5459
5508
|
toZigbee: [
|
|
5460
5509
|
legacy.toZigbee.tuya_thermostat_child_lock,
|
|
5461
5510
|
legacy.toZigbee.tuya_thermostat_window_detection,
|
|
@@ -6205,12 +6254,7 @@ exports.definitions = [
|
|
|
6205
6254
|
model: "HT-08",
|
|
6206
6255
|
vendor: "ETOP",
|
|
6207
6256
|
description: "Wall-mount thermostat",
|
|
6208
|
-
fromZigbee: [
|
|
6209
|
-
legacy.fromZigbee.tuya_thermostat_weekly_schedule_2,
|
|
6210
|
-
legacy.fromZigbee.etop_thermostat,
|
|
6211
|
-
fz.ignore_basic_report,
|
|
6212
|
-
fz.ignore_tuya_set_time,
|
|
6213
|
-
],
|
|
6257
|
+
fromZigbee: [legacy.fromZigbee.tuya_thermostat_weekly_schedule_2, legacy.fromZigbee.etop_thermostat, fz.ignore_tuya_set_time],
|
|
6214
6258
|
toZigbee: [
|
|
6215
6259
|
legacy.toZigbee.etop_thermostat_system_mode,
|
|
6216
6260
|
legacy.toZigbee.etop_thermostat_away_mode,
|
|
@@ -6242,12 +6286,7 @@ exports.definitions = [
|
|
|
6242
6286
|
model: "HT-10",
|
|
6243
6287
|
vendor: "ETOP",
|
|
6244
6288
|
description: "Radiator valve",
|
|
6245
|
-
fromZigbee: [
|
|
6246
|
-
legacy.fromZigbee.tuya_thermostat_weekly_schedule_2,
|
|
6247
|
-
legacy.fromZigbee.etop_thermostat,
|
|
6248
|
-
fz.ignore_basic_report,
|
|
6249
|
-
fz.ignore_tuya_set_time,
|
|
6250
|
-
],
|
|
6289
|
+
fromZigbee: [legacy.fromZigbee.tuya_thermostat_weekly_schedule_2, legacy.fromZigbee.etop_thermostat, fz.ignore_tuya_set_time],
|
|
6251
6290
|
toZigbee: [
|
|
6252
6291
|
legacy.toZigbee.etop_thermostat_system_mode,
|
|
6253
6292
|
legacy.toZigbee.etop_thermostat_away_mode,
|
|
@@ -6900,7 +6939,7 @@ exports.definitions = [
|
|
|
6900
6939
|
{ vendor: "Connecte", model: "4500993" },
|
|
6901
6940
|
],
|
|
6902
6941
|
vendor: "Tuya",
|
|
6903
|
-
fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering,
|
|
6942
|
+
fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, tuya.fz.power_outage_memory, tuya.fz.indicator_mode],
|
|
6904
6943
|
toZigbee: [tz.on_off, tuya.tz.power_on_behavior_1, tuya.tz.backlight_indicator_mode_1],
|
|
6905
6944
|
configure: async (device, coordinatorEndpoint) => {
|
|
6906
6945
|
const endpoint = device.getEndpoint(1);
|
|
@@ -7938,7 +7977,7 @@ exports.definitions = [
|
|
|
7938
7977
|
model: "SNTZ007",
|
|
7939
7978
|
vendor: "Tuya",
|
|
7940
7979
|
description: "Rechargeable Zigbee contact sensor",
|
|
7941
|
-
fromZigbee: [fz.ias_contact_alarm_1, fz.battery
|
|
7980
|
+
fromZigbee: [fz.ias_contact_alarm_1, fz.battery],
|
|
7942
7981
|
toZigbee: [],
|
|
7943
7982
|
exposes: [e.contact(), e.battery_low(), e.tamper(), e.battery()],
|
|
7944
7983
|
whiteLabel: [{ vendor: "BlitzWolf", model: "BW-IS2" }],
|
|
@@ -7948,7 +7987,7 @@ exports.definitions = [
|
|
|
7948
7987
|
model: "RH3040",
|
|
7949
7988
|
vendor: "Tuya",
|
|
7950
7989
|
description: "PIR sensor",
|
|
7951
|
-
fromZigbee: [fz.battery, fz.
|
|
7990
|
+
fromZigbee: [fz.battery, fz.ias_occupancy_alarm_1],
|
|
7952
7991
|
toZigbee: [],
|
|
7953
7992
|
whiteLabel: [
|
|
7954
7993
|
{ vendor: "Samotech", model: "SM301Z" },
|
|
@@ -8206,7 +8245,7 @@ exports.definitions = [
|
|
|
8206
8245
|
model: "gq8b1uv",
|
|
8207
8246
|
vendor: "Tuya",
|
|
8208
8247
|
description: "Zigbee smart dimmer",
|
|
8209
|
-
fromZigbee: [legacy.fromZigbee.tuya_dimmer
|
|
8248
|
+
fromZigbee: [legacy.fromZigbee.tuya_dimmer],
|
|
8210
8249
|
toZigbee: [legacy.toZigbee.tuya_dimmer_state, legacy.toZigbee.tuya_dimmer_level],
|
|
8211
8250
|
exposes: [e.light_brightness().setAccess("state", ea.STATE_SET).setAccess("brightness", ea.STATE_SET)],
|
|
8212
8251
|
configure: async (device, coordinatorEndpoint) => {
|
|
@@ -8238,7 +8277,7 @@ exports.definitions = [
|
|
|
8238
8277
|
model: "SNTZ009",
|
|
8239
8278
|
vendor: "Tuya",
|
|
8240
8279
|
description: "Water leak sensor",
|
|
8241
|
-
fromZigbee: [legacy.fromZigbee.tuya_water_leak
|
|
8280
|
+
fromZigbee: [legacy.fromZigbee.tuya_water_leak],
|
|
8242
8281
|
exposes: [e.water_leak()],
|
|
8243
8282
|
toZigbee: [],
|
|
8244
8283
|
},
|
|
@@ -8277,7 +8316,7 @@ exports.definitions = [
|
|
|
8277
8316
|
model: "TS0726_2_gang",
|
|
8278
8317
|
vendor: "Tuya",
|
|
8279
8318
|
description: "2 gang switch with neutral wire",
|
|
8280
|
-
fromZigbee: [fz.on_off, tuya.fz.power_on_behavior_2,
|
|
8319
|
+
fromZigbee: [fz.on_off, tuya.fz.power_on_behavior_2, fzLocal.TS0726_action],
|
|
8281
8320
|
toZigbee: [tz.on_off, tuya.tz.power_on_behavior_2, tzLocal.TS0726_switch_mode],
|
|
8282
8321
|
exposes: [
|
|
8283
8322
|
...[1, 2].map((ep) => e.switch().withEndpoint(`l${ep}`)),
|
|
@@ -8301,7 +8340,7 @@ exports.definitions = [
|
|
|
8301
8340
|
model: "TS0726_multi_1_gang",
|
|
8302
8341
|
vendor: "Tuya",
|
|
8303
8342
|
description: "Multi 1 gang switch with backlight",
|
|
8304
|
-
fromZigbee: [fz.on_off, tuya.fz.power_on_behavior_2,
|
|
8343
|
+
fromZigbee: [fz.on_off, tuya.fz.power_on_behavior_2, fzLocal.TS0726_action],
|
|
8305
8344
|
toZigbee: [tz.on_off, tuya.tz.power_on_behavior_2, tzLocal.TS0726_switch_mode, tuya.tz.backlight_indicator_mode_2],
|
|
8306
8345
|
exposes: [
|
|
8307
8346
|
e.switch(),
|
|
@@ -8322,7 +8361,7 @@ exports.definitions = [
|
|
|
8322
8361
|
model: "TS0726_multi_3_gang",
|
|
8323
8362
|
vendor: "Tuya",
|
|
8324
8363
|
description: "multi 3 gang switch with backlight",
|
|
8325
|
-
fromZigbee: [fz.on_off, tuya.fz.power_on_behavior_2,
|
|
8364
|
+
fromZigbee: [fz.on_off, tuya.fz.power_on_behavior_2, fzLocal.TS0726_action],
|
|
8326
8365
|
toZigbee: [tz.on_off, tuya.tz.power_on_behavior_2, tzLocal.TS0726_switch_mode, tuya.tz.backlight_indicator_mode_2],
|
|
8327
8366
|
exposes: [
|
|
8328
8367
|
...[1, 2, 3].map((ep) => e.switch().withEndpoint(`l${ep}`)),
|
|
@@ -8347,7 +8386,7 @@ exports.definitions = [
|
|
|
8347
8386
|
model: "TS0726_multi_4_gang",
|
|
8348
8387
|
vendor: "Tuya",
|
|
8349
8388
|
description: "Multi 4 gang switch with backlight",
|
|
8350
|
-
fromZigbee: [fz.on_off, tuya.fz.power_on_behavior_2,
|
|
8389
|
+
fromZigbee: [fz.on_off, tuya.fz.power_on_behavior_2, fzLocal.TS0726_action],
|
|
8351
8390
|
toZigbee: [tz.on_off, tuya.tz.power_on_behavior_2, tzLocal.TS0726_switch_mode, tuya.tz.backlight_indicator_mode_2],
|
|
8352
8391
|
exposes: [
|
|
8353
8392
|
...[1, 2, 3, 4].map((ep) => e.switch().withEndpoint(`l${ep}`)),
|
|
@@ -8372,7 +8411,7 @@ exports.definitions = [
|
|
|
8372
8411
|
model: "TS0726_4_gang_switch_and_2_scene",
|
|
8373
8412
|
vendor: "Tuya",
|
|
8374
8413
|
description: "Multi 4 gang switch and 2 scene with backlight",
|
|
8375
|
-
fromZigbee: [fz.on_off, tuya.fz.power_on_behavior_2,
|
|
8414
|
+
fromZigbee: [fz.on_off, tuya.fz.power_on_behavior_2, fzLocal.TS0726_action],
|
|
8376
8415
|
toZigbee: [tz.on_off, tuya.tz.power_on_behavior_2, tzLocal.TS0726_switch_mode, tuya.tz.backlight_indicator_mode_2],
|
|
8377
8416
|
exposes: [
|
|
8378
8417
|
...[1, 2, 3, 4].map((ep) => e.switch().withEndpoint(`l${ep}`)),
|
|
@@ -8397,7 +8436,7 @@ exports.definitions = [
|
|
|
8397
8436
|
model: "TS0726_3_gang",
|
|
8398
8437
|
vendor: "Tuya",
|
|
8399
8438
|
description: "3 gang switch with neutral wire",
|
|
8400
|
-
fromZigbee: [fz.on_off, tuya.fz.power_on_behavior_2,
|
|
8439
|
+
fromZigbee: [fz.on_off, tuya.fz.power_on_behavior_2, fzLocal.TS0726_action],
|
|
8401
8440
|
toZigbee: [tz.on_off, tuya.tz.power_on_behavior_2, tzLocal.TS0726_switch_mode],
|
|
8402
8441
|
exposes: [
|
|
8403
8442
|
...[1, 2, 3].map((ep) => e.switch().withEndpoint(`l${ep}`)),
|
|
@@ -8421,7 +8460,7 @@ exports.definitions = [
|
|
|
8421
8460
|
model: "TS0726_4_gang",
|
|
8422
8461
|
vendor: "Tuya",
|
|
8423
8462
|
description: "4 gang switch with neutral wire",
|
|
8424
|
-
fromZigbee: [fz.on_off, tuya.fz.power_on_behavior_2,
|
|
8463
|
+
fromZigbee: [fz.on_off, tuya.fz.power_on_behavior_2, fzLocal.TS0726_action],
|
|
8425
8464
|
toZigbee: [tz.on_off, tuya.tz.power_on_behavior_2, tzLocal.TS0726_switch_mode],
|
|
8426
8465
|
exposes: [
|
|
8427
8466
|
...[1, 2, 3, 4].map((ep) => e.switch().withEndpoint(`l${ep}`)),
|
|
@@ -8555,7 +8594,7 @@ exports.definitions = [
|
|
|
8555
8594
|
.withSystemMode(["off", "auto", "heat"], ea.STATE_SET)
|
|
8556
8595
|
.withRunningState(["idle", "heat", "cool"], ea.STATE),
|
|
8557
8596
|
],
|
|
8558
|
-
fromZigbee: [legacy.fromZigbee.tuya_thermostat,
|
|
8597
|
+
fromZigbee: [legacy.fromZigbee.tuya_thermostat, legacy.fromZigbee.tuya_dimmer],
|
|
8559
8598
|
meta: {
|
|
8560
8599
|
tuyaThermostatSystemMode: legacy.thermostatSystemModes2,
|
|
8561
8600
|
tuyaThermostatPreset: legacy.thermostatPresets,
|
|
@@ -8614,7 +8653,7 @@ exports.definitions = [
|
|
|
8614
8653
|
model: "HY08WE",
|
|
8615
8654
|
vendor: "Tuya",
|
|
8616
8655
|
description: "Wall-mount thermostat",
|
|
8617
|
-
fromZigbee: [legacy.fromZigbee.hy_thermostat
|
|
8656
|
+
fromZigbee: [legacy.fromZigbee.hy_thermostat],
|
|
8618
8657
|
toZigbee: [legacy.toZigbee.hy_thermostat],
|
|
8619
8658
|
extend: [tuya.modernExtend.tuyaBase({ timeStart: "2000" })],
|
|
8620
8659
|
exposes: [
|
|
@@ -8804,7 +8843,7 @@ exports.definitions = [
|
|
|
8804
8843
|
model: "X5H-GB-B",
|
|
8805
8844
|
vendor: "Tuya",
|
|
8806
8845
|
description: "Wall-mount thermostat",
|
|
8807
|
-
fromZigbee: [fz.
|
|
8846
|
+
fromZigbee: [fz.ignore_tuya_set_time, legacy.fromZigbee.x5h_thermostat],
|
|
8808
8847
|
toZigbee: [legacy.toZigbee.x5h_thermostat],
|
|
8809
8848
|
whiteLabel: [
|
|
8810
8849
|
{ vendor: "Beok", model: "TGR85-ZB" },
|
|
@@ -9214,14 +9253,7 @@ exports.definitions = [
|
|
|
9214
9253
|
model: "TS011F_din_smart_relay",
|
|
9215
9254
|
description: "Din smart relay (with power monitoring)",
|
|
9216
9255
|
vendor: "Tuya",
|
|
9217
|
-
fromZigbee: [
|
|
9218
|
-
fz.on_off,
|
|
9219
|
-
fz.electrical_measurement,
|
|
9220
|
-
fz.metering,
|
|
9221
|
-
fz.ignore_basic_report,
|
|
9222
|
-
tuya.fz.power_outage_memory,
|
|
9223
|
-
fz.tuya_relay_din_led_indicator,
|
|
9224
|
-
],
|
|
9256
|
+
fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, tuya.fz.power_outage_memory, fz.tuya_relay_din_led_indicator],
|
|
9225
9257
|
toZigbee: [tz.on_off, tuya.tz.power_on_behavior_1, tz.tuya_relay_din_led_indicator],
|
|
9226
9258
|
whiteLabel: [{ vendor: "MatSee Plus", model: "ATMS1602Z" }],
|
|
9227
9259
|
ota: true,
|
|
@@ -9257,14 +9289,7 @@ exports.definitions = [
|
|
|
9257
9289
|
model: "TS011F_din_smart_relay_polling",
|
|
9258
9290
|
description: "Din smart relay (with power monitoring via polling)",
|
|
9259
9291
|
vendor: "Tuya",
|
|
9260
|
-
fromZigbee: [
|
|
9261
|
-
fz.on_off,
|
|
9262
|
-
fz.electrical_measurement,
|
|
9263
|
-
fz.metering,
|
|
9264
|
-
fz.ignore_basic_report,
|
|
9265
|
-
tuya.fz.power_outage_memory,
|
|
9266
|
-
fz.tuya_relay_din_led_indicator,
|
|
9267
|
-
],
|
|
9292
|
+
fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, tuya.fz.power_outage_memory, fz.tuya_relay_din_led_indicator],
|
|
9268
9293
|
toZigbee: [tz.on_off, tuya.tz.power_on_behavior_1, tz.tuya_relay_din_led_indicator],
|
|
9269
9294
|
whiteLabel: [
|
|
9270
9295
|
tuya.whitelabel("Tongou", "TO-Q-SY1-JZT", "Din smart relay (with power monitoring via polling)", ["_TZ3000_qeuvnohg"]),
|
|
@@ -9305,7 +9330,7 @@ exports.definitions = [
|
|
|
9305
9330
|
model: "ATMS1601Z",
|
|
9306
9331
|
description: "Din smart relay (without power monitoring)",
|
|
9307
9332
|
vendor: "Tuya",
|
|
9308
|
-
fromZigbee: [fz.on_off,
|
|
9333
|
+
fromZigbee: [fz.on_off, tuya.fz.power_outage_memory, fz.tuya_relay_din_led_indicator],
|
|
9309
9334
|
toZigbee: [tz.on_off, tuya.tz.power_on_behavior_1, tz.tuya_relay_din_led_indicator],
|
|
9310
9335
|
whiteLabel: [tuya.whitelabel("Tongou", "TO-Q-SY1-ZT", "Din smart relay (without power monitoring)", ["_TZ3000_gzvniqjb"])],
|
|
9311
9336
|
configure: async (device, coordinatorEndpoint) => {
|
|
@@ -9389,7 +9414,7 @@ exports.definitions = [
|
|
|
9389
9414
|
model: "GDC311ZBQ1",
|
|
9390
9415
|
vendor: "Tuya",
|
|
9391
9416
|
description: "LoraTap garage door opener with wireless sensor",
|
|
9392
|
-
fromZigbee: [legacy.fromZigbee.matsee_garage_door_opener
|
|
9417
|
+
fromZigbee: [legacy.fromZigbee.matsee_garage_door_opener],
|
|
9393
9418
|
toZigbee: [legacy.toZigbee.matsee_garage_door_opener, legacy.toZigbee.tuya_data_point_test],
|
|
9394
9419
|
whiteLabel: [{ vendor: "LoraTap", model: "GDC311ZBQ1" }],
|
|
9395
9420
|
configure: async (device, coordinatorEndpoint) => {
|
|
@@ -10372,7 +10397,7 @@ exports.definitions = [
|
|
|
10372
10397
|
model: "ZB-Sm",
|
|
10373
10398
|
vendor: "Tuya",
|
|
10374
10399
|
description: "Tubular motor",
|
|
10375
|
-
fromZigbee: [legacy.fromZigbee.zb_sm_cover
|
|
10400
|
+
fromZigbee: [legacy.fromZigbee.zb_sm_cover],
|
|
10376
10401
|
toZigbee: [legacy.toZigbee.zb_sm_cover],
|
|
10377
10402
|
extend: [tuya.modernExtend.tuyaBase({ timeStart: "2000" })],
|
|
10378
10403
|
exposes: [
|
|
@@ -10491,8 +10516,8 @@ exports.definitions = [
|
|
|
10491
10516
|
[2, "humidity", tuya.valueConverter.raw],
|
|
10492
10517
|
[4, "battery", tuya.valueConverter.raw],
|
|
10493
10518
|
[9, "temperature_unit", tuya.valueConverter.temperatureUnit],
|
|
10494
|
-
[23, "temperature_calibration", tuya.valueConverter.
|
|
10495
|
-
[24, "humidity_calibration", tuya.valueConverter.
|
|
10519
|
+
[23, "temperature_calibration", tuya.valueConverter.localTempCalibration3],
|
|
10520
|
+
[24, "humidity_calibration", tuya.valueConverter.localTempCalibration2],
|
|
10496
10521
|
],
|
|
10497
10522
|
},
|
|
10498
10523
|
},
|
|
@@ -11299,7 +11324,7 @@ exports.definitions = [
|
|
|
11299
11324
|
extend: [m.battery(), m.onOff({ powerOnBehavior: false }), tuya.modernExtend.tuyaBase({ dp: true })],
|
|
11300
11325
|
// Countdown is not working properly yet - device ignores it and uses the default (10 minutes)
|
|
11301
11326
|
// Countdown can be set using the Tuya app/hub and it will persist
|
|
11302
|
-
fromZigbee: [fz.battery, fz.on_off
|
|
11327
|
+
fromZigbee: [fz.battery, fz.on_off /*tuya.fz.on_off_countdown,*/],
|
|
11303
11328
|
toZigbee: [tz.on_off /*tuya.tz.on_off_countdown,*/],
|
|
11304
11329
|
exposes: [
|
|
11305
11330
|
tuya.exposes.countdown().withAccess(ea.ALL),
|
|
@@ -11529,6 +11554,7 @@ exports.definitions = [
|
|
|
11529
11554
|
"_TZ3000_qystbcjg",
|
|
11530
11555
|
"_TZ3000_zrm3oxsh",
|
|
11531
11556
|
"_TZ3000_303avxxt",
|
|
11557
|
+
"_TZ3000_ibefeicf",
|
|
11532
11558
|
"_TZ3000_zjchz7pd",
|
|
11533
11559
|
"_TZ3000_zv6x8bt2",
|
|
11534
11560
|
]),
|
|
@@ -11549,7 +11575,7 @@ exports.definitions = [
|
|
|
11549
11575
|
toZigbee: [tzLocal.TS011F_threshold],
|
|
11550
11576
|
exposes: (device, options) => {
|
|
11551
11577
|
const exposes = [];
|
|
11552
|
-
if (!["_TZ3000_303avxxt", "_TZ3000_zjchz7pd"].includes(device.manufacturerName)) {
|
|
11578
|
+
if (!["_TZ3000_303avxxt", "_TZ3000_ibefeicf", "_TZ3000_zjchz7pd"].includes(device.manufacturerName)) {
|
|
11553
11579
|
exposes.push(e.temperature(), e
|
|
11554
11580
|
.numeric("temperature_threshold", ea.STATE_SET)
|
|
11555
11581
|
.withValueMin(40)
|
|
@@ -11610,7 +11636,7 @@ exports.definitions = [
|
|
|
11610
11636
|
tuya.whitelabel("EARU", "EAKCB-T-M-Z", "Smart circuit breaker", ["_TZ3000_lepzuhto"]),
|
|
11611
11637
|
tuya.whitelabel("EARU", "EAYCB-Z-2P", "Smart circuit breaker with leakage protection", ["_TZ3000_zrm3oxsh"]),
|
|
11612
11638
|
tuya.whitelabel("UNSH", "SMKG-1KNL-EU-Z", "Smart circuit Breaker", ["_TZ3000_qystbcjg"]),
|
|
11613
|
-
tuya.whitelabel("Tomzn", "TOB9Z-VAP", "Smart circuit breaker", ["_TZ3000_303avxxt"]),
|
|
11639
|
+
tuya.whitelabel("Tomzn", "TOB9Z-VAP", "Smart circuit breaker", ["_TZ3000_303avxxt", "_TZ3000_ibefeicf"]),
|
|
11614
11640
|
tuya.whitelabel("Immax", "07573L", "Smart circuit breaker", ["_TZ3000_zjchz7pd"]),
|
|
11615
11641
|
tuya.whitelabel("Moes", "A5", "Smart circuit breaker", ["_TZ3000_zv6x8bt2"]),
|
|
11616
11642
|
],
|
|
@@ -11838,7 +11864,7 @@ exports.definitions = [
|
|
|
11838
11864
|
],
|
|
11839
11865
|
},
|
|
11840
11866
|
{
|
|
11841
|
-
fingerprint: tuya.fingerprint("TS0601", ["
|
|
11867
|
+
fingerprint: tuya.fingerprint("TS0601", ["TLSR82xx"]),
|
|
11842
11868
|
model: "TS0601_cover_with_1_switch",
|
|
11843
11869
|
vendor: "Tuya",
|
|
11844
11870
|
description: "Curtain/blind switch with 1 Gang switch",
|
|
@@ -16337,9 +16363,9 @@ exports.definitions = [
|
|
|
16337
16363
|
[107, "soil_moisture", tuya.valueConverter.raw],
|
|
16338
16364
|
[108, "battery", tuya.valueConverter.raw],
|
|
16339
16365
|
[106, "temperature_unit", tuya.valueConverter.temperatureUnit],
|
|
16340
|
-
[104, "temperature_calibration", tuya.valueConverter.
|
|
16341
|
-
[105, "humidity_calibration", tuya.valueConverter.
|
|
16342
|
-
[102, "soil_calibration", tuya.valueConverter.
|
|
16366
|
+
[104, "temperature_calibration", tuya.valueConverter.localTempCalibration3],
|
|
16367
|
+
[105, "humidity_calibration", tuya.valueConverter.localTempCalibration2],
|
|
16368
|
+
[102, "soil_calibration", tuya.valueConverter.localTempCalibration2],
|
|
16343
16369
|
[111, "temperature_sampling", tuya.valueConverter.raw],
|
|
16344
16370
|
[112, "soil_sampling", tuya.valueConverter.raw],
|
|
16345
16371
|
[110, "soil_warning", tuya.valueConverter.raw],
|
|
@@ -18016,7 +18042,7 @@ exports.definitions = [
|
|
|
18016
18042
|
model: "TS0001_1_gang_switch",
|
|
18017
18043
|
vendor: "Tuya",
|
|
18018
18044
|
description: "1 gang switch with backlight",
|
|
18019
|
-
fromZigbee: [
|
|
18045
|
+
fromZigbee: [],
|
|
18020
18046
|
extend: [
|
|
18021
18047
|
tuya.modernExtend.tuyaOnOff({
|
|
18022
18048
|
powerOnBehavior2: true,
|
|
@@ -18035,7 +18061,7 @@ exports.definitions = [
|
|
|
18035
18061
|
vendor: "Tuya",
|
|
18036
18062
|
description: "1 gang switch with scene and backlight",
|
|
18037
18063
|
whiteLabel: [tuya.whitelabel("BSEED", "EC-GL86ZPCS11", "1 gang switch with scene and backlight", ["_TZ3002_jn2x20tg"])],
|
|
18038
|
-
fromZigbee: [
|
|
18064
|
+
fromZigbee: [fzLocal.TS0726_action],
|
|
18039
18065
|
exposes: [e.action(["scene_1"])],
|
|
18040
18066
|
extend: [
|
|
18041
18067
|
tuya.modernExtend.tuyaOnOff({
|
|
@@ -18057,7 +18083,7 @@ exports.definitions = [
|
|
|
18057
18083
|
vendor: "Tuya",
|
|
18058
18084
|
description: "2 gang switch with scene and backlight",
|
|
18059
18085
|
whiteLabel: [tuya.whitelabel("BSEED", "EC-GL86ZPCS21", "2 gang switch with scene and backlight", ["_TZ3002_zjuvw9zf"])],
|
|
18060
|
-
fromZigbee: [
|
|
18086
|
+
fromZigbee: [fzLocal.TS0726_action],
|
|
18061
18087
|
exposes: [e.action(["scene_1", "scene_2"])],
|
|
18062
18088
|
extend: [
|
|
18063
18089
|
tuya.modernExtend.tuyaOnOff({
|
|
@@ -18085,7 +18111,7 @@ exports.definitions = [
|
|
|
18085
18111
|
model: "TS0726_3_gang_scene_switch",
|
|
18086
18112
|
vendor: "Tuya",
|
|
18087
18113
|
description: "3 gang switch with scene and backlight",
|
|
18088
|
-
fromZigbee: [
|
|
18114
|
+
fromZigbee: [fzLocal.TS0726_action],
|
|
18089
18115
|
exposes: [e.action(["scene_1", "scene_2", "scene_3"])],
|
|
18090
18116
|
extend: [
|
|
18091
18117
|
tuya.modernExtend.tuyaOnOff({
|
|
@@ -18113,7 +18139,7 @@ exports.definitions = [
|
|
|
18113
18139
|
model: "TS0726_4_gang_scene_switch",
|
|
18114
18140
|
vendor: "Tuya",
|
|
18115
18141
|
description: "4 gang switch with scene and backlight",
|
|
18116
|
-
fromZigbee: [
|
|
18142
|
+
fromZigbee: [fzLocal.TS0726_action],
|
|
18117
18143
|
exposes: [e.action(["scene_1", "scene_2", "scene_3", "scene_4"])],
|
|
18118
18144
|
extend: [
|
|
18119
18145
|
tuya.modernExtend.tuyaOnOff({
|
|
@@ -18412,8 +18438,8 @@ exports.definitions = [
|
|
|
18412
18438
|
[111, "temperature", tuya.valueConverter.divideBy10],
|
|
18413
18439
|
[101, "humidity", tuya.valueConverter.raw],
|
|
18414
18440
|
[109, "temperature_unit", tuya.valueConverter.temperatureUnit],
|
|
18415
|
-
[105, "temperature_calibration", tuya.valueConverter.
|
|
18416
|
-
[104, "humidity_calibration", tuya.valueConverter.
|
|
18441
|
+
[105, "temperature_calibration", tuya.valueConverter.localTempCalibration3],
|
|
18442
|
+
[104, "humidity_calibration", tuya.valueConverter.localTempCalibration2],
|
|
18417
18443
|
[107, "illuminance_interval", tuya.valueConverter.raw],
|
|
18418
18444
|
],
|
|
18419
18445
|
},
|
|
@@ -18589,9 +18615,9 @@ exports.definitions = [
|
|
|
18589
18615
|
[3, "soil_moisture", tuya.valueConverter.raw],
|
|
18590
18616
|
[15, "battery", tuya.valueConverter.raw],
|
|
18591
18617
|
[9, "temperature_unit", tuya.valueConverter.temperatureUnit],
|
|
18592
|
-
[104, "temperature_calibration", tuya.valueConverter.
|
|
18593
|
-
[105, "humidity_calibration", tuya.valueConverter.
|
|
18594
|
-
[102, "soil_calibration", tuya.valueConverter.
|
|
18618
|
+
[104, "temperature_calibration", tuya.valueConverter.localTempCalibration3],
|
|
18619
|
+
[105, "humidity_calibration", tuya.valueConverter.localTempCalibration2],
|
|
18620
|
+
[102, "soil_calibration", tuya.valueConverter.localTempCalibration2],
|
|
18595
18621
|
[111, "temperature_sampling", tuya.valueConverter.raw],
|
|
18596
18622
|
[112, "soil_sampling", tuya.valueConverter.raw],
|
|
18597
18623
|
[110, "soil_warning", tuya.valueConverter.raw],
|
|
@@ -18854,6 +18880,7 @@ exports.definitions = [
|
|
|
18854
18880
|
.withValueStep(1)
|
|
18855
18881
|
.withUnit("x")
|
|
18856
18882
|
.withDescription("Static detection sensitivity"),
|
|
18883
|
+
e.enum("motion_detection_mode", ea.STATE_SET, ["pir_and_radar", "pir_or_radar", "only_radar"]).withDescription("Motion detection mode"),
|
|
18857
18884
|
],
|
|
18858
18885
|
meta: {
|
|
18859
18886
|
tuyaDatapoints: [
|
|
@@ -18867,9 +18894,18 @@ exports.definitions = [
|
|
|
18867
18894
|
[111, "temperature", tuya.valueConverter.divideBy10],
|
|
18868
18895
|
[101, "humidity", tuya.valueConverter.raw],
|
|
18869
18896
|
[109, "temperature_unit", tuya.valueConverter.temperatureUnit],
|
|
18870
|
-
[105, "temperature_calibration", tuya.valueConverter.
|
|
18871
|
-
[104, "humidity_calibration", tuya.valueConverter.
|
|
18897
|
+
[105, "temperature_calibration", tuya.valueConverter.localTempCalibration3],
|
|
18898
|
+
[104, "humidity_calibration", tuya.valueConverter.localTempCalibration2],
|
|
18872
18899
|
[107, "illuminance_interval", tuya.valueConverter.raw],
|
|
18900
|
+
[
|
|
18901
|
+
112,
|
|
18902
|
+
"motion_detection_mode",
|
|
18903
|
+
tuya.valueConverterBasic.lookup({
|
|
18904
|
+
pir_and_radar: tuya.enum(0),
|
|
18905
|
+
pir_or_radar: tuya.enum(1),
|
|
18906
|
+
only_radar: tuya.enum(2),
|
|
18907
|
+
}),
|
|
18908
|
+
],
|
|
18873
18909
|
],
|
|
18874
18910
|
},
|
|
18875
18911
|
},
|
|
@@ -19359,6 +19395,130 @@ exports.definitions = [
|
|
|
19359
19395
|
],
|
|
19360
19396
|
},
|
|
19361
19397
|
},
|
|
19398
|
+
{
|
|
19399
|
+
zigbeeModel: ["ZG-204ZK"],
|
|
19400
|
+
fingerprint: tuya.fingerprint("TS0601", ["_TZE200_ka8l86iu"]),
|
|
19401
|
+
model: "ZG-204ZK",
|
|
19402
|
+
vendor: "HOBEIAN",
|
|
19403
|
+
description: "24Ghz human presence sensor",
|
|
19404
|
+
fromZigbee: [tuya.fz.datapoints],
|
|
19405
|
+
toZigbee: [tuya.tz.datapoints],
|
|
19406
|
+
exposes: [
|
|
19407
|
+
e.presence(),
|
|
19408
|
+
e.illuminance(),
|
|
19409
|
+
e.battery(),
|
|
19410
|
+
e
|
|
19411
|
+
.numeric("fading_time", ea.STATE_SET)
|
|
19412
|
+
.withValueMin(0)
|
|
19413
|
+
.withValueMax(28800)
|
|
19414
|
+
.withValueStep(1)
|
|
19415
|
+
.withUnit("s")
|
|
19416
|
+
.withDescription("Presence keep time"),
|
|
19417
|
+
e
|
|
19418
|
+
.numeric("static_detection_distance", ea.STATE_SET)
|
|
19419
|
+
.withValueMin(0)
|
|
19420
|
+
.withValueMax(10)
|
|
19421
|
+
.withValueStep(0.01)
|
|
19422
|
+
.withUnit("m")
|
|
19423
|
+
.withDescription("Static detection distance"),
|
|
19424
|
+
e
|
|
19425
|
+
.numeric("static_detection_sensitivity", ea.STATE_SET)
|
|
19426
|
+
.withValueMin(0)
|
|
19427
|
+
.withValueMax(10)
|
|
19428
|
+
.withValueStep(1)
|
|
19429
|
+
.withUnit("x")
|
|
19430
|
+
.withDescription("Static detection sensitivity"),
|
|
19431
|
+
e
|
|
19432
|
+
.numeric("motion_detection_sensitivity", ea.STATE_SET)
|
|
19433
|
+
.withValueMin(0)
|
|
19434
|
+
.withValueMax(10)
|
|
19435
|
+
.withValueStep(1)
|
|
19436
|
+
.withUnit("x")
|
|
19437
|
+
.withDescription("Motion detection sensitivity (Firmware version>=0122052017)"),
|
|
19438
|
+
e.binary("indicator", ea.STATE_SET, "ON", "OFF").withDescription("LED indicator mode"),
|
|
19439
|
+
],
|
|
19440
|
+
meta: {
|
|
19441
|
+
tuyaDatapoints: [
|
|
19442
|
+
[1, "presence", tuya.valueConverter.trueFalse1],
|
|
19443
|
+
[106, "illuminance", tuya.valueConverter.raw],
|
|
19444
|
+
[102, "fading_time", tuya.valueConverter.raw],
|
|
19445
|
+
[4, "static_detection_distance", tuya.valueConverter.divideBy100],
|
|
19446
|
+
[2, "static_detection_sensitivity", tuya.valueConverter.raw],
|
|
19447
|
+
[107, "indicator", tuya.valueConverter.onOff],
|
|
19448
|
+
[123, "motion_detection_sensitivity", tuya.valueConverter.raw],
|
|
19449
|
+
[121, "battery", tuya.valueConverter.raw],
|
|
19450
|
+
],
|
|
19451
|
+
},
|
|
19452
|
+
},
|
|
19453
|
+
{
|
|
19454
|
+
zigbeeModel: ["ZG-204ZE"],
|
|
19455
|
+
fingerprint: [{ modelID: "CK-BL702-MWS-01(7016)", manufacturerName: "ZG-204ZE" }],
|
|
19456
|
+
model: "ZG-204ZE",
|
|
19457
|
+
vendor: "HOBEIAN",
|
|
19458
|
+
description: "10G mw motion detection",
|
|
19459
|
+
fromZigbee: [tuya.fz.datapoints],
|
|
19460
|
+
toZigbee: [tuya.tz.datapoints],
|
|
19461
|
+
exposes: [
|
|
19462
|
+
e.presence(),
|
|
19463
|
+
e.battery(),
|
|
19464
|
+
e
|
|
19465
|
+
.numeric("fading_time", ea.STATE_SET)
|
|
19466
|
+
.withValueMin(0)
|
|
19467
|
+
.withValueMax(28800)
|
|
19468
|
+
.withValueStep(1)
|
|
19469
|
+
.withUnit("s")
|
|
19470
|
+
.withDescription("Motion keep time"),
|
|
19471
|
+
e.binary("indicator", ea.STATE_SET, "ON", "OFF").withDescription("LED indicator mode"),
|
|
19472
|
+
e
|
|
19473
|
+
.numeric("motion_detection_sensitivity", ea.STATE_SET)
|
|
19474
|
+
.withValueMin(0)
|
|
19475
|
+
.withValueMax(19)
|
|
19476
|
+
.withValueStep(1)
|
|
19477
|
+
.withUnit("x")
|
|
19478
|
+
.withDescription("The larger the value, the more sensitive it is (refresh and update only while active)"),
|
|
19479
|
+
],
|
|
19480
|
+
meta: {
|
|
19481
|
+
tuyaDatapoints: [
|
|
19482
|
+
[1, "presence", tuya.valueConverter.trueFalse1],
|
|
19483
|
+
[102, "fading_time", tuya.valueConverter.raw],
|
|
19484
|
+
[2, "motion_detection_sensitivity", tuya.valueConverter.raw],
|
|
19485
|
+
[108, "indicator", tuya.valueConverter.onOff],
|
|
19486
|
+
[110, "battery", tuya.valueConverter.raw],
|
|
19487
|
+
],
|
|
19488
|
+
},
|
|
19489
|
+
},
|
|
19490
|
+
{
|
|
19491
|
+
fingerprint: tuya.fingerprint("TS0049", ["_TZ3000_kz1anoi8"]),
|
|
19492
|
+
model: "HZ-WT02",
|
|
19493
|
+
vendor: "Haozee",
|
|
19494
|
+
description: "Water valve",
|
|
19495
|
+
toZigbee: [tzLocal.ts0049_countdown],
|
|
19496
|
+
fromZigbee: [fzLocal.ts0049_countdown],
|
|
19497
|
+
extend: [
|
|
19498
|
+
m.battery(),
|
|
19499
|
+
m.onOff({ powerOnBehavior: false }),
|
|
19500
|
+
m.deviceAddCustomCluster("manuSpecificTuyaE001", {
|
|
19501
|
+
ID: 0xe001,
|
|
19502
|
+
attributes: {},
|
|
19503
|
+
commands: {
|
|
19504
|
+
setCountdown: {
|
|
19505
|
+
ID: 0xfe,
|
|
19506
|
+
parameters: [{ name: "data", type: 1008 }],
|
|
19507
|
+
},
|
|
19508
|
+
},
|
|
19509
|
+
commandsResponse: {},
|
|
19510
|
+
}),
|
|
19511
|
+
],
|
|
19512
|
+
exposes: [
|
|
19513
|
+
e
|
|
19514
|
+
.numeric("water_countdown", ea.STATE_SET)
|
|
19515
|
+
.withValueMin(1)
|
|
19516
|
+
.withValueMax(1440)
|
|
19517
|
+
.withValueStep(1)
|
|
19518
|
+
.withUnit("minute")
|
|
19519
|
+
.withDescription("Watering countdown to turn device off after a certain time"),
|
|
19520
|
+
],
|
|
19521
|
+
},
|
|
19362
19522
|
{
|
|
19363
19523
|
fingerprint: tuya.fingerprint("TS0601", ["_TZE284_7zazvlyn", "_TZE284_idn2htgu"]),
|
|
19364
19524
|
model: "F3-Pro",
|