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 +73 -0
- package/devices/namron.js +14 -0
- package/devices/nue_3a.js +19 -0
- package/devices/owon.js +18 -0
- package/devices/schneider_electric.js +1 -1
- package/devices/tuya.js +1 -0
- package/devices/viessmann.js +1 -0
- package/devices/woox.js +3 -2
- package/package.json +2 -2
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',
|
package/devices/viessmann.js
CHANGED
|
@@ -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.
|
|
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.
|
|
41
|
+
"zigbee-herdsman": "^0.14.100"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"eslint": "*",
|