zigbee-herdsman-converters 15.0.79 → 15.0.81

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/bitron.js CHANGED
@@ -5,6 +5,55 @@ const reporting = require('../lib/reporting');
5
5
  const extend = require('../lib/extend');
6
6
  const e = exposes.presets;
7
7
  const ea = exposes.access;
8
+ const herdsman = require('zigbee-herdsman');
9
+
10
+ const manufacturerOptions = {manufacturerCode: herdsman.Zcl.ManufacturerCode._4_NOKS};
11
+
12
+ const bitron = {
13
+ fz: {
14
+ thermostat_hysteresis: {
15
+ cluster: 'hvacThermostat',
16
+ type: ['attributeReport', 'readResponse'],
17
+ convert: (model, msg, publish, options, meta) => {
18
+ const result = {};
19
+
20
+ if (msg.data.hasOwnProperty('fourNoksHysteresisHigh')) {
21
+ if (!result.hasOwnProperty('hysteresis')) result.hysteresis = {};
22
+ result.hysteresis.high = msg.data.fourNoksHysteresisHigh;
23
+ }
24
+
25
+ if (msg.data.hasOwnProperty('fourNoksHysteresisLow')) {
26
+ if (!result.hasOwnProperty('hysteresis')) result.hysteresis = {};
27
+ result.hysteresis.low = msg.data.fourNoksHysteresisLow;
28
+ }
29
+
30
+ return result;
31
+ },
32
+ },
33
+ },
34
+ tz: {
35
+ thermostat_hysteresis: {
36
+ key: ['hysteresis', 'hysteresis'],
37
+ convertSet: async (entity, key, value, meta) => {
38
+ const result = {state: {hysteresis: {}}};
39
+ if (value.hasOwnProperty('high')) {
40
+ await entity.write('hvacThermostat', {'fourNoksHysteresisHigh': value.high}, manufacturerOptions);
41
+ result.state.hysteresis.high = value.high;
42
+ }
43
+
44
+ if (value.hasOwnProperty('low')) {
45
+ await entity.write('hvacThermostat', {'fourNoksHysteresisLow': value.low}, manufacturerOptions);
46
+ result.state.hysteresis.low = value.low;
47
+ }
48
+
49
+ return result;
50
+ },
51
+ convertGet: async (entity, key, meta) => {
52
+ await entity.read('hvacThermostat', ['fourNoksHysteresisHigh', 'fourNoksHysteresisLow'], manufacturerOptions);
53
+ },
54
+ },
55
+ },
56
+ };
8
57
 
9
58
  module.exports = [
10
59
  {
@@ -190,12 +239,12 @@ module.exports = [
190
239
  model: 'AV2010/32',
191
240
  vendor: 'SMaBiT (Bitron Video)',
192
241
  description: 'Wireless wall thermostat with relay',
193
- fromZigbee: [fz.legacy.thermostat_att_report, fz.battery, fz.hvac_user_interface],
242
+ fromZigbee: [fz.legacy.thermostat_att_report, fz.battery, fz.hvac_user_interface, bitron.fz.thermostat_hysteresis],
194
243
  toZigbee: [
195
244
  tz.thermostat_control_sequence_of_operation, tz.thermostat_occupied_heating_setpoint,
196
245
  tz.thermostat_occupied_cooling_setpoint, tz.thermostat_local_temperature_calibration,
197
246
  tz.thermostat_local_temperature, tz.thermostat_running_state, tz.thermostat_temperature_display_mode,
198
- tz.thermostat_keypad_lockout, tz.thermostat_system_mode, tz.battery_voltage,
247
+ tz.thermostat_keypad_lockout, tz.thermostat_system_mode, tz.battery_voltage, bitron.tz.thermostat_hysteresis,
199
248
  ],
200
249
  exposes: (device, options) => {
201
250
  const dynExposes = [];
@@ -214,6 +263,11 @@ module.exports = [
214
263
  modes.push('cool');
215
264
  }
216
265
 
266
+ const hysteresisExposes = exposes.composite('hysteresis', 'hysteresis', ea.ALL)
267
+ .withFeature(exposes.numeric('low', ea.SET))
268
+ .withFeature(exposes.numeric('high', ea.SET))
269
+ .withDescription('Set thermostat hysteresis low and high trigger values. (1 = 0.01ºC)');
270
+
217
271
  dynExposes.push(exposes.climate()
218
272
  .withSetpoint('occupied_heating_setpoint', 7, 30, 0.5)
219
273
  .withLocalTemperature()
@@ -222,9 +276,11 @@ module.exports = [
222
276
  .withLocalTemperatureCalibration()
223
277
  .withControlSequenceOfOperation(['heating_only', 'cooling_only'], ea.ALL));
224
278
  dynExposes.push(e.keypad_lockout());
279
+ dynExposes.push(hysteresisExposes);
225
280
  dynExposes.push(e.battery().withAccess(ea.STATE_GET));
226
281
  dynExposes.push(e.battery_low());
227
282
  dynExposes.push(e.linkquality());
283
+
228
284
  return dynExposes;
229
285
  },
230
286
  meta: {battery: {voltageToPercentage: '3V_2500'}},
@@ -241,6 +297,7 @@ module.exports = [
241
297
  await reporting.batteryAlarmState(endpoint);
242
298
  await reporting.batteryVoltage(endpoint);
243
299
  await endpoint.read('hvacThermostat', ['ctrlSeqeOfOper', 'localTemperatureCalibration']);
300
+ await endpoint.read('hvacThermostat', ['fourNoksHysteresisHigh', 'fourNoksHysteresisLow'], manufacturerOptions);
244
301
  },
245
302
  },
246
303
  {
@@ -10,7 +10,7 @@ module.exports = [
10
10
  model: 'EB-E14-P45-RGBW',
11
11
  vendor: 'EssentielB',
12
12
  description: 'Smart LED bulb',
13
- extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
13
+ extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 370]}),
14
14
  },
15
15
  {
16
16
  zigbeeModel: ['EB-E14-FLA-CCT'],
@@ -451,6 +451,13 @@ module.exports = [
451
451
  description: 'Zigbee 6W E26/E27 Bulb RGB+CCT',
452
452
  extend: gledoptoExtend.light_onoff_brightness_colortemp_color(),
453
453
  },
454
+ {
455
+ zigbeeModel: ['GL-C-103P'],
456
+ model: 'GL-C-103P',
457
+ vendor: 'Gledopto',
458
+ description: 'Zigbee LED controller (pro)',
459
+ extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [158, 495]}),
460
+ },
454
461
  {
455
462
  zigbeeModel: ['GL-G-004P'],
456
463
  model: 'GL-G-004P',
@@ -198,7 +198,7 @@ module.exports = [
198
198
  zigbeeModel: ['CLA60 RGBW JP'],
199
199
  model: 'SMARTZBA60RGBW',
200
200
  vendor: 'LEDVANCE',
201
- description: 'SMART+ lamp E26 RGBW',
201
+ description: 'SMART+ lamp B22D RGBTW',
202
202
  extend: extend.ledvance.light_onoff_brightness_colortemp_color({colorTempRange: [153, 526]}),
203
203
  ota: ota.ledvance,
204
204
  },
package/devices/owon.js CHANGED
@@ -282,7 +282,7 @@ module.exports = [
282
282
  ],
283
283
  },
284
284
  {
285
- zigbeeModel: ['PCT504'],
285
+ zigbeeModel: ['PCT504', 'PCT504-E'],
286
286
  model: 'PCT504',
287
287
  vendor: 'OWON',
288
288
  description: 'HVAC fan coil',
@@ -887,9 +887,9 @@ module.exports = [
887
887
  },
888
888
  {
889
889
  zigbeeModel: ['LCA006'],
890
- model: '9290024689',
890
+ model: '9290024688',
891
891
  vendor: 'Philips',
892
- description: 'Hue white and color ambiance B22 1100lm',
892
+ description: 'Hue white and color ambiance E27 1100lm',
893
893
  extend: philips.extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
894
894
  },
895
895
  {
package/devices/tuya.js CHANGED
@@ -1491,8 +1491,7 @@ module.exports = [
1491
1491
  },
1492
1492
  },
1493
1493
  {
1494
- fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_aqnazj70'}, {modelID: 'TS0601', manufacturerName: '_TZE200_k6jhsr0q'},
1495
- {modelID: 'TS0601', manufacturerName: '_TZE200_di3tfv5b'}],
1494
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE200_aqnazj70', '_TZE200_k6jhsr0q', '_TZE200_di3tfv5b', '_TZE200_mexisfik']),
1496
1495
  model: 'TS0601_switch_4_gang',
1497
1496
  vendor: 'TuYa',
1498
1497
  description: '4 gang switch',
@@ -2665,6 +2664,26 @@ module.exports = [
2665
2664
  [66, 100, 160].includes(device.applicationVersion), // polling for energy
2666
2665
  ),
2667
2666
  },
