zigbee-herdsman-converters 25.51.0 → 25.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/CHANGELOG.md +27 -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/bosch.d.ts.map +1 -1
  6. package/dist/devices/bosch.js +1 -3
  7. package/dist/devices/bosch.js.map +1 -1
  8. package/dist/devices/candeo.d.ts.map +1 -1
  9. package/dist/devices/candeo.js +1 -0
  10. package/dist/devices/candeo.js.map +1 -1
  11. package/dist/devices/engo.d.ts.map +1 -1
  12. package/dist/devices/engo.js +2 -3
  13. package/dist/devices/engo.js.map +1 -1
  14. package/dist/devices/essentials.js +1 -1
  15. package/dist/devices/essentials.js.map +1 -1
  16. package/dist/devices/fireangel.d.ts.map +1 -1
  17. package/dist/devices/fireangel.js +45 -0
  18. package/dist/devices/fireangel.js.map +1 -1
  19. package/dist/devices/giex.js +1 -1
  20. package/dist/devices/giex.js.map +1 -1
  21. package/dist/devices/gledopto.d.ts.map +1 -1
  22. package/dist/devices/gledopto.js +2 -3
  23. package/dist/devices/gledopto.js.map +1 -1
  24. package/dist/devices/ikea.js +1 -1
  25. package/dist/devices/ikea.js.map +1 -1
  26. package/dist/devices/immax.d.ts.map +1 -1
  27. package/dist/devices/immax.js +1 -2
  28. package/dist/devices/immax.js.map +1 -1
  29. package/dist/devices/lidl.d.ts.map +1 -1
  30. package/dist/devices/lidl.js +2 -3
  31. package/dist/devices/lidl.js.map +1 -1
  32. package/dist/devices/lincukoo.js +7 -7
  33. package/dist/devices/lincukoo.js.map +1 -1
  34. package/dist/devices/linptech.js +3 -3
  35. package/dist/devices/linptech.js.map +1 -1
  36. package/dist/devices/lonsonho.d.ts.map +1 -1
  37. package/dist/devices/lonsonho.js +1 -2
  38. package/dist/devices/lonsonho.js.map +1 -1
  39. package/dist/devices/moes.d.ts.map +1 -1
  40. package/dist/devices/moes.js +14 -17
  41. package/dist/devices/moes.js.map +1 -1
  42. package/dist/devices/multir.js +2 -2
  43. package/dist/devices/multir.js.map +1 -1
  44. package/dist/devices/nedis.js +1 -1
  45. package/dist/devices/nedis.js.map +1 -1
  46. package/dist/devices/neo.d.ts.map +1 -1
  47. package/dist/devices/neo.js +4 -10
  48. package/dist/devices/neo.js.map +1 -1
  49. package/dist/devices/nous.d.ts.map +1 -1
  50. package/dist/devices/nous.js +4 -8
  51. package/dist/devices/nous.js.map +1 -1
  52. package/dist/devices/onenuo.d.ts.map +1 -1
  53. package/dist/devices/onenuo.js +1 -3
  54. package/dist/devices/onenuo.js.map +1 -1
  55. package/dist/devices/orztech.js +5 -5
  56. package/dist/devices/orztech.js.map +1 -1
  57. package/dist/devices/qa.d.ts.map +1 -1
  58. package/dist/devices/qa.js +0 -2
  59. package/dist/devices/qa.js.map +1 -1
  60. package/dist/devices/saswell.js +1 -1
  61. package/dist/devices/saswell.js.map +1 -1
  62. package/dist/devices/senoro.js +1 -1
  63. package/dist/devices/senoro.js.map +1 -1
  64. package/dist/devices/slacky_diy.d.ts.map +1 -1
  65. package/dist/devices/slacky_diy.js +303 -48
  66. package/dist/devices/slacky_diy.js.map +1 -1
  67. package/dist/devices/soanalarm.d.ts.map +1 -1
  68. package/dist/devices/soanalarm.js +1 -3
  69. package/dist/devices/soanalarm.js.map +1 -1
  70. package/dist/devices/tech.js +2 -2
  71. package/dist/devices/tech.js.map +1 -1
  72. package/dist/devices/tuya.d.ts.map +1 -1
  73. package/dist/devices/tuya.js +210 -392
  74. package/dist/devices/tuya.js.map +1 -1
  75. package/dist/devices/weten.d.ts.map +1 -1
  76. package/dist/devices/weten.js +1 -2
  77. package/dist/devices/weten.js.map +1 -1
  78. package/dist/devices/woox.js +1 -1
  79. package/dist/devices/woox.js.map +1 -1
  80. package/dist/devices/zemismart.d.ts.map +1 -1
  81. package/dist/devices/zemismart.js +9 -8
  82. package/dist/devices/zemismart.js.map +1 -1
  83. package/dist/lib/bosch.d.ts +1 -1
  84. package/dist/lib/bosch.d.ts.map +1 -1
  85. package/dist/lib/bosch.js +20 -27
  86. package/dist/lib/bosch.js.map +1 -1
  87. package/dist/lib/tuya.d.ts +1 -1
  88. package/dist/lib/tuya.d.ts.map +1 -1
  89. package/dist/lib/tuya.js +1 -1
  90. package/dist/lib/tuya.js.map +1 -1
  91. package/dist/models-index.json +1 -1
  92. package/package.json +2 -2
@@ -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
  },
@@ -2494,7 +2497,7 @@ exports.definitions = [
2494
2497
  description: "Repeater",
2495
2498
  fromZigbee: [fz.linkquality_from_basic],
2496
2499
  toZigbee: [],
2497
- whiteLabel: [tuya.whitelabel("Tuya", "TS0001_repeater", "Zigbee signal repeater", ["_TZ3000_n0lphcok"])],
2500
+ whiteLabel: [tuya.whitelabel("Tuya", "TS0001_repeater", "Zigbee signal repeater", ["_TZ3000_n0lphcok", "_TZ3000_wn65ixz9"])],
2498
2501
  exposes: [],
2499
2502
  },
2500
2503
  {
@@ -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: [
@@ -2804,9 +2801,7 @@ exports.definitions = [
2804
2801
  model: "TS0601_dimmer_1_gang_1",
2805
2802
  vendor: "Tuya",
2806
2803
  description: "1 gang smart dimmer",
2807
- fromZigbee: [tuya.fz.datapoints],
2808
- toZigbee: [tuya.tz.datapoints],
2809
- configure: tuya.configureMagicPacket,
2804
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
2810
2805
  exposes: (device, options) => {
2811
2806
  const exps = [
2812
2807
  tuya.exposes.lightBrightnessWithMinMax(),
@@ -2856,9 +2851,7 @@ exports.definitions = [
2856
2851
  model: "TS0601_dimmer_1_gang_2",
2857
2852
  vendor: "Tuya",
2858
2853
  description: "1 gang smart dimmer",
2859
- fromZigbee: [tuya.fz.datapoints],
2860
- toZigbee: [tuya.tz.datapoints],
2861
- configure: tuya.configureMagicPacket,
2854
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
2862
2855
  exposes: [
2863
2856
  tuya.exposes.lightBrightness(),
2864
2857
  tuya.exposes.countdown(),
@@ -2883,9 +2876,7 @@ exports.definitions = [
2883
2876
  model: "TS0601_dimmer_1_gang_3",
2884
2877
  vendor: "Tuya",
2885
2878
  description: "1 gang smart dimmer",
2886
- fromZigbee: [tuya.fz.datapoints],
2887
- toZigbee: [tuya.tz.datapoints],
2888
- configure: tuya.configureMagicPacket,
2879
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
2889
2880
  exposes: [tuya.exposes.lightBrightness(), e.voltage(), e.current(), e.power(), e.child_lock(), tuya.exposes.backlightModeOffOn()],
2890
2881
  meta: {
2891
2882
  tuyaDatapoints: [
@@ -2979,9 +2970,7 @@ exports.definitions = [
2979
2970
  model: "TS0601_dimmer_3",
2980
2971
  vendor: "Tuya",
2981
2972
  description: "3 gang smart dimmer",
2982
- fromZigbee: [tuya.fz.datapoints],
2983
- toZigbee: [tuya.tz.datapoints],
2984
- configure: tuya.configureMagicPacket,
2973
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
2985
2974
  exposes: [
2986
2975
  tuya.exposes.lightBrightnessWithMinMax().withEndpoint("l1"),
2987
2976
  tuya.exposes.lightBrightnessWithMinMax().withEndpoint("l2"),
@@ -3034,9 +3023,7 @@ exports.definitions = [
3034
3023
  model: "TS0601_dimmer_4",
3035
3024
  vendor: "Tuya",
3036
3025
  description: "2 gang smart dimmer module",
3037
- fromZigbee: [tuya.fz.datapoints],
3038
- toZigbee: [tuya.tz.datapoints],
3039
- configure: tuya.configureMagicPacket,
3026
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3040
3027
  exposes: [
3041
3028
  tuya.exposes.lightBrightnessWithMinMax().withEndpoint("l1"),
3042
3029
  tuya.exposes.lightBrightnessWithMinMax().withEndpoint("l2"),
@@ -3101,9 +3088,7 @@ exports.definitions = [
3101
3088
  model: "TS0601_dimmer_5",
3102
3089
  vendor: "Tuya",
3103
3090
  description: "1 gang smart dimmer module",
3104
- fromZigbee: [tuya.fz.datapoints],
3105
- toZigbee: [tuya.tz.datapoints],
3106
- configure: tuya.configureMagicPacket,
3091
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3107
3092
  exposes: [
3108
3093
  tuya.exposes.lightBrightnessWithMinMax(),
3109
3094
  e.enum("power_on_behavior", ea.STATE_SET, ["off", "on", "previous"]),
@@ -3155,9 +3140,7 @@ exports.definitions = [
3155
3140
  model: "TS0601_dimmer_knob",
3156
3141
  vendor: "Tuya",
3157
3142
  description: "Zigbee smart knob dimmer",
3158
- fromZigbee: [tuya.fz.datapoints],
3159
- toZigbee: [tuya.tz.datapoints],
3160
- configure: tuya.configureMagicPacket,
3143
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3161
3144
  exposes: [
3162
3145
  tuya.exposes.lightBrightness().withMinBrightness().setAccess("min_brightness", ea.STATE_SET),
3163
3146
  tuya.exposes.lightType(),
@@ -3439,9 +3422,7 @@ exports.definitions = [
3439
3422
  tuya.exposes.switch().withEndpoint("l3"),
3440
3423
  tuya.exposes.switch().withEndpoint("l4"),
3441
3424
  ],
3442
- fromZigbee: [tuya.fz.datapoints],
3443
- toZigbee: [tuya.tz.datapoints],
3444
- configure: tuya.configureMagicPacket,
3425
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3445
3426
  whiteLabel: [
3446
3427
  tuya.whitelabel("ZYXH", "TY-04Z", "4 gang switch", ["_TZE204_iik0pquw"]),
3447
3428
  { vendor: "Norklmes", model: "MKS-CM-W5" },
@@ -3470,9 +3451,7 @@ exports.definitions = [
3470
3451
  model: "TS0601_switch_5_gang",
3471
3452
  vendor: "Tuya",
3472
3453
  description: "5 gang switch",
3473
- fromZigbee: [tuya.fz.datapoints],
3474
- toZigbee: [tuya.tz.datapoints],
3475
- configure: tuya.configureMagicPacket,
3454
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3476
3455
  exposes: [
3477
3456
  tuya.exposes.switch().withEndpoint("l1"),
3478
3457
  tuya.exposes.switch().withEndpoint("l2"),
@@ -3510,10 +3489,8 @@ exports.definitions = [
3510
3489
  model: "TS0601_switch_6_gang",
3511
3490
  vendor: "Tuya",
3512
3491
  description: "6 gang switch",
3513
- fromZigbee: [tuya.fz.datapoints],
3514
- toZigbee: [tuya.tz.datapoints],
3492
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3515
3493
  configure: async (device, coordinatorEndpoint) => {
3516
- await tuya.configureMagicPacket(device, coordinatorEndpoint);
3517
3494
  const endpoint = device.getEndpoint(1);
3518
3495
  await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff"]);
3519
3496
  device.powerSource = "Mains (single phase)";
@@ -3603,9 +3580,7 @@ exports.definitions = [
3603
3580
  e.power_on_behavior().withAccess(ea.STATE_SET),
3604
3581
  tuya.exposes.backlightModeOffOn().withAccess(ea.STATE_SET),
3605
3582
  ],
3606
- fromZigbee: [tuya.fz.datapoints],
3607
- toZigbee: [tuya.tz.datapoints],
3608
- configure: tuya.configureMagicPacket,
3583
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3609
3584
  meta: {
3610
3585
  tuyaDatapoints: [
3611
3586
  [1, "state", tuya.valueConverter.onOff],
@@ -3652,9 +3627,7 @@ exports.definitions = [
3652
3627
  vendor: "Tuya",
3653
3628
  description: "2 gang switch",
3654
3629
  exposes: [e.switch().withEndpoint("l1").setAccess("state", ea.STATE_SET), e.switch().withEndpoint("l2").setAccess("state", ea.STATE_SET)],
3655
- fromZigbee: [tuya.fz.datapoints],
3656
- toZigbee: [tuya.tz.datapoints],
3657
- configure: tuya.configureMagicPacket,
3630
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3658
3631
  meta: {
3659
3632
  multiEndpoint: true,
3660
3633
  tuyaDatapoints: [
@@ -3702,9 +3675,7 @@ exports.definitions = [
3702
3675
  model: "MG-ZG03W",
3703
3676
  vendor: "Tuya",
3704
3677
  description: "3 gang switch",
3705
- fromZigbee: [tuya.fz.datapoints],
3706
- toZigbee: [tuya.tz.datapoints],
3707
- configure: tuya.configureMagicPacket,
3678
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
3708
3679
  exposes: [
3709
3680
  e.switch().withEndpoint("l1").setAccess("state", ea.STATE_SET),
3710
3681
  e.switch().withEndpoint("l2").setAccess("state", ea.STATE_SET),
@@ -4295,7 +4266,7 @@ exports.definitions = [
4295
4266
  model: "BAC-003",
4296
4267
  vendor: "Tuya",
4297
4268
  description: "FCU thermostat temperature controller",
4298
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
4269
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
4299
4270
  options: [
4300
4271
  e
4301
4272
  .enum("control_sequence_of_operation", ea.SET, ["cooling_only", "cooling_and_heating_4-pipes"])
@@ -4475,7 +4446,7 @@ exports.definitions = [
4475
4446
  vendor: "Tuya",
4476
4447
  description: "Water leak sensor",
4477
4448
  fromZigbee: [fz.ignore_tuya_raw, legacy.fromZigbee.wls100z_water_leak],
4478
- extend: [tuya.modernExtend.tuyaBase({ timeStart: "2000", bindBasicOnConfigure: true })],
4449
+ extend: [tuya.modernExtend.tuyaBase({ bindBasicOnConfigure: true })],
4479
4450
  exposes: [e.battery(), e.water_leak()],
4480
4451
  },
4481
4452
  {
@@ -4486,6 +4457,7 @@ exports.definitions = [
4486
4457
  "_TZ3000_mkhkxx1p",
4487
4458
  "_TZ3000_tgddllx4",
4488
4459
  "_TZ3000_kqvb5akv",
4460
+ "_TZ3000_q8r0bbvy",
4489
4461
  "_TZ3000_g92baclx",
4490
4462
  "_TZ3000_qlai3277",
4491
4463
  "_TZ3000_qaabwu5c",
@@ -5247,8 +5219,7 @@ exports.definitions = [
5247
5219
  model: "TS0601_cover_6",
5248
5220
  vendor: "Tuya",
5249
5221
  description: "Cover motor",
5250
- fromZigbee: [tuya.fz.datapoints],
5251
- toZigbee: [tuya.tz.datapoints],
5222
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
5252
5223
  exposes: [
5253
5224
  e.text("work_state", ea.STATE),
5254
5225
  e.cover_position().setAccess("position", ea.STATE_SET),
@@ -5343,9 +5314,7 @@ exports.definitions = [
5343
5314
  model: "TS0601_cover_8",
5344
5315
  vendor: "Tuya",
5345
5316
  description: "Cover motor",
5346
- configure: tuya.configureMagicPacket,
5347
- fromZigbee: [tuya.fz.datapoints],
5348
- toZigbee: [tuya.tz.datapoints],
5317
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
5349
5318
  options: [exposes.options.invert_cover()],
5350
5319
  exposes: [
5351
5320
  e.cover_position().setAccess("position", ea.STATE_SET),
@@ -5408,7 +5377,7 @@ exports.definitions = [
5408
5377
  vendor: "Tuya",
5409
5378
  description: "Window opener",
5410
5379
  options: [exposes.options.invert_cover()],
5411
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
5380
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
5412
5381
  exposes: [e.cover_position().setAccess("position", ea.STATE_SET)],
5413
5382
  meta: {
5414
5383
  tuyaDatapoints: [
@@ -5515,9 +5484,7 @@ exports.definitions = [
5515
5484
  model: "ZM79E-DT",
5516
5485
  vendor: "Tervix",
5517
5486
  description: "Pro Line Zigbee curtain motor",
5518
- fromZigbee: [tuya.fz.datapoints],
5519
- toZigbee: [tuya.tz.datapoints],
5520
- configure: tuya.configureMagicPacket,
5487
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
5521
5488
  exposes: [
5522
5489
  e.text("work_state", ea.STATE),
5523
5490
  e.cover_position().setAccess("position", ea.STATE_SET),
@@ -5702,7 +5669,7 @@ exports.definitions = [
5702
5669
  tuyaThermostatSystemMode: legacy.thermostatSystemModes3,
5703
5670
  },
5704
5671
  ota: true,
5705
- extend: [tuya.modernExtend.tuyaBase({ forceTimeUpdates: true })],
5672
+ extend: [tuya.modernExtend.tuyaBase({ forceTimeUpdates: true, timeStart: "1970" })],
5706
5673
  fromZigbee: [legacy.fromZigbee.tuya_thermostat, fz.ignore_tuya_set_time],
5707
5674
  toZigbee: [
5708
5675
  legacy.toZigbee.tuya_thermostat_child_lock,
@@ -5966,7 +5933,7 @@ exports.definitions = [
5966
5933
  model: "TS0601_cover_3",
5967
5934
  vendor: "Tuya",
5968
5935
  description: "Cover motor",
5969
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
5936
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
5970
5937
  options: [exposes.options.invert_cover()],
5971
5938
  exposes: [
5972
5939
  e.battery(),
@@ -6033,8 +6000,7 @@ exports.definitions = [
6033
6000
  model: "TS0601_cover_4",
6034
6001
  vendor: "Tuya",
6035
6002
  description: "Cover",
6036
- fromZigbee: [tuya.fz.datapoints],
6037
- toZigbee: [tuya.tz.datapoints],
6003
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
6038
6004
  exposes: [
6039
6005
  e.cover_position().setAccess("position", ea.STATE_SET),
6040
6006
  e.enum("motor_direction", ea.STATE_SET, ["normal", "reversed"]).withDescription("Set the motor direction"),
@@ -6109,7 +6075,7 @@ exports.definitions = [
6109
6075
  tuya.whitelabel("GIEX", "TV06", "Thermostat radiator valve", ["_TZE200_py4cm3he"]),
6110
6076
  ],
6111
6077
  ota: true,
6112
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
6078
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
6113
6079
  exposes: [
6114
6080
  e.battery_low(),
6115
6081
  e.child_lock(),
@@ -6218,7 +6184,7 @@ exports.definitions = [
6218
6184
  vendor: "Tuya",
6219
6185
  description: "Thermostat radiator valve",
6220
6186
  whiteLabel: [{ vendor: "S366", model: "Cloud Even" }],
6221
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
6187
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
6222
6188
  meta: {
6223
6189
  tuyaDatapoints: [
6224
6190
  [1, "system_mode", tuya.valueConverterBasic.lookup({ heat: true, off: false })],
@@ -6378,7 +6344,7 @@ exports.definitions = [
6378
6344
  model: "TS0601_thermostat_4",
6379
6345
  vendor: "Tuya",
6380
6346
  description: "Thermostatic radiator valve",
6381
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
6347
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
6382
6348
  exposes: [
6383
6349
  e.child_lock(),
6384
6350
  e.battery(),
@@ -6525,7 +6491,7 @@ exports.definitions = [
6525
6491
  tuya.whitelabel("id3", "GTZ06", "Thermostatic radiator valve", ["_TZE200_z1tyspqw"]),
6526
6492
  tuya.whitelabel("AVATTO", "TRV07", "Thermostatic radiator valve", ["_TZE200_bvrlmajk"]),
6527
6493
  ],
6528
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
6494
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
6529
6495
  exposes: [
6530
6496
  e.battery(),
6531
6497
  e.child_lock(),
@@ -6612,7 +6578,7 @@ exports.definitions = [
6612
6578
  tuya.whitelabel("Moes", "TRV801_1", "Thermostatic radiator valve", ["_TZE204_rtrmfadk"]),
6613
6579
  ],
6614
6580
  description: "Thermostatic radiator valve",
6615
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
6581
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
6616
6582
  exposes: [
6617
6583
  e.battery(),
6618
6584
  e.child_lock(),
@@ -6688,7 +6654,7 @@ exports.definitions = [
6688
6654
  vendor: "Tuya",
6689
6655
  description: "Thermostatic radiator valve.",
6690
6656
  whiteLabel: [tuya.whitelabel("Moes", "TRV801", "Thermostatic radiator valve", ["_TZE204_9mjy74mp", "_TZE200_9mjy74mp"])],
6691
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
6657
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
6692
6658
  exposes: [
6693
6659
  e.battery(),
6694
6660
  e.child_lock(),
@@ -6778,7 +6744,7 @@ exports.definitions = [
6778
6744
  vendor: "Tuya",
6779
6745
  description: "Thermostatic radiator valve.",
6780
6746
  whiteLabel: [tuya.whitelabel("Moes", "TRV801Z", "Thermostatic radiator valve", ["_TZE204_qyr2m29i", "_TZE284_ltwbm23f"])],
6781
- extend: [tuyaBase({ dp: true })],
6747
+ extend: [tuyaBase({ dp: true, timeStart: "1970" })],
6782
6748
  exposes: [
6783
6749
  e.battery(),
6784
6750
  e.child_lock(),
@@ -7042,7 +7008,7 @@ exports.definitions = [
7042
7008
  model: "TRV603-WZ",
7043
7009
  vendor: "Tuya",
7044
7010
  description: "Thermostatic radiator valve.",
7045
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
7011
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
7046
7012
  exposes: [
7047
7013
  e.battery(),
7048
7014
  e.child_lock(),
@@ -7233,7 +7199,7 @@ exports.definitions = [
7233
7199
  electricalMeasurements: true,
7234
7200
  electricalMeasurementsFzConverter: fzLocal.TS011F_electrical_measurement,
7235
7201
  powerOutageMemory: true,
7236
- indicatorMode: (manufacturerName) => manufacturerName === "_TZ3000_ww6drja5",
7202
+ indicatorMode: (manufacturerName) => manufacturerName !== "_TZ3000_ww6drja5",
7237
7203
  childLock: true,
7238
7204
  onOffCountdown: true,
7239
7205
  }),
@@ -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"]),
@@ -9678,12 +9624,10 @@ exports.definitions = [
9678
9624
  },
9679
9625
  description: "Garage door opener",
9680
9626
  configure: async (device, coordinatorEndpoint) => {
9681
- await tuya.configureMagicPacket(device, coordinatorEndpoint);
9682
9627
  const endpoint = device.getEndpoint(1);
9683
9628
  await reporting.bind(endpoint, coordinatorEndpoint, ["genBasic"]);
9684
9629
  },
9685
- fromZigbee: [tuya.fz.datapoints],
9686
- toZigbee: [tuya.tz.datapoints],
9630
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
9687
9631
  exposes: [
9688
9632
  e.binary("state", ea.STATE_SET, true, false).withDescription("Trigger the door movement"),
9689
9633
  e
@@ -9759,12 +9703,10 @@ exports.definitions = [
9759
9703
  model: "MIR-HE200-TY",
9760
9704
  vendor: "Tuya",
9761
9705
  description: "Human presence sensor with fall function",
9762
- fromZigbee: [tuya.fz.datapoints],
9763
- toZigbee: [tuya.tz.datapoints],
9706
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
9764
9707
  configure: async (device, coordinatorEndpoint) => {
9765
9708
  const endpoint = device.getEndpoint(1);
9766
9709
  await tuya.sendDataPointEnum(endpoint, legacy.dataPoints.trsfTumbleSwitch, 0);
9767
- await tuya.configureMagicPacket(device, coordinatorEndpoint);
9768
9710
  },
9769
9711
  exposes: [
9770
9712
  e.illuminance(),
@@ -10290,7 +10232,7 @@ exports.definitions = [
10290
10232
  model: "Y1_IN",
10291
10233
  vendor: "Tuya",
10292
10234
  description: "Smart human presence sensor 24G",
10293
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
10235
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10294
10236
  exposes: [
10295
10237
  e.presence(),
10296
10238
  e.illuminance(),
@@ -10322,8 +10264,7 @@ exports.definitions = [
10322
10264
  model: "ZY-M100-S_1",
10323
10265
  vendor: "Tuya",
10324
10266
  description: "Mini human breathe sensor",
10325
- fromZigbee: [tuya.fz.datapoints],
10326
- toZigbee: [tuya.tz.datapoints],
10267
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10327
10268
  whiteLabel: [tuya.whitelabel("Wenzhi", "WZ-M100-W", "Human presence sensor", ["_TZE204_e5m9c5hl"])],
10328
10269
  exposes: [
10329
10270
  e.illuminance(),
@@ -10371,8 +10312,7 @@ exports.definitions = [
10371
10312
  model: "ZY-M100-S_2",
10372
10313
  vendor: "Tuya",
10373
10314
  description: "Mini human breathe sensor",
10374
- fromZigbee: [tuya.fz.datapoints],
10375
- toZigbee: [tuya.tz.datapoints],
10315
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10376
10316
  exposes: [
10377
10317
  e.illuminance(),
10378
10318
  e.presence(),
@@ -10432,7 +10372,7 @@ exports.definitions = [
10432
10372
  model: "WZ-M100",
10433
10373
  vendor: "Wenzhi",
10434
10374
  description: "Human presence sensor",
10435
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
10375
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10436
10376
  exposes: [
10437
10377
  e.illuminance(),
10438
10378
  e.presence(),
@@ -10504,8 +10444,7 @@ exports.definitions = [
10504
10444
  model: "ZG-205ZL",
10505
10445
  vendor: "Tuya",
10506
10446
  description: "24Ghz/5.8GHz human presence sensor",
10507
- fromZigbee: [tuya.fz.datapoints],
10508
- toZigbee: [tuya.tz.datapoints],
10447
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10509
10448
  exposes: [
10510
10449
  e.presence(),
10511
10450
  e.enum("motion_state", ea.STATE, ["none", "large", "small", "static"]).withDescription("Motion state"),
@@ -10619,7 +10558,7 @@ exports.definitions = [
10619
10558
  description: "Temperature & humidity sensor with clock",
10620
10559
  fromZigbee: [legacy.fromZigbee.nous_lcd_temperature_humidity_sensor, fz.ignore_tuya_set_time],
10621
10560
  toZigbee: [legacy.toZigbee.nous_lcd_temperature_humidity_sensor],
10622
- extend: [tuya.modernExtend.tuyaBase({ forceTimeUpdates: true, bindBasicOnConfigure: true })],
10561
+ extend: [tuya.modernExtend.tuyaBase({ forceTimeUpdates: true, bindBasicOnConfigure: true, timeStart: "1970" })],
10623
10562
  exposes: [
10624
10563
  e.temperature(),
10625
10564
  e.humidity(),
@@ -10647,7 +10586,7 @@ exports.definitions = [
10647
10586
  description: "Tubular motor",
10648
10587
  fromZigbee: [legacy.fromZigbee.zb_sm_cover],
10649
10588
  toZigbee: [legacy.toZigbee.zb_sm_cover],
10650
- extend: [tuya.modernExtend.tuyaBase({ timeStart: "2000" })],
10589
+ extend: [tuya.modernExtend.tuyaBase()],
10651
10590
  exposes: [
10652
10591
  e.cover_position().setAccess("position", ea.STATE_SET),
10653
10592
  e.enum("goto_positon", ea.SET, ["25", "50", "75", "FAVORITE"]),
@@ -10745,9 +10684,7 @@ exports.definitions = [
10745
10684
  model: "ZG-227ZL",
10746
10685
  vendor: "Tuya",
10747
10686
  description: "Temperature & humidity LCD sensor",
10748
- fromZigbee: [tuya.fz.datapoints],
10749
- toZigbee: [tuya.tz.datapoints],
10750
- configure: tuya.configureMagicPacket,
10687
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10751
10688
  exposes: [
10752
10689
  e.temperature(),
10753
10690
  e.humidity(),
@@ -10776,10 +10713,7 @@ exports.definitions = [
10776
10713
  model: "S8",
10777
10714
  vendor: "SODA",
10778
10715
  description: "S8 premium window handle",
10779
- extend: [],
10780
- toZigbee: [tuya.tz.datapoints],
10781
- fromZigbee: [tuya.fz.datapoints],
10782
- configure: tuya.configureMagicPacket,
10716
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10783
10717
  exposes: [
10784
10718
  e.battery(),
10785
10719
  e.battery_low(),
@@ -10933,7 +10867,6 @@ exports.definitions = [
10933
10867
  dp: true,
10934
10868
  queryOnDeviceAnnounce: true,
10935
10869
  queryOnConfigure: true,
10936
- timeStart: "off",
10937
10870
  respondToMcuVersionResponse: true,
10938
10871
  }),
10939
10872
  ],
@@ -10961,9 +10894,7 @@ exports.definitions = [
10961
10894
  model: "ZG-102Z",
10962
10895
  vendor: "Tuya",
10963
10896
  description: "Door sensor",
10964
- fromZigbee: [tuya.fz.datapoints],
10965
- toZigbee: [tuya.tz.datapoints],
10966
- configure: tuya.configureMagicPacket,
10897
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10967
10898
  exposes: [e.contact(), e.battery()],
10968
10899
  meta: {
10969
10900
  tuyaDatapoints: [
@@ -10978,9 +10909,7 @@ exports.definitions = [
10978
10909
  model: "ZG-102ZL",
10979
10910
  vendor: "Tuya",
10980
10911
  description: "Luminance door sensor",
10981
- fromZigbee: [tuya.fz.datapoints],
10982
- toZigbee: [tuya.tz.datapoints],
10983
- configure: tuya.configureMagicPacket,
10912
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
10984
10913
  exposes: [
10985
10914
  e.contact(),
10986
10915
  e.illuminance().withUnit("lx"),
@@ -11010,7 +10939,7 @@ exports.definitions = [
11010
10939
  model: "TS0601_pir",
11011
10940
  vendor: "Tuya",
11012
10941
  description: "Haozee PIR sensor",
11013
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "off", respondToMcuVersionResponse: true })],
10942
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, respondToMcuVersionResponse: true })],
11014
10943
  exposes: (device, options) => {
11015
10944
  const exposes = [e.occupancy(), e.illuminance()];
11016
10945
  // https://github.com/Koenkk/zigbee2mqtt.io/pull/4018
@@ -11037,9 +10966,7 @@ exports.definitions = [
11037
10966
  model: "ZG-225Z",
11038
10967
  vendor: "Tuya",
11039
10968
  description: "Gas sensor",
11040
- fromZigbee: [tuya.fz.datapoints],
11041
- toZigbee: [tuya.tz.datapoints],
11042
- configure: tuya.configureMagicPacket,
10969
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11043
10970
  exposes: [
11044
10971
  e.gas(),
11045
10972
  tuya.exposes.gasValue().withUnit("ppm"),
@@ -11086,8 +11013,7 @@ exports.definitions = [
11086
11013
  model: "ZG-204ZL",
11087
11014
  vendor: "Tuya",
11088
11015
  description: "Luminance motion sensor",
11089
- fromZigbee: [tuya.fz.datapoints],
11090
- toZigbee: [tuya.tz.datapoints],
11016
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11091
11017
  exposes: [
11092
11018
  e.occupancy(),
11093
11019
  e.illuminance().withUnit("lx"),
@@ -11144,8 +11070,7 @@ exports.definitions = [
11144
11070
  model: "ZG-205Z/A",
11145
11071
  vendor: "Tuya",
11146
11072
  description: "5.8Ghz/24Ghz Human presence sensor",
11147
- fromZigbee: [tuya.fz.datapoints],
11148
- toZigbee: [tuya.tz.datapoints],
11073
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11149
11074
  exposes: [
11150
11075
  e.presence(),
11151
11076
  e.enum("motion_state", ea.STATE, ["none", "small", "medium", "large", "far", "near"]).withDescription("State of the motion"),
@@ -11260,8 +11185,7 @@ exports.definitions = [
11260
11185
  model: "ZG-204ZM",
11261
11186
  vendor: "Tuya",
11262
11187
  description: "PIR 24Ghz human presence sensor",
11263
- fromZigbee: [tuya.fz.datapoints],
11264
- toZigbee: [tuya.tz.datapoints],
11188
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11265
11189
  exposes: [
11266
11190
  e.presence(),
11267
11191
  e.enum("motion_state", ea.STATE, ["none", "large", "small", "static"]).withDescription("Motion state"),
@@ -11458,9 +11382,7 @@ exports.definitions = [
11458
11382
  model: "TS0601_3_phase_clamp_meter",
11459
11383
  vendor: "Tuya",
11460
11384
  description: "3-phase clamp power meter",
11461
- fromZigbee: [tuya.fz.datapoints],
11462
- toZigbee: [tuya.tz.datapoints],
11463
- configure: tuya.configureMagicPacket,
11385
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11464
11386
  whiteLabel: [
11465
11387
  { vendor: "MatSee Plus", model: "PC321-Z-TY" },
11466
11388
  { vendor: "OWON", model: "PC321-Z-TY" },
@@ -11513,9 +11435,7 @@ exports.definitions = [
11513
11435
  model: "TS0601_3_phase_clamp_meter_relay",
11514
11436
  vendor: "Tuya",
11515
11437
  description: "3-phase clamp power meter with relay",
11516
- fromZigbee: [tuya.fz.datapoints],
11517
- toZigbee: [tuya.tz.datapoints],
11518
- configure: tuya.configureMagicPacket,
11438
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11519
11439
  whiteLabel: [{ vendor: "Wenzhou Taiye Electric", model: "TAC7361C BI" }],
11520
11440
  exposes: [
11521
11441
  e.switch().setAccess("state", ea.STATE_SET),
@@ -11601,7 +11521,7 @@ exports.definitions = [
11601
11521
  vendor: "Tuya",
11602
11522
  description: "Dual water valve",
11603
11523
  fromZigbee: [fz.battery],
11604
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
11524
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11605
11525
  exposes: [
11606
11526
  e.enum("valve_status", ea.STATE, ["manual", "auto", "idle"]).withDescription("Valve 1 status (manual, auto, idle)").withEndpoint("l1"),
11607
11527
  e.enum("valve_status", ea.STATE, ["manual", "auto", "idle"]).withDescription("Valve 2 status (manual, auto, idle)").withEndpoint("l2"),
@@ -11651,9 +11571,7 @@ exports.definitions = [
11651
11571
  model: "TS0601_fan_switch",
11652
11572
  vendor: "Tuya",
11653
11573
  description: "Fan switch",
11654
- fromZigbee: [tuya.fz.datapoints],
11655
- toZigbee: [tuya.tz.datapoints],
11656
- configure: tuya.configureMagicPacket,
11574
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11657
11575
  exposes: [
11658
11576
  tuya.exposes.switch(),
11659
11577
  e.power_on_behavior(["off", "on"]).withAccess(ea.STATE_SET),
@@ -11692,9 +11610,7 @@ exports.definitions = [
11692
11610
  model: "TS0601_fan_and_light_switch",
11693
11611
  vendor: "Tuya",
11694
11612
  description: "Fan & light switch",
11695
- fromZigbee: [tuya.fz.datapoints],
11696
- toZigbee: [tuya.tz.datapoints],
11697
- configure: tuya.configureMagicPacket,
11613
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11698
11614
  exposes: [
11699
11615
  e.binary("status_indication", ea.STATE_SET, "ON", "OFF").withDescription("Light switch"),
11700
11616
  tuya.exposes.switch(),
@@ -11731,9 +11647,7 @@ exports.definitions = [
11731
11647
  model: "TS0601_fan_5_levels_and_light_switch",
11732
11648
  vendor: "Tuya",
11733
11649
  description: "Fan with 5 levels & light switch",
11734
- fromZigbee: [tuya.fz.datapoints],
11735
- toZigbee: [tuya.tz.datapoints],
11736
- configure: tuya.configureMagicPacket,
11650
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
11737
11651
  exposes: [
11738
11652
  e.binary("status_indication", ea.STATE_SET, "ON", "OFF").withDescription("Light switch"),
11739
11653
  tuya.exposes.switch(),
@@ -12012,9 +11926,7 @@ exports.definitions = [
12012
11926
  model: "TS0601_switch_4_gang_2",
12013
11927
  vendor: "Tuya",
12014
11928
  description: "4 gang switch with backlight",
12015
- fromZigbee: [tuya.fz.datapoints],
12016
- toZigbee: [tuya.tz.datapoints],
12017
- configure: tuya.configureMagicPacket,
11929
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12018
11930
  exposes: [
12019
11931
  tuya.exposes.switch().withEndpoint("l1"),
12020
11932
  tuya.exposes.switch().withEndpoint("l2"),
@@ -12043,8 +11955,7 @@ exports.definitions = [
12043
11955
  vendor: "Tuya",
12044
11956
  description: "Curtain/blind switch",
12045
11957
  options: [exposes.options.invert_cover()],
12046
- fromZigbee: [tuya.fz.datapoints],
12047
- toZigbee: [tuya.tz.datapoints],
11958
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12048
11959
  exposes: [
12049
11960
  e.cover_position().setAccess("position", ea.STATE_SET),
12050
11961
  e.enum("calibration", ea.STATE_SET, ["START", "END"]).withDescription("Calibration"),
@@ -12119,8 +12030,7 @@ exports.definitions = [
12119
12030
  vendor: "Tuya",
12120
12031
  description: "Curtain/blind switch with 1 Gang switch",
12121
12032
  options: [exposes.options.invert_cover()],
12122
- fromZigbee: [tuya.fz.datapoints],
12123
- toZigbee: [tuya.tz.datapoints],
12033
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12124
12034
  exposes: [
12125
12035
  e.cover_position().setAccess("position", ea.STATE_SET),
12126
12036
  tuya.exposes.switch().withEndpoint("l1"),
@@ -12174,8 +12084,7 @@ exports.definitions = [
12174
12084
  vendor: "Tuya",
12175
12085
  description: "Curtain/blind switch with 2 Gang switch",
12176
12086
  options: [exposes.options.invert_cover()],
12177
- fromZigbee: [tuya.fz.datapoints],
12178
- toZigbee: [tuya.tz.datapoints],
12087
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12179
12088
  exposes: [
12180
12089
  e.cover_position().setAccess("position", ea.STATE_SET),
12181
12090
  tuya.exposes.switch().withEndpoint("l1"),
@@ -12231,9 +12140,7 @@ exports.definitions = [
12231
12140
  vendor: "Tuya",
12232
12141
  description: "Smart energy monitor for 1P+N system",
12233
12142
  ota: true,
12234
- fromZigbee: [tuya.fz.datapoints],
12235
- toZigbee: [tuya.tz.datapoints],
12236
- configure: tuya.configureMagicPacket,
12143
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12237
12144
  exposes: [
12238
12145
  e.voltage(),
12239
12146
  e.power(),
@@ -12273,9 +12180,7 @@ exports.definitions = [
12273
12180
  model: "SPM02",
12274
12181
  vendor: "Tuya",
12275
12182
  description: "Smart energy monitor for 3P+N system",
12276
- fromZigbee: [tuya.fz.datapoints],
12277
- toZigbee: [tuya.tz.datapoints],
12278
- configure: tuya.configureMagicPacket,
12183
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12279
12184
  exposes: [
12280
12185
  tuya.exposes.voltageWithPhase("X"),
12281
12186
  tuya.exposes.voltageWithPhase("Y"),
@@ -12308,9 +12213,7 @@ exports.definitions = [
12308
12213
  model: "SPM01V2",
12309
12214
  vendor: "Tuya",
12310
12215
  description: "Smart energy monitor for 1P+N system",
12311
- fromZigbee: [tuya.fz.datapoints],
12312
- toZigbee: [tuya.tz.datapoints],
12313
- configure: tuya.configureMagicPacket,
12216
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12314
12217
  exposes: [
12315
12218
  e.voltage(),
12316
12219
  e.power(),
@@ -12384,9 +12287,7 @@ exports.definitions = [
12384
12287
  model: "SPM02V2",
12385
12288
  vendor: "Tuya",
12386
12289
  description: "Smart energy monitor for 3P+N system",
12387
- fromZigbee: [tuya.fz.datapoints],
12388
- toZigbee: [tuya.tz.datapoints],
12389
- configure: tuya.configureMagicPacket,
12290
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12390
12291
  exposes: [
12391
12292
  tuya.exposes.voltageWithPhase("a"),
12392
12293
  tuya.exposes.voltageWithPhase("b"),
@@ -12524,9 +12425,7 @@ exports.definitions = [
12524
12425
  model: "SPM01V2.5",
12525
12426
  vendor: "Tuya",
12526
12427
  description: "Smart energy monitor for 1P+N system",
12527
- fromZigbee: [tuya.fz.datapoints],
12528
- toZigbee: [tuya.tz.datapoints],
12529
- configure: tuya.configureMagicPacket,
12428
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12530
12429
  exposes: [
12531
12430
  e.voltage(),
12532
12431
  e.power(),
@@ -12598,9 +12497,7 @@ exports.definitions = [
12598
12497
  model: "SPM02V2.5",
12599
12498
  vendor: "Tuya",
12600
12499
  description: "Smart energy monitor for 3P+N system",
12601
- fromZigbee: [tuya.fz.datapoints],
12602
- toZigbee: [tuya.tz.datapoints],
12603
- configure: tuya.configureMagicPacket,
12500
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12604
12501
  exposes: [
12605
12502
  tuya.exposes.voltageWithPhase("a"),
12606
12503
  tuya.exposes.voltageWithPhase("b"),
@@ -12690,9 +12587,7 @@ exports.definitions = [
12690
12587
  model: "SPM02V3",
12691
12588
  vendor: "Tuya",
12692
12589
  description: "Smart energy monitor for 3P+N system",
12693
- fromZigbee: [tuya.fz.datapoints],
12694
- toZigbee: [tuya.tz.datapoints],
12695
- configure: tuya.configureMagicPacket,
12590
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12696
12591
  exposes: [
12697
12592
  tuya.exposes.voltageWithPhase("a"),
12698
12593
  tuya.exposes.voltageWithPhase("b"),
@@ -12759,9 +12654,7 @@ exports.definitions = [
12759
12654
  model: "SDM01",
12760
12655
  vendor: "Tuya",
12761
12656
  description: "Smart energy monitor for 3P+N system",
12762
- fromZigbee: [tuya.fz.datapoints],
12763
- toZigbee: [tuya.tz.datapoints],
12764
- configure: tuya.configureMagicPacket,
12657
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12765
12658
  whiteLabel: [tuya.whitelabel("Nous", "D4Z", "Smart energy monitor for 3P+N system", ["_TZE204_loejka0i"])],
12766
12659
  exposes: [
12767
12660
  tuya.exposes.voltageWithPhase("a"),
@@ -12821,9 +12714,7 @@ exports.definitions = [
12821
12714
  model: "SDM01V1.5",
12822
12715
  vendor: "Tuya",
12823
12716
  description: "Smart energy monitor for 3P+N system",
12824
- fromZigbee: [tuya.fz.datapoints],
12825
- toZigbee: [tuya.tz.datapoints],
12826
- configure: tuya.configureMagicPacket,
12717
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12827
12718
  exposes: [
12828
12719
  tuya.exposes.voltageWithPhase("a"),
12829
12720
  tuya.exposes.voltageWithPhase("b"),
@@ -12890,9 +12781,7 @@ exports.definitions = [
12890
12781
  model: "SDM02V1",
12891
12782
  vendor: "Tuya",
12892
12783
  description: "Smart energy monitor for 2P+N system",
12893
- fromZigbee: [tuya.fz.datapoints],
12894
- toZigbee: [tuya.tz.datapoints],
12895
- configure: tuya.configureMagicPacket,
12784
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12896
12785
  exposes: [
12897
12786
  tuya.exposes.voltageWithPhase("l1"),
12898
12787
  tuya.exposes.voltageWithPhase("l2"),
@@ -12947,7 +12836,7 @@ exports.definitions = [
12947
12836
  model: "TS0601_bidirectional_energy meter",
12948
12837
  vendor: "Tuya",
12949
12838
  description: "Bidirectional energy meter with 150A Current Clamp",
12950
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
12839
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12951
12840
  exposes: [
12952
12841
  e.energy(),
12953
12842
  e.produced_energy(),
@@ -12978,9 +12867,7 @@ exports.definitions = [
12978
12867
  model: "TS0601_switch_8",
12979
12868
  vendor: "Tuya",
12980
12869
  description: "ZYXH 8 gang switch",
12981
- fromZigbee: [tuya.fz.datapoints],
12982
- toZigbee: [tuya.tz.datapoints],
12983
- configure: tuya.configureMagicPacket,
12870
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
12984
12871
  exposes: [
12985
12872
  tuya.exposes.switch().withEndpoint("l1"),
12986
12873
  tuya.exposes.switch().withEndpoint("l2"),
@@ -13014,9 +12901,7 @@ exports.definitions = [
13014
12901
  model: "TS0601_switch_8_2",
13015
12902
  vendor: "Tuya",
13016
12903
  description: "8 gang switch",
13017
- fromZigbee: [tuya.fz.datapoints],
13018
- toZigbee: [tuya.tz.datapoints],
13019
- configure: tuya.configureMagicPacket,
12904
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13020
12905
  exposes: [
13021
12906
  tuya.exposes.switch().withEndpoint("l1"),
13022
12907
  tuya.exposes.switch().withEndpoint("l2"),
@@ -13067,9 +12952,7 @@ exports.definitions = [
13067
12952
  model: "TS0601_switch_10",
13068
12953
  vendor: "Tuya",
13069
12954
  description: "10 gang switch",
13070
- fromZigbee: [tuya.fz.datapoints],
13071
- toZigbee: [tuya.tz.datapoints],
13072
- configure: tuya.configureMagicPacket,
12955
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13073
12956
  exposes: [...Array.from({ length: 10 }, (_, i) => tuya.exposes.switch().withEndpoint(`l${i + 1}`))],
13074
12957
  endpoint: (device) => {
13075
12958
  return {
@@ -13108,9 +12991,7 @@ exports.definitions = [
13108
12991
  model: "TS0601_switch_12",
13109
12992
  vendor: "Tuya",
13110
12993
  description: "ZXYH 12 gang switch",
13111
- fromZigbee: [tuya.fz.datapoints],
13112
- toZigbee: [tuya.tz.datapoints],
13113
- configure: tuya.configureMagicPacket,
12994
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13114
12995
  exposes: [...Array.from({ length: 12 }, (_, i) => tuya.exposes.switch().withEndpoint(`l${i + 1}`))],
13115
12996
  endpoint: (device) => {
13116
12997
  return {
@@ -13248,8 +13129,9 @@ exports.definitions = [
13248
13129
  vendor: "Tuya",
13249
13130
  description: "Zigbee fingerbot plus",
13250
13131
  whiteLabel: [tuya.whitelabel("Adaprox", "TS0001_fingerbot_1", "Zigbee fingerbot plus", ["_TZ3210_dse8ogfy"])],
13251
- fromZigbee: [fz.on_off, tuya.fz.datapoints],
13252
- toZigbee: [tz.on_off, tuya.tz.datapoints],
13132
+ fromZigbee: [fz.on_off],
13133
+ toZigbee: [tz.on_off],
13134
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13253
13135
  exposes: [
13254
13136
  e.switch(),
13255
13137
  e.battery(),
@@ -13261,7 +13143,6 @@ exports.definitions = [
13261
13143
  e.binary("touch", ea.STATE_SET, "ON", "OFF").withDescription("Touch control"),
13262
13144
  ],
13263
13145
  configure: async (device, coordinatorEndpoint) => {
13264
- await tuya.configureMagicPacket(device, coordinatorEndpoint);
13265
13146
  await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ["genOnOff"]);
13266
13147
  },
13267
13148
  meta: {
@@ -13300,9 +13181,7 @@ exports.definitions = [
13300
13181
  model: "SWS6TZ-WHITE",
13301
13182
  vendor: "Tuya",
13302
13183
  description: "6 gang wall switch",
13303
- fromZigbee: [tuya.fz.datapoints],
13304
- toZigbee: [tuya.tz.datapoints],
13305
- configure: tuya.configureMagicPacket,
13184
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13306
13185
  exposes: [
13307
13186
  e.switch().withEndpoint("l1"),
13308
13187
  e.switch().withEndpoint("l2"),
@@ -13337,7 +13216,7 @@ exports.definitions = [
13337
13216
  model: "ZS-TYG3-SM-61Z",
13338
13217
  vendor: "Tuya",
13339
13218
  description: "Smart switch (4 gang + 2 scene) with backlight and neutral wire",
13340
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "off" })],
13219
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13341
13220
  exposes: [
13342
13221
  tuya.exposes.switch().withDescription("All Switches"),
13343
13222
  tuya.exposes.switch().withEndpoint("l1"),
@@ -13393,7 +13272,7 @@ exports.definitions = [
13393
13272
  model: "ZS-TYG3-SM-21Z",
13394
13273
  vendor: "Tuya",
13395
13274
  description: "2 gang smart switch with backlight and neutral wire",
13396
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
13275
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13397
13276
  exposes: [
13398
13277
  tuya.exposes.switch().withDescription("All Switches"),
13399
13278
  tuya.exposes.switch().withEndpoint("l1"),
@@ -13435,7 +13314,7 @@ exports.definitions = [
13435
13314
  tuya.exposes.countdown().withEndpoint("l3"),
13436
13315
  e.power_on_behavior(["off", "on", "previous"]).withAccess(ea.STATE_SET),
13437
13316
  ],
13438
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
13317
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13439
13318
  endpoint: (device) => {
13440
13319
  return { l1: 1, l2: 1, l3: 1, state: 1, backlight: 1 };
13441
13320
  },
@@ -13459,7 +13338,7 @@ exports.definitions = [
13459
13338
  model: "ZS-TYG3-SM-41Z",
13460
13339
  vendor: "Tuya",
13461
13340
  description: "4 gang smart switch with backlight and neutral wire",
13462
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
13341
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13463
13342
  exposes: [
13464
13343
  tuya.exposes.switch().withDescription("All Switches"),
13465
13344
  tuya.exposes.switch().withEndpoint("l1"),
@@ -13499,9 +13378,9 @@ exports.definitions = [
13499
13378
  model: "M9-zigbee-SL",
13500
13379
  vendor: "Tuya",
13501
13380
  description: "Smart Switch (4 gang + 4 scene) with neutral wire and motion sensing",
13502
- fromZigbee: [tuya.fz.datapoints, fz.ias_occupancy_only_alarm_2, tuya.fz.indicator_mode],
13503
- toZigbee: [tuya.tz.datapoints, tuya.tz.power_on_behavior_1, tuya.tz.backlight_indicator_mode_1],
13504
- 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 })],
13505
13384
  exposes: [
13506
13385
  ...[1, 2, 3, 4, 5, 6, 7, 8].map((i) => tuya.exposes.switch().withEndpoint(`l${i}`)),
13507
13386
  ...[1, 2, 3, 4, 5, 6, 7, 8].map((i) => e.power_on_behavior().withAccess(ea.STATE_SET).withEndpoint(`l${i}`)),
@@ -13580,8 +13459,7 @@ exports.definitions = [
13580
13459
  model: "YXZBRB58",
13581
13460
  vendor: "Tuya",
13582
13461
  description: "Smart human presence sensor",
13583
- fromZigbee: [tuya.fz.datapoints],
13584
- toZigbee: [tuya.tz.datapoints],
13462
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13585
13463
  exposes: [
13586
13464
  e.illuminance(),
13587
13465
  e.presence(),
@@ -13642,8 +13520,7 @@ exports.definitions = [
13642
13520
  model: "TS0601_light",
13643
13521
  vendor: "Tuya",
13644
13522
  description: "Light",
13645
- fromZigbee: [tuya.fz.datapoints],
13646
- toZigbee: [tuya.tz.datapoints],
13523
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13647
13524
  exposes: [tuya.exposes.lightBrightness(), e.power_on_behavior().withAccess(ea.STATE_SET)],
13648
13525
  meta: {
13649
13526
  tuyaDatapoints: [
@@ -13665,8 +13542,7 @@ exports.definitions = [
13665
13542
  model: "YXZBSL",
13666
13543
  vendor: "Tuya",
13667
13544
  description: "Smart siren",
13668
- fromZigbee: [tuya.fz.datapoints],
13669
- toZigbee: [tuya.tz.datapoints],
13545
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13670
13546
  exposes: [
13671
13547
  e.binary("alarm", ea.STATE_SET, "ON", "OFF").withDescription("Turn the light of the alarm ON/OFF"),
13672
13548
  e.enum("type", ea.STATE_SET, ["sound", "light", "sound+light", "normal"]).withDescription("Alarm type"),
@@ -13761,9 +13637,7 @@ exports.definitions = [
13761
13637
  model: "ZYXH",
13762
13638
  vendor: "Tuya",
13763
13639
  description: "24 gang switch",
13764
- fromZigbee: [tuya.fz.datapoints],
13765
- toZigbee: [tuya.tz.datapoints],
13766
- configure: tuya.configureMagicPacket,
13640
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13767
13641
  exposes: [...Array.from(Array(24).keys()).map((ep) => tuya.exposes.switch().withEndpoint(`l${ep + 1}`))],
13768
13642
  endpoint: (device) => {
13769
13643
  return {
@@ -13828,9 +13702,7 @@ exports.definitions = [
13828
13702
  model: "ZY-M100-24G",
13829
13703
  vendor: "Tuya",
13830
13704
  description: "24G MmWave radar human presence motion sensor",
13831
- fromZigbee: [tuya.fz.datapoints],
13832
- toZigbee: [tuya.tz.datapoints],
13833
- configure: tuya.configureMagicPacket,
13705
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13834
13706
  exposes: [
13835
13707
  e.enum("state", ea.STATE, ["none", "presence", "move"]).withDescription("Presence state"),
13836
13708
  e.presence(),
@@ -13887,9 +13759,7 @@ exports.definitions = [
13887
13759
  model: "ZY-M100-24GV2",
13888
13760
  vendor: "Tuya",
13889
13761
  description: "24G MmWave radar human presence motion sensor",
13890
- fromZigbee: [tuya.fz.datapoints],
13891
- toZigbee: [tuya.tz.datapoints],
13892
- configure: tuya.configureMagicPacket,
13762
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13893
13763
  exposes: [
13894
13764
  e.enum("state", ea.STATE, ["none", "presence", "move"]).withDescription("Presence state sensor"),
13895
13765
  e.presence().withDescription("Occupancy"),
@@ -13938,9 +13808,7 @@ exports.definitions = [
13938
13808
  model: "ZY-M100-24GV3",
13939
13809
  vendor: "Tuya",
13940
13810
  description: "24G MmWave radar human presence motion sensor (added distance switch)",
13941
- fromZigbee: [tuya.fz.datapoints],
13942
- toZigbee: [tuya.tz.datapoints],
13943
- configure: tuya.configureMagicPacket,
13811
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
13944
13812
  exposes: (device, options) => {
13945
13813
  const exps = [
13946
13814
  e.enum("state", ea.STATE, ["none", "presence", "move"]).withDescription("Presence state sensor"),
@@ -14045,8 +13913,7 @@ exports.definitions = [
14045
13913
  model: "CTL-R1-TY-Zigbee",
14046
13914
  vendor: "Tuya",
14047
13915
  description: "24G radar human presence motion sensor.",
14048
- fromZigbee: [tuya.fz.datapoints],
14049
- toZigbee: [tuya.tz.datapoints],
13916
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14050
13917
  exposes: [
14051
13918
  e.illuminance().withUnit("lx"),
14052
13919
  e.presence(),
@@ -14155,9 +14022,7 @@ exports.definitions = [
14155
14022
  tuya.whitelabel("Tuya", "MTG235-ZB-RL", "24G Human presence sensor with relay", ["_TZE204_clrdrnya", "_TZE200_clrdrnya"]),
14156
14023
  tuya.whitelabel("QA", "QASZ24R", "mmWave 24 Ghz sensor with relay", ["_TZE284_4qznlkbu"]),
14157
14024
  ],
14158
- configure: tuya.configureMagicPacket,
14159
- fromZigbee: [tuya.fz.datapoints],
14160
- toZigbee: [tuya.tz.datapoints],
14025
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14161
14026
  exposes: [
14162
14027
  e.presence(),
14163
14028
  e.illuminance(),
@@ -14304,7 +14169,7 @@ exports.definitions = [
14304
14169
  description: "Bidirectional energy meter with 80A current clamp",
14305
14170
  fromZigbee: [fzLocal.PJ1203A_strict_fz_datapoints, fzLocal.PJ1203A_sync_time_increase_seq],
14306
14171
  toZigbee: [tuya.tz.datapoints],
14307
- extend: [tuya.modernExtend.tuyaBase({ timeStart: "off" })],
14172
+ extend: [tuya.modernExtend.tuyaBase()],
14308
14173
  options: [
14309
14174
  e
14310
14175
  .binary("late_energy_flow_a", ea.SET, true, false)
@@ -14380,7 +14245,7 @@ exports.definitions = [
14380
14245
  model: "PC311-Z-TY",
14381
14246
  vendor: "Tuya",
14382
14247
  description: "Bidirectional energy meter with 80A current clamp",
14383
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
14248
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14384
14249
  exposes: [
14385
14250
  e.ac_frequency(),
14386
14251
  e.voltage(),
@@ -14426,7 +14291,7 @@ exports.definitions = [
14426
14291
  model: "TYBAC-006",
14427
14292
  vendor: "Tuya",
14428
14293
  description: "Wall-mount thermostat for 2-pipe fan-coil unit",
14429
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
14294
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
14430
14295
  options: [
14431
14296
  e
14432
14297
  .enum("control_sequence_of_operation", ea.SET, ["cooling_only", "cooling_and_heating_4-pipes"])
@@ -14552,7 +14417,7 @@ exports.definitions = [
14552
14417
  model: "rtsc11r",
14553
14418
  vendor: "Tuya",
14554
14419
  description: "5.8G human presence sensor with relay",
14555
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
14420
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14556
14421
  exposes: [
14557
14422
  e.presence(),
14558
14423
  e.illuminance().withUnit("lx"),
@@ -14611,9 +14476,7 @@ exports.definitions = [
14611
14476
  model: "NAS-PS09B2",
14612
14477
  vendor: "NEO",
14613
14478
  description: "Human presence sensor",
14614
- fromZigbee: [tuya.fz.datapoints],
14615
- toZigbee: [tuya.tz.datapoints],
14616
- configure: tuya.configureMagicPacket,
14479
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14617
14480
  exposes: [
14618
14481
  e.occupancy(),
14619
14482
  e.enum("human_motion_state", ea.STATE, ["none", "small", "large"]).withDescription("Human Motion State"),
@@ -14794,7 +14657,7 @@ exports.definitions = [
14794
14657
  model: "SP02-ZB001",
14795
14658
  vendor: "iAlarm",
14796
14659
  description: "Infrared motion sensor",
14797
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
14660
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14798
14661
  exposes: [e.tamper(), e.battery(), e.occupancy()],
14799
14662
  meta: {
14800
14663
  tuyaDatapoints: [
@@ -14809,9 +14672,7 @@ exports.definitions = [
14809
14672
  model: "THS317-ET-TY",
14810
14673
  vendor: "Tuya",
14811
14674
  description: "Temperature sensor with probe",
14812
- fromZigbee: [tuya.fz.datapoints],
14813
- toZigbee: [tuya.tz.datapoints],
14814
- configure: tuya.configureMagicPacket,
14675
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14815
14676
  exposes: [e.temperature(), e.battery()],
14816
14677
  whiteLabel: [tuya.whitelabel("OWON", "THS317-ET-EY", "Temperature sensor with probe", ["_TZE200_01fvxamo"])],
14817
14678
  meta: {
@@ -14826,7 +14687,7 @@ exports.definitions = [
14826
14687
  model: "DCR-RQJ",
14827
14688
  vendor: "Tuya",
14828
14689
  description: "Carbon monoxide sensor gas leak detector",
14829
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
14690
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14830
14691
  exposes: [e.gas(), tuya.exposes.gasValue().withUnit("LEL %"), e.carbon_monoxide(), e.co()],
14831
14692
  meta: {
14832
14693
  tuyaDatapoints: [
@@ -14856,7 +14717,7 @@ exports.definitions = [
14856
14717
  model: "SZR07U",
14857
14718
  vendor: "Tuya",
14858
14719
  description: "24GHz millimeter wave radar",
14859
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
14720
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14860
14721
  exposes: [
14861
14722
  e.presence(),
14862
14723
  e
@@ -14952,7 +14813,6 @@ exports.definitions = [
14952
14813
  dp: true,
14953
14814
  queryOnConfigure: true,
14954
14815
  queryIntervalSeconds: 10,
14955
- timeStart: "off",
14956
14816
  respondToMcuVersionResponse: true,
14957
14817
  }),
14958
14818
  ],
@@ -15168,7 +15028,6 @@ exports.definitions = [
15168
15028
  dp: true,
15169
15029
  queryOnConfigure: true,
15170
15030
  queryIntervalSeconds: 10,
15171
- timeStart: "off",
15172
15031
  respondToMcuVersionResponse: true,
15173
15032
  }),
15174
15033
  ],
@@ -15353,7 +15212,7 @@ exports.definitions = [
15353
15212
  model: "EA4161C-BI",
15354
15213
  vendor: "Tuya",
15355
15214
  description: "Single-phase multifunction energy meter (DIN Module)",
15356
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "off" })],
15215
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
15357
15216
  exposes: [e.current(), e.power(), e.voltage(), e.energy(), e.text("meter_id", ea.STATE).withDescription("Meter ID (ID of device)")],
15358
15217
  meta: {
15359
15218
  tuyaDatapoints: [
@@ -15396,7 +15255,7 @@ exports.definitions = [
15396
15255
  model: "ZR360CDB",
15397
15256
  vendor: "Zorro Alert",
15398
15257
  description: "Multifunctional CO2 detector",
15399
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
15258
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
15400
15259
  whiteLabel: [tuya.whitelabel("Nous", "E10", "Multifunctional CO2 detector", ["_TZE200_xpvamyfz", "_TZE284_xpvamyfz"])],
15401
15260
  exposes: [
15402
15261
  e.humidity(),
@@ -15774,7 +15633,7 @@ exports.definitions = [
15774
15633
  model: "ZPV-01",
15775
15634
  vendor: "Novato",
15776
15635
  description: "Battery powered smart valve",
15777
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
15636
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
15778
15637
  exposes: [
15779
15638
  e.switch().setAccess("state", ea.STATE_SET),
15780
15639
  e.enum("valve_state", ea.STATE, ["Closed", "Unknown", "Open"]).withDescription("Valve Status"),
@@ -15895,8 +15754,7 @@ exports.definitions = [
15895
15754
  model: "RT_ZCZ03Z",
15896
15755
  vendor: "Tuya",
15897
15756
  description: "Human presence sensor 24G",
15898
- fromZigbee: [tuya.fz.datapoints],
15899
- toZigbee: [tuya.tz.datapoints],
15757
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
15900
15758
  exposes: [
15901
15759
  e.illuminance(),
15902
15760
  e.presence(),
@@ -15946,7 +15804,7 @@ exports.definitions = [
15946
15804
  description: "Smart circuit breaker",
15947
15805
  // Important: respondToMcuVersionResponse should be false otherwise there is an avalanche of commandMcuVersionResponse messages every second.
15948
15806
  // queryIntervalSeconds: is doing a pooling to update the device's parameters, now defined to update data every 3 minutes.
15949
- 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 })],
15950
15808
  exposes: [
15951
15809
  tuya.exposes.switch(),
15952
15810
  e.energy(),
@@ -16125,7 +15983,7 @@ exports.definitions = [
16125
15983
  model: "ZY-M100-S_3",
16126
15984
  vendor: "Tuya",
16127
15985
  description: "Human presence detector",
16128
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
15986
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16129
15987
  exposes: [
16130
15988
  e.presence(),
16131
15989
  e.illuminance(),
@@ -16164,7 +16022,7 @@ exports.definitions = [
16164
16022
  model: "ZG-205Z",
16165
16023
  vendor: "Tuya",
16166
16024
  description: "5.8 GHz human presence sensor",
16167
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
16025
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16168
16026
  exposes: [
16169
16027
  e.presence(),
16170
16028
  e
@@ -16280,9 +16138,7 @@ exports.definitions = [
16280
16138
  model: "PN6",
16281
16139
  vendor: "ZSVIOT",
16282
16140
  description: "6-way controller",
16283
- fromZigbee: [tuya.fz.datapoints],
16284
- toZigbee: [tuya.tz.datapoints],
16285
- configure: tuya.configureMagicPacket,
16141
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16286
16142
  exposes: [
16287
16143
  tuya.exposes.switch(),
16288
16144
  tuya.exposes.switchMode2().withEndpoint("l1_l2").withLabel("1-2 channels"),
@@ -16334,9 +16190,7 @@ exports.definitions = [
16334
16190
  model: "PN16",
16335
16191
  vendor: "ZSVIOT",
16336
16192
  description: "16-way controller",
16337
- fromZigbee: [tuya.fz.datapoints],
16338
- toZigbee: [tuya.tz.datapoints],
16339
- configure: tuya.configureMagicPacket,
16193
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16340
16194
  exposes: [
16341
16195
  e.power_on_behavior(["off", "on", "previous"]).withAccess(ea.STATE_SET),
16342
16196
  tuya.exposes.switch().withEndpoint("all"),
@@ -16442,9 +16296,7 @@ exports.definitions = [
16442
16296
  model: "ZG-103Z",
16443
16297
  vendor: "Tuya",
16444
16298
  description: "Vibration sensor",
16445
- fromZigbee: [tuya.fz.datapoints],
16446
- toZigbee: [tuya.tz.datapoints],
16447
- configure: tuya.configureMagicPacket,
16299
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16448
16300
  exposes: [
16449
16301
  e.vibration(),
16450
16302
  e.tilt(),
@@ -16487,8 +16339,7 @@ exports.definitions = [
16487
16339
  model: "ZG-302ZM",
16488
16340
  vendor: "HOBEIAN",
16489
16341
  description: "Motion sensing switch",
16490
- fromZigbee: [tuya.fz.datapoints],
16491
- toZigbee: [tuya.tz.datapoints],
16342
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16492
16343
  exposes: [
16493
16344
  e.presence(),
16494
16345
  e.binary("switch1", ea.STATE_SET, "ON", "OFF").withDescription("Switch1"),
@@ -16581,9 +16432,7 @@ exports.definitions = [
16581
16432
  model: "ZG-303Z",
16582
16433
  vendor: "HOBEIAN",
16583
16434
  description: "Soil moisture sensor",
16584
- fromZigbee: [tuya.fz.datapoints],
16585
- toZigbee: [tuya.tz.datapoints],
16586
- configure: tuya.configureMagicPacket,
16435
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16587
16436
  exposes: [
16588
16437
  e.enum("water_warning", ea.STATE, ["none", "alarm"]).withDescription("Water shortage warning"),
16589
16438
  e.temperature(),
@@ -16627,10 +16476,8 @@ exports.definitions = [
16627
16476
  model: "TS0601_din_4",
16628
16477
  vendor: "Tuya",
16629
16478
  description: "Din rail switch with power monitoring and threshold settings",
16630
- fromZigbee: [tuya.fz.datapoints],
16631
- toZigbee: [tuya.tz.datapoints],
16479
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16632
16480
  configure: async (device, coordinatorEndpoint) => {
16633
- await tuya.configureMagicPacket(device, coordinatorEndpoint);
16634
16481
  // Required to get the device to start reporting
16635
16482
  await device.getEndpoint(1).command("manuSpecificTuya", "dataQuery", {});
16636
16483
  },
@@ -16675,9 +16522,7 @@ exports.definitions = [
16675
16522
  model: "ZA03",
16676
16523
  vendor: "Tuya",
16677
16524
  description: "Siren alarm",
16678
- fromZigbee: [tuya.fz.datapoints],
16679
- toZigbee: [tuya.tz.datapoints],
16680
- configure: tuya.configureMagicPacket,
16525
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16681
16526
  exposes: [
16682
16527
  e.binary("alarm", ea.STATE_SET, "ON", "OFF").withDescription("Sound the alarm"),
16683
16528
  e.enum("volume", ea.STATE_SET, ["low", "medium", "high", "mute"]),
@@ -16783,10 +16628,7 @@ exports.definitions = [
16783
16628
  model: "ZY_HPS01",
16784
16629
  vendor: "Tuya",
16785
16630
  description: "mmWave radar 5.8GHz",
16786
- fromZigbee: [tuya.fz.datapoints],
16787
- toZigbee: [tuya.tz.datapoints],
16788
- configure: tuya.configureMagicPacket,
16789
- extend: [],
16631
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16790
16632
  whiteLabel: [tuya.whitelabel("Nova Digital", "ZTS-MM", "mmWave radar 5.8GHz", ["_TZE204_lbbg34rj"])],
16791
16633
  exposes: [
16792
16634
  e.illuminance().withUnit("lx"),
@@ -16860,8 +16702,7 @@ exports.definitions = [
16860
16702
  model: "ZPIR-10",
16861
16703
  vendor: "Tuya",
16862
16704
  description: "Treatlife human presence sensor",
16863
- fromZigbee: [tuya.fz.datapoints],
16864
- toZigbee: [tuya.tz.datapoints],
16705
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
16865
16706
  exposes: [e.occupancy(), e.battery(), e.illuminance()],
16866
16707
  meta: {
16867
16708
  tuyaDatapoints: [
@@ -16876,7 +16717,7 @@ exports.definitions = [
16876
16717
  model: "TS0601_thermostat_thermosphere",
16877
16718
  vendor: "Tuya",
16878
16719
  description: "ThermoSphere thermostat",
16879
- extend: [tuyaBase({ dp: true })],
16720
+ extend: [tuyaBase({ dp: true, timeStart: "1970" })],
16880
16721
  exposes: [
16881
16722
  e
16882
16723
  .climate()
@@ -17043,7 +16884,7 @@ exports.definitions = [
17043
16884
  model: "TS0601_GTZ10",
17044
16885
  vendor: "Tuya",
17045
16886
  description: "Thermostat radiator valve",
17046
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
16887
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
17047
16888
  ota: true,
17048
16889
  exposes: [
17049
16890
  e.battery(),
@@ -17328,7 +17169,7 @@ exports.definitions = [
17328
17169
  model: "HHST001",
17329
17170
  vendor: "HeatHUB",
17330
17171
  description: "Fan coil thermostat",
17331
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
17172
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
17332
17173
  exposes: [
17333
17174
  e.binary("state", ea.STATE_SET, "ON", "OFF").withDescription("Turn the thermostat ON/OFF"),
17334
17175
  e
@@ -17406,9 +17247,7 @@ exports.definitions = [
17406
17247
  model: "GX03",
17407
17248
  vendor: "GIEX",
17408
17249
  description: "GIEX 2 zone watering timer",
17409
- fromZigbee: [tuya.fz.datapoints],
17410
- toZigbee: [tuya.tz.datapoints],
17411
- configure: tuya.configureMagicPacket,
17250
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
17412
17251
  exposes: [
17413
17252
  e.binary("valve_1", ea.STATE_SET, "ON", "OFF").withDescription("Switch state"),
17414
17253
  e
@@ -17460,9 +17299,7 @@ exports.definitions = [
17460
17299
  model: "PJ3201A",
17461
17300
  vendor: "Dongguan Pinjia Technology Co.,LTD.",
17462
17301
  description: "Human Presence Sensor",
17463
- fromZigbee: [tuya.fz.datapoints],
17464
- toZigbee: [tuya.tz.datapoints],
17465
- configure: tuya.configureMagicPacket,
17302
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
17466
17303
  exposes: [
17467
17304
  e.presence().withDescription("Indicates whether the device detected presence. Will be true also when movement (occupancy) is detected."),
17468
17305
  e
@@ -17719,7 +17556,7 @@ exports.definitions = [
17719
17556
  model: "PO-BOCO-ELEC",
17720
17557
  vendor: "Powernity",
17721
17558
  description: "Pilot wire heating module",
17722
- extend: [tuyaBase({ dp: true })],
17559
+ extend: [tuyaBase({ dp: true, timeStart: "1970" })],
17723
17560
  exposes: [
17724
17561
  e
17725
17562
  .climate()
@@ -17987,7 +17824,7 @@ exports.definitions = [
17987
17824
  model: "TR-M3Z",
17988
17825
  vendor: "Tuya",
17989
17826
  description: "Thermostatic radiator valve actuator",
17990
- extend: [tuyaBase({ dp: true })],
17827
+ extend: [tuyaBase({ dp: true, timeStart: "1970" })],
17991
17828
  exposes: [
17992
17829
  e.child_lock(),
17993
17830
  e.battery(),
@@ -18141,7 +17978,7 @@ exports.definitions = [
18141
17978
  model: "AE-669K",
18142
17979
  vendor: "ACMELEC",
18143
17980
  description: "Compatible with Mitsubishi Electric vrf system",
18144
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
17981
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18145
17982
  exposes: [
18146
17983
  e.binary("state", ea.STATE_SET, "ON", "OFF").withDescription("Turn the thermostat ON/OFF"),
18147
17984
  e
@@ -18185,9 +18022,7 @@ exports.definitions = [
18185
18022
  model: "ATMS10013Z3",
18186
18023
  vendor: "Ourtop",
18187
18024
  description: "Zigbee 3 Phase Meter",
18188
- fromZigbee: [tuya.fz.datapoints],
18189
- toZigbee: [tuya.tz.datapoints],
18190
- configure: tuya.configureMagicPacket,
18025
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18191
18026
  whiteLabel: [{ vendor: "Ourtop", model: "ATMS100133Z" }],
18192
18027
  exposes: [
18193
18028
  e.energy(),
@@ -18232,9 +18067,7 @@ exports.definitions = [
18232
18067
  model: "ZG-WK-DA-Wh-Zigbee",
18233
18068
  vendor: "Tuya",
18234
18069
  description: "Wall thermostat with humidity sensor",
18235
- fromZigbee: [tuya.fz.datapoints],
18236
- toZigbee: [tuya.tz.datapoints],
18237
- configure: tuya.configureMagicPacket,
18070
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18238
18071
  exposes: [
18239
18072
  e.humidity(),
18240
18073
  e.child_lock(),
@@ -18417,7 +18250,7 @@ exports.definitions = [
18417
18250
  model: "HY-SZLUMPIR",
18418
18251
  vendor: "Homcloud",
18419
18252
  description: "PIR sensor",
18420
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "off", respondToMcuVersionResponse: true })],
18253
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, respondToMcuVersionResponse: true })],
18421
18254
  exposes: [e.occupancy(), e.illuminance(), e.battery()],
18422
18255
  meta: {
18423
18256
  tuyaDatapoints: [
@@ -18432,7 +18265,7 @@ exports.definitions = [
18432
18265
  model: "XZ-AKT101",
18433
18266
  vendor: "Tuya",
18434
18267
  description: "Intelligent air conditioning wall switch",
18435
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
18268
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18436
18269
  ota: true,
18437
18270
  exposes: [
18438
18271
  e.binary("air_switch", ea.STATE_SET, true, false),
@@ -18486,8 +18319,7 @@ exports.definitions = [
18486
18319
  model: "ZBN-JT-63",
18487
18320
  vendor: "Tuya",
18488
18321
  description: "Din rail switch with power monitoring",
18489
- fromZigbee: [tuya.fz.datapoints],
18490
- toZigbee: [tuya.tz.datapoints],
18322
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18491
18323
  exposes: [
18492
18324
  tuya.exposes.switch(),
18493
18325
  e.numeric("power", ea.STATE).withDescription("power").withUnit("W").withDescription("Instantaneous measured power"),
@@ -18577,7 +18409,7 @@ exports.definitions = [
18577
18409
  model: "EPJ-ZB",
18578
18410
  vendor: "Nova Digital",
18579
18411
  description: "Smart sliding window pusher",
18580
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
18412
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18581
18413
  exposes: [
18582
18414
  e.battery(),
18583
18415
  e.cover_position(),
@@ -18613,9 +18445,7 @@ exports.definitions = [
18613
18445
  model: "ZG-102ZM",
18614
18446
  vendor: "HOBEIAN",
18615
18447
  description: "Vibration sensor",
18616
- fromZigbee: [tuya.fz.datapoints],
18617
- toZigbee: [tuya.tz.datapoints],
18618
- configure: tuya.configureMagicPacket,
18448
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18619
18449
  exposes: [
18620
18450
  e.vibration(),
18621
18451
  e.contact(),
@@ -18643,8 +18473,7 @@ exports.definitions = [
18643
18473
  model: "ZG-204ZV",
18644
18474
  vendor: "HOBEIAN",
18645
18475
  description: "Millimeter wave motion detection",
18646
- fromZigbee: [tuya.fz.datapoints],
18647
- toZigbee: [tuya.tz.datapoints],
18476
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18648
18477
  exposes: [
18649
18478
  e.presence(),
18650
18479
  e.illuminance(),
@@ -18700,9 +18529,7 @@ exports.definitions = [
18700
18529
  model: "ZG-223Z",
18701
18530
  vendor: "HOBEIAN",
18702
18531
  description: "Rainwater detection sensor",
18703
- fromZigbee: [tuya.fz.datapoints],
18704
- toZigbee: [tuya.tz.datapoints],
18705
- configure: tuya.configureMagicPacket,
18532
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18706
18533
  exposes: [
18707
18534
  e.enum("rainwater", ea.STATE, ["none", "raining"]).withDescription("Sensor rainwater status"),
18708
18535
  e.illuminance(),
@@ -18744,7 +18571,7 @@ exports.definitions = [
18744
18571
  model: "RD24G01",
18745
18572
  vendor: "Tuya",
18746
18573
  description: "24GHz human presence sensor",
18747
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
18574
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18748
18575
  exposes: [
18749
18576
  exposes
18750
18577
  .enum("presence_state", exposes.access.STATE, ["none", "motion", "stationary"])
@@ -18793,7 +18620,7 @@ exports.definitions = [
18793
18620
  model: "M515EGBZTN",
18794
18621
  vendor: "Quoya",
18795
18622
  description: "Zigbee roller blind",
18796
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
18623
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18797
18624
  options: [exposes.options.invert_cover()],
18798
18625
  exposes: [
18799
18626
  e.cover_position().setAccess("position", ea.STATE_SET),
@@ -18840,9 +18667,7 @@ exports.definitions = [
18840
18667
  model: "CS-201Z",
18841
18668
  vendor: "COOLO",
18842
18669
  description: "Soil moisture sensor",
18843
- fromZigbee: [tuya.fz.datapoints],
18844
- toZigbee: [tuya.tz.datapoints],
18845
- configure: tuya.configureMagicPacket,
18670
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18846
18671
  exposes: [
18847
18672
  e.dry(),
18848
18673
  e.temperature(),
@@ -18995,8 +18820,8 @@ exports.definitions = [
18995
18820
  model: "TS0601_knob_dimmer_switch",
18996
18821
  vendor: "Tuya",
18997
18822
  description: "Dimmer knob with two lights",
18998
- fromZigbee: [tuya.fz.datapoints],
18999
- 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],
19000
18825
  exposes: [
19001
18826
  e.switch(),
19002
18827
  e.switch().withEndpoint("l1"),
@@ -19029,7 +18854,6 @@ exports.definitions = [
19029
18854
  },
19030
18855
  configure: async (device, coordinatorEndpoint) => {
19031
18856
  const endpoint = device.getEndpoint(1);
19032
- await tuya.configureMagicPacket(device, coordinatorEndpoint);
19033
18857
  await endpoint.command("genBasic", "tuyaSetup", {}, { disableDefaultResponse: true });
19034
18858
  },
19035
18859
  endpoint: (device) => ({
@@ -19043,9 +18867,7 @@ exports.definitions = [
19043
18867
  model: "HY607W-3A",
19044
18868
  vendor: "Tuya",
19045
18869
  description: "Thermostat for gas boiler",
19046
- fromZigbee: [tuya.fz.datapoints],
19047
- toZigbee: [tuya.tz.datapoints],
19048
- configure: tuya.configureMagicPacket,
18870
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19049
18871
  exposes: [
19050
18872
  e.climate().withLocalTemperature(ea.STATE).withSetpoint("occupied_heating_setpoint", 5, 35, 0.5, ea.STATE_SET),
19051
18873
  e
@@ -19107,8 +18929,7 @@ exports.definitions = [
19107
18929
  model: "ZG-204ZH",
19108
18930
  vendor: "HOBEIAN",
19109
18931
  description: "PIR 24Ghz human presence sensor",
19110
- fromZigbee: [tuya.fz.datapoints],
19111
- toZigbee: [tuya.tz.datapoints],
18932
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19112
18933
  exposes: [
19113
18934
  e.presence(),
19114
18935
  e.illuminance(),
@@ -19228,8 +19049,7 @@ exports.definitions = [
19228
19049
  vendor: "Tongou",
19229
19050
  description: "Zigbee energy meter (transformer clamp)",
19230
19051
  whiteLabel: [tuya.whitelabel("Tongou", "TOSA1-01WXJAT2A", "Smart energy meter, two wire", ["_TZE284_4hdbt6rn"])],
19231
- fromZigbee: [tuya.fz.datapoints],
19232
- toZigbee: [tuya.tz.datapoints],
19052
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19233
19053
  exposes: [
19234
19054
  e.energy(),
19235
19055
  e.voltage(),
@@ -19441,7 +19261,7 @@ exports.definitions = [
19441
19261
  model: "_TZE204_3regm3h6",
19442
19262
  vendor: "Tuya",
19443
19263
  description: "Smart thermostat for electric radiator with pilot wire",
19444
- extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19264
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "1970" })],
19445
19265
  exposes: [
19446
19266
  e.binary("state", ea.STATE_SET, "ON", "OFF").withDescription("Turn the heater on or off").withCategory("config"),
19447
19267
  e.child_lock(),
@@ -19631,7 +19451,7 @@ exports.definitions = [
19631
19451
  model: "ZS-300Z",
19632
19452
  vendor: "Arteco",
19633
19453
  description: "Soil moisture sensor",
19634
- extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
19454
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19635
19455
  exposes: [
19636
19456
  e.enum("water_warning", ea.STATE, ["none", "alarm"]).withDescription("Water shortage warning"),
19637
19457
  e.enum("battery_state", ea.STATE, ["low", "middle", "high"]).withDescription("low: 16.67%, middle:16.68-83.33%, high: 83.34-100%"),
@@ -19675,8 +19495,7 @@ exports.definitions = [
19675
19495
  model: "ZG-204ZK",
19676
19496
  vendor: "HOBEIAN",
19677
19497
  description: "24Ghz human presence sensor",
19678
- fromZigbee: [tuya.fz.datapoints],
19679
- toZigbee: [tuya.tz.datapoints],
19498
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19680
19499
  exposes: [
19681
19500
  e.presence(),
19682
19501
  e.illuminance(),
@@ -19730,8 +19549,7 @@ exports.definitions = [
19730
19549
  model: "ZG-204ZE",
19731
19550
  vendor: "HOBEIAN",
19732
19551
  description: "10G mw motion detection",
19733
- fromZigbee: [tuya.fz.datapoints],
19734
- toZigbee: [tuya.tz.datapoints],
19552
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19735
19553
  exposes: [
19736
19554
  e.presence(),
19737
19555
  e.battery(),
@@ -19937,7 +19755,7 @@ exports.definitions = [
19937
19755
  fingerprint: tuya.fingerprint("TS0601", ["_TZE204_mvtclclq"]),
19938
19756
  model: "DS-1450WN",
19939
19757
  vendor: "Tuya",
19940
- description: "Smart Zigbee Switch with Power Monitoring",
19758
+ description: "Smart Zigbee Switch with power monitoring",
19941
19759
  extend: [tuya.modernExtend.tuyaBase({ dp: true })],
19942
19760
  exposes: [
19943
19761
  e.switch().withEndpoint("usb_a"),
@@ -20020,7 +19838,7 @@ exports.definitions = [
20020
19838
  model: "TS0601_thermostat_14",
20021
19839
  vendor: "AVATTO",
20022
19840
  description: "Thermostatic radiator valve",
20023
- extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
19841
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
20024
19842
  exposes: [
20025
19843
  e.child_lock(),
20026
19844
  e.battery(),