zigbee-herdsman-converters 15.0.73 → 15.0.75

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/bosch.js CHANGED
@@ -227,6 +227,21 @@ const fzLocal = {
227
227
  return result;
228
228
  },
229
229
  },
230
+ bosch_ignore_dst: {
231
+ cluster: 'genTime',
232
+ type: 'read',
233
+ convert: async (model, msg, publish, options, meta) => {
234
+ if (msg.data.includes('dstStart', 'dstEnd', 'dstShift')) {
235
+ const response = {
236
+ 'dstStart': {attribute: 0x0003, status: herdsman.Zcl.Status.SUCCESS, value: 0x00},
237
+ 'dstEnd': {attribute: 0x0004, status: herdsman.Zcl.Status.SUCCESS, value: 0x00},
238
+ 'dstShift': {attribute: 0x0005, status: herdsman.Zcl.Status.SUCCESS, value: 0x00},
239
+ };
240
+
241
+ await msg.endpoint.readResponse(msg.cluster, msg.meta.zclTransactionSequenceNumber, response);
242
+ }
243
+ },
244
+ },
230
245
  bosch_thermostat: {
231
246
  cluster: 'hvacThermostat',
232
247
  type: ['attributeReport', 'readResponse'],
@@ -421,7 +436,13 @@ const definition = [
421
436
  vendor: 'Bosch',
422
437
  description: 'Radiator thermostat II',
423
438
  ota: ota.zigbeeOTA,
424
- fromZigbee: [fz.thermostat, fz.battery, fzLocal.bosch_thermostat, fzLocal.bosch_userInterface],
439
+ fromZigbee: [
440
+ fz.thermostat,
441
+ fz.battery,
442
+ fzLocal.bosch_ignore_dst,
443
+ fzLocal.bosch_thermostat,
444
+ fzLocal.bosch_userInterface,
445
+ ],
425
446
  toZigbee: [
426
447
  tz.thermostat_occupied_heating_setpoint,
427
448
  tz.thermostat_local_temperature_calibration,
@@ -482,7 +503,7 @@ const definition = [
482
503
  maximumReportInterval: constants.repInterval.HOUR,
483
504
  reportableChange: 1,
484
505
  }], boschManufacturer);
485
- // report boost as it's disabled by thermostat after some time
506
+ // report boost as it's disabled by thermostat after 5 minutes
486
507
  await endpoint.configureReporting('hvacThermostat', [{
487
508
  attribute: {ID: 0x4043, type: herdsman.Zcl.DataType.enum8},
488
509
  minimumReportInterval: 0,
package/devices/heiman.js CHANGED
@@ -787,4 +787,19 @@ module.exports = [
787
787
  },
788
788
  exposes: [e.co2(), e.battery(), e.humidity(), e.temperature()],
789
789
  },
790
+ {
791
+ zigbeeModel: ['RouteLight-EF-3.0'],
792
+ model: 'HS2RNL',
793
+ vendor: 'HEIMAN',
794
+ description: 'Smart repeater & night light',
795
+ fromZigbee: [fz.on_off, fz.battery],
796
+ toZigbee: [tz.on_off],
797
+ configure: async (device, coordinatorEndpoint, logger) => {
798
+ const endpoint = device.getEndpoint(1);
799
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'genOnOff', 'genLevelCtrl']);
800
+ await reporting.onOff(endpoint); // switch the night light on/off
801
+ await reporting.batteryPercentageRemaining(endpoint); // internal backup battery in case of power outage
802
+ },
803
+ exposes: [e.switch(), e.battery()],
804
+ },
790
805
  ];
package/devices/ikea.js CHANGED
@@ -245,6 +245,71 @@ const ikea = {
245
245
  }
246
246
  },
247
247
  },
