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.
Files changed (173) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/converters/fromZigbee.d.ts +0 -5
  3. package/dist/converters/fromZigbee.d.ts.map +1 -1
  4. package/dist/converters/fromZigbee.js +2 -28
  5. package/dist/converters/fromZigbee.js.map +1 -1
  6. package/dist/devices/adeo.d.ts.map +1 -1
  7. package/dist/devices/adeo.js +0 -1
  8. package/dist/devices/adeo.js.map +1 -1
  9. package/dist/devices/airam.js +2 -2
  10. package/dist/devices/airam.js.map +1 -1
  11. package/dist/devices/alecto.d.ts.map +1 -1
  12. package/dist/devices/alecto.js +1 -2
  13. package/dist/devices/alecto.js.map +1 -1
  14. package/dist/devices/bticino.js +1 -1
  15. package/dist/devices/bticino.js.map +1 -1
  16. package/dist/devices/busch_jaeger.d.ts.map +1 -1
  17. package/dist/devices/busch_jaeger.js +1 -10
  18. package/dist/devices/busch_jaeger.js.map +1 -1
  19. package/dist/devices/candeo.d.ts.map +1 -1
  20. package/dist/devices/candeo.js +8 -9
  21. package/dist/devices/candeo.js.map +1 -1
  22. package/dist/devices/centralite.js +2 -2
  23. package/dist/devices/centralite.js.map +1 -1
  24. package/dist/devices/climax.js +1 -1
  25. package/dist/devices/climax.js.map +1 -1
  26. package/dist/devices/custom_devices_diy.d.ts.map +1 -1
  27. package/dist/devices/custom_devices_diy.js +6 -7
  28. package/dist/devices/custom_devices_diy.js.map +1 -1
  29. package/dist/devices/develco.js +2 -2
  30. package/dist/devices/develco.js.map +1 -1
  31. package/dist/devices/diyruz.js +1 -1
  32. package/dist/devices/diyruz.js.map +1 -1
  33. package/dist/devices/evology.js +1 -1
  34. package/dist/devices/evology.js.map +1 -1
  35. package/dist/devices/fantem.js +1 -1
  36. package/dist/devices/fantem.js.map +1 -1
  37. package/dist/devices/ge.js +1 -1
  38. package/dist/devices/ge.js.map +1 -1
  39. package/dist/devices/gewiss.js +1 -1
  40. package/dist/devices/gewiss.js.map +1 -1
  41. package/dist/devices/heiman.js +6 -6
  42. package/dist/devices/heiman.js.map +1 -1
  43. package/dist/devices/hive.d.ts.map +1 -1
  44. package/dist/devices/hive.js +1 -8
  45. package/dist/devices/hive.js.map +1 -1
  46. package/dist/devices/honyar.js +1 -1
  47. package/dist/devices/honyar.js.map +1 -1
  48. package/dist/devices/immax.js +2 -2
  49. package/dist/devices/immax.js.map +1 -1
  50. package/dist/devices/index.d.ts.map +1 -1
  51. package/dist/devices/index.js +5 -1
  52. package/dist/devices/index.js.map +1 -1
  53. package/dist/devices/inovelli.js +1 -1
  54. package/dist/devices/inovelli.js.map +1 -1
  55. package/dist/devices/iotperfect.d.ts.map +1 -1
  56. package/dist/devices/iotperfect.js +2 -3
  57. package/dist/devices/iotperfect.js.map +1 -1
  58. package/dist/devices/iris.js +1 -1
  59. package/dist/devices/iris.js.map +1 -1
  60. package/dist/devices/javis.js +1 -1
  61. package/dist/devices/javis.js.map +1 -1
  62. package/dist/devices/legrand.d.ts.map +1 -1
  63. package/dist/devices/legrand.js +10 -41
  64. package/dist/devices/legrand.js.map +1 -1
  65. package/dist/devices/lellki.js +1 -1
  66. package/dist/devices/lellki.js.map +1 -1
  67. package/dist/devices/lidl.js +2 -2
  68. package/dist/devices/lidl.js.map +1 -1
  69. package/dist/devices/lonsonho.js +3 -3
  70. package/dist/devices/lonsonho.js.map +1 -1
  71. package/dist/devices/lumi.d.ts.map +1 -1
  72. package/dist/devices/lumi.js +4 -16
  73. package/dist/devices/lumi.js.map +1 -1
  74. package/dist/devices/mercator.js +2 -2
  75. package/dist/devices/mercator.js.map +1 -1
  76. package/dist/devices/moes.js +6 -6
  77. package/dist/devices/moes.js.map +1 -1
  78. package/dist/devices/namron.d.ts.map +1 -1
  79. package/dist/devices/namron.js +1 -9
  80. package/dist/devices/namron.js.map +1 -1
  81. package/dist/devices/neo.js +2 -2
  82. package/dist/devices/neo.js.map +1 -1
  83. package/dist/devices/novo.d.ts.map +1 -1
  84. package/dist/devices/novo.js +1 -2
  85. package/dist/devices/novo.js.map +1 -1
  86. package/dist/devices/nyce.d.ts.map +1 -1
  87. package/dist/devices/nyce.js +0 -6
  88. package/dist/devices/nyce.js.map +1 -1
  89. package/dist/devices/orvibo.js +2 -2
  90. package/dist/devices/orvibo.js.map +1 -1
  91. package/dist/devices/osram.js +1 -1
  92. package/dist/devices/osram.js.map +1 -1
  93. package/dist/devices/owon.js +2 -2
  94. package/dist/devices/owon.js.map +1 -1
  95. package/dist/devices/perenio.js +2 -2
  96. package/dist/devices/perenio.js.map +1 -1
  97. package/dist/devices/philips.d.ts.map +1 -1
  98. package/dist/devices/philips.js +33 -5
  99. package/dist/devices/philips.js.map +1 -1
  100. package/dist/devices/qa.js +2 -2
  101. package/dist/devices/qa.js.map +1 -1
  102. package/dist/devices/qoto.js +1 -1
  103. package/dist/devices/qoto.js.map +1 -1
  104. package/dist/devices/robb.js +2 -2
  105. package/dist/devices/robb.js.map +1 -1
  106. package/dist/devices/rtx.js +1 -1
  107. package/dist/devices/rtx.js.map +1 -1
  108. package/dist/devices/saswell.js +1 -1
  109. package/dist/devices/saswell.js.map +1 -1
  110. package/dist/devices/schneider_electric.d.ts.map +1 -1
  111. package/dist/devices/schneider_electric.js +3 -27
  112. package/dist/devices/schneider_electric.js.map +1 -1
  113. package/dist/devices/siglis.d.ts.map +1 -1
  114. package/dist/devices/siglis.js +1 -10
  115. package/dist/devices/siglis.js.map +1 -1
  116. package/dist/devices/siterwell.d.ts.map +1 -1
  117. package/dist/devices/siterwell.js +1 -2
  118. package/dist/devices/siterwell.js.map +1 -1
  119. package/dist/devices/slacky_diy.d.ts.map +1 -1
  120. package/dist/devices/slacky_diy.js +0 -1
  121. package/dist/devices/slacky_diy.js.map +1 -1
  122. package/dist/devices/sohan_electric.d.ts.map +1 -1
  123. package/dist/devices/sohan_electric.js +1 -2
  124. package/dist/devices/sohan_electric.js.map +1 -1
  125. package/dist/devices/somgoms.d.ts.map +1 -1
  126. package/dist/devices/somgoms.js +4 -5
  127. package/dist/devices/somgoms.js.map +1 -1
  128. package/dist/devices/sonoff.d.ts.map +1 -1
  129. package/dist/devices/sonoff.js +10 -1
  130. package/dist/devices/sonoff.js.map +1 -1
  131. package/dist/devices/sunricher.js +1 -1
  132. package/dist/devices/sunricher.js.map +1 -1
  133. package/dist/devices/terncy.js +1 -1
  134. package/dist/devices/terncy.js.map +1 -1
  135. package/dist/devices/tnce.d.ts +3 -0
  136. package/dist/devices/tnce.d.ts.map +1 -0
  137. package/dist/devices/tnce.js +54 -0
  138. package/dist/devices/tnce.js.map +1 -0
  139. package/dist/devices/trust.js +3 -3
  140. package/dist/devices/trust.js.map +1 -1
  141. package/dist/devices/tuya.d.ts.map +1 -1
  142. package/dist/devices/tuya.js +257 -97
  143. package/dist/devices/tuya.js.map +1 -1
  144. package/dist/devices/vesternet.js +8 -8
  145. package/dist/devices/vesternet.js.map +1 -1
  146. package/dist/devices/vimar.js +1 -1
  147. package/dist/devices/vimar.js.map +1 -1
  148. package/dist/devices/visonic.js +2 -2
  149. package/dist/devices/visonic.js.map +1 -1
  150. package/dist/devices/vsmart.d.ts +3 -0
  151. package/dist/devices/vsmart.d.ts.map +1 -0
  152. package/dist/devices/vsmart.js +442 -0
  153. package/dist/devices/vsmart.js.map +1 -0
  154. package/dist/devices/weten.d.ts.map +1 -1
  155. package/dist/devices/weten.js +1 -2
  156. package/dist/devices/weten.js.map +1 -1
  157. package/dist/devices/woox.js +2 -2
  158. package/dist/devices/woox.js.map +1 -1
  159. package/dist/devices/xyzroe.d.ts.map +1 -1
  160. package/dist/devices/xyzroe.js +1 -10
  161. package/dist/devices/xyzroe.js.map +1 -1
  162. package/dist/devices/zemismart.js +4 -4
  163. package/dist/devices/zemismart.js.map +1 -1
  164. package/dist/lib/modernExtend.d.ts +2 -0
  165. package/dist/lib/modernExtend.d.ts.map +1 -1
  166. package/dist/lib/modernExtend.js +18 -2
  167. package/dist/lib/modernExtend.js.map +1 -1
  168. package/dist/lib/tuya.js +1 -1
  169. package/dist/lib/tuya.js.map +1 -1
  170. package/dist/lib/utils.js +1 -1
  171. package/dist/lib/utils.js.map +1 -1
  172. package/dist/models-index.json +1 -1
  173. package/package.json +1 -1
@@ -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] = (v / 100) * energy_sign;
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] = (v / 100) * energy_sign;
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, fz.ignore_basic_report],
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.ignore_basic_report, fz.ias_contact_alarm_1_report],
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.ignore_basic_report, fz.ias_contact_alarm_1_report],
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, fz.ignore_basic_report],
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.ignore_basic_report, fz.ias_occupancy_alarm_1_report],
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, fz.ignore_basic_report],
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.ignore_basic_report, fz.ias_occupancy_alarm_1_report],
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.ignore_basic_report, fz.ZM35HQ_attr, legacy.fromZigbee.ZM35HQ_battery],
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.ignore_basic_report, fz.ZM35HQ_attr, fz.battery],
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.ignore_basic_report, fz.ZM35HQ_attr, fz.battery],
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, fz.ignore_basic_report],
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: [fz.ignore_basic_report, legacy.fromZigbee.tuya_switch],
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: [fz.ignore_basic_report, legacy.fromZigbee.tuya_switch],
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: [fz.ignore_basic_report, legacy.fromZigbee.tuya_switch],
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: [fz.ignore_basic_report, legacy.fromZigbee.tuya_switch],
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, fz.ignore_basic_report],
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
- toZigbee: [],
3733
- exposes: [e.battery(), e.temperature(), e.humidity(), e.battery_voltage()],
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, fz.ignore_basic_report],
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.ignore_basic_report, fz.ignore_tuya_raw, legacy.fromZigbee.wls100z_water_leak],
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, fz.ignore_basic_report, tuya.fz.power_outage_memory, tuya.fz.switch_type],
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, fz.ignore_basic_report, tuya.fz.power_on_behavior_1, tuya.fz.switch_type],
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, fz.ignore_basic_report],
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, fz.ignore_basic_report],
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, fz.ignore_basic_report],
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.ignore_basic_report, fz.ignore_tuya_set_time],
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, fz.ignore_basic_report, tuya.fz.power_outage_memory, tuya.fz.indicator_mode],
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, fz.ignore_basic_report, fz.ignore_time_read],
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.ignore_basic_report, fz.ias_occupancy_alarm_1],
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, fz.ignore_basic_report],
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, fz.ignore_basic_report],
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, fz.ignore_basic_report, fzLocal.TS0726_action],
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, fz.ignore_basic_report, fzLocal.TS0726_action],
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, fz.ignore_basic_report, fzLocal.TS0726_action],
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, fz.ignore_basic_report, fzLocal.TS0726_action],
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, fz.ignore_basic_report, fzLocal.TS0726_action],
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, fz.ignore_basic_report, fzLocal.TS0726_action],
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, fz.ignore_basic_report, fzLocal.TS0726_action],
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, fz.ignore_basic_report, legacy.fromZigbee.tuya_dimmer],
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, fz.ignore_basic_report],
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.ignore_basic_report, fz.ignore_tuya_set_time, legacy.fromZigbee.x5h_thermostat],
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, fz.ignore_basic_report, tuya.fz.power_outage_memory, fz.tuya_relay_din_led_indicator],
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, fz.ignore_basic_report],
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, fz.ignore_basic_report],
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.divideBy10],
10495
- [24, "humidity_calibration", tuya.valueConverter.raw],
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, fz.ignore_basic_report /*tuya.fz.on_off_countdown,*/],
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", ["_TZE200_jhkttplm"]),
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.divideBy10],
16341
- [105, "humidity_calibration", tuya.valueConverter.raw],
16342
- [102, "soil_calibration", tuya.valueConverter.raw],
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: [fz.ignore_basic_report],
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: [fz.ignore_basic_report, fzLocal.TS0726_action],
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: [fz.ignore_basic_report, fzLocal.TS0726_action],
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: [fz.ignore_basic_report, fzLocal.TS0726_action],
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: [fz.ignore_basic_report, fzLocal.TS0726_action],
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.divideBy10],
18416
- [104, "humidity_calibration", tuya.valueConverter.raw],
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.divideBy10],
18593
- [105, "humidity_calibration", tuya.valueConverter.raw],
18594
- [102, "soil_calibration", tuya.valueConverter.raw],
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.divideBy10],
18871
- [104, "humidity_calibration", tuya.valueConverter.raw],
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",