zigbee-herdsman-converters 21.3.0 → 21.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/devices/tuya.js CHANGED
@@ -802,6 +802,7 @@ const definitions = [
802
802
  { vendor: 'Tesla Smart', model: 'TSL-SEN-SMOKE' },
803
803
  { vendor: 'Dongguan Daying Electornics Technology', model: 'YG400A' },
804
804
  tuya.whitelabel('Tuya', 'TS0205_smoke_2', 'Smoke sensor', ['_TZ3210_up3pngle']),
805
+ tuya.whitelabel('Nedis', 'ZBDS10WT', 'Smoke sensor', ['_TYZB01_wqcac7lo']),
805
806
  ],
806
807
  // Configure battery % fails
807
808
  // https://github.com/Koenkk/zigbee2mqtt/issues/22421
@@ -1289,7 +1290,7 @@ const definitions = [
1289
1290
  ],
1290
1291
  },
1291
1292
  {
1292
- fingerprint: tuya.fingerprint('TS0601', ['_TZE200_ogkdpgy2', '_TZE200_3ejwxpmu']),
1293
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE200_ogkdpgy2', '_TZE200_3ejwxpmu', '_TZE204_3ejwxpmu']),
1293
1294
  model: 'TS0601_temperature_humidity_co2_sensor',
1294
1295
  vendor: 'Tuya',
1295
1296
  description: 'NDIR co2 sensor',
@@ -1829,12 +1830,14 @@ const definitions = [
1829
1830
  model: 'IH012-RT01',
1830
1831
  vendor: 'Tuya',
1831
1832
  description: 'Motion sensor',
1832
- fromZigbee: [fromZigbee_1.default.ias_occupancy_alarm_1, fromZigbee_1.default.ignore_basic_report, fromZigbee_1.default.ZM35HQ_attr, fromZigbee_1.default.battery],
1833
+ fromZigbee: [fromZigbee_1.default.ignore_basic_report, fromZigbee_1.default.ZM35HQ_attr, fromZigbee_1.default.battery],
1833
1834
  toZigbee: [toZigbee_1.default.ZM35HQ_attr],
1834
- extend: [(0, modernExtend_1.quirkCheckinInterval)(15000)],
1835
+ extend: [
1836
+ (0, modernExtend_1.quirkCheckinInterval)(15000),
1837
+ // Occupancy reporting interval is 60s, so allow for one dropped update plus a small safety margin of 5s
1838
+ (0, modernExtend_1.iasZoneAlarm)({ zoneType: 'occupancy', zoneAttributes: ['alarm_1', 'battery_low'], keepAliveTimeout: 125 }),
1839
+ ],
1835
1840
  exposes: [
1836
- e.occupancy(),
1837
- e.battery_low(),
1838
1841
  e.battery(),
1839
1842
  e.battery_voltage(),
1840
1843
  e.enum('sensitivity', ea.ALL, ['low', 'medium', 'high']).withDescription('PIR sensor sensitivity'),
@@ -1884,6 +1887,7 @@ const definitions = [
1884
1887
  { modelID: 'TS0207', manufacturerName: '_TZ3000_5k5vh43t' },
1885
1888
  { modelID: 'TS0207', manufacturerName: '_TZ3000_kxlmv9ag' },
1886
1889
  { modelID: 'TS0207', manufacturerName: '_TZ3000_wmlc9p9z' },
1890
+ { modelID: 'TS0207', manufacturerName: '_TZ3000_shopg9ss' },
1887
1891
  ],
1888
1892
  model: 'TS0207_repeater',
1889
1893
  vendor: 'Tuya',
@@ -3754,6 +3758,7 @@ const definitions = [
3754
3758
  '_TZ3000_zmy4lslw',
3755
3759
  '_TZ3000_ruxexjfz',
3756
3760
  '_TZ3000_4xfqlgqo',
3761
+ '_TZ3000_hojntt34',
3757
3762
  '_TZ3000_eei0ubpy',
3758
3763
  '_TZ3000_qaa59zqd',
3759
3764
  '_TZ3000_lmlsduws',
@@ -3767,7 +3772,7 @@ const definitions = [
3767
3772
  { vendor: 'OXT', model: 'SWTZ22' },
3768
3773
  { vendor: 'Moes', model: 'ZM-104B-M' },
3769
3774
  tuya.whitelabel('pcblab.io', 'RR620ZB', '2 gang Zigbee switch module', ['_TZ3000_4xfqlgqo']),
3770
- tuya.whitelabel('Nous', 'L13Z', '2 gang switch', ['_TZ3000_ruxexjfz']),
3775
+ tuya.whitelabel('Nous', 'L13Z', '2 gang switch', ['_TZ3000_ruxexjfz', '_TZ3000_hojntt34']),
3771
3776
  tuya.whitelabel('Tuya', 'ZG-2002-RF', 'Three mode Zigbee Switch', ['_TZ3000_lugaswf8']),
3772
3777
  tuya.whitelabel('Mercator Ikuü', 'SSW02', '2 gang switch', ['_TZ3000_fbjdkph9']),
3773
3778
  ],
@@ -4702,8 +4707,13 @@ const definitions = [
4702
4707
  fromZigbee: [tuya.fz.datapoints],
4703
4708
  toZigbee: [tuya.tz.datapoints],
4704
4709
  whiteLabel: [
4705
- tuya.whitelabel('AVATTO', 'ME167', 'Thermostatic radiator valve', ['_TZE200_bvu2wnxz', '_TZE200_6rdj8dzm', '_TZE200_9xfjixap']),
4706
- tuya.whitelabel('AVATTO', 'ME168', 'Thermostatic radiator valve', ['_TZE200_p3dbf6qs', '_TZE200_rxntag7i']),
4710
+ tuya.whitelabel('AVATTO', 'ME167', 'Thermostatic radiator valve', [
4711
+ '_TZE200_p3dbf6qs',
4712
+ '_TZE200_bvu2wnxz',
4713
+ '_TZE200_6rdj8dzm',
4714
+ '_TZE200_9xfjixap',
4715
+ ]),
4716
+ tuya.whitelabel('AVATTO', 'ME168', 'Thermostatic radiator valve', ['_TZE200_rxntag7i']),
4707
4717
  tuya.whitelabel('AVATTO', 'TRV06_1', 'Thermostatic radiator valve', ['_TZE200_hvaxb2tc', '_TZE284_o3x45p96']),
4708
4718
  tuya.whitelabel('EARU', 'TRV06', 'Smart thermostat module', ['_TZE200_yqgbrdyo', '_TZE200_rxq4iti9']),
4709
4719
  tuya.whitelabel('AVATTO', 'AVATTO_TRV06', 'Thermostatic radiator valve', ['_TZE284_c6wv4xyo', '_TZE204_o3x45p96']),
@@ -7073,7 +7083,7 @@ const definitions = [
7073
7083
  whiteLabel: [tuya.whitelabel('Tuya', 'QT-07S', 'Soil sensor', ['_TZE204_myd45weu'])],
7074
7084
  },
7075
7085
  {
7076
- fingerprint: tuya.fingerprint('TS0222', ['_TZ3000_8uxxzz4b', '_TZ3000_hy6ncvmw', '_TZ3000_9kbbfeho']),
7086
+ fingerprint: tuya.fingerprint('TS0222', ['_TZ3000_8uxxzz4b', '_TZ3000_hy6ncvmw', '_TZ3000_9kbbfeho', '_TZ3000_l6rsaipj']),
7077
7087
  model: 'TS0222_light',
7078
7088
  vendor: 'Tuya',
7079
7089
  description: 'Light sensor',
@@ -13200,7 +13210,103 @@ const definitions = [
13200
13210
  [105, 'valve_1', tuya.valueConverterBasic.lookup({ OFF: tuya.enum(2), ON: tuya.enum(0) })],
13201
13211
  [13, 'countdown_1', tuya.valueConverter.raw],
13202
13212
  [14, 'countdown_2', tuya.valueConverter.raw],
13203
- [15, 'battery', tuya.valueConverter.raw],
13213
+ ],
13214
+ },
13215
+ },
13216
+ {
13217
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE204_eaulras5']),
13218
+ model: 'PJ3201A',
13219
+ vendor: 'Dongguan Pinjia Technology Co.,LTD.',
13220
+ description: 'Human Presence Sensor',
13221
+ fromZigbee: [tuya.fz.datapoints],
13222
+ toZigbee: [tuya.tz.datapoints],
13223
+ configure: tuya.configureMagicPacket,
13224
+ exposes: [
13225
+ e.presence().withDescription('Indicates whether the device detected presence. Will be true also when movement (occupancy) is detected.'),
13226
+ e
13227
+ .occupancy()
13228
+ .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.'),
13229
+ e.numeric('closest_target_distance', ea.STATE).withDescription('the target distance away from the sensor').withUnit('m'),
13230
+ e
13231
+ .numeric('movement_timeout', ea.STATE_SET)
13232
+ .withValueMin(0)
13233
+ .withValueMax(43200)
13234
+ .withValueStep(1)
13235
+ .withDescription('Timeout until the movement (occupancy) is reset when no further movement is detected. (Occupancy -> None)')
13236
+ .withUnit('s'),
13237
+ e
13238
+ .numeric('idle_timeout', ea.STATE_SET)
13239
+ .withValueMin(0)
13240
+ .withValueMax(43200)
13241
+ .withValueStep(1)
13242
+ .withDescription('Timeout until the presence is reset when no further presence is detected (Presence -> None)')
13243
+ .withUnit('s'),
13244
+ e.illuminance(),
13245
+ e
13246
+ .numeric('far_movement_sensitivity', ea.STATE_SET)
13247
+ .withValueMin(0)
13248
+ .withValueMax(10)
13249
+ .withValueStep(1)
13250
+ .withDescription('the moving detecting sensitivity 1 meter away'),
13251
+ e
13252
+ .numeric('near_movement_sensitivity', ea.STATE_SET)
13253
+ .withValueMin(0)
13254
+ .withValueMax(10)
13255
+ .withValueStep(1)
13256
+ .withDescription('the moving detecting sensitivity within 1 meter'),
13257
+ e
13258
+ .numeric('near_presence_sensitivity', ea.STATE_SET)
13259
+ .withValueMin(0)
13260
+ .withValueMax(10)
13261
+ .withValueStep(1)
13262
+ .withDescription('the presence detecting sensitivity within 1 meter'),
13263
+ e
13264
+ .numeric('far_presence_sensitivity', ea.STATE_SET)
13265
+ .withValueMin(0)
13266
+ .withValueMax(10)
13267
+ .withValueStep(1)
13268
+ .withDescription('the presence detecting sensitivity 1 meter away'),
13269
+ e
13270
+ .numeric('closest_detection_distance', ea.STATE_SET)
13271
+ .withValueMin(0.1)
13272
+ .withValueMax(7)
13273
+ .withValueStep(0.1)
13274
+ .withDescription('The closest distance that can be detected')
13275
+ .withUnit('m'),
13276
+ e
13277
+ .numeric('largest_movement_detection_distance', ea.STATE_SET)
13278
+ .withValueMin(0.1)
13279
+ .withValueMax(7)
13280
+ .withValueStep(0.1)
13281
+ .withDescription('The farest distance that can be detected (moving)')
13282
+ .withUnit('m'),
13283
+ e
13284
+ .numeric('largest_presence_detection_distance', ea.STATE_SET)
13285
+ .withValueMin(0.1)
13286
+ .withValueMax(7)
13287
+ .withValueStep(0.1)
13288
+ .withDescription('The farest distance that can be detected (present)')
13289
+ .withUnit('m'),
13290
+ e.binary('restore_factory', ea.STATE_SET, 'ON', 'OFF').withDescription('restore_factory'),
13291
+ e.binary('led_indicator', ea.STATE_SET, 'ON', 'OFF').withDescription('turn on or off the led '),
13292
+ ],
13293
+ meta: {
13294
+ tuyaDatapoints: [
13295
+ [104, 'presence', tuya.valueConverter.trueFalse1],
13296
+ [112, 'occupancy', tuya.valueConverter.trueFalseInvert],
13297
+ [9, 'closest_target_distance', tuya.valueConverter.divideBy100],
13298
+ [101, 'movement_timeout', tuya.valueConverter.raw],
13299
+ [102, 'idle_timeout', tuya.valueConverter.raw],
13300
+ [103, 'illuminance', tuya.valueConverter.divideBy10],
13301
+ [105, 'far_movement_sensitivity', tuya.valueConverter.raw],
13302
+ [110, 'near_movement_sensitivity', tuya.valueConverter.raw],
13303
+ [109, 'near_presence_sensitivity', tuya.valueConverter.raw],
13304
+ [111, 'far_presence_sensitivity', tuya.valueConverter.raw],
13305
+ [3, 'closest_detection_distance', tuya.valueConverter.divideBy100],
13306
+ [4, 'largest_movement_detection_distance', tuya.valueConverter.divideBy100],
13307
+ [108, 'largest_presence_detection_distance', tuya.valueConverter.divideBy100],
13308
+ [106, 'restore_factory', tuya.valueConverterBasic.lookup({ ON: false, OFF: true })],
13309
+ [107, 'led_indicator', tuya.valueConverterBasic.lookup({ ON: false, OFF: true })],
13204
13310
  ],
13205
13311
  },
13206
13312
  },