zigbee-herdsman-converters 15.0.75 → 15.0.76

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
@@ -48,6 +48,26 @@ const displayOrientation = {
48
48
 
49
49
  // Radiator Thermostat II
50
50
  const tzLocal = {
51
+ bwa1: {
52
+ key: ['alarm_on_motion', 'test'],
53
+ convertSet: async (entity, key, value, meta) => {
54
+ if (key === 'alarm_on_motion') {
55
+ value = value.toUpperCase();
56
+ const index = stateOffOn[value];
57
+ await entity.write(0xFCAC, {0x0003: {value: index, type: 0x10}}, boschManufacturer);
58
+ return {state: {alarm_on_motion: value}};
59
+ }
60
+ },
61
+ convertGet: async (entity, key, meta) => {
62
+ switch (key) {
63
+ case 'alarm_on_motion':
64
+ await entity.read(0xFCAC, [0x0003], boschManufacturer);
65
+ break;
66
+ default: // Unknown key
67
+ throw new Error(`Unhandled key toZigbee.bosch_twinguard.convertGet ${key}`);
68
+ }
69
+ },
70
+ },
51
71
  bosch_thermostat: {
52
72
  key: ['window_open', 'boost', 'system_mode', 'pi_heating_demand'],
53
73
  convertSet: async (entity, key, value, meta) => {
@@ -212,6 +232,19 @@ const tzLocal = {
212
232
 
213
233
 
214
234
  const fzLocal = {
235
+ bwa1_alarm_on_motion: {
236
+ cluster: '64684',
237
+ type: ['attributeReport', 'readResponse'],
238
+ options: [],
239
+ convert: (model, msg, publish, options, meta) => {
240
+ const result = {};
241
+ const data = msg.data;
242
+ if (data.hasOwnProperty(0x0003)) {
243
+ result.alarm_on_motion = (Object.keys(stateOffOn)[msg.data[0x0003]]);
244
+ }
245
+ return result;
246
+ },
247
+ },
215
248
  bosch_contact: {
216
249
  cluster: 'ssIasZone',
217
250
  type: 'commandStatusChangeNotification',
@@ -396,6 +429,46 @@ const fzLocal = {
396
429
  };
397
430
 
398
431
  const definition = [
432
+ {
433
+ zigbeeModel: ['RBSH-WS-ZB-EU'],
434
+ model: 'BWA-1',
435
+ vendor: 'Bosch',
436
+ description: 'Zigbee smart water leak detector',
437
+ fromZigbee: [fz.ias_water_leak_alarm_1, fz.battery, fzLocal.bwa1_alarm_on_motion],
438
+ toZigbee: [tzLocal.bwa1],
439
+ meta: {battery: {voltageToPercentage: '3V_2500'}},
440
+ configure: async (device, coordinatorEndpoint, logger) => {
441
+ const endpoint = device.getEndpoint(1);
442
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', '64684']);
443
+ await reporting.batteryPercentageRemaining(endpoint);
444
+ await reporting.batteryVoltage(endpoint);
445
+ await endpoint.configureReporting(0xFCAC, [{
446
+ attribute: {ID: 0x0003, type: herdsman.Zcl.DataType.bool},
447
+ minimumReportInterval: 0,
448
+ maximumReportInterval: constants.repInterval.HOUR,
449
+ reportableChange: 1,
450
+ }], boschManufacturer);
451
+ },
452
+ exposes: [
453
+ e.water_leak(), e.battery(), e.tamper(),
454
+ exposes.binary('alarm_on_motion', ea.ALL, 'ON', 'OFF').withDescription('Enable/Disable sound alarm on motion'),
455
+ ],
456
+ },
457
+ {
458
+ zigbeeModel: ['RBSH-SD-ZB-EU'],
459
+ model: 'BSD-2',
460
+ vendor: 'Bosch',
461
+ description: 'Smoke alarm detector',
462
+ fromZigbee: [fz.battery, fz.ias_smoke_alarm_1],
463
+ toZigbee: [],
464
+ meta: {},
465
+ configure: async (device, coordinatorEndpoint, logger) => {
466
+ const endpoint = device.getEndpoint(1);
467
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 64684]);
468
+ await reporting.batteryPercentageRemaining(endpoint);
469
+ },
470
+ exposes: [e.smoke(), e.battery(), e.battery_low(), e.test()],
471
+ },
399
472
  {
400
473
  zigbeeModel: ['RFDL-ZB', 'RFDL-ZB-EU', 'RFDL-ZB-H', 'RFDL-ZB-K', 'RFDL-ZB-CHI', 'RFDL-ZB-MS', 'RFDL-ZB-ES', 'RFPR-ZB',
401
474
  'RFPR-ZB-EU', 'RFPR-ZB-CHI', 'RFPR-ZB-ES', 'RFPR-ZB-MS'],
package/devices/namron.js CHANGED
@@ -757,4 +757,18 @@ module.exports = [
757
757
  await reporting.activePower(endpoint);
758
758
  },
759
759
  },
760
+ {
761
+ zigbeeModel: ['4512747'],
762
+ model: '4512747',
763
+ vendor: 'Namron',
764
+ description: 'Curtain motor controller',
765
+ fromZigbee: [fz.cover_position_tilt],
766
+ toZigbee: [tz.cover_state, tz.cover_position_tilt],
767
+ exposes: [e.cover_position()],
768
+ configure: async (device, coordinatorEndpoint, logger) => {
769
+ const endpoint = device.getEndpoint(1);
770
+ await reporting.bind(endpoint, coordinatorEndpoint, ['closuresWindowCovering']);
771
+ await reporting.currentPositionLiftPercentage(endpoint);
772
+ },
773
+ },
760
774
  ];
package/devices/nue_3a.js CHANGED
@@ -122,6 +122,25 @@ module.exports = [
122
122
  await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
123
123
  },
124
124
  },
125
+ {
126
+ zigbeeModel: ['LXN-4S27LX1.0'],
127
+ model: 'HGZB-4S',
128
+ vendor: 'Nue / 3A',
129
+ description: 'Smart light switch - 4 gang v2.0',
130
+ extend: extend.switch(),
131
+ exposes: [
132
+ e.switch().withEndpoint('l1'), e.switch().withEndpoint('l2'), e.switch().withEndpoint('l3'), e.switch().withEndpoint('l4')],
133
+ endpoint: (device) => {
134
+ return {'l1': 1, 'l2': 2, 'l3': 3, 'l4': 4};
135
+ },
136
+ meta: {multiEndpoint: true},
137
+ configure: async (device, coordinatorEndpoint, logger) => {
138
+ await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
139
+ await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
140
+ await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
141
+ await reporting.bind(device.getEndpoint(4), coordinatorEndpoint, ['genOnOff']);
142
+ },
143
+ },
125
144
  {
126
145
  zigbeeModel: ['FB56+ZSW1IKJ1.7', 'FB56+ZSW1IKJ2.5', 'FB56+ZSW1IKJ2.7'],
127
146
  model: 'HGZB-043',
package/devices/owon.js CHANGED
@@ -105,6 +105,24 @@ module.exports = [
105
105
  change: [10, 10]}); // divider 1000: 0,01kWh
106
106
  },
107
107
  },
108
+ {
109
+ zigbeeModel: ['WSP403-E'],
110
+ model: 'WSP403',
111
+ vendor: 'OWON',
112
+ description: 'Smart plug',
113
+ fromZigbee: [fz.on_off, fz.metering],
114
+ toZigbee: [tz.on_off],
115
+ exposes: [e.switch(), e.power(), e.energy()],
116
+ configure: async (device, coordinatorEndpoint, logger) => {
117
+ const endpoint = device.getEndpoint(1);
118
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']);
119
+ await reporting.onOff(endpoint);
120
+ await reporting.readMeteringMultiplierDivisor(endpoint);
121
+ await reporting.instantaneousDemand(endpoint, {min: 5, max: constants.repInterval.MINUTES_5, change: 2}); // divider 1000: 2W
122
+ await reporting.currentSummDelivered(endpoint, {min: 5, max: constants.repInterval.MINUTES_5,
123
+ change: [10, 10]}); // divider 1000: 0,01kWh
124
+ },
125
+ },
108
126
  {
109
127
  zigbeeModel: ['WSP404'],
110
128
  model: 'WSP404',
@@ -279,7 +279,7 @@ module.exports = [
279
279
  model: 'CCT5011-0001/CCT5011-0002/MEG5011-0001',
280
280
  vendor: 'Schneider Electric',
281
281
  description: 'Micro module switch',
282
- extend: extend.switch(),
282
+ extend: extend.switch({disablePowerOnBehavior: true}),
283
283
  whiteLabel: [{vendor: 'Elko', model: 'EKO07144'}],
284
284
  configure: async (device, coordinatorEndpoint, logger) => {
285
285
  const endpoint = device.getEndpoint(1);
package/devices/tuya.js CHANGED
@@ -3372,6 +3372,7 @@ module.exports = [
3372
3372
  {modelID: 'TS0210', manufacturerName: '_TYZB01_kulduhbj'},
3373
3373
  {modelID: 'TS0210', manufacturerName: '_TYZB01_cc3jzhlj'},
3374
3374
  {modelID: 'TS0210', manufacturerName: '_TZ3000_bmfw9ykl'},
3375
+ {modelID: 'TS0210', manufacturerName: '_TYZB01_geigpsy4'},
3375
3376
  {modelID: 'TS0210', manufacturerName: '_TZ3000_fkxmyics'}],
3376
3377
  model: 'TS0210',
3377
3378
  vendor: 'TuYa',
@@ -24,6 +24,7 @@ module.exports = [
24
24
  exposes.binary('window_open_force', ea.ALL, true, false)
25
25
  .withDescription('Manually set window_open, ~1 minute to take affect.'),
26
26
  e.keypad_lockout(),
27
+ e.battery(),
27
28
  ],
28
29
  configure: async (device, coordinatorEndpoint, logger) => {
29
30
  const endpoint = device.getEndpoint(1);
package/devices/woox.js CHANGED
@@ -160,10 +160,11 @@ module.exports = [
160
160
  vendor: 'Woox',
161
161
  description: 'Smart siren',
162
162
  fromZigbee: [fz.battery, fz.ts0216_siren, fz.ias_alarm_only_alarm_1, fz.power_source],
163
- toZigbee: [tz.warning, tz.ts0216_volume],
163
+ toZigbee: [tz.warning, tz.ts0216_volume, tz.ts0216_duration],
164
164
  exposes: [e.battery(), e.battery_voltage(), e.warning(), exposes.binary('alarm', ea.STATE, true, false),
165
165
  exposes.binary('ac_connected', ea.STATE, true, false).withDescription('Is the device plugged in'),
166
- exposes.numeric('volume', ea.ALL).withValueMin(0).withValueMax(100).withDescription('Volume of siren')],
166
+ exposes.numeric('volume', ea.ALL).withValueMin(0).withValueMax(100).withDescription('Volume of siren'),
167
+ exposes.numeric('duration', ea.ALL).withValueMin(0).withValueMax(3600).withDescription('Duration of siren')],
167
168
  meta: {disableDefaultResponse: true},
168
169
  configure: async (device, coordinatorEndpoint) => {
169
170
  const endpoint = device.getEndpoint(1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "15.0.75",
3
+ "version": "15.0.76",
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": "^3.0.0",
41
- "zigbee-herdsman": "^0.14.99"
41
+ "zigbee-herdsman": "^0.14.100"
42
42
  },
43
43
  "devDependencies": {
44
44
  "eslint": "*",