zigbee-herdsman-converters 21.11.0 → 21.13.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 (45) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/converters/fromZigbee.js +5 -5
  3. package/converters/fromZigbee.js.map +1 -1
  4. package/converters/toZigbee.d.ts.map +1 -1
  5. package/converters/toZigbee.js +14 -2
  6. package/converters/toZigbee.js.map +1 -1
  7. package/devices/datek.d.ts.map +1 -1
  8. package/devices/datek.js +13 -1
  9. package/devices/datek.js.map +1 -1
  10. package/devices/dresden_elektronik.js +1 -1
  11. package/devices/dresden_elektronik.js.map +1 -1
  12. package/devices/hzc_electric.d.ts.map +1 -1
  13. package/devices/hzc_electric.js +11 -0
  14. package/devices/hzc_electric.js.map +1 -1
  15. package/devices/index.d.ts.map +1 -1
  16. package/devices/index.js +2 -0
  17. package/devices/index.js.map +1 -1
  18. package/devices/lumi.d.ts.map +1 -1
  19. package/devices/lumi.js +8 -0
  20. package/devices/lumi.js.map +1 -1
  21. package/devices/lutron.d.ts.map +1 -1
  22. package/devices/lutron.js +2 -1
  23. package/devices/lutron.js.map +1 -1
  24. package/devices/moes.js +2 -2
  25. package/devices/moes.js.map +1 -1
  26. package/devices/salus_controls.d.ts.map +1 -1
  27. package/devices/salus_controls.js +41 -2
  28. package/devices/salus_controls.js.map +1 -1
  29. package/devices/sonoff.d.ts.map +1 -1
  30. package/devices/sonoff.js +5 -0
  31. package/devices/sonoff.js.map +1 -1
  32. package/devices/tuya.d.ts.map +1 -1
  33. package/devices/tuya.js +174 -7
  34. package/devices/tuya.js.map +1 -1
  35. package/devices/xal.d.ts.map +1 -1
  36. package/devices/xal.js +9 -2
  37. package/devices/xal.js.map +1 -1
  38. package/devices/yokis.d.ts +4 -0
  39. package/devices/yokis.d.ts.map +1 -0
  40. package/devices/yokis.js +2454 -0
  41. package/devices/yokis.js.map +1 -0
  42. package/lib/modernExtend.d.ts.map +1 -1
  43. package/lib/modernExtend.js +5 -1
  44. package/lib/modernExtend.js.map +1 -1
  45. package/package.json +5 -5
package/devices/tuya.js CHANGED
@@ -1308,7 +1308,7 @@ const definitions = [
1308
1308
  exposes: [e.co2()],
1309
1309
  },
1310
1310
  {
1311
- fingerprint: [{ modelID: 'TS0601', manufacturerName: '_TZE200_7bztmfm1' }],
1311
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE200_7bztmfm1', '_TZE204_7bztmfm1']),
1312
1312
  model: 'TS0601_smart_CO_air_box',
1313
1313
  vendor: 'Tuya',
1314
1314
  description: 'Smart air box (carbon monoxide)',
@@ -3616,6 +3616,7 @@ const definitions = [
3616
3616
  '_TZ3000_qaabwu5c',
3617
3617
  '_TZ3000_ikuxinvo',
3618
3618
  '_TZ3000_hzlsaltw',
3619
+ '_TZ3000_jsfzkftc',
3619
3620
  ]),
3620
3621
  model: 'TS0001_power',
3621
3622
  description: 'Switch with power monitoring',
@@ -5438,6 +5439,7 @@ const definitions = [
5438
5439
  tuya.whitelabel('Elivco', 'LSPA9', 'Smart plug (with power monitoring)', ['_TZ3000_okaz9tjs']),
5439
5440
  tuya.whitelabel('PSMART', 'T440', 'Smart wallsocket (with power monitoring)', ['_TZ3000_y4ona9me']),
5440
5441
  tuya.whitelabel('Nous', 'A6Z', 'Outdoor smart socket', ['_TZ3000_266azbg3']),
5442
+ tuya.whitelabel('Nedis', 'ZBPO130FWT', 'Outdoor smart plug (with power monitoring)', ['_TZ3000_3ias4w4o']),
5441
5443
  ],
5442
5444
  ota: true,
5443
5445
  extend: [
@@ -5595,7 +5597,7 @@ const definitions = [
5595
5597
  },
5596
5598
  },
5597
5599
  {
5598
- fingerprint: tuya.fingerprint('TS0601', ['_TZE200_m9skfctm', '_TZE200_rccxox8p']),
5600
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE200_m9skfctm', '_TZE200_rccxox8p', '_TZE284_rccxox8p']),
5599
5601
  model: 'PA-44Z',
5600
5602
  vendor: 'Tuya',
5601
5603
  description: 'Photoelectric smoke detector',
@@ -6615,6 +6617,30 @@ const definitions = [
6615
6617
  }
6616
6618
  },
6617
6619
  },
6620
+ {
6621
+ fingerprint: tuya.fingerprint('TS0726', ['_TZ3002_rbnycsav']),
6622
+ model: 'TS0726_3_gang',
6623
+ vendor: 'Tuya',
6624
+ description: '3 gang switch with neutral wire',
6625
+ fromZigbee: [fromZigbee_1.default.on_off, tuya.fz.power_on_behavior_2, fromZigbee_1.default.ignore_basic_report, fzLocal.TS0726_action],
6626
+ toZigbee: [toZigbee_1.default.on_off, tuya.tz.power_on_behavior_2, tzLocal.TS0726_switch_mode],
6627
+ exposes: [
6628
+ ...[1, 2, 3].map((ep) => e.switch().withEndpoint(`l${ep}`)),
6629
+ ...[1, 2, 3].map((ep) => e.power_on_behavior().withEndpoint(`l${ep}`)),
6630
+ ...[1, 2, 3].map((ep) => e.enum('switch_mode', ea.STATE_SET, ['switch', 'scene']).withEndpoint(`l${ep}`)),
6631
+ e.action(['scene_1', 'scene_2', 'scene_3']),
6632
+ ],
6633
+ endpoint: (device) => {
6634
+ return { l1: 1, l2: 2, l3: 3 };
6635
+ },
6636
+ meta: { multiEndpoint: true },
6637
+ configure: async (device, coordinatorEndpoint) => {
6638
+ await tuya.configureMagicPacket(device, coordinatorEndpoint);
6639
+ for (const ep of [1, 2, 3]) {
6640
+ await reporting.bind(device.getEndpoint(ep), coordinatorEndpoint, ['genOnOff']);
6641
+ }
6642
+ },
6643
+ },
6618
6644
  {
6619
6645
  zigbeeModel: ['TS0726'],
6620
6646
  model: 'TS0726_4_gang',
@@ -12213,14 +12239,14 @@ const definitions = [
12213
12239
  },
12214
12240
  },
12215
12241
  {
12216
- fingerprint: tuya.fingerprint('TS0601', ['_TZE204_q22avxbv', '_TZE204_mrffaamu']),
12242
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE204_q22avxbv', '_TZE204_mrffaamu', '_TZE204_tzreobvu']),
12217
12243
  model: 'TOQCB2-80',
12218
12244
  vendor: 'Tuya',
12219
12245
  description: 'Smart circuit breaker',
12220
12246
  fromZigbee: [tuya.fz.datapoints],
12221
12247
  toZigbee: [tuya.tz.datapoints],
12222
- // Important: respondToMcuVersionResponse should be false otherweise there are an avalanche of commandMcuVersionResponse messages every second.
12223
- // queryIntervalSeconds: is doing a pooling to update device's parameters, now define to update data every 3 minutes.
12248
+ // Important: respondToMcuVersionResponse should be false otherwise there is an avalanche of commandMcuVersionResponse messages every second.
12249
+ // queryIntervalSeconds: is doing a pooling to update the device's parameters, now defined to update data every 3 minutes.
12224
12250
  onEvent: tuya.onEvent({ respondToMcuVersionResponse: false, queryIntervalSeconds: 3 * 60 }),
12225
12251
  configure: tuya.configureMagicPacket,
12226
12252
  exposes: [
@@ -12546,7 +12572,7 @@ const definitions = [
12546
12572
  {
12547
12573
  zigbeeModel: ['TS0105'],
12548
12574
  model: 'TS0105',
12549
- vendor: 'TuYa',
12575
+ vendor: 'Tuya',
12550
12576
  description: '3 gang switch',
12551
12577
  extend: [tuyaBase({ dp: true }), (0, modernExtend_1.deviceEndpoints)({ endpoints: { l1: 1, l2: 1, l3: 1 } })],
12552
12578
  exposes: [
@@ -12845,7 +12871,7 @@ const definitions = [
12845
12871
  {
12846
12872
  fingerprint: tuya.fingerprint('TS0601', ['_TZE200_ha0vwoew']),
12847
12873
  model: 'TS0601_thermostat_thermosphere',
12848
- vendor: 'TuYa',
12874
+ vendor: 'Tuya',
12849
12875
  description: 'ThermoSphere thermostat',
12850
12876
  extend: [tuyaBase({ dp: true })],
12851
12877
  exposes: [
@@ -13333,6 +13359,147 @@ const definitions = [
13333
13359
  ],
13334
13360
  },
13335
13361
  },
13362
+ {
13363
+ fingerprint: tuya.fingerprint('TS0225', ['_TZ321C_fkzihax8', '_TZ321C_4slreunp']),
13364
+ model: 'MTD085-ZB',
13365
+ vendor: 'LeapMMW',
13366
+ description: 'Human presence sensor',
13367
+ extend: [tuyaBase({ dp: true })],
13368
+ fromZigbee: [fromZigbee_1.default.ias_occupancy_alarm_1, fromZigbee_1.default.ias_occupancy_alarm_1_report],
13369
+ exposes: [
13370
+ e.occupancy(),
13371
+ e.illuminance(),
13372
+ e.numeric('target_distance', ea.STATE).withDescription('Distance to target').withUnit('m'),
13373
+ e
13374
+ .numeric('radar_sensitivity', ea.STATE_SET)
13375
+ .withValueMin(10)
13376
+ .withValueMax(100)
13377
+ .withValueStep(10)
13378
+ .withUnit('%')
13379
+ .withDescription('Detection threshold for the strength of object energy'),
13380
+ e
13381
+ .numeric('detection_range', ea.STATE_SET)
13382
+ .withValueMin(0)
13383
+ .withValueMax(8)
13384
+ .withValueStep(0.1)
13385
+ .withUnit('m')
13386
+ .withDescription('Maximum distance detected by the sensor'),
13387
+ e
13388
+ .numeric('shield_range', ea.STATE_SET)
13389
+ .withValueMin(0)
13390
+ .withValueMax(8)
13391
+ .withValueStep(0.1)
13392
+ .withUnit('m')
13393
+ .withDescription('Nearest distance detected by the sensor'),
13394
+ e
13395
+ .numeric('entry_sensitivity', ea.STATE_SET)
13396
+ .withValueMin(10)
13397
+ .withValueMax(100)
13398
+ .withValueStep(10)
13399
+ .withUnit('%')
13400
+ .withDescription('Sensitivity threshold triggered for the first time when the target enters the detection range'),
13401
+ e
13402
+ .numeric('entry_distance', ea.STATE_SET)
13403
+ .withValueMin(0)
13404
+ .withValueMax(8)
13405
+ .withValueStep(0.1)
13406
+ .withUnit('m')
13407
+ .withDescription('Dectection distance when unoccupied'),
13408
+ e
13409
+ .numeric('entry_filter_time', ea.STATE_SET)
13410
+ .withValueMin(0)
13411
+ .withValueMax(0.5)
13412
+ .withValueStep(0.05)
13413
+ .withUnit('s')
13414
+ .withDescription('Sensitivity threshold triggered for the first time when the target enters the detection range '),
13415
+ e
13416
+ .numeric('departure_delay', ea.STATE_SET)
13417
+ .withValueMin(5)
13418
+ .withValueMax(7200)
13419
+ .withValueStep(1)
13420
+ .withUnit('s')
13421
+ .withDescription('Confirmation time after the target disappears'),
13422
+ e
13423
+ .numeric('block_time', ea.STATE_SET)
13424
+ .withValueMin(0)
13425
+ .withValueMax(10)
13426
+ .withValueStep(0.1)
13427
+ .withUnit('s')
13428
+ .withDescription('Time for the target to be detected again after switching from manned(occupy) to unmanned(unoccupy) mode'),
13429
+ e.enum('status_indication', ea.STATE_SET, ['OFF', 'ON']).withDescription('Indicator light will turn on when human presence is detected'),
13430
+ e
13431
+ .enum('sensor', ea.STATE_SET, ['on', 'occupied', 'unoccupied'])
13432
+ .withDescription(`The radar sensor can be set in three states: on, occupied and unoccupied. For example, if set to occupied, ` +
13433
+ `it will continue to maintain presence regardless of whether someone is present or not. If set to unoccupied, the unoccupied ` +
13434
+ `state will be maintained permanently.`),
13435
+ e
13436
+ .enum('scene_preset', ea.STATE_SET, [
13437
+ 'Custom',
13438
+ 'Toilet',
13439
+ 'Kitchen',
13440
+ 'Hallway',
13441
+ 'Bedroom',
13442
+ 'Livingroom',
13443
+ 'Meetingroom',
13444
+ 'Factory default',
13445
+ ])
13446
+ .withDescription(`Presets`),
13447
+ e
13448
+ .enum('distance_report_mode', ea.STATE_SET, ['Normal', 'Occupancy detection'])
13449
+ .withDescription('Indicator light will turn on when human presence is detected'),
13450
+ e
13451
+ .enum('debug_mode', ea.STATE_SET, ['OFF', 'ON'])
13452
+ .withDescription(`In debug mode, radar will report more information, can be used to identify interference`),
13453
+ e.numeric('debug_distance', ea.STATE).withDescription('Real time distance to target').withUnit('m'),
13454
+ e.numeric('debug_countdown', ea.STATE).withDescription('Time before the target disappears').withUnit('s'),
13455
+ ],
13456
+ meta: {
13457
+ tuyaSendCommand: 'sendData',
13458
+ tuyaDatapoints: [
13459
+ // [1, 'presence', tuya.valueConverter.trueFalse1],
13460
+ [101, 'entry_sensitivity', tuya.valueConverter.raw],
13461
+ [102, 'entry_distance', tuya.valueConverter.divideBy100],
13462
+ [103, 'departure_delay', tuya.valueConverter.raw],
13463
+ [104, 'entry_filter_time', tuya.valueConverter.divideBy100],
13464
+ [105, 'block_time', tuya.valueConverter.divideBy10],
13465
+ [107, 'illuminance', tuya.valueConverter.divideBy10],
13466
+ [108, 'debug_mode', tuya.valueConverterBasic.lookup({ OFF: tuya.enum(0), ON: tuya.enum(1) })],
13467
+ [109, 'debug_distance', tuya.valueConverter.divideBy100],
13468
+ [110, 'debug_countdown', tuya.valueConverter.raw],
13469
+ [
13470
+ 111,
13471
+ 'scene_preset',
13472
+ tuya.valueConverterBasic.lookup({
13473
+ Custom: tuya.enum(0),
13474
+ Toilet: tuya.enum(1),
13475
+ Kitchen: tuya.enum(2),
13476
+ Hallway: tuya.enum(3),
13477
+ Bedroom: tuya.enum(4),
13478
+ Livingroom: tuya.enum(5),
13479
+ Meetingroom: tuya.enum(6),
13480
+ Default: tuya.enum(7),
13481
+ }),
13482
+ ],
13483
+ [
13484
+ 112,
13485
+ 'sensor',
13486
+ tuya.valueConverterBasic.lookup({
13487
+ on: tuya.enum(0),
13488
+ occupied: tuya.enum(1),
13489
+ unoccupied: tuya.enum(2),
13490
+ }),
13491
+ ],
13492
+ [113, 'cline', tuya.valueConverter.raw],
13493
+ [114, 'status_indication', tuya.valueConverterBasic.lookup({ OFF: tuya.enum(0), ON: tuya.enum(1) })],
13494
+ [115, 'radar_sensitivity', tuya.valueConverter.raw],
13495
+ [116, 'shield_range', tuya.valueConverter.divideBy100],
13496
+ [117, 'detection_range', tuya.valueConverter.divideBy100],
13497
+ [118, 'equipment_status', tuya.valueConverter.raw],
13498
+ [119, 'target_distance', tuya.valueConverter.divideBy100],
13499
+ [120, 'distance_report_mode', tuya.valueConverterBasic.lookup({ Normal: tuya.enum(0), 'Occupancy detection': tuya.enum(1) })],
13500
+ ],
13501
+ },
13502
+ },
13336
13503
  {
13337
13504
  fingerprint: tuya.fingerprint('TS0601', ['_TZE204_d6i25bwg']),
13338
13505
  model: 'PO-BOCO-ELEC',