2667
+ {
2668
+ fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_wbloefbf'}],
2669
+ model: 'TS011F_switch_5_gang',
2670
+ description: '2 gang 2 usb 1 wall ac outlet',
2671
+ whiteLabel: [{vendor: 'Milfra', model: 'M11Z'}],
2672
+ vendor: 'TuYa',
2673
+ extend: tuya.extend.switch({powerOutageMemory: true, childLock: true, endpoints: ['l1', 'l2', 'l3', 'l4', 'l5']}),
2674
+ endpoint: (device) => {
2675
+ return {l1: 1, l2: 2, l3: 3, l4: 4, l5: 5};
2676
+ },
2677
+ meta: {multiEndpoint: true},
2678
+ configure: async (device, coordinatorEndpoint, logger) => {
2679
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
2680
+ await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
2681
+ await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
2682
+ await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
2683
+ await reporting.bind(device.getEndpoint(4), coordinatorEndpoint, ['genOnOff']);
2684
+ await reporting.bind(device.getEndpoint(5), coordinatorEndpoint, ['genOnOff']);
2685
+ },
2686
+ },
2668
2687
  {
2669
2688
  fingerprint: tuya.fingerprint('TS0601', ['_TZE200_ntcy3xu1', '_TZE200_ytibqbra']),
2670
2689
  model: 'TS0601_smoke_1',
package/devices/ubisys.js CHANGED
@@ -925,4 +925,14 @@ module.exports = [
925
925
  },
926
926
  ota: ota.ubisys,
927
927
  },
928
+ {
929
+ zigbeeModel: ['R0 (5501)'],
930
+ model: 'R0',
931
+ vendor: 'Ubisys',
932
+ description: 'Zigbee Router',
933
+ fromZigbee: [fz.linkquality_from_basic],
934
+ toZigbee: [],
935
+ exposes: [],
936
+ ota: ota.ubisys,
937
+ },
928
938
  ];
package/lib/tuya.js CHANGED
@@ -1245,6 +1245,14 @@ const valueConverter = {
1245
1245
  divideBy10: valueConverterBasic.divideBy(10),
1246
1246
  divideBy1000: valueConverterBasic.divideBy(1000),
1247
1247
  raw: valueConverterBasic.raw(),
1248
+ coverPosition: {
1249
+ to: async (v, meta) => {
1250
+ return meta.options.invert_cover ? 100 - v : v;
1251
+ },
1252
+ from: (v, meta, options) => {
1253
+ return options.invert_cover ? 100 - v : v;
1254
+ },
1255
+ },
1248
1256
  plus1: {
1249
1257
  from: (v) => v + 1,
1250
1258
  to: (v) => v - 1,
@@ -1824,9 +1832,9 @@ const tuyaFz = {
1824
1832
  if (dpEntry) {
1825
1833
  const value = getDataValue(dpValue);
1826
1834
  if (dpEntry[1]) {
1827
- result[dpEntry[1]] = dpEntry[2].from(value, meta);
1835
+ result[dpEntry[1]] = dpEntry[2].from(value, meta, options);
1828
1836
  } else if (dpEntry[2]) {
1829
- result = {...result, ...dpEntry[2].from(value, meta)};
1837
+ result = {...result, ...dpEntry[2].from(value, meta, options)};
1830
1838
  }
1831
1839
  } else {
1832
1840
  meta.logger.debug(`Datapoint ${dpId} not defined for '${meta.device.manufacturerName}' ` +
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "15.0.79",
3
+ "version": "15.0.81",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [