zigbee-herdsman-converters 25.50.0 → 25.51.1

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 (86) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/devices/avatto.d.ts.map +1 -1
  3. package/dist/devices/avatto.js +4 -10
  4. package/dist/devices/avatto.js.map +1 -1
  5. package/dist/devices/climax.js +1 -1
  6. package/dist/devices/climax.js.map +1 -1
  7. package/dist/devices/engo.d.ts.map +1 -1
  8. package/dist/devices/engo.js +2 -3
  9. package/dist/devices/engo.js.map +1 -1
  10. package/dist/devices/essentials.js +1 -1
  11. package/dist/devices/essentials.js.map +1 -1
  12. package/dist/devices/giex.js +1 -1
  13. package/dist/devices/giex.js.map +1 -1
  14. package/dist/devices/gledopto.d.ts.map +1 -1
  15. package/dist/devices/gledopto.js +2 -3
  16. package/dist/devices/gledopto.js.map +1 -1
  17. package/dist/devices/immax.d.ts.map +1 -1
  18. package/dist/devices/immax.js +1 -2
  19. package/dist/devices/immax.js.map +1 -1
  20. package/dist/devices/index.d.ts.map +1 -1
  21. package/dist/devices/index.js +2 -0
  22. package/dist/devices/index.js.map +1 -1
  23. package/dist/devices/innr.d.ts.map +1 -1
  24. package/dist/devices/innr.js +8 -0
  25. package/dist/devices/innr.js.map +1 -1
  26. package/dist/devices/lidl.d.ts.map +1 -1
  27. package/dist/devices/lidl.js +2 -3
  28. package/dist/devices/lidl.js.map +1 -1
  29. package/dist/devices/lincukoo.js +7 -7
  30. package/dist/devices/lincukoo.js.map +1 -1
  31. package/dist/devices/linptech.js +3 -3
  32. package/dist/devices/linptech.js.map +1 -1
  33. package/dist/devices/lonsonho.d.ts.map +1 -1
  34. package/dist/devices/lonsonho.js +1 -2
  35. package/dist/devices/lonsonho.js.map +1 -1
  36. package/dist/devices/moes.d.ts.map +1 -1
  37. package/dist/devices/moes.js +16 -19
  38. package/dist/devices/moes.js.map +1 -1
  39. package/dist/devices/multir.js +2 -2
  40. package/dist/devices/multir.js.map +1 -1
  41. package/dist/devices/nedis.js +1 -1
  42. package/dist/devices/nedis.js.map +1 -1
  43. package/dist/devices/neo.d.ts.map +1 -1
  44. package/dist/devices/neo.js +4 -10
  45. package/dist/devices/neo.js.map +1 -1
  46. package/dist/devices/nous.d.ts.map +1 -1
  47. package/dist/devices/nous.js +55 -5
  48. package/dist/devices/nous.js.map +1 -1
  49. package/dist/devices/onenuo.d.ts.map +1 -1
  50. package/dist/devices/onenuo.js +1 -3
  51. package/dist/devices/onenuo.js.map +1 -1
  52. package/dist/devices/orztech.js +5 -5
  53. package/dist/devices/orztech.js.map +1 -1
  54. package/dist/devices/qa.d.ts.map +1 -1
  55. package/dist/devices/qa.js +0 -2
  56. package/dist/devices/qa.js.map +1 -1
  57. package/dist/devices/saswell.js +1 -1
  58. package/dist/devices/saswell.js.map +1 -1
  59. package/dist/devices/senoro.js +1 -1
  60. package/dist/devices/senoro.js.map +1 -1
  61. package/dist/devices/soanalarm.d.ts.map +1 -1
  62. package/dist/devices/soanalarm.js +1 -3
  63. package/dist/devices/soanalarm.js.map +1 -1
  64. package/dist/devices/tech.js +2 -2
  65. package/dist/devices/tech.js.map +1 -1
  66. package/dist/devices/tuya.d.ts.map +1 -1
  67. package/dist/devices/tuya.js +238 -421
  68. package/dist/devices/tuya.js.map +1 -1
  69. package/dist/devices/vav.d.ts +3 -0
  70. package/dist/devices/vav.d.ts.map +1 -0
  71. package/dist/devices/vav.js +57 -0
  72. package/dist/devices/vav.js.map +1 -0
  73. package/dist/devices/weten.d.ts.map +1 -1
  74. package/dist/devices/weten.js +1 -2
  75. package/dist/devices/weten.js.map +1 -1
  76. package/dist/devices/woox.js +1 -1
  77. package/dist/devices/woox.js.map +1 -1
  78. package/dist/devices/zemismart.d.ts.map +1 -1
  79. package/dist/devices/zemismart.js +9 -8
  80. package/dist/devices/zemismart.js.map +1 -1
  81. package/dist/lib/tuya.d.ts +1 -1
  82. package/dist/lib/tuya.d.ts.map +1 -1
  83. package/dist/lib/tuya.js +1 -1
  84. package/dist/lib/tuya.js.map +1 -1
  85. package/dist/models-index.json +1 -1
  86. package/package.json +4 -4
@@ -1173,7 +1173,7 @@ exports.definitions = [
1173
1173
  model: "TS0601_water_valve",
1174
1174
  vendor: "Tuya",
1175
1175
  description: "Ultrasonic water meter valve",
1176
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
1176
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1177
1177
  exposes: [
1178
1178
  // Main valve switch
1179
1179
  e
@@ -1227,7 +1227,7 @@ exports.definitions = [
1227
1227
  model: "TS0601_water_meter",
1228
1228
  vendor: "Tuya",
1229
1229
  description: "Ultrasonic water meter",
1230
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
1230
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1231
1231
  exposes: [
1232
1232
  // Water consumption sensor
1233
1233
  e
@@ -1271,7 +1271,7 @@ exports.definitions = [
1271
1271
  model: "ZN2S-RS02E",
1272
1272
  vendor: "Tuya",
1273
1273
  description: "Two gang switch with colored backlight modes",
1274
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
1274
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1275
1275
  exposes: [
1276
1276
  e.switch().withDescription("All switches"),
1277
1277
  e.switch().withEndpoint("l1"),
@@ -1340,7 +1340,7 @@ exports.definitions = [
1340
1340
  vendor: "Tuya",
1341
1341
  description: "Door sensor with scene switch",
1342
1342
  fromZigbee: [fz.ias_contact_alarm_1, fz.battery, fz.ias_contact_alarm_1_report],
1343
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
1343
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1344
1344
  exposes: [e.action(["single", "double", "hold"]), e.contact(), e.battery_low(), e.tamper(), e.battery(), e.battery_voltage()],
1345
1345
  meta: {
1346
1346
  tuyaDatapoints: [[101, "action", tuya.valueConverterBasic.lookup({ single: 0, double: 1, hold: 2 })]],
@@ -1352,7 +1352,7 @@ exports.definitions = [
1352
1352
  model: "LKWSZ211",
1353
1353
  vendor: "Linkoze",
1354
1354
  description: "Scene remote with 2 keys",
1355
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
1355
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1356
1356
  exposes: [
1357
1357
  e.battery(),
1358
1358
  e.action(["button_1_single", "button_1_double", "button_1_hold", "button_2_single", "button_2_double", "button_2_hold"]),
@@ -1511,7 +1511,15 @@ exports.definitions = [
1511
1511
  model: "TS0601_temperature_humidity_sensor_2",
1512
1512
  vendor: "Tuya",
1513
1513
  description: "Temperature and humidity sensor",
1514
- extend: [tuya.modernExtend.tuyaBase({ dp: true, queryOnDeviceAnnounce: true, queryOnConfigure: true, respondToMcuVersionResponse: true })],
1514
+ extend: [
1515
+ tuya.modernExtend.tuyaBase({
1516
+ dp: true,
1517
+ queryOnDeviceAnnounce: true,
1518
+ queryOnConfigure: true,
1519
+ respondToMcuVersionResponse: true,
1520
+ timeStart: "1970",
1521
+ }),
1522
+ ],
1515
1523
  exposes: [e.temperature(), e.humidity(), tuya.exposes.batteryState(), tuya.exposes.temperatureUnit()],
1516
1524
  meta: {
1517
1525
  tuyaDatapoints: [
@@ -1535,7 +1543,7 @@ exports.definitions = [
1535
1543
  model: "TS0601_temperature_humidity_sensor_3",
1536
1544
  vendor: "Tuya",
1537
1545
  description: "Temperature & humidity sensor",
1538
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, queryOnConfigure: true })],
1546
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, queryOnConfigure: true, timeStart: "1970" })],
1539
1547
  exposes: [e.temperature(), e.humidity(), e.battery(), tuya.exposes.temperatureUnit()],
1540
1548
  meta: {
1541
1549
  tuyaDatapoints: [
@@ -1570,7 +1578,15 @@ exports.definitions = [
1570
1578
  model: "ZTH05Z",
1571
1579
  vendor: "Tuya",
1572
1580
  description: "Temperature and humidity sensor",
1573
- extend: [tuya.modernExtend.tuyaBase({ dp: true, queryOnDeviceAnnounce: true, queryOnConfigure: true, respondToMcuVersionResponse: true })],
1581
+ extend: [
1582
+ tuya.modernExtend.tuyaBase({
1583
+ dp: true,
1584
+ queryOnDeviceAnnounce: true,
1585
+ queryOnConfigure: true,
1586
+ respondToMcuVersionResponse: true,
1587
+ timeStart: "1970",
1588
+ }),
1589
+ ],
1574
1590
  exposes: [
1575
1591
  e.temperature(),
1576
1592
  e.humidity(),
@@ -1660,7 +1676,7 @@ exports.definitions = [
1660
1676
  model: "TS0601_contact_temperature_humidity_sensor",
1661
1677
  vendor: "Tuya",
1662
1678
  description: "Contact, temperature and humidity sensor",
1663
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "off" })],
1679
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1664
1680
  exposes: [e.contact(), e.temperature(), e.humidity(), e.battery()],
1665
1681
  meta: {
1666
1682
  tuyaDatapoints: [
@@ -1703,9 +1719,7 @@ exports.definitions = [
1703
1719
  model: "TS0601_illuminance_temperature_humidity_sensor_2",
1704
1720
  vendor: "Tuya",
1705
1721
  description: "Illuminance sensor",
1706
- fromZigbee: [tuya.fz.datapoints],
1707
- toZigbee: [tuya.tz.datapoints],
1708
- configure: tuya.configureMagicPacket,
1722
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1709
1723
  exposes: [e.illuminance(), e.temperature(), e.humidity()],
1710
1724
  meta: {
1711
1725
  tuyaDatapoints: [
@@ -1763,9 +1777,7 @@ exports.definitions = [
1763
1777
  model: "TS0601_gas_sensor_1",
1764
1778
  vendor: "Tuya",
1765
1779
  description: "Gas sensor",
1766
- fromZigbee: [tuya.fz.datapoints],
1767
- toZigbee: [tuya.tz.datapoints],
1768
- configure: tuya.configureMagicPacket,
1780
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1769
1781
  exposes: [e.gas(), tuya.exposes.selfTest(), tuya.exposes.selfTestResult(), tuya.exposes.faultAlarm(), tuya.exposes.silence()],
1770
1782
  meta: {
1771
1783
  tuyaDatapoints: [
@@ -1782,9 +1794,7 @@ exports.definitions = [
1782
1794
  model: "TS0601_gas_sensor_2",
1783
1795
  vendor: "Tuya",
1784
1796
  description: "Gas sensor",
1785
- fromZigbee: [tuya.fz.datapoints],
1786
- toZigbee: [tuya.tz.datapoints],
1787
- configure: tuya.configureMagicPacket,
1797
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1788
1798
  exposes: [
1789
1799
  e.gas(),
1790
1800
  tuya.exposes.gasValue().withUnit("LEL"),
@@ -1827,9 +1837,7 @@ exports.definitions = [
1827
1837
  model: "TS0601_gas_sensor_3",
1828
1838
  vendor: "Tuya",
1829
1839
  description: "Gas sensor",
1830
- fromZigbee: [tuya.fz.datapoints],
1831
- toZigbee: [tuya.tz.datapoints],
1832
- configure: tuya.configureMagicPacket,
1840
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1833
1841
  exposes: [e.gas(), tuya.exposes.selfTest(), tuya.exposes.selfTestResult(), tuya.exposes.faultAlarm(), tuya.exposes.silence()],
1834
1842
  meta: {
1835
1843
  tuyaDatapoints: [
@@ -1844,9 +1852,7 @@ exports.definitions = [
1844
1852
  model: "TS0601_gas_sensor_4", // _TZE200_mby4kbtq looks like TS0601_gas_sensor_2
1845
1853
  vendor: "Tuya",
1846
1854
  description: "Gas sensor",
1847
- fromZigbee: [tuya.fz.datapoints],
1848
- toZigbee: [tuya.tz.datapoints],
1849
- configure: tuya.configureMagicPacket,
1855
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1850
1856
  exposes: [
1851
1857
  e.gas(),
1852
1858
  tuya.exposes.gasValue().withUnit("LEL"),
@@ -1905,9 +1911,7 @@ exports.definitions = [
1905
1911
  model: "R3 Smart Switch",
1906
1912
  vendor: "Tuya",
1907
1913
  description: "Circuit Breaker/Switch",
1908
- fromZigbee: [tuya.fz.datapoints],
1909
- toZigbee: [tuya.tz.datapoints],
1910
- configure: tuya.configureMagicPacket,
1914
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1911
1915
  exposes: [e.switch()],
1912
1916
  meta: {
1913
1917
  tuyaDatapoints: [[16, "state", tuya.valueConverter.onOff]],
@@ -1920,7 +1924,7 @@ exports.definitions = [
1920
1924
  vendor: "Tuya",
1921
1925
  whiteLabel: [{ vendor: "Senoro", model: "Senoro.Win v2" }],
1922
1926
  description: "Window sensor with 3-state opening (DP101), optional alarm, battery",
1923
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
1927
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1924
1928
  exposes: [
1925
1929
  // DP101 → enum; device reports 0=open, 1=closed, 2=tilted (note swapped 0/1).
1926
1930
  e
@@ -2303,7 +2307,7 @@ exports.definitions = [
2303
2307
  description: "Motion detector with illuminance",
2304
2308
  fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery, fz.ias_occupancy_alarm_1_report],
2305
2309
  toZigbee: [],
2306
- extend: [m.illuminance(), tuya.modernExtend.tuyaBase({ timeStart: "2000" })],
2310
+ extend: [m.illuminance(), tuya.modernExtend.tuyaBase()],
2307
2311
  exposes: [e.occupancy(), e.battery_low(), e.battery(), e.tamper()],
2308
2312
  },
2309
2313
  {
@@ -2311,11 +2315,10 @@ exports.definitions = [
2311
2315
  model: "TS0202_2",
2312
2316
  vendor: "Tuya",
2313
2317
  description: "Motion sensor with scene switch",
2314
- fromZigbee: [tuya.fz.datapoints, fz.ias_occupancy_alarm_1, fz.battery],
2315
- toZigbee: [tuya.tz.datapoints],
2318
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
2319
+ fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery],
2316
2320
  configure: async (device, coordinatorEndpoint) => {
2317
2321
  const endpoint = device.getEndpoint(1);
2318
- await tuya.configureMagicPacket(device, coordinatorEndpoint);
2319
2322
  await reporting.batteryPercentageRemaining(endpoint);
2320
2323
  await reporting.batteryVoltage(endpoint);
2321
2324
  },
@@ -2620,9 +2623,7 @@ exports.definitions = [
2620
2623
  model: "TS0601_soil",
2621
2624
  vendor: "Tuya",
2622
2625
  description: "Soil sensor",
2623
- fromZigbee: [tuya.fz.datapoints],
2624
- toZigbee: [tuya.tz.datapoints],
2625
- configure: tuya.configureMagicPacket,
2626
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
2626
2627
  exposes: [e.temperature(), e.soil_moisture(), tuya.exposes.temperatureUnit(), e.battery(), tuya.exposes.batteryState()],
2627
2628
  meta: {
2628
2629
  tuyaDatapoints: [
@@ -2639,9 +2640,7 @@ exports.definitions = [
2639
2640
  model: "TS0601_soil_2",
2640
2641
  vendor: "Tuya",
2641
2642
  description: "Soil sensor",
2642
- fromZigbee: [tuya.fz.datapoints],
2643
- toZigbee: [tuya.tz.datapoints],
2644
- configure: tuya.configureMagicPacket,
2643
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
2645
2644
  exposes: [
2646
2645
  e.soil_moisture(),
2647
2646
  e.numeric("temperature", ea.STATE).withUnit("°C").withValueMin(-10).withValueMax(60).withDescription("Soil temperature"),
@@ -2721,9 +2720,7 @@ exports.definitions = [
2721
2720
  model: "TS0601_soil_3",
2722
2721
  vendor: "Tuya",
2723
2722
  description: "Soil sensor",
2724
- fromZigbee: [tuya.fz.datapoints],
2725
- toZigbee: [tuya.tz.datapoints],
2726
- configure: tuya.configureMagicPacket,
2723
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
2727
2724
  exposes: [e.temperature(), e.soil_moisture(), tuya.exposes.temperatureUnit(), e.battery(), tuya.exposes.batteryState()],
2728
2725
  meta: {
2729
2726
  tuyaDatapoints: [
@@ -2799,20 +2796,19 @@ exports.definitions = [
2799
2796
  "_TZE200_ykgar0ow",
2800
2797
  "_TZE284_m1cvyneb",
2801
2798
  "_TZE200_0hb4rdnp",
2799
+ "_TZE200_gne0e6mk",
2802
2800
  ]),
2803
2801
  model: "TS0601_dimmer_1_gang_1",
2804
2802
  vendor: "Tuya",
2805
2803
  description: "1 gang smart dimmer",
2806
- fromZigbee: [tuya.fz.datapoints],
2807
- toZigbee: [tuya.tz.datapoints],
2808
- configure: tuya.configureMagicPacket,
2804
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
2809
2805
  exposes: (device, options) => {
2810
2806
  const exps = [
2811
2807
  tuya.exposes.lightBrightnessWithMinMax(),
2812
2808
  tuya.exposes.countdown(),
2813
2809
  e.power_on_behavior().withAccess(ea.STATE_SET),
2814
2810
  ];
2815
- if (!device || !["_TZE200_4mh6tyyo", "_TZE200_ykgar0ow", "_TZE200_0hb4rdnp"].includes(device.manufacturerName)) {
2811
+ if (!device || !["_TZE200_4mh6tyyo", "_TZE200_ykgar0ow", "_TZE200_0hb4rdnp", "_TZE200_gne0e6mk"].includes(device.manufacturerName)) {
2816
2812
  exps.push(tuya.exposes.lightType(), tuya.exposes.backlightModeOffNormalInverted().withAccess(ea.STATE_SET));
2817
2813
  }
2818
2814
  return exps;
@@ -2847,6 +2843,7 @@ exports.definitions = [
2847
2843
  tuya.whitelabel("Lonsonho", "EDM-1ZBB-EU", "Smart Dimmer Switch", ["_TZE200_0nauxa0p"]),
2848
2844
  tuya.whitelabel("ION Industries", "ID200W-ZIGB", "LED Zigbee Dimmer", ["_TZE200_ykgar0ow", "_TZE200_4mh6tyyo"]),
2849
2845
  tuya.whitelabel("ION Industries", "90.500.090", "Zigbee Dimmer Master/Slave set", ["_TZE200_0hb4rdnp"]),
2846
+ tuya.whitelabel("ION Industries", "90.500.040", "LED Zigbee Dimmer", ["_TZE200_gne0e6mk"]),
2850
2847
  ],
2851
2848
  },
2852
2849
  {
@@ -2854,9 +2851,7 @@ exports.definitions = [
2854
2851
  model: "TS0601_dimmer_1_gang_2",
2855
2852
  vendor: "Tuya",
2856
2853
  description: "1 gang smart dimmer",
2857
- fromZigbee: [tuya.fz.datapoints],
2858
- toZigbee: [tuya.tz.datapoints],
2859
- configure: tuya.configureMagicPacket,
2854
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
2860
2855
  exposes: [
2861
2856
  tuya.exposes.lightBrightness(),
2862
2857
  tuya.exposes.countdown(),
@@ -2881,9 +2876,7 @@ exports.definitions = [
2881
2876
  model: "TS0601_dimmer_1_gang_3",
2882
2877
  vendor: "Tuya",
2883
2878
  description: "1 gang smart dimmer",
2884
- fromZigbee: [tuya.fz.datapoints],
2885
- toZigbee: [tuya.tz.datapoints],
2886
- configure: tuya.configureMagicPacket,
2879
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
2887
2880
  exposes: [tuya.exposes.lightBrightness(), e.voltage(), e.current(), e.power(), e.child_lock(), tuya.exposes.backlightModeOffOn()],
2888
2881
  meta: {
2889
2882
  tuyaDatapoints: [
@@ -2977,9 +2970,7 @@ exports.definitions = [
2977
2970
  model: "TS0601_dimmer_3",
2978
2971
  vendor: "Tuya",
2979
2972
  description: "3 gang smart dimmer",
2980
- fromZigbee: [tuya.fz.datapoints],
2981
- toZigbee: [tuya.tz.datapoints],
2982
- configure: tuya.configureMagicPacket,
2973
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
2983
2974
  exposes: [
2984
2975
  tuya.exposes.lightBrightnessWithMinMax().withEndpoint("l1"),
2985
2976
  tuya.exposes.lightBrightnessWithMinMax().withEndpoint("l2"),
@@ -3032,9 +3023,7 @@ exports.definitions = [
3032
3023
  model: "TS0601_dimmer_4",
3033
3024
  vendor: "Tuya",
3034
3025
  description: "2 gang smart dimmer module",
3035
- fromZigbee: [tuya.fz.datapoints],
3036
- toZigbee: [tuya.tz.datapoints],
3037
- configure: tuya.configureMagicPacket,
3026
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3038
3027
  exposes: [
3039
3028
  tuya.exposes.lightBrightnessWithMinMax().withEndpoint("l1"),
3040
3029
  tuya.exposes.lightBrightnessWithMinMax().withEndpoint("l2"),
@@ -3099,9 +3088,7 @@ exports.definitions = [
3099
3088
  model: "TS0601_dimmer_5",
3100
3089
  vendor: "Tuya",
3101
3090
  description: "1 gang smart dimmer module",
3102
- fromZigbee: [tuya.fz.datapoints],
3103
- toZigbee: [tuya.tz.datapoints],
3104
- configure: tuya.configureMagicPacket,
3091
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3105
3092
  exposes: [
3106
3093
  tuya.exposes.lightBrightnessWithMinMax(),
3107
3094
  e.enum("power_on_behavior", ea.STATE_SET, ["off", "on", "previous"]),
@@ -3153,9 +3140,7 @@ exports.definitions = [
3153
3140
  model: "TS0601_dimmer_knob",
3154
3141
  vendor: "Tuya",
3155
3142
  description: "Zigbee smart knob dimmer",
3156
- fromZigbee: [tuya.fz.datapoints],
3157
- toZigbee: [tuya.tz.datapoints],
3158
- configure: tuya.configureMagicPacket,
3143
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3159
3144
  exposes: [
3160
3145
  tuya.exposes.lightBrightness().withMinBrightness().setAccess("min_brightness", ea.STATE_SET),
3161
3146
  tuya.exposes.lightType(),
@@ -3437,9 +3422,7 @@ exports.definitions = [
3437
3422
  tuya.exposes.switch().withEndpoint("l3"),
3438
3423
  tuya.exposes.switch().withEndpoint("l4"),
3439
3424
  ],
3440
- fromZigbee: [tuya.fz.datapoints],
3441
- toZigbee: [tuya.tz.datapoints],
3442
- configure: tuya.configureMagicPacket,
3425
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3443
3426
  whiteLabel: [
3444
3427
  tuya.whitelabel("ZYXH", "TY-04Z", "4 gang switch", ["_TZE204_iik0pquw"]),
3445
3428
  { vendor: "Norklmes", model: "MKS-CM-W5" },
@@ -3468,9 +3451,7 @@ exports.definitions = [
3468
3451
  model: "TS0601_switch_5_gang",
3469
3452
  vendor: "Tuya",
3470
3453
  description: "5 gang switch",
3471
- fromZigbee: [tuya.fz.datapoints],
3472
- toZigbee: [tuya.tz.datapoints],
3473
- configure: tuya.configureMagicPacket,
3454
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3474
3455
  exposes: [
3475
3456
  tuya.exposes.switch().withEndpoint("l1"),
3476
3457
  tuya.exposes.switch().withEndpoint("l2"),
@@ -3508,10 +3489,8 @@ exports.definitions = [
3508
3489
  model: "TS0601_switch_6_gang",
3509
3490
  vendor: "Tuya",
3510
3491
  description: "6 gang switch",
3511
- fromZigbee: [tuya.fz.datapoints],
3512
- toZigbee: [tuya.tz.datapoints],
3492
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3513
3493
  configure: async (device, coordinatorEndpoint) => {
3514
- await tuya.configureMagicPacket(device, coordinatorEndpoint);
3515
3494
  const endpoint = device.getEndpoint(1);
3516
3495
  await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff"]);
3517
3496
  device.powerSource = "Mains (single phase)";
@@ -3601,9 +3580,7 @@ exports.definitions = [
3601
3580
  e.power_on_behavior().withAccess(ea.STATE_SET),
3602
3581
  tuya.exposes.backlightModeOffOn().withAccess(ea.STATE_SET),
3603
3582
  ],
3604
- fromZigbee: [tuya.fz.datapoints],
3605
- toZigbee: [tuya.tz.datapoints],
3606
- configure: tuya.configureMagicPacket,
3583
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3607
3584
  meta: {
3608
3585
  tuyaDatapoints: [
3609
3586
  [1, "state", tuya.valueConverter.onOff],
@@ -3650,9 +3627,7 @@ exports.definitions = [
3650
3627
  vendor: "Tuya",
3651
3628
  description: "2 gang switch",
3652
3629
  exposes: [e.switch().withEndpoint("l1").setAccess("state", ea.STATE_SET), e.switch().withEndpoint("l2").setAccess("state", ea.STATE_SET)],
3653
- fromZigbee: [tuya.fz.datapoints],
3654
- toZigbee: [tuya.tz.datapoints],
3655
- configure: tuya.configureMagicPacket,
3630
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3656
3631
  meta: {
3657
3632
  multiEndpoint: true,
3658
3633
  tuyaDatapoints: [
@@ -3700,9 +3675,7 @@ exports.definitions = [
3700
3675
  model: "MG-ZG03W",
3701
3676
  vendor: "Tuya",
3702
3677
  description: "3 gang switch",
3703
- fromZigbee: [tuya.fz.datapoints],
3704
- toZigbee: [tuya.tz.datapoints],
3705
- configure: tuya.configureMagicPacket,
3678
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3706
3679
  exposes: [
3707
3680
  e.switch().withEndpoint("l1").setAccess("state", ea.STATE_SET),
3708
3681
  e.switch().withEndpoint("l2").setAccess("state", ea.STATE_SET),
@@ -4293,7 +4266,7 @@ exports.definitions = [
4293
4266
  model: "BAC-003",
4294
4267
  vendor: "Tuya",
4295
4268
  description: "FCU thermostat temperature controller",
4296
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
4269
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
4297
4270
  options: [
4298
4271
  e
4299
4272
  .enum("control_sequence_of_operation", ea.SET, ["cooling_only", "cooling_and_heating_4-pipes"])
@@ -4473,7 +4446,7 @@ exports.definitions = [
4473
4446
  vendor: "Tuya",
4474
4447
  description: "Water leak sensor",
4475
4448
  fromZigbee: [fz.ignore_tuya_raw, legacy.fromZigbee.wls100z_water_leak],
4476
- extend: [tuya.modernExtend.tuyaBase({ timeStart: "2000", bindBasicOnConfigure: true })],
4449
+ extend: [tuya.modernExtend.tuyaBase({ bindBasicOnConfigure: true })],
4477
4450
  exposes: [e.battery(), e.water_leak()],
4478
4451
  },
4479
4452
  {
@@ -4484,6 +4457,7 @@ exports.definitions = [
4484
4457
  "_TZ3000_mkhkxx1p",
4485
4458
  "_TZ3000_tgddllx4",
4486
4459
  "_TZ3000_kqvb5akv",
4460
+ "_TZ3000_q8r0bbvy",
4487
4461
  "_TZ3000_g92baclx",
4488
4462
  "_TZ3000_qlai3277",
4489
4463
  "_TZ3000_qaabwu5c",
@@ -5245,8 +5219,7 @@ exports.definitions = [
5245
5219
  model: "TS0601_cover_6",
5246
5220
  vendor: "Tuya",
5247
5221
  description: "Cover motor",
5248
- fromZigbee: [tuya.fz.datapoints],
5249
- toZigbee: [tuya.tz.datapoints],
5222
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
5250
5223
  exposes: [
5251
5224
  e.text("work_state", ea.STATE),
5252
5225
  e.cover_position().setAccess("position", ea.STATE_SET),
@@ -5341,9 +5314,7 @@ exports.definitions = [
5341
5314
  model: "TS0601_cover_8",
5342
5315
  vendor: "Tuya",
5343
5316
  description: "Cover motor",
5344
- configure: tuya.configureMagicPacket,
5345
- fromZigbee: [tuya.fz.datapoints],
5346
- toZigbee: [tuya.tz.datapoints],
5317
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
5347
5318
  options: [exposes.options.invert_cover()],
5348
5319
  exposes: [
5349
5320
  e.cover_position().setAccess("position", ea.STATE_SET),
@@ -5406,7 +5377,7 @@ exports.definitions = [
5406
5377
  vendor: "Tuya",
5407
5378
  description: "Window opener",
5408
5379
  options: [exposes.options.invert_cover()],
5409
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
5380
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
5410
5381
  exposes: [e.cover_position().setAccess("position", ea.STATE_SET)],
5411
5382
  meta: {
5412
5383
  tuyaDatapoints: [
@@ -5457,7 +5428,7 @@ exports.definitions = [
5457
5428
  },
5458
5429
  },
5459
5430
  {
5460
- fingerprint: tuya.fingerprint("TS0601", ["_TZE284_debczeci", "_TZE284_1lvln0x6"]),
5431
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE284_debczeci", "_TZE284_1lvln0x6", "_TZE204_debczeci"]),
5461
5432
  model: "iHsenso_TS0601_human_presence",
5462
5433
  vendor: "iHseno",
5463
5434
  description: "Human presence sensor",
@@ -5513,9 +5484,7 @@ exports.definitions = [
5513
5484
  model: "ZM79E-DT",
5514
5485
  vendor: "Tervix",
5515
5486
  description: "Pro Line Zigbee curtain motor",
5516
- fromZigbee: [tuya.fz.datapoints],
5517
- toZigbee: [tuya.tz.datapoints],
5518
- configure: tuya.configureMagicPacket,
5487
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
5519
5488
  exposes: [
5520
5489
  e.text("work_state", ea.STATE),
5521
5490
  e.cover_position().setAccess("position", ea.STATE_SET),
@@ -5700,7 +5669,7 @@ exports.definitions = [
5700
5669
  tuyaThermostatSystemMode: legacy.thermostatSystemModes3,
5701
5670
  },
5702
5671
  ota: true,
5703
- extend: [tuya.modernExtend.tuyaBase({ forceTimeUpdates: true })],
5672
+ extend: [tuya.modernExtend.tuyaBase({ forceTimeUpdates: true, timeStart: "1970" })],
5704
5673
  fromZigbee: [legacy.fromZigbee.tuya_thermostat, fz.ignore_tuya_set_time],
5705
5674
  toZigbee: [
5706
5675
  legacy.toZigbee.tuya_thermostat_child_lock,
@@ -5964,7 +5933,7 @@ exports.definitions = [
5964
5933
  model: "TS0601_cover_3",
5965
5934
  vendor: "Tuya",
5966
5935
  description: "Cover motor",
5967
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
5936
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
5968
5937
  options: [exposes.options.invert_cover()],
5969
5938
  exposes: [
5970
5939
  e.battery(),
@@ -6031,8 +6000,7 @@ exports.definitions = [
6031
6000
  model: "TS0601_cover_4",
6032
6001
  vendor: "Tuya",
6033
6002
  description: "Cover",
6034
- fromZigbee: [tuya.fz.datapoints],
6035
- toZigbee: [tuya.tz.datapoints],
6003
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
6036
6004
  exposes: [
6037
6005
  e.cover_position().setAccess("position", ea.STATE_SET),
6038
6006
  e.enum("motor_direction", ea.STATE_SET, ["normal", "reversed"]).withDescription("Set the motor direction"),
@@ -6107,7 +6075,7 @@ exports.definitions = [
6107
6075
  tuya.whitelabel("GIEX", "TV06", "Thermostat radiator valve", ["_TZE200_py4cm3he"]),
6108
6076
  ],
6109
6077
  ota: true,
6110
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
6078
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
6111
6079
  exposes: [
6112
6080
  e.battery_low(),
6113
6081
  e.child_lock(),
@@ -6216,7 +6184,7 @@ exports.definitions = [
6216
6184
  vendor: "Tuya",
6217
6185
  description: "Thermostat radiator valve",
6218
6186
  whiteLabel: [{ vendor: "S366", model: "Cloud Even" }],
6219
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
6187
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
6220
6188
  meta: {
6221
6189
  tuyaDatapoints: [
6222
6190
  [1, "system_mode", tuya.valueConverterBasic.lookup({ heat: true, off: false })],
@@ -6376,7 +6344,7 @@ exports.definitions = [
6376
6344
  model: "TS0601_thermostat_4",
6377
6345
  vendor: "Tuya",
6378
6346
  description: "Thermostatic radiator valve",
6379
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
6347
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
6380
6348
  exposes: [
6381
6349
  e.child_lock(),
6382
6350
  e.battery(),
@@ -6523,7 +6491,7 @@ exports.definitions = [
6523
6491
  tuya.whitelabel("id3", "GTZ06", "Thermostatic radiator valve", ["_TZE200_z1tyspqw"]),
6524
6492
  tuya.whitelabel("AVATTO", "TRV07", "Thermostatic radiator valve", ["_TZE200_bvrlmajk"]),
6525
6493
  ],
6526
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
6494
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
6527
6495
  exposes: [
6528
6496
  e.battery(),
6529
6497
  e.child_lock(),
@@ -6610,7 +6578,7 @@ exports.definitions = [
6610
6578
  tuya.whitelabel("Moes", "TRV801_1", "Thermostatic radiator valve", ["_TZE204_rtrmfadk"]),
6611
6579
  ],
6612
6580
  description: "Thermostatic radiator valve",
6613
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
6581
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
6614
6582
  exposes: [
6615
6583
  e.battery(),
6616
6584
  e.child_lock(),
@@ -6686,7 +6654,7 @@ exports.definitions = [
6686
6654
  vendor: "Tuya",
6687
6655
  description: "Thermostatic radiator valve.",
6688
6656
  whiteLabel: [tuya.whitelabel("Moes", "TRV801", "Thermostatic radiator valve", ["_TZE204_9mjy74mp", "_TZE200_9mjy74mp"])],
6689
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
6657
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
6690
6658
  exposes: [
6691
6659
  e.battery(),
6692
6660
  e.child_lock(),
@@ -6776,7 +6744,7 @@ exports.definitions = [
6776
6744
  vendor: "Tuya",
6777
6745
  description: "Thermostatic radiator valve.",
6778
6746
  whiteLabel: [tuya.whitelabel("Moes", "TRV801Z", "Thermostatic radiator valve", ["_TZE204_qyr2m29i", "_TZE284_ltwbm23f"])],
6779
- extend: [tuyaBase({ dp: true })],
6747
+ extend: [tuyaBase({ dp: true, timeStart: "1970" })],
6780
6748
  exposes: [
6781
6749
  e.battery(),
6782
6750
  e.child_lock(),
@@ -7040,7 +7008,7 @@ exports.definitions = [
7040
7008
  model: "TRV603-WZ",
7041
7009
  vendor: "Tuya",
7042
7010
  description: "Thermostatic radiator valve.",
7043
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
7011
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
7044
7012
  exposes: [
7045
7013
  e.battery(),
7046
7014
  e.child_lock(),
@@ -7231,7 +7199,7 @@ exports.definitions = [
7231
7199
  electricalMeasurements: true,
7232
7200
  electricalMeasurementsFzConverter: fzLocal.TS011F_electrical_measurement,
7233
7201
  powerOutageMemory: true,
7234
- indicatorMode: (manufacturerName) => manufacturerName === "_TZ3000_ww6drja5",
7202
+ indicatorMode: (manufacturerName) => manufacturerName !== "_TZ3000_ww6drja5",
7235
7203
  childLock: true,
7236
7204
  onOffCountdown: true,
7237
7205
  }),
@@ -7296,8 +7264,6 @@ exports.definitions = [
7296
7264
  },
7297
7265
  {
7298
7266
  fingerprint: [
7299
- // https://github.com/Koenkk/zigbee2mqtt/issues/28729
7300
- { modelID: "TS011F", applicationVersion: 240, manufacturerName: "_TZ3000_gjnozsaz", priority: -1 },
7301
7267
  { modelID: "TS011F", applicationVersion: 160, priority: -1 },
7302
7268
  { modelID: "TS011F", applicationVersion: 100, priority: -1 },
7303
7269
  { modelID: "TS011F", applicationVersion: 69, priority: -1 },
@@ -7396,9 +7362,7 @@ exports.definitions = [
7396
7362
  model: "TS0601_smoke_1",
7397
7363
  vendor: "Tuya",
7398
7364
  description: "Smoke sensor",
7399
- fromZigbee: [tuya.fz.datapoints],
7400
- toZigbee: [tuya.tz.datapoints],
7401
- configure: tuya.configureMagicPacket,
7365
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
7402
7366
  exposes: [e.smoke(), e.tamper(), e.battery_low()],
7403
7367
  meta: {
7404
7368
  tuyaDatapoints: [
@@ -7414,9 +7378,7 @@ exports.definitions = [
7414
7378
  model: "TS0601_smoke_6",
7415
7379
  vendor: "Tuya",
7416
7380
  description: "Smoke sensor",
7417
- fromZigbee: [tuya.fz.datapoints],
7418
- toZigbee: [tuya.tz.datapoints],
7419
- configure: tuya.configureMagicPacket,
7381
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
7420
7382
  exposes: [e.smoke(), e.tamper(), tuya.exposes.batteryState()],
7421
7383
  meta: {
7422
7384
  tuyaDatapoints: [
@@ -7431,7 +7393,7 @@ exports.definitions = [
7431
7393
  model: "HS2SA-1",
7432
7394
  vendor: "Heiman",
7433
7395
  description: "Photoelectric Smoke Alarm",
7434
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
7396
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
7435
7397
  exposes: [
7436
7398
  e.smoke(),
7437
7399
  e.battery(),
@@ -7454,7 +7416,7 @@ exports.definitions = [
7454
7416
  model: "PA-44Z",
7455
7417
  vendor: "Tuya",
7456
7418
  description: "Photoelectric smoke detector",
7457
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
7419
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
7458
7420
  exposes: [
7459
7421
  e.smoke(),
7460
7422
  e.battery(),
@@ -7480,9 +7442,7 @@ exports.definitions = [
7480
7442
  model: "TS0601_smoke_3",
7481
7443
  description: "Photoelectric smoke detector",
7482
7444
  whiteLabel: [{ vendor: "KnockautX", model: "SMOAL024" }],
7483
- configure: tuya.configureMagicPacket,
7484
- fromZigbee: [tuya.fz.datapoints],
7485
- toZigbee: [tuya.tz.datapoints],
7445
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
7486
7446
  exposes: [e.smoke(), tuya.exposes.batteryState()],
7487
7447
  meta: {
7488
7448
  tuyaDatapoints: [
@@ -7506,8 +7466,7 @@ exports.definitions = [
7506
7466
  model: "TS0601_smoke_4",
7507
7467
  vendor: "Tuya",
7508
7468
  description: "Smoke sensor",
7509
- fromZigbee: [tuya.fz.datapoints],
7510
- toZigbee: [tuya.tz.datapoints],
7469
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
7511
7470
  exposes: [e.smoke(), e.battery(), tuya.exposes.batteryState()],
7512
7471
  meta: {
7513
7472
  tuyaDatapoints: [
@@ -7522,9 +7481,7 @@ exports.definitions = [
7522
7481
  model: "TS0601_smoke_5",
7523
7482
  vendor: "Tuya",
7524
7483
  description: "Smoke sensor",
7525
- fromZigbee: [tuya.fz.datapoints],
7526
- toZigbee: [tuya.tz.datapoints],
7527
- configure: tuya.configureMagicPacket,
7484
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
7528
7485
  exposes: [
7529
7486
  e.smoke(),
7530
7487
  e.tamper(),
@@ -7549,7 +7506,7 @@ exports.definitions = [
7549
7506
  model: "ZS-301Z",
7550
7507
  vendor: "Arteco",
7551
7508
  description: "Soil moisture sensor",
7552
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
7509
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
7553
7510
  exposes: [
7554
7511
  e.enum("battery_state", ea.STATE, ["low", "middle", "high"]).withDescription("low: 1-25%, middle: 26-50%, high: 51-100%"),
7555
7512
  e.temperature(),
@@ -7588,7 +7545,7 @@ exports.definitions = [
7588
7545
  model: "ZSS-QY-SSD-A-EN",
7589
7546
  vendor: "Tuya",
7590
7547
  description: "Smart smoke alarm",
7591
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
7548
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
7592
7549
  exposes: [
7593
7550
  e.smoke(),
7594
7551
  tuya.exposes.faultAlarm(),
@@ -7684,14 +7641,14 @@ exports.definitions = [
7684
7641
  e.binary("alarm", ea.STATE_SET, true, false).withDescription("Enable the alarm"),
7685
7642
  e.binary("silence_siren", ea.STATE_SET, true, false).withDescription("Silence the siren"),
7686
7643
  ],
7687
- extend: [tuya.modernExtend.tuyaBase({ timeStart: "2000" })],
7644
+ extend: [tuya.modernExtend.tuyaBase()],
7688
7645
  },
7689
7646
  {
7690
7647
  fingerprint: tuya.fingerprint("TS0601", ["_TZE204_cjbofhxw", "_TZE284_cjbofhxw"]),
7691
7648
  model: "PJ-MGW1203",
7692
7649
  vendor: "Tuya",
7693
7650
  description: "Clamp meter",
7694
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "off" })],
7651
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
7695
7652
  exposes: [e.current(), e.power(), e.voltage(), e.energy()],
7696
7653
  meta: {
7697
7654
  tuyaDatapoints: [
@@ -7708,9 +7665,7 @@ exports.definitions = [
7708
7665
  model: "TS0601_din_1",
7709
7666
  vendor: "Tuya",
7710
7667
  description: "Zigbee DIN energy meter",
7711
- fromZigbee: [tuya.fz.datapoints],
7712
- toZigbee: [tuya.tz.datapoints],
7713
- configure: tuya.configureMagicPacket,
7668
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
7714
7669
  exposes: [
7715
7670
  tuya.exposes.switch(),
7716
7671
  e.ac_frequency(),
@@ -7755,9 +7710,7 @@ exports.definitions = [
7755
7710
  model: "RMDZB-1PNL63",
7756
7711
  vendor: "TNCE",
7757
7712
  description: "Zigbee DIN single phase energy meter",
7758
- fromZigbee: [tuya.fz.datapoints],
7759
- toZigbee: [tuya.tz.datapoints],
7760
- configure: tuya.configureMagicPacket,
7713
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
7761
7714
  exposes: [
7762
7715
  tuya.exposes.switch(),
7763
7716
  e.energy(),
@@ -7880,9 +7833,7 @@ exports.definitions = [
7880
7833
  model: "STB3L-125-ZJ",
7881
7834
  vendor: "SUTON",
7882
7835
  description: "Zigbee DIN RCBO energy meter",
7883
- fromZigbee: [tuya.fz.datapoints],
7884
- toZigbee: [tuya.tz.datapoints],
7885
- configure: tuya.configureMagicPacket,
7836
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
7886
7837
  exposes: [
7887
7838
  tuya.exposes.switch(),
7888
7839
  e.energy(),
@@ -8046,9 +7997,7 @@ exports.definitions = [
8046
7997
  model: "TS0601_din_2",
8047
7998
  vendor: "Tuya",
8048
7999
  description: "Zigbee DIN energy meter",
8049
- fromZigbee: [tuya.fz.datapoints],
8050
- toZigbee: [tuya.tz.datapoints],
8051
- configure: tuya.configureMagicPacket,
8000
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
8052
8001
  exposes: [
8053
8002
  tuya.exposes.switch(),
8054
8003
  e.energy(),
@@ -8114,9 +8063,7 @@ exports.definitions = [
8114
8063
  model: "TS0601_din_3",
8115
8064
  vendor: "Tuya",
8116
8065
  description: "Zigbee DIN energy meter",
8117
- fromZigbee: [tuya.fz.datapoints],
8118
- toZigbee: [tuya.tz.datapoints],
8119
- configure: tuya.configureMagicPacket,
8066
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
8120
8067
  whiteLabel: [{ vendor: "XOCA", model: "DAC2161C" }],
8121
8068
  exposes: [
8122
8069
  tuya.exposes.switch(),
@@ -8931,7 +8878,7 @@ exports.definitions = [
8931
8878
  model: "ZWT07",
8932
8879
  vendor: "Tuya",
8933
8880
  description: "Wall-mount thermostat",
8934
- extend: [tuya.modernExtend.tuyaBase({ dp: true, respondToMcuVersionResponse: true })],
8881
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, respondToMcuVersionResponse: true, timeStart: "2000" })],
8935
8882
  exposes: [
8936
8883
  e
8937
8884
  .climate()
@@ -8965,8 +8912,7 @@ exports.definitions = [
8965
8912
  model: "_TZE284_6kijc7nd",
8966
8913
  vendor: "Tervix",
8967
8914
  description: "Tervix Zigbee thermostat",
8968
- fromZigbee: [tuya.fz.datapoints],
8969
- toZigbee: [tuya.tz.datapoints],
8915
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
8970
8916
  exposes: [
8971
8917
  // Weekly Schedule (Datapoint 48) - Placeholder
8972
8918
  // The schedule is a raw 168-byte array (7 days x 24 bytes/day):
@@ -9175,7 +9121,7 @@ exports.definitions = [
9175
9121
  model: "ZWT198/ZWT100-BH",
9176
9122
  vendor: "Tuya",
9177
9123
  description: "Wall thermostat",
9178
- extend: [tuya.modernExtend.tuyaBase({ dp: true, respondToMcuVersionResponse: true })],
9124
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, respondToMcuVersionResponse: true, timeStart: "1970" })],
9179
9125
  whiteLabel: [tuya.whitelabel("AVATTO", "WT-100-BH", "Wall thermostat", ["_TZE204_gops3slb", "_TZE284_gops3slb"])],
9180
9126
  exposes: [
9181
9127
  e.binary("factory_reset", ea.STATE_SET, "ON", "OFF").withDescription("Full factory reset, use with caution!"),
@@ -9326,7 +9272,7 @@ exports.definitions = [
9326
9272
  model: "TGM50-ZB",
9327
9273
  vendor: "Tuya",
9328
9274
  description: "Beok wall thermostat",
9329
- extend: [tuya.modernExtend.tuyaBase({ dp: true, respondToMcuVersionResponse: true })],
9275
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, respondToMcuVersionResponse: true, timeStart: "1970" })],
9330
9276
  exposes: [
9331
9277
  e.child_lock(),
9332
9278
  e.temperature_sensor_select(["internal", "external", "both"]),
@@ -9484,32 +9430,6 @@ exports.definitions = [
9484
9430
  "Press button on the device right before changing this"),
9485
9431
  ],
9486
9432
  },
9487
- {
9488
- fingerprint: tuya.fingerprint("TS0601", ["_TZE200_8ply8mjj"]),
9489
- model: "COZIGVS",
9490
- vendor: "Conecto",
9491
- description: "Vibration sensor",
9492
- fromZigbee: [tuya.fz.datapoints],
9493
- toZigbee: [tuya.tz.datapoints],
9494
- configure: tuya.configureMagicPacket,
9495
- exposes: [
9496
- e.vibration(),
9497
- e
9498
- .numeric("sensitivity", ea.STATE_SET)
9499
- .withValueMin(0)
9500
- .withValueMax(2)
9501
- .withDescription("Sensitivity of the sensor (single press the button when muted to switch between" +
9502
- " low (one beep), medium (two beeps) and max (three beeps))"),
9503
- e.text("buzzer_mute", ea.STATE).withDescription("ON when buzzer is muted (double press the button on device to toggle)"),
9504
- ],
9505
- meta: {
9506
- tuyaDatapoints: [
9507
- [1, "vibration", tuya.valueConverter.trueFalse1],
9508
- [101, "sensitivity", tuya.valueConverter.raw],
9509
- [103, "buzzer_mute", tuya.valueConverter.onOff],
9510
- ],
9511
- },
9512
- },
9513
9433
  {
9514
9434
  fingerprint: tuya.fingerprint("TS011F", ["_TZ3000_8bxrzyxz", "_TZ3000_ky0fq4ho"]),
9515
9435
  model: "TS011F_din_smart_relay",
@@ -9704,12 +9624,10 @@ exports.definitions = [
9704
9624
  },
9705
9625
  description: "Garage door opener",
9706
9626
  configure: async (device, coordinatorEndpoint) => {
9707
- await tuya.configureMagicPacket(device, coordinatorEndpoint);
9708
9627
  const endpoint = device.getEndpoint(1);
9709
9628
  await reporting.bind(endpoint, coordinatorEndpoint, ["genBasic"]);
9710
9629
  },
9711
- fromZigbee: [tuya.fz.datapoints],
9712
- toZigbee: [tuya.tz.datapoints],
9630
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
9713
9631
  exposes: [
9714
9632
  e.binary("state", ea.STATE_SET, true, false).withDescription("Trigger the door movement"),
9715
9633
  e
@@ -9785,12 +9703,10 @@ exports.definitions = [
9785
9703
  model: "MIR-HE200-TY",
9786
9704
  vendor: "Tuya",
9787
9705
  description: "Human presence sensor with fall function",
9788
- fromZigbee: [tuya.fz.datapoints],
9789
- toZigbee: [tuya.tz.datapoints],
9706
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
9790
9707
  configure: async (device, coordinatorEndpoint) => {
9791
9708
  const endpoint = device.getEndpoint(1);
9792
9709
  await tuya.sendDataPointEnum(endpoint, legacy.dataPoints.trsfTumbleSwitch, 0);
9793
- await tuya.configureMagicPacket(device, coordinatorEndpoint);
9794
9710
  },
9795
9711
  exposes: [
9796
9712
  e.illuminance(),
@@ -10316,7 +10232,7 @@ exports.definitions = [
10316
10232
  model: "Y1_IN",
10317
10233
  vendor: "Tuya",
10318
10234
  description: "Smart human presence sensor 24G",
10319
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
10235
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10320
10236
  exposes: [
10321
10237
  e.presence(),
10322
10238
  e.illuminance(),
@@ -10348,8 +10264,7 @@ exports.definitions = [
10348
10264
  model: "ZY-M100-S_1",
10349
10265
  vendor: "Tuya",
10350
10266
  description: "Mini human breathe sensor",
10351
- fromZigbee: [tuya.fz.datapoints],
10352
- toZigbee: [tuya.tz.datapoints],
10267
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10353
10268
  whiteLabel: [tuya.whitelabel("Wenzhi", "WZ-M100-W", "Human presence sensor", ["_TZE204_e5m9c5hl"])],
10354
10269
  exposes: [
10355
10270
  e.illuminance(),
@@ -10397,8 +10312,7 @@ exports.definitions = [
10397
10312
  model: "ZY-M100-S_2",
10398
10313
  vendor: "Tuya",
10399
10314
  description: "Mini human breathe sensor",
10400
- fromZigbee: [tuya.fz.datapoints],
10401
- toZigbee: [tuya.tz.datapoints],
10315
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10402
10316
  exposes: [
10403
10317
  e.illuminance(),
10404
10318
  e.presence(),
@@ -10458,7 +10372,7 @@ exports.definitions = [
10458
10372
  model: "WZ-M100",
10459
10373
  vendor: "Wenzhi",
10460
10374
  description: "Human presence sensor",
10461
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
10375
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10462
10376
  exposes: [
10463
10377
  e.illuminance(),
10464
10378
  e.presence(),
@@ -10530,8 +10444,7 @@ exports.definitions = [
10530
10444
  model: "ZG-205ZL",
10531
10445
  vendor: "Tuya",
10532
10446
  description: "24Ghz/5.8GHz human presence sensor",
10533
- fromZigbee: [tuya.fz.datapoints],
10534
- toZigbee: [tuya.tz.datapoints],
10447
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10535
10448
  exposes: [
10536
10449
  e.presence(),
10537
10450
  e.enum("motion_state", ea.STATE, ["none", "large", "small", "static"]).withDescription("Motion state"),
@@ -10645,7 +10558,7 @@ exports.definitions = [
10645
10558
  description: "Temperature & humidity sensor with clock",
10646
10559
  fromZigbee: [legacy.fromZigbee.nous_lcd_temperature_humidity_sensor, fz.ignore_tuya_set_time],
10647
10560
  toZigbee: [legacy.toZigbee.nous_lcd_temperature_humidity_sensor],
10648
- extend: [tuya.modernExtend.tuyaBase({ forceTimeUpdates: true, bindBasicOnConfigure: true })],
10561
+ extend: [tuya.modernExtend.tuyaBase({ forceTimeUpdates: true, bindBasicOnConfigure: true, timeStart: "1970" })],
10649
10562
  exposes: [
10650
10563
  e.temperature(),
10651
10564
  e.humidity(),
@@ -10673,7 +10586,7 @@ exports.definitions = [
10673
10586
  description: "Tubular motor",
10674
10587
  fromZigbee: [legacy.fromZigbee.zb_sm_cover],
10675
10588
  toZigbee: [legacy.toZigbee.zb_sm_cover],
10676
- extend: [tuya.modernExtend.tuyaBase({ timeStart: "2000" })],
10589
+ extend: [tuya.modernExtend.tuyaBase()],
10677
10590
  exposes: [
10678
10591
  e.cover_position().setAccess("position", ea.STATE_SET),
10679
10592
  e.enum("goto_positon", ea.SET, ["25", "50", "75", "FAVORITE"]),
@@ -10771,9 +10684,7 @@ exports.definitions = [
10771
10684
  model: "ZG-227ZL",
10772
10685
  vendor: "Tuya",
10773
10686
  description: "Temperature & humidity LCD sensor",
10774
- fromZigbee: [tuya.fz.datapoints],
10775
- toZigbee: [tuya.tz.datapoints],
10776
- configure: tuya.configureMagicPacket,
10687
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10777
10688
  exposes: [
10778
10689
  e.temperature(),
10779
10690
  e.humidity(),
@@ -10802,10 +10713,7 @@ exports.definitions = [
10802
10713
  model: "S8",
10803
10714
  vendor: "SODA",
10804
10715
  description: "S8 premium window handle",
10805
- extend: [],
10806
- toZigbee: [tuya.tz.datapoints],
10807
- fromZigbee: [tuya.fz.datapoints],
10808
- configure: tuya.configureMagicPacket,
10716
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10809
10717
  exposes: [
10810
10718
  e.battery(),
10811
10719
  e.battery_low(),
@@ -10959,7 +10867,6 @@ exports.definitions = [
10959
10867
  dp: true,
10960
10868
  queryOnDeviceAnnounce: true,
10961
10869
  queryOnConfigure: true,
10962
- timeStart: "off",
10963
10870
  respondToMcuVersionResponse: true,
10964
10871
  }),
10965
10872
  ],
@@ -10987,9 +10894,7 @@ exports.definitions = [
10987
10894
  model: "ZG-102Z",
10988
10895
  vendor: "Tuya",
10989
10896
  description: "Door sensor",
10990
- fromZigbee: [tuya.fz.datapoints],
10991
- toZigbee: [tuya.tz.datapoints],
10992
- configure: tuya.configureMagicPacket,
10897
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10993
10898
  exposes: [e.contact(), e.battery()],
10994
10899
  meta: {
10995
10900
  tuyaDatapoints: [
@@ -11004,9 +10909,7 @@ exports.definitions = [
11004
10909
  model: "ZG-102ZL",
11005
10910
  vendor: "Tuya",
11006
10911
  description: "Luminance door sensor",
11007
- fromZigbee: [tuya.fz.datapoints],
11008
- toZigbee: [tuya.tz.datapoints],
11009
- configure: tuya.configureMagicPacket,
10912
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11010
10913
  exposes: [
11011
10914
  e.contact(),
11012
10915
  e.illuminance().withUnit("lx"),
@@ -11036,7 +10939,7 @@ exports.definitions = [
11036
10939
  model: "TS0601_pir",
11037
10940
  vendor: "Tuya",
11038
10941
  description: "Haozee PIR sensor",
11039
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "off", respondToMcuVersionResponse: true })],
10942
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, respondToMcuVersionResponse: true })],
11040
10943
  exposes: (device, options) => {
11041
10944
  const exposes = [e.occupancy(), e.illuminance()];
11042
10945
  // https://github.com/Koenkk/zigbee2mqtt.io/pull/4018
@@ -11063,9 +10966,7 @@ exports.definitions = [
11063
10966
  model: "ZG-225Z",
11064
10967
  vendor: "Tuya",
11065
10968
  description: "Gas sensor",
11066
- fromZigbee: [tuya.fz.datapoints],
11067
- toZigbee: [tuya.tz.datapoints],
11068
- configure: tuya.configureMagicPacket,
10969
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11069
10970
  exposes: [
11070
10971
  e.gas(),
11071
10972
  tuya.exposes.gasValue().withUnit("ppm"),
@@ -11112,8 +11013,7 @@ exports.definitions = [
11112
11013
  model: "ZG-204ZL",
11113
11014
  vendor: "Tuya",
11114
11015
  description: "Luminance motion sensor",
11115
- fromZigbee: [tuya.fz.datapoints],
11116
- toZigbee: [tuya.tz.datapoints],
11016
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11117
11017
  exposes: [
11118
11018
  e.occupancy(),
11119
11019
  e.illuminance().withUnit("lx"),
@@ -11170,8 +11070,7 @@ exports.definitions = [
11170
11070
  model: "ZG-205Z/A",
11171
11071
  vendor: "Tuya",
11172
11072
  description: "5.8Ghz/24Ghz Human presence sensor",
11173
- fromZigbee: [tuya.fz.datapoints],
11174
- toZigbee: [tuya.tz.datapoints],
11073
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11175
11074
  exposes: [
11176
11075
  e.presence(),
11177
11076
  e.enum("motion_state", ea.STATE, ["none", "small", "medium", "large", "far", "near"]).withDescription("State of the motion"),
@@ -11286,8 +11185,7 @@ exports.definitions = [
11286
11185
  model: "ZG-204ZM",
11287
11186
  vendor: "Tuya",
11288
11187
  description: "PIR 24Ghz human presence sensor",
11289
- fromZigbee: [tuya.fz.datapoints],
11290
- toZigbee: [tuya.tz.datapoints],
11188
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11291
11189
  exposes: [
11292
11190
  e.presence(),
11293
11191
  e.enum("motion_state", ea.STATE, ["none", "large", "small", "static"]).withDescription("Motion state"),
@@ -11484,9 +11382,7 @@ exports.definitions = [
11484
11382
  model: "TS0601_3_phase_clamp_meter",
11485
11383
  vendor: "Tuya",
11486
11384
  description: "3-phase clamp power meter",
11487
- fromZigbee: [tuya.fz.datapoints],
11488
- toZigbee: [tuya.tz.datapoints],
11489
- configure: tuya.configureMagicPacket,
11385
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11490
11386
  whiteLabel: [
11491
11387
  { vendor: "MatSee Plus", model: "PC321-Z-TY" },
11492
11388
  { vendor: "OWON", model: "PC321-Z-TY" },
@@ -11539,9 +11435,7 @@ exports.definitions = [
11539
11435
  model: "TS0601_3_phase_clamp_meter_relay",
11540
11436
  vendor: "Tuya",
11541
11437
  description: "3-phase clamp power meter with relay",
11542
- fromZigbee: [tuya.fz.datapoints],
11543
- toZigbee: [tuya.tz.datapoints],
11544
- configure: tuya.configureMagicPacket,
11438
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11545
11439
  whiteLabel: [{ vendor: "Wenzhou Taiye Electric", model: "TAC7361C BI" }],
11546
11440
  exposes: [
11547
11441
  e.switch().setAccess("state", ea.STATE_SET),
@@ -11627,7 +11521,7 @@ exports.definitions = [
11627
11521
  vendor: "Tuya",
11628
11522
  description: "Dual water valve",
11629
11523
  fromZigbee: [fz.battery],
11630
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
11524
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11631
11525
  exposes: [
11632
11526
  e.enum("valve_status", ea.STATE, ["manual", "auto", "idle"]).withDescription("Valve 1 status (manual, auto, idle)").withEndpoint("l1"),
11633
11527
  e.enum("valve_status", ea.STATE, ["manual", "auto", "idle"]).withDescription("Valve 2 status (manual, auto, idle)").withEndpoint("l2"),
@@ -11677,9 +11571,7 @@ exports.definitions = [
11677
11571
  model: "TS0601_fan_switch",
11678
11572
  vendor: "Tuya",
11679
11573
  description: "Fan switch",
11680
- fromZigbee: [tuya.fz.datapoints],
11681
- toZigbee: [tuya.tz.datapoints],
11682
- configure: tuya.configureMagicPacket,
11574
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11683
11575
  exposes: [
11684
11576
  tuya.exposes.switch(),
11685
11577
  e.power_on_behavior(["off", "on"]).withAccess(ea.STATE_SET),
@@ -11718,9 +11610,7 @@ exports.definitions = [
11718
11610
  model: "TS0601_fan_and_light_switch",
11719
11611
  vendor: "Tuya",
11720
11612
  description: "Fan & light switch",
11721
- fromZigbee: [tuya.fz.datapoints],
11722
- toZigbee: [tuya.tz.datapoints],
11723
- configure: tuya.configureMagicPacket,
11613
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11724
11614
  exposes: [
11725
11615
  e.binary("status_indication", ea.STATE_SET, "ON", "OFF").withDescription("Light switch"),
11726
11616
  tuya.exposes.switch(),
@@ -11757,9 +11647,7 @@ exports.definitions = [
11757
11647
  model: "TS0601_fan_5_levels_and_light_switch",
11758
11648
  vendor: "Tuya",
11759
11649
  description: "Fan with 5 levels & light switch",
11760
- fromZigbee: [tuya.fz.datapoints],
11761
- toZigbee: [tuya.tz.datapoints],
11762
- configure: tuya.configureMagicPacket,
11650
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11763
11651
  exposes: [
11764
11652
  e.binary("status_indication", ea.STATE_SET, "ON", "OFF").withDescription("Light switch"),
11765
11653
  tuya.exposes.switch(),
@@ -12038,9 +11926,7 @@ exports.definitions = [
12038
11926
  model: "TS0601_switch_4_gang_2",
12039
11927
  vendor: "Tuya",
12040
11928
  description: "4 gang switch with backlight",
12041
- fromZigbee: [tuya.fz.datapoints],
12042
- toZigbee: [tuya.tz.datapoints],
12043
- configure: tuya.configureMagicPacket,
11929
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12044
11930
  exposes: [
12045
11931
  tuya.exposes.switch().withEndpoint("l1"),
12046
11932
  tuya.exposes.switch().withEndpoint("l2"),
@@ -12069,8 +11955,7 @@ exports.definitions = [
12069
11955
  vendor: "Tuya",
12070
11956
  description: "Curtain/blind switch",
12071
11957
  options: [exposes.options.invert_cover()],
12072
- fromZigbee: [tuya.fz.datapoints],
12073
- toZigbee: [tuya.tz.datapoints],
11958
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12074
11959
  exposes: [
12075
11960
  e.cover_position().setAccess("position", ea.STATE_SET),
12076
11961
  e.enum("calibration", ea.STATE_SET, ["START", "END"]).withDescription("Calibration"),
@@ -12145,8 +12030,7 @@ exports.definitions = [
12145
12030
  vendor: "Tuya",
12146
12031
  description: "Curtain/blind switch with 1 Gang switch",
12147
12032
  options: [exposes.options.invert_cover()],
12148
- fromZigbee: [tuya.fz.datapoints],
12149
- toZigbee: [tuya.tz.datapoints],
12033
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12150
12034
  exposes: [
12151
12035
  e.cover_position().setAccess("position", ea.STATE_SET),
12152
12036
  tuya.exposes.switch().withEndpoint("l1"),
@@ -12200,8 +12084,7 @@ exports.definitions = [
12200
12084
  vendor: "Tuya",
12201
12085
  description: "Curtain/blind switch with 2 Gang switch",
12202
12086
  options: [exposes.options.invert_cover()],
12203
- fromZigbee: [tuya.fz.datapoints],
12204
- toZigbee: [tuya.tz.datapoints],
12087
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12205
12088
  exposes: [
12206
12089
  e.cover_position().setAccess("position", ea.STATE_SET),
12207
12090
  tuya.exposes.switch().withEndpoint("l1"),
@@ -12257,9 +12140,7 @@ exports.definitions = [
12257
12140
  vendor: "Tuya",
12258
12141
  description: "Smart energy monitor for 1P+N system",
12259
12142
  ota: true,
12260
- fromZigbee: [tuya.fz.datapoints],
12261
- toZigbee: [tuya.tz.datapoints],
12262
- configure: tuya.configureMagicPacket,
12143
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12263
12144
  exposes: [
12264
12145
  e.voltage(),
12265
12146
  e.power(),
@@ -12299,9 +12180,7 @@ exports.definitions = [
12299
12180
  model: "SPM02",
12300
12181
  vendor: "Tuya",
12301
12182
  description: "Smart energy monitor for 3P+N system",
12302
- fromZigbee: [tuya.fz.datapoints],
12303
- toZigbee: [tuya.tz.datapoints],
12304
- configure: tuya.configureMagicPacket,
12183
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12305
12184
  exposes: [
12306
12185
  tuya.exposes.voltageWithPhase("X"),
12307
12186
  tuya.exposes.voltageWithPhase("Y"),
@@ -12334,9 +12213,7 @@ exports.definitions = [
12334
12213
  model: "SPM01V2",
12335
12214
  vendor: "Tuya",
12336
12215
  description: "Smart energy monitor for 1P+N system",
12337
- fromZigbee: [tuya.fz.datapoints],
12338
- toZigbee: [tuya.tz.datapoints],
12339
- configure: tuya.configureMagicPacket,
12216
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12340
12217
  exposes: [
12341
12218
  e.voltage(),
12342
12219
  e.power(),
@@ -12410,9 +12287,7 @@ exports.definitions = [
12410
12287
  model: "SPM02V2",
12411
12288
  vendor: "Tuya",
12412
12289
  description: "Smart energy monitor for 3P+N system",
12413
- fromZigbee: [tuya.fz.datapoints],
12414
- toZigbee: [tuya.tz.datapoints],
12415
- configure: tuya.configureMagicPacket,
12290
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12416
12291
  exposes: [
12417
12292
  tuya.exposes.voltageWithPhase("a"),
12418
12293
  tuya.exposes.voltageWithPhase("b"),
@@ -12550,9 +12425,7 @@ exports.definitions = [
12550
12425
  model: "SPM01V2.5",
12551
12426
  vendor: "Tuya",
12552
12427
  description: "Smart energy monitor for 1P+N system",
12553
- fromZigbee: [tuya.fz.datapoints],
12554
- toZigbee: [tuya.tz.datapoints],
12555
- configure: tuya.configureMagicPacket,
12428
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12556
12429
  exposes: [
12557
12430
  e.voltage(),
12558
12431
  e.power(),
@@ -12624,9 +12497,7 @@ exports.definitions = [
12624
12497
  model: "SPM02V2.5",
12625
12498
  vendor: "Tuya",
12626
12499
  description: "Smart energy monitor for 3P+N system",
12627
- fromZigbee: [tuya.fz.datapoints],
12628
- toZigbee: [tuya.tz.datapoints],
12629
- configure: tuya.configureMagicPacket,
12500
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12630
12501
  exposes: [
12631
12502
  tuya.exposes.voltageWithPhase("a"),
12632
12503
  tuya.exposes.voltageWithPhase("b"),
@@ -12716,9 +12587,7 @@ exports.definitions = [
12716
12587
  model: "SPM02V3",
12717
12588
  vendor: "Tuya",
12718
12589
  description: "Smart energy monitor for 3P+N system",
12719
- fromZigbee: [tuya.fz.datapoints],
12720
- toZigbee: [tuya.tz.datapoints],
12721
- configure: tuya.configureMagicPacket,
12590
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12722
12591
  exposes: [
12723
12592
  tuya.exposes.voltageWithPhase("a"),
12724
12593
  tuya.exposes.voltageWithPhase("b"),
@@ -12785,9 +12654,7 @@ exports.definitions = [
12785
12654
  model: "SDM01",
12786
12655
  vendor: "Tuya",
12787
12656
  description: "Smart energy monitor for 3P+N system",
12788
- fromZigbee: [tuya.fz.datapoints],
12789
- toZigbee: [tuya.tz.datapoints],
12790
- configure: tuya.configureMagicPacket,
12657
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12791
12658
  whiteLabel: [tuya.whitelabel("Nous", "D4Z", "Smart energy monitor for 3P+N system", ["_TZE204_loejka0i"])],
12792
12659
  exposes: [
12793
12660
  tuya.exposes.voltageWithPhase("a"),
@@ -12847,9 +12714,7 @@ exports.definitions = [
12847
12714
  model: "SDM01V1.5",
12848
12715
  vendor: "Tuya",
12849
12716
  description: "Smart energy monitor for 3P+N system",
12850
- fromZigbee: [tuya.fz.datapoints],
12851
- toZigbee: [tuya.tz.datapoints],
12852
- configure: tuya.configureMagicPacket,
12717
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12853
12718
  exposes: [
12854
12719
  tuya.exposes.voltageWithPhase("a"),
12855
12720
  tuya.exposes.voltageWithPhase("b"),
@@ -12916,9 +12781,7 @@ exports.definitions = [
12916
12781
  model: "SDM02V1",
12917
12782
  vendor: "Tuya",
12918
12783
  description: "Smart energy monitor for 2P+N system",
12919
- fromZigbee: [tuya.fz.datapoints],
12920
- toZigbee: [tuya.tz.datapoints],
12921
- configure: tuya.configureMagicPacket,
12784
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12922
12785
  exposes: [
12923
12786
  tuya.exposes.voltageWithPhase("l1"),
12924
12787
  tuya.exposes.voltageWithPhase("l2"),
@@ -12973,7 +12836,7 @@ exports.definitions = [
12973
12836
  model: "TS0601_bidirectional_energy meter",
12974
12837
  vendor: "Tuya",
12975
12838
  description: "Bidirectional energy meter with 150A Current Clamp",
12976
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
12839
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12977
12840
  exposes: [
12978
12841
  e.energy(),
12979
12842
  e.produced_energy(),
@@ -13004,9 +12867,7 @@ exports.definitions = [
13004
12867
  model: "TS0601_switch_8",
13005
12868
  vendor: "Tuya",
13006
12869
  description: "ZYXH 8 gang switch",
13007
- fromZigbee: [tuya.fz.datapoints],
13008
- toZigbee: [tuya.tz.datapoints],
13009
- configure: tuya.configureMagicPacket,
12870
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13010
12871
  exposes: [
13011
12872
  tuya.exposes.switch().withEndpoint("l1"),
13012
12873
  tuya.exposes.switch().withEndpoint("l2"),
@@ -13040,9 +12901,7 @@ exports.definitions = [
13040
12901
  model: "TS0601_switch_8_2",
13041
12902
  vendor: "Tuya",
13042
12903
  description: "8 gang switch",
13043
- fromZigbee: [tuya.fz.datapoints],
13044
- toZigbee: [tuya.tz.datapoints],
13045
- configure: tuya.configureMagicPacket,
12904
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13046
12905
  exposes: [
13047
12906
  tuya.exposes.switch().withEndpoint("l1"),
13048
12907
  tuya.exposes.switch().withEndpoint("l2"),
@@ -13093,9 +12952,7 @@ exports.definitions = [
13093
12952
  model: "TS0601_switch_10",
13094
12953
  vendor: "Tuya",
13095
12954
  description: "10 gang switch",
13096
- fromZigbee: [tuya.fz.datapoints],
13097
- toZigbee: [tuya.tz.datapoints],
13098
- configure: tuya.configureMagicPacket,
12955
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13099
12956
  exposes: [...Array.from({ length: 10 }, (_, i) => tuya.exposes.switch().withEndpoint(`l${i + 1}`))],
13100
12957
  endpoint: (device) => {
13101
12958
  return {
@@ -13134,9 +12991,7 @@ exports.definitions = [
13134
12991
  model: "TS0601_switch_12",
13135
12992
  vendor: "Tuya",
13136
12993
  description: "ZXYH 12 gang switch",
13137
- fromZigbee: [tuya.fz.datapoints],
13138
- toZigbee: [tuya.tz.datapoints],
13139
- configure: tuya.configureMagicPacket,
12994
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13140
12995
  exposes: [...Array.from({ length: 12 }, (_, i) => tuya.exposes.switch().withEndpoint(`l${i + 1}`))],
13141
12996
  endpoint: (device) => {
13142
12997
  return {
@@ -13274,8 +13129,9 @@ exports.definitions = [
13274
13129
  vendor: "Tuya",
13275
13130
  description: "Zigbee fingerbot plus",
13276
13131
  whiteLabel: [tuya.whitelabel("Adaprox", "TS0001_fingerbot_1", "Zigbee fingerbot plus", ["_TZ3210_dse8ogfy"])],
13277
- fromZigbee: [fz.on_off, tuya.fz.datapoints],
13278
- toZigbee: [tz.on_off, tuya.tz.datapoints],
13132
+ fromZigbee: [fz.on_off],
13133
+ toZigbee: [tz.on_off],
13134
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13279
13135
  exposes: [
13280
13136
  e.switch(),
13281
13137
  e.battery(),
@@ -13287,7 +13143,6 @@ exports.definitions = [
13287
13143
  e.binary("touch", ea.STATE_SET, "ON", "OFF").withDescription("Touch control"),
13288
13144
  ],
13289
13145
  configure: async (device, coordinatorEndpoint) => {
13290
- await tuya.configureMagicPacket(device, coordinatorEndpoint);
13291
13146
  await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ["genOnOff"]);
13292
13147
  },
13293
13148
  meta: {
@@ -13326,9 +13181,7 @@ exports.definitions = [
13326
13181
  model: "SWS6TZ-WHITE",
13327
13182
  vendor: "Tuya",
13328
13183
  description: "6 gang wall switch",
13329
- fromZigbee: [tuya.fz.datapoints],
13330
- toZigbee: [tuya.tz.datapoints],
13331
- configure: tuya.configureMagicPacket,
13184
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13332
13185
  exposes: [
13333
13186
  e.switch().withEndpoint("l1"),
13334
13187
  e.switch().withEndpoint("l2"),
@@ -13363,7 +13216,7 @@ exports.definitions = [
13363
13216
  model: "ZS-TYG3-SM-61Z",
13364
13217
  vendor: "Tuya",
13365
13218
  description: "Smart switch (4 gang + 2 scene) with backlight and neutral wire",
13366
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "off" })],
13219
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13367
13220
  exposes: [
13368
13221
  tuya.exposes.switch().withDescription("All Switches"),
13369
13222
  tuya.exposes.switch().withEndpoint("l1"),
@@ -13419,7 +13272,7 @@ exports.definitions = [
13419
13272
  model: "ZS-TYG3-SM-21Z",
13420
13273
  vendor: "Tuya",
13421
13274
  description: "2 gang smart switch with backlight and neutral wire",
13422
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
13275
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13423
13276
  exposes: [
13424
13277
  tuya.exposes.switch().withDescription("All Switches"),
13425
13278
  tuya.exposes.switch().withEndpoint("l1"),
@@ -13461,7 +13314,7 @@ exports.definitions = [
13461
13314
  tuya.exposes.countdown().withEndpoint("l3"),
13462
13315
  e.power_on_behavior(["off", "on", "previous"]).withAccess(ea.STATE_SET),
13463
13316
  ],
13464
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
13317
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13465
13318
  endpoint: (device) => {
13466
13319
  return { l1: 1, l2: 1, l3: 1, state: 1, backlight: 1 };
13467
13320
  },
@@ -13485,7 +13338,7 @@ exports.definitions = [
13485
13338
  model: "ZS-TYG3-SM-41Z",
13486
13339
  vendor: "Tuya",
13487
13340
  description: "4 gang smart switch with backlight and neutral wire",
13488
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
13341
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13489
13342
  exposes: [
13490
13343
  tuya.exposes.switch().withDescription("All Switches"),
13491
13344
  tuya.exposes.switch().withEndpoint("l1"),
@@ -13525,9 +13378,9 @@ exports.definitions = [
13525
13378
  model: "M9-zigbee-SL",
13526
13379
  vendor: "Tuya",
13527
13380
  description: "Smart Switch (4 gang + 4 scene) with neutral wire and motion sensing",
13528
- fromZigbee: [tuya.fz.datapoints, fz.ias_occupancy_only_alarm_2, tuya.fz.indicator_mode],
13529
- toZigbee: [tuya.tz.datapoints, tuya.tz.power_on_behavior_1, tuya.tz.backlight_indicator_mode_1],
13530
- configure: tuya.configureMagicPacket,
13381
+ fromZigbee: [fz.ias_occupancy_only_alarm_2, tuya.fz.indicator_mode],
13382
+ toZigbee: [tuya.tz.power_on_behavior_1, tuya.tz.backlight_indicator_mode_1],
13383
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13531
13384
  exposes: [
13532
13385
  ...[1, 2, 3, 4, 5, 6, 7, 8].map((i) => tuya.exposes.switch().withEndpoint(`l${i}`)),
13533
13386
  ...[1, 2, 3, 4, 5, 6, 7, 8].map((i) => e.power_on_behavior().withAccess(ea.STATE_SET).withEndpoint(`l${i}`)),
@@ -13606,8 +13459,7 @@ exports.definitions = [
13606
13459
  model: "YXZBRB58",
13607
13460
  vendor: "Tuya",
13608
13461
  description: "Smart human presence sensor",
13609
- fromZigbee: [tuya.fz.datapoints],
13610
- toZigbee: [tuya.tz.datapoints],
13462
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13611
13463
  exposes: [
13612
13464
  e.illuminance(),
13613
13465
  e.presence(),
@@ -13668,8 +13520,7 @@ exports.definitions = [
13668
13520
  model: "TS0601_light",
13669
13521
  vendor: "Tuya",
13670
13522
  description: "Light",
13671
- fromZigbee: [tuya.fz.datapoints],
13672
- toZigbee: [tuya.tz.datapoints],
13523
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13673
13524
  exposes: [tuya.exposes.lightBrightness(), e.power_on_behavior().withAccess(ea.STATE_SET)],
13674
13525
  meta: {
13675
13526
  tuyaDatapoints: [
@@ -13691,8 +13542,7 @@ exports.definitions = [
13691
13542
  model: "YXZBSL",
13692
13543
  vendor: "Tuya",
13693
13544
  description: "Smart siren",
13694
- fromZigbee: [tuya.fz.datapoints],
13695
- toZigbee: [tuya.tz.datapoints],
13545
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13696
13546
  exposes: [
13697
13547
  e.binary("alarm", ea.STATE_SET, "ON", "OFF").withDescription("Turn the light of the alarm ON/OFF"),
13698
13548
  e.enum("type", ea.STATE_SET, ["sound", "light", "sound+light", "normal"]).withDescription("Alarm type"),
@@ -13787,9 +13637,7 @@ exports.definitions = [
13787
13637
  model: "ZYXH",
13788
13638
  vendor: "Tuya",
13789
13639
  description: "24 gang switch",
13790
- fromZigbee: [tuya.fz.datapoints],
13791
- toZigbee: [tuya.tz.datapoints],
13792
- configure: tuya.configureMagicPacket,
13640
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13793
13641
  exposes: [...Array.from(Array(24).keys()).map((ep) => tuya.exposes.switch().withEndpoint(`l${ep + 1}`))],
13794
13642
  endpoint: (device) => {
13795
13643
  return {
@@ -13854,9 +13702,7 @@ exports.definitions = [
13854
13702
  model: "ZY-M100-24G",
13855
13703
  vendor: "Tuya",
13856
13704
  description: "24G MmWave radar human presence motion sensor",
13857
- fromZigbee: [tuya.fz.datapoints],
13858
- toZigbee: [tuya.tz.datapoints],
13859
- configure: tuya.configureMagicPacket,
13705
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13860
13706
  exposes: [
13861
13707
  e.enum("state", ea.STATE, ["none", "presence", "move"]).withDescription("Presence state"),
13862
13708
  e.presence(),
@@ -13913,9 +13759,7 @@ exports.definitions = [
13913
13759
  model: "ZY-M100-24GV2",
13914
13760
  vendor: "Tuya",
13915
13761
  description: "24G MmWave radar human presence motion sensor",
13916
- fromZigbee: [tuya.fz.datapoints],
13917
- toZigbee: [tuya.tz.datapoints],
13918
- configure: tuya.configureMagicPacket,
13762
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13919
13763
  exposes: [
13920
13764
  e.enum("state", ea.STATE, ["none", "presence", "move"]).withDescription("Presence state sensor"),
13921
13765
  e.presence().withDescription("Occupancy"),
@@ -13964,9 +13808,7 @@ exports.definitions = [
13964
13808
  model: "ZY-M100-24GV3",
13965
13809
  vendor: "Tuya",
13966
13810
  description: "24G MmWave radar human presence motion sensor (added distance switch)",
13967
- fromZigbee: [tuya.fz.datapoints],
13968
- toZigbee: [tuya.tz.datapoints],
13969
- configure: tuya.configureMagicPacket,
13811
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13970
13812
  exposes: (device, options) => {
13971
13813
  const exps = [
13972
13814
  e.enum("state", ea.STATE, ["none", "presence", "move"]).withDescription("Presence state sensor"),
@@ -14071,8 +13913,7 @@ exports.definitions = [
14071
13913
  model: "CTL-R1-TY-Zigbee",
14072
13914
  vendor: "Tuya",
14073
13915
  description: "24G radar human presence motion sensor.",
14074
- fromZigbee: [tuya.fz.datapoints],
14075
- toZigbee: [tuya.tz.datapoints],
13916
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14076
13917
  exposes: [
14077
13918
  e.illuminance().withUnit("lx"),
14078
13919
  e.presence(),
@@ -14181,9 +14022,7 @@ exports.definitions = [
14181
14022
  tuya.whitelabel("Tuya", "MTG235-ZB-RL", "24G Human presence sensor with relay", ["_TZE204_clrdrnya", "_TZE200_clrdrnya"]),
14182
14023
  tuya.whitelabel("QA", "QASZ24R", "mmWave 24 Ghz sensor with relay", ["_TZE284_4qznlkbu"]),
14183
14024
  ],
14184
- configure: tuya.configureMagicPacket,
14185
- fromZigbee: [tuya.fz.datapoints],
14186
- toZigbee: [tuya.tz.datapoints],
14025
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14187
14026
  exposes: [
14188
14027
  e.presence(),
14189
14028
  e.illuminance(),
@@ -14330,7 +14169,7 @@ exports.definitions = [
14330
14169
  description: "Bidirectional energy meter with 80A current clamp",
14331
14170
  fromZigbee: [fzLocal.PJ1203A_strict_fz_datapoints, fzLocal.PJ1203A_sync_time_increase_seq],
14332
14171
  toZigbee: [tuya.tz.datapoints],
14333
- extend: [tuya.modernExtend.tuyaBase({ timeStart: "off" })],
14172
+ extend: [tuya.modernExtend.tuyaBase()],
14334
14173
  options: [
14335
14174
  e
14336
14175
  .binary("late_energy_flow_a", ea.SET, true, false)
@@ -14406,7 +14245,7 @@ exports.definitions = [
14406
14245
  model: "PC311-Z-TY",
14407
14246
  vendor: "Tuya",
14408
14247
  description: "Bidirectional energy meter with 80A current clamp",
14409
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
14248
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14410
14249
  exposes: [
14411
14250
  e.ac_frequency(),
14412
14251
  e.voltage(),
@@ -14452,7 +14291,7 @@ exports.definitions = [
14452
14291
  model: "TYBAC-006",
14453
14292
  vendor: "Tuya",
14454
14293
  description: "Wall-mount thermostat for 2-pipe fan-coil unit",
14455
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
14294
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
14456
14295
  options: [
14457
14296
  e
14458
14297
  .enum("control_sequence_of_operation", ea.SET, ["cooling_only", "cooling_and_heating_4-pipes"])
@@ -14578,7 +14417,7 @@ exports.definitions = [
14578
14417
  model: "rtsc11r",
14579
14418
  vendor: "Tuya",
14580
14419
  description: "5.8G human presence sensor with relay",
14581
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
14420
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14582
14421
  exposes: [
14583
14422
  e.presence(),
14584
14423
  e.illuminance().withUnit("lx"),
@@ -14637,9 +14476,7 @@ exports.definitions = [
14637
14476
  model: "NAS-PS09B2",
14638
14477
  vendor: "NEO",
14639
14478
  description: "Human presence sensor",
14640
- fromZigbee: [tuya.fz.datapoints],
14641
- toZigbee: [tuya.tz.datapoints],
14642
- configure: tuya.configureMagicPacket,
14479
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14643
14480
  exposes: [
14644
14481
  e.occupancy(),
14645
14482
  e.enum("human_motion_state", ea.STATE, ["none", "small", "large"]).withDescription("Human Motion State"),
@@ -14820,7 +14657,7 @@ exports.definitions = [
14820
14657
  model: "SP02-ZB001",
14821
14658
  vendor: "iAlarm",
14822
14659
  description: "Infrared motion sensor",
14823
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
14660
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14824
14661
  exposes: [e.tamper(), e.battery(), e.occupancy()],
14825
14662
  meta: {
14826
14663
  tuyaDatapoints: [
@@ -14835,9 +14672,7 @@ exports.definitions = [
14835
14672
  model: "THS317-ET-TY",
14836
14673
  vendor: "Tuya",
14837
14674
  description: "Temperature sensor with probe",
14838
- fromZigbee: [tuya.fz.datapoints],
14839
- toZigbee: [tuya.tz.datapoints],
14840
- configure: tuya.configureMagicPacket,
14675
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14841
14676
  exposes: [e.temperature(), e.battery()],
14842
14677
  whiteLabel: [tuya.whitelabel("OWON", "THS317-ET-EY", "Temperature sensor with probe", ["_TZE200_01fvxamo"])],
14843
14678
  meta: {
@@ -14852,7 +14687,7 @@ exports.definitions = [
14852
14687
  model: "DCR-RQJ",
14853
14688
  vendor: "Tuya",
14854
14689
  description: "Carbon monoxide sensor gas leak detector",
14855
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
14690
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14856
14691
  exposes: [e.gas(), tuya.exposes.gasValue().withUnit("LEL %"), e.carbon_monoxide(), e.co()],
14857
14692
  meta: {
14858
14693
  tuyaDatapoints: [
@@ -14882,7 +14717,7 @@ exports.definitions = [
14882
14717
  model: "SZR07U",
14883
14718
  vendor: "Tuya",
14884
14719
  description: "24GHz millimeter wave radar",
14885
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
14720
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14886
14721
  exposes: [
14887
14722
  e.presence(),
14888
14723
  e
@@ -14978,7 +14813,6 @@ exports.definitions = [
14978
14813
  dp: true,
14979
14814
  queryOnConfigure: true,
14980
14815
  queryIntervalSeconds: 10,
14981
- timeStart: "off",
14982
14816
  respondToMcuVersionResponse: true,
14983
14817
  }),
14984
14818
  ],
@@ -15194,7 +15028,6 @@ exports.definitions = [
15194
15028
  dp: true,
15195
15029
  queryOnConfigure: true,
15196
15030
  queryIntervalSeconds: 10,
15197
- timeStart: "off",
15198
15031
  respondToMcuVersionResponse: true,
15199
15032
  }),
15200
15033
  ],
@@ -15379,7 +15212,7 @@ exports.definitions = [
15379
15212
  model: "EA4161C-BI",
15380
15213
  vendor: "Tuya",
15381
15214
  description: "Single-phase multifunction energy meter (DIN Module)",
15382
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "off" })],
15215
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
15383
15216
  exposes: [e.current(), e.power(), e.voltage(), e.energy(), e.text("meter_id", ea.STATE).withDescription("Meter ID (ID of device)")],
15384
15217
  meta: {
15385
15218
  tuyaDatapoints: [
@@ -15422,7 +15255,7 @@ exports.definitions = [
15422
15255
  model: "ZR360CDB",
15423
15256
  vendor: "Zorro Alert",
15424
15257
  description: "Multifunctional CO2 detector",
15425
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
15258
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
15426
15259
  whiteLabel: [tuya.whitelabel("Nous", "E10", "Multifunctional CO2 detector", ["_TZE200_xpvamyfz", "_TZE284_xpvamyfz"])],
15427
15260
  exposes: [
15428
15261
  e.humidity(),
@@ -15800,7 +15633,7 @@ exports.definitions = [
15800
15633
  model: "ZPV-01",
15801
15634
  vendor: "Novato",
15802
15635
  description: "Battery powered smart valve",
15803
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
15636
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
15804
15637
  exposes: [
15805
15638
  e.switch().setAccess("state", ea.STATE_SET),
15806
15639
  e.enum("valve_state", ea.STATE, ["Closed", "Unknown", "Open"]).withDescription("Valve Status"),
@@ -15921,8 +15754,7 @@ exports.definitions = [
15921
15754
  model: "RT_ZCZ03Z",
15922
15755
  vendor: "Tuya",
15923
15756
  description: "Human presence sensor 24G",
15924
- fromZigbee: [tuya.fz.datapoints],
15925
- toZigbee: [tuya.tz.datapoints],
15757
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
15926
15758
  exposes: [
15927
15759
  e.illuminance(),
15928
15760
  e.presence(),
@@ -15972,7 +15804,7 @@ exports.definitions = [
15972
15804
  description: "Smart circuit breaker",
15973
15805
  // Important: respondToMcuVersionResponse should be false otherwise there is an avalanche of commandMcuVersionResponse messages every second.
15974
15806
  // queryIntervalSeconds: is doing a pooling to update the device's parameters, now defined to update data every 3 minutes.
15975
- extend: [tuya.modernExtend.tuyaBase({ dp: true, queryIntervalSeconds: 3 * 60, timeStart: "off", respondToMcuVersionResponse: true })],
15807
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, queryIntervalSeconds: 3 * 60, respondToMcuVersionResponse: true })],
15976
15808
  exposes: [
15977
15809
  tuya.exposes.switch(),
15978
15810
  e.energy(),
@@ -16151,7 +15983,7 @@ exports.definitions = [
16151
15983
  model: "ZY-M100-S_3",
16152
15984
  vendor: "Tuya",
16153
15985
  description: "Human presence detector",
16154
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
15986
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16155
15987
  exposes: [
16156
15988
  e.presence(),
16157
15989
  e.illuminance(),
@@ -16190,7 +16022,7 @@ exports.definitions = [
16190
16022
  model: "ZG-205Z",
16191
16023
  vendor: "Tuya",
16192
16024
  description: "5.8 GHz human presence sensor",
16193
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
16025
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16194
16026
  exposes: [
16195
16027
  e.presence(),
16196
16028
  e
@@ -16306,9 +16138,7 @@ exports.definitions = [
16306
16138
  model: "PN6",
16307
16139
  vendor: "ZSVIOT",
16308
16140
  description: "6-way controller",
16309
- fromZigbee: [tuya.fz.datapoints],
16310
- toZigbee: [tuya.tz.datapoints],
16311
- configure: tuya.configureMagicPacket,
16141
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16312
16142
  exposes: [
16313
16143
  tuya.exposes.switch(),
16314
16144
  tuya.exposes.switchMode2().withEndpoint("l1_l2").withLabel("1-2 channels"),
@@ -16360,9 +16190,7 @@ exports.definitions = [
16360
16190
  model: "PN16",
16361
16191
  vendor: "ZSVIOT",
16362
16192
  description: "16-way controller",
16363
- fromZigbee: [tuya.fz.datapoints],
16364
- toZigbee: [tuya.tz.datapoints],
16365
- configure: tuya.configureMagicPacket,
16193
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16366
16194
  exposes: [
16367
16195
  e.power_on_behavior(["off", "on", "previous"]).withAccess(ea.STATE_SET),
16368
16196
  tuya.exposes.switch().withEndpoint("all"),
@@ -16468,9 +16296,7 @@ exports.definitions = [
16468
16296
  model: "ZG-103Z",
16469
16297
  vendor: "Tuya",
16470
16298
  description: "Vibration sensor",
16471
- fromZigbee: [tuya.fz.datapoints],
16472
- toZigbee: [tuya.tz.datapoints],
16473
- configure: tuya.configureMagicPacket,
16299
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16474
16300
  exposes: [
16475
16301
  e.vibration(),
16476
16302
  e.tilt(),
@@ -16513,8 +16339,7 @@ exports.definitions = [
16513
16339
  model: "ZG-302ZM",
16514
16340
  vendor: "HOBEIAN",
16515
16341
  description: "Motion sensing switch",
16516
- fromZigbee: [tuya.fz.datapoints],
16517
- toZigbee: [tuya.tz.datapoints],
16342
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16518
16343
  exposes: [
16519
16344
  e.presence(),
16520
16345
  e.binary("switch1", ea.STATE_SET, "ON", "OFF").withDescription("Switch1"),
@@ -16607,9 +16432,7 @@ exports.definitions = [
16607
16432
  model: "ZG-303Z",
16608
16433
  vendor: "HOBEIAN",
16609
16434
  description: "Soil moisture sensor",
16610
- fromZigbee: [tuya.fz.datapoints],
16611
- toZigbee: [tuya.tz.datapoints],
16612
- configure: tuya.configureMagicPacket,
16435
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16613
16436
  exposes: [
16614
16437
  e.enum("water_warning", ea.STATE, ["none", "alarm"]).withDescription("Water shortage warning"),
16615
16438
  e.temperature(),
@@ -16653,10 +16476,8 @@ exports.definitions = [
16653
16476
  model: "TS0601_din_4",
16654
16477
  vendor: "Tuya",
16655
16478
  description: "Din rail switch with power monitoring and threshold settings",
16656
- fromZigbee: [tuya.fz.datapoints],
16657
- toZigbee: [tuya.tz.datapoints],
16479
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16658
16480
  configure: async (device, coordinatorEndpoint) => {
16659
- await tuya.configureMagicPacket(device, coordinatorEndpoint);
16660
16481
  // Required to get the device to start reporting
16661
16482
  await device.getEndpoint(1).command("manuSpecificTuya", "dataQuery", {});
16662
16483
  },
@@ -16701,9 +16522,7 @@ exports.definitions = [
16701
16522
  model: "ZA03",
16702
16523
  vendor: "Tuya",
16703
16524
  description: "Siren alarm",
16704
- fromZigbee: [tuya.fz.datapoints],
16705
- toZigbee: [tuya.tz.datapoints],
16706
- configure: tuya.configureMagicPacket,
16525
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16707
16526
  exposes: [
16708
16527
  e.binary("alarm", ea.STATE_SET, "ON", "OFF").withDescription("Sound the alarm"),
16709
16528
  e.enum("volume", ea.STATE_SET, ["low", "medium", "high", "mute"]),
@@ -16809,10 +16628,7 @@ exports.definitions = [
16809
16628
  model: "ZY_HPS01",
16810
16629
  vendor: "Tuya",
16811
16630
  description: "mmWave radar 5.8GHz",
16812
- fromZigbee: [tuya.fz.datapoints],
16813
- toZigbee: [tuya.tz.datapoints],
16814
- configure: tuya.configureMagicPacket,
16815
- extend: [],
16631
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16816
16632
  whiteLabel: [tuya.whitelabel("Nova Digital", "ZTS-MM", "mmWave radar 5.8GHz", ["_TZE204_lbbg34rj"])],
16817
16633
  exposes: [
16818
16634
  e.illuminance().withUnit("lx"),
@@ -16886,8 +16702,7 @@ exports.definitions = [
16886
16702
  model: "ZPIR-10",
16887
16703
  vendor: "Tuya",
16888
16704
  description: "Treatlife human presence sensor",
16889
- fromZigbee: [tuya.fz.datapoints],
16890
- toZigbee: [tuya.tz.datapoints],
16705
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16891
16706
  exposes: [e.occupancy(), e.battery(), e.illuminance()],
16892
16707
  meta: {
16893
16708
  tuyaDatapoints: [
@@ -16902,7 +16717,7 @@ exports.definitions = [
16902
16717
  model: "TS0601_thermostat_thermosphere",
16903
16718
  vendor: "Tuya",
16904
16719
  description: "ThermoSphere thermostat",
16905
- extend: [tuyaBase({ dp: true })],
16720
+ extend: [tuyaBase({ dp: true, timeStart: "1970" })],
16906
16721
  exposes: [
16907
16722
  e
16908
16723
  .climate()
@@ -17069,7 +16884,7 @@ exports.definitions = [
17069
16884
  model: "TS0601_GTZ10",
17070
16885
  vendor: "Tuya",
17071
16886
  description: "Thermostat radiator valve",
17072
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
16887
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
17073
16888
  ota: true,
17074
16889
  exposes: [
17075
16890
  e.battery(),
@@ -17354,7 +17169,7 @@ exports.definitions = [
17354
17169
  model: "HHST001",
17355
17170
  vendor: "HeatHUB",
17356
17171
  description: "Fan coil thermostat",
17357
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
17172
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
17358
17173
  exposes: [
17359
17174
  e.binary("state", ea.STATE_SET, "ON", "OFF").withDescription("Turn the thermostat ON/OFF"),
17360
17175
  e
@@ -17432,9 +17247,7 @@ exports.definitions = [
17432
17247
  model: "GX03",
17433
17248
  vendor: "GIEX",
17434
17249
  description: "GIEX 2 zone watering timer",
17435
- fromZigbee: [tuya.fz.datapoints],
17436
- toZigbee: [tuya.tz.datapoints],
17437
- configure: tuya.configureMagicPacket,
17250
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
17438
17251
  exposes: [
17439
17252
  e.binary("valve_1", ea.STATE_SET, "ON", "OFF").withDescription("Switch state"),
17440
17253
  e
@@ -17486,9 +17299,7 @@ exports.definitions = [
17486
17299
  model: "PJ3201A",
17487
17300
  vendor: "Dongguan Pinjia Technology Co.,LTD.",
17488
17301
  description: "Human Presence Sensor",
17489
- fromZigbee: [tuya.fz.datapoints],
17490
- toZigbee: [tuya.tz.datapoints],
17491
- configure: tuya.configureMagicPacket,
17302
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
17492
17303
  exposes: [
17493
17304
  e.presence().withDescription("Indicates whether the device detected presence. Will be true also when movement (occupancy) is detected."),
17494
17305
  e
@@ -17745,7 +17556,7 @@ exports.definitions = [
17745
17556
  model: "PO-BOCO-ELEC",
17746
17557
  vendor: "Powernity",
17747
17558
  description: "Pilot wire heating module",
17748
- extend: [tuyaBase({ dp: true })],
17559
+ extend: [tuyaBase({ dp: true, timeStart: "1970" })],
17749
17560
  exposes: [
17750
17561
  e
17751
17562
  .climate()
@@ -18013,7 +17824,7 @@ exports.definitions = [
18013
17824
  model: "TR-M3Z",
18014
17825
  vendor: "Tuya",
18015
17826
  description: "Thermostatic radiator valve actuator",
18016
- extend: [tuyaBase({ dp: true })],
17827
+ extend: [tuyaBase({ dp: true, timeStart: "1970" })],
18017
17828
  exposes: [
18018
17829
  e.child_lock(),
18019
17830
  e.battery(),
@@ -18167,7 +17978,7 @@ exports.definitions = [
18167
17978
  model: "AE-669K",
18168
17979
  vendor: "ACMELEC",
18169
17980
  description: "Compatible with Mitsubishi Electric vrf system",
18170
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
17981
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18171
17982
  exposes: [
18172
17983
  e.binary("state", ea.STATE_SET, "ON", "OFF").withDescription("Turn the thermostat ON/OFF"),
18173
17984
  e
@@ -18211,9 +18022,7 @@ exports.definitions = [
18211
18022
  model: "ATMS10013Z3",
18212
18023
  vendor: "Ourtop",
18213
18024
  description: "Zigbee 3 Phase Meter",
18214
- fromZigbee: [tuya.fz.datapoints],
18215
- toZigbee: [tuya.tz.datapoints],
18216
- configure: tuya.configureMagicPacket,
18025
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18217
18026
  whiteLabel: [{ vendor: "Ourtop", model: "ATMS100133Z" }],
18218
18027
  exposes: [
18219
18028
  e.energy(),
@@ -18258,9 +18067,7 @@ exports.definitions = [
18258
18067
  model: "ZG-WK-DA-Wh-Zigbee",
18259
18068
  vendor: "Tuya",
18260
18069
  description: "Wall thermostat with humidity sensor",
18261
- fromZigbee: [tuya.fz.datapoints],
18262
- toZigbee: [tuya.tz.datapoints],
18263
- configure: tuya.configureMagicPacket,
18070
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18264
18071
  exposes: [
18265
18072
  e.humidity(),
18266
18073
  e.child_lock(),
@@ -18443,7 +18250,7 @@ exports.definitions = [
18443
18250
  model: "HY-SZLUMPIR",
18444
18251
  vendor: "Homcloud",
18445
18252
  description: "PIR sensor",
18446
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "off", respondToMcuVersionResponse: true })],
18253
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, respondToMcuVersionResponse: true })],
18447
18254
  exposes: [e.occupancy(), e.illuminance(), e.battery()],
18448
18255
  meta: {
18449
18256
  tuyaDatapoints: [
@@ -18458,7 +18265,7 @@ exports.definitions = [
18458
18265
  model: "XZ-AKT101",
18459
18266
  vendor: "Tuya",
18460
18267
  description: "Intelligent air conditioning wall switch",
18461
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
18268
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18462
18269
  ota: true,
18463
18270
  exposes: [
18464
18271
  e.binary("air_switch", ea.STATE_SET, true, false),
@@ -18512,8 +18319,7 @@ exports.definitions = [
18512
18319
  model: "ZBN-JT-63",
18513
18320
  vendor: "Tuya",
18514
18321
  description: "Din rail switch with power monitoring",
18515
- fromZigbee: [tuya.fz.datapoints],
18516
- toZigbee: [tuya.tz.datapoints],
18322
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18517
18323
  exposes: [
18518
18324
  tuya.exposes.switch(),
18519
18325
  e.numeric("power", ea.STATE).withDescription("power").withUnit("W").withDescription("Instantaneous measured power"),
@@ -18603,7 +18409,7 @@ exports.definitions = [
18603
18409
  model: "EPJ-ZB",
18604
18410
  vendor: "Nova Digital",
18605
18411
  description: "Smart sliding window pusher",
18606
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
18412
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18607
18413
  exposes: [
18608
18414
  e.battery(),
18609
18415
  e.cover_position(),
@@ -18639,9 +18445,7 @@ exports.definitions = [
18639
18445
  model: "ZG-102ZM",
18640
18446
  vendor: "HOBEIAN",
18641
18447
  description: "Vibration sensor",
18642
- fromZigbee: [tuya.fz.datapoints],
18643
- toZigbee: [tuya.tz.datapoints],
18644
- configure: tuya.configureMagicPacket,
18448
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18645
18449
  exposes: [
18646
18450
  e.vibration(),
18647
18451
  e.contact(),
@@ -18669,8 +18473,7 @@ exports.definitions = [
18669
18473
  model: "ZG-204ZV",
18670
18474
  vendor: "HOBEIAN",
18671
18475
  description: "Millimeter wave motion detection",
18672
- fromZigbee: [tuya.fz.datapoints],
18673
- toZigbee: [tuya.tz.datapoints],
18476
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18674
18477
  exposes: [
18675
18478
  e.presence(),
18676
18479
  e.illuminance(),
@@ -18726,9 +18529,7 @@ exports.definitions = [
18726
18529
  model: "ZG-223Z",
18727
18530
  vendor: "HOBEIAN",
18728
18531
  description: "Rainwater detection sensor",
18729
- fromZigbee: [tuya.fz.datapoints],
18730
- toZigbee: [tuya.tz.datapoints],
18731
- configure: tuya.configureMagicPacket,
18532
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18732
18533
  exposes: [
18733
18534
  e.enum("rainwater", ea.STATE, ["none", "raining"]).withDescription("Sensor rainwater status"),
18734
18535
  e.illuminance(),
@@ -18770,7 +18571,7 @@ exports.definitions = [
18770
18571
  model: "RD24G01",
18771
18572
  vendor: "Tuya",
18772
18573
  description: "24GHz human presence sensor",
18773
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
18574
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18774
18575
  exposes: [
18775
18576
  exposes
18776
18577
  .enum("presence_state", exposes.access.STATE, ["none", "motion", "stationary"])
@@ -18819,7 +18620,7 @@ exports.definitions = [
18819
18620
  model: "M515EGBZTN",
18820
18621
  vendor: "Quoya",
18821
18622
  description: "Zigbee roller blind",
18822
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
18623
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18823
18624
  options: [exposes.options.invert_cover()],
18824
18625
  exposes: [
18825
18626
  e.cover_position().setAccess("position", ea.STATE_SET),
@@ -18866,9 +18667,7 @@ exports.definitions = [
18866
18667
  model: "CS-201Z",
18867
18668
  vendor: "COOLO",
18868
18669
  description: "Soil moisture sensor",
18869
- fromZigbee: [tuya.fz.datapoints],
18870
- toZigbee: [tuya.tz.datapoints],
18871
- configure: tuya.configureMagicPacket,
18670
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18872
18671
  exposes: [
18873
18672
  e.dry(),
18874
18673
  e.temperature(),
@@ -19021,8 +18820,8 @@ exports.definitions = [
19021
18820
  model: "TS0601_knob_dimmer_switch",
19022
18821
  vendor: "Tuya",
19023
18822
  description: "Dimmer knob with two lights",
19024
- fromZigbee: [tuya.fz.datapoints],
19025
- toZigbee: [tzLocal.TS0601_knob_dimmer_switch_group_id, tuya.tz.datapoints],
18823
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18824
+ toZigbee: [tzLocal.TS0601_knob_dimmer_switch_group_id],
19026
18825
  exposes: [
19027
18826
  e.switch(),
19028
18827
  e.switch().withEndpoint("l1"),
@@ -19055,7 +18854,6 @@ exports.definitions = [
19055
18854
  },
19056
18855
  configure: async (device, coordinatorEndpoint) => {
19057
18856
  const endpoint = device.getEndpoint(1);
19058
- await tuya.configureMagicPacket(device, coordinatorEndpoint);
19059
18857
  await endpoint.command("genBasic", "tuyaSetup", {}, { disableDefaultResponse: true });
19060
18858
  },
19061
18859
  endpoint: (device) => ({
@@ -19069,9 +18867,7 @@ exports.definitions = [
19069
18867
  model: "HY607W-3A",
19070
18868
  vendor: "Tuya",
19071
18869
  description: "Thermostat for gas boiler",
19072
- fromZigbee: [tuya.fz.datapoints],
19073
- toZigbee: [tuya.tz.datapoints],
19074
- configure: tuya.configureMagicPacket,
18870
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19075
18871
  exposes: [
19076
18872
  e.climate().withLocalTemperature(ea.STATE).withSetpoint("occupied_heating_setpoint", 5, 35, 0.5, ea.STATE_SET),
19077
18873
  e
@@ -19133,8 +18929,7 @@ exports.definitions = [
19133
18929
  model: "ZG-204ZH",
19134
18930
  vendor: "HOBEIAN",
19135
18931
  description: "PIR 24Ghz human presence sensor",
19136
- fromZigbee: [tuya.fz.datapoints],
19137
- toZigbee: [tuya.tz.datapoints],
18932
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19138
18933
  exposes: [
19139
18934
  e.presence(),
19140
18935
  e.illuminance(),
@@ -19254,8 +19049,7 @@ exports.definitions = [
19254
19049
  vendor: "Tongou",
19255
19050
  description: "Zigbee energy meter (transformer clamp)",
19256
19051
  whiteLabel: [tuya.whitelabel("Tongou", "TOSA1-01WXJAT2A", "Smart energy meter, two wire", ["_TZE284_4hdbt6rn"])],
19257
- fromZigbee: [tuya.fz.datapoints],
19258
- toZigbee: [tuya.tz.datapoints],
19052
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19259
19053
  exposes: [
19260
19054
  e.energy(),
19261
19055
  e.voltage(),
@@ -19467,7 +19261,7 @@ exports.definitions = [
19467
19261
  model: "_TZE204_3regm3h6",
19468
19262
  vendor: "Tuya",
19469
19263
  description: "Smart thermostat for electric radiator with pilot wire",
19470
- extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19264
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "1970" })],
19471
19265
  exposes: [
19472
19266
  e.binary("state", ea.STATE_SET, "ON", "OFF").withDescription("Turn the heater on or off").withCategory("config"),
19473
19267
  e.child_lock(),
@@ -19657,7 +19451,7 @@ exports.definitions = [
19657
19451
  model: "ZS-300Z",
19658
19452
  vendor: "Arteco",
19659
19453
  description: "Soil moisture sensor",
19660
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
19454
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19661
19455
  exposes: [
19662
19456
  e.enum("water_warning", ea.STATE, ["none", "alarm"]).withDescription("Water shortage warning"),
19663
19457
  e.enum("battery_state", ea.STATE, ["low", "middle", "high"]).withDescription("low: 16.67%, middle:16.68-83.33%, high: 83.34-100%"),
@@ -19701,8 +19495,7 @@ exports.definitions = [
19701
19495
  model: "ZG-204ZK",
19702
19496
  vendor: "HOBEIAN",
19703
19497
  description: "24Ghz human presence sensor",
19704
- fromZigbee: [tuya.fz.datapoints],
19705
- toZigbee: [tuya.tz.datapoints],
19498
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19706
19499
  exposes: [
19707
19500
  e.presence(),
19708
19501
  e.illuminance(),
@@ -19756,8 +19549,7 @@ exports.definitions = [
19756
19549
  model: "ZG-204ZE",
19757
19550
  vendor: "HOBEIAN",
19758
19551
  description: "10G mw motion detection",
19759
- fromZigbee: [tuya.fz.datapoints],
19760
- toZigbee: [tuya.tz.datapoints],
19552
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19761
19553
  exposes: [
19762
19554
  e.presence(),
19763
19555
  e.battery(),
@@ -19963,7 +19755,7 @@ exports.definitions = [
19963
19755
  fingerprint: tuya.fingerprint("TS0601", ["_TZE204_mvtclclq"]),
19964
19756
  model: "DS-1450WN",
19965
19757
  vendor: "Tuya",
19966
- description: "Smart Zigbee Switch with Power Monitoring",
19758
+ description: "Smart Zigbee Switch with power monitoring",
19967
19759
  extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19968
19760
  exposes: [
19969
19761
  e.switch().withEndpoint("usb_a"),
@@ -20046,7 +19838,7 @@ exports.definitions = [
20046
19838
  model: "TS0601_thermostat_14",
20047
19839
  vendor: "AVATTO",
20048
19840
  description: "Thermostatic radiator valve",
20049
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
19841
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
20050
19842
  exposes: [
20051
19843
  e.child_lock(),
20052
19844
  e.battery(),
@@ -20185,5 +19977,30 @@ exports.definitions = [
20185
19977
  ],
20186
19978
  },
20187
19979
  },
19980
+ {
19981
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE284_4cqhd2ha", "_TZE200_8ply8mjj"]),
19982
+ model: "TZE284_4cqhd2ha",
19983
+ vendor: "Girier",
19984
+ description: "Vibration sensor",
19985
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19986
+ whiteLabel: [tuya.whitelabel("Conecto", "COZIGVS", "Vibration sensor", ["_TZE200_8ply8mjj"])],
19987
+ exposes: [
19988
+ e.vibration(),
19989
+ e
19990
+ .numeric("sensitivity", ea.STATE)
19991
+ .withValueMin(0)
19992
+ .withValueMax(2)
19993
+ .withDescription("Sensitivity of the sensor (single press the button when muted to switch between" +
19994
+ " low (one beep), medium (two beeps) and max (three beeps))"),
19995
+ e.text("buzzer_mute", ea.STATE).withDescription("ON when buzzer is muted (double press the button on device to toggle)"),
19996
+ ],
19997
+ meta: {
19998
+ tuyaDatapoints: [
19999
+ [1, "vibration", tuya.valueConverter.trueFalse1],
20000
+ [101, "sensitivity", tuya.valueConverter.raw],
20001
+ [103, "buzzer_mute", tuya.valueConverter.onOff],
20002
+ ],
20003
+ },
20004
+ },
20188
20005
  ];
20189
20006
  //# sourceMappingURL=tuya.js.map