zigbee-herdsman-converters 14.0.579 → 14.0.582

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.
@@ -1094,9 +1094,9 @@ const converters = {
1094
1094
  cluster: 'genScenes',
1095
1095
  type: 'commandStore',
1096
1096
  convert: (model, msg, publish, options, meta) => {
1097
- if (utils.hasAlreadyProcessedMessage(msg)) return;
1098
- const payload = {action: utils.postfixWithEndpointName(`store_${msg.data.sceneid}`, msg, model, meta)};
1099
- utils.addActionGroup(payload, msg, model);
1097
+ if (hasAlreadyProcessedMessage(msg)) return;
1098
+ const payload = {action: postfixWithEndpointName(`store_${msg.data.sceneid}`, msg, model, meta)};
1099
+ addActionGroup(payload, msg, model);
1100
1100
  return payload;
1101
1101
  },
1102
1102
  },
package/devices/adeo.js CHANGED
@@ -36,6 +36,13 @@ module.exports = [
36
36
  description: 'ENKI LEXMAN E27 LED white',
37
37
  extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 454]}),
38
38
  },
39
+ {
40
+ zigbeeModel: ['ZBEK-6'],
41
+ model: 'IG-CDZB2AG009RA-MZN-01',
42
+ vendor: 'ADEO',
43
+ description: 'ENKI LEXMAN E27 Led white bulb',
44
+ extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 454]}),
45
+ },
39
46
  {
40
47
  zigbeeModel: ['ZBEK-4'],
41
48
  model: 'IM-CDZDGAAA0005KA_MAN',
@@ -57,6 +64,13 @@ module.exports = [
57
64
  description: 'ENKI LEXMAN E27 LED white',
58
65
  extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
59
66
  },
67
+ {
68
+ zigbeeModel: ['ZBEK-14'],
69
+ model: 'IC-CDZFB2AC005HA-MZN',
70
+ vendor: 'ADEO',
71
+ description: 'ENKI LEXMAN E14 LED white',
72
+ extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
73
+ },
60
74
  {
61
75
  zigbeeModel: ['ZBEK-5'],
62
76
  model: 'IST-CDZFB2AS007NA-MZN-01',
@@ -0,0 +1,11 @@
1
+ const extend = require('../lib/extend');
2
+
3
+ module.exports = [
4
+ {
5
+ zigbeeModel: ['HA-ZM12/24-1K'],
6
+ model: 'HA-ZM12/24-1K',
7
+ vendor: 'Halemeier',
8
+ description: '1-channel smart receiver',
9
+ extend: extend.light_onoff_brightness(),
10
+ },
11
+ ];
@@ -1,8 +1,9 @@
1
1
  const exposes = require('../lib/exposes');
2
- const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee};
2
+ const fz = require('../converters/fromZigbee');
3
3
  const tz = require('../converters/toZigbee');
4
4
  const reporting = require('../lib/reporting');
5
5
  const e = exposes.presets;
6
+ const ota = require('../lib/ota');
6
7
 
7
8
  module.exports = [
8
9
  {
@@ -11,13 +12,16 @@ module.exports = [
11
12
  vendor: 'Home Control AS',
12
13
  description: 'Heimgard (Wattle) door lock pro',
13
14
  fromZigbee: [fz.lock, fz.battery],
14
- toZigbee: [tz.lock],
15
+ toZigbee: [tz.lock, tz.lock_auto_relock_time, tz.lock_sound_volume],
16
+ ota: ota.zigbeeOTA,
15
17
  configure: async (device, coordinatorEndpoint, logger) => {
16
18
  const endpoint = device.getEndpoint(1);
17
19
  await reporting.bind(endpoint, coordinatorEndpoint, ['closuresDoorLock', 'genPowerCfg']);
18
20
  await reporting.lockState(endpoint);
19
21
  await reporting.batteryPercentageRemaining(endpoint);
22
+ await endpoint.read('closuresDoorLock', ['lockState', 'soundVolume']);
20
23
  },
21
- exposes: [e.lock(), e.battery()],
24
+ exposes: [
25
+ e.lock(), e.battery(), e.auto_relock_time().withValueMin(0).withValueMax(3600), e.sound_volume()],
22
26
  },
23
27
  ];
package/devices/lellki.js CHANGED
@@ -115,6 +115,7 @@ module.exports = [
115
115
  toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory],
116
116
  configure: async (device, coordinatorEndpoint, logger) => {
117
117
  const endpoint = device.getEndpoint(1);
118
+ await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
118
119
  await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
119
120
  endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', {acCurrentDivisor: 1000, acCurrentMultiplier: 1});
120
121
  endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 100, multiplier: 1});
package/devices/orvibo.js CHANGED
@@ -5,7 +5,32 @@ const reporting = require('../lib/reporting');
5
5
  const extend = require('../lib/extend');
6
6
  const e = exposes.presets;
7
7
 
8
+ const tzLocal = {
9
+ DD10Z_brightness: {
10
+ key: ['brightness'],
11
+ options: [exposes.options.transition()],
12
+ convertSet: async (entity, key, value, meta) => {
13
+ // Device doesn't support moveToLevelWithOnOff therefore this converter is needed.
14
+ await entity.command('genLevelCtrl', 'moveToLevel', {level: Number(value), transtime: 0}, {disableDefaultResponse: true});
15
+ return {state: {brightness: value}};
16
+ },
17
+ convertGet: async (entity, key, meta) => {
18
+ await entity.read('genLevelCtrl', ['currentLevel']);
19
+ },
20
+ },
21
+ };
22
+
8
23
  module.exports = [
24
+ {
25
+ zigbeeModel: ['ccb9f56837ab41dcad366fb1452096b6'],
26
+ model: 'DD10Z',
27
+ vendor: 'ORVIBO',
28
+ description: 'Smart spotlight',
29
+ // https://github.com/Koenkk/zigbee2mqtt/issues/13123#issuecomment-1198793749
30
+ meta: {disableDefaultResponse: true},
31
+ toZigbee: [tz.on_off, tzLocal.DD10Z_brightness, tz.light_colortemp, tz.effect],
32
+ extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 370], disableColorTempStartup: true}),
33
+ },
9
34
  {
10
35
  zigbeeModel: ['4a33f5ea766a4c96a962b371ffde9943'],
11
36
  model: 'DS20Z07B',
@@ -1469,6 +1469,13 @@ module.exports = [
1469
1469
  description: 'Hue White and color ambiance Gradient Signe table lamp (white)',
1470
1470
  extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
1471
1471
  },
1472
+ {
1473
+ zigbeeModel: ['915005987001'],
1474
+ model: '915005987001',
1475
+ vendor: 'Philips',
1476
+ description: 'Hue White and color ambiance Gradient Signe table lamp (black)',
1477
+ extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
1478
+ },
1472
1479
  {
1473
1480
  zigbeeModel: ['5060730P7_01', '5060730P7_02', '5060730P7_03', '5060730P7_04', '5060730P7_05'],
1474
1481
  model: '5060730P7',
@@ -1859,7 +1866,7 @@ module.exports = [
1859
1866
  ota: ota.zigbeeOTA,
1860
1867
  },
1861
1868
  {
1862
- zigbeeModel: ['LOM002', 'LOM004'],
1869
+ zigbeeModel: ['LOM002', 'LOM004', 'LOM010'],
1863
1870
  model: '046677552343',
1864
1871
  vendor: 'Philips',
1865
1872
  description: 'Hue smart plug bluetooth',
@@ -2096,6 +2103,20 @@ module.exports = [
2096
2103
  description: 'Hue White Ambinance G25 E26 Edison Filament Globe',
2097
2104
  extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [222, 454]}),
2098
2105
  },
2106
+ {
2107
+ zigbeeModel: ['LWE005'],
2108
+ model: '9290024796',
2109
+ vendor: 'Philips',
2110
+ description: 'Hue Filament White E12',
2111
+ extend: hueExtend.light_onoff_brightness(),
2112
+ },
2113
+ {
2114
+ zigbeeModel: ['LTA007'],
2115
+ model: '9290024783',
2116
+ vendor: 'Philips',
2117
+ description: 'Hue Filament White Ambiance A60/E27 Bluetooth',
2118
+ extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [222, 454]}),
2119
+ },
2099
2120
  {
2100
2121
  zigbeeModel: ['LWV002'],
2101
2122
  model: '046677551780',
@@ -2139,7 +2160,7 @@ module.exports = [
2139
2160
  extend: hueExtend.light_onoff_brightness_colortemp(),
2140
2161
  },
2141
2162
  {
2142
- zigbeeModel: ['929003047101', '929003045101_03'],
2163
+ zigbeeModel: ['929003047101', '929003045101_03', '929003045101_01', '929003045101_02'],
2143
2164
  model: '929003047101',
2144
2165
  vendor: 'Philips',
2145
2166
  description: 'Hue White ambiance Milliskin (round)',
@@ -17,6 +17,7 @@ module.exports = [
17
17
  exposes: [],
18
18
  },
19
19
  {
20
+ zigbeeModel: ['MOT-C1Z06C\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000'],
20
21
  fingerprint: [{manufId: 4368, endpoints: [{ID: 1, profileID: 260, deviceID: 512,
21
22
  inputClusters: [0, 3, 4, 5, 6, 8, 10, 21, 256, 64544, 64545], outputClusters: [3, 64544]}]}],
22
23
  model: 'NSAV061',
@@ -137,13 +137,21 @@ module.exports = [
137
137
  model: 'E11-N1EA',
138
138
  vendor: 'Sengled',
139
139
  description: 'Element plus color (A19)',
140
- extend: extend.light_onoff_brightness_colortemp_color({noConfigure: true}),
140
+ fromZigbee: extend.light_onoff_brightness().fromZigbee.concat([fz.metering]),
141
+ toZigbee: extend.light_onoff_brightness().toZigbee,
141
142
  ota: ota.zigbeeOTA,
142
143
  configure: async (device, coordinatorEndpoint, logger) => {
143
144
  await extend.light_onoff_brightness().configure(device, coordinatorEndpoint, logger);
144
145
  device.powerSource = 'Mains (single phase)';
145
146
  device.save();
147
+
148
+ const endpoint = device.getEndpoint(1);
149
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']);
150
+ await reporting.readMeteringMultiplierDivisor(endpoint);
151
+ await reporting.currentSummDelivered(endpoint);
152
+ await reporting.instantaneousDemand(endpoint);
146
153
  },
154
+ exposes: extend.light_onoff_brightness().exposes.concat([e.power(), e.energy()]),
147
155
  },
148
156
  {
149
157
  zigbeeModel: ['E11-U2E'],
package/devices/tuya.js CHANGED
@@ -438,7 +438,8 @@ module.exports = [
438
438
  {modelID: 'TS0001', manufacturerName: '_TZ3000_rmjr4ufz'},
439
439
  {modelID: 'TS0001', manufacturerName: '_TZ3000_v7gnj3ad'},
440
440
  {modelID: 'TS0001', manufacturerName: '_TZ3000_mx3vgyea'},
441
- {modelID: 'TS0001', manufacturerName: '_TZ3000_qsp2pwtf'}],
441
+ {modelID: 'TS0001', manufacturerName: '_TZ3000_qsp2pwtf'},
442
+ {modelID: 'TS0001', manufacturerName: '_TZ3000_46t1rvdu'}],
442
443
  model: 'WHD02',
443
444
  vendor: 'TuYa',
444
445
  whiteLabel: [{vendor: 'TuYa', model: 'iHSW02'}],
@@ -558,7 +559,8 @@ module.exports = [
558
559
  {modelID: 'TS0503B', manufacturerName: '_TZ3210_a5fxguxr'},
559
560
  {modelID: 'TS0503B', manufacturerName: '_TZ3210_778drfdt'},
560
561
  {modelID: 'TS0503B', manufacturerName: '_TZ3000_g5xawfcq'},
561
- {modelID: 'TS0503B', manufacturerName: '_TZ3210_trm3l2aw'}],
562
+ {modelID: 'TS0503B', manufacturerName: '_TZ3210_trm3l2aw'},
563
+ {modelID: 'TS0503B', manufacturerName: '_TZ3210_odlghna1'}],
562
564
  model: 'TS0503B',
563
565
  vendor: 'TuYa',
564
566
  description: 'Zigbee RGB light',
@@ -594,7 +596,8 @@ module.exports = [
594
596
  {modelID: 'TS0501B', manufacturerName: '_TZ3210_grnwgegn'},
595
597
  {modelID: 'TS0501B', manufacturerName: '_TZ3210_nehayyhx'},
596
598
  {modelID: 'TS0501B', manufacturerName: '_TZ3210_wuheofsg'},
597
- {modelID: 'TS0501B', manufacturerName: '_TZ3210_e5t9bfdv'}],
599
+ {modelID: 'TS0501B', manufacturerName: '_TZ3210_e5t9bfdv'},
600
+ {modelID: 'TS0501B', manufacturerName: '_TZ3210_19qb27da'}],
598
601
  model: 'TS0501B',
599
602
  description: 'Zigbee light',
600
603
  vendor: 'TuYa',
@@ -627,6 +630,7 @@ module.exports = [
627
630
  {modelID: 'TS0202', manufacturerName: '_TZ3000_tiwq83wk'},
628
631
  {modelID: 'TS0202', manufacturerName: '_TZ3000_ykwcwxmz'},
629
632
  {modelID: 'TS0202', manufacturerName: '_TZ3000_hgu1dlak'},
633
+ {modelID: 'TS0202', manufacturerName: '_TZ3000_h4wnrtck'},
630
634
  {modelID: 'WHD02', manufacturerName: '_TZ3000_hktqahrq'}],
631
635
  model: 'TS0202',
632
636
  vendor: 'TuYa',
package/devices/vimar.js CHANGED
@@ -6,6 +6,17 @@ const extend = require('../lib/extend');
6
6
  const e = exposes.presets;
7
7
 
8
8
  module.exports = [
9
+ {
10
+ zigbeeModel: ['On_Off_Switch_Module_v1.0'],
11
+ model: '03981',
12
+ vendor: 'Vimar',
13
+ description: 'IoT connected relay module',
14
+ extend: extend.switch(),
15
+ configure: async (device, coordinatorEndpoint, logger) => {
16
+ const endpoint = device.getEndpoint(10);
17
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
18
+ },
19
+ },
9
20
  {
10
21
  zigbeeModel: ['2_Way_Switch_v1.0', 'On_Off_Switch_v1.0'],
11
22
  model: '14592.0',
package/lib/ota/ubisys.js CHANGED
@@ -21,22 +21,25 @@ async function getImageMeta(current, logger, device) {
21
21
 
22
22
  imageRegex.lastIndex = 0; // reset (global) regex for next exec to match from the beginning again
23
23
  let imageMatch = imageRegex.exec(firmwarePageHtml);
24
+ let highestMatch = null;
24
25
  while (imageMatch != null) {
25
26
  logger.debug(`OTA ubisys: image found: ${imageMatch[0]}`);
26
27
  if (parseInt(imageMatch[1], 16) === imageType &&
27
28
  parseInt(imageMatch[2], 16) <= hardwareVersion && hardwareVersion <= parseInt(imageMatch[3], 16)) {
28
- break;
29
+ if (highestMatch === null || parseInt(highestMatch[4], 16) < parseInt(imageMatch[4], 16)) {
30
+ highestMatch = imageMatch;
31
+ }
29
32
  }
30
33
  imageMatch = imageRegex.exec(firmwarePageHtml);
31
34
  }
32
- assert(imageMatch !== null,
35
+ assert(highestMatch !== null,
33
36
  `No image available for imageType '0x${imageType.toString(16)}' with hardware version ${hardwareVersion}`);
34
37
 
35
38
  return {
36
- hardwareVersionMin: parseInt(imageMatch[2], 16),
37
- hardwareVersionMax: parseInt(imageMatch[3], 16),
38
- fileVersion: parseInt(imageMatch[4], 16),
39
- url: url.resolve(firmwareHtmlPageUrl, imageMatch[0]),
39
+ hardwareVersionMin: parseInt(highestMatch[2], 16),
40
+ hardwareVersionMax: parseInt(highestMatch[3], 16),
41
+ fileVersion: parseInt(highestMatch[4], 16),
42
+ url: url.resolve(firmwareHtmlPageUrl, highestMatch[0]),
40
43
  };
41
44
  }
42
45
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.579",
3
+ "version": "14.0.582",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [