zigbee-herdsman-converters 23.3.0 → 23.5.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 (225) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/dist/converters/fromZigbee.d.ts.map +1 -1
  3. package/dist/converters/fromZigbee.js +53 -11
  4. package/dist/converters/fromZigbee.js.map +1 -1
  5. package/dist/converters/toZigbee.d.ts.map +1 -1
  6. package/dist/converters/toZigbee.js +83 -9
  7. package/dist/converters/toZigbee.js.map +1 -1
  8. package/dist/devices/ITCommander.d.ts.map +1 -1
  9. package/dist/devices/ITCommander.js +1 -0
  10. package/dist/devices/ITCommander.js.map +1 -1
  11. package/dist/devices/adeo.d.ts.map +1 -1
  12. package/dist/devices/adeo.js +1 -0
  13. package/dist/devices/adeo.js.map +1 -1
  14. package/dist/devices/atlantic.d.ts.map +1 -1
  15. package/dist/devices/atlantic.js +2 -0
  16. package/dist/devices/atlantic.js.map +1 -1
  17. package/dist/devices/avatto.js +6 -6
  18. package/dist/devices/avatto.js.map +1 -1
  19. package/dist/devices/bosch.d.ts.map +1 -1
  20. package/dist/devices/bosch.js +2 -0
  21. package/dist/devices/bosch.js.map +1 -1
  22. package/dist/devices/busch_jaeger.js +1 -1
  23. package/dist/devices/busch_jaeger.js.map +1 -1
  24. package/dist/devices/custom_devices_diy.d.ts.map +1 -1
  25. package/dist/devices/custom_devices_diy.js +18 -13
  26. package/dist/devices/custom_devices_diy.js.map +1 -1
  27. package/dist/devices/develco.js +1 -1
  28. package/dist/devices/develco.js.map +1 -1
  29. package/dist/devices/diyruz.d.ts.map +1 -1
  30. package/dist/devices/diyruz.js +2 -0
  31. package/dist/devices/diyruz.js.map +1 -1
  32. package/dist/devices/efekta.d.ts.map +1 -1
  33. package/dist/devices/efekta.js +26 -10
  34. package/dist/devices/efekta.js.map +1 -1
  35. package/dist/devices/envilar.d.ts.map +1 -1
  36. package/dist/devices/envilar.js +7 -0
  37. package/dist/devices/envilar.js.map +1 -1
  38. package/dist/devices/essentials.js +3 -3
  39. package/dist/devices/essentials.js.map +1 -1
  40. package/dist/devices/ewelink.d.ts.map +1 -1
  41. package/dist/devices/ewelink.js +15 -37
  42. package/dist/devices/ewelink.js.map +1 -1
  43. package/dist/devices/gledopto.d.ts.map +1 -1
  44. package/dist/devices/gledopto.js +2 -1
  45. package/dist/devices/gledopto.js.map +1 -1
  46. package/dist/devices/gmmts.d.ts.map +1 -1
  47. package/dist/devices/gmmts.js +7 -0
  48. package/dist/devices/gmmts.js.map +1 -1
  49. package/dist/devices/hive.js +1 -1
  50. package/dist/devices/hive.js.map +1 -1
  51. package/dist/devices/ikea.js +1 -1
  52. package/dist/devices/ikea.js.map +1 -1
  53. package/dist/devices/imou.d.ts.map +1 -1
  54. package/dist/devices/imou.js +7 -0
  55. package/dist/devices/imou.js.map +1 -1
  56. package/dist/devices/index.d.ts.map +1 -1
  57. package/dist/devices/index.js +2 -0
  58. package/dist/devices/index.js.map +1 -1
  59. package/dist/devices/inovelli.d.ts.map +1 -1
  60. package/dist/devices/inovelli.js +70 -36
  61. package/dist/devices/inovelli.js.map +1 -1
  62. package/dist/devices/insta.js +1 -1
  63. package/dist/devices/insta.js.map +1 -1
  64. package/dist/devices/keen_home.d.ts.map +1 -1
  65. package/dist/devices/keen_home.js +2 -4
  66. package/dist/devices/keen_home.js.map +1 -1
  67. package/dist/devices/lidl.d.ts.map +1 -1
  68. package/dist/devices/lidl.js +5 -2
  69. package/dist/devices/lidl.js.map +1 -1
  70. package/dist/devices/lifecontrol.js +1 -1
  71. package/dist/devices/lifecontrol.js.map +1 -1
  72. package/dist/devices/linptech.d.ts.map +1 -1
  73. package/dist/devices/linptech.js +1 -0
  74. package/dist/devices/linptech.js.map +1 -1
  75. package/dist/devices/lixee.d.ts.map +1 -1
  76. package/dist/devices/lixee.js +69 -49
  77. package/dist/devices/lixee.js.map +1 -1
  78. package/dist/devices/lumi.d.ts.map +1 -1
  79. package/dist/devices/lumi.js +20 -91
  80. package/dist/devices/lumi.js.map +1 -1
  81. package/dist/devices/muller_licht.d.ts.map +1 -1
  82. package/dist/devices/muller_licht.js +1 -5
  83. package/dist/devices/muller_licht.js.map +1 -1
  84. package/dist/devices/multiterm.d.ts.map +1 -1
  85. package/dist/devices/multiterm.js +1 -0
  86. package/dist/devices/multiterm.js.map +1 -1
  87. package/dist/devices/namron.js +2 -2
  88. package/dist/devices/namron.js.map +1 -1
  89. package/dist/devices/nue_3a.d.ts.map +1 -1
  90. package/dist/devices/nue_3a.js +2 -0
  91. package/dist/devices/nue_3a.js.map +1 -1
  92. package/dist/devices/orvibo.d.ts.map +1 -1
  93. package/dist/devices/orvibo.js +3 -0
  94. package/dist/devices/orvibo.js.map +1 -1
  95. package/dist/devices/osram.js +2 -2
  96. package/dist/devices/osram.js.map +1 -1
  97. package/dist/devices/owon.d.ts.map +1 -1
  98. package/dist/devices/owon.js +2 -0
  99. package/dist/devices/owon.js.map +1 -1
  100. package/dist/devices/philips.d.ts.map +1 -1
  101. package/dist/devices/philips.js +15 -1
  102. package/dist/devices/philips.js.map +1 -1
  103. package/dist/devices/rgb_genie.d.ts.map +1 -1
  104. package/dist/devices/rgb_genie.js +2 -0
  105. package/dist/devices/rgb_genie.js.map +1 -1
  106. package/dist/devices/robb.d.ts.map +1 -1
  107. package/dist/devices/robb.js +7 -0
  108. package/dist/devices/robb.js.map +1 -1
  109. package/dist/devices/samotech.d.ts.map +1 -1
  110. package/dist/devices/samotech.js +2 -1
  111. package/dist/devices/samotech.js.map +1 -1
  112. package/dist/devices/schneider_electric.d.ts.map +1 -1
  113. package/dist/devices/schneider_electric.js +8 -4
  114. package/dist/devices/schneider_electric.js.map +1 -1
  115. package/dist/devices/shinasystem.d.ts.map +1 -1
  116. package/dist/devices/shinasystem.js +6 -3
  117. package/dist/devices/shinasystem.js.map +1 -1
  118. package/dist/devices/sinope.d.ts.map +1 -1
  119. package/dist/devices/sinope.js +3 -0
  120. package/dist/devices/sinope.js.map +1 -1
  121. package/dist/devices/sonoff.d.ts.map +1 -1
  122. package/dist/devices/sonoff.js +2 -4
  123. package/dist/devices/sonoff.js.map +1 -1
  124. package/dist/devices/sprut.d.ts +3 -0
  125. package/dist/devices/sprut.d.ts.map +1 -0
  126. package/dist/devices/sprut.js +119 -0
  127. package/dist/devices/sprut.js.map +1 -0
  128. package/dist/devices/sunricher.d.ts.map +1 -1
  129. package/dist/devices/sunricher.js +17 -743
  130. package/dist/devices/sunricher.js.map +1 -1
  131. package/dist/devices/third_reality.d.ts.map +1 -1
  132. package/dist/devices/third_reality.js +1 -4
  133. package/dist/devices/third_reality.js.map +1 -1
  134. package/dist/devices/tuya.d.ts.map +1 -1
  135. package/dist/devices/tuya.js +56 -23
  136. package/dist/devices/tuya.js.map +1 -1
  137. package/dist/devices/ubisys.d.ts.map +1 -1
  138. package/dist/devices/ubisys.js +6 -1
  139. package/dist/devices/ubisys.js.map +1 -1
  140. package/dist/devices/xyzroe.d.ts.map +1 -1
  141. package/dist/devices/xyzroe.js +10 -0
  142. package/dist/devices/xyzroe.js.map +1 -1
  143. package/dist/devices/yale.js +1 -1
  144. package/dist/devices/yale.js.map +1 -1
  145. package/dist/devices/yandex.js +1 -1
  146. package/dist/devices/yandex.js.map +1 -1
  147. package/dist/devices/yokis.d.ts.map +1 -1
  148. package/dist/devices/yokis.js +74 -37
  149. package/dist/devices/yokis.js.map +1 -1
  150. package/dist/devices/ysrsai.js +1 -1
  151. package/dist/devices/ysrsai.js.map +1 -1
  152. package/dist/index.d.ts +1 -0
  153. package/dist/index.d.ts.map +1 -1
  154. package/dist/index.js +24 -6
  155. package/dist/index.js.map +1 -1
  156. package/dist/indexer.d.ts.map +1 -1
  157. package/dist/indexer.js +1 -0
  158. package/dist/indexer.js.map +1 -1
  159. package/dist/lib/color.d.ts.map +1 -1
  160. package/dist/lib/color.js +9 -1
  161. package/dist/lib/color.js.map +1 -1
  162. package/dist/lib/configureKey.js +9 -0
  163. package/dist/lib/configureKey.js.map +1 -1
  164. package/dist/lib/develco.d.ts.map +1 -1
  165. package/dist/lib/develco.js +1 -0
  166. package/dist/lib/develco.js.map +1 -1
  167. package/dist/lib/ewelink.d.ts.map +1 -1
  168. package/dist/lib/ewelink.js +10 -7
  169. package/dist/lib/ewelink.js.map +1 -1
  170. package/dist/lib/exposes.d.ts +17 -17
  171. package/dist/lib/exposes.d.ts.map +1 -1
  172. package/dist/lib/exposes.js +50 -30
  173. package/dist/lib/exposes.js.map +1 -1
  174. package/dist/lib/generateDefinition.d.ts.map +1 -1
  175. package/dist/lib/generateDefinition.js +2 -1
  176. package/dist/lib/generateDefinition.js.map +1 -1
  177. package/dist/lib/ikea.d.ts.map +1 -1
  178. package/dist/lib/ikea.js +8 -0
  179. package/dist/lib/ikea.js.map +1 -1
  180. package/dist/lib/ledvance.d.ts.map +1 -1
  181. package/dist/lib/ledvance.js +2 -0
  182. package/dist/lib/ledvance.js.map +1 -1
  183. package/dist/lib/legacy.d.ts +2 -2
  184. package/dist/lib/legacy.d.ts.map +1 -1
  185. package/dist/lib/legacy.js +177 -3
  186. package/dist/lib/legacy.js.map +1 -1
  187. package/dist/lib/light.d.ts.map +1 -1
  188. package/dist/lib/light.js +2 -0
  189. package/dist/lib/light.js.map +1 -1
  190. package/dist/lib/lumi.d.ts +2 -2
  191. package/dist/lib/lumi.d.ts.map +1 -1
  192. package/dist/lib/lumi.js +56 -4
  193. package/dist/lib/lumi.js.map +1 -1
  194. package/dist/lib/modernExtend.d.ts +11 -7
  195. package/dist/lib/modernExtend.d.ts.map +1 -1
  196. package/dist/lib/modernExtend.js +90 -6
  197. package/dist/lib/modernExtend.js.map +1 -1
  198. package/dist/lib/ota.d.ts.map +1 -1
  199. package/dist/lib/ota.js +10 -1
  200. package/dist/lib/ota.js.map +1 -1
  201. package/dist/lib/philips.d.ts +1 -1
  202. package/dist/lib/philips.d.ts.map +1 -1
  203. package/dist/lib/philips.js +20 -1
  204. package/dist/lib/philips.js.map +1 -1
  205. package/dist/lib/reporting.d.ts.map +1 -1
  206. package/dist/lib/reporting.js +0 -1
  207. package/dist/lib/reporting.js.map +1 -1
  208. package/dist/lib/sunricher.d.ts +17 -3
  209. package/dist/lib/sunricher.d.ts.map +1 -1
  210. package/dist/lib/sunricher.js +771 -1
  211. package/dist/lib/sunricher.js.map +1 -1
  212. package/dist/lib/tuya.d.ts +5 -5
  213. package/dist/lib/tuya.d.ts.map +1 -1
  214. package/dist/lib/tuya.js +21 -6
  215. package/dist/lib/tuya.js.map +1 -1
  216. package/dist/lib/types.d.ts +3 -3
  217. package/dist/lib/types.d.ts.map +1 -1
  218. package/dist/lib/types.js +0 -1
  219. package/dist/lib/types.js.map +1 -1
  220. package/dist/lib/utils.d.ts +1 -1
  221. package/dist/lib/utils.d.ts.map +1 -1
  222. package/dist/lib/utils.js +17 -5
  223. package/dist/lib/utils.js.map +1 -1
  224. package/dist/models-index.json +1 -1
  225. package/package.json +5 -5
@@ -266,6 +266,7 @@ const convLocal = {
266
266
  },
267
267
  };
268
268
  const tzLocal = {
269
+ // biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
269
270
  TS030F_border: {
270
271
  key: ["border"],
271
272
  convertSet: async (entity, key, value, meta) => {
@@ -275,6 +276,7 @@ const tzLocal = {
275
276
  });
276
277
  },
277
278
  },
279
+ // biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
278
280
  TS0726_switch_mode: {
279
281
  key: ["switch_mode"],
280
282
  convertSet: async (entity, key, value, meta) => {
@@ -382,6 +384,7 @@ const tzLocal = {
382
384
  await entity.read("lightingColorCtrl", ["currentHue", "currentSaturation", "currentLevel", "tuyaRgbMode", "colorTemperature"]);
383
385
  },
384
386
  },
387
+ // biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
385
388
  TS0504B_color: {
386
389
  key: ["color"],
387
390
  convertSet: async (entity, key, value, meta) => {
@@ -424,6 +427,7 @@ const tzLocal = {
424
427
  const lookup = { mute: 0, low: 10, medium: 30, high: 50 };
425
428
  utils.assertString(value, "volume");
426
429
  const lookupValue = lookup[value];
430
+ // biome-ignore lint/style/noParameterAssign: ignored using `--suppress`
427
431
  value = value.toLowerCase();
428
432
  utils.validateValue(value, Object.keys(lookup));
429
433
  await entity.write("ssIasWd", { 2: { value: lookupValue, type: 0x0a } }, utils.getOptions(meta.mapped, entity));
@@ -447,6 +451,7 @@ const tzLocal = {
447
451
  }
448
452
  },
449
453
  },
454
+ // biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
450
455
  TS011F_threshold: {
451
456
  key: [
452
457
  "temperature_threshold",
@@ -558,6 +563,7 @@ const tzLocal = {
558
563
  },
559
564
  };
560
565
  const fzLocal = {
566
+ // biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
561
567
  TS0726_action: {
562
568
  cluster: "genOnOff",
563
569
  type: ["commandTuyaAction"],
@@ -565,9 +571,10 @@ const fzLocal = {
565
571
  return { action: `scene_${msg.endpoint.ID}` };
566
572
  },
567
573
  },
574
+ // biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
568
575
  TS0222_humidity: {
569
576
  ...fz.humidity,
570
- convert: async (model, msg, publish, options, meta) => {
577
+ convert: (model, msg, publish, options, meta) => {
571
578
  const result = fz.humidity.convert(model, msg, publish, options, meta);
572
579
  if (result)
573
580
  result.humidity *= 10;
@@ -595,6 +602,7 @@ const fzLocal = {
595
602
  return { action: `scene_${id}` };
596
603
  },
597
604
  },
605
+ // biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
598
606
  TS0201_battery: {
599
607
  cluster: "genPowerCfg",
600
608
  type: ["attributeReport", "readResponse"],
@@ -608,6 +616,7 @@ const fzLocal = {
608
616
  return fz.battery.convert(model, msg, publish, options, meta);
609
617
  },
610
618
  },
619
+ // biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
611
620
  TS0201_humidity: {
612
621
  ...fz.humidity,
613
622
  convert: (model, msg, publish, options, meta) => {
@@ -641,6 +650,7 @@ const fzLocal = {
641
650
  return result;
642
651
  },
643
652
  },
653
+ // biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
644
654
  TS011F_electrical_measurement: {
645
655
  ...fz.electrical_measurement,
646
656
  convert: async (model, msg, publish, options, meta) => {
@@ -682,6 +692,7 @@ const fzLocal = {
682
692
  return result;
683
693
  },
684
694
  },
695
+ // biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
685
696
  TS011F_threshold: {
686
697
  cluster: "manuSpecificTuya_3",
687
698
  type: "raw",
@@ -726,6 +737,7 @@ const fzLocal = {
726
737
  }
727
738
  },
728
739
  },
740
+ // biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
729
741
  PJ1203A_sync_time_increase_seq: {
730
742
  cluster: "manuSpecificTuya",
731
743
  type: ["commandMcuSyncTime"],
@@ -734,6 +746,7 @@ const fzLocal = {
734
746
  priv.last_seq += priv.seq_inc;
735
747
  },
736
748
  },
749
+ // biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
737
750
  PJ1203A_strict_fz_datapoints: {
738
751
  ...tuya.fz.datapoints,
739
752
  convert: (model, msg, publish, options, meta) => {
@@ -1723,7 +1736,7 @@ exports.definitions = [
1723
1736
  color: true,
1724
1737
  }),
1725
1738
  ],
1726
- configure: async (device, coordinatorEndpoint) => {
1739
+ configure: (device, coordinatorEndpoint) => {
1727
1740
  device.getEndpoint(1).saveClusterAttributeKeyValue("lightingColorCtrl", {
1728
1741
  colorCapabilities: 29,
1729
1742
  });
@@ -1741,7 +1754,7 @@ exports.definitions = [
1741
1754
  toZigbee: [tz.on_off, tzLocal.led_control, tuya.tz.do_not_disturb],
1742
1755
  fromZigbee: [fz.on_off, fz.tuya_led_controller, fz.brightness, fz.ignore_basic_report],
1743
1756
  exposes: [e.light_brightness_colortemp_colorhs([143, 500]).removeFeature("color_temp_startup"), tuya.exposes.doNotDisturb()],
1744
- configure: async (device, coordinatorEndpoint) => {
1757
+ configure: (device, coordinatorEndpoint) => {
1745
1758
  device.getEndpoint(1).saveClusterAttributeKeyValue("lightingColorCtrl", {
1746
1759
  colorCapabilities: 29,
1747
1760
  });
@@ -1762,7 +1775,7 @@ exports.definitions = [
1762
1775
  color: { modes: ["hs"], applyRedFix: true, enhancedHue: false },
1763
1776
  }),
1764
1777
  ],
1765
- configure: async (device, coordinatorEndpoint) => {
1778
+ configure: (device, coordinatorEndpoint) => {
1766
1779
  device.getEndpoint(1).saveClusterAttributeKeyValue("lightingColorCtrl", {
1767
1780
  colorCapabilities: 29,
1768
1781
  });
@@ -1777,7 +1790,7 @@ exports.definitions = [
1777
1790
  toZigbee: [tz.on_off, tzLocal.led_control, tuya.tz.do_not_disturb],
1778
1791
  fromZigbee: [fz.on_off, fz.tuya_led_controller, fz.brightness, fz.ignore_basic_report],
1779
1792
  exposes: [e.light_brightness_colortemp_colorhs([50, 1000]).removeFeature("color_temp_startup"), tuya.exposes.doNotDisturb()],
1780
- configure: async (device, coordinatorEndpoint) => {
1793
+ configure: (device, coordinatorEndpoint) => {
1781
1794
  device.getEndpoint(1).saveClusterAttributeKeyValue("lightingColorCtrl", {
1782
1795
  colorCapabilities: 29,
1783
1796
  });
@@ -2261,6 +2274,7 @@ exports.definitions = [
2261
2274
  "_TZE200_ojzhk75b",
2262
2275
  "_TZE200_w4cryh2i",
2263
2276
  "_TZE200_dfxkcots",
2277
+ "_TZE204_68utemio",
2264
2278
  "_TZE200_9i9dt8is",
2265
2279
  "_TZE200_ctq0k47x",
2266
2280
  "_TZE200_ebwgzdqq",
@@ -2310,6 +2324,7 @@ exports.definitions = [
2310
2324
  tuya.whitelabel("Moes", "ZS-SR-EUD-1", "Star ring smart dimmer switch 1 gang", ["_TZE204_hlx9tnzb"]),
2311
2325
  tuya.whitelabel("Moes", "MS-105Z", "Smart Dimmer module", ["_TZE200_la2c2uo9"]),
2312
2326
  tuya.whitelabel("Mercator Ikuü", "SSWM-DIMZ", "Switch Mechanism", ["_TZE200_9cxuhakf"]),
2327
+ tuya.whitelabel("Zemismart", "ZN2S-US1-SD", "Single gang dimmer", ["_TZE204_68utemio"]),
2313
2328
  tuya.whitelabel("Mercator Ikuü", "SSWRM-ZB", "Rotary dimmer mechanism", ["_TZE200_a0syesf5"]),
2314
2329
  tuya.whitelabel("Lonsonho", "EDM-1ZBB-EU", "Smart Dimmer Switch", ["_TZE200_0nauxa0p"]),
2315
2330
  tuya.whitelabel("ION Industries", "ID200W-ZIGB", "LED Zigbee Dimmer", ["_TZE200_ykgar0ow"]),
@@ -2923,7 +2938,14 @@ exports.definitions = [
2923
2938
  },
2924
2939
  },
2925
2940
  {
2926
- fingerprint: tuya.fingerprint("TS0601", ["_TZE200_mwvfvw8g", "_TZE200_wnp4d4va", "_TZE200_cduqh1l0", "_TZE200_emxxanvi", "_TZE204_g4au0afs"]),
2941
+ fingerprint: tuya.fingerprint("TS0601", [
2942
+ "_TZE200_mwvfvw8g",
2943
+ "_TZE200_wnp4d4va",
2944
+ "_TZE200_cduqh1l0",
2945
+ "_TZE200_emxxanvi",
2946
+ "_TZE204_g4au0afs",
2947
+ "_TZE204_w1wwxoja",
2948
+ ]),
2927
2949
  model: "TS0601_switch_6_gang",
2928
2950
  vendor: "Tuya",
2929
2951
  description: "6 gang switch",
@@ -3173,7 +3195,7 @@ exports.definitions = [
3173
3195
  tuya.whitelabel("Lidl", "14147206L", "Livarno Lux ceiling light", ["_TZ3000_rylaozuc", "_TZ3000_5fkufhn1"]),
3174
3196
  tuya.whitelabel("Lidl", "14153905L", "Livarno Home LED floor lamp", ["_TZ3000_8uaoilu9"]),
3175
3197
  ],
3176
- configure: async (device, coordinatorEndpoint) => {
3198
+ configure: (device, coordinatorEndpoint) => {
3177
3199
  device.getEndpoint(1).saveClusterAttributeKeyValue("lightingColorCtrl", {
3178
3200
  colorCapabilities: 16,
3179
3201
  });
@@ -3256,7 +3278,7 @@ exports.definitions = [
3256
3278
  tuya.whitelabel("Mycket", "MS-SP-LE27WRGB", "E27 RGBW bulb", ["_TZ3000_evag0pvn"]),
3257
3279
  tuya.whitelabel("Lidl", "HG06104A", "Livarno Home RGB+CCT LED light strip 2m", ["_TZ3000_riwp3k79", "_TZ3000_riwp3k79"]),
3258
3280
  ],
3259
- configure: async (device, coordinatorEndpoint) => {
3281
+ configure: (device, coordinatorEndpoint) => {
3260
3282
  device.getEndpoint(1).saveClusterAttributeKeyValue("lightingColorCtrl", {
3261
3283
  colorCapabilities: 29,
3262
3284
  });
@@ -3360,7 +3382,7 @@ exports.definitions = [
3360
3382
  },
3361
3383
  },
3362
3384
  {
3363
- fingerprint: tuya.fingerprint("TS011F", ["_TZ3000_bep7ccew"]),
3385
+ fingerprint: tuya.fingerprint("TS011F", ["_TZ3000_bep7ccew", "_TZ3000_gazjngjl"]),
3364
3386
  model: "TS011F_2_gang_power",
3365
3387
  vendor: "Tuya",
3366
3388
  description: "2 gang socket with power monitoring and USB",
@@ -3715,6 +3737,7 @@ exports.definitions = [
3715
3737
  if (options?.expose_device_state === true) {
3716
3738
  return v === true ? "ON" : "OFF";
3717
3739
  }
3740
+ // biome-ignore lint/performance/noDelete: ignored using `--suppress`
3718
3741
  delete meta.state.state;
3719
3742
  },
3720
3743
  },
@@ -4227,6 +4250,13 @@ exports.definitions = [
4227
4250
  },
4228
4251
  whiteLabel: [tuya.whitelabel("AVATTO", "ZWSM16-3-Zigbee", "3 gang switch module", ["_TZ3000_hbic3ka3"])],
4229
4252
  },
4253
+ {
4254
+ fingerprint: tuya.fingerprint("TS0003", ["_TZ3000_ju82pu2b"]),
4255
+ model: "TW-03",
4256
+ vendor: "Tuya",
4257
+ description: "3-Gang switch",
4258
+ extend: [tuya.modernExtend.tuyaOnOff({ powerOnBehavior2: true, endpoints: ["l1", "l2", "l3"] })],
4259
+ },
4230
4260
  {
4231
4261
  fingerprint: tuya.fingerprint("TS0003", ["_TZ3000_vsasbzkf", "_TZ3000_nnwehhst"]),
4232
4262
  model: "TS0003_switch_module_1",
@@ -5059,7 +5089,7 @@ exports.definitions = [
5059
5089
  e.binary("factory_reset", ea.SET, true, false).withDescription("Factory reset the device"),
5060
5090
  ],
5061
5091
  whiteLabel: [tuya.whitelabel("Moes", "AM43-0.45/40-ES-EB", "Roller blind/shades drive motor", ["_TZE200_zah67ekd", "_TZE200_icka1clh"])],
5062
- configure: async (device, coordinatorEndpoint) => {
5092
+ configure: (device, coordinatorEndpoint) => {
5063
5093
  device.powerSource = "Mains (single phase)";
5064
5094
  device.save();
5065
5095
  },
@@ -6288,7 +6318,7 @@ exports.definitions = [
6288
6318
  e.smoke(),
6289
6319
  e.battery(),
6290
6320
  tuya.exposes.silence(),
6291
- tuya.exposes.selfTest(),
6321
+ e.test(),
6292
6322
  e.numeric("smoke_concentration", ea.STATE).withUnit("ppm").withDescription("Parts per million of smoke detected"),
6293
6323
  e.binary("device_fault", ea.STATE, true, false).withDescription("Indicates a fault with the device"),
6294
6324
  ],
@@ -7117,6 +7147,7 @@ exports.definitions = [
7117
7147
  extend: [
7118
7148
  tuya.modernExtend.tuyaOnOff({
7119
7149
  switchType: true,
7150
+ onOffCountdown: true,
7120
7151
  endpoints: ["left", "right"],
7121
7152
  }),
7122
7153
  ],
@@ -7176,6 +7207,7 @@ exports.definitions = [
7176
7207
  extend: [
7177
7208
  tuya.modernExtend.tuyaOnOff({
7178
7209
  switchType: true,
7210
+ onOffCountdown: true,
7179
7211
  endpoints: ["left", "center", "right"],
7180
7212
  }),
7181
7213
  ],
@@ -7731,7 +7763,7 @@ exports.definitions = [
7731
7763
  "preset",
7732
7764
  tuya.valueConverterBasic.lookup((_, device) => {
7733
7765
  // https://github.com/Koenkk/zigbee2mqtt/issues/21353#issuecomment-1938328429
7734
- if (["_TZE204_lzriup1j", "_TZE204_xnbkhhdr"].indexOf(device.manufacturerName) !== -1) {
7766
+ if (device.manufacturerName === "_TZE204_lzriup1j") {
7735
7767
  return {
7736
7768
  auto: tuya.enum(1),
7737
7769
  manual: tuya.enum(0),
@@ -8815,7 +8847,7 @@ exports.definitions = [
8815
8847
  },
8816
8848
  },
8817
8849
  {
8818
- fingerprint: tuya.fingerprint("TS0601", ["_TZE204_qasjif9e", "_TZE204_ztqnh5cg", "_TZE204_iadro9bf"]),
8850
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE204_qasjif9e", "_TZE204_ztqnh5cg", "_TZE204_iadro9bf", "_TZE284_iadro9bf"]),
8819
8851
  model: "ZY-M100-S_2",
8820
8852
  vendor: "Tuya",
8821
8853
  description: "Mini human breathe sensor",
@@ -9480,7 +9512,7 @@ exports.definitions = [
9480
9512
  },
9481
9513
  },
9482
9514
  {
9483
- fingerprint: tuya.fingerprint("TS0601", ["_TZE200_3towulqd", "_TZE200_1ibpyhdc", "_TZE200_bh3n6gk8", "_TZE200_ttcovulf"]),
9515
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_3towulqd", "_TZE200_1ibpyhdc", "_TZE200_bh3n6gk8", "_TZE200_ttcovulf", "_TZE200_gjldowol"]),
9484
9516
  model: "ZG-204ZL",
9485
9517
  vendor: "Tuya",
9486
9518
  description: "Luminance motion sensor",
@@ -12641,6 +12673,7 @@ exports.definitions = [
12641
12673
  if (options?.expose_device_state === true) {
12642
12674
  return v === true ? "ON" : "OFF";
12643
12675
  }
12676
+ // biome-ignore lint/performance/noDelete: ignored using `--suppress`
12644
12677
  delete meta.state.state;
12645
12678
  },
12646
12679
  },
@@ -15100,23 +15133,23 @@ exports.definitions = [
15100
15133
  tuya.valueConverter.thermostatSystemModeAndPresetMap({
15101
15134
  fromMap: {
15102
15135
  0: {
15103
- device_mode: "manual",
15104
- system_mode: "heat",
15136
+ deviceMode: "manual",
15137
+ systemMode: "heat",
15105
15138
  preset: "manual",
15106
15139
  },
15107
- 1: { device_mode: "auto", system_mode: "auto", preset: "auto" },
15140
+ 1: { deviceMode: "auto", systemMode: "auto", preset: "auto" },
15108
15141
  2: {
15109
- device_mode: "holiday",
15110
- system_mode: "heat",
15142
+ deviceMode: "holiday",
15143
+ systemMode: "heat",
15111
15144
  preset: "holiday",
15112
15145
  },
15113
15146
  3: {
15114
- device_mode: "comfort",
15115
- system_mode: "heat",
15147
+ deviceMode: "comfort",
15148
+ systemMode: "heat",
15116
15149
  preset: "comfort",
15117
15150
  },
15118
- 4: { device_mode: "eco", system_mode: "heat", preset: "eco" },
15119
- 5: { device_mode: "off", system_mode: "off", preset: "off" },
15151
+ 4: { deviceMode: "eco", systemMode: "heat", preset: "eco" },
15152
+ 5: { deviceMode: "off", systemMode: "off", preset: "off" },
15120
15153
  },
15121
15154
  }),
15122
15155
  ],