zigbee-herdsman-converters 14.0.650 → 14.0.652
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/converters/toZigbee.js +24 -0
- package/devices/custom_devices_diy.js +9 -0
- package/devices/ikea.js +2 -2
- package/devices/inovelli.js +27 -0
- package/devices/legrand.js +13 -4
- package/devices/philips.js +7 -0
- package/devices/sinope.js +52 -21
- package/devices/siterwell.js +4 -2
- package/devices/tuya.js +7 -3
- package/package.json +1 -1
package/converters/toZigbee.js
CHANGED
|
@@ -4405,6 +4405,30 @@ const converters = {
|
|
|
4405
4405
|
}
|
|
4406
4406
|
},
|
|
4407
4407
|
},
|
|
4408
|
+
sinope_led_color_on: {
|
|
4409
|
+
// DM2500ZB and SW2500ZB
|
|
4410
|
+
key: ['led_color_on'],
|
|
4411
|
+
convertSet: async (entity, key, value, meta) => {
|
|
4412
|
+
const r = (value.r >= 0 && value.r <= 255) ? value.r : 0;
|
|
4413
|
+
const g = (value.g >= 0 && value.g <= 255) ? value.g : 0;
|
|
4414
|
+
const b = (value.b >= 0 && value.b <= 255) ? value.b : 0;
|
|
4415
|
+
|
|
4416
|
+
const valueHex = r + g * 256 + (b * 256 ** 2);
|
|
4417
|
+
await entity.write('manuSpecificSinope', {ledColorOn: valueHex});
|
|
4418
|
+
},
|
|
4419
|
+
},
|
|
4420
|
+
sinope_led_color_off: {
|
|
4421
|
+
// DM2500ZB and SW2500ZB
|
|
4422
|
+
key: ['led_color_off'],
|
|
4423
|
+
convertSet: async (entity, key, value, meta) => {
|
|
4424
|
+
const r = (value.r >= 0 && value.r <= 255) ? value.r : 0;
|
|
4425
|
+
const g = (value.g >= 0 && value.g <= 255) ? value.g : 0;
|
|
4426
|
+
const b = (value.b >= 0 && value.b <= 255) ? value.b : 0;
|
|
4427
|
+
|
|
4428
|
+
const valueHex = r + g * 256 + b * 256 ** 2;
|
|
4429
|
+
await entity.write('manuSpecificSinope', {ledColorOff: valueHex});
|
|
4430
|
+
},
|
|
4431
|
+
},
|
|
4408
4432
|
sinope_minimum_brightness: {
|
|
4409
4433
|
// DM2500ZB
|
|
4410
4434
|
key: ['minimum_brightness'],
|
|
@@ -816,4 +816,13 @@ module.exports = [
|
|
|
816
816
|
exposes.numeric('low_humidity', ea.STATE_SET).withUnit('C').withDescription('Setting Low Humidity Border')
|
|
817
817
|
.withValueMin(0).withValueMax(99)],
|
|
818
818
|
},
|
|
819
|
+
{
|
|
820
|
+
zigbeeModel: ['UT-02'],
|
|
821
|
+
model: 'EFR32MG21.Router',
|
|
822
|
+
vendor: 'Custom devices (DiY)',
|
|
823
|
+
description: 'EFR32MG21 router',
|
|
824
|
+
fromZigbee: [],
|
|
825
|
+
toZigbee: [],
|
|
826
|
+
exposes: [],
|
|
827
|
+
},
|
|
819
828
|
];
|
package/devices/ikea.js
CHANGED
|
@@ -367,10 +367,10 @@ module.exports = [
|
|
|
367
367
|
extend: tradfriExtend.light_onoff_brightness_colortemp(),
|
|
368
368
|
},
|
|
369
369
|
{
|
|
370
|
-
zigbeeModel: ['TRADFRIbulbE27WSglobeclear806lm'],
|
|
370
|
+
zigbeeModel: ['TRADFRIbulbE26WSglobeclear800lm', 'TRADFRIbulbE27WSglobeclear806lm'],
|
|
371
371
|
model: 'LED2004G8',
|
|
372
372
|
vendor: 'IKEA',
|
|
373
|
-
description: 'TRADFRI LED bulb E27 806 lumen, dimmable, white spectrum, clear',
|
|
373
|
+
description: 'TRADFRI LED bulb E26/E27 800/806 lumen, dimmable, white spectrum, clear',
|
|
374
374
|
extend: tradfriExtend.light_onoff_brightness_colortemp(),
|
|
375
375
|
},
|
|
376
376
|
{
|
package/devices/inovelli.js
CHANGED
|
@@ -1196,6 +1196,33 @@ Object.keys(ATTRIBUTES).forEach((key) => {
|
|
|
1196
1196
|
}
|
|
1197
1197
|
});
|
|
1198
1198
|
|
|
1199
|
+
// Put actions at the bottom of ui
|
|
1200
|
+
exposesList.push(
|
|
1201
|
+
e.action([
|
|
1202
|
+
'down_single',
|
|
1203
|
+
'up_single',
|
|
1204
|
+
'config_single',
|
|
1205
|
+
'down_release',
|
|
1206
|
+
'up_release',
|
|
1207
|
+
'config_release',
|
|
1208
|
+
'down_held',
|
|
1209
|
+
'up_held',
|
|
1210
|
+
'config_held',
|
|
1211
|
+
'down_double',
|
|
1212
|
+
'up_double',
|
|
1213
|
+
'config_double',
|
|
1214
|
+
'down_triple',
|
|
1215
|
+
'up_triple',
|
|
1216
|
+
'config_triple',
|
|
1217
|
+
'down_quadruple',
|
|
1218
|
+
'up_quadruple',
|
|
1219
|
+
'config_quadruple',
|
|
1220
|
+
'down_quintuple',
|
|
1221
|
+
'up_quintuple',
|
|
1222
|
+
'config_quintuple',
|
|
1223
|
+
]),
|
|
1224
|
+
);
|
|
1225
|
+
|
|
1199
1226
|
module.exports = [
|
|
1200
1227
|
{
|
|
1201
1228
|
zigbeeModel: ['VZM31-SN'],
|
package/devices/legrand.js
CHANGED
|
@@ -26,6 +26,17 @@ const fzLocal = {
|
|
|
26
26
|
return payload;
|
|
27
27
|
},
|
|
28
28
|
},
|
|
29
|
+
command_toggle: {
|
|
30
|
+
cluster: 'genOnOff',
|
|
31
|
+
type: 'commandToggle',
|
|
32
|
+
convert: (model, msg, publish, options, meta) => {
|
|
33
|
+
// Re-uses transactions sequence number so hasAlreadyProcessedMessage(msg) suppresess actions
|
|
34
|
+
// https://github.com/Koenkk/zigbee2mqtt/issues/14256
|
|
35
|
+
const payload = {action: utils.postfixWithEndpointName('toggle', msg, model, meta)};
|
|
36
|
+
utils.addActionGroup(payload, msg, model);
|
|
37
|
+
return payload;
|
|
38
|
+
},
|
|
39
|
+
},
|
|
29
40
|
};
|
|
30
41
|
|
|
31
42
|
module.exports = [
|
|
@@ -122,7 +133,7 @@ module.exports = [
|
|
|
122
133
|
vendor: 'Legrand',
|
|
123
134
|
// led blink RED when battery is low
|
|
124
135
|
description: 'Wireless remote switch',
|
|
125
|
-
fromZigbee: [fz.identify, fz.command_on, fzLocal.command_off,
|
|
136
|
+
fromZigbee: [fz.identify, fz.command_on, fzLocal.command_off, fzLocal.command_toggle, fz.legacy.cmd_move, fz.legacy.cmd_stop,
|
|
126
137
|
fz.battery],
|
|
127
138
|
exposes: [e.battery(), e.action(['identify', 'on', 'off', 'toggle', 'brightness_move_up',
|
|
128
139
|
'brightness_move_down', 'brightness_stop'])],
|
|
@@ -132,14 +143,13 @@ module.exports = [
|
|
|
132
143
|
const endpoint = device.getEndpoint(1);
|
|
133
144
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'genOnOff', 'genLevelCtrl']);
|
|
134
145
|
},
|
|
135
|
-
onEvent: readInitialBatteryState,
|
|
136
146
|
},
|
|
137
147
|
{
|
|
138
148
|
zigbeeModel: [' Double gangs remote switch\u0000\u0000\u0000\u0000'],
|
|
139
149
|
model: '067774',
|
|
140
150
|
vendor: 'Legrand',
|
|
141
151
|
description: 'Wireless double remote switch',
|
|
142
|
-
fromZigbee: [fz.identify, fz.command_on, fzLocal.command_off,
|
|
152
|
+
fromZigbee: [fz.identify, fz.command_on, fzLocal.command_off, fzLocal.command_toggle, fz.command_move, fz.command_stop, fz.battery],
|
|
143
153
|
exposes: [e.battery(),
|
|
144
154
|
e.action(['identify', 'on', 'off', 'toggle', 'brightness_move_up', 'brightness_move_down', 'brightness_stop'])],
|
|
145
155
|
toZigbee: [],
|
|
@@ -153,7 +163,6 @@ module.exports = [
|
|
|
153
163
|
endpoint: (device) => {
|
|
154
164
|
return {left: 1, right: 2};
|
|
155
165
|
},
|
|
156
|
-
onEvent: readInitialBatteryState,
|
|
157
166
|
},
|
|
158
167
|
{
|
|
159
168
|
zigbeeModel: [' Remote toggle switch\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000'],
|
package/devices/philips.js
CHANGED
|
@@ -2869,4 +2869,11 @@ module.exports = [
|
|
|
2869
2869
|
description: ' Hue Sana wall lamp with Bluetooth white',
|
|
2870
2870
|
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
2871
2871
|
},
|
|
2872
|
+
{
|
|
2873
|
+
zigbeeModel: ['LTD007'],
|
|
2874
|
+
model: '5110731H5',
|
|
2875
|
+
vendor: 'Philips',
|
|
2876
|
+
description: 'Hue white ambiance Garnea downlight',
|
|
2877
|
+
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
|
|
2878
|
+
},
|
|
2872
2879
|
];
|
package/devices/sinope.js
CHANGED
|
@@ -240,13 +240,64 @@ module.exports = [
|
|
|
240
240
|
model: 'SW2500ZB',
|
|
241
241
|
vendor: 'Sinopé',
|
|
242
242
|
description: 'Zigbee smart light switch',
|
|
243
|
-
|
|
243
|
+
exposes: [e.switch(),
|
|
244
|
+
exposes.numeric('led_intensity_on', ea.SET).withValueMin(0).withValueMax(100)
|
|
245
|
+
.withDescription('Control status LED intensity when load ON'),
|
|
246
|
+
exposes.numeric('led_intensity_off', ea.SET).withValueMin(0).withValueMax(100)
|
|
247
|
+
.withDescription('Control status LED intensity when load OFF'),
|
|
248
|
+
exposes.composite('led_color_on', 'led_color_on')
|
|
249
|
+
.withFeature(exposes.numeric('r', ea.ALL))
|
|
250
|
+
.withFeature(exposes.numeric('g', ea.ALL))
|
|
251
|
+
.withFeature(exposes.numeric('b', ea.ALL))
|
|
252
|
+
.withDescription('Control status LED intensity when load ON'),
|
|
253
|
+
exposes.composite('led_color_off', 'led_color_off')
|
|
254
|
+
.withFeature(exposes.numeric('r', ea.ALL))
|
|
255
|
+
.withFeature(exposes.numeric('g', ea.ALL))
|
|
256
|
+
.withFeature(exposes.numeric('b', ea.ALL))
|
|
257
|
+
.withDescription('Control status LED color when load OFF'),
|
|
258
|
+
],
|
|
259
|
+
fromZigbee: [fz.on_off, fz.electrical_measurement],
|
|
260
|
+
toZigbee: [tz.on_off, tz.sinope_led_intensity_on, tz.sinope_led_intensity_off, tz.sinope_led_color_on, tz.sinope_led_color_off],
|
|
244
261
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
245
262
|
const endpoint = device.getEndpoint(1);
|
|
246
263
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
|
|
247
264
|
await reporting.onOff(endpoint);
|
|
248
265
|
},
|
|
249
266
|
},
|
|
267
|
+
{
|
|
268
|
+
zigbeeModel: ['DM2500ZB'],
|
|
269
|
+
model: 'DM2500ZB',
|
|
270
|
+
vendor: 'Sinopé',
|
|
271
|
+
description: 'Zigbee smart dimmer',
|
|
272
|
+
exposes: [e.light_brightness(),
|
|
273
|
+
exposes.numeric('led_intensity_on', ea.SET).withValueMin(0).withValueMax(100)
|
|
274
|
+
.withDescription('Control status LED when load ON'),
|
|
275
|
+
exposes.numeric('led_intensity_off', ea.SET).withValueMin(0).withValueMax(100)
|
|
276
|
+
.withDescription('Control status LED when load OFF'),
|
|
277
|
+
exposes.numeric('minimum_brightness', ea.SET).withValueMin(0).withValueMax(3000)
|
|
278
|
+
.withDescription('Control minimum dimmer brightness'),
|
|
279
|
+
exposes.composite('led_color_on', 'led_color_on')
|
|
280
|
+
.withFeature(exposes.numeric('r', ea.ALL))
|
|
281
|
+
.withFeature(exposes.numeric('g', ea.ALL))
|
|
282
|
+
.withFeature(exposes.numeric('b', ea.ALL))
|
|
283
|
+
.withDescription('Control status LED intensity when load ON'),
|
|
284
|
+
exposes.composite('led_color_off', 'led_color_off')
|
|
285
|
+
.withFeature(exposes.numeric('r', ea.ALL))
|
|
286
|
+
.withFeature(exposes.numeric('g', ea.ALL))
|
|
287
|
+
.withFeature(exposes.numeric('b', ea.ALL))
|
|
288
|
+
.withDescription('Control status LED color when load OFF'),
|
|
289
|
+
],
|
|
290
|
+
fromZigbee: [fz.on_off, fz.brightness, fz.electrical_measurement],
|
|
291
|
+
toZigbee: [tz.light_onoff_brightness, tz.sinope_led_intensity_on, tz.sinope_led_intensity_off,
|
|
292
|
+
tz.sinope_minimum_brightness, tz.sinope_led_color_on, tz.sinope_led_color_off],
|
|
293
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
294
|
+
await extend.light_onoff_brightness().configure(device, coordinatorEndpoint, logger);
|
|
295
|
+
const endpoint = device.getEndpoint(1);
|
|
296
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
|
|
297
|
+
await reporting.onOff(endpoint);
|
|
298
|
+
await reporting.brightness(endpoint);
|
|
299
|
+
},
|
|
300
|
+
},
|
|
250
301
|
{
|
|
251
302
|
zigbeeModel: ['SP2600ZB'],
|
|
252
303
|
model: 'SP2600ZB',
|
|
@@ -279,26 +330,6 @@ module.exports = [
|
|
|
279
330
|
await reporting.activePower(endpoint, {min: 10, change: 1});
|
|
280
331
|
},
|
|
281
332
|
},
|
|
282
|
-
{
|
|
283
|
-
zigbeeModel: ['DM2500ZB'],
|
|
284
|
-
model: 'DM2500ZB',
|
|
285
|
-
vendor: 'Sinopé',
|
|
286
|
-
description: 'Zigbee smart dimmer',
|
|
287
|
-
extend: extend.light_onoff_brightness({noConfigure: true}),
|
|
288
|
-
exposes: [e.light_brightness(), e.effect(), exposes.numeric('led_intensity_on', ea.SET).withValueMin(0).withValueMax(100)
|
|
289
|
-
.withDescription('Control status LED when load ON'), exposes.numeric('led_intensity_off', ea.SET).withValueMin(0)
|
|
290
|
-
.withValueMax(100).withDescription('Control status LED when load OFF'), exposes.numeric('minimum_brightness', ea.SET)
|
|
291
|
-
.withValueMin(0).withValueMax(3000).withDescription('Control minimum dimmer brightness')],
|
|
292
|
-
toZigbee: [tz.light_onoff_brightness, tz.effect, tz.sinope_led_intensity_on, tz.sinope_led_intensity_off,
|
|
293
|
-
tz.sinope_minimum_brightness],
|
|
294
|
-
configure: async (device, coordinatorEndpoint, logger) => {
|
|
295
|
-
await extend.light_onoff_brightness().configure(device, coordinatorEndpoint, logger);
|
|
296
|
-
const endpoint = device.getEndpoint(1);
|
|
297
|
-
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
|
|
298
|
-
await reporting.onOff(endpoint);
|
|
299
|
-
await reporting.brightness(endpoint);
|
|
300
|
-
},
|
|
301
|
-
},
|
|
302
333
|
{
|
|
303
334
|
zigbeeModel: ['RM3250ZB'],
|
|
304
335
|
model: 'RM3250ZB',
|
package/devices/siterwell.js
CHANGED
|
@@ -14,7 +14,8 @@ module.exports = [
|
|
|
14
14
|
{modelId: 'TS0601', manufacturerName: '_TZE200_hhrtiq0x'},
|
|
15
15
|
{modelId: 'TS0601', manufacturerName: '_TZE200_ps5v5jor'},
|
|
16
16
|
{modelId: 'TS0601', manufacturerName: '_TZE200_jeaxp72v'},
|
|
17
|
-
{modelId: 'TS0601', manufacturerName: '_TZE200_owwdxjbx'}
|
|
17
|
+
{modelId: 'TS0601', manufacturerName: '_TZE200_owwdxjbx'},
|
|
18
|
+
{modelId: 'TS0601', manufacturerName: '_TZE200_2cs6g9i7'}],
|
|
18
19
|
model: 'GS361A-H04',
|
|
19
20
|
vendor: 'Siterwell',
|
|
20
21
|
description: 'Radiator valve with thermostat',
|
|
@@ -31,7 +32,8 @@ module.exports = [
|
|
|
31
32
|
{vendor: 'Unitec', description: 'Thermostatic Radiator Valve Controller', model: '30946'},
|
|
32
33
|
{vendor: 'Tesla', description: 'Thermostatic Radiator Valve Controller', model: 'TSL-TRV-GS361A'},
|
|
33
34
|
{vendor: 'Nedis', description: 'Thermostatic Radiator Valve Controller', model: 'ZBHTR10WT'},
|
|
34
|
-
{vendor: 'TCP Smart', description: 'Smart Thermostatic Radiator Valve', model: 'TBUWTRV'}
|
|
35
|
+
{vendor: 'TCP Smart', description: 'Smart Thermostatic Radiator Valve', model: 'TBUWTRV'},
|
|
36
|
+
{vendor: 'Brennenstuhl', description: 'Radiator Thermostat', model: 'HT CZ 01'}],
|
|
35
37
|
exposes: [e.child_lock(), e.window_detection(), e.battery(), e.valve_detection(), e.position(), exposes.climate()
|
|
36
38
|
.withSetpoint('current_heating_setpoint', 5, 30, 0.5, ea.STATE_SET).withLocalTemperature(ea.STATE)
|
|
37
39
|
.withSystemMode(['off', 'auto', 'heat'], ea.STATE_SET)
|
package/devices/tuya.js
CHANGED
|
@@ -913,6 +913,7 @@ module.exports = [
|
|
|
913
913
|
{modelID: 'TS0505B', manufacturerName: '_TZ3210_awrucboq'},
|
|
914
914
|
{modelID: 'TS0505B', manufacturerName: '_TZ3210_ijczzg9h'},
|
|
915
915
|
{modelID: 'TS0505B', manufacturerName: '_TZ3210_qxenlrin'},
|
|
916
|
+
{modelID: 'TS0505B', manufacturerName: '_TZ3210_vaiyrvd1'},
|
|
916
917
|
{modelID: 'TS0505B', manufacturerName: '_TZ3210_iwbaamgh'},
|
|
917
918
|
{modelID: 'TS0505B', manufacturerName: '_TZ3210_klv2wul0'},
|
|
918
919
|
{modelID: 'TS0505B', manufacturerName: '_TZ3210_s6zec0of'},
|
|
@@ -1047,7 +1048,7 @@ module.exports = [
|
|
|
1047
1048
|
},
|
|
1048
1049
|
},
|
|
1049
1050
|
{
|
|
1050
|
-
fingerprint: [{modelID: 'TS0202', manufacturerName: '_TZ3000_msl6wxk9'}],
|
|
1051
|
+
fingerprint: [{modelID: 'TS0202', manufacturerName: '_TZ3000_msl6wxk9'}, {modelID: 'TS0202', manufacturerName: '_TZ3040_fwxuzcf4'}],
|
|
1051
1052
|
model: 'ZM-35H-Q',
|
|
1052
1053
|
vendor: 'TuYa',
|
|
1053
1054
|
description: 'Motion sensor',
|
|
@@ -1757,7 +1758,7 @@ module.exports = [
|
|
|
1757
1758
|
exposes: [e.battery(), e.water_leak()],
|
|
1758
1759
|
},
|
|
1759
1760
|
{
|
|
1760
|
-
fingerprint:
|
|
1761
|
+
fingerprint: tuya.fingerprint('TS0001', ['_TZ3000_xkap8wtb', '_TZ3000_qnejhcsu', '_TZ3000_x3ewpzyr']),
|
|
1761
1762
|
model: 'TS0001_power',
|
|
1762
1763
|
description: 'Switch with power monitoring',
|
|
1763
1764
|
vendor: 'TuYa',
|
|
@@ -2217,7 +2218,10 @@ module.exports = [
|
|
|
2217
2218
|
],
|
|
2218
2219
|
},
|
|
2219
2220
|
{
|
|
2220
|
-
fingerprint: [
|
|
2221
|
+
fingerprint: [
|
|
2222
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_a4bpgplm'},
|
|
2223
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_dv8abrrz'},
|
|
2224
|
+
],
|
|
2221
2225
|
model: 'TS0601_thermostat_1',
|
|
2222
2226
|
vendor: 'TuYa',
|
|
2223
2227
|
description: 'Thermostatic radiator valve',
|