zigbee-herdsman-converters 14.0.516 → 14.0.519

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.
@@ -5379,6 +5379,15 @@ const converters = {
5379
5379
  return {action: msg.data.presentValue ? 'moving' : 'stopped'};
5380
5380
  },
5381
5381
  },
5382
+ legrand_binary_input_on_off: {
5383
+ cluster: 'genBinaryInput',
5384
+ type: ['attributeReport', 'readResponse'],
5385
+ convert: (model, msg, publish, options, meta) => {
5386
+ const multiEndpoint = model.meta && model.meta.multiEndpoint;
5387
+ const property = multiEndpoint ? postfixWithEndpointName('state', msg, model) : 'state';
5388
+ return {[property]: msg.data.presentValue ? 'ON' : 'OFF'};
5389
+ },
5390
+ },
5382
5391
  bticino_4027C_binary_input_moving: {
5383
5392
  cluster: 'genBinaryInput',
5384
5393
  type: ['attributeReport', 'readResponse'],
@@ -216,6 +216,36 @@ module.exports = [
216
216
  await reporting.thermostatTemperatureSetpointHold(endpoint);
217
217
  },
218
218
  },
219
+ {
220
+ zigbeeModel: ['3156105'],
221
+ model: '3156105',
222
+ vendor: 'Centralite',
223
+ description: 'HA thermostat',
224
+ fromZigbee: [fz.battery, fz.thermostat, fz.fan, fz.ignore_time_read],
225
+ toZigbee: [tz.factory_reset, tz.thermostat_local_temperature, tz.thermostat_local_temperature_calibration,
226
+ tz.thermostat_occupied_heating_setpoint, tz.thermostat_occupied_cooling_setpoint,
227
+ tz.thermostat_setpoint_raise_lower, tz.thermostat_remote_sensing,
228
+ tz.thermostat_control_sequence_of_operation, tz.thermostat_system_mode,
229
+ tz.thermostat_relay_status_log, tz.fan_mode, tz.thermostat_running_state, tz.thermostat_temperature_setpoint_hold],
230
+ exposes: [e.battery(),
231
+ exposes.binary('temperature_setpoint_hold', ea.ALL, true, false)
232
+ .withDescription('Prevent changes. `false` = run normally. `true` = prevent from making changes.'),
233
+ exposes.climate().withSetpoint('occupied_heating_setpoint', 6.66, 30, 1).withLocalTemperature()
234
+ .withSystemMode(['off', 'heat', 'cool', 'emergency_heating'])
235
+ .withRunningState(['idle', 'heat', 'cool', 'fan_only']).withFanMode(['auto', 'on'])
236
+ .withSetpoint('occupied_cooling_setpoint', 6.66, 30, 1)
237
+ .withLocalTemperatureCalibration(-30, 30, 0.1)],
238
+ meta: {battery: {voltageToPercentage: '3V_1500_2800'}},
239
+ configure: async (device, coordinatorEndpoint, logger) => {
240
+ const endpoint = device.getEndpoint(1);
241
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'hvacThermostat', 'hvacFanCtrl']);
242
+ await reporting.batteryVoltage(endpoint);
243
+ await reporting.thermostatRunningState(endpoint);
244
+ await reporting.thermostatTemperature(endpoint);
245
+ await reporting.fanMode(endpoint);
246
+ await reporting.thermostatTemperatureSetpointHold(endpoint);
247
+ },
248
+ },
219
249
  {
220
250
  zigbeeModel: ['4200-C'],
221
251
  model: '4200-C',
@@ -10,15 +10,14 @@ module.exports = [
10
10
  model: 'V3-BTZB/V3-BTZBE',
11
11
  vendor: 'Danalock',
12
12
  description: 'BT/ZB smartlock',
13
- fromZigbee: [fz.lock, fz.lock_operation_event, fz.battery, fz.lock_programming_event, fz.lock_pin_code_response],
14
- toZigbee: [tz.lock, tz.pincode_lock, tz.lock_userstatus],
15
- meta: {pinCodeCount: 20},
13
+ fromZigbee: [fz.lock, fz.lock_operation_event, fz.battery],
14
+ toZigbee: [tz.lock],
16
15
  configure: async (device, coordinatorEndpoint, logger) => {
17
16
  const endpoint = device.getEndpoint(1);
18
17
  await reporting.bind(endpoint, coordinatorEndpoint, ['closuresDoorLock', 'genPowerCfg']);
19
18
  await reporting.lockState(endpoint);
20
19
  await reporting.batteryPercentageRemaining(endpoint);
21
20
  },
22
- exposes: [e.lock(), e.battery(), e.pincode(), e.lock_action(), e.lock_action_source_name(), e.lock_action_source_user()],
21
+ exposes: [e.lock(), e.battery(), e.lock_action(), e.lock_action_source_name(), e.lock_action_source_user()],
23
22
  },
24
23
  ];
package/devices/heiman.js CHANGED
@@ -453,6 +453,15 @@ module.exports = [
453
453
  toZigbee: [],
454
454
  exposes: [e.gas(), e.battery_low(), e.tamper()],
455
455
  },
456
+ {
457
+ zigbeeModel: ['SGPHM-I1'],
458
+ model: 'SGPHM-I1',
459
+ vendor: 'HEIMAN',
460
+ description: 'Propane gas sensor',
461
+ fromZigbee: [fz.ias_gas_alarm_1],
462
+ toZigbee: [],
463
+ exposes: [e.gas(), e.battery_low(), e.tamper()],
464
+ },
456
465
  {
457
466
  fingerprint: [{modelID: 'Vibration-N', manufacturerName: 'HEIMAN'}],
458
467
  model: 'HS1VS-N',
package/devices/ikea.js CHANGED
@@ -319,6 +319,13 @@ module.exports = [
319
319
  description: 'LED bulb E26 450 lumen, wireless dimmable white spectrum/tube-shaped white frosted glass',
320
320
  extend: tradfriExtend.light_onoff_brightness_colortemp(),
321
321
  },
322
+ {
323
+ zigbeeModel: ['TRADFRIbulbB22WSglobeopal1055lm', 'TRADFRIbulbB22WSglobeopal1055lm'],
324
+ model: 'LED2035G10',
325
+ vendor: 'IKEA',
326
+ description: 'TRADFRI LED bulb B22 1055 lumen, dimmable, white spectrum, opal white',
327
+ extend: tradfriExtend.light_onoff_brightness_colortemp(),
328
+ },
322
329
  {
323
330
  zigbeeModel: ['TRADFRI bulb GU10 WS 400lm'],
324
331
  model: 'LED1537R6/LED1739R5',
@@ -324,7 +324,7 @@ module.exports = [
324
324
  model: '067772',
325
325
  vendor: 'Legrand',
326
326
  description: 'Double wired switch with neutral',
327
- fromZigbee: [fz.on_off, fz.legrand_cluster_fc01],
327
+ fromZigbee: [fz.on_off, fz.legrand_binary_input_on_off, fz.legrand_cluster_fc01],
328
328
  toZigbee: [tz.on_off, tz.legrand_settingAlwaysEnableLed, tz.legrand_settingEnableLedIfOn],
329
329
  exposes: [e.switch().withEndpoint('left'),
330
330
  e.switch().withEndpoint('right'),
@@ -333,9 +333,9 @@ module.exports = [
333
333
  meta: {multiEndpoint: true},
334
334
  configure: async (device, coordinatorEndpoint, logger) => {
335
335
  const endpointLeft = device.getEndpoint(2);
336
- await reporting.bind(endpointLeft, coordinatorEndpoint, ['genOnOff']);
336
+ await reporting.bind(endpointLeft, coordinatorEndpoint, ['genOnOff', 'genBinaryInput']);
337
337
  const endpointRight = device.getEndpoint(1);
338
- await reporting.bind(endpointRight, coordinatorEndpoint, ['genOnOff']);
338
+ await reporting.bind(endpointRight, coordinatorEndpoint, ['genOnOff', 'genBinaryInput']);
339
339
  },
340
340
  endpoint: (device) => {
341
341
  return {left: 2, right: 1};
package/devices/moes.js CHANGED
@@ -118,7 +118,7 @@ module.exports = [
118
118
  onEvent: tuya.onEventSetLocalTime,
119
119
  },
120
120
  {
121
- fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_amp6tsvy'}],
121
+ fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_amp6tsvy'}, {modelID: 'TS0601', manufacturerName: '_TZE200_tviaymwx'}],
122
122
  model: 'ZTS-EU_1gang',
123
123
  vendor: 'Moes',
124
124
  description: 'Wall touch light switch (1 gang)',
@@ -465,7 +465,7 @@ module.exports = [
465
465
  ota: ota.zigbeeOTA,
466
466
  },
467
467
  {
468
- zigbeeModel: ['LCT026', '7602031P7', '7602031U7'],
468
+ zigbeeModel: ['LCT026', '7602031P7', '7602031U7', '7602031N6'],
469
469
  model: '7602031P7',
470
470
  vendor: 'Philips',
471
471
  description: 'Hue Go with Bluetooth',
@@ -2555,6 +2555,15 @@ module.exports = [
2555
2555
  extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
2556
2556
  ota: ota.zigbeeOTA,
2557
2557
  },
2558
+ {
2559
+ zigbeeModel: ['5047130P9'],
2560
+ model: '5047130P9 ',
2561
+ vendor: 'Philips',
2562
+ description: 'Hue White ambiance Buckram single spotlight with bluetooth',
2563
+ meta: {turnsOffAtBrightness1: true},
2564
+ extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
2565
+ ota: ota.zigbeeOTA,
2566
+ },
2558
2567
  {
2559
2568
  zigbeeModel: ['HML006'],
2560
2569
  model: '7531609',
@@ -0,0 +1,11 @@
1
+ const extend = require('../lib/extend');
2
+
3
+ module.exports = [
4
+ {
5
+ zigbeeModel: ['RDM-35104001'],
6
+ model: '35104001',
7
+ vendor: 'Rademacher',
8
+ description: 'addZ white + colour',
9
+ extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 555]}),
10
+ },
11
+ ];
package/devices/robb.js CHANGED
@@ -7,6 +7,42 @@ const e = exposes.presets;
7
7
  const ea = exposes.access;
8
8
 
9
9
  module.exports = [
10
+ {
11
+ zigbeeModel: ['ROB_200-029-0'],
12
+ model: 'ROB_200-029-0',
13
+ vendor: 'ROBB',
14
+ description: 'Zigbee curtain motor controller',
15
+ meta: {coverInverted: true},
16
+ fromZigbee: [fz.cover_position_tilt],
17
+ toZigbee: [tz.cover_state, tz.cover_position_tilt],
18
+ configure: async (device, coordinatorEndpoint, logger) => {
19
+ const endpoint = device.getEndpoint(1);
20
+ await reporting.bind(endpoint, coordinatorEndpoint, ['closuresWindowCovering']);
21
+ await reporting.currentPositionLiftPercentage(endpoint);
22
+ },
23
+ exposes: [e.cover_position()],
24
+ },
25
+ {
26
+ zigbeeModel: ['ROB_200-050-0'],
27
+ model: 'ROB_200-050-0',
28
+ vendor: 'ROBB',
29
+ description: '4 port switch with 2 usb ports (no metering)',
30
+ extend: extend.switch(),
31
+ exposes: [e.switch().withEndpoint('l1'), e.switch().withEndpoint('l2'), e.switch().withEndpoint('l3'),
32
+ e.switch().withEndpoint('l4'), e.switch().withEndpoint('l5')],
33
+ endpoint: (device) => {
34
+ return {'l1': 1, 'l2': 2, 'l3': 3, 'l4': 4, 'l5': 5};
35
+ },
36
+ meta: {multiEndpoint: true},
37
+ whiteLabel: [{vendor: 'Sunricher', model: 'SR-ZG9023A(EU)'}],
38
+ configure: async (device, coordinatorEndpoint, logger) => {
39
+ await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
40
+ await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
41
+ await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
42
+ await reporting.bind(device.getEndpoint(4), coordinatorEndpoint, ['genOnOff']);
43
+ await reporting.bind(device.getEndpoint(5), coordinatorEndpoint, ['genOnOff']);
44
+ },
45
+ },
10
46
  {
11
47
  zigbeeModel: ['ROB_200-006-0'],
12
48
  model: 'ROB_200-006-0',
@@ -6,6 +6,26 @@ const extend = require('../lib/extend');
6
6
  const e = exposes.presets;
7
7
 
8
8
  module.exports = [
9
+ {
10
+ zigbeeModel: ['SR-ZG9023A-EU'],
11
+ model: 'SR-ZG9023A-EU',
12
+ vendor: 'Sunricher',
13
+ description: '4 ports switch with 2 usb ports (no metering)',
14
+ extend: extend.switch(),
15
+ exposes: [e.switch().withEndpoint('l1'), e.switch().withEndpoint('l2'),
16
+ e.switch().withEndpoint('l3'), e.switch().withEndpoint('l4'), e.switch().withEndpoint('l5')],
17
+ endpoint: (device) => {
18
+ return {'l1': 1, 'l2': 2, 'l3': 3, 'l4': 4, 'l5': 5};
19
+ },
20
+ meta: {multiEndpoint: true},
21
+ configure: async (device, coordinatorEndpoint, logger) => {
22
+ await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
23
+ await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
24
+ await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
25
+ await reporting.bind(device.getEndpoint(4), coordinatorEndpoint, ['genOnOff']);
26
+ await reporting.bind(device.getEndpoint(5), coordinatorEndpoint, ['genOnOff']);
27
+ },
28
+ },
9
29
  {
10
30
  zigbeeModel: ['ON/OFF(2CH)'],
11
31
  model: 'UP-SA-9127D',
package/devices/tuya.js CHANGED
@@ -13,7 +13,8 @@ const utils = require('../lib/utils');
13
13
  const TS011Fplugs = ['_TZ3000_5f43h46b', '_TZ3000_cphmq0q7', '_TZ3000_dpo1ysak', '_TZ3000_ew3ldmgx', '_TZ3000_gjnozsaz',
14
14
  '_TZ3000_jvzvulen', '_TZ3000_mraovvmm', '_TZ3000_nfnmi125', '_TZ3000_ps3dmato', '_TZ3000_w0qqde0g', '_TZ3000_u5u4cakc',
15
15
  '_TZ3000_rdtixbnu', '_TZ3000_typdpbpg', '_TZ3000_kx0pris5', '_TZ3000_amdymr7l', '_TZ3000_z1pnpsdo', '_TZ3000_ksw8qtmt',
16
- '_TZ3000_nzkqcvvs', '_TZ3000_1h2x4akh', '_TZ3000_9vo5icau', '_TZ3000_cehuw1lw', '_TZ3000_ko6v90pg', '_TZ3000_f1bapcit'];
16
+ '_TZ3000_nzkqcvvs', '_TZ3000_1h2x4akh', '_TZ3000_9vo5icau', '_TZ3000_cehuw1lw', '_TZ3000_ko6v90pg', '_TZ3000_f1bapcit',
17
+ '_TZ3000_cjrngdr3', '_TZ3000_zloso4jk'];
17
18
 
18
19
  const tzLocal = {
19
20
  TS0504B_color: {
@@ -715,6 +716,8 @@ module.exports = [
715
716
  {modelID: 'TS0502B', manufacturerName: '_TZ3210_pgq2qvyv'},
716
717
  {modelID: 'TS0502B', manufacturerName: '_TZ3210_nvaik6gk'},
717
718
  {modelID: 'TS0502B', manufacturerName: '_TZ3000_armwcncd'},
719
+ {modelID: 'TS0502B', manufacturerName: '_TZ3210_2p6wbry3'},
720
+ {modelID: 'TS0502B', manufacturerName: '_TZ3210_qamcypen'},
718
721
  ],
719
722
  model: 'TS0502B',
720
723
  vendor: 'TuYa',
@@ -950,6 +953,8 @@ module.exports = [
950
953
  },
951
954
  meta: {multiEndpoint: true},
952
955
  configure: async (device, coordinatorEndpoint, logger) => {
956
+ const ep1 = device.getEndpoint(1);
957
+ await ep1.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
953
958
  await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
954
959
  await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
955
960
  },
package/devices/ubisys.js CHANGED
@@ -16,10 +16,11 @@ module.exports = [
16
16
  e.action([
17
17
  'toggle', 'on', 'off', 'recall_*',
18
18
  'brightness_move_up', 'brightness_move_down', 'brightness_stop',
19
- ])],
19
+ ]),
20
+ e.power_on_behavior()],
20
21
  fromZigbee: [fz.on_off, fz.metering, fz.command_toggle, fz.command_on, fz.command_off, fz.command_recall, fz.command_move,
21
- fz.command_stop],
22
- toZigbee: [tz.on_off, tz.metering_power, tz.ubisys_device_setup],
22
+ fz.command_stop, fz.power_on_behavior],
23
+ toZigbee: [tz.on_off, tz.metering_power, tz.ubisys_device_setup, tz.power_on_behavior],
23
24
  endpoint: (device) => {
24
25
  return {'l1': 1, 's1': 2, 'meter': 3};
25
26
  },
@@ -57,10 +58,11 @@ module.exports = [
57
58
  e.action([
58
59
  'toggle', 'on', 'off', 'recall_*',
59
60
  'brightness_move_up', 'brightness_move_down', 'brightness_stop',
60
- ])],
61
+ ]),
62
+ e.power_on_behavior()],
61
63
  fromZigbee: [fz.on_off, fz.metering, fz.command_toggle, fz.command_on, fz.command_off, fz.command_recall, fz.command_move,
62
- fz.command_stop],
63
- toZigbee: [tz.on_off, tz.metering_power, tz.ubisys_device_setup],
64
+ fz.command_stop, fz.power_on_behavior],
65
+ toZigbee: [tz.on_off, tz.metering_power, tz.ubisys_device_setup, tz.power_on_behavior],
64
66
  endpoint: (device) => {
65
67
  return {'l1': 1, 's1': 2, 'meter': 4};
66
68
  },
@@ -99,10 +101,11 @@ module.exports = [
99
101
  e.power().withAccess(ea.STATE_GET).withEndpoint('meter').withProperty('power'),
100
102
  e.action(['toggle_s1', 'toggle_s2', 'on_s1', 'on_s2', 'off_s1', 'off_s2', 'recall_*_s1', 'recal_*_s2', 'brightness_move_up_s1',
101
103
  'brightness_move_up_s2', 'brightness_move_down_s1', 'brightness_move_down_s2', 'brightness_stop_s1',
102
- 'brightness_stop_s2'])],
104
+ 'brightness_stop_s2']),
105
+ e.power_on_behavior().withEndpoint('l1'), e.power_on_behavior().withEndpoint('l2')],
103
106
  fromZigbee: [fz.on_off, fz.metering, fz.command_toggle, fz.command_on, fz.command_off, fz.command_recall, fz.command_move,
104
- fz.command_stop],
105
- toZigbee: [tz.on_off, tz.metering_power, tz.ubisys_device_setup],
107
+ fz.command_stop, fz.power_on_behavior],
108
+ toZigbee: [tz.on_off, tz.metering_power, tz.ubisys_device_setup, tz.power_on_behavior],
106
109
  endpoint: (device) => {
107
110
  return {'l1': 1, 'l2': 2, 's1': 3, 's2': 4, 'meter': 5};
108
111
  },
package/devices/xiaomi.js CHANGED
@@ -1344,7 +1344,7 @@ module.exports = [
1344
1344
  exposes.binary('running', ea.STATE, true, false)
1345
1345
  .withDescription('Whether the motor is moving or not'),
1346
1346
  exposes.enum('motor_state', ea.STATE, ['closing', 'opening', 'stop'])
1347
- .withDescription('The current state of the motor.')],
1347
+ .withDescription('The current state of the motor.'), e.power_outage_count()],
1348
1348
  ota: ota.zigbeeOTA,
1349
1349
  },
1350
1350
  {
@@ -1580,6 +1580,7 @@ module.exports = [
1580
1580
  device.type = 'Router';
1581
1581
  device.save();
1582
1582
  },
1583
+ ota: ota.zigbeeOTA,
1583
1584
  },
1584
1585
  {
1585
1586
  zigbeeModel: ['lumi.switch.n0acn2'],
package/lib/xiaomi.js CHANGED
@@ -154,7 +154,7 @@ const numericAttributes2Payload = (msg, meta, model, options, dataObject) => {
154
154
  break;
155
155
  case '2':
156
156
  if (['JT-BZ-01AQ/A'].includes(model.model)) {
157
- payload.power_outage_count = value;
157
+ payload.power_outage_count = value - 1;
158
158
  }
159
159
  break;
160
160
  case '3':
@@ -168,8 +168,8 @@ const numericAttributes2Payload = (msg, meta, model, options, dataObject) => {
168
168
  payload.mode_switch = {4: 'anti_flicker_mode', 1: 'quick_mode'}[value];
169
169
  break;
170
170
  case '5':
171
- if (['Mains (single phase)', 'DC Source'].includes(meta.device.powerSource)) {
172
- payload.power_outage_count = value;
171
+ if (['Mains (single phase)', 'DC Source'].includes(meta.device.powerSource) || ['ZNCLDJ12LM'].includes(model.model)) {
172
+ payload.power_outage_count = value - 1;
173
173
  }
174
174
  break;
175
175
  case '10':
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.516",
3
+ "version": "14.0.519",
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.1",
40
40
  "tar-stream": "^2.2.0",
41
- "zigbee-herdsman": "^0.14.28"
41
+ "zigbee-herdsman": "^0.14.30"
42
42
  },
43
43
  "devDependencies": {
44
44
  "eslint": "*",