zigbee-herdsman-converters 14.0.687 → 14.0.688

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/adeo.js CHANGED
@@ -52,6 +52,13 @@ module.exports = [
52
52
  }
53
53
  },
54
54
  },
55
+ {
56
+ zigbeeModel: ['ZBEK-7'],
57
+ model: 'IST-CDZFB2AS007NA-MZN-02',
58
+ vendor: 'ADEO',
59
+ description: 'ENKI LEXMAN E27 LED Edison white filament 806 lumen',
60
+ extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
61
+ },
55
62
  {
56
63
  zigbeeModel: ['ZBEK-8'],
57
64
  model: 'IG-CDZFB2G009RA-MZN-02',
@@ -122,4 +122,27 @@ module.exports = [
122
122
  device.skipDefaultResponse = true;
123
123
  },
124
124
  },
125
+ {
126
+ zigbeeModel: ['ZB-SW05'],
127
+ model: 'ZB-SW05',
128
+ vendor: 'eWeLink',
129
+ description: 'Smart light switch - 5 gang',
130
+ extend: extend.switch(),
131
+ exposes: [e.switch().withEndpoint('l1'), e.switch().withEndpoint('l2'),
132
+ e.switch().withEndpoint('l3'), e.switch().withEndpoint('l4'), e.switch().withEndpoint('l5')],
133
+ endpoint: (device) => {
134
+ return {'l1': 1, 'l2': 2, 'l3': 3, 'l4': 4, 'l5': 5};
135
+ },
136
+ meta: {multiEndpoint: true},
137
+ configure: async (device, coordinatorEndpoint, logger) => {
138
+ await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
139
+ await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
140
+ await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
141
+ await reporting.bind(device.getEndpoint(4), coordinatorEndpoint, ['genOnOff']);
142
+ await reporting.bind(device.getEndpoint(5), coordinatorEndpoint, ['genOnOff']);
143
+ },
144
+ onEvent: async (type, data, device) => {
145
+ device.skipDefaultResponse = true;
146
+ },
147
+ },
125
148
  ];
@@ -101,7 +101,7 @@ module.exports = [
101
101
  },
102
102
  {
103
103
  zigbeeModel: ['RGB-CCT'],
104
- model: '404028',
104
+ model: '404028/44435',
105
105
  vendor: 'Müller Licht',
106
106
  description: 'Tint LED Panel, color, opal white',
107
107
  extend: extend.light_onoff_brightness_colortemp_color(),
package/devices/tuya.js CHANGED
@@ -470,11 +470,10 @@ const fzLocal = {
470
470
  TS0201_humidity: {
471
471
  ...fz.humidity,
472
472
  convert: (model, msg, publish, options, meta) => {
473
- const result = fz.humidity.convert(model, msg, publish, options, meta);
474
473
  if (meta.device.manufacturerName === '_TZ3000_ywagc4rj') {
475
- result.humidity = result.humidity * 10;
474
+ msg.data['measuredValue'] *= 10;
476
475
  }
477
- return result;
476
+ return fz.humidity.convert(model, msg, publish, options, meta);
478
477
  },
479
478
  },
480
479
  TS0222: {
@@ -971,6 +970,13 @@ module.exports = [
971
970
  extend: tuya.extend.switch(),
972
971
  whiteLabel: [{vendor: 'KTNNKG', model: 'ZB1248-10A'}],
973
972
  },
973
+ {
974
+ zigbeeModel: ['CK-BL702-AL-01(7009_Z102LG03-1)'],
975
+ model: 'CK-BL702-AL-01',
976
+ vendor: 'TuYa',
977
+ description: 'Zigbee LED bulb',
978
+ extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [142, 500]}),
979
+ },
974
980
  {
975
981
  zigbeeModel: ['TS0505B'],
976
982
  model: 'TS0505B',
@@ -1988,6 +1994,7 @@ module.exports = [
1988
1994
  {modelID: 'TS0601', manufacturerName: '_TZE200_g5wdnuow'},
1989
1995
  // Tubular motors:
1990
1996
  {modelID: 'TS0601', manufacturerName: '_TZE200_5sbebbzs'},
1997
+ {modelID: 'TS0601', manufacturerName: '_TZE200_udank5zs'},
1991
1998
  {modelID: 'TS0601', manufacturerName: '_TZE200_zuz7f94z'},
1992
1999
  {modelID: 'TS0601', manufacturerName: '_TZE200_68nvbio9'},
1993
2000
  ],
@@ -2028,6 +2035,7 @@ module.exports = [
2028
2035
  fingerprint: [
2029
2036
  {modelID: 'TS0601', manufacturerName: '_TZE200_ckud7u2l'},
2030
2037
  {modelID: 'TS0601', manufacturerName: '_TZE200_ywdxldoj'},
2038
+ {modelID: 'TS0601', manufacturerName: '_TZE200_do5qy8zo'},
2031
2039
  {modelID: 'TS0601', manufacturerName: '_TZE200_cwnjrr72'},
2032
2040
  {modelID: 'TS0601', manufacturerName: '_TZE200_pvvbommb'},
2033
2041
  {modelID: 'TS0601', manufacturerName: '_TZE200_9sfg7gm0'}, // HomeCloud
@@ -2107,24 +2115,18 @@ module.exports = [
2107
2115
  exposes: [
2108
2116
  e.battery_low(), e.child_lock(), e.open_window(), e.open_window_temperature().withValueMin(5).withValueMax(30),
2109
2117
  e.comfort_temperature().withValueMin(5).withValueMax(30), e.eco_temperature().withValueMin(5).withValueMax(30),
2110
- tuya.exposes.errorStatus(), tuya.exposes.frostProtection('The device display "AF", press the pair button to cancel.'),
2111
- exposes.climate()
2112
- .withSystemMode(['off', 'heat'], ea.STATE_SET, 'When switched to the "off" mode, the device will display ' +
2113
- '"HS" and the valve will be fully closed. Press the pair button to cancel or switch back to "heat" mode. Battery life' +
2114
- ' can be prolonged by switching the heating off. After switching to `heat` mode, `preset` will be reset to `auto` and' +
2115
- ' after changing `preset` to `manual` temperature setpoint will be 20 degrees.')
2116
- .withPreset(['auto', 'manual', 'holiday'],
2117
- '`auto` uses schedule properties, check them. `manual` allows you to control the device, `holiday` uses ' +
2118
- '`holiday_start_stop` and `holiday_temperature` properties.')
2119
- .withLocalTemperatureCalibration(-5, 5, 0.1, ea.STATE_SET)
2120
- .withLocalTemperature(ea.STATE)
2121
- .withSetpoint('current_heating_setpoint', 5, 30, 0.5, ea.STATE_SET),
2118
+ exposes.climate().withPreset(['auto', 'manual', 'holiday']).withLocalTemperatureCalibration(-5, 5, 0.1, ea.STATE_SET)
2119
+ .withLocalTemperature(ea.STATE).withSetpoint('current_heating_setpoint', 5, 30, 0.5, ea.SET)
2120
+ .withSystemMode(['off', 'heat'], ea.STATE_SET, 'Only for Homeassistant'),
2121
+ exposes.binary('heating_stop', ea.STATE_SET, 'ON', 'OFF').withDescription('Battery life can be prolonged'+
2122
+ ' by switching the heating off. To achieve this, the valve is closed fully. To activate the '+
2123
+ 'heating stop, the device display "HS", press the pair button to cancel.'),
2124
+ tuya.exposes.frostProtection('When Anti-Freezing function is activated, the temperature in the house is kept '+
2125
+ 'at 8 °C, the device display "AF".press the pair button to cancel.'),
2122
2126
  exposes.numeric('boost_timeset_countdown', ea.STATE_SET).withUnit('second').withDescription('Setting '+
2123
2127
  'minimum 0 - maximum 465 seconds boost time. The boost (♨) function is activated. The remaining '+
2124
2128
  'time for the function will be counted down in seconds ( 465 to 0 ).').withValueMin(0).withValueMax(465),
2125
- exposes.binary('heating_stop', ea.STATE_SET, 'ON', 'OFF').withDescription('Same as `system_mode`. Left for compatibility.'),
2126
- exposes.numeric('holiday_temperature', ea.STATE_SET).withUnit('°C').withDescription('Holiday temperature')
2127
- .withValueMin(5).withValueMax(30),
2129
+ e.holiday_temperature().withValueMin(5).withValueMax(30),
2128
2130
  exposes.text('holiday_start_stop', ea.STATE_SET).withDescription('The holiday mode will automatically start ' +
2129
2131
  'at the set time starting point and run the holiday temperature. Can be defined in the following format: ' +
2130
2132
  '`startYear/startMonth/startDay startHours:startMinutes | endYear/endMonth/endDay endHours:endMinutes`. ' +
@@ -2146,15 +2148,15 @@ module.exports = [
2146
2148
  'period and until the next period, e.g., `04:00/20 24:00/22` means that from 00:00 to 04:00 temperature will be 20 ' +
2147
2149
  'degrees and from 04:00 to 00:00 temperature will be 22 degrees.'),
2148
2150
  ...tuya.exposes.scheduleAllDays(ea.STATE, 'HH:MM/C'),
2149
- exposes.binary('online', ea.STATE_SET, 'ON', 'OFF').withDescription('Turn on this property to poll current data from the ' +
2150
- 'device. It can be used to periodically fetch a new local temperature since the device doesn\'t update itself. ' +
2151
- 'Setting this property doesn\'t turn on the display.'),
2151
+ exposes.binary('online', ea.STATE_SET, 'ON', 'OFF').withDescription('The current data request from the device.'),
2152
+ tuya.exposes.errorStatus(),
2152
2153
  ],
2153
2154
  meta: {
2154
2155
  tuyaDatapoints: [
2155
2156
  [2, 'preset', tuya.valueConverterBasic.lookup({'auto': tuya.enum(0), 'manual': tuya.enum(1), 'holiday': tuya.enum(3)})],
2156
2157
  [8, 'open_window', tuya.valueConverter.onOff],
2157
- [10, 'frost_protection', tuya.valueConverter.onOff],
2158
+ [10, null, tuya.valueConverter.TV02FrostProtection],
2159
+ [10, 'frost_protection', tuya.valueConverter.TV02FrostProtection],
2158
2160
  [16, 'current_heating_setpoint', tuya.valueConverter.divideBy10],
2159
2161
  [24, 'local_temperature', tuya.valueConverter.divideBy10],
2160
2162
  [27, 'local_temperature_calibration', tuya.valueConverter.localTempCalibration1],
@@ -2171,8 +2173,8 @@ module.exports = [
2171
2173
  [105, 'eco_temperature', tuya.valueConverter.divideBy10],
2172
2174
  [106, 'schedule', tuya.valueConverter.thermostatScheduleDaySingleDP],
2173
2175
  [107, null, tuya.valueConverter.TV02SystemMode],
2174
- [107, 'system_mode', tuya.valueConverterBasic.lookup({'heat': false, 'off': true})],
2175
- [107, 'heating_stop', tuya.valueConverter.onOff],
2176
+ [107, 'system_mode', tuya.valueConverter.TV02SystemMode],
2177
+ [107, 'heating_stop', tuya.valueConverter.TV02SystemMode],
2176
2178
  [115, 'online', tuya.valueConverter.onOffNotStrict],
2177
2179
  [108, 'schedule_monday', tuya.valueConverter.thermostatScheduleDaySingleDP],
2178
2180
  [112, 'schedule_tuesday', tuya.valueConverter.thermostatScheduleDaySingleDP],
package/lib/tuya.js CHANGED
@@ -1470,10 +1470,39 @@ const valueConverter = {
1470
1470
  },
1471
1471
  },
1472
1472
  TV02SystemMode: {
1473
+ to: async (v, meta) => {
1474
+ const entity = meta.device.endpoints[0];
1475
+ if (meta.message.system_mode) {
1476
+ if (meta.message.system_mode === 'off') {
1477
+ await sendDataPointBool(entity, 107, true, 'dataRequest', 1);
1478
+ } else {
1479
+ await sendDataPointEnum(entity, 2, 1, 'dataRequest', 1); // manual
1480
+ }
1481
+ } else if (meta.message.heating_stop) {
1482
+ if (meta.message.heating_stop === 'ON') {
1483
+ await sendDataPointBool(entity, 107, true, 'dataRequest', 1);
1484
+ } else {
1485
+ await sendDataPointEnum(entity, 2, 1, 'dataRequest', 1); // manual
1486
+ }
1487
+ }
1488
+ },
1473
1489
  from: (v) => {
1474
1490
  return {system_mode: v === false ? 'heat' : 'off', heating_stop: v === false ? 'OFF' : 'ON'};
1475
1491
  },
1476
1492
  },
1493
+ TV02FrostProtection: {
1494
+ to: async (v, meta) => {
1495
+ const entity = meta.device.endpoints[0];
1496
+ if (v === 'ON') {
1497
+ await sendDataPointBool(entity, 10, true, 'dataRequest', 1);
1498
+ } else {
1499
+ await sendDataPointEnum(entity, 2, 1, 'dataRequest', 1); // manual
1500
+ }
1501
+ },
1502
+ from: (v) => {
1503
+ return {frost_protection: v === false ? 'OFF' : 'ON'};
1504
+ },
1505
+ },
1477
1506
  inverse: {to: (v) => !v, from: (v) => !v},
1478
1507
  onOffNotStrict: {from: (v) => v ? 'ON' : 'OFF', to: (v) => v === 'ON'},
1479
1508
  errorOrBatteryLow: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.687",
3
+ "version": "14.0.688",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [