zigbee-herdsman-converters 14.0.393 → 14.0.394
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/fromZigbee.js +25 -0
- package/converters/toZigbee.js +6 -0
- package/devices/legrand.js +4 -0
- package/devices/micromatic.js +31 -0
- package/devices/philips.js +8 -1
- package/devices/scanproducts.js +20 -0
- package/devices/tuya.js +17 -1
- package/devices/useelink.js +15 -0
- package/devices/xiaomi.js +1 -0
- package/lib/tuya.js +4 -0
- package/npm-shrinkwrap.json +1 -1
- package/package.json +1 -1
package/converters/fromZigbee.js
CHANGED
|
@@ -7761,6 +7761,31 @@ const converters = {
|
|
|
7761
7761
|
return result;
|
|
7762
7762
|
},
|
|
7763
7763
|
},
|
|
7764
|
+
matsee_garage_door_opener: {
|
|
7765
|
+
cluster: 'manuSpecificTuya',
|
|
7766
|
+
type: ['commandDataReport', 'raw'],
|
|
7767
|
+
convert: (model, msg, publish, options, meta) => {
|
|
7768
|
+
const result = {};
|
|
7769
|
+
for (const dpValue of msg.data.dpValues) {
|
|
7770
|
+
const value = tuya.getDataValue(dpValue);
|
|
7771
|
+
switch (dpValue.dp) {
|
|
7772
|
+
case tuya.dataPoints.garageDoorTrigger:
|
|
7773
|
+
result.action = 'trigger';
|
|
7774
|
+
break;
|
|
7775
|
+
case tuya.dataPoints.garageDoorContact:
|
|
7776
|
+
result.garage_door_contact = Boolean(!value);
|
|
7777
|
+
break;
|
|
7778
|
+
case tuya.dataPoints.garageDoorStatus:
|
|
7779
|
+
// This reports a garage door status (open, closed), but it is very naive and misleading
|
|
7780
|
+
break;
|
|
7781
|
+
default:
|
|
7782
|
+
meta.logger.debug(`zigbee-herdsman-converters:matsee_garage_door_opener: NOT RECOGNIZED ` +
|
|
7783
|
+
`DP #${dpValue.dp} with data ${JSON.stringify(dpValue)}`);
|
|
7784
|
+
}
|
|
7785
|
+
}
|
|
7786
|
+
return result;
|
|
7787
|
+
},
|
|
7788
|
+
},
|
|
7764
7789
|
moes_thermostat_tv: {
|
|
7765
7790
|
cluster: 'manuSpecificTuya',
|
|
7766
7791
|
type: ['commandDataResponse', 'commandDataReport', 'raw'],
|
package/converters/toZigbee.js
CHANGED
|
@@ -2333,6 +2333,12 @@ const converters = {
|
|
|
2333
2333
|
tuya.sendDataPointRaw(entity, tuya.dataPoints.lidlTimer, tuya.convertDecimalValueTo4ByteHexArray(value));
|
|
2334
2334
|
},
|
|
2335
2335
|
},
|
|
2336
|
+
matsee_garage_door_opener: {
|
|
2337
|
+
key: ['trigger'],
|
|
2338
|
+
convertSet: (entity, key, value, meta) => {
|
|
2339
|
+
tuya.sendDataPointBool(entity, tuya.dataPoints.action, true);
|
|
2340
|
+
},
|
|
2341
|
+
},
|
|
2336
2342
|
SPZ01_power_outage_memory: {
|
|
2337
2343
|
key: ['power_outage_memory'],
|
|
2338
2344
|
convertSet: async (entity, key, value, meta) => {
|
package/devices/legrand.js
CHANGED
|
@@ -5,6 +5,7 @@ const reporting = require('../lib/reporting');
|
|
|
5
5
|
const extend = require('../lib/extend');
|
|
6
6
|
const e = exposes.presets;
|
|
7
7
|
const ea = exposes.access;
|
|
8
|
+
const ota = require('../lib/ota');
|
|
8
9
|
|
|
9
10
|
const readInitialBatteryState = async (type, data, device) => {
|
|
10
11
|
if (['deviceAnnounce'].includes(type)) {
|
|
@@ -63,6 +64,7 @@ module.exports = [
|
|
|
63
64
|
fromZigbee: [fz.identify, fz.ignore_basic_report, fz.command_cover_open, fz.command_cover_close, fz.command_cover_stop, fz.battery,
|
|
64
65
|
fz.legrand_binary_input_moving],
|
|
65
66
|
toZigbee: [],
|
|
67
|
+
ota: ota.zigbeeOTA,
|
|
66
68
|
exposes: [e.battery(), e.action(['identify', 'open', 'close', 'stop', 'moving', 'stopped'])],
|
|
67
69
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
68
70
|
const endpoint = device.getEndpoint(1);
|
|
@@ -182,6 +184,7 @@ module.exports = [
|
|
|
182
184
|
zigbeeModel: [' Connected outlet\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000'],
|
|
183
185
|
model: '067775/741811',
|
|
184
186
|
vendor: 'Legrand',
|
|
187
|
+
ota: ota.zigbeeOTA,
|
|
185
188
|
description: 'Power socket with power consumption monitoring',
|
|
186
189
|
fromZigbee: [fz.identify, fz.on_off, fz.electrical_measurement],
|
|
187
190
|
toZigbee: [tz.on_off, tz.legrand_settingAlwaysEnableLed, tz.legrand_identify],
|
|
@@ -200,6 +203,7 @@ module.exports = [
|
|
|
200
203
|
vendor: 'Legrand',
|
|
201
204
|
description: 'Wired micromodule switch',
|
|
202
205
|
extend: extend.switch(),
|
|
206
|
+
ota: ota.zigbeeOTA,
|
|
203
207
|
fromZigbee: [fz.identify, fz.on_off],
|
|
204
208
|
toZigbee: [tz.on_off, tz.legrand_identify],
|
|
205
209
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const fz = require('../converters/fromZigbee');
|
|
2
|
+
const exposes = require('../lib/exposes');
|
|
3
|
+
const reporting = require('../lib/reporting');
|
|
4
|
+
const extend = require('../lib/extend');
|
|
5
|
+
const e = exposes.presets;
|
|
6
|
+
const ea = exposes.access;
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
module.exports = [
|
|
10
|
+
{
|
|
11
|
+
zigbeeModel: ['SZ1000'],
|
|
12
|
+
model: 'ZB250',
|
|
13
|
+
vendor: 'Micro Matic Norge AS',
|
|
14
|
+
description: 'Zigbee dimmer for LED',
|
|
15
|
+
fromZigbee: extend.light_onoff_brightness().fromZigbee.concat([fz.electrical_measurement, fz.metering]),
|
|
16
|
+
toZigbee: extend.light_onoff_brightness().toZigbee,
|
|
17
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
18
|
+
await extend.light_onoff_brightness().configure(device, coordinatorEndpoint, logger);
|
|
19
|
+
const endpoint = device.getEndpoint(1);
|
|
20
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl', 'haElectricalMeasurement', 'seMetering']);
|
|
21
|
+
await reporting.brightness(endpoint);
|
|
22
|
+
await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
|
|
23
|
+
await reporting.rmsVoltage(endpoint, {min: 10, change: 20}); // Voltage - Min change of 2V
|
|
24
|
+
await reporting.rmsCurrent(endpoint, {min: 10, change: 10}); // A - z2m displays only the first decimals, change of 10 / 0,01A
|
|
25
|
+
await reporting.activePower(endpoint, {min: 10, change: 15}); // W - Min change of 1,5W
|
|
26
|
+
await reporting.currentSummDelivered(endpoint, {min: 300}); // Report KWH every 5min
|
|
27
|
+
},
|
|
28
|
+
exposes: [e.light_brightness(), e.power(), e.current(), e.voltage().withAccess(ea.STATE), e.energy()],
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
package/devices/philips.js
CHANGED
|
@@ -29,6 +29,13 @@ const hueExtend = {
|
|
|
29
29
|
};
|
|
30
30
|
|
|
31
31
|
module.exports = [
|
|
32
|
+
{
|
|
33
|
+
zigbeeModel: ['929003055801'],
|
|
34
|
+
model: '929003055801',
|
|
35
|
+
vendor: 'Philips',
|
|
36
|
+
description: 'Hue white ambiance bathroom ceiling light Adore with Bluetooth',
|
|
37
|
+
extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
|
|
38
|
+
},
|
|
32
39
|
{
|
|
33
40
|
zigbeeModel: ['929003056901'],
|
|
34
41
|
model: '929003056901',
|
|
@@ -261,7 +268,7 @@ module.exports = [
|
|
|
261
268
|
ota: ota.zigbeeOTA,
|
|
262
269
|
},
|
|
263
270
|
{
|
|
264
|
-
zigbeeModel: ['LLC012', 'LLC011'],
|
|
271
|
+
zigbeeModel: ['LLC012', 'LLC011', 'LLC013'],
|
|
265
272
|
model: '7299760PH',
|
|
266
273
|
vendor: 'Philips',
|
|
267
274
|
description: 'Hue Bloom',
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const reporting = require('zigbee-herdsman-converters/lib/reporting');
|
|
2
|
+
const extend = require('zigbee-herdsman-converters/lib/extend');
|
|
3
|
+
|
|
4
|
+
module.exports = [
|
|
5
|
+
{
|
|
6
|
+
zigbeeModel: ['12501'],
|
|
7
|
+
model: '12501',
|
|
8
|
+
vendor: 'Scan Products',
|
|
9
|
+
description: 'Zigbee push dimmer',
|
|
10
|
+
fromZigbee: extend.light_onoff_brightness().fromZigbee,
|
|
11
|
+
toZigbee: extend.light_onoff_brightness().toZigbee,
|
|
12
|
+
extend: extend.light_onoff_brightness({noConfigure: true}),
|
|
13
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
14
|
+
await extend.light_onoff_brightness().configure(device, coordinatorEndpoint, logger);
|
|
15
|
+
const endpoint = device.getEndpoint(1);
|
|
16
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
|
|
17
|
+
await reporting.onOff(endpoint);
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
];
|
package/devices/tuya.js
CHANGED
|
@@ -206,7 +206,8 @@ module.exports = [
|
|
|
206
206
|
{modelID: 'TS0501B', manufacturerName: '_TZ3210_4whigl8i'},
|
|
207
207
|
{modelID: 'TS0501B', manufacturerName: '_TZ3210_9q49basr'},
|
|
208
208
|
{modelID: 'TS0501B', manufacturerName: '_TZ3210_grnwgegn'},
|
|
209
|
-
{modelID: 'TS0501B', manufacturerName: '_TZ3210_wuheofsg'}
|
|
209
|
+
{modelID: 'TS0501B', manufacturerName: '_TZ3210_wuheofsg'},
|
|
210
|
+
{modelID: 'TS0501B', manufacturerName: '_TZ3210_e5t9bfdv'}],
|
|
210
211
|
model: 'TS0501B',
|
|
211
212
|
description: 'Zigbee light',
|
|
212
213
|
vendor: 'TuYa',
|
|
@@ -1664,6 +1665,21 @@ module.exports = [
|
|
|
1664
1665
|
e.energy(), exposes.enum('power_outage_memory', ea.STATE_SET, ['on', 'off', 'restore'])
|
|
1665
1666
|
.withDescription('Recover state after power outage')],
|
|
1666
1667
|
},
|
|
1668
|
+
{
|
|
1669
|
+
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_nklqjk62'}],
|
|
1670
|
+
model: 'PJ-ZGD01',
|
|
1671
|
+
vendor: 'TuYa',
|
|
1672
|
+
description: 'Garage door opener',
|
|
1673
|
+
fromZigbee: [fz.matsee_garage_door_opener, fz.ignore_basic_report],
|
|
1674
|
+
toZigbee: [tz.matsee_garage_door_opener, tz.tuya_data_point_test],
|
|
1675
|
+
whiteLabel: [{vendor: 'MatSee Plus', model: 'PJ-ZGD01'}],
|
|
1676
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1677
|
+
const endpoint = device.getEndpoint(1);
|
|
1678
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genBasic']);
|
|
1679
|
+
},
|
|
1680
|
+
exposes: [exposes.binary('trigger', ea.STATE_SET, true, false).withDescription('Trigger the door movement'),
|
|
1681
|
+
e.action(), exposes.binary('garage_door_contact', ea.STATE, true, false)],
|
|
1682
|
+
},
|
|
1667
1683
|
{
|
|
1668
1684
|
fingerprint: [{modelID: 'TS0201', manufacturerName: '_TZ3000_qaaysllp'}],
|
|
1669
1685
|
model: 'LCZ030',
|
package/devices/useelink.js
CHANGED
|
@@ -22,6 +22,21 @@ module.exports = [
|
|
|
22
22
|
return {'l1': 1, 'l2': 2, 'l3': 3, 'l4': 4, 'l5': 5};
|
|
23
23
|
},
|
|
24
24
|
},
|
|
25
|
+
{
|
|
26
|
+
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_cfnprab5'}],
|
|
27
|
+
model: 'SM-0306E-2W',
|
|
28
|
+
vendor: 'UseeLink',
|
|
29
|
+
description: '4 gang switch, with USB',
|
|
30
|
+
exposes: [e.switch().withEndpoint('l1'), e.switch().withEndpoint('l2'), e.switch().withEndpoint('l3'),
|
|
31
|
+
e.switch().withEndpoint('l4'), e.switch().withEndpoint('l5')],
|
|
32
|
+
extend: extend.switch(),
|
|
33
|
+
meta: {multiEndpoint: true},
|
|
34
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
35
|
+
for (const ID of [1, 2, 3, 4, 5]) {
|
|
36
|
+
await reporting.bind(device.getEndpoint(ID), coordinatorEndpoint, ['genOnOff']);
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
},
|
|
25
40
|
{
|
|
26
41
|
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_tvuarksa'}],
|
|
27
42
|
model: 'SM-AZ713',
|
package/devices/xiaomi.js
CHANGED
package/lib/tuya.js
CHANGED
|
@@ -571,6 +571,10 @@ const dataPoints = {
|
|
|
571
571
|
AM02Border: 16,
|
|
572
572
|
AM02MotorWorkingMode: 20,
|
|
573
573
|
AM02AddRemoter: 101,
|
|
574
|
+
// Matsee Tuya Garage Door Opener
|
|
575
|
+
garageDoorTrigger: 1,
|
|
576
|
+
garageDoorContact: 3,
|
|
577
|
+
garageDoorStatus: 12,
|
|
574
578
|
};
|
|
575
579
|
|
|
576
580
|
const thermostatWeekFormat = {
|
package/npm-shrinkwrap.json
CHANGED