zigbee-herdsman-converters 21.10.0 → 21.12.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 (90) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/converters/fromZigbee.d.ts +0 -5
  3. package/converters/fromZigbee.d.ts.map +1 -1
  4. package/converters/fromZigbee.js +5 -30
  5. package/converters/fromZigbee.js.map +1 -1
  6. package/converters/toZigbee.d.ts +343 -352
  7. package/converters/toZigbee.d.ts.map +1 -1
  8. package/converters/toZigbee.js +14 -22
  9. package/converters/toZigbee.js.map +1 -1
  10. package/devices/adeo.d.ts.map +1 -1
  11. package/devices/adeo.js +6 -6
  12. package/devices/adeo.js.map +1 -1
  13. package/devices/bosch.js +1 -1
  14. package/devices/bosch.js.map +1 -1
  15. package/devices/datek.d.ts.map +1 -1
  16. package/devices/datek.js +13 -1
  17. package/devices/datek.js.map +1 -1
  18. package/devices/dresden_elektronik.js +1 -1
  19. package/devices/dresden_elektronik.js.map +1 -1
  20. package/devices/gmmts.d.ts.map +1 -1
  21. package/devices/gmmts.js.map +1 -1
  22. package/devices/hzc_electric.d.ts.map +1 -1
  23. package/devices/hzc_electric.js +11 -0
  24. package/devices/hzc_electric.js.map +1 -1
  25. package/devices/index.d.ts.map +1 -1
  26. package/devices/index.js +4 -0
  27. package/devices/index.js.map +1 -1
  28. package/devices/lumi.d.ts.map +1 -1
  29. package/devices/lumi.js +8 -0
  30. package/devices/lumi.js.map +1 -1
  31. package/devices/nodon.d.ts.map +1 -1
  32. package/devices/nodon.js +11 -10
  33. package/devices/nodon.js.map +1 -1
  34. package/devices/nous.d.ts.map +1 -1
  35. package/devices/nous.js +1 -0
  36. package/devices/nous.js.map +1 -1
  37. package/devices/plugwise.js +2 -2
  38. package/devices/plugwise.js.map +1 -1
  39. package/devices/robb.d.ts.map +1 -1
  40. package/devices/robb.js +12 -0
  41. package/devices/robb.js.map +1 -1
  42. package/devices/salus_controls.d.ts.map +1 -1
  43. package/devices/salus_controls.js +89 -0
  44. package/devices/salus_controls.js.map +1 -1
  45. package/devices/sonoff.d.ts.map +1 -1
  46. package/devices/sonoff.js +5 -0
  47. package/devices/sonoff.js.map +1 -1
  48. package/devices/sunricher.d.ts.map +1 -1
  49. package/devices/sunricher.js +14 -0
  50. package/devices/sunricher.js.map +1 -1
  51. package/devices/tuya.d.ts.map +1 -1
  52. package/devices/tuya.js +237 -0
  53. package/devices/tuya.js.map +1 -1
  54. package/devices/xal.d.ts +4 -0
  55. package/devices/xal.d.ts.map +1 -0
  56. package/devices/xal.js +29 -0
  57. package/devices/xal.js.map +1 -0
  58. package/devices/yale.d.ts.map +1 -1
  59. package/devices/yale.js.map +1 -1
  60. package/devices/yandex.d.ts.map +1 -1
  61. package/devices/yandex.js.map +1 -1
  62. package/devices/yokis.d.ts +4 -0
  63. package/devices/yokis.d.ts.map +1 -0
  64. package/devices/yokis.js +2454 -0
  65. package/devices/yokis.js.map +1 -0
  66. package/lib/constants.d.ts.map +1 -1
  67. package/lib/constants.js +4 -0
  68. package/lib/constants.js.map +1 -1
  69. package/lib/ewelink.d.ts +1 -1
  70. package/lib/generateDefinition.d.ts.map +1 -1
  71. package/lib/generateDefinition.js +2 -2
  72. package/lib/generateDefinition.js.map +1 -1
  73. package/lib/ledvance.d.ts +1 -1
  74. package/lib/legacy.d.ts +123 -123
  75. package/lib/legrand.d.ts +6 -6
  76. package/lib/lumi.d.ts +90 -90
  77. package/lib/modernExtend.d.ts.map +1 -1
  78. package/lib/modernExtend.js +5 -1
  79. package/lib/modernExtend.js.map +1 -1
  80. package/lib/nodon.d.ts +3 -0
  81. package/lib/nodon.d.ts.map +1 -0
  82. package/lib/nodon.js +130 -0
  83. package/lib/nodon.js.map +1 -0
  84. package/lib/philips.d.ts +10 -10
  85. package/lib/sunricher.d.ts +1 -1
  86. package/lib/tuya.d.ts +20 -20
  87. package/lib/types.d.ts +4 -4
  88. package/lib/types.d.ts.map +1 -1
  89. package/lib/zosung.d.ts +2 -2
  90. package/package.json +5 -5
package/devices/tuya.js CHANGED
@@ -13333,6 +13333,147 @@ const definitions = [
13333
13333
  ],
13334
13334
  },
13335
13335
  },
13336
+ {
13337
+ fingerprint: tuya.fingerprint('TS0225', ['_TZ321C_fkzihax8', '_TZ321C_4slreunp']),
13338
+ model: 'MTD085-ZB',
13339
+ vendor: 'LeapMMW',
13340
+ description: 'Human presence sensor',
13341
+ extend: [tuyaBase({ dp: true })],
13342
+ fromZigbee: [fromZigbee_1.default.ias_occupancy_alarm_1, fromZigbee_1.default.ias_occupancy_alarm_1_report],
13343
+ exposes: [
13344
+ e.occupancy(),
13345
+ e.illuminance(),
13346
+ e.numeric('target_distance', ea.STATE).withDescription('Distance to target').withUnit('m'),
13347
+ e
13348
+ .numeric('radar_sensitivity', ea.STATE_SET)
13349
+ .withValueMin(10)
13350
+ .withValueMax(100)
13351
+ .withValueStep(10)
13352
+ .withUnit('%')
13353
+ .withDescription('Detection threshold for the strength of object energy'),
13354
+ e
13355
+ .numeric('detection_range', ea.STATE_SET)
13356
+ .withValueMin(0)
13357
+ .withValueMax(8)
13358
+ .withValueStep(0.1)
13359
+ .withUnit('m')
13360
+ .withDescription('Maximum distance detected by the sensor'),
13361
+ e
13362
+ .numeric('shield_range', ea.STATE_SET)
13363
+ .withValueMin(0)
13364
+ .withValueMax(8)
13365
+ .withValueStep(0.1)
13366
+ .withUnit('m')
13367
+ .withDescription('Nearest distance detected by the sensor'),
13368
+ e
13369
+ .numeric('entry_sensitivity', ea.STATE_SET)
13370
+ .withValueMin(10)
13371
+ .withValueMax(100)
13372
+ .withValueStep(10)
13373
+ .withUnit('%')
13374
+ .withDescription('Sensitivity threshold triggered for the first time when the target enters the detection range'),
13375
+ e
13376
+ .numeric('entry_distance', ea.STATE_SET)
13377
+ .withValueMin(0)
13378
+ .withValueMax(8)
13379
+ .withValueStep(0.1)
13380
+ .withUnit('m')
13381
+ .withDescription('Dectection distance when unoccupied'),
13382
+ e
13383
+ .numeric('entry_filter_time', ea.STATE_SET)
13384
+ .withValueMin(0)
13385
+ .withValueMax(0.5)
13386
+ .withValueStep(0.05)
13387
+ .withUnit('s')
13388
+ .withDescription('Sensitivity threshold triggered for the first time when the target enters the detection range '),
13389
+ e
13390
+ .numeric('departure_delay', ea.STATE_SET)
13391
+ .withValueMin(5)
13392
+ .withValueMax(7200)
13393
+ .withValueStep(1)
13394
+ .withUnit('s')
13395
+ .withDescription('Confirmation time after the target disappears'),
13396
+ e
13397
+ .numeric('block_time', ea.STATE_SET)
13398
+ .withValueMin(0)
13399
+ .withValueMax(10)
13400
+ .withValueStep(0.1)
13401
+ .withUnit('s')
13402
+ .withDescription('Time for the target to be detected again after switching from manned(occupy) to unmanned(unoccupy) mode'),
13403
+ e.enum('status_indication', ea.STATE_SET, ['OFF', 'ON']).withDescription('Indicator light will turn on when human presence is detected'),
13404
+ e
13405
+ .enum('sensor', ea.STATE_SET, ['on', 'occupied', 'unoccupied'])
13406
+ .withDescription(`The radar sensor can be set in three states: on, occupied and unoccupied. For example, if set to occupied, ` +
13407
+ `it will continue to maintain presence regardless of whether someone is present or not. If set to unoccupied, the unoccupied ` +
13408
+ `state will be maintained permanently.`),
13409
+ e
13410
+ .enum('scene_preset', ea.STATE_SET, [
13411
+ 'Custom',
13412
+ 'Toilet',
13413
+ 'Kitchen',
13414
+ 'Hallway',
13415
+ 'Bedroom',
13416
+ 'Livingroom',
13417
+ 'Meetingroom',
13418
+ 'Factory default',
13419
+ ])
13420
+ .withDescription(`Presets`),
13421
+ e
13422
+ .enum('distance_report_mode', ea.STATE_SET, ['Normal', 'Occupancy detection'])
13423
+ .withDescription('Indicator light will turn on when human presence is detected'),
13424
+ e
13425
+ .enum('debug_mode', ea.STATE_SET, ['OFF', 'ON'])
13426
+ .withDescription(`In debug mode, radar will report more information, can be used to identify interference`),
13427
+ e.numeric('debug_distance', ea.STATE).withDescription('Real time distance to target').withUnit('m'),
13428
+ e.numeric('debug_countdown', ea.STATE).withDescription('Time before the target disappears').withUnit('s'),
13429
+ ],
13430
+ meta: {
13431
+ tuyaSendCommand: 'sendData',
13432
+ tuyaDatapoints: [
13433
+ // [1, 'presence', tuya.valueConverter.trueFalse1],
13434
+ [101, 'entry_sensitivity', tuya.valueConverter.raw],
13435
+ [102, 'entry_distance', tuya.valueConverter.divideBy100],
13436
+ [103, 'departure_delay', tuya.valueConverter.raw],
13437
+ [104, 'entry_filter_time', tuya.valueConverter.divideBy100],
13438
+ [105, 'block_time', tuya.valueConverter.divideBy10],
13439
+ [107, 'illuminance', tuya.valueConverter.divideBy10],
13440
+ [108, 'debug_mode', tuya.valueConverterBasic.lookup({ OFF: tuya.enum(0), ON: tuya.enum(1) })],
13441
+ [109, 'debug_distance', tuya.valueConverter.divideBy100],
13442
+ [110, 'debug_countdown', tuya.valueConverter.raw],
13443
+ [
13444
+ 111,
13445
+ 'scene_preset',
13446
+ tuya.valueConverterBasic.lookup({
13447
+ Custom: tuya.enum(0),
13448
+ Toilet: tuya.enum(1),
13449
+ Kitchen: tuya.enum(2),
13450
+ Hallway: tuya.enum(3),
13451
+ Bedroom: tuya.enum(4),
13452
+ Livingroom: tuya.enum(5),
13453
+ Meetingroom: tuya.enum(6),
13454
+ Default: tuya.enum(7),
13455
+ }),
13456
+ ],
13457
+ [
13458
+ 112,
13459
+ 'sensor',
13460
+ tuya.valueConverterBasic.lookup({
13461
+ on: tuya.enum(0),
13462
+ occupied: tuya.enum(1),
13463
+ unoccupied: tuya.enum(2),
13464
+ }),
13465
+ ],
13466
+ [113, 'cline', tuya.valueConverter.raw],
13467
+ [114, 'status_indication', tuya.valueConverterBasic.lookup({ OFF: tuya.enum(0), ON: tuya.enum(1) })],
13468
+ [115, 'radar_sensitivity', tuya.valueConverter.raw],
13469
+ [116, 'shield_range', tuya.valueConverter.divideBy100],
13470
+ [117, 'detection_range', tuya.valueConverter.divideBy100],
13471
+ [118, 'equipment_status', tuya.valueConverter.raw],
13472
+ [119, 'target_distance', tuya.valueConverter.divideBy100],
13473
+ [120, 'distance_report_mode', tuya.valueConverterBasic.lookup({ Normal: tuya.enum(0), 'Occupancy detection': tuya.enum(1) })],
13474
+ ],
13475
+ },
13476
+ },
13336
13477
  {
13337
13478
  fingerprint: tuya.fingerprint('TS0601', ['_TZE204_d6i25bwg']),
13338
13479
  model: 'PO-BOCO-ELEC',
@@ -13601,6 +13742,102 @@ const definitions = [
13601
13742
  ],
13602
13743
  },
13603
13744
  },
13745
+ {
13746
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE204_eekpf0ft']),
13747
+ model: 'TR-M3Z',
13748
+ vendor: 'Tuya',
13749
+ description: 'Thermostatic radiator valve actuator',
13750
+ extend: [tuyaBase({ dp: true })],
13751
+ exposes: [
13752
+ e.child_lock(),
13753
+ e.battery(),
13754
+ e.battery_low(),
13755
+ e
13756
+ .climate()
13757
+ .withSetpoint('current_heating_setpoint', 5, 35, 0.5, ea.STATE_SET)
13758
+ .withLocalTemperature(ea.STATE)
13759
+ .withPreset(['manual', 'schedule', 'eco', 'comfort', 'frost_protection', 'holiday', 'off'])
13760
+ .withSystemMode(['off', 'heat'], ea.STATE)
13761
+ .withRunningState(['idle', 'heat'], ea.STATE)
13762
+ .withLocalTemperatureCalibration(-9.5, 9.5, 0.5, ea.STATE_SET),
13763
+ ...tuya.exposes.scheduleAllDays(ea.STATE_SET, 'HH:MM/C HH:MM/C HH:MM/C HH:MM/C HH:MM/C HH:MM/C'),
13764
+ e.eco_temperature().withValueMin(5).withValueMax(35).withValueStep(0.5),
13765
+ e.comfort_temperature().withValueMin(5).withValueMax(35).withValueStep(0.5),
13766
+ e.holiday_temperature().withValueMin(5).withValueMax(35).withValueStep(0.5),
13767
+ e
13768
+ .binary('window_detection', ea.STATE_SET, 'ON', 'OFF')
13769
+ .withDescription('Startup: when room temperature decreases by 3°C within 5 minutes, stop heating. ' +
13770
+ 'Close: when room temperature rises by 3 degrees / 48 minutes later / manual (three ways). ' +
13771
+ 'After the window opening mode is turned on, one of these three conditions can trigger to exit the window opening mode.'),
13772
+ e.binary('window_open', ea.STATE, 'OPEN', 'CLOSE').withDescription('Window status CLOSE or OPEN '),
13773
+ e
13774
+ .binary('scale_protection', ea.STATE_SET, 'ON', 'OFF')
13775
+ .withDescription('If the heat sink is not fully opened within ' +
13776
+ 'two weeks or is not used for a long time, the valve will be blocked due to silting up and the heat sink will not be ' +
13777
+ 'able to be used. To ensure normal use of the heat sink, the controller will automatically open the valve fully every ' +
13778
+ 'two weeks. It will run for 30 seconds per time with the screen displaying "Ad", then return to its normal working state ' +
13779
+ 'again.'),
13780
+ e
13781
+ .binary('frost_protection', ea.STATE_SET, 'ON', 'OFF')
13782
+ .withDescription('When the room temperature is lower than 5 °C, the valve opens; when the temperature rises to 8 °C, the valve closes.'),
13783
+ e
13784
+ .numeric('frost_protection_temperature', ea.STATE_SET)
13785
+ .withUnit('°C')
13786
+ .withValueMin(5)
13787
+ .withValueMax(35)
13788
+ .withValueStep(0.5)
13789
+ .withDescription(''),
13790
+ e
13791
+ .numeric('temperature_accuracy', ea.STATE_SET)
13792
+ .withUnit('°C')
13793
+ .withValueMin(0.5)
13794
+ .withValueMax(5)
13795
+ .withValueStep(0.5)
13796
+ .withDescription('The difference required between local temperature and set point to trigger the valve.'),
13797
+ e.numeric('error', ea.STATE).withDescription('If NTC is damaged, "Er" will be on the TRV display.'),
13798
+ ],
13799
+ meta: {
13800
+ tuyaDatapoints: [
13801
+ [
13802
+ 2,
13803
+ 'preset',
13804
+ tuya.valueConverterBasic.lookup({
13805
+ manual: tuya.enum(0),
13806
+ schedule: tuya.enum(1),
13807
+ eco: tuya.enum(2),
13808
+ comfort: tuya.enum(3),
13809
+ frost_protection: tuya.enum(4),
13810
+ holiday: tuya.enum(5),
13811
+ off: tuya.enum(6),
13812
+ }),
13813
+ ],
13814
+ [3, 'running_state', tuya.valueConverterBasic.lookup({ idle: tuya.enum(0), heat: tuya.enum(1) })],
13815
+ [4, 'current_heating_setpoint', tuya.valueConverter.divideBy10],
13816
+ [5, 'local_temperature', tuya.valueConverter.divideBy10],
13817
+ [6, 'battery', tuya.valueConverter.raw],
13818
+ [7, 'child_lock', tuya.valueConverter.lockUnlock],
13819
+ [14, 'window_detection', tuya.valueConverter.onOff],
13820
+ [15, 'window_open', tuya.valueConverterBasic.lookup({ CLOSE: tuya.enum(0), OPEN: tuya.enum(1) })],
13821
+ [21, 'holiday_temperature', tuya.valueConverter.divideBy10],
13822
+ [28, 'schedule_monday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(1, 6)],
13823
+ [29, 'schedule_tuesday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(2, 6)],
13824
+ [30, 'schedule_wednesday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(3, 6)],
13825
+ [31, 'schedule_thursday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(4, 6)],
13826
+ [32, 'schedule_friday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(5, 6)],
13827
+ [33, 'schedule_saturday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(6, 6)],
13828
+ [34, 'schedule_sunday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(7, 6)],
13829
+ [35, 'fault_alarm', tuya.valueConverter.errorOrBatteryLow],
13830
+ [36, 'frost_protection', tuya.valueConverter.onOff],
13831
+ [39, 'scale_protection', tuya.valueConverter.onOff],
13832
+ [47, 'local_temperature_calibration', tuya.valueConverter.localTempCalibration3],
13833
+ [101, 'system_mode', tuya.valueConverterBasic.lookup({ off: false, heat: true })],
13834
+ [102, 'temperature_accuracy', tuya.valueConverter.divideBy10],
13835
+ [103, 'eco_temperature', tuya.valueConverter.divideBy10],
13836
+ [104, 'comfort_temperature', tuya.valueConverter.divideBy10],
13837
+ [105, 'frost_protection_temperature', tuya.valueConverter.divideBy10],
13838
+ ],
13839
+ },
13840
+ },
13604
13841
  ];
13605
13842
  exports.default = definitions;
13606
13843
  module.exports = definitions;