zigbee-herdsman-converters 14.0.481 → 14.0.484

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
@@ -106,6 +106,13 @@ module.exports = [
106
106
  description: 'ENKI Lexman E27 14W to 100W LED RGBW v2',
107
107
  extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 370]}),
108
108
  },
109
+ {
110
+ zigbeeModel: ['ZBEK-1'],
111
+ model: 'IA-CDZOTAAA007MA-MAN',
112
+ vendor: 'ADEO',
113
+ description: 'ENKI LEXMAN E27 7.2 to 60W LED RGBW',
114
+ extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 370]}),
115
+ },
109
116
  {
110
117
  zigbeeModel: ['LXEK-7'],
111
118
  model: '9CZA-A806ST-Q1Z',
package/devices/ikea.js CHANGED
@@ -378,7 +378,7 @@ module.exports = [
378
378
  },
379
379
  {
380
380
  zigbeeModel: ['TRADFRI bulb E27 CWS opal 600lm', 'TRADFRI bulb E26 CWS opal 600lm', 'TRADFRI bulb E14 CWS opal 600lm',
381
- 'TRADFRI bulb E12 CWS opal 600lm'],
381
+ 'TRADFRI bulb E12 CWS opal 600lm', 'TRADFRI bulb E27 C/WS opal 600'],
382
382
  model: 'LED1624G9',
383
383
  vendor: 'IKEA',
384
384
  description: 'TRADFRI LED bulb E14/E26/E27 600 lumen, dimmable, color, opal white',
@@ -590,6 +590,8 @@ module.exports = [
590
590
  model: 'E1842',
591
591
  description: 'KNYCKLAN receiver electronic water valve shut-off',
592
592
  vendor: 'IKEA',
593
+ fromZigbee: extend.switch().fromZigbee.concat([fz.ias_water_leak_alarm_1]),
594
+ exposes: extend.switch().exposes.concat([e.water_leak()]),
593
595
  extend: extend.switch(),
594
596
  configure: async (device, coordinatorEndpoint, logger) => {
595
597
  const endpoint = device.getEndpoint(1);
@@ -704,6 +706,23 @@ module.exports = [
704
706
  },
705
707
  exposes: [e.cover_position(), e.battery()],
706
708
  },
709
+ {
710
+ zigbeeModel: ['TREDANSEN block-out cellul blind'],
711
+ model: 'E2103',
712
+ vendor: 'IKEA',
713
+ description: 'TREDANSEN cellular blind',
714
+ fromZigbee: [fz.cover_position_tilt, fz.battery],
715
+ toZigbee: [tz.cover_state, tz.cover_position_tilt],
716
+ meta: {battery: {dontDividePercentage: true}},
717
+ ota: ota.tradfri,
718
+ configure: async (device, coordinatorEndpoint, logger) => {
719
+ const endpoint = device.getEndpoint(1);
720
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'closuresWindowCovering']);
721
+ await reporting.batteryPercentageRemaining(endpoint);
722
+ await reporting.currentPositionLiftPercentage(endpoint);
723
+ },
724
+ exposes: [e.cover_position(), e.battery()],
725
+ },
707
726
  {
708
727
  zigbeeModel: ['TRADFRI open/close remote'],
709
728
  model: 'E1766',
package/devices/iris.js CHANGED
@@ -161,4 +161,20 @@ module.exports = [
161
161
  device.save();
162
162
  },
163
163
  },
164
+ {
165
+ zigbeeModel: ['3315-L'],
166
+ model: '3315-L',
167
+ vendor: 'Iris',
168
+ description: 'Water sensor',
169
+ fromZigbee: [fz.temperature, fz.ias_water_leak_alarm_1, fz.battery],
170
+ exposes: [e.temperature(), e.water_leak(), e.battery_low(), e.tamper(), e.battery()],
171
+ toZigbee: [],
172
+ meta: {battery: {voltageToPercentage: '3V_2500'}},
173
+ configure: async (device, coordinatorEndpoint, logger) => {
174
+ const endpoint = device.getEndpoint(1);
175
+ await reporting.bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
176
+ await reporting.temperature(endpoint);
177
+ await reporting.batteryVoltage(endpoint);
178
+ },
179
+ },
164
180
  ];
package/devices/lidl.js CHANGED
@@ -731,6 +731,14 @@ module.exports = [
731
731
  await reporting.onOff(endpoint);
732
732
  },
733
733
  },
734
+ {
735
+ fingerprint: [{modelID: 'TS0505B', manufacturerName: '_TZ3000_lxw3zcdk'}],
736
+ model: 'HG08633',
737
+ vendor: 'Lidl',
738
+ description: 'Livarno gardenspot RGB',
739
+ extend: extend.light_onoff_brightness_colortemp_color({disableColorTempStartup: true, colorTempRange: [153, 500]}),
740
+ meta: {applyRedFix: true, enhancedHue: false},
741
+ },
734
742
  {
735
743
  fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_chyvmhay'}],
736
744
  model: '368308_2010',
package/devices/lixee.js CHANGED
@@ -196,7 +196,8 @@ const fzLocal = {
196
196
  // we are doing it with exclusion and not inclusion because the list is dynamic (based on zlinky mode),
197
197
  // and change based on that. Just some few attributes are useless, so we exclude them
198
198
  const tarifsDef = {
199
- histo_BASE: {fname: 'Historique - BASE',
199
+ histo_BASE: {
200
+ fname: 'Historique - BASE',
200
201
  currentTarf: 'BASE', excluded: [
201
202
  'HCHC',
202
203
  'HCHP',
@@ -212,7 +213,8 @@ const tarifsDef = {
212
213
  'DEMAIN',
213
214
  'PEJP',
214
215
  ]},
215
- histo_HCHP: {fname: 'Historique - HCHP',
216
+ histo_HCHP: {
217
+ fname: 'Historique - HCHP',
216
218
  currentTarf: 'HC..', excluded: [
217
219
  'BASE',
218
220
  'EJPHN',
@@ -226,7 +228,8 @@ const tarifsDef = {
226
228
  'DEMAIN',
227
229
  'PEJP',
228
230
  ]},
229
- histo_EJP: {fname: 'Historique - EJP',
231
+ histo_EJP: {
232
+ fname: 'Historique - EJP',
230
233
  currentTarf: 'EJP.', excluded: [
231
234
  'BASE',
232
235
  'HCHC',
@@ -239,7 +242,8 @@ const tarifsDef = {
239
242
  'BBRHPJR',
240
243
  'DEMAIN',
241
244
  ]},
242
- histo_BBR: {fname: 'Historique - BBR',
245
+ histo_BBR: {
246
+ fname: 'Historique - BBR',
243
247
  currentTarf: 'BBR', excluded: [
244
248
  'BASE',
245
249
  'HCHC',
@@ -248,7 +252,8 @@ const tarifsDef = {
248
252
  'EJPHPM',
249
253
  'PEJP',
250
254
  ]},
251
- stand_SEM_WE_MERCR: {fname: 'Standard - Sem WE Mercredi',
255
+ stand_SEM_WE_MERCR: {
256
+ fname: 'Standard - Sem WE Mercredi',
252
257
  currentTarf: 'SEM WE MERCREDI', excluded: [
253
258
  'EASF04',
254
259
  'EASF05',
@@ -271,8 +276,10 @@ const tarifsDef = {
271
276
  'PJOURF+1',
272
277
  'PPOINTE1',
273
278
  ]},
274
- stand_HPHC: {fname: 'Standard - Heure Pleine Heure Creuse',
275
- currentTarf: 'H PLEINE/CREUSE', excluded: [
279
+ stand_BASE: {
280
+ fname: 'Standard - BASE',
281
+ currentTarf: 'BASE',
282
+ excluded: [
276
283
  'EASF03',
277
284
  'EASF04',
278
285
  'EASF05',
@@ -295,8 +302,33 @@ const tarifsDef = {
295
302
  'PJOURF+1',
296
303
  'PPOINTE1',
297
304
  ]},
305
+ stand_HPHC: {
306
+ fname: 'Standard - Heure Pleine Heure Creuse',
307
+ currentTarf: 'H PLEINE/CREUSE', excluded: [
308
+ 'EASF03',
309
+ 'EASF04',
310
+ 'EASF05',
311
+ 'EASF06',
312
+ 'EASF07',
313
+ 'EASF08',
314
+ 'EASF09',
315
+ 'EASF10',
316
+ 'EASD03',
317
+ 'EASD04',
318
+ 'DPM1',
319
+ 'DPM2',
320
+ 'DPM3',
321
+ 'FPM1',
322
+ 'FPM2',
323
+ 'FPM3',
324
+ 'NJOURF',
325
+ 'NJOURF+1',
326
+ 'PJOURF+1',
327
+ 'PPOINTE1',
328
+ ]},
298
329
  };
299
330
 
331
+
300
332
  const linkyModeDef = {
301
333
  standard: 'standard',
302
334
  legacy: 'historique',
@@ -505,6 +537,9 @@ function getCurrentConfig(device, options, logger=console) {
505
537
  case linkyMode == linkyModeDef.standard && tarifsDef.stand_HPHC.currentTarf:
506
538
  myExpose = myExpose.filter((a) => !tarifsDef.stand_HPHC.excluded.includes(a.exposes.name));
507
539
  break;
540
+ case linkyMode == linkyModeDef.standard && tarifsDef.stand_BASE.currentTarf:
541
+ myExpose = myExpose.filter((a) => !tarifsDef.stand_BASE.excluded.includes(a.exposes.name));
542
+ break;
508
543
  default:
509
544
  break;
510
545
  }
@@ -20,6 +20,7 @@ module.exports = [
20
20
  await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl', 'haElectricalMeasurement', 'seMetering']);
21
21
  await reporting.brightness(endpoint);
22
22
  await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
23
+ await reporting.readMeteringMultiplierDivisor(endpoint);
23
24
  await reporting.rmsVoltage(endpoint, {min: 10, change: 20}); // Voltage - Min change of 2V
24
25
  await reporting.rmsCurrent(endpoint, {min: 10, change: 10}); // A - z2m displays only the first decimals, change of 10 / 0,01A
25
26
  await reporting.activePower(endpoint, {min: 10, change: 15}); // W - Min change of 1,5W
@@ -28,4 +29,3 @@ module.exports = [
28
29
  exposes: [e.light_brightness(), e.power(), e.current(), e.voltage().withAccess(ea.STATE), e.energy()],
29
30
  },
30
31
  ];
31
-
@@ -54,7 +54,7 @@ const fzLocal = {
54
54
 
55
55
  if (rxAfterTx) {
56
56
  // Send Schneider specific ACK to make PowerTag happy
57
- const networkParameters = await msg.device.zh.getNetworkParameters();
57
+ const networkParameters = await msg.device.zh.constructor.adapter.getNetworkParameters();
58
58
  const payload = {
59
59
  options: 0b000,
60
60
  tempMaster: msg.data.gppNwkAddr,
@@ -29,6 +29,16 @@ module.exports = [
29
29
  description: '50W Zigbee CCT LED driver (constant current)',
30
30
  extend: extend.light_onoff_brightness_colortemp({colorTempRange: [160, 450]}),
31
31
  },
32
+ {
33
+ zigbeeModel: ['ZGRC-KEY-004'],
34
+ model: 'SR-ZG9001K2-DIM',
35
+ vendor: 'Sunricher',
36
+ description: 'Zigbee wall remote control for single color, 1 zone',
37
+ fromZigbee: [fz.command_on, fz.command_off, fz.command_move, fz.command_stop, fz.battery],
38
+ toZigbee: [],
39
+ exposes: [e.battery(), e.action(['on', 'off',
40
+ 'brightness_move_up', 'brightness_move_down', 'brightness_move_stop'])],
41
+ },
32
42
  {
33
43
  zigbeeModel: ['ZGRC-KEY-007'],
34
44
  model: 'SR-ZG9001K2-DIM2',
package/devices/tuya.js CHANGED
@@ -210,7 +210,8 @@ module.exports = [
210
210
  {manufacturerName: '_TZ3000_q6a3tepg'}, {modelID: 'TS000F', manufacturerName: '_TZ3000_m9af2l6g'},
211
211
  {modelID: 'TS0001', manufacturerName: '_TZ3000_npzfdcof'},
212
212
  {modelID: 'TS0001', manufacturerName: '_TZ3000_5ng23zjs'},
213
- {modelID: 'TS0001', manufacturerName: '_TZ3000_v7gnj3ad'}],
213
+ {modelID: 'TS0001', manufacturerName: '_TZ3000_v7gnj3ad'},
214
+ {modelID: 'TS0001', manufacturerName: '_TZ3000_mx3vgyea'}],
214
215
  model: 'WHD02',
215
216
  vendor: 'TuYa',
216
217
  description: 'Wall switch module',
@@ -352,7 +353,8 @@ module.exports = [
352
353
  exposes: [e.occupancy(), e.battery_low(), e.tamper(), e.battery()],
353
354
  },
354
355
  {
355
- fingerprint: [{modelID: 'TS0202', manufacturerName: '_TYZB01_ef5xlc9q'},
356
+ fingerprint: [{modelID: 'TS0202', manufacturerName: '_TYZB01_dr6sduka'},
357
+ {modelID: 'TS0202', manufacturerName: '_TYZB01_ef5xlc9q'},
356
358
  {modelID: 'TS0202', manufacturerName: '_TYZB01_vwqnz1sn'},
357
359
  {modelID: 'TS0202', manufacturerName: '_TYZB01_2b8f6cio'},
358
360
  {modelID: 'TS0202', manufacturerName: '_TZE200_bq5c8xfe'},
@@ -371,7 +373,9 @@ module.exports = [
371
373
  model: 'TS0202',
372
374
  vendor: 'TuYa',
373
375
  description: 'Motion sensor',
374
- whiteLabel: [{vendor: 'Mercator Ikuü', model: 'SMA02P'}, {vendor: 'TuYa', model: 'TY-ZPR06'}],
376
+ whiteLabel: [{vendor: 'Mercator Ikuü', model: 'SMA02P'},
377
+ {vendor: 'TuYa', model: 'TY-ZPR06'},
378
+ {vendor: 'Tesla Smart', model: 'TS0202'}],
375
379
  fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery, fz.ignore_basic_report, fz.ias_occupancy_alarm_1_report],
376
380
  toZigbee: [],
377
381
  exposes: [e.occupancy(), e.battery_low(), e.tamper(), e.battery(), e.battery_voltage()],
@@ -0,0 +1,18 @@
1
+ const reporting = require('../lib/reporting');
2
+ const extend = require('../lib/extend');
3
+
4
+ module.exports = [
5
+ {
6
+ zigbeeModel: ['43023'],
7
+ model: '43023',
8
+ vendor: 'VBLED',
9
+ description: 'ZigBee AC phase-cut dimmer',
10
+ extend: extend.light_onoff_brightness({noConfigure: true}),
11
+ configure: async (device, coordinatorEndpoint, logger) => {
12
+ await extend.light_onoff_brightness().configure(device, coordinatorEndpoint, logger);
13
+ const endpoint = device.getEndpoint(1);
14
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
15
+ await reporting.onOff(endpoint);
16
+ },
17
+ },
18
+ ];
package/devices/xiaomi.js CHANGED
@@ -1118,6 +1118,7 @@ module.exports = [
1118
1118
  }
1119
1119
  },
1120
1120
  exposes: [e.switch(), e.power(), e.energy(), e.power_outage_memory(),
1121
+ e.voltage().withAccess(ea.STATE), e.current(),
1121
1122
  e.device_temperature().withDescription('Device temperature (polled every 30 min)')],
1122
1123
  ota: ota.zigbeeOTA,
1123
1124
  },
package/lib/xiaomi.js CHANGED
@@ -212,7 +212,8 @@ const numericAttributes2Payload = (msg, meta, model, options, dataObject) => {
212
212
  } else if (['MCCGQ11LM'].includes(model.model)) {
213
213
  payload.contact = value === 0;
214
214
  } else if (['SJCGQ11LM'].includes(model.model)) {
215
- payload.water_leak = value === 1;
215
+ // Ignore the message. It seems not reliable. See discussion here https://github.com/Koenkk/zigbee2mqtt/issues/12018
216
+ // payload.water_leak = value === 1;
216
217
  } else if (['JTYJ-GD-01LM/BW'].includes(model.model)) {
217
218
  payload.smoke_density = value;
218
219
  } else {
@@ -514,6 +515,9 @@ const numericAttributes2Payload = (msg, meta, model, options, dataObject) => {
514
515
  case 'mode':
515
516
  payload.operation_mode = ['command', 'event'][value];
516
517
  break;
518
+ case 'modelId':
519
+ // We ignore it, but we add it here to not shown an unknown key in the log
520
+ break;
517
521
  default:
518
522
  if (meta.logger) meta.logger.debug(`${model.zigbeeModel}: unknown key ${key} with value ${value}`);
519
523
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.481",
3
+ "version": "14.0.484",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -38,7 +38,7 @@
38
38
  "buffer-crc32": "^0.2.13",
39
39
  "https-proxy-agent": "^5.0.0",
40
40
  "tar-stream": "^2.2.0",
41
- "zigbee-herdsman": "^0.14.22"
41
+ "zigbee-herdsman": "^0.14.24"
42
42
  },
43
43
  "devDependencies": {
44
44
  "eslint": "*",