zigbee-herdsman-converters 14.0.650 → 14.0.651
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/inovelli.js +27 -0
- package/devices/sinope.js +52 -21
- package/devices/siterwell.js +4 -2
- package/devices/tuya.js +6 -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/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/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
|
@@ -1047,7 +1047,7 @@ module.exports = [
|
|
|
1047
1047
|
},
|
|
1048
1048
|
},
|
|
1049
1049
|
{
|
|
1050
|
-
fingerprint: [{modelID: 'TS0202', manufacturerName: '_TZ3000_msl6wxk9'}],
|
|
1050
|
+
fingerprint: [{modelID: 'TS0202', manufacturerName: '_TZ3000_msl6wxk9'}, {modelID: 'TS0202', manufacturerName: '_TZ3040_fwxuzcf4'}],
|
|
1051
1051
|
model: 'ZM-35H-Q',
|
|
1052
1052
|
vendor: 'TuYa',
|
|
1053
1053
|
description: 'Motion sensor',
|
|
@@ -1757,7 +1757,7 @@ module.exports = [
|
|
|
1757
1757
|
exposes: [e.battery(), e.water_leak()],
|
|
1758
1758
|
},
|
|
1759
1759
|
{
|
|
1760
|
-
fingerprint:
|
|
1760
|
+
fingerprint: tuya.fingerprint('TS0001', ['_TZ3000_xkap8wtb', '_TZ3000_qnejhcsu', '_TZ3000_x3ewpzyr']),
|
|
1761
1761
|
model: 'TS0001_power',
|
|
1762
1762
|
description: 'Switch with power monitoring',
|
|
1763
1763
|
vendor: 'TuYa',
|
|
@@ -2217,7 +2217,10 @@ module.exports = [
|
|
|
2217
2217
|
],
|
|
2218
2218
|
},
|
|
2219
2219
|
{
|
|
2220
|
-
fingerprint: [
|
|
2220
|
+
fingerprint: [
|
|
2221
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_a4bpgplm'},
|
|
2222
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_dv8abrrz'},
|
|
2223
|
+
],
|
|
2221
2224
|
model: 'TS0601_thermostat_1',
|
|
2222
2225
|
vendor: 'TuYa',
|
|
2223
2226
|
description: 'Thermostatic radiator valve',
|