248
+ ikea_dots_click_v1: {
249
+ // For remotes with firmware 1.0.012 (20211214)
250
+ cluster: 64639,
251
+ type: 'raw',
252
+ convert: (model, msg, publish, options, meta) => {
253
+ if (!Buffer.isBuffer(msg.data)) return;
254
+ let action;
255
+ const button = msg.data[5];
256
+ switch (msg.data[6]) {
257
+ case 1: action = 'initial_press'; break;
258
+ case 2: action = 'double_press'; break;
259
+ case 3: action = 'long_press'; break;
260
+ }
261
+
262
+ return {action: `dots_${button}_${action}`};
263
+ },
264
+ },
265
+ ikea_dots_click_v2: {
266
+ // For remotes with firmware 1.0.32 (20221219)
267
+ cluster: 'heimanSpecificScenes',
268
+ type: 'raw',
269
+ convert: (model, msg, publish, options, meta) => {
270
+ if (!Buffer.isBuffer(msg.data)) return;
271
+ let button;
272
+ let action;
273
+ switch (msg.endpoint.ID) {
274
+ case 2: button = '1'; break; // 1 dot
275
+ case 3: button = '2'; break; // 2 dot
276
+ }
277
+ switch (msg.data[4]) {
278
+ case 1: action = 'initial_press'; break;
279
+ case 2: action = 'long_press'; break;
280
+ case 3: action = 'short_release'; break;
281
+ case 4: action = 'long_release'; break;
282
+ case 6: action = 'double_press'; break;
283
+ }
284
+
285
+ return {action: `dots_${button}_${action}`};
286
+ },
287
+ },
288
+ ikea_volume_click: {
289
+ cluster: 'genLevelCtrl',
290
+ type: 'commandMoveWithOnOff',
291
+ convert: (model, msg, publish, options, meta) => {
292
+ const direction = msg.data.movemode === 1 ? 'down' : 'up';
293
+ return {action: `volume_${direction}`};
294
+ },
295
+ },
296
+ ikea_volume_hold: {
297
+ cluster: 'genLevelCtrl',
298
+ type: 'commandMove',
299
+ convert: (model, msg, publish, options, meta) => {
300
+ const direction = msg.data.movemode === 1 ? 'down_hold' : 'up_hold';
301
+ return {action: `volume_${direction}`};
302
+ },
303
+ },
304
+ ikea_track_click: {
305
+ cluster: 'genLevelCtrl',
306
+ type: 'commandStep',
307
+ convert: (model, msg, publish, options, meta) => {
308
+ if (utils.hasAlreadyProcessedMessage(msg, model)) return;
309
+ const direction = msg.data.stepmode === 1 ? 'previous' : 'next';
310
+ return {action: `track_${direction}`};
311
+ },
312
+ },
248
313
  },
249
314
  tz: {
250
315
  air_purifier_fan_mode: {
@@ -1073,4 +1138,31 @@ module.exports = [
1073
1138
  }]);
1074
1139
  },
1075
1140
  },
1141
+ {
1142
+ zigbeeModel: ['SYMFONISK sound remote gen2'],
1143
+ model: 'E2123',
1144
+ vendor: 'IKEA',
1145
+ description: 'SYMFONISK sound remote gen2',
1146
+ fromZigbee: [ikea.fz.battery, fz.legacy.E1744_play_pause, ikea.fz.ikea_track_click, ikea.fz.ikea_volume_click,
1147
+ ikea.fz.ikea_volume_hold, ikea.fz.ikea_dots_click_v1, ikea.fz.ikea_dots_click_v2],
1148
+ exposes: [e.battery().withAccess(ea.STATE_GET), e.action(['toggle', 'track_previous', 'track_next', 'volume_up',
1149
+ 'volume_down', 'volume_up_hold', 'volume_down_hold', 'dots_1_initial_press', 'dots_2_initial_press',
1150
+ 'dots_1_long_press', 'dots_2_long_press', 'dots_1_short_release', 'dots_2_short_release', 'dots_1_long_release',
1151
+ 'dots_2_long_release', 'dots_1_double_press', 'dots_2_double_press'])],
1152
+ toZigbee: [tz.battery_percentage_remaining],
1153
+ ota: ota.zigbeeOTA,
1154
+ configure: async (device, coordinatorEndpoint, logger) => {
1155
+ const endpoint1 = device.getEndpoint(1);
1156
+ const endpoint2 = device.getEndpoint(2);
1157
+ const endpoint3 = device.getEndpoint(3);
1158
+ await reporting.bind(endpoint1, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl', 'genPollCtrl']);
1159
+ if (endpoint2) {
1160
+ await reporting.bind(endpoint2, coordinatorEndpoint, ['heimanSpecificScenes']);
1161
+ }
1162
+ if (endpoint3) {
1163
+ await reporting.bind(endpoint3, coordinatorEndpoint, ['heimanSpecificScenes']);
1164
+ }
1165
+ await reporting.batteryVoltage(endpoint1);
1166
+ },
1167
+ },
1076
1168
  ];
