zigbee-herdsman-converters 21.2.1 → 21.4.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 (78) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/converters/toZigbee.d.ts +0 -9
  3. package/converters/toZigbee.d.ts.map +1 -1
  4. package/converters/toZigbee.js +0 -16
  5. package/converters/toZigbee.js.map +1 -1
  6. package/devices/amina.js +8 -8
  7. package/devices/amina.js.map +1 -1
  8. package/devices/custom_devices_diy.d.ts.map +1 -1
  9. package/devices/custom_devices_diy.js +30 -19
  10. package/devices/custom_devices_diy.js.map +1 -1
  11. package/devices/danfoss.d.ts.map +1 -1
  12. package/devices/danfoss.js +2 -1
  13. package/devices/danfoss.js.map +1 -1
  14. package/devices/elko.d.ts.map +1 -1
  15. package/devices/elko.js +14 -8
  16. package/devices/elko.js.map +1 -1
  17. package/devices/heiman.d.ts.map +1 -1
  18. package/devices/heiman.js +1 -0
  19. package/devices/heiman.js.map +1 -1
  20. package/devices/ikea.js +3 -3
  21. package/devices/ikea.js.map +1 -1
  22. package/devices/index.d.ts.map +1 -1
  23. package/devices/index.js +2 -0
  24. package/devices/index.js.map +1 -1
  25. package/devices/innr.d.ts.map +1 -1
  26. package/devices/innr.js +7 -0
  27. package/devices/innr.js.map +1 -1
  28. package/devices/inovelli.d.ts.map +1 -1
  29. package/devices/inovelli.js +162 -293
  30. package/devices/inovelli.js.map +1 -1
  31. package/devices/mazda.d.ts +4 -0
  32. package/devices/mazda.d.ts.map +1 -0
  33. package/devices/mazda.js +142 -0
  34. package/devices/mazda.js.map +1 -0
  35. package/devices/miboxer.d.ts.map +1 -1
  36. package/devices/miboxer.js +2 -1
  37. package/devices/miboxer.js.map +1 -1
  38. package/devices/moes.d.ts.map +1 -1
  39. package/devices/moes.js +5 -1
  40. package/devices/moes.js.map +1 -1
  41. package/devices/neo.js +1 -1
  42. package/devices/neo.js.map +1 -1
  43. package/devices/rademacher.d.ts.map +1 -1
  44. package/devices/rademacher.js +7 -0
  45. package/devices/rademacher.js.map +1 -1
  46. package/devices/saswell.d.ts.map +1 -1
  47. package/devices/saswell.js +2 -0
  48. package/devices/saswell.js.map +1 -1
  49. package/devices/schneider_electric.d.ts.map +1 -1
  50. package/devices/schneider_electric.js +89 -0
  51. package/devices/schneider_electric.js.map +1 -1
  52. package/devices/smlight.d.ts.map +1 -1
  53. package/devices/smlight.js +9 -10
  54. package/devices/smlight.js.map +1 -1
  55. package/devices/sonoff.d.ts.map +1 -1
  56. package/devices/sonoff.js +11 -3
  57. package/devices/sonoff.js.map +1 -1
  58. package/devices/tech.d.ts.map +1 -1
  59. package/devices/tech.js +4 -1
  60. package/devices/tech.js.map +1 -1
  61. package/devices/third_reality.d.ts.map +1 -1
  62. package/devices/third_reality.js +7 -3
  63. package/devices/third_reality.js.map +1 -1
  64. package/devices/tuya.d.ts.map +1 -1
  65. package/devices/tuya.js +310 -20
  66. package/devices/tuya.js.map +1 -1
  67. package/lib/lumi.d.ts.map +1 -1
  68. package/lib/lumi.js +4 -0
  69. package/lib/lumi.js.map +1 -1
  70. package/lib/modernExtend.d.ts +18 -0
  71. package/lib/modernExtend.d.ts.map +1 -1
  72. package/lib/modernExtend.js +42 -0
  73. package/lib/modernExtend.js.map +1 -1
  74. package/lib/ota.js +1 -1
  75. package/lib/ota.js.map +1 -1
  76. package/lib/tuya.js +1 -1
  77. package/lib/tuya.js.map +1 -1
  78. package/package.json +5 -5
package/devices/tuya.js CHANGED
@@ -51,7 +51,7 @@ const utils = __importStar(require("../lib/utils"));
51
51
  const utils_1 = require("../lib/utils");
52
52
  const zosung = __importStar(require("../lib/zosung"));
53
53
  const NS = 'zhc:tuya';
54
- const { tuyaLight, tuyaBase } = tuya.modernExtend;
54
+ const { tuyaLight, tuyaBase, tuyaMagicPacket, dpBinary, dpNumeric, dpEnumLookup } = tuya.modernExtend;
55
55
  const e = exposes.presets;
56
56
  const ea = exposes.access;
57
57
  const fzZosung = zosung.fzZosung;
@@ -1540,6 +1540,13 @@ const definitions = [
1540
1540
  },
1541
1541
  whiteLabel: [tuya.whitelabel('Zemismart', 'ZM-H7', 'Hand wave wall smart switch', ['_TZ3000_jcqs2mrv'])],
1542
1542
  },
1543
+ {
1544
+ zigbeeModel: ['TS0505'],
1545
+ model: 'TS0505',
1546
+ vendor: 'Tuya',
1547
+ description: ' GU10 zbeacon Zigbee LED bulb',
1548
+ extend: [(0, modernExtend_1.light)({ colorTemp: { range: [153, 500] }, color: { modes: ['xy', 'hs'] } })],
1549
+ },
1543
1550
  {
1544
1551
  zigbeeModel: ['TS0505B'],
1545
1552
  model: 'TS0505B_1',
@@ -1587,6 +1594,7 @@ const definitions = [
1587
1594
  tuya.whitelabel('Moes', 'ZB-LZD10-RCW', '10W RGB+CCT Smart Downlight', ['_TZ3210_s9lumfhn', '_TZ3210_jjqdqxfq']),
1588
1595
  tuya.whitelabel('Moes', 'ZB-TDC6-RCW-E14', 'RGB+CCT 5W E14 LED bulb', ['_TZ3210_ifga63rg']),
1589
1596
  tuya.whitelabel('MiBoxer', 'FUT106ZR', 'GU10 bulb', ['_TZB210_rwy5hexp', '_TZB210_lnnkh3f9']),
1597
+ tuya.whitelabel('MiBoxer', 'E3-ZR', '3 in 1 LED Controller', ['_TZB210_wy1pyu1q']),
1590
1598
  tuya.whitelabel('Tuya', 'TS0505B_1_1', 'Zigbee 3.0 18W led light bulb E27 RGBCW', [
1591
1599
  '_TZ3210_jd3z4yig',
1592
1600
  '_TZ3210_r5afgmkl',
@@ -1876,6 +1884,7 @@ const definitions = [
1876
1884
  { modelID: 'TS0207', manufacturerName: '_TZ3000_5k5vh43t' },
1877
1885
  { modelID: 'TS0207', manufacturerName: '_TZ3000_kxlmv9ag' },
1878
1886
  { modelID: 'TS0207', manufacturerName: '_TZ3000_wmlc9p9z' },
1887
+ { modelID: 'TS0207', manufacturerName: '_TZ3000_shopg9ss' },
1879
1888
  ],
1880
1889
  model: 'TS0207_repeater',
1881
1890
  vendor: 'Tuya',
@@ -2080,7 +2089,7 @@ const definitions = [
2080
2089
  },
2081
2090
  },
2082
2091
  {
2083
- fingerprint: tuya.fingerprint('TS0601', ['_TZE284_aao3yzhs']),
2092
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE284_aao3yzhs', '_TZE284_nhgdf6qr', '_TZE284_ap9owrsa']),
2084
2093
  model: 'TS0601_soil_3',
2085
2094
  vendor: 'Tuya',
2086
2095
  description: 'Soil sensor',
@@ -2094,9 +2103,10 @@ const definitions = [
2094
2103
  [5, 'temperature', tuya.valueConverter.divideBy10],
2095
2104
  [9, 'temperature_unit', tuya.valueConverter.temperatureUnit],
2096
2105
  [14, 'battery_state', tuya.valueConverter.batteryState],
2097
- [15, 'battery', tuya.valueConverter.raw],
2106
+ [15, 'battery', tuya.valueConverterBasic.scale(6, 60, 0, 100)], //device reports back false scaling
2098
2107
  ],
2099
2108
  },
2109
+ whiteLabel: [tuya.whitelabel('GIEX', 'GX04', 'Soil Moisture Sensor', ['_TZE284_nhgdf6qr'])],
2100
2110
  },
2101
2111
  {
2102
2112
  fingerprint: tuya.fingerprint('TS0601', [
@@ -2382,6 +2392,10 @@ const definitions = [
2382
2392
  modelID: 'TS0601',
2383
2393
  manufacturerName: '_TZE204_5cuocqty',
2384
2394
  },
2395
+ {
2396
+ modelID: 'TS0601',
2397
+ manufacturerName: '_TZE204_nqqylykc',
2398
+ },
2385
2399
  ],
2386
2400
  model: 'ZDMS16-1',
2387
2401
  vendor: 'Avatto',
@@ -2980,7 +2994,7 @@ const definitions = [
2980
2994
  description: 'Light controller',
2981
2995
  extend: [tuya.modernExtend.tuyaLight({ colorTemp: { range: [153, 500] } })],
2982
2996
  whiteLabel: [
2983
- tuya.whitelabel('Lidl', 'HG06492B', 'Livarno Lux E14 candle CCT', ['_TZ3000_oborybow']),
2997
+ tuya.whitelabel('Lidl', 'HG06492B/HG08130B', 'Livarno Home E14 candle CCT', ['_TZ3000_oborybow']),
2984
2998
  tuya.whitelabel('Lidl', 'HG06492A/HG08130A', 'Livarno Lux GU10 spot CCT', ['_TZ3000_el5kt5im']),
2985
2999
  tuya.whitelabel('Lidl', 'HG06492C/HG08130C/HG09154C', 'Livarno Lux E27 bulb CCT', ['_TZ3000_49qchf10']),
2986
3000
  tuya.whitelabel('Lidl', '14147206L', 'Livarno Lux ceiling light', ['_TZ3000_rylaozuc', '_TZ3000_5fkufhn1']),
@@ -3044,7 +3058,7 @@ const definitions = [
3044
3058
  tuya.whitelabel('Lidl', '14148906L', 'Livarno Lux mood light RGB+CCT', ['_TZ3000_9cpuaca6']),
3045
3059
  tuya.whitelabel('Lidl', '14149505L/14149506L_1', 'Livarno Lux light bar RGB+CCT (black/white)', ['_TZ3000_gek6snaj']),
3046
3060
  tuya.whitelabel('Mycket', 'MS-SP-LE27WRGB', 'E27 RGBW bulb', ['_TZ3000_evag0pvn']),
3047
- tuya.whitelabel('Lidl', 'HG06104A', 'Livarno Lux smart LED light strip 2.5m', ['_TZ3000_riwp3k79', '_TZ3000_riwp3k79']),
3061
+ tuya.whitelabel('Lidl', 'HG06104A', 'Livarno Home RGB+CCT LED light strip 2m', ['_TZ3000_riwp3k79', '_TZ3000_riwp3k79']),
3048
3062
  ],
3049
3063
  configure: async (device, coordinatorEndpoint) => {
3050
3064
  device.getEndpoint(1).saveClusterAttributeKeyValue('lightingColorCtrl', { colorCapabilities: 29 });
@@ -3066,6 +3080,7 @@ const definitions = [
3066
3080
  tuya.whitelabel('Tuya', 'TS0201_1', 'Zigbee 3.0 temperature humidity sensor with display', ['_TZ3210_alxkwn0h']),
3067
3081
  tuya.whitelabel('Tuya', 'ZTH01/ZTH02', 'Temperature and humidity sensor', ['_TZ3000_0s1izerx']),
3068
3082
  tuya.whitelabel('SEDEA', 'eTH730', 'Temperature and humidity sensor', ['_TZ3000_lqmvrwa2']),
3083
+ tuya.whitelabel('Danfoss', '014G2480', 'Temperature and humidity sensor', ['_TZ3000_mxzo5rhf']),
3069
3084
  ],
3070
3085
  },
3071
3086
  {
@@ -5035,11 +5050,11 @@ const definitions = [
5035
5050
  },
5036
5051
  },
5037
5052
  {
5038
- fingerprint: tuya.fingerprint('TS0601', ['_TZE204_9mjy74mp', '_TZE200_rtrmfadk']),
5053
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE204_9mjy74mp', '_TZE200_rtrmfadk', '_TZE200_9mjy74mp']),
5039
5054
  model: 'TRV602',
5040
5055
  vendor: 'Tuya',
5041
5056
  description: 'Thermostatic radiator valve.',
5042
- whiteLabel: [tuya.whitelabel('Moes', 'TRV801', 'Thermostatic radiator valve', ['_TZE204_9mjy74mp'])],
5057
+ whiteLabel: [tuya.whitelabel('Moes', 'TRV801', 'Thermostatic radiator valve', ['_TZE204_9mjy74mp', '_TZE200_9mjy74mp'])],
5043
5058
  onEvent: tuya.onEventSetLocalTime,
5044
5059
  fromZigbee: [tuya.fz.datapoints],
5045
5060
  toZigbee: [tuya.tz.datapoints],
@@ -5113,10 +5128,11 @@ const definitions = [
5113
5128
  },
5114
5129
  },
5115
5130
  {
5116
- fingerprint: [{ modelID: 'TS0601', manufacturerName: '_TZE204_ltwbm23f' }],
5131
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE204_qyr2m29i', '_TZE204_ltwbm23f']),
5117
5132
  model: 'TRV602Z',
5118
5133
  vendor: 'Tuya',
5119
5134
  description: 'Thermostatic radiator valve.',
5135
+ whiteLabel: [tuya.whitelabel('Moes', 'TRV801Z', 'Thermostatic radiator valve', ['_TZE204_qyr2m29i'])],
5120
5136
  extend: [tuyaBase({ dp: true })],
5121
5137
  exposes: [
5122
5138
  e.battery(),
@@ -5236,6 +5252,100 @@ const definitions = [
5236
5252
  ],
5237
5253
  },
5238
5254
  },
5255
+ {
5256
+ fingerprint: [{ modelID: 'TS0601', manufacturerName: '_TZE284_ymldrmzx' }],
5257
+ model: 'TRV603-WZ',
5258
+ vendor: 'Tuya',
5259
+ description: 'Thermostatic radiator valve.',
5260
+ fromZigbee: [tuya.fz.datapoints],
5261
+ toZigbee: [tuya.tz.datapoints],
5262
+ onEvent: tuya.onEventSetLocalTime,
5263
+ configure: tuya.configureMagicPacket,
5264
+ exposes: [
5265
+ e.battery(),
5266
+ e.child_lock(),
5267
+ e.window_detection(),
5268
+ e.binary('window', ea.STATE, 'OPEN', 'CLOSE').withDescription('Window status closed or open '),
5269
+ e.enum('mode', ea.STATE_SET, ['auto', 'manual']).withDescription('Mode'),
5270
+ e.binary('holiday_mode', ea.STATE_SET, 'ON', 'OFF'),
5271
+ e.binary('heating_stop', ea.STATE_SET, 'ON', 'OFF'),
5272
+ e
5273
+ .climate()
5274
+ .withLocalTemperature(ea.STATE)
5275
+ .withSetpoint('current_heating_setpoint', 5, 35, 0.5, ea.STATE_SET)
5276
+ .withLocalTemperatureCalibration(-30, 30, 0.1, ea.STATE_SET),
5277
+ e.comfort_temperature().withValueMin(5).withValueMax(30).withDescription('Comfort mode temperature'),
5278
+ e.eco_temperature().withValueMin(5).withValueMax(30).withDescription('Eco mode temperature'),
5279
+ e.enum('screen_orientation', ea.STATE_SET, ['up', 'right', 'down', 'left']).withDescription('Screen orientation'),
5280
+ tuya.exposes.frostProtection(),
5281
+ e.binary('boost_heating', ea.STATE_SET, 'ON', 'OFF'),
5282
+ e.numeric('boost_time', ea.STATE_SET).withUnit('min').withDescription('Countdown in minutes').withValueMin(0).withValueMax(1000),
5283
+ e.numeric('fault_code', ea.STATE).withDescription('Raw fault code'),
5284
+ ],
5285
+ meta: {
5286
+ tuyaDatapoints: [
5287
+ [
5288
+ 2,
5289
+ 'mode',
5290
+ tuya.valueConverterBasic.lookup({
5291
+ auto: tuya.enum(0),
5292
+ manual: tuya.enum(1),
5293
+ }),
5294
+ ],
5295
+ [4, 'current_heating_setpoint', tuya.valueConverter.divideBy10],
5296
+ [5, 'local_temperature', tuya.valueConverter.divideBy10],
5297
+ [6, 'battery', tuya.valueConverter.raw],
5298
+ [
5299
+ 7,
5300
+ 'child_lock',
5301
+ tuya.valueConverterBasic.lookup({
5302
+ LOCK: true,
5303
+ UNLOCK: false,
5304
+ }),
5305
+ ],
5306
+ [14, 'window_detection', tuya.valueConverter.onOff],
5307
+ [
5308
+ 15,
5309
+ 'window',
5310
+ tuya.valueConverterBasic.lookup({
5311
+ CLOSE: tuya.enum(0),
5312
+ OPEN: tuya.enum(1),
5313
+ }),
5314
+ ],
5315
+ [21, 'holiday_temperature', tuya.valueConverter.divideBy10],
5316
+ [36, 'frost_protection', tuya.valueConverter.onOff],
5317
+ [39, 'switch_scale', tuya.valueConverter.raw],
5318
+ [47, 'local_temperature_calibration', tuya.valueConverter.localTempCalibration1],
5319
+ [101, 'boost_heating', tuya.valueConverter.onOff],
5320
+ [102, 'boost_time', tuya.valueConverter.countdown],
5321
+ [103, 'schedule_monday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(1)],
5322
+ [104, 'schedule_tuesday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(2)],
5323
+ [105, 'schedule_wednesday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(3)],
5324
+ [106, 'schedule_thursday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(4)],
5325
+ [107, 'schedule_friday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(5)],
5326
+ [108, 'schedule_saturday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(6)],
5327
+ [109, 'schedule_sunday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(7)],
5328
+ [110, 'holiday_mode', tuya.valueConverter.onOff],
5329
+ [
5330
+ 111,
5331
+ 'screen_orientation',
5332
+ tuya.valueConverterBasic.lookup({
5333
+ up: tuya.enum(0),
5334
+ right: tuya.enum(1),
5335
+ down: tuya.enum(2),
5336
+ left: tuya.enum(3),
5337
+ }),
5338
+ ],
5339
+ [112, 'antifrost_temperature', tuya.valueConverter.divideBy10],
5340
+ [113, 'heating_stop', tuya.valueConverter.onOff],
5341
+ [114, 'local_temperature_calibration', tuya.valueConverter.localTempCalibration1],
5342
+ [115, 'programming_mode', tuya.valueConverter.raw],
5343
+ [116, 'eco_temperature', tuya.valueConverter.divideBy10],
5344
+ [117, 'comfort_temperature', tuya.valueConverter.divideBy10],
5345
+ [118, 'fault_code', tuya.valueConverter.raw],
5346
+ ],
5347
+ },
5348
+ },
5239
5349
  {
5240
5350
  zigbeeModel: ['TS0121'],
5241
5351
  model: 'TS0121_plug',
@@ -6836,7 +6946,7 @@ const definitions = [
6836
6946
  return { auto: tuya.enum(0), manual: tuya.enum(1), temporary_manual: tuya.enum(2) };
6837
6947
  }
6838
6948
  else {
6839
- return { auto: tuya.enum(0), manual: tuya.enum(1), temporary_manual: tuya.enum(2) };
6949
+ return { auto: tuya.enum(1), manual: tuya.enum(0), temporary_manual: tuya.enum(2) };
6840
6950
  }
6841
6951
  }),
6842
6952
  ],
@@ -6964,7 +7074,7 @@ const definitions = [
6964
7074
  whiteLabel: [tuya.whitelabel('Tuya', 'QT-07S', 'Soil sensor', ['_TZE204_myd45weu'])],
6965
7075
  },
6966
7076
  {
6967
- fingerprint: tuya.fingerprint('TS0222', ['_TZ3000_8uxxzz4b', '_TZ3000_hy6ncvmw', '_TZ3000_9kbbfeho']),
7077
+ fingerprint: tuya.fingerprint('TS0222', ['_TZ3000_8uxxzz4b', '_TZ3000_hy6ncvmw', '_TZ3000_9kbbfeho', '_TZ3000_l6rsaipj']),
6968
7078
  model: 'TS0222_light',
6969
7079
  vendor: 'Tuya',
6970
7080
  description: 'Light sensor',
@@ -7148,17 +7258,61 @@ const definitions = [
7148
7258
  model: 'PJ-ZGD01',
7149
7259
  vendor: 'Tuya',
7150
7260
  description: 'Garage door opener',
7151
- fromZigbee: [legacy.fromZigbee.matsee_garage_door_opener, fromZigbee_1.default.ignore_basic_report],
7152
- toZigbee: [legacy.toZigbee.matsee_garage_door_opener, legacy.toZigbee.tuya_data_point_test],
7153
7261
  whiteLabel: [{ vendor: 'MatSee Plus', model: 'PJ-ZGD01' }],
7154
- configure: async (device, coordinatorEndpoint) => {
7155
- await tuya.configureMagicPacket(device, coordinatorEndpoint);
7156
- const endpoint = device.getEndpoint(1);
7157
- await reporting.bind(endpoint, coordinatorEndpoint, ['genBasic']);
7158
- },
7159
- exposes: [
7160
- e.binary('trigger', ea.STATE_SET, true, false).withDescription('Trigger the door movement'),
7161
- e.binary('garage_door_contact', ea.STATE, true, false),
7262
+ extend: [
7263
+ tuyaMagicPacket(),
7264
+ dpBinary({
7265
+ name: 'trigger',
7266
+ dp: 1,
7267
+ type: tuya.dataTypes.bool,
7268
+ valueOn: [true, true],
7269
+ valueOff: [false, false],
7270
+ description: 'Request door to close (= false) or open (= true), will not pulse output if contact shows door is already in requested state',
7271
+ }),
7272
+ dpNumeric({
7273
+ name: 'countdown',
7274
+ dp: 2,
7275
+ type: tuya.dataTypes.number,
7276
+ description: 'Countdown to trigger door movement after a certain time, will pulse output in all cases',
7277
+ unit: 's',
7278
+ valueMin: 0,
7279
+ valueMax: 43200,
7280
+ }),
7281
+ dpBinary({
7282
+ name: 'garage_door_contact',
7283
+ dp: 3,
7284
+ type: tuya.dataTypes.bool,
7285
+ valueOn: [true, false],
7286
+ valueOff: [false, true],
7287
+ description: 'Indicates if the garage door contact is closed (= true) or open (= false)',
7288
+ readOnly: true,
7289
+ }),
7290
+ dpNumeric({
7291
+ name: 'run_time',
7292
+ dp: 4,
7293
+ type: tuya.dataTypes.number,
7294
+ description: 'Configure the time to wait for the door contact status to change before triggering a run time alarm',
7295
+ unit: 's',
7296
+ valueMin: 0,
7297
+ valueMax: 120,
7298
+ }),
7299
+ dpNumeric({
7300
+ name: 'open_alarm_time',
7301
+ dp: 5,
7302
+ type: tuya.dataTypes.number,
7303
+ description: 'Configure the amount of time the door may be open before an open time alarm is triggered',
7304
+ unit: 's',
7305
+ valueMin: 0,
7306
+ valueMax: 86400,
7307
+ }),
7308
+ dpEnumLookup({
7309
+ name: 'status',
7310
+ dp: 12,
7311
+ type: tuya.dataTypes.enum,
7312
+ description: 'Indicates run time alarm, door open alarm or noraml status, will not retunr to normal until door is triggered again',
7313
+ lookup: { 'Open Time Alarm': 0, 'Run Time Alarm': 1, Normal: 2 },
7314
+ readOnly: true,
7315
+ }),
7162
7316
  ],
7163
7317
  },
7164
7318
  {
@@ -13011,6 +13165,142 @@ const definitions = [
13011
13165
  ],
13012
13166
  },
13013
13167
  },
13168
+ {
13169
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE284_8zizsafo']),
13170
+ model: 'GX03',
13171
+ vendor: 'GIEX',
13172
+ description: 'GIEX 2 zone watering timer',
13173
+ fromZigbee: [tuya.fz.datapoints],
13174
+ toZigbee: [tuya.tz.datapoints],
13175
+ configure: tuya.configureMagicPacket,
13176
+ exposes: [
13177
+ e.binary('valve_1', ea.STATE_SET, 'ON', 'OFF').withDescription('Switch state'),
13178
+ e
13179
+ .numeric('countdown_1', ea.STATE_SET)
13180
+ .withValueMin(1)
13181
+ .withValueMax(1440)
13182
+ .withValueStep(1)
13183
+ .withUnit('min')
13184
+ .withDescription('Countdown timer for valve operation'),
13185
+ e.binary('valve_2', ea.STATE_SET, 'ON', 'OFF').withDescription('Switch state'),
13186
+ e
13187
+ .numeric('countdown_2', ea.STATE_SET)
13188
+ .withValueMin(1)
13189
+ .withValueMax(1440)
13190
+ .withValueStep(1)
13191
+ .withUnit('min')
13192
+ .withDescription('Countdown timer for valve operation'),
13193
+ e.battery(),
13194
+ ],
13195
+ meta: {
13196
+ tuyaDatapoints: [
13197
+ [1, 'valve_1', tuya.valueConverter.onOff],
13198
+ [59, 'battery', tuya.valueConverter.raw],
13199
+ [104, 'valve_1', tuya.valueConverterBasic.lookup({ OFF: tuya.enum(2), ON: tuya.enum(0) })],
13200
+ [2, 'valve_2', tuya.valueConverter.onOff],
13201
+ [105, 'valve_1', tuya.valueConverterBasic.lookup({ OFF: tuya.enum(2), ON: tuya.enum(0) })],
13202
+ [13, 'countdown_1', tuya.valueConverter.raw],
13203
+ [14, 'countdown_2', tuya.valueConverter.raw],
13204
+ ],
13205
+ },
13206
+ },
13207
+ {
13208
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE204_eaulras5']),
13209
+ model: 'PJ3201A',
13210
+ vendor: 'Dongguan Pinjia Technology Co.,LTD.',
13211
+ description: 'Human Presence Sensor',
13212
+ fromZigbee: [tuya.fz.datapoints],
13213
+ toZigbee: [tuya.tz.datapoints],
13214
+ configure: tuya.configureMagicPacket,
13215
+ exposes: [
13216
+ e.presence().withDescription('Indicates whether the device detected presence. Will be true also when movement (occupancy) is detected.'),
13217
+ e
13218
+ .occupancy()
13219
+ .withDescription('Indicates whether the device detected movement. Will be true when movement. Can remain true even if the target left the detection range. In this case presence will be reset to false reliably.'),
13220
+ e.numeric('closest_target_distance', ea.STATE).withDescription('the target distance away from the sensor').withUnit('m'),
13221
+ e
13222
+ .numeric('movement_timeout', ea.STATE_SET)
13223
+ .withValueMin(0)
13224
+ .withValueMax(43200)
13225
+ .withValueStep(1)
13226
+ .withDescription('Timeout until the movement (occupancy) is reset when no further movement is detected. (Occupancy -> None)')
13227
+ .withUnit('s'),
13228
+ e
13229
+ .numeric('idle_timeout', ea.STATE_SET)
13230
+ .withValueMin(0)
13231
+ .withValueMax(43200)
13232
+ .withValueStep(1)
13233
+ .withDescription('Timeout until the presence is reset when no further presence is detected (Presence -> None)')
13234
+ .withUnit('s'),
13235
+ e.illuminance(),
13236
+ e
13237
+ .numeric('far_movement_sensitivity', ea.STATE_SET)
13238
+ .withValueMin(0)
13239
+ .withValueMax(10)
13240
+ .withValueStep(1)
13241
+ .withDescription('the moving detecting sensitivity 1 meter away'),
13242
+ e
13243
+ .numeric('near_movement_sensitivity', ea.STATE_SET)
13244
+ .withValueMin(0)
13245
+ .withValueMax(10)
13246
+ .withValueStep(1)
13247
+ .withDescription('the moving detecting sensitivity within 1 meter'),
13248
+ e
13249
+ .numeric('near_presence_sensitivity', ea.STATE_SET)
13250
+ .withValueMin(0)
13251
+ .withValueMax(10)
13252
+ .withValueStep(1)
13253
+ .withDescription('the presence detecting sensitivity within 1 meter'),
13254
+ e
13255
+ .numeric('far_presence_sensitivity', ea.STATE_SET)
13256
+ .withValueMin(0)
13257
+ .withValueMax(10)
13258
+ .withValueStep(1)
13259
+ .withDescription('the presence detecting sensitivity 1 meter away'),
13260
+ e
13261
+ .numeric('closest_detection_distance', ea.STATE_SET)
13262
+ .withValueMin(0.1)
13263
+ .withValueMax(7)
13264
+ .withValueStep(0.1)
13265
+ .withDescription('The closest distance that can be detected')
13266
+ .withUnit('m'),
13267
+ e
13268
+ .numeric('largest_movement_detection_distance', ea.STATE_SET)
13269
+ .withValueMin(0.1)
13270
+ .withValueMax(7)
13271
+ .withValueStep(0.1)
13272
+ .withDescription('The farest distance that can be detected (moving)')
13273
+ .withUnit('m'),
13274
+ e
13275
+ .numeric('largest_presence_detection_distance', ea.STATE_SET)
13276
+ .withValueMin(0.1)
13277
+ .withValueMax(7)
13278
+ .withValueStep(0.1)
13279
+ .withDescription('The farest distance that can be detected (present)')
13280
+ .withUnit('m'),
13281
+ e.binary('restore_factory', ea.STATE_SET, 'ON', 'OFF').withDescription('restore_factory'),
13282
+ e.binary('led_indicator', ea.STATE_SET, 'ON', 'OFF').withDescription('turn on or off the led '),
13283
+ ],
13284
+ meta: {
13285
+ tuyaDatapoints: [
13286
+ [104, 'presence', tuya.valueConverter.trueFalse1],
13287
+ [112, 'occupancy', tuya.valueConverter.trueFalseInvert],
13288
+ [9, 'closest_target_distance', tuya.valueConverter.divideBy100],
13289
+ [101, 'movement_timeout', tuya.valueConverter.raw],
13290
+ [102, 'idle_timeout', tuya.valueConverter.raw],
13291
+ [103, 'illuminance', tuya.valueConverter.divideBy10],
13292
+ [105, 'far_movement_sensitivity', tuya.valueConverter.raw],
13293
+ [110, 'near_movement_sensitivity', tuya.valueConverter.raw],
13294
+ [109, 'near_presence_sensitivity', tuya.valueConverter.raw],
13295
+ [111, 'far_presence_sensitivity', tuya.valueConverter.raw],
13296
+ [3, 'closest_detection_distance', tuya.valueConverter.divideBy100],
13297
+ [4, 'largest_movement_detection_distance', tuya.valueConverter.divideBy100],
13298
+ [108, 'largest_presence_detection_distance', tuya.valueConverter.divideBy100],
13299
+ [106, 'restore_factory', tuya.valueConverterBasic.lookup({ ON: false, OFF: true })],
13300
+ [107, 'led_indicator', tuya.valueConverterBasic.lookup({ ON: false, OFF: true })],
13301
+ ],
13302
+ },
13303
+ },
13014
13304
  ];
13015
13305
  exports.default = definitions;
13016
13306
  module.exports = definitions;