zigbee-herdsman-converters 14.0.248 → 14.0.249
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 +14 -0
- package/devices/custom_devices_diy.js +21 -0
- package/devices/heiman.js +14 -0
- package/devices/ikea.js +7 -2
- package/devices/linkind.js +35 -0
- package/devices/moes.js +6 -0
- package/devices/philips.js +1 -1
- package/devices/plaid.js +23 -0
- package/devices/tuya.js +10 -3
- package/npm-shrinkwrap.json +1 -1
- package/package.json +1 -1
package/converters/fromZigbee.js
CHANGED
|
@@ -6483,6 +6483,20 @@ const converters = {
|
|
|
6483
6483
|
}
|
|
6484
6484
|
},
|
|
6485
6485
|
},
|
|
6486
|
+
heiman_doorbell_button: {
|
|
6487
|
+
cluster: 'ssIasZone',
|
|
6488
|
+
type: 'commandStatusChangeNotification',
|
|
6489
|
+
convert: (model, msg, publish, options, meta) => {
|
|
6490
|
+
if (utils.hasAlreadyProcessedMessage(msg)) return;
|
|
6491
|
+
const lookup = {32768: 'pressed'};
|
|
6492
|
+
const zoneStatus = msg.data.zonestatus;
|
|
6493
|
+
return {
|
|
6494
|
+
action: lookup[zoneStatus],
|
|
6495
|
+
tamper: (zoneStatus & 1<<2) > 0,
|
|
6496
|
+
battery_low: (zoneStatus & 1<<3) > 0,
|
|
6497
|
+
};
|
|
6498
|
+
},
|
|
6499
|
+
},
|
|
6486
6500
|
// #endregion
|
|
6487
6501
|
|
|
6488
6502
|
// #region Ignore converters (these message dont need parsing).
|
|
@@ -195,4 +195,25 @@ module.exports = [
|
|
|
195
195
|
},
|
|
196
196
|
exposes: [e.soil_moisture(), e.battery(), e.temperature()],
|
|
197
197
|
},
|
|
198
|
+
{
|
|
199
|
+
zigbeeModel: ['EFEKTA_THP_LR'],
|
|
200
|
+
model: 'EFEKTA_THP_LR',
|
|
201
|
+
vendor: 'Custom devices (DiY)',
|
|
202
|
+
description: 'DIY outdoor long-range sensor for temperature, humidity and atmospheric pressure',
|
|
203
|
+
fromZigbee: [fz.temperature, fz.humidity, fz.pressure, fz.battery],
|
|
204
|
+
toZigbee: [tz.factory_reset],
|
|
205
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
206
|
+
const endpoint = device.getEndpoint(1);
|
|
207
|
+
await reporting.bind(endpoint, coordinatorEndpoint, [
|
|
208
|
+
'genPowerCfg', 'msTemperatureMeasurement', 'msRelativeHumidity', 'msPressureMeasurement']);
|
|
209
|
+
const overides = {min: 0, max: 64800, change: 0};
|
|
210
|
+
await reporting.batteryVoltage(endpoint, overides);
|
|
211
|
+
await reporting.batteryPercentageRemaining(endpoint, overides);
|
|
212
|
+
await reporting.temperature(endpoint, overides);
|
|
213
|
+
await reporting.humidity(endpoint, overides);
|
|
214
|
+
await reporting.pressureExtended(endpoint, overides);
|
|
215
|
+
await endpoint.read('msPressureMeasurement', ['scale']);
|
|
216
|
+
},
|
|
217
|
+
exposes: [e.battery(), e.temperature(), e.humidity(), e.pressure()],
|
|
218
|
+
},
|
|
198
219
|
];
|
package/devices/heiman.js
CHANGED
|
@@ -669,4 +669,18 @@ module.exports = [
|
|
|
669
669
|
toZigbee: [],
|
|
670
670
|
exposes: [e.occupancy(), e.battery_low(), e.tamper()],
|
|
671
671
|
},
|
|
672
|
+
{
|
|
673
|
+
fingerprint: [{modelID: 'DoorBell-EM', manufacturerName: 'HEIMAN'}],
|
|
674
|
+
model: 'HS2DB',
|
|
675
|
+
vendor: 'HEIMAN',
|
|
676
|
+
description: 'Smart doorbell button',
|
|
677
|
+
fromZigbee: [fz.battery, fz.heiman_doorbell_button, fz.ignore_basic_report],
|
|
678
|
+
toZigbee: [],
|
|
679
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
680
|
+
const endpoint = device.getEndpoint(1);
|
|
681
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
|
682
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
683
|
+
},
|
|
684
|
+
exposes: [e.battery(), e.action(['pressed']), e.battery_low(), e.tamper()],
|
|
685
|
+
},
|
|
672
686
|
];
|
package/devices/ikea.js
CHANGED
|
@@ -340,7 +340,7 @@ module.exports = [
|
|
|
340
340
|
fz.ikea_arrow_release],
|
|
341
341
|
exposes: [e.battery(), e.action(['arrow_left_click', 'arrow_left_hold', 'arrow_left_release', 'arrow_right_click',
|
|
342
342
|
'arrow_right_hold', 'arrow_right_release', 'brightness_down_click', 'brightness_down_hold', 'brightness_down_release',
|
|
343
|
-
'brightness_up_click', 'brightness_up_hold', 'brightness_up_release'])],
|
|
343
|
+
'brightness_up_click', 'brightness_up_hold', 'brightness_up_release', 'toggle'])],
|
|
344
344
|
toZigbee: [],
|
|
345
345
|
ota: ota.tradfri,
|
|
346
346
|
meta: {battery: {dontDividePercentage: true}},
|
|
@@ -611,8 +611,13 @@ module.exports = [
|
|
|
611
611
|
model: 'E3007',
|
|
612
612
|
vendor: 'IKEA',
|
|
613
613
|
description: 'STARKVIND air purifier',
|
|
614
|
-
exposes: [e.fan().withModes(['low', 'medium', 'high', 'on', 'auto'])],
|
|
614
|
+
exposes: [e.fan().withModes(['off', 'low', 'medium', 'high', 'on', 'auto'])],
|
|
615
615
|
fromZigbee: [fz.fan],
|
|
616
616
|
toZigbee: [tz.fan_mode],
|
|
617
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
618
|
+
const endpoint = device.getEndpoint(1);
|
|
619
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['hvacFanCtrl']);
|
|
620
|
+
await reporting.fanMode(endpoint);
|
|
621
|
+
},
|
|
617
622
|
},
|
|
618
623
|
];
|
package/devices/linkind.js
CHANGED
|
@@ -5,8 +5,43 @@ 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 globalStore = require('../lib/store');
|
|
8
9
|
|
|
9
10
|
module.exports = [
|
|
11
|
+
{
|
|
12
|
+
zigbeeModel: ['ZB-KeypadGeneric-D0002'],
|
|
13
|
+
model: 'ZS130000078',
|
|
14
|
+
vendor: 'Linkind',
|
|
15
|
+
description: 'Security keypad battery',
|
|
16
|
+
meta: {battery: {voltageToPercentage: '3V_2100'}},
|
|
17
|
+
fromZigbee: [fz.command_arm_with_transaction, fz.battery, fz.ias_ace_occupancy_with_timeout,
|
|
18
|
+
fz.ias_smoke_alarm_1, fz.command_panic],
|
|
19
|
+
exposes: [e.battery(), e.battery_voltage(), e.battery_low(), e.occupancy(), e.tamper(),
|
|
20
|
+
exposes.numeric('action_code', ea.STATE).withDescription('Pin code introduced.'),
|
|
21
|
+
exposes.numeric('action_transaction', ea.STATE).withDescription('Last action transaction number.'),
|
|
22
|
+
exposes.text('action_zone', ea.STATE).withDescription('Alarm zone. Default value 23'),
|
|
23
|
+
e.action([
|
|
24
|
+
'panic', 'disarm', 'arm_day_zones', 'arm_all_zones', 'exit_delay', 'entry_delay'])],
|
|
25
|
+
toZigbee: [tz.arm_mode],
|
|
26
|
+
configure: async (device, coordinatorEndpoint) => {
|
|
27
|
+
const endpoint = device.getEndpoint(1);
|
|
28
|
+
const clusters = ['genPowerCfg', 'ssIasZone', 'ssIasAce', 'genBasic', 'genIdentify'];
|
|
29
|
+
await reporting.bind(endpoint, coordinatorEndpoint, clusters);
|
|
30
|
+
await reporting.batteryVoltage(endpoint);
|
|
31
|
+
},
|
|
32
|
+
onEvent: async (type, data, device) => {
|
|
33
|
+
if (type === 'message' && data.type === 'commandGetPanelStatus' && data.cluster === 'ssIasAce' &&
|
|
34
|
+
globalStore.hasValue(device.getEndpoint(1), 'panelStatus')) {
|
|
35
|
+
const payload = {
|
|
36
|
+
panelstatus: globalStore.getValue(device.getEndpoint(1), 'panelStatus'),
|
|
37
|
+
secondsremain: 0x00, audiblenotif: 0x00, alarmstatus: 0x00,
|
|
38
|
+
};
|
|
39
|
+
await device.getEndpoint(1).commandResponse(
|
|
40
|
+
'ssIasAce', 'getPanelStatusRsp', payload, {}, data.meta.zclTransactionSequenceNumber,
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
},
|
|
10
45
|
{
|
|
11
46
|
zigbeeModel: ['ZBT-RGBWSwitch-D0801'],
|
|
12
47
|
model: 'ZS230002',
|
package/devices/moes.js
CHANGED
|
@@ -99,8 +99,12 @@ module.exports = [
|
|
|
99
99
|
exposes: [e.switch().setAccess('state', ea.STATE_SET)],
|
|
100
100
|
fromZigbee: [fz.tuya_switch],
|
|
101
101
|
toZigbee: [tz.tuya_switch_state],
|
|
102
|
+
onEvent: tuya.onEventSetLocalTime,
|
|
102
103
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
103
104
|
await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
|
|
105
|
+
// Reports itself as battery which is not correct: https://github.com/Koenkk/zigbee2mqtt/issues/6190
|
|
106
|
+
device.powerSource = 'Mains (single phase)';
|
|
107
|
+
device.save();
|
|
104
108
|
},
|
|
105
109
|
},
|
|
106
110
|
{
|
|
@@ -112,6 +116,7 @@ module.exports = [
|
|
|
112
116
|
e.switch().withEndpoint('l2').setAccess('state', ea.STATE_SET)],
|
|
113
117
|
fromZigbee: [fz.ignore_basic_report, fz.tuya_switch],
|
|
114
118
|
toZigbee: [tz.tuya_switch_state],
|
|
119
|
+
onEvent: tuya.onEventSetLocalTime,
|
|
115
120
|
meta: {multiEndpoint: true},
|
|
116
121
|
endpoint: (device) => {
|
|
117
122
|
// Endpoint selection is made in tuya_switch_state
|
|
@@ -134,6 +139,7 @@ module.exports = [
|
|
|
134
139
|
e.switch().withEndpoint('l2').setAccess('state', ea.STATE_SET), e.switch().withEndpoint('l3').setAccess('state', ea.STATE_SET)],
|
|
135
140
|
fromZigbee: [fz.ignore_basic_report, fz.tuya_switch],
|
|
136
141
|
toZigbee: [tz.tuya_switch_state],
|
|
142
|
+
onEvent: tuya.onEventSetLocalTime,
|
|
137
143
|
meta: {multiEndpoint: true},
|
|
138
144
|
endpoint: (device) => {
|
|
139
145
|
// Endpoint selection is made in tuya_switch_state
|
package/devices/philips.js
CHANGED
|
@@ -1964,7 +1964,7 @@ module.exports = [
|
|
|
1964
1964
|
vendor: 'Philips',
|
|
1965
1965
|
description: 'Hue White and Color Ambiance A19 1100 lumen',
|
|
1966
1966
|
meta: {turnsOffAtBrightness1: true},
|
|
1967
|
-
extend:
|
|
1967
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
1968
1968
|
ota: ota.zigbeeOTA,
|
|
1969
1969
|
},
|
|
1970
1970
|
{
|
package/devices/plaid.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
|
|
2
|
+
const exposes = require('zigbee-herdsman-converters/lib/exposes');
|
|
3
|
+
const reporting = require('zigbee-herdsman-converters/lib/reporting');
|
|
4
|
+
const e = exposes.presets;
|
|
5
|
+
|
|
6
|
+
module.exports = [
|
|
7
|
+
{
|
|
8
|
+
fingerprint: [{modelID: 'PS-SPRZMS-SLP3', manufacturerName: 'PLAID SYSTEMS'}],
|
|
9
|
+
zigbeeModel: ['PS-SPRZMS-SLP3'],
|
|
10
|
+
model: 'PS-SPRZMS-SLP3',
|
|
11
|
+
vendor: 'PLAID SYSTEMS',
|
|
12
|
+
description: 'Spruce temperature and moisture sensor',
|
|
13
|
+
toZigbee: [],
|
|
14
|
+
fromZigbee: [fz.temperature, fz.humidity],
|
|
15
|
+
exposes: [e.humidity(), e.temperature()],
|
|
16
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
17
|
+
const endpoint = device.getEndpoint(1);
|
|
18
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'msRelativeHumidity']);
|
|
19
|
+
await reporting.temperature(endpoint);
|
|
20
|
+
await reporting.humidity(endpoint);
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
];
|
package/devices/tuya.js
CHANGED
|
@@ -132,7 +132,8 @@ module.exports = [
|
|
|
132
132
|
meta: {applyRedFix: true},
|
|
133
133
|
},
|
|
134
134
|
{
|
|
135
|
-
fingerprint: [{modelID: 'TS0501B', manufacturerName: '_TZ3000_4whigl8i'}
|
|
135
|
+
fingerprint: [{modelID: 'TS0501B', manufacturerName: '_TZ3000_4whigl8i'},
|
|
136
|
+
{modelID: 'TS0501B', manufacturerName: '_TZ3210_4whigl8i'}],
|
|
136
137
|
model: 'TS0501B',
|
|
137
138
|
description: 'Zigbee light',
|
|
138
139
|
vendor: 'TuYa',
|
|
@@ -881,14 +882,20 @@ module.exports = [
|
|
|
881
882
|
exposes: [e.humidity(), e.temperature(), e.battery()],
|
|
882
883
|
},
|
|
883
884
|
{
|
|
885
|
+
fingerprint: [{modelID: 'TS0011', manufacturerName: '_TZ3000_l8fsgo6p'}],
|
|
884
886
|
zigbeeModel: ['TS0011'],
|
|
885
887
|
model: 'TS0011',
|
|
886
888
|
vendor: 'TuYa',
|
|
887
889
|
description: 'Smart light switch - 1 gang',
|
|
888
890
|
extend: extend.switch(),
|
|
889
|
-
whiteLabel: [
|
|
890
|
-
{vendor: '
|
|
891
|
+
whiteLabel: [
|
|
892
|
+
{vendor: 'Vrey', model: 'VR-X712U-0013'},
|
|
893
|
+
{vendor: 'TUYATEC', model: 'GDKES-01TZXD'},
|
|
894
|
+
{vendor: 'Lonsonho', model: 'QS-Zigbee-S05-L', description: '1 gang smart switch module without neutral wire'},
|
|
895
|
+
{vendor: 'Mercator ikuü', model: 'SSW01'},
|
|
896
|
+
],
|
|
891
897
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
898
|
+
await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
|
|
892
899
|
// Reports itself as battery which is not correct: https://github.com/Koenkk/zigbee2mqtt/issues/6190
|
|
893
900
|
device.powerSource = 'Mains (single phase)';
|
|
894
901
|
device.save();
|
package/npm-shrinkwrap.json
CHANGED