zigbee-herdsman-converters 20.32.0 → 20.34.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 (47) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/converters/toZigbee.js +1 -1
  3. package/converters/toZigbee.js.map +1 -1
  4. package/devices/candeo.d.ts.map +1 -1
  5. package/devices/candeo.js +79 -0
  6. package/devices/candeo.js.map +1 -1
  7. package/devices/develco.d.ts.map +1 -1
  8. package/devices/develco.js +11 -10
  9. package/devices/develco.js.map +1 -1
  10. package/devices/ewelink.d.ts.map +1 -1
  11. package/devices/ewelink.js +14 -0
  12. package/devices/ewelink.js.map +1 -1
  13. package/devices/gledopto.d.ts.map +1 -1
  14. package/devices/gledopto.js +7 -0
  15. package/devices/gledopto.js.map +1 -1
  16. package/devices/ikea.d.ts.map +1 -1
  17. package/devices/ikea.js +14 -3
  18. package/devices/ikea.js.map +1 -1
  19. package/devices/innr.d.ts.map +1 -1
  20. package/devices/innr.js +7 -0
  21. package/devices/innr.js.map +1 -1
  22. package/devices/nodon.d.ts.map +1 -1
  23. package/devices/nodon.js +158 -62
  24. package/devices/nodon.js.map +1 -1
  25. package/devices/philips.d.ts.map +1 -1
  26. package/devices/philips.js +15 -1
  27. package/devices/philips.js.map +1 -1
  28. package/devices/sonoff.d.ts.map +1 -1
  29. package/devices/sonoff.js +19 -51
  30. package/devices/sonoff.js.map +1 -1
  31. package/devices/third_reality.js +1 -1
  32. package/devices/tuya.d.ts.map +1 -1
  33. package/devices/tuya.js +249 -4
  34. package/devices/tuya.js.map +1 -1
  35. package/lib/ewelink.d.ts +1 -0
  36. package/lib/ewelink.d.ts.map +1 -1
  37. package/lib/ewelink.js +10 -0
  38. package/lib/ewelink.js.map +1 -1
  39. package/lib/modernExtend.d.ts +1 -0
  40. package/lib/modernExtend.d.ts.map +1 -1
  41. package/lib/modernExtend.js +9 -1
  42. package/lib/modernExtend.js.map +1 -1
  43. package/lib/tuya.d.ts +8 -0
  44. package/lib/tuya.d.ts.map +1 -1
  45. package/lib/tuya.js +49 -0
  46. package/lib/tuya.js.map +1 -1
  47. package/package.json +1 -1
package/devices/tuya.js CHANGED
@@ -5024,6 +5024,130 @@ const definitions = [
5024
5024
  ],
5025
5025
  },
5026
5026
  },
5027
+ {
5028
+ fingerprint: [{ modelID: 'TS0601', manufacturerName: '_TZE204_ltwbm23f' }],
5029
+ model: 'TRV602Z',
5030
+ vendor: 'Tuya',
5031
+ description: 'Thermostatic radiator valve.',
5032
+ extend: [tuyaBase({ dp: true })],
5033
+ exposes: [
5034
+ e.battery(),
5035
+ e.child_lock(),
5036
+ e.max_temperature(),
5037
+ e.min_temperature(),
5038
+ e.position(),
5039
+ e.window_detection(),
5040
+ e.binary('window', ea.STATE, 'OPEN', 'CLOSE').withDescription('Window status closed or open '),
5041
+ e.enum('mode', ea.STATE_SET, ['standby', 'antifrost', 'eco', 'comfort', 'auto', 'on']).withDescription('Mode'),
5042
+ e
5043
+ .climate()
5044
+ .withLocalTemperature(ea.STATE)
5045
+ .withSetpoint('current_heating_setpoint', 5, 35, 0.5, ea.STATE_SET)
5046
+ .withLocalTemperatureCalibration(-30, 30, 0.1, ea.STATE_SET),
5047
+ ...tuya.exposes.scheduleAllDays(ea.STATE_SET, 'HH:MM/C HH:MM/C HH:MM/C HH:MM/C HH:MM/C HH:MM/C'),
5048
+ e.comfort_temperature().withValueMin(5).withValueMax(30).withDescription('Comfort mode temperature'),
5049
+ e.eco_temperature().withValueMin(5).withValueMax(30).withDescription('Eco mode temperature'),
5050
+ e.enum('display_brightness', ea.STATE_SET, ['high', 'medium', 'low']).withDescription('Display brightness'),
5051
+ e.enum('screen_orientation', ea.STATE_SET, ['up', 'right', 'down', 'left']).withDescription('Screen orientation'),
5052
+ e
5053
+ .enum('system_mode', ea.STATE_SET, ['comfort', 'eco'])
5054
+ .withDescription('Hysteresis - comfort > switches off/on exactly at reached ' +
5055
+ 'temperature with valve smooth from 0 to 100%, eco > 0.5 degrees above or below, valve either 0 or 100%'),
5056
+ e.enum('motor_thrust', ea.STATE_SET, ['strong', 'middle', 'weak']),
5057
+ ],
5058
+ meta: {
5059
+ tuyaDatapoints: [
5060
+ [
5061
+ 2,
5062
+ 'mode',
5063
+ tuya.valueConverterBasic.lookup({
5064
+ standby: tuya.enum(0),
5065
+ antifrost: tuya.enum(1),
5066
+ eco: tuya.enum(2),
5067
+ comfort: tuya.enum(3),
5068
+ auto: tuya.enum(4),
5069
+ on: tuya.enum(5),
5070
+ }),
5071
+ ],
5072
+ [4, 'current_heating_setpoint', tuya.valueConverter.divideBy10],
5073
+ [5, 'local_temperature', tuya.valueConverter.divideBy10],
5074
+ [6, 'battery', tuya.valueConverter.raw],
5075
+ [
5076
+ 7,
5077
+ 'child_lock',
5078
+ tuya.valueConverterBasic.lookup({
5079
+ LOCK: true,
5080
+ UNLOCK: false,
5081
+ }),
5082
+ ],
5083
+ [9, 'max_temperature', tuya.valueConverter.divideBy10],
5084
+ [10, 'min_temperature', tuya.valueConverter.divideBy10],
5085
+ [
5086
+ 14,
5087
+ 'window_detection',
5088
+ tuya.valueConverterBasic.lookup({
5089
+ ON: true,
5090
+ OFF: false,
5091
+ }),
5092
+ ],
5093
+ [
5094
+ 15,
5095
+ 'window',
5096
+ tuya.valueConverterBasic.lookup({
5097
+ CLOSE: tuya.enum(0),
5098
+ OPEN: tuya.enum(1),
5099
+ }),
5100
+ ],
5101
+ [47, 'local_temperature_calibration', tuya.valueConverter.localTempCalibration1],
5102
+ [102, 'schedule_monday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(1)],
5103
+ [103, 'schedule_tuesday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(2)],
5104
+ [104, 'schedule_wednesday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(3)],
5105
+ [105, 'schedule_thursday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(4)],
5106
+ [106, 'schedule_friday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(5)],
5107
+ [107, 'schedule_saturday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(6)],
5108
+ [108, 'schedule_sunday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(7)],
5109
+ [
5110
+ 110,
5111
+ 'motor_thrust',
5112
+ tuya.valueConverterBasic.lookup({
5113
+ strong: tuya.enum(0),
5114
+ middle: tuya.enum(1),
5115
+ weak: tuya.enum(2),
5116
+ }),
5117
+ ],
5118
+ [
5119
+ 111,
5120
+ 'display_brightness',
5121
+ tuya.valueConverterBasic.lookup({
5122
+ high: tuya.enum(0),
5123
+ medium: tuya.enum(1),
5124
+ low: tuya.enum(2),
5125
+ }),
5126
+ ],
5127
+ [
5128
+ 113,
5129
+ 'screen_orientation',
5130
+ tuya.valueConverterBasic.lookup({
5131
+ up: tuya.enum(0),
5132
+ right: tuya.enum(1),
5133
+ down: tuya.enum(2),
5134
+ left: tuya.enum(3),
5135
+ }),
5136
+ ],
5137
+ [114, 'position', tuya.valueConverter.divideBy10],
5138
+ [119, 'comfort_temperature', tuya.valueConverter.divideBy10],
5139
+ [120, 'eco_temperature', tuya.valueConverter.divideBy10],
5140
+ [
5141
+ 127,
5142
+ 'system_mode',
5143
+ tuya.valueConverterBasic.lookup({
5144
+ comfort: tuya.enum(0),
5145
+ eco: tuya.enum(1),
5146
+ }),
5147
+ ],
5148
+ ],
5149
+ },
5150
+ },
5027
5151
  {
5028
5152
  zigbeeModel: ['TS0121'],
5029
5153
  model: 'TS0121_plug',
@@ -6624,6 +6748,16 @@ const definitions = [
6624
6748
  exposes: [e.battery(), e.temperature(), e.humidity(), e.illuminance()],
6625
6749
  whiteLabel: [tuya.whitelabel('Tuya', 'QT-07S', 'Soil sensor', ['_TZE204_myd45weu'])],
6626
6750
  },
6751
+ {
6752
+ fingerprint: tuya.fingerprint('TS0222', ['_TZ3000_8uxxzz4b']),
6753
+ model: 'TS0222_light',
6754
+ vendor: 'Tuya',
6755
+ description: 'Light sensor',
6756
+ fromZigbee: [fromZigbee_1.default.battery, fromZigbee_1.default.temperature],
6757
+ toZigbee: [],
6758
+ configure: tuya.configureMagicPacket,
6759
+ exposes: [e.battery(), e.illuminance()],
6760
+ },
6627
6761
  {
6628
6762
  fingerprint: tuya.fingerprint('TS0222', ['_TZ3000_t9qqxn70']),
6629
6763
  model: 'THE01860A',
@@ -8545,7 +8679,6 @@ const definitions = [
8545
8679
  '_TZ3000_qystbcjg',
8546
8680
  '_TZ3000_zrm3oxsh',
8547
8681
  '_TZ3000_303avxxt',
8548
- '_TZ3000_6l1pjfqe',
8549
8682
  '_TZ3000_zjchz7pd',
8550
8683
  ]),
8551
8684
  model: 'TS011F_with_threshold',
@@ -8564,7 +8697,7 @@ const definitions = [
8564
8697
  toZigbee: [tzLocal.TS011F_threshold],
8565
8698
  exposes: (device, options) => {
8566
8699
  const exposes = [e.linkquality()];
8567
- if (!['_TZ3000_303avxxt', '_TZ3000_zjchz7pd', '_TZ3000_6l1pjfqe'].includes(device?.manufacturerName)) {
8700
+ if (!['_TZ3000_303avxxt', '_TZ3000_zjchz7pd'].includes(device?.manufacturerName)) {
8568
8701
  exposes.push(e.temperature(), e
8569
8702
  .numeric('temperature_threshold', ea.STATE_SET)
8570
8703
  .withValueMin(40)
@@ -8619,7 +8752,7 @@ const definitions = [
8619
8752
  tuya.whitelabel('EARU', 'EAKCB-T-M-Z', 'Smart circuit breaker', ['_TZ3000_lepzuhto']),
8620
8753
  tuya.whitelabel('EARU', 'EAYCB-Z-2P', 'Smart circuit breaker with leakage protection', ['_TZ3000_zrm3oxsh']),
8621
8754
  tuya.whitelabel('UNSH', 'SMKG-1KNL-EU-Z', 'Smart circuit Breaker', ['_TZ3000_qystbcjg']),
8622
- tuya.whitelabel('Tomzn', 'TOB9Z-VAP', 'Smart circuit breaker', ['_TZ3000_303avxxt', '_TZ3000_6l1pjfqe']),
8755
+ tuya.whitelabel('Tomzn', 'TOB9Z-VAP', 'Smart circuit breaker', ['_TZ3000_303avxxt']),
8623
8756
  tuya.whitelabel('Immax', '07573L', 'Smart circuit breaker', ['_TZ3000_zjchz7pd']),
8624
8757
  ],
8625
8758
  },
@@ -9598,7 +9731,7 @@ const definitions = [
9598
9731
  e.numeric('upper', ea.STATE_SET).withValueMin(0).withValueMax(50).withValueStep(1).withUnit('%').withDescription('Up movement limit'),
9599
9732
  e.numeric('delay', ea.STATE_SET).withValueMin(0).withValueMax(10).withValueStep(1).withUnit('s').withDescription('Sustain time'),
9600
9733
  e.binary('reverse', ea.STATE_SET, 'ON', 'OFF').withDescription('Reverse'),
9601
- e.binary('touch', ea.STATE_SET, 'ON', 'OFF').withDescription('Touch controll'),
9734
+ e.binary('touch', ea.STATE_SET, 'ON', 'OFF').withDescription('Touch control'),
9602
9735
  ],
9603
9736
  configure: async (device, coordinatorEndpoint) => {
9604
9737
  await tuya.configureMagicPacket(device, coordinatorEndpoint);
@@ -12125,6 +12258,118 @@ const definitions = [
12125
12258
  ],
12126
12259
  },
12127
12260
  },
12261
+ {
12262
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE200_ha0vwoew']),
12263
+ model: 'TS0601_thermostat_thermosphere',
12264
+ vendor: 'TuYa',
12265
+ description: 'ThermoSphere thermostat',
12266
+ extend: [tuyaBase({ dp: true })],
12267
+ exposes: [
12268
+ e
12269
+ .climate()
12270
+ .withSystemMode(['off', 'auto'], ea.STATE_SET, 'Whether the thermostat is turned on or off')
12271
+ .withSetpoint('current_heating_setpoint', 5, 35, 0.5, ea.STATE_SET)
12272
+ .withLocalTemperature(ea.STATE),
12273
+ e
12274
+ .enum('sensor_mode', ea.STATE_SET, ['room_temperature', 'floor_temperature', 'room_with_floor_limit'])
12275
+ .withDescription('What type of sensor are you using to meausure the temperature of the floor?'),
12276
+ e
12277
+ .binary('adaptive_start', ea.STATE_SET, 'ON', 'OFF')
12278
+ .withDescription('Preheat the room to the desired tempature before the scheduled start time.'),
12279
+ e.max_temperature_limit().withDescription('Maximum temperature (default: 35 ºC)').withValueMin(5).withValueMax(35).withValueStep(0.5),
12280
+ e
12281
+ .min_temperature_limit()
12282
+ .withDescription('Minimum temperature limit for frost protection. Turns the thermostat on regardless of setpoint if the temperature drops below this.')
12283
+ .withValueMin(1)
12284
+ .withValueMax(5),
12285
+ e
12286
+ .enum('boost', ea.STATE_SET, ['ON', 'OFF'])
12287
+ .withDescription('Override the schedule and boost at the current temperature until turned off'),
12288
+ e
12289
+ .numeric('display_brightness', ea.STATE_SET)
12290
+ .withDescription('Brightness of the display when in use')
12291
+ .withValueMin(0)
12292
+ .withValueMax(100)
12293
+ .withValueStep(1),
12294
+ e
12295
+ .numeric('holiday_start_stop', ea.STATE_SET)
12296
+ .withDescription('Set the number of days of holiday, this will start immediately.')
12297
+ .withValueMax(99)
12298
+ .withValueMin(0),
12299
+ e.holiday_temperature().withValueMin(5).withValueMax(35),
12300
+ e.binary('frost_protection', ea.STATE_SET, 'ON', 'OFF').withDescription('Turning on will keep heating at the minimum temperature limit'),
12301
+ e
12302
+ .numeric('switch_delay', ea.STATE_SET)
12303
+ .withDescription('How long to wait between making a change and it taking effect')
12304
+ .withValueMin(10)
12305
+ .withValueMax(90)
12306
+ .withValueStep(10)
12307
+ .withUnit('s'),
12308
+ e
12309
+ .numeric('power_rating', ea.STATE_SET)
12310
+ .withDescription('How much power is the underfloor heating rated to. Entering a value will allow the Thermostat to record a value of power usage that can be checked under settings on the physical Thermostat')
12311
+ .withUnit('W')
12312
+ .withValueMin(0)
12313
+ .withValueMax(4500)
12314
+ .withValueStep(100),
12315
+ e
12316
+ .binary('open_window_active', ea.STATE_SET, 'ON', 'OFF')
12317
+ .withDescription('When active the heating will cut off if an Open Window is detected'),
12318
+ e
12319
+ .numeric('open_window_sensing_time', ea.STATE_SET)
12320
+ .withDescription('The duration that the drop in temperature needs to occur over')
12321
+ .withUnit('minutes')
12322
+ .withValueMin(1)
12323
+ .withValueMax(30)
12324
+ .withValueStep(1),
12325
+ e
12326
+ .numeric('open_window_drop_limit', ea.STATE_SET)
12327
+ .withDescription('The drop in ambient room temperature that will trigger an open window warning')
12328
+ .withUnit('C')
12329
+ .withValueMin(2)
12330
+ .withValueMax(4)
12331
+ .withValueStep(1),
12332
+ e
12333
+ .numeric('open_window_off_time', ea.STATE_SET)
12334
+ .withDescription('The length of time the drop in temperature must be consistent for to turn the heating off')
12335
+ .withUnit('minutes')
12336
+ .withValueMin(10)
12337
+ .withValueMax(60)
12338
+ .withValueStep(5),
12339
+ ],
12340
+ meta: {
12341
+ tuyaDatapoints: [
12342
+ [1, 'system_mode', tuya.valueConverterBasic.lookup({ off: false, auto: true })],
12343
+ [2, 'current_heating_setpoint', tuya.valueConverter.divideBy10],
12344
+ [4, 'boost', tuya.valueConverterBasic.lookup({ OFF: tuya.enum(1), ON: tuya.enum(2) })],
12345
+ [18, 'open_window_active', tuya.valueConverterBasic.lookup({ OFF: false, ON: true })],
12346
+ [40, 'open_window_sensing_time', tuya.valueConverterBasic.divideBy(1)],
12347
+ [45, 'open_window_drop_limit', tuya.valueConverter.divideBy10],
12348
+ [47, 'open_window_off_time', tuya.valueConverterBasic.divideBy(1)],
12349
+ [37, 'adaptive_start', tuya.valueConverterBasic.lookup({ OFF: false, ON: true })],
12350
+ [38, 'local_temperature', tuya.valueConverter.divideBy10],
12351
+ [39, 'max_temperature_limit', tuya.valueConverter.divideBy10],
12352
+ [41, 'holiday_start_stop', tuya.valueConverterBasic.divideBy(1)], //divideBy1 required to force the format. Raw does not work
12353
+ [42, 'holiday_temperature', tuya.valueConverter.divideBy10],
12354
+ [
12355
+ 43,
12356
+ 'sensor_mode',
12357
+ tuya.valueConverterBasic.lookup({
12358
+ room_temperature: tuya.enum(0),
12359
+ floor_temperature: tuya.enum(1),
12360
+ room_with_floor_limit: tuya.enum(2),
12361
+ }),
12362
+ ],
12363
+ //[48, 'temp_tolerance', tuya.valueConverter.raw],
12364
+ [50, 'power_rating', tuya.valueConverterBasic.divideBy(1)],
12365
+ [52, 'frost_protection', tuya.valueConverterBasic.lookup({ OFF: false, ON: true })],
12366
+ [53, 'min_temperature_limit', tuya.valueConverter.divideBy10],
12367
+ [54, 'switch_delay', tuya.valueConverterBasic.divideBy(1)],
12368
+ [55, 'display_brightness', tuya.valueConverterBasic.divideBy(1)], //divideBy1 required to force the format. Raw does not work
12369
+ //[16, 'schedule', tuya.valueConverter.Raw],
12370
+ ],
12371
+ },
12372
+ },
12128
12373
  ];
12129
12374
  exports.default = definitions;
12130
12375
  module.exports = definitions;