zigbee-herdsman-converters 21.23.0 → 21.25.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 (76) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/converters/toZigbee.d.ts.map +1 -1
  3. package/converters/toZigbee.js +29 -14
  4. package/converters/toZigbee.js.map +1 -1
  5. package/devices/avatto.d.ts.map +1 -1
  6. package/devices/avatto.js +150 -0
  7. package/devices/avatto.js.map +1 -1
  8. package/devices/direct_signs.d.ts +4 -0
  9. package/devices/direct_signs.d.ts.map +1 -0
  10. package/devices/direct_signs.js +48 -0
  11. package/devices/direct_signs.js.map +1 -0
  12. package/devices/heiman.d.ts.map +1 -1
  13. package/devices/heiman.js +0 -1
  14. package/devices/heiman.js.map +1 -1
  15. package/devices/index.d.ts.map +1 -1
  16. package/devices/index.js +4 -0
  17. package/devices/index.js.map +1 -1
  18. package/devices/legrand.js +1 -1
  19. package/devices/legrand.js.map +1 -1
  20. package/devices/lixee.d.ts.map +1 -1
  21. package/devices/lixee.js +10 -2
  22. package/devices/lixee.js.map +1 -1
  23. package/devices/lumi.d.ts.map +1 -1
  24. package/devices/lumi.js +3 -1
  25. package/devices/lumi.js.map +1 -1
  26. package/devices/namron.d.ts.map +1 -1
  27. package/devices/namron.js +132 -0
  28. package/devices/namron.js.map +1 -1
  29. package/devices/niko.d.ts.map +1 -1
  30. package/devices/niko.js +193 -55
  31. package/devices/niko.js.map +1 -1
  32. package/devices/nous.d.ts.map +1 -1
  33. package/devices/nous.js +18 -1
  34. package/devices/nous.js.map +1 -1
  35. package/devices/robb.d.ts.map +1 -1
  36. package/devices/robb.js +11 -0
  37. package/devices/robb.js.map +1 -1
  38. package/devices/simon.d.ts +4 -0
  39. package/devices/simon.d.ts.map +1 -0
  40. package/devices/simon.js +15 -0
  41. package/devices/simon.js.map +1 -0
  42. package/devices/smartthings.js +4 -4
  43. package/devices/smartthings.js.map +1 -1
  44. package/devices/smartwings.d.ts.map +1 -1
  45. package/devices/smartwings.js +13 -1
  46. package/devices/smartwings.js.map +1 -1
  47. package/devices/sonoff.d.ts.map +1 -1
  48. package/devices/sonoff.js +69 -1
  49. package/devices/sonoff.js.map +1 -1
  50. package/devices/sunricher.d.ts.map +1 -1
  51. package/devices/sunricher.js +20 -9
  52. package/devices/sunricher.js.map +1 -1
  53. package/devices/tuya.d.ts.map +1 -1
  54. package/devices/tuya.js +219 -24
  55. package/devices/tuya.js.map +1 -1
  56. package/devices/ubisys.d.ts.map +1 -1
  57. package/devices/ubisys.js +39 -128
  58. package/devices/ubisys.js.map +1 -1
  59. package/lib/exposes.d.ts +2 -1
  60. package/lib/exposes.d.ts.map +1 -1
  61. package/lib/exposes.js +3 -4
  62. package/lib/exposes.js.map +1 -1
  63. package/lib/lumi.d.ts +1 -1
  64. package/lib/lumi.js +5 -4
  65. package/lib/lumi.js.map +1 -1
  66. package/lib/modernExtend.js +1 -1
  67. package/lib/modernExtend.js.map +1 -1
  68. package/lib/namron.d.ts +56 -0
  69. package/lib/namron.d.ts.map +1 -0
  70. package/lib/namron.js +434 -0
  71. package/lib/namron.js.map +1 -0
  72. package/lib/tuya.d.ts +26 -8
  73. package/lib/tuya.d.ts.map +1 -1
  74. package/lib/tuya.js +43 -40
  75. package/lib/tuya.js.map +1 -1
  76. package/package.json +8 -8
package/devices/tuya.js CHANGED
@@ -965,7 +965,6 @@ const definitions = [
965
965
  '_TZE200_bq5c8xfe',
966
966
  '_TZE200_bjawzodf',
967
967
  '_TZE200_qyflbnbj',
968
- '_TZE200_vs0skpuc',
969
968
  '_TZE200_44af8vyi',
970
969
  '_TZE200_zl1kmjqx',
971
970
  '_TZE204_qyflbnbj',
@@ -1158,26 +1157,26 @@ const definitions = [
1158
1157
  .withDescription('Alarm temperature min'),
1159
1158
  e.numeric('max_humidity_alarm', ea.STATE_SET).withUnit('%').withValueMin(0).withValueMax(100).withDescription('Alarm humidity max'),
1160
1159
  e.numeric('min_humidity_alarm', ea.STATE_SET).withUnit('%').withValueMin(0).withValueMax(100).withDescription('Alarm humidity min'),
1161
- e.enum('temperature_alarm', ea.STATE_SET, ['lower_alarm', 'upper_alarm', 'cancel']).withDescription('Temperature alarm'),
1162
- e.enum('humidity_alarm', ea.STATE_SET, ['lower_alarm', 'upper_alarm', 'cancel']).withDescription('Humidity alarm'),
1160
+ e.enum('temperature_alarm', ea.STATE, ['lower_alarm', 'upper_alarm', 'cancel']).withDescription('Temperature alarm'),
1161
+ e.enum('humidity_alarm', ea.STATE, ['lower_alarm', 'upper_alarm', 'cancel']).withDescription('Humidity alarm'),
1163
1162
  e
1164
1163
  .numeric('temperature_periodic_report', ea.STATE_SET)
1165
- .withUnit('%')
1166
- .withValueMin(0)
1167
- .withValueMax(100)
1164
+ .withUnit('min')
1165
+ .withValueMin(1)
1166
+ .withValueMax(120)
1168
1167
  .withDescription('Temp periodic report'),
1169
1168
  e
1170
1169
  .numeric('humidity_periodic_report', ea.STATE_SET)
1171
- .withUnit('%')
1172
- .withValueMin(0)
1173
- .withValueMax(100)
1170
+ .withUnit('min')
1171
+ .withValueMin(1)
1172
+ .withValueMax(120)
1174
1173
  .withDescription('Humidity periodic report'),
1175
1174
  e
1176
1175
  .numeric('temperature_sensitivity', ea.STATE_SET)
1177
1176
  .withUnit('°C')
1178
- .withValueMin(3)
1179
- .withValueMax(10)
1180
- .withValueStep(1)
1177
+ .withValueMin(0.3)
1178
+ .withValueMax(1)
1179
+ .withValueStep(0.1)
1181
1180
  .withDescription('Sensitivity of temperature'),
1182
1181
  e
1183
1182
  .numeric('humidity_sensitivity', ea.STATE_SET)
@@ -1205,10 +1204,11 @@ const definitions = [
1205
1204
  [15, 'humidity_alarm', tuya.valueConverterBasic.lookup({ lower_alarm: tuya.enum(0), upper_alarm: tuya.enum(1), cancel: tuya.enum(2) })],
1206
1205
  [17, 'temperature_periodic_report', tuya.valueConverter.raw],
1207
1206
  [18, 'humidity_periodic_report', tuya.valueConverter.raw],
1208
- [19, 'temperature_sensitivity', tuya.valueConverter.raw],
1207
+ [19, 'temperature_sensitivity', tuya.valueConverter.divideBy10],
1209
1208
  [20, 'humidity_sensitivity', tuya.valueConverter.raw],
1210
1209
  ],
1211
1210
  },
1211
+ whiteLabel: [tuya.whitelabel('ONENUO', 'TH05Z', 'Temperature & humidity sensor with clock and humidity display', ['_TZE200_vvmbj46n'])],
1212
1212
  },
1213
1213
  {
1214
1214
  fingerprint: tuya.fingerprint('TS0601', ['_TZE200_nvups4nh']),
@@ -1606,6 +1606,7 @@ const definitions = [
1606
1606
  '_TZ3210_mja6r5ix',
1607
1607
  ]),
1608
1608
  tuya.whitelabel('MiBoxer', 'FUTC11ZR', 'Outdoor light', ['_TZB210_zmppwawa']),
1609
+ tuya.whitelabel('TechToy', '_TZ3210_iw0zkcu8', 'Smart bulb RGB 9W E27', ['_TZ3210_iw0zkcu8']),
1609
1610
  ],
1610
1611
  extend: [tuya.modernExtend.tuyaLight({ colorTemp: { range: [153, 500] }, color: true })],
1611
1612
  configure: async (device, coordinatorEndpoint) => {
@@ -1903,7 +1904,8 @@ const definitions = [
1903
1904
  whiteLabel: [
1904
1905
  { vendor: 'CR Smart Home', model: 'TS0207' },
1905
1906
  tuya.whitelabel('Meian', 'SW02', 'Water leak sensor', ['_TZ3000_kyb656no']),
1906
- tuya.whitelabel('Aubess', 'IH-K665', 'Water leak sensor', ['_TZ3000_k4ej3ww2', '_TZ3000_kstbkt6a']),
1907
+ tuya.whitelabel('Aubess', 'IH-K665', 'Water leak sensor', ['_TZ3000_kstbkt6a']),
1908
+ tuya.whitelabel('HOBEIAN', 'ZG-222ZA', 'Water leak sensor', ['_TZ3000_k4ej3ww2']),
1907
1909
  tuya.whitelabel('Tuya', 'TS0207_water_leak_detector_1', 'Zigbee water flood sensor + 1m probe cable', [
1908
1910
  '_TZ3000_ocjlo4ea',
1909
1911
  '_TZ3000_upgcbody',
@@ -4656,7 +4658,6 @@ const definitions = [
4656
4658
  '_TZE200_jkfbph7l' /* model: 'ME167', vendor: 'AVATTO' */,
4657
4659
  '_TZE200_p3dbf6qs' /* model: 'ME168', vendor: 'AVATTO' */,
4658
4660
  '_TZE200_rxntag7i' /* model: 'ME168', vendor: 'AVATTO' */,
4659
- '_TZE200_ybsqljjg' /* model: 'ME168', vendor: 'AVATTO' */,
4660
4661
  '_TZE200_yqgbrdyo',
4661
4662
  '_TZE284_p3dbf6qs',
4662
4663
  '_TZE200_rxq4iti9',
@@ -4678,7 +4679,7 @@ const definitions = [
4678
4679
  '_TZE200_9xfjixap',
4679
4680
  '_TZE200_jkfbph7l',
4680
4681
  ]),
4681
- tuya.whitelabel('AVATTO', 'ME168', 'Thermostatic radiator valve', ['_TZE200_rxntag7i', '_TZE200_ybsqljjg']),
4682
+ tuya.whitelabel('AVATTO', 'ME168_1', 'Thermostatic radiator valve', ['_TZE200_rxntag7i']),
4682
4683
  tuya.whitelabel('AVATTO', 'TRV06_1', 'Thermostatic radiator valve', ['_TZE200_hvaxb2tc', '_TZE284_o3x45p96']),
4683
4684
  tuya.whitelabel('EARU', 'TRV06', 'Smart thermostat module', ['_TZE200_yqgbrdyo', '_TZE200_rxq4iti9']),
4684
4685
  tuya.whitelabel('AVATTO', 'AVATTO_TRV06', 'Thermostatic radiator valve', ['_TZE284_c6wv4xyo', '_TZE204_o3x45p96']),
@@ -4949,9 +4950,10 @@ const definitions = [
4949
4950
  },
4950
4951
  },
4951
4952
  {
4952
- fingerprint: tuya.fingerprint('TS0601', ['_TZE204_rtrmfadk']),
4953
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE204_rtrmfadk', '_TZE204_cvcu2p6e']),
4953
4954
  model: 'TRV601',
4954
4955
  vendor: 'Tuya',
4956
+ whiteLabel: [tuya.whitelabel('Sber', 'SBDV-00185', 'Thermostatic radiator valve', ['_TZE204_cvcu2p6e'])],
4955
4957
  description: 'Thermostatic radiator valve.',
4956
4958
  onEvent: tuya.onEventSetLocalTime,
4957
4959
  fromZigbee: [tuya.fz.datapoints],
@@ -5459,7 +5461,6 @@ const definitions = [
5459
5461
  { vendor: 'AVATTO', model: 'MIUCOT10Z' },
5460
5462
  { vendor: 'Neo', model: 'NAS-WR01B' },
5461
5463
  { vendor: 'Neo', model: 'PLUG-001SPB2' },
5462
- tuya.whitelabel('Tuya', 'BSD29_1', 'Smart plug (with power monitoring by polling)', ['_TZ3000_okaz9tjs']),
5463
5464
  ],
5464
5465
  ota: true,
5465
5466
  extend: [tuya.modernExtend.tuyaOnOff({ electricalMeasurements: true, powerOutageMemory: true, indicatorMode: true, childLock: true })],
@@ -8257,7 +8258,7 @@ const definitions = [
8257
8258
  ],
8258
8259
  },
8259
8260
  {
8260
- fingerprint: tuya.fingerprint('TS0601', ['_TZE200_qoy0ekbd', '_TZE200_znbl8dj5', '_TZE200_a8sdabtg', '_TZE200_dikkika5']),
8261
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE200_qoy0ekbd', '_TZE200_znbl8dj5', '_TZE200_a8sdabtg', '_TZE200_dikkika5', '_TZE200_vs0skpuc']),
8261
8262
  model: 'ZG-227ZL',
8262
8263
  vendor: 'Tuya',
8263
8264
  description: 'Temperature & humidity LCD sensor',
@@ -8275,6 +8276,7 @@ const definitions = [
8275
8276
  whiteLabel: [
8276
8277
  tuya.whitelabel('Tuya', 'ZG-227Z', 'Temperature and humidity sensor', ['_TZE200_a8sdabtg']),
8277
8278
  tuya.whitelabel('KOJIMA', 'KOJIMA-THS-ZG-LCD', 'Temperature and humidity sensor', ['_TZE200_dikkika5']),
8279
+ tuya.whitelabel('HOBEIAN', 'ZG-227Z', 'Temperature and humidity sensor', ['_TZE200_vs0skpuc']),
8278
8280
  ],
8279
8281
  meta: {
8280
8282
  tuyaDatapoints: [
@@ -10799,8 +10801,8 @@ const definitions = [
10799
10801
  e.numeric('distance', ea.STATE).withDescription('Target distance'),
10800
10802
  e.binary('find_switch', ea.STATE_SET, 'ON', 'OFF').withDescription('distance switch'),
10801
10803
  e.illuminance().withDescription('Illuminance sensor'),
10802
- e.numeric('move_sensitivity', ea.STATE_SET).withValueMin(0).withValueMax(10).withValueStep(1).withDescription('Motion Sensitivity'),
10803
- e.numeric('presence_sensitivity', ea.STATE_SET).withValueMin(0).withValueMax(10).withValueStep(1).withDescription('Presence Sensitivity'),
10804
+ e.numeric('move_sensitivity', ea.STATE_SET).withValueMin(1).withValueMax(10).withValueStep(1).withDescription('Motion Sensitivity'),
10805
+ e.numeric('presence_sensitivity', ea.STATE_SET).withValueMin(1).withValueMax(10).withValueStep(1).withDescription('Presence Sensitivity'),
10804
10806
  e
10805
10807
  .numeric('detection_distance_min', ea.STATE_SET)
10806
10808
  .withValueMin(0)
@@ -12589,6 +12591,123 @@ const definitions = [
12589
12591
  ],
12590
12592
  },
12591
12593
  },
12594
+ {
12595
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE200_kccdzaeo', '_TZE200_s7rsrtbg', '_TZE200_tmszbtzq']),
12596
+ model: 'ZG-302ZM',
12597
+ vendor: 'HOBEIAN',
12598
+ description: 'Motion sensing switch',
12599
+ fromZigbee: [tuya.fz.datapoints],
12600
+ toZigbee: [tuya.tz.datapoints],
12601
+ exposes: [
12602
+ e.presence(),
12603
+ e.binary('switch1', ea.STATE_SET, 'ON', 'OFF').withDescription('Switch1'),
12604
+ e.binary('switch2', ea.STATE_SET, 'ON', 'OFF').withDescription('Switch2'),
12605
+ e.binary('switch3', ea.STATE_SET, 'ON', 'OFF').withDescription('Switch3'),
12606
+ e
12607
+ .numeric('sensitivity', ea.STATE_SET)
12608
+ .withValueMin(0)
12609
+ .withValueMax(19)
12610
+ .withValueStep(1)
12611
+ .withUnit('x')
12612
+ .withDescription('detection sensitivity'),
12613
+ e.binary('backlight', ea.STATE_SET, 'ON', 'OFF').withDescription('backlight'),
12614
+ e
12615
+ .numeric('trigger_hold', ea.STATE_SET)
12616
+ .withValueMin(5)
12617
+ .withValueMax(28800)
12618
+ .withValueStep(1)
12619
+ .withUnit('s')
12620
+ .withDescription('Trigger hold(second)'),
12621
+ tuya.exposes.powerOutageMemory(),
12622
+ e
12623
+ .enum('auto_on', ea.STATE_SET, ['off', 'all', 'ch1', 'ch2', 'ch3', 'ch1_2', 'ch2_3', 'ch1_3'])
12624
+ .withDescription('Someone turn on the light'),
12625
+ e
12626
+ .enum('auto_off', ea.STATE_SET, ['off', 'all', 'ch1', 'ch2', 'ch3', 'ch1_2', 'ch2_3', 'ch1_3'])
12627
+ .withDescription('No one turns off the lights'),
12628
+ e.enum('trigger_switch', ea.STATE_SET, ['ch1', 'ch2', 'ch3']).withDescription('Switch state reversal'),
12629
+ ],
12630
+ meta: {
12631
+ tuyaDatapoints: [
12632
+ [1, 'presence', tuya.valueConverter.trueFalse1],
12633
+ [101, 'switch1', tuya.valueConverter.onOff],
12634
+ [102, 'switch2', tuya.valueConverter.onOff],
12635
+ [103, 'switch3', tuya.valueConverter.onOff],
12636
+ [110, 'sensitivity', tuya.valueConverter.raw],
12637
+ [111, 'backlight', tuya.valueConverter.onOff],
12638
+ [114, 'trigger_hold', tuya.valueConverter.raw],
12639
+ [112, 'power_outage_memory', tuya.valueConverterBasic.lookup({ off: tuya.enum(0), on: tuya.enum(1), restore: tuya.enum(2) })],
12640
+ [
12641
+ 113,
12642
+ 'auto_on',
12643
+ tuya.valueConverterBasic.lookup({
12644
+ off: tuya.enum(0),
12645
+ all: tuya.enum(1),
12646
+ ch1: tuya.enum(1),
12647
+ ch2: tuya.enum(2),
12648
+ ch3: tuya.enum(3),
12649
+ ch1_2: tuya.enum(4),
12650
+ ch2_3: tuya.enum(5),
12651
+ ch1_3: tuya.enum(6),
12652
+ }),
12653
+ ],
12654
+ [
12655
+ 115,
12656
+ 'auto_off',
12657
+ tuya.valueConverterBasic.lookup({
12658
+ off: tuya.enum(0),
12659
+ all: tuya.enum(1),
12660
+ ch1: tuya.enum(1),
12661
+ ch2: tuya.enum(2),
12662
+ ch3: tuya.enum(3),
12663
+ ch1_2: tuya.enum(4),
12664
+ ch2_3: tuya.enum(5),
12665
+ ch1_3: tuya.enum(6),
12666
+ }),
12667
+ ],
12668
+ [108, 'trigger_switch', tuya.valueConverterBasic.lookup({ ch1: tuya.enum(0), ch2: tuya.enum(1), ch3: tuya.enum(2) })],
12669
+ ],
12670
+ },
12671
+ },
12672
+ {
12673
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE200_wqashyqo']),
12674
+ model: 'ZG-303Z',
12675
+ vendor: 'HOBEIAN',
12676
+ description: 'Soil moisture sensor',
12677
+ fromZigbee: [tuya.fz.datapoints],
12678
+ toZigbee: [tuya.tz.datapoints],
12679
+ configure: tuya.configureMagicPacket,
12680
+ exposes: [
12681
+ e.enum('water_warning', ea.STATE, ['none', 'alarm']).withDescription('Water shortage warning'),
12682
+ e.temperature(),
12683
+ e.humidity(),
12684
+ e.soil_moisture(),
12685
+ tuya.exposes.temperatureUnit(),
12686
+ tuya.exposes.temperatureCalibration(),
12687
+ tuya.exposes.humidityCalibration(),
12688
+ tuya.exposes.soilCalibration(),
12689
+ tuya.exposes.temperatureSampling(),
12690
+ tuya.exposes.soilSampling(),
12691
+ tuya.exposes.soilWarning(),
12692
+ e.battery(),
12693
+ ],
12694
+ meta: {
12695
+ tuyaDatapoints: [
12696
+ [1, 'water_warning', tuya.valueConverterBasic.lookup({ none: tuya.enum(0), alarm: tuya.enum(1) })],
12697
+ [101, 'temperature', tuya.valueConverter.divideBy10],
12698
+ [109, 'humidity', tuya.valueConverter.raw],
12699
+ [107, 'soil_moisture', tuya.valueConverter.raw],
12700
+ [108, 'battery', tuya.valueConverter.raw],
12701
+ [106, 'temperature_unit', tuya.valueConverter.temperatureUnit],
12702
+ [104, 'temperature_calibration', tuya.valueConverter.divideBy10],
12703
+ [105, 'humidity_calibration', tuya.valueConverter.raw],
12704
+ [102, 'soil_calibration', tuya.valueConverter.raw],
12705
+ [111, 'temperature_sampling', tuya.valueConverter.raw],
12706
+ [112, 'soil_sampling', tuya.valueConverter.raw],
12707
+ [110, 'soil_warning', tuya.valueConverter.raw],
12708
+ ],
12709
+ },
12710
+ },
12592
12711
  {
12593
12712
  fingerprint: tuya.fingerprint('TS0601', ['_TZE204_fhvdgeuh', '_TZE200_abatw3kj']),
12594
12713
  model: 'TS0601_din_4',
@@ -12997,9 +13116,45 @@ const definitions = [
12997
13116
  ],
12998
13117
  meta: {
12999
13118
  tuyaDatapoints: [
13000
- [2, null, tuya.valueConverter.thermostatGtz10SystemModeAndPreset(null)],
13001
- [2, 'preset', tuya.valueConverter.thermostatGtz10SystemModeAndPreset('preset')],
13002
- [2, 'system_mode', tuya.valueConverter.thermostatGtz10SystemModeAndPreset('system_mode')],
13119
+ [
13120
+ 2,
13121
+ null,
13122
+ tuya.valueConverter.thermostatSystemModeAndPresetMap({
13123
+ fromMap: {
13124
+ 0: { device_mode: 'manual', system_mode: 'heat', preset: 'manual' },
13125
+ 1: { device_mode: 'auto', system_mode: 'auto', preset: 'auto' },
13126
+ 2: { device_mode: 'holiday', system_mode: 'heat', preset: 'holiday' },
13127
+ 3: { device_mode: 'comfort', system_mode: 'heat', preset: 'comfort' },
13128
+ 4: { device_mode: 'eco', system_mode: 'heat', preset: 'eco' },
13129
+ 5: { device_mode: 'off', system_mode: 'off', preset: 'off' },
13130
+ },
13131
+ }),
13132
+ ],
13133
+ [
13134
+ 2,
13135
+ 'preset',
13136
+ tuya.valueConverter.thermostatSystemModeAndPresetMap({
13137
+ toMap: {
13138
+ manual: new tuya.Enum(0),
13139
+ auto: new tuya.Enum(1),
13140
+ holiday: new tuya.Enum(2),
13141
+ comfort: new tuya.Enum(3),
13142
+ eco: new tuya.Enum(4),
13143
+ off: new tuya.Enum(5),
13144
+ },
13145
+ }),
13146
+ ],
13147
+ [
13148
+ 2,
13149
+ 'system_mode',
13150
+ tuya.valueConverter.thermostatSystemModeAndPresetMap({
13151
+ toMap: {
13152
+ heat: new tuya.Enum(0),
13153
+ auto: new tuya.Enum(1),
13154
+ off: new tuya.Enum(5),
13155
+ },
13156
+ }),
13157
+ ],
13003
13158
  [4, 'current_heating_setpoint', tuya.valueConverter.divideBy10],
13004
13159
  [5, 'local_temperature', tuya.valueConverter.divideBy10],
13005
13160
  [6, 'battery', tuya.valueConverter.raw],
@@ -13899,6 +14054,46 @@ const definitions = [
13899
14054
  ],
13900
14055
  },
13901
14056
  },
14057
+ {
14058
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE284_a14rjslz']),
14059
+ model: 'ATMS10013Z3',
14060
+ vendor: 'Ourtop',
14061
+ description: 'Zigbee 3 Phase Meter',
14062
+ fromZigbee: [tuya.fz.datapoints],
14063
+ toZigbee: [tuya.tz.datapoints],
14064
+ configure: tuya.configureMagicPacket,
14065
+ whiteLabel: [{ vendor: 'Ourtop', model: 'ATMS100133Z' }],
14066
+ exposes: [
14067
+ e.energy(),
14068
+ tuya.exposes.voltageWithPhase('a'),
14069
+ tuya.exposes.voltageWithPhase('b'),
14070
+ tuya.exposes.voltageWithPhase('c'),
14071
+ tuya.exposes.powerWithPhase('a'),
14072
+ tuya.exposes.powerWithPhase('b'),
14073
+ tuya.exposes.powerWithPhase('c'),
14074
+ tuya.exposes.currentWithPhase('a'),
14075
+ tuya.exposes.currentWithPhase('b'),
14076
+ tuya.exposes.currentWithPhase('c'),
14077
+ e.produced_energy(),
14078
+ e.numeric('total_energy', ea.STATE).withUnit('kWh').withDescription('Total consumed and produced energy'),
14079
+ e.power(),
14080
+ e.power_reactive(),
14081
+ e.power_factor().withUnit('%'),
14082
+ ],
14083
+ meta: {
14084
+ tuyaDatapoints: [
14085
+ [1, 'energy', tuya.valueConverter.divideBy100], // "Forward Active Energy", 7685 -> 76.85kW
14086
+ [6, null, tuya.valueConverter.phaseVariant2WithPhase('a')], // "Phase A", CJMAAEMAAAI=
14087
+ [7, null, tuya.valueConverter.phaseVariant2WithPhase('b')], // "Phase B"
14088
+ [8, null, tuya.valueConverter.phaseVariant2WithPhase('c')], // "Phase C"
14089
+ [23, 'produced_energy', tuya.valueConverter.divideBy100], // "Reverse Energy", 0 W*h -> 0.0 kW*h
14090
+ [24, 'total_energy', tuya.valueConverter.divideBy100], // total energy produced + consumed , 7692 W*h -> 76.92kW*h
14091
+ [29, 'power', tuya.valueConverter.power], // "Total Active Power", 1740 W
14092
+ [30, 'power_reactive', tuya.valueConverter.power], // "Total Reactive Power", 985 Var
14093
+ [50, 'power_factor', tuya.valueConverter.raw], // "Overall Power Factor" 88 -> 88 %
14094
+ ],
14095
+ },
14096
+ },
13902
14097
  ];
13903
14098
  exports.default = definitions;
13904
14099
  module.exports = definitions;