package/devices/innr.js CHANGED
@@ -44,6 +44,7 @@ module.exports = [
44
44
  description: 'Smart round ceiling lamp comfort',
45
45
  extend: extend.light_onoff_brightness_colortemp({colorTempRange: [200, 454]}),
46
46
  meta: {turnsOffAtBrightness1: true},
47
+ ota: ota.zigbeeOTA,
47
48
  },
48
49
  {
49
50
  zigbeeModel: ['FL 140 C'],
@@ -76,6 +77,7 @@ module.exports = [
76
77
  description: 'B22 filament bulb dimmable',
77
78
  extend: extend.light_onoff_brightness(),
78
79
  meta: {turnsOffAtBrightness1: true},
80
+ ota: ota.zigbeeOTA,
79
81
  },
80
82
  {
81
83
  zigbeeModel: ['OGL 130 C'],
@@ -125,6 +127,7 @@ module.exports = [
125
127
  description: 'E14 bulb RGBW',
126
128
  extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 555], supportsHS: true}),
127
129
  meta: {enhancedHue: false, applyRedFix: true, turnsOffAtBrightness1: true},
130
+ ota: ota.zigbeeOTA,
128
131
  },
129
132
  {
130
133
  zigbeeModel: ['RB 265'],
@@ -141,6 +144,7 @@ module.exports = [
141
144
  description: 'B22 (Bayonet) bulb, dimmable',
142
145
  extend: extend.light_onoff_brightness(),
143
146
  meta: {turnsOffAtBrightness1: true},
147
+ ota: ota.zigbeeOTA,
144
148
  },
145
149
  {
146
150
  zigbeeModel: ['RB 266'],
@@ -149,6 +153,7 @@ module.exports = [
149
153
  description: 'E27 bulb',
150
154
  extend: extend.light_onoff_brightness(),
151
155
  meta: {turnsOffAtBrightness1: true},
156
+ ota: ota.zigbeeOTA,
152
157
  },
153
158
  {
154
159
  zigbeeModel: ['RF 265'],
@@ -157,6 +162,7 @@ module.exports = [
157
162
  description: 'E27 bulb filament clear',
158
163
  extend: extend.light_onoff_brightness(),
159
164
  meta: {turnsOffAtBrightness1: true},
165
+ ota: ota.zigbeeOTA,
160
166
  },
161
167
  {
162
168
  zigbeeModel: ['BF 265'],
@@ -165,6 +171,7 @@ module.exports = [
165
171
  description: 'B22 bulb filament clear',
166
172
  extend: extend.light_onoff_brightness(),
167
173
  meta: {turnsOffAtBrightness1: true},
174
+ ota: ota.zigbeeOTA,
168
175
  },
169
176
  {
170
177
  zigbeeModel: ['RB 278 T'],
@@ -181,6 +188,7 @@ module.exports = [
181
188
  description: 'Smart bulb tunable white E27',
182
189
  extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 555]}),
183
190
  meta: {applyRedFix: true, turnsOffAtBrightness1: true},
191
+ ota: ota.zigbeeOTA,
184
192
  },
185
193
  {
186
194
  zigbeeModel: ['RB 285 C'],
@@ -197,6 +205,7 @@ module.exports = [
197
205
  description: 'E27 bulb RGBW',
198
206
  extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 555], supportsHS: true}),
199
207
  meta: {applyRedFix: true, turnsOffAtBrightness1: true},
208
+ ota: ota.zigbeeOTA,
200
209
  },
201
210
  {
202
211
  zigbeeModel: ['BY 285 C'],
@@ -213,6 +222,7 @@ module.exports = [
213
222
  description: 'B22 bulb RGBW',
214
223
  extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 555], supportsHS: true}),
215
224
  meta: {applyRedFix: true, turnsOffAtBrightness1: true},
225
+ ota: ota.zigbeeOTA,
216
226
  },
217
227
  {
218
228
  zigbeeModel: ['RB 165'],
@@ -293,6 +303,7 @@ module.exports = [
293
303
  description: 'GU10 Spot',
294
304
  extend: extend.light_onoff_brightness(),
295
305
  meta: {turnsOffAtBrightness1: true},
306
+ ota: ota.zigbeeOTA,
296
307
  },
297
308
  {
298
309
  zigbeeModel: ['RS 227 T'],
@@ -301,6 +312,7 @@ module.exports = [
301
312
  description: 'GU10 spot 420 lm, dimmable, white spectrum',
302
313
  extend: extend.light_onoff_brightness_colortemp({colorTempRange: [200, 454]}),
303
314
  meta: {turnsOffAtBrightness1: true},
315
+ ota: ota.zigbeeOTA,
304
316
  },
305
317
  {
306
318
  zigbeeModel: ['RS 128 T'],
@@ -325,6 +337,7 @@ module.exports = [
325
337
  description: 'GU10 spot 350 lm, dimmable, white spectrum',
326
338
  extend: extend.light_onoff_brightness_colortemp({colorTempRange: [200, 454]}),
327
339
  meta: {applyRedFix: true, turnsOffAtBrightness1: true},
340
+ ota: ota.zigbeeOTA,
328
341
  },
329
342
  {
330
343
  zigbeeModel: ['RS 230 C'],
@@ -334,6 +347,7 @@ module.exports = [
334
347
  extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 555], supportsHS: true}),
335
348
  exposes: [e.light_brightness_colortemp_color()],
336
349
  meta: {enhancedHue: false, applyRedFix: true, turnsOffAtBrightness1: true},
350
+ ota: ota.zigbeeOTA,
337
351
  },
338
352
  {
339
353
  zigbeeModel: ['RB 145'],
@@ -350,6 +364,7 @@ module.exports = [
350
364
  description: 'E14 candle',
351
365
  extend: extend.light_onoff_brightness(),
352
366
  meta: {turnsOffAtBrightness1: true},
367
+ ota: ota.zigbeeOTA,
353
368
  },
354
369
  {
355
370
  zigbeeModel: ['RB 248 T'],
@@ -358,6 +373,7 @@ module.exports = [
358
373
  description: 'E14 candle with white spectrum',
359
374
  extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 555]}),
360
375
  meta: {applyRedFix: true, turnsOffAtBrightness1: true},
376
+ ota: ota.zigbeeOTA,
361
377
  },
362
378
  {
363
379
  zigbeeModel: ['RB 249 T'],
@@ -366,6 +382,7 @@ module.exports = [
366
382
  description: 'E14 candle, dimmable with, color temp',
367
383
  extend: extend.light_onoff_brightness_colortemp({colorTempRange: [200, 454]}),
368
384
  meta: {turnsOffAtBrightness1: true},
385
+ ota: ota.zigbeeOTA,
369
386
  },
370
387
  {
371
388
  zigbeeModel: ['RB 148 T'],
@@ -382,6 +399,7 @@ module.exports = [
382
399
  description: 'E27 filament bulb dimmable',
383
400
  extend: extend.light_onoff_brightness(),
384
401
  meta: {turnsOffAtBrightness1: true},
402
+ ota: ota.zigbeeOTA,
385
403
  },
386
404
  {
387
405
  zigbeeModel: ['RF 263'],
@@ -390,6 +408,7 @@ module.exports = [
390
408
  description: 'E27 filament bulb dimmable',
391
409
  extend: extend.light_onoff_brightness(),
392
410
  meta: {turnsOffAtBrightness1: true},
411
+ ota: ota.zigbeeOTA,
393
412
  },
394
413
  {
395
414
  zigbeeModel: ['RF 264'],
@@ -398,6 +417,7 @@ module.exports = [
398
417
  description: 'E27 filament bulb dimmable',
399
418
  extend: extend.light_onoff_brightness(),
400
419
  meta: {turnsOffAtBrightness1: true},
420
+ ota: ota.zigbeeOTA,
401
421
  },
402
422
  {
403
423
  zigbeeModel: ['BY 165', 'BY 265'],
@@ -518,6 +538,7 @@ module.exports = [
518
538
  description: 'E26 bulb RGBW',
519
539
  extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 555], supportsHS: true}),
520
540
  meta: {applyRedFix: true, turnsOffAtBrightness1: true},
541
+ ota: ota.zigbeeOTA,
521
542
  },
522
543
  {
523
544
  zigbeeModel: ['SP 120'],
@@ -574,6 +595,7 @@ module.exports = [
574
595
  vendor: 'Innr',
575
596
  description: 'Smart plug',
576
597
  extend: extend.switch(),
598
+ ota: ota.zigbeeOTA,
577
599
  configure: async (device, coordinatorEndpoint, logger) => {
578
600
  const endpoint = device.getEndpoint(1);
579
601
  await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
package/devices/tuya.js CHANGED
@@ -353,7 +353,7 @@ const fzLocal = {
353
353
  result['max_brightness'] = utils.mapNumberRange(msg.data['64516'], 0, 1000, 1, 255);
354
354
  }
355
355
  if (msg.data.hasOwnProperty('61440')) {
356
- result['brightness'] = utils.mapNumberRange(msg.data['61440'], 0, 1000, 0, 254);
356
+ result['brightness'] = utils.mapNumberRange(msg.data['61440'], 0, 1000, 0, 255);
357
357
  }
358
358
  return result;
359
359
  },
@@ -1092,6 +1092,7 @@ module.exports = [
1092
1092
  {modelID: 'TS0202', manufacturerName: '_TZ3000_mmtwjmaq'},
1093
1093
  {modelID: 'TS0202', manufacturerName: '_TYZB01_zwvaj5wy'},
1094
1094
  {modelID: 'TS0202', manufacturerName: '_TZ3000_bsvqrxru'},
1095
+ {modelID: 'TS0202', manufacturerName: '_TZ3000_wrgn6xrz'},
1095
1096
  {modelID: 'TS0202', manufacturerName: '_TYZB01_tv3wxhcz'},
1096
1097
  {modelID: 'TS0202', manufacturerName: '_TYZB01_rwb0hxtf'},
1097
1098
  {modelID: 'TS0202', manufacturerName: '_TYZB01_hqbdru35'},
@@ -1986,7 +1987,7 @@ module.exports = [
1986
1987
  },
1987
1988
  },
1988
1989
  {
1989
- fingerprint: [{modelID: 'TS0001', manufacturerName: '_TZ3000_tqlv4ug4'}, {modelID: 'TS0001', manufacturerName: '_TZ3000_gjrubzje'}],
1990
+ fingerprint: tuya.fingerprint('TS0001', ['_TZ3000_tqlv4ug4', '_TZ3000_gjrubzje', '_TZ3000_tygpxwqa']),
1990
1991
  model: 'TS0001_switch_module',
1991
1992
  vendor: 'TuYa',
1992
1993
  description: '1 gang switch module',
package/lib/tuya.js CHANGED
@@ -1621,7 +1621,7 @@ const tuyaTz = {
1621
1621
  datapoints: {
1622
1622
  key: [
1623
1623
  'temperature_unit', 'temperature_calibration', 'humidity_calibration', 'alarm_switch',
1624
- 'state', 'brightness', 'min_brightness', 'max_brightness', 'power_on_behavior',
1624
+ 'state', 'brightness', 'min_brightness', 'max_brightness', 'power_on_behavior', 'position',
1625
1625
  'countdown', 'light_type', 'silence', 'self_test', 'child_lock', 'open_window', 'open_window_temperature', 'frost_protection',
1626
1626
  'system_mode', 'heating_stop', 'current_heating_setpoint', 'local_temperature_calibration', 'preset', 'boost_timeset_countdown',
1627
1627
  'holiday_start_stop', 'holiday_temperature', 'comfort_temperature', 'eco_temperature', 'working_day',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "15.0.73",
3
+ "version": "15.0.75",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [