zigbee-herdsman-converters 15.0.74 → 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/heiman.js +15 -0
- package/devices/ikea.js +92 -0
- package/devices/innr.js +22 -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 +2 -1
- 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/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/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
|
@@ -1987,7 +1987,7 @@ module.exports = [
|
|
|
1987
1987
|
},
|
|
1988
1988
|
},
|
|
1989
1989
|
{
|
|
1990
|
-
fingerprint:
|
|
1990
|
+
fingerprint: tuya.fingerprint('TS0001', ['_TZ3000_tqlv4ug4', '_TZ3000_gjrubzje', '_TZ3000_tygpxwqa']),
|
|
1991
1991
|
model: 'TS0001_switch_module',
|
|
1992
1992
|
vendor: 'TuYa',
|
|
1993
1993
|
description: '1 gang switch module',
|
|
@@ -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": "*",
|