zigbee-herdsman-converters 15.0.91 → 15.0.92
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/climax.js +2 -2
- package/devices/niko.js +32 -12
- package/devices/tuya.js +1 -0
- package/devices/zemismart.js +1 -1
- package/package.json +1 -1
package/devices/climax.js
CHANGED
|
@@ -82,14 +82,14 @@ module.exports = [
|
|
|
82
82
|
vendor: 'Climax',
|
|
83
83
|
description: 'Smart siren',
|
|
84
84
|
fromZigbee: [fz.battery, fz.ias_wd, fz.ias_enroll, fz.ias_siren],
|
|
85
|
-
toZigbee: [tz.warning_simple, tz.ias_max_duration, tz.warning],
|
|
85
|
+
toZigbee: [tz.warning_simple, tz.ias_max_duration, tz.warning, tz.squawk],
|
|
86
86
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
87
87
|
const endpoint = device.getEndpoint(1);
|
|
88
88
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genBasic', 'ssIasZone', 'ssIasWd']);
|
|
89
89
|
await endpoint.read('ssIasZone', ['zoneState', 'iasCieAddr', 'zoneId']);
|
|
90
90
|
await endpoint.read('ssIasWd', ['maxDuration']);
|
|
91
91
|
},
|
|
92
|
-
exposes: [e.battery_low(), e.tamper(), e.warning(),
|
|
92
|
+
exposes: [e.battery_low(), e.tamper(), e.warning(), e.squawk(),
|
|
93
93
|
exposes.numeric('max_duration', ea.ALL).withUnit('s').withValueMin(0).withValueMax(600).withDescription('Duration of Siren'),
|
|
94
94
|
exposes.binary('alarm', ea.SET, 'START', 'OFF').withDescription('Manual start of siren')],
|
|
95
95
|
},
|
package/devices/niko.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const exposes = require('../lib/exposes');
|
|
2
2
|
const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee};
|
|
3
3
|
const tz = require('../converters/toZigbee');
|
|
4
|
+
const utils = require('../lib/utils');
|
|
4
5
|
const reporting = require('../lib/reporting');
|
|
5
6
|
const e = exposes.presets;
|
|
6
7
|
const ea = exposes.access;
|
|
@@ -13,9 +14,8 @@ const local = {
|
|
|
13
14
|
convert: (model, msg, publish, options, meta) => {
|
|
14
15
|
const state = {};
|
|
15
16
|
if (msg.data.hasOwnProperty('switchOperationMode')) {
|
|
16
|
-
const operationModeProperty = `operation_mode${meta.endpoint_name ? `_${meta.endpoint_name}` : ''}`;
|
|
17
17
|
const operationModeMap = {0x02: 'control_relay', 0x01: 'decoupled', 0x00: 'unknown'};
|
|
18
|
-
state[
|
|
18
|
+
state['operation_mode'] = operationModeMap[msg.data.switchOperationMode];
|
|
19
19
|
}
|
|
20
20
|
return state;
|
|
21
21
|
},
|
|
@@ -29,9 +29,22 @@ const local = {
|
|
|
29
29
|
if (msg.data.hasOwnProperty('switchAction')) {
|
|
30
30
|
// NOTE: a single press = two seperate values reported, 16 followed by 64
|
|
31
31
|
// a hold/release cyle = three seperate values, 16, 32, and 48
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
const actionMap = (model.model == '552-721X1') ? {
|
|
33
|
+
16: null,
|
|
34
|
+
64: 'single',
|
|
35
|
+
32: 'hold',
|
|
36
|
+
48: 'release',
|
|
37
|
+
} : {
|
|
38
|
+
16: null,
|
|
39
|
+
64: 'single_left',
|
|
40
|
+
32: 'hold_left',
|
|
41
|
+
48: 'release_left',
|
|
42
|
+
4096: 'single_right',
|
|
43
|
+
8192: 'hold_right',
|
|
44
|
+
12288: 'release_right',
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
state['action'] = actionMap[msg.data.switchAction];
|
|
35
48
|
}
|
|
36
49
|
return state;
|
|
37
50
|
},
|
|
@@ -75,12 +88,18 @@ const local = {
|
|
|
75
88
|
if (!operationModeLookup.hasOwnProperty(value)) {
|
|
76
89
|
throw new Error(`operation_mode was called with an invalid value (${value})`);
|
|
77
90
|
} else {
|
|
78
|
-
await
|
|
91
|
+
await utils.enforceEndpoint(entity, key, meta).write(
|
|
92
|
+
'manuSpecificNiko1',
|
|
93
|
+
{'switchOperationMode': operationModeLookup[value]},
|
|
94
|
+
);
|
|
79
95
|
return {state: {operation_mode: value.toLowerCase()}};
|
|
80
96
|
}
|
|
81
97
|
},
|
|
82
98
|
convertGet: async (entity, key, meta) => {
|
|
83
|
-
await
|
|
99
|
+
await utils.enforceEndpoint(entity, key, meta).read(
|
|
100
|
+
'manuSpecificNiko1',
|
|
101
|
+
['switchOperationMode'],
|
|
102
|
+
);
|
|
84
103
|
},
|
|
85
104
|
},
|
|
86
105
|
switch_led_enable: {
|
|
@@ -259,7 +278,7 @@ module.exports = [
|
|
|
259
278
|
endpoint: (device) => {
|
|
260
279
|
return {'l1': 1, 'l2': 2};
|
|
261
280
|
},
|
|
262
|
-
meta: {
|
|
281
|
+
meta: {multiEndpointEnforce: {'operation_mode': 1}},
|
|
263
282
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
264
283
|
const ep1 = device.getEndpoint(1);
|
|
265
284
|
const ep2 = device.getEndpoint(2);
|
|
@@ -272,10 +291,11 @@ module.exports = [
|
|
|
272
291
|
},
|
|
273
292
|
exposes: [
|
|
274
293
|
e.switch().withEndpoint('l1'), e.switch().withEndpoint('l2'),
|
|
275
|
-
e.action([
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
294
|
+
e.action([
|
|
295
|
+
'single_left', 'hold_left', 'release_left',
|
|
296
|
+
'single_right', 'hold_right', 'release_right',
|
|
297
|
+
]),
|
|
298
|
+
exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled']),
|
|
279
299
|
exposes.binary('led_enable', ea.ALL, true, false).withEndpoint('l1').withDescription('Enable LED'),
|
|
280
300
|
exposes.binary('led_enable', ea.ALL, true, false).withEndpoint('l2').withDescription('Enable LED'),
|
|
281
301
|
exposes.binary('led_state', ea.ALL, 'ON', 'OFF').withEndpoint('l1').withDescription('LED State'),
|
package/devices/tuya.js
CHANGED
|
@@ -805,6 +805,7 @@ module.exports = [
|
|
|
805
805
|
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_bq5c8xfe'},
|
|
806
806
|
{modelID: 'TS0601', manufacturerName: '_TZE200_bjawzodf'},
|
|
807
807
|
{modelID: 'TS0601', manufacturerName: '_TZE200_qyflbnbj'},
|
|
808
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_vs0skpuc'},
|
|
808
809
|
{modelID: 'TS0601', manufacturerName: '_TZE200_9yapgbuv'},
|
|
809
810
|
{modelID: 'TS0601', manufacturerName: '_TZE200_zl1kmjqx'}],
|
|
810
811
|
model: 'TS0601_temperature_humidity_sensor',
|
package/devices/zemismart.js
CHANGED
|
@@ -199,7 +199,7 @@ module.exports = [
|
|
|
199
199
|
exposes: [e.cover_position().setAccess('position', ea.STATE_SET)],
|
|
200
200
|
},
|
|
201
201
|
{
|
|
202
|
-
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_1n2kyphz'}],
|
|
202
|
+
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_1n2kyphz'}, {modelID: 'TS0601', manufacturerName: '_TZE200_shkxsgis'}],
|
|
203
203
|
model: 'TB26-4',
|
|
204
204
|
vendor: 'Zemismart',
|
|
205
205
|
description: '4-gang smart wall switch',
|