zigbee-herdsman-converters 14.0.426 → 14.0.430

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.
@@ -5527,15 +5527,16 @@ const converters = {
5527
5527
  const actionLookup = !isLegacyEnabled(options) && ['QBKG03LM', 'QBKG22LM', 'QBKG04LM', 'QBKG21LM'].includes(model.model) ?
5528
5528
  {0: 'hold', 1: 'release', 2: 'double'} : {0: 'single', 1: 'single'};
5529
5529
 
5530
- // Dont' use postfixWithEndpointName here, endpoints don't match
5531
- if (mapping) {
5532
- if (mapping[msg.endpoint.ID]) {
5533
- const button = mapping[msg.endpoint.ID];
5534
- return {action: `${actionLookup[msg.data['onOff']]}_${button}`};
5535
- }
5536
- } else {
5537
- return {action: actionLookup[msg.data['onOff']]};
5530
+ const action = actionLookup[msg.data['onOff']];
5531
+ const button = mapping && mapping[msg.endpoint.ID] ? `_${mapping[msg.endpoint.ID]}` : '';
5532
+
5533
+ if (action === 'release') {
5534
+ const anotherAction = globalStore.getValue(msg.endpoint, 'hold', false) ? 'hold_release' : 'single';
5535
+ publish({action: `${anotherAction}${button}`});
5538
5536
  }
5537
+ globalStore.putValue(msg.endpoint, 'hold', action === 'hold');
5538
+
5539
+ return {action: `${action}${button}`};
5539
5540
  },
5540
5541
  },
5541
5542
  xiaomi_multistate_action: {
package/devices/evn.js ADDED
@@ -0,0 +1,26 @@
1
+ const exposes = require('../lib/exposes');
2
+ const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee};
3
+ const reporting = require('../lib/reporting');
4
+ const e = exposes.presets;
5
+
6
+ module.exports = [
7
+ {
8
+ zigbeeModel: ['EVN ZBHS4RGBW'],
9
+ model: 'ZBHS4RGBW',
10
+ vendor: 'EVN',
11
+ description: 'Zigbee 4 channel RGBW remote control',
12
+ fromZigbee: [fz.battery, fz.command_on, fz.command_off, fz.command_step, fz.command_move, fz.command_stop, fz.command_recall,
13
+ fz.command_move_hue, fz.command_move_to_color, fz.command_move_to_color_temp],
14
+ exposes: [e.battery(), e.action(['on', 'off', 'brightness_step_up', 'brightness_step_down', 'brightness_move_up',
15
+ 'brightness_move_down', 'brightness_stop', 'recall_1', 'recall_2', 'recall_3', 'hue_move', 'color_temperature_move',
16
+ 'color_move', 'hue_stop'])],
17
+ toZigbee: [],
18
+ meta: {multiEndpoint: true, battery: {dontDividePercentage: true}},
19
+ configure: async (device, coordinatorEndpoint) => {
20
+ const endpoint = device.getEndpoint(1);
21
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genPowerCfg']);
22
+ await reporting.batteryVoltage(endpoint);
23
+ await reporting.batteryPercentageRemaining(endpoint);
24
+ },
25
+ },
26
+ ];
@@ -0,0 +1,11 @@
1
+ const extend = require('../lib/extend');
2
+
3
+ module.exports = [
4
+ {
5
+ zigbeeModel: ['A11'],
6
+ model: 'ZC05M',
7
+ vendor: 'GIDEALED',
8
+ description: 'Smart Zigbee RGB LED strip controller',
9
+ extend: extend.light_onoff_brightness_colortemp_color({supportsHS: true, colorTempRange: [153, 500]}),
10
+ },
11
+ ];
@@ -0,0 +1,18 @@
1
+ const reporting = require('../lib/reporting');
2
+ const extend = require('../lib/extend');
3
+
4
+ module.exports = [
5
+ {
6
+ zigbeeModel: ['J2182548'],
7
+ model: 'J2182548',
8
+ vendor: 'JUMITECH APS',
9
+ description: 'ZigBee AC phase-cut dimmer single-line',
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/lidl.js CHANGED
@@ -508,7 +508,8 @@ module.exports = [
508
508
  },
509
509
  },
510
510
  {
511
- fingerprint: [{modelID: 'TS0505B', manufacturerName: '_TZ3000_th6zqqy6'}],
511
+ fingerprint: [{modelID: 'TS0505B', manufacturerName: '_TZ3000_th6zqqy6'},
512
+ {modelID: 'TS0505B', manufacturerName: '_TZ3000_wr6g6olr'}],
512
513
  model: 'HG07834B',
513
514
  vendor: 'Lidl',
514
515
  description: 'Livarno Lux E14 candle RGB',
package/devices/lixee.js CHANGED
@@ -298,7 +298,7 @@ const clustersDef = {
298
298
  const exposedData = [
299
299
  // Historique
300
300
  {cluster: clustersDef._0x0702, att: 'meterSerialNumber', reportable: false, onlyProducer: false, linkyPhase: linkyPhaseDef.single, linkyMode: linkyModeDef.legacy, exposes: exposes.text('ADCO', ea.STATE).withProperty('meter_serial_number').withDescription('Serial Number')},
301
- {cluster: clustersDef._0x0702, att: 'currentSummDelivered', reportable: true, report: {change: 100}, onlyProducer: false, linkyPhase: linkyPhaseDef.single, linkyMode: linkyModeDef.legacy, exposes: exposes.numeric('BASE', ea.STATE).withUnit('kWh').withProperty('current_summ_delivered').withDescription('Base index')},
301
+ {cluster: clustersDef._0x0702, att: 'currentSummDelivered', reportable: true, report: {change: 100}, onlyProducer: false, linkyPhase: linkyPhaseDef.all, linkyMode: linkyModeDef.legacy, exposes: exposes.numeric('BASE', ea.STATE).withUnit('kWh').withProperty('current_summ_delivered').withDescription('Base index')},
302
302
  {cluster: clustersDef._0xFF66, att: 'currentTarif', reportable: false, onlyProducer: false, linkyPhase: linkyPhaseDef.single, linkyMode: linkyModeDef.legacy, exposes: exposes.text('OPTARIF', ea.STATE).withProperty('current_tarif').withDescription('Tarif option')},
303
303
  {cluster: clustersDef._0x0B01, att: 'availablePower', reportable: false, onlyProducer: false, linkyPhase: linkyPhaseDef.single, linkyMode: linkyModeDef.legacy, exposes: exposes.numeric('ISOUSC', ea.STATE).withUnit('A').withProperty('available_power').withDescription('Subscribed intensity level')},
304
304
  {cluster: clustersDef._0x0702, att: 'currentTier1SummDelivered', reportable: false, report: {change: 100}, onlyProducer: false, linkyPhase: linkyPhaseDef.single, linkyMode: linkyModeDef.legacy, exposes: exposes.numeric('HCHC', ea.STATE).withUnit('kWh').withProperty('current_tier1_summ_delivered').withDescription('HCHC index')},
@@ -2437,6 +2437,15 @@ module.exports = [
2437
2437
  extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
2438
2438
  ota: ota.zigbeeOTA,
2439
2439
  },
2440
+ {
2441
+ zigbeeModel: ['LCX001'],
2442
+ model: '929002422702',
2443
+ vendor: 'Philips',
2444
+ description: 'Hue Play gradient lightstrip 55',
2445
+ meta: {turnsOffAtBrightness1: true},
2446
+ extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
2447
+ ota: ota.zigbeeOTA,
2448
+ },
2440
2449
  {
2441
2450
  zigbeeModel: ['LCX002'],
2442
2451
  model: '929002422801',
@@ -2446,6 +2455,15 @@ module.exports = [
2446
2455
  extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
2447
2456
  ota: ota.zigbeeOTA,
2448
2457
  },
2458
+ {
2459
+ zigbeeModel: ['929003099301'],
2460
+ model: '929003099301',
2461
+ vendor: 'Philips',
2462
+ description: 'Hue white ambiance Aurelle round panel light',
2463
+ meta: {turnsOffAtBrightness1: true},
2464
+ extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
2465
+ ota: ota.zigbeeOTA,
2466
+ },
2449
2467
  {
2450
2468
  zigbeeModel: ['3418331P6'],
2451
2469
  model: '3418331P6',
@@ -2707,7 +2725,7 @@ module.exports = [
2707
2725
  ota: ota.zigbeeOTA,
2708
2726
  },
2709
2727
  {
2710
- zigbeeModel: ['915005997301'],
2728
+ zigbeeModel: ['915005997301', '915005997201'],
2711
2729
  model: '915005997301',
2712
2730
  vendor: 'Philips',
2713
2731
  description: 'Hue Bluetooth white & color ambiance ceiling lamp Infuse medium',
package/devices/robb.js CHANGED
@@ -139,9 +139,11 @@ module.exports = [
139
139
  model: 'ROB_200-018-0',
140
140
  vendor: 'ROBB',
141
141
  description: 'ZigBee knob smart dimmer',
142
- fromZigbee: [fz.command_on, fz.command_off, fz.command_move_to_level, fz.command_move_to_color_temp],
143
- exposes: [e.action(['on', 'off', 'brightness_move_to_level', 'color_temperature_move'])],
142
+ fromZigbee: [fz.command_on, fz.command_off, fz.command_move_to_level, fz.command_move_to_color_temp, fz.battery,
143
+ fz.command_move_to_color],
144
+ exposes: [e.battery(), e.action(['on', 'off', 'brightness_move_to_level', 'color_temperature_move', 'color_move'])],
144
145
  toZigbee: [],
146
+ meta: {multiEndpoint: true, battery: {dontDividePercentage: true}},
145
147
  whiteLabel: [{vendor: 'Sunricher', model: 'SR-ZG2835'}],
146
148
  },
147
149
  {
@@ -47,7 +47,7 @@ module.exports = [
47
47
  toZigbee: [tz.thermostat_local_temperature, tz.thermostat_occupancy, tz.thermostat_occupied_heating_setpoint,
48
48
  tz.thermostat_temperature_display_mode, tz.thermostat_keypad_lockout, tz.thermostat_system_mode,
49
49
  tz.thermostat_running_state, tz.stelpro_thermostat_outdoor_temperature],
50
- exposes: [e.local_temperature(), e.keypad_lockout(),
50
+ exposes: [e.local_temperature(), e.keypad_lockout(), e.humidity(),
51
51
  exposes.climate().withSetpoint('occupied_heating_setpoint', 5, 30, 0.5).withLocalTemperature()
52
52
  .withSystemMode(['off', 'auto', 'heat']).withRunningState(['idle', 'heat'])],
53
53
  configure: async (device, coordinatorEndpoint, logger) => {
@@ -79,7 +79,7 @@ module.exports = [
79
79
  toZigbee: [tz.thermostat_local_temperature, tz.thermostat_occupancy, tz.thermostat_occupied_heating_setpoint,
80
80
  tz.thermostat_temperature_display_mode, tz.thermostat_keypad_lockout, tz.thermostat_system_mode, tz.thermostat_running_state,
81
81
  tz.stelpro_thermostat_outdoor_temperature],
82
- exposes: [e.local_temperature(), e.keypad_lockout(),
82
+ exposes: [e.local_temperature(), e.keypad_lockout(), e.humidity(),
83
83
  exposes.climate().withSetpoint('occupied_heating_setpoint', 5, 30, 0.5).withLocalTemperature()
84
84
  .withSystemMode(['off', 'auto', 'heat']).withRunningState(['idle', 'heat'])],
85
85
  configure: async (device, coordinatorEndpoint, logger) => {
@@ -142,7 +142,7 @@ module.exports = [
142
142
  toZigbee: [tz.thermostat_local_temperature, tz.thermostat_occupancy, tz.thermostat_occupied_heating_setpoint,
143
143
  tz.thermostat_temperature_display_mode, tz.thermostat_keypad_lockout, tz.thermostat_system_mode, tz.thermostat_running_state,
144
144
  tz.stelpro_thermostat_outdoor_temperature],
145
- exposes: [e.local_temperature(), e.keypad_lockout(),
145
+ exposes: [e.local_temperature(), e.keypad_lockout(), e.humidity(),
146
146
  exposes.climate().withSetpoint('occupied_heating_setpoint', 5, 30, 0.5).withLocalTemperature()
147
147
  .withSystemMode(['off', 'auto', 'heat']).withRunningState(['idle', 'heat'])],
148
148
  configure: async (device, coordinatorEndpoint, logger) => {
package/devices/xiaomi.js CHANGED
@@ -353,8 +353,7 @@ module.exports = [
353
353
  configure: async (device, coordinatorEndpoint, logger) => {
354
354
  const endpoint1 = device.getEndpoint(1);
355
355
  // set "event" mode
356
- await endpoint1.write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f,
357
- disableDefaultResponse: true, disableResponse: true});
356
+ await endpoint1.write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
358
357
  },
359
358
  },
360
359
  {
@@ -378,8 +377,7 @@ module.exports = [
378
377
  e.action(['single_left', 'double_left', 'single_right', 'double_right', 'single_both', 'double_both'])],
379
378
  onEvent: preventReset,
380
379
  configure: async (device, coordinatorEndpoint, logger) => {
381
- await device.getEndpoint(1).write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f,
382
- disableDefaultResponse: true, disableResponse: true});
380
+ await device.getEndpoint(1).write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
383
381
  },
384
382
  },
385
383
  {
@@ -397,8 +395,7 @@ module.exports = [
397
395
  configure: async (device, coordinatorEndpoint, logger) => {
398
396
  const endpoint1 = device.getEndpoint(1);
399
397
  // set "event" mode
400
- await endpoint1.write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f,
401
- disableDefaultResponse: true, disableResponse: true});
398
+ await endpoint1.write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
402
399
  },
403
400
  },
404
401
  {
@@ -424,8 +421,7 @@ module.exports = [
424
421
  configure: async (device, coordinatorEndpoint, logger) => {
425
422
  const endpoint1 = device.getEndpoint(1);
426
423
  // set "event" mode
427
- await endpoint1.write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f,
428
- disableDefaultResponse: true, disableResponse: true});
424
+ await endpoint1.write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
429
425
  },
430
426
  },
431
427
  {
@@ -436,7 +432,7 @@ module.exports = [
436
432
  fromZigbee: [fz.xiaomi_on_off_ignore_endpoint_4_5_6, fz.xiaomi_on_off_action, fz.legacy.QBKG04LM_QBKG11LM_click,
437
433
  fz.xiaomi_operation_mode_basic],
438
434
  exposes: [
439
- e.switch(), e.action(['release', 'hold', 'double']),
435
+ e.switch(), e.action(['release', 'hold', 'double', 'single', 'hold_release']),
440
436
  exposes.enum('operation_mode', ea.STATE_SET, ['control_relay', 'decoupled'])
441
437
  .withDescription('Decoupled mode'),
442
438
  ],
@@ -484,7 +480,8 @@ module.exports = [
484
480
  e.switch().withEndpoint('left'),
485
481
  e.switch().withEndpoint('right'),
486
482
  e.temperature(),
487
- e.action(['release_left', 'release_right', 'release_both', 'double_left', 'double_right']),
483
+ e.action(['release_left', 'release_right', 'release_both', 'double_left', 'double_right',
484
+ 'single_left', 'single_right', 'hold_release_left', 'hold_release_left']),
488
485
  exposes.enum('operation_mode', ea.STATE_SET, ['control_left_relay', 'control_right_relay', 'decoupled'])
489
486
  .withDescription('Operation mode for left button')
490
487
  .withEndpoint('left'),
@@ -560,8 +557,7 @@ module.exports = [
560
557
  fromZigbee: [fz.xiaomi_on_off_ignore_endpoint_4_5_6, fz.xiaomi_on_off_action, fz.legacy.QBKG04LM_QBKG11LM_click,
561
558
  fz.xiaomi_operation_mode_basic],
562
559
  exposes: [
563
- e.switch(),
564
- e.action(['single', 'hold', 'release']),
560
+ e.switch(), e.action(['release', 'hold', 'double', 'single', 'hold_release']),
565
561
  exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled'])
566
562
  .withDescription('Decoupled mode'),
567
563
  ],
@@ -586,7 +582,8 @@ module.exports = [
586
582
  exposes: [
587
583
  e.switch().withEndpoint('left'),
588
584
  e.switch().withEndpoint('right'),
589
- e.action(['single_left', 'single_right', 'single_both']),
585
+ e.action(['release_left', 'release_right', 'release_both', 'double_left', 'double_right',
586
+ 'single_left', 'single_right', 'hold_release_left', 'hold_release_left']),
590
587
  exposes.enum('operation_mode', ea.ALL, ['control_left_relay', 'control_right_relay', 'decoupled'])
591
588
  .withDescription('Operation mode for left button')
592
589
  .withEndpoint('left'),
package/lib/exposes.js CHANGED
@@ -503,8 +503,8 @@ module.exports = {
503
503
  presets: {
504
504
  ac_frequency: () => new Numeric('ac_frequency', access.STATE).withUnit('Hz').withDescription('Measured electrical AC frequency'),
505
505
  action: (values) => new Enum('action', access.STATE, values).withDescription('Triggered action (e.g. a button click)'),
506
- angle: (name) => new Numeric(name, access.STATE).withValueMin(-360).withValueMax(360),
507
- angle_axis: (name) => new Numeric(name, access.STATE).withValueMin(-90).withValueMax(90),
506
+ angle: (name) => new Numeric(name, access.STATE).withValueMin(-360).withValueMax(360).withUnit('°'),
507
+ angle_axis: (name) => new Numeric(name, access.STATE).withValueMin(-90).withValueMax(90).withUnit('°'),
508
508
  aqi: () => new Numeric('aqi', access.STATE).withDescription('Air quality index'),
509
509
  auto_lock: () => new Switch().withState('auto_lock', false, 'Enable/disable auto lock', access.STATE_SET, 'AUTO', 'MANUAL'),
510
510
  auto_relock_time: () => new Numeric('auto_relock_time', access.ALL).withValueMin(0).withUnit('s').withDescription('The number of seconds to wait after unlocking a lock before it automatically locks again. 0=disabled'),
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.426",
3
+ "version": "14.0.430",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.426",
3
+ "version": "14.0.430",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [