zigbee-herdsman-converters 14.0.593 → 14.0.596
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 +1 -1
- package/devices/develco.js +30 -1
- package/devices/ecodim.js +3 -3
- package/devices/giex.js +2 -2
- package/devices/iluminize.js +9 -1
- package/devices/istar.js +8 -0
- package/devices/legrand.js +1 -0
- package/devices/philips.js +102 -2
- package/devices/robb.js +20 -0
- package/devices/shinasystem.js +2 -0
- package/devices/skydance.js +15 -0
- package/devices/third_reality.js +3 -1
- package/devices/tuya.js +14 -6
- package/devices/woolley.js +17 -0
- package/devices/xiaomi.js +34 -24
- package/package.json +1 -1
package/devices/climax.js
CHANGED
|
@@ -91,7 +91,7 @@ module.exports = [
|
|
|
91
91
|
},
|
|
92
92
|
exposes: [e.battery_low(), e.tamper(), e.warning(),
|
|
93
93
|
exposes.numeric('max_duration', ea.ALL).withUnit('s').withValueMin(0).withValueMax(600).withDescription('Duration of Siren'),
|
|
94
|
-
exposes.binary('alarm', ea.SET, '
|
|
94
|
+
exposes.binary('alarm', ea.SET, 'START', 'OFF').withDescription('Manual start of siren')],
|
|
95
95
|
},
|
|
96
96
|
{
|
|
97
97
|
zigbeeModel: ['WS15_00.00.00.14TC'],
|
package/devices/develco.js
CHANGED
|
@@ -8,6 +8,35 @@ const ota = require('../lib/ota');
|
|
|
8
8
|
const e = exposes.presets;
|
|
9
9
|
const ea = exposes.access;
|
|
10
10
|
|
|
11
|
+
const fzLocal = {
|
|
12
|
+
// SPLZB-134 reports strange values sometimes
|
|
13
|
+
// https://github.com/Koenkk/zigbee2mqtt/issues/13329
|
|
14
|
+
SPLZB134_electrical_measurement: {
|
|
15
|
+
...fz.electrical_measurement,
|
|
16
|
+
convert: (model, msg, publish, options, meta) => {
|
|
17
|
+
if (msg.data.rmsVoltage !== 0xFFFF && msg.data.rmsCurrent !== 0xFFFF && msg.data.activePower !== -0x8000) {
|
|
18
|
+
return fz.electrical_measurement.convert(model, msg, publish, options, meta);
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
SPLZB134_device_temperature: {
|
|
23
|
+
...fz.device_temperature,
|
|
24
|
+
convert: (model, msg, publish, options, meta) => {
|
|
25
|
+
if (msg.data.currentTemperature !== -0x8000) {
|
|
26
|
+
return fz.device_temperature.convert(model, msg, publish, options, meta);
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
SPLZB134_metering: {
|
|
31
|
+
...fz.metering,
|
|
32
|
+
convert: (model, msg, publish, options, meta) => {
|
|
33
|
+
if (msg.data.instantaneousDemand !== -0x800000) {
|
|
34
|
+
return fz.metering.convert(model, msg, publish, options, meta);
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
|
|
11
40
|
module.exports = [
|
|
12
41
|
{
|
|
13
42
|
zigbeeModel: ['SPLZB-131'],
|
|
@@ -65,7 +94,7 @@ module.exports = [
|
|
|
65
94
|
model: 'SPLZB-134',
|
|
66
95
|
vendor: 'Develco',
|
|
67
96
|
description: 'Power plug (type G)',
|
|
68
|
-
fromZigbee: [fz.on_off,
|
|
97
|
+
fromZigbee: [fz.on_off, fzLocal.SPLZB134_electrical_measurement, fzLocal.SPLZB134_metering, fzLocal.SPLZB134_device_temperature],
|
|
69
98
|
toZigbee: [tz.on_off],
|
|
70
99
|
exposes: [e.switch(), e.power(), e.current(), e.voltage(), e.energy(), e.device_temperature()],
|
|
71
100
|
configure: async (device, coordinatorEndpoint, logger) => {
|
package/devices/ecodim.js
CHANGED
|
@@ -8,9 +8,9 @@ module.exports = [
|
|
|
8
8
|
{
|
|
9
9
|
fingerprint: [
|
|
10
10
|
{type: 'Router', manufacturerName: 'EcoDim BV', modelID: 'EcoDim-Zigbee 3.0', endpoints: [
|
|
11
|
-
{ID: 1, profileID: 260,
|
|
12
|
-
{ID: 2, profileID: 260,
|
|
13
|
-
{ID: 242, profileID: 41440,
|
|
11
|
+
{ID: 1, profileID: 260, inputClusters: [0, 3, 4, 5, 6, 8, 2821, 4096], outputClusters: [25]},
|
|
12
|
+
{ID: 2, profileID: 260, inputClusters: [0, 3, 4, 5, 6, 8], outputClusters: []},
|
|
13
|
+
{ID: 242, profileID: 41440, inputClusters: [], outputClusters: [33]},
|
|
14
14
|
]},
|
|
15
15
|
],
|
|
16
16
|
model: 'Eco-Dim.05',
|
package/devices/giex.js
CHANGED
|
@@ -118,8 +118,8 @@ module.exports = [
|
|
|
118
118
|
e.battery(),
|
|
119
119
|
exposes.binary('state', ea.STATE_SET, 'ON', 'OFF').withDescription('State'),
|
|
120
120
|
exposes.enum('mode', ea.STATE_SET, ['duration', 'capacity']).withDescription('Irrigation mode'),
|
|
121
|
-
exposes.numeric('irrigation_target', exposes.access.STATE_SET).withValueMin(0).withValueMax(1440).withUnit('
|
|
122
|
-
.withDescription('Irrigation Target, duration in minutes or capacity in
|
|
121
|
+
exposes.numeric('irrigation_target', exposes.access.STATE_SET).withValueMin(0).withValueMax(1440).withUnit('minutes or Litres')
|
|
122
|
+
.withDescription('Irrigation Target, duration in minutes or capacity in Litres (depending on mode)'),
|
|
123
123
|
exposes.numeric('cycle_irrigation_num_times', exposes.access.STATE_SET).withValueMin(0).withValueMax(100).withUnit('#')
|
|
124
124
|
.withDescription('Number of cycle irrigation times, set to 0 for single cycle'),
|
|
125
125
|
exposes.numeric('cycle_irrigation_interval', exposes.access.STATE_SET).withValueMin(0).withValueMax(1440).withUnit('min')
|
package/devices/iluminize.js
CHANGED
|
@@ -5,6 +5,7 @@ const extend = require('../lib/extend');
|
|
|
5
5
|
const tz = require('../converters/toZigbee');
|
|
6
6
|
const ota = require('../lib/ota');
|
|
7
7
|
const e = exposes.presets;
|
|
8
|
+
const ea = exposes.access;
|
|
8
9
|
|
|
9
10
|
module.exports = [
|
|
10
11
|
{
|
|
@@ -160,7 +161,14 @@ module.exports = [
|
|
|
160
161
|
fz.command_step, fz.command_recall, fz.command_on, fz.command_off],
|
|
161
162
|
exposes: [e.battery(), e.action([
|
|
162
163
|
'color_move', 'color_temperature_move', 'hue_move', 'hue_stop', 'brightness_step_up', 'brightness_step_down',
|
|
163
|
-
'recall_*', 'on', 'off'])
|
|
164
|
+
'recall_*', 'on', 'off']),
|
|
165
|
+
// exposes.composite('action_color', 'action_color') * At the moment not shown in Frontend correctly
|
|
166
|
+
// .withFeature(exposes.numeric('x', ea.STATE)) see: https://github.com/nurikk/zigbee2mqtt-frontend/issues/1535
|
|
167
|
+
// .withFeature(exposes.numeric('y', ea.STATE)),
|
|
168
|
+
exposes.numeric('action_color_temperature', ea.STATE).withUnit('mired'),
|
|
169
|
+
exposes.numeric('action_group', ea.STATE),
|
|
170
|
+
exposes.numeric('action_transition_time', ea.STATE),
|
|
171
|
+
exposes.text('action_color', ea.STATE)],
|
|
164
172
|
toZigbee: [],
|
|
165
173
|
meta: {multiEndpoint: true},
|
|
166
174
|
endpoint: (device) => {
|
package/devices/istar.js
CHANGED
|
@@ -9,4 +9,12 @@ module.exports = [
|
|
|
9
9
|
extend: extend.light_onoff_brightness(),
|
|
10
10
|
meta: {turnsOffAtBrightness1: true},
|
|
11
11
|
},
|
|
12
|
+
{
|
|
13
|
+
zigbeeModel: ['iStar CCT Light'],
|
|
14
|
+
model: 'SCCV2403-2',
|
|
15
|
+
vendor: 'iStar',
|
|
16
|
+
description: 'Zigbee 3.0 LED controller, dimmable white spectrum',
|
|
17
|
+
extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
|
|
18
|
+
meta: {turnsOffAtBrightness1: true},
|
|
19
|
+
},
|
|
12
20
|
];
|
package/devices/legrand.js
CHANGED
|
@@ -110,6 +110,7 @@ module.exports = [
|
|
|
110
110
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
111
111
|
const endpoint = device.getEndpoint(1);
|
|
112
112
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genBinaryInput', 'closuresWindowCovering', 'genIdentify']);
|
|
113
|
+
await reporting.currentPositionLiftPercentage(endpoint);
|
|
113
114
|
},
|
|
114
115
|
exposes: [e.cover_position()],
|
|
115
116
|
},
|
package/devices/philips.js
CHANGED
|
@@ -84,6 +84,96 @@ const fzLocal = {
|
|
|
84
84
|
},
|
|
85
85
|
};
|
|
86
86
|
|
|
87
|
+
const gradientScenes = {
|
|
88
|
+
'blossom': '50010400135000000039d553d2955ba5287a9f697e25fb802800',
|
|
89
|
+
'crocus': '50010400135000000050389322f97f2b597343764cc664282800',
|
|
90
|
+
'precious': '5001040013500000007fa8838bb9789a786d7577499a773f2800',
|
|
91
|
+
'narcissa': '500104001350000000b0498a5c0a888fea89eb0b7ee15c742800',
|
|
92
|
+
'beginnings': '500104001350000000b3474def153e2ad42e98232c7483292800',
|
|
93
|
+
'first_light': '500104001350000000b28b7900e959d3f648a614389723362800',
|
|
94
|
+
'horizon': '500104001350000000488b7d6cbb750c6642f1133cc4033c2800',
|
|
95
|
+
'valley_dawn': '500104001350000000c1aa7de03a7a8ce861c7c4410d94412800',
|
|
96
|
+
'sunflare': '500104001350000000d0aa7d787a7daf197590154d6c14472800',
|
|
97
|
+
'emerald_flutter': '5001040013500000006a933977e34bb0d35e916468f246792800',
|
|
98
|
+
'memento': '500104001350000000f87318a3e31962331ec3532cceea892800',
|
|
99
|
+
'resplendent': '500104001350000000278b6d257a58efe84204273a35f5252800',
|
|
100
|
+
'scarlet_dream': '500104001350000000b02c654e4c5b45ab51fb0950d6c84d2800',
|
|
101
|
+
'lovebirds': '50010400135000000053ab84ea1a7e35fb7c098c73994c772800',
|
|
102
|
+
'smitten': '500104001350000000fe7b70a74b6aa42b65811b60550a592800',
|
|
103
|
+
'glitz_and_glam': '500104001350000000cc193cb9b845bad9521d1c77bf6c712800',
|
|
104
|
+
'promise': '500104001350000000258b606eca6b28d6382db445df26812800',
|
|
105
|
+
'ruby_romance': '5001040013500000000edb63cbcb6bac0c670b2d58204e572800',
|
|
106
|
+
'city_of_love': '50010400135000000055830e5cf31b6aa339d2ec70908b802800',
|
|
107
|
+
'honolulu': '500104001350000000dbfd59866c6378ec6c45cc765c0a822800',
|
|
108
|
+
'savanna_sunset': '50010400135000000005ae65c38c6c6b4b7573ca820fc9832800',
|
|
109
|
+
'golden_pond': '5001040013500000007e4a88cc4a8605db8728ec7b666c792800',
|
|
110
|
+
'runy_glow': '50010400135000000095bb53ac2a56eb99591e095c54985e2800',
|
|
111
|
+
'tropical_twilight': '500104001350000000408523a0b636e777524c0a71a76c6e2800',
|
|
112
|
+
'miami': '50010400135000000022ec61e6d94902d83766c3305a43182800',
|
|
113
|
+
'cancun': '500104001350000000a7eb54673d55944e6265fd6e26bb842800',
|
|
114
|
+
'rio': '500104001350000000a26526088c51a74b58ea6b7137ba892800',
|
|
115
|
+
'chinatown': '500104001350000000b33e5b408e59d90d5b4c6c6360ac792800',
|
|
116
|
+
'ibiza': '500104001350000000014d6d708c73827b7b6c7a8887f98a2800',
|
|
117
|
+
'osaka': '500104001350000000d649510b5c4deb7c5d8b6d6d2b9b802800',
|
|
118
|
+
'tokyo': '500104001350000000d1c311665331d3451fd59c4e394c7b2800',
|
|
119
|
+
'motown': '50010400135000000055730e5db3156623306c533d7a235c2800',
|
|
120
|
+
'fairfax': '50010400135000000072d34a3664477d7a61581d5fc08e5b2800',
|
|
121
|
+
'galaxy': '500104001350000000a6cb638b2a4f8cfa549bb9549ff73a2800',
|
|
122
|
+
'starlight': '5001040013500000008d897134a9653ec854d2963ed1d4282800',
|
|
123
|
+
'blood moon': '500104001350000000202a6987c8599ee647ec632779c3142800',
|
|
124
|
+
'artic_aurora': '50010400135000000082548922057511046571c32d5b93192800',
|
|
125
|
+
'moonlight': '50010400135000000055730e5e9320c1832e96243ebec7652800',
|
|
126
|
+
'nebula': '50010400135000000026c852e106460d653ee745342964142800',
|
|
127
|
+
'sundown': '500104001350000000f37c68157c6d8efa755ac5512e24332800',
|
|
128
|
+
'blue_lagoon': '50010400135000000088c3623975699ea672a0c8831ada6d2800',
|
|
129
|
+
'palm_beach': '5001040013500000005ec4679ba56077f85a80ea64639c6a2800',
|
|
130
|
+
'lake_placid': '5001040013500000002eab69239a692d996552c54c39743a2800',
|
|
131
|
+
'mountain_breeze': '500104001350000000df843d2355419195465a98674ca97b2800',
|
|
132
|
+
'lake_mist': '500104001350000000e3286f39b96859f86266e54ded943f2800',
|
|
133
|
+
'ocean_dawn': '5001040013500000005cf9779da97105b96b07485e32564a2800',
|
|
134
|
+
'frosty_dawn': '5001040013500000006d6883bca87e3029758ec9722d6a722800',
|
|
135
|
+
'sunday_morning': '5001040013500000002c586dc6f87345997c63f983f777892800',
|
|
136
|
+
'emerald_isle': '500104001350000000e535628dc57ed2667d8b687d1e2a812800',
|
|
137
|
+
'spring_blossom': '500104001350000000a8b75fd0c75826b851a7094d305b652800',
|
|
138
|
+
'midsummer_sun': '500104001350000000002984799984dd29848eba836c0b7f2800',
|
|
139
|
+
'autumn_gold': '500104001350000000435a7817aa7ba3f979a8a981f3c9852800',
|
|
140
|
+
'spring_lake': '5001040013500000004a976d3347736e677561b77a4b07812800',
|
|
141
|
+
'winter_mountain': '5001040013500000002c555c68c55d7c555ef165606136622800',
|
|
142
|
+
'midwinter': '500104001350000000bda5532c554dbd254cd5a4428d94392800',
|
|
143
|
+
'amber_bloom': '500104001350000000739d67f2bc7372ec78a0ab78be8a6f2800',
|
|
144
|
+
'lily': '5001040013500000009cfc76c5ab793d4a6a1a9b586b9c522800',
|
|
145
|
+
'painted_sky': '500104001350000000d1c424c3d63783384c3f7a6a83bd6d2800',
|
|
146
|
+
'winter_beauty': '500104001350000000e2335ea7b4942467952db986a7ab7b2800',
|
|
147
|
+
'orange_fields': '500104001350000000409c69694c79eafa88498a8fb867aa2800',
|
|
148
|
+
'forest_adventure': '50010400135000000023999bbd76b363d4b674d3415fb3222800',
|
|
149
|
+
'blue_planet': '50010400135000000037a7a3a403b489737b2b746e6873362800',
|
|
150
|
+
'soho': '500104001350000000c52c4e220b6eed8a53d404192b04782800',
|
|
151
|
+
'vapor_wave': '500104001350000000e1c32401251acb183ac31b8051ea842800',
|
|
152
|
+
'magneto': '50010400135000000077b3286d9340b9e3662d99943c9b852800',
|
|
153
|
+
'tyrell': '500104001350000000ef4419a898370ea84698353574434e2800',
|
|
154
|
+
'disturbia': '50010400135000000084f371a4845e6998388c3b4f57ce582800',
|
|
155
|
+
'hal': '50010400135000000075f351a6244cf6dc5d480c658cda862800',
|
|
156
|
+
'golden_star': '5001040013500000007a4a8702eb8372ac7892cd61d51e5c2800',
|
|
157
|
+
'under_the_tree': '5001040013500000001de498b9a3cc0c9b8563bb6cc1ae5d2800',
|
|
158
|
+
'silent_night': '5001040013500000009e296a245a6f660a75086b70953b6e2800',
|
|
159
|
+
'rosy_sparkle': '500104001350000000810967c63a6cb2aa5ea7094eddd73c2800',
|
|
160
|
+
'festive_fun': '5001040013500000005a9318de53123e9414fdcc67839d612800',
|
|
161
|
+
'colour_burst': '500104001350000000f2731ff0c6266a6c64246e57d4f98f2800',
|
|
162
|
+
'crystalline': '5001040013500000006ea96a92a85e58074e18543d9cf3332800',
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
const tzLocal = {
|
|
166
|
+
gradient_scene: {
|
|
167
|
+
key: ['gradient_scene'],
|
|
168
|
+
convertSet: async (entity, key, value, meta) => {
|
|
169
|
+
const scene = gradientScenes[value];
|
|
170
|
+
if (!scene) throw new Error(`Gradient scene '${value}' is unknown`);
|
|
171
|
+
const payload = {data: Buffer.from(scene, 'hex')};
|
|
172
|
+
await entity.command('manuSpecificPhilips2', 'multiColor', payload);
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
|
|
87
177
|
module.exports = [
|
|
88
178
|
{
|
|
89
179
|
zigbeeModel: ['929003055801'],
|
|
@@ -134,6 +224,13 @@ module.exports = [
|
|
|
134
224
|
description: 'Hue gradient lightstrip',
|
|
135
225
|
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
136
226
|
},
|
|
227
|
+
{
|
|
228
|
+
zigbeeModel: ['929003045401'],
|
|
229
|
+
model: '929003045401',
|
|
230
|
+
vendor: 'Philips',
|
|
231
|
+
description: 'Hue Centura recessed spotlight white and color ambiance GU10 (black)',
|
|
232
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
233
|
+
},
|
|
137
234
|
{
|
|
138
235
|
zigbeeModel: ['929003045501_01', '929003045501_02', '929003045501_03'],
|
|
139
236
|
model: '929003045501',
|
|
@@ -968,7 +1065,7 @@ module.exports = [
|
|
|
968
1065
|
extend: hueExtend.light_onoff_brightness_colortemp(),
|
|
969
1066
|
},
|
|
970
1067
|
{
|
|
971
|
-
zigbeeModel: ['3417831P6'],
|
|
1068
|
+
zigbeeModel: ['3417831P6', '929003056101'],
|
|
972
1069
|
model: '3417831P6',
|
|
973
1070
|
vendor: 'Philips',
|
|
974
1071
|
description: 'Hue white ambiance Adore spotlight with Bluetooth (1 spot)',
|
|
@@ -1483,6 +1580,9 @@ module.exports = [
|
|
|
1483
1580
|
model: '4080248U9',
|
|
1484
1581
|
vendor: 'Philips',
|
|
1485
1582
|
description: 'Hue White and color ambiance Signe floor light',
|
|
1583
|
+
toZigbee: [tzLocal.gradient_scene, ...hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}).toZigbee],
|
|
1584
|
+
exposes: [exposes.enum('gradient_scene', ea.SET, Object.keys(gradientScenes)),
|
|
1585
|
+
...hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}).exposes],
|
|
1486
1586
|
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
1487
1587
|
},
|
|
1488
1588
|
{
|
|
@@ -2071,7 +2171,7 @@ module.exports = [
|
|
|
2071
2171
|
extend: hueExtend.light_onoff_brightness_colortemp_color(),
|
|
2072
2172
|
},
|
|
2073
2173
|
{
|
|
2074
|
-
zigbeeModel: ['LCS001'],
|
|
2174
|
+
zigbeeModel: ['LCS001', '1741830P7'],
|
|
2075
2175
|
model: '1741830P7',
|
|
2076
2176
|
vendor: 'Philips',
|
|
2077
2177
|
description: 'Hue Lily outdoor spot light',
|
package/devices/robb.js
CHANGED
|
@@ -274,4 +274,24 @@ module.exports = [
|
|
|
274
274
|
await reporting.currentSummDelivered(endpoint1, {min: 60, change: 1});
|
|
275
275
|
},
|
|
276
276
|
},
|
|
277
|
+
{
|
|
278
|
+
zigbeeModel: ['ROB_200-035-0'],
|
|
279
|
+
model: 'ROB_200-035-0',
|
|
280
|
+
vendor: 'ROBB',
|
|
281
|
+
description: '1 channel switch with power monitoring',
|
|
282
|
+
fromZigbee: [fz.electrical_measurement, fz.on_off, fz.ignore_genLevelCtrl_report, fz.metering],
|
|
283
|
+
toZigbee: [tz.on_off],
|
|
284
|
+
exposes: [e.switch(), e.power(), e.current(), e.voltage(), e.energy()],
|
|
285
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
286
|
+
const endpoint = device.getEndpoint(1);
|
|
287
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'seMetering']);
|
|
288
|
+
await reporting.onOff(endpoint);
|
|
289
|
+
await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
|
|
290
|
+
await reporting.readMeteringMultiplierDivisor(endpoint);
|
|
291
|
+
await reporting.rmsCurrent(endpoint);
|
|
292
|
+
await reporting.activePower(endpoint);
|
|
293
|
+
await reporting.rmsVoltage(endpoint);
|
|
294
|
+
await reporting.currentSummDelivered(endpoint);
|
|
295
|
+
},
|
|
296
|
+
},
|
|
277
297
|
];
|
package/devices/shinasystem.js
CHANGED
|
@@ -3,6 +3,7 @@ const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/lega
|
|
|
3
3
|
const tz = require('../converters/toZigbee');
|
|
4
4
|
const reporting = require('../lib/reporting');
|
|
5
5
|
const extend = require('../lib/extend');
|
|
6
|
+
const ota = require('../lib/ota');
|
|
6
7
|
const e = exposes.presets;
|
|
7
8
|
const ea = exposes.access;
|
|
8
9
|
|
|
@@ -23,6 +24,7 @@ module.exports = [
|
|
|
23
24
|
const payload = reporting.payload('presentValue', 1, 600, 0);
|
|
24
25
|
await endpoint.configureReporting('genAnalogInput', payload);
|
|
25
26
|
},
|
|
27
|
+
ota: ota.zigbeeOTA,
|
|
26
28
|
exposes: [e.battery(), e.battery_voltage(),
|
|
27
29
|
exposes.enum('status', ea.STATE, ['idle', 'in', 'out']).withDescription('Currently status'),
|
|
28
30
|
exposes.numeric('people', ea.ALL).withValueMin(0).withValueMax(50).withDescription('People count')],
|
package/devices/skydance.js
CHANGED
|
@@ -2,6 +2,7 @@ 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
4
|
const extend = require('../lib/extend');
|
|
5
|
+
const reporting = require('../lib/reporting');
|
|
5
6
|
const ea = exposes.access;
|
|
6
7
|
|
|
7
8
|
module.exports = [
|
|
@@ -95,4 +96,18 @@ module.exports = [
|
|
|
95
96
|
],
|
|
96
97
|
meta: {separateWhite: true},
|
|
97
98
|
},
|
|
99
|
+
{
|
|
100
|
+
fingerprint: [{modelID: 'TS0501B', manufacturerName: '_TZB210_rkgngb5o'}],
|
|
101
|
+
model: 'WZ1',
|
|
102
|
+
vendor: 'Skydance',
|
|
103
|
+
description: 'Zigbee & RF 2 channel LED controller',
|
|
104
|
+
extend: extend.light_onoff_brightness({noConfigure: true, disableEffect: true}),
|
|
105
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
106
|
+
await extend.light_onoff_brightness().configure(device, coordinatorEndpoint, logger);
|
|
107
|
+
const endpoint = device.getEndpoint(1);
|
|
108
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
|
|
109
|
+
await reporting.onOff(endpoint);
|
|
110
|
+
await reporting.brightness(endpoint);
|
|
111
|
+
},
|
|
112
|
+
},
|
|
98
113
|
];
|
package/devices/third_reality.js
CHANGED
|
@@ -116,8 +116,10 @@ module.exports = [
|
|
|
116
116
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
117
117
|
const endpoint = device.getEndpoint(1);
|
|
118
118
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'closuresWindowCovering']);
|
|
119
|
-
await reporting.batteryPercentageRemaining(endpoint);
|
|
120
119
|
await reporting.currentPositionLiftPercentage(endpoint);
|
|
120
|
+
try {
|
|
121
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
122
|
+
} catch (error) {/* Fails for some*/}
|
|
121
123
|
},
|
|
122
124
|
exposes: [e.cover_position(), e.battery()],
|
|
123
125
|
},
|
package/devices/tuya.js
CHANGED
|
@@ -744,6 +744,7 @@ module.exports = [
|
|
|
744
744
|
fingerprint: [{modelID: 'TS0505B', manufacturerName: '_TZ3000_qqjaziws'},
|
|
745
745
|
{modelID: 'TS0505B', manufacturerName: '_TZ3000_jtmhndw2'},
|
|
746
746
|
{modelID: 'TS0505B', manufacturerName: '_TZ3000_ezlg0pht'},
|
|
747
|
+
{modelID: 'TS0505B', manufacturerName: '_TZ3210_3lbtuxgp'},
|
|
747
748
|
{modelID: 'TS0505B', manufacturerName: '_TZ3210_5snkkrxw'},
|
|
748
749
|
{modelID: 'TS0505B', manufacturerName: '_TZ3000_12sxjap4'},
|
|
749
750
|
{modelID: 'TS0505B', manufacturerName: '_TZ3000_x2fqbdun'},
|
|
@@ -842,14 +843,15 @@ module.exports = [
|
|
|
842
843
|
extend: extend.light_onoff_brightness(),
|
|
843
844
|
},
|
|
844
845
|
{
|
|
845
|
-
fingerprint: [{modelID: 'TS0202', manufacturerName: '_TYZB01_jytabjkb'}
|
|
846
|
+
fingerprint: [{modelID: 'TS0202', manufacturerName: '_TYZB01_jytabjkb'},
|
|
847
|
+
{modelID: 'TS0202', manufacturerName: '_TZ3000_lltemgsf'}],
|
|
846
848
|
model: 'TS0202_1',
|
|
847
849
|
vendor: 'TuYa',
|
|
848
850
|
description: 'Motion sensor',
|
|
849
851
|
// Requires alarm_1_with_timeout https://github.com/Koenkk/zigbee2mqtt/issues/2818#issuecomment-776119586
|
|
850
852
|
fromZigbee: [fz.ias_occupancy_alarm_1_with_timeout, fz.battery, fz.ignore_basic_report],
|
|
851
853
|
toZigbee: [],
|
|
852
|
-
exposes: [e.occupancy(), e.battery_low(), e.
|
|
854
|
+
exposes: [e.occupancy(), e.battery_low(), e.linkquality()],
|
|
853
855
|
},
|
|
854
856
|
{
|
|
855
857
|
fingerprint: [{modelID: 'TS0202', manufacturerName: '_TYZB01_dr6sduka'},
|
|
@@ -2479,7 +2481,12 @@ module.exports = [
|
|
|
2479
2481
|
.withLocalTemperature(ea.STATE).withLocalTemperatureCalibration(-9.9, 9.9, 0.1, ea.STATE_SET)
|
|
2480
2482
|
.withSystemMode(['off', 'heat'], ea.STATE_SET).withRunningState(['idle', 'heat'], ea.STATE)
|
|
2481
2483
|
.withPreset(['manual', 'program']).withSensor(['internal', 'external', 'both'], ea.STATE_SET),
|
|
2482
|
-
exposes.text('schedule', ea.STATE_SET)
|
|
2484
|
+
exposes.text('schedule', ea.STATE_SET).withDescription('There are 8 periods in the schedule in total. ' +
|
|
2485
|
+
'6 for workdays and 2 for holidays. It should be set in the following format for each of the periods: ' +
|
|
2486
|
+
'`hours:minutes/temperature`. All periods should be set at once and delimited by the space symbol. ' +
|
|
2487
|
+
'For example: `06:00/20.5 08:00/15 11:30/15 13:30/15 17:00/22 22:00/15 06:00/20 22:00/15`. ' +
|
|
2488
|
+
'The thermostat doesn\'t report the schedule by itself even if you change it manually from device'),
|
|
2489
|
+
e.child_lock(), e.week(),
|
|
2483
2490
|
exposes.enum('brightness_state', ea.STATE_SET, ['off', 'low', 'medium', 'high'])
|
|
2484
2491
|
.withDescription('Screen brightness'),
|
|
2485
2492
|
exposes.binary('sound', ea.STATE_SET, 'ON', 'OFF')
|
|
@@ -2516,7 +2523,8 @@ module.exports = [
|
|
|
2516
2523
|
{
|
|
2517
2524
|
fingerprint: [{modelID: 'TS0210', manufacturerName: '_TYZB01_3zv6oleo'},
|
|
2518
2525
|
{modelID: 'TS0210', manufacturerName: '_TYZB01_j9xxahcl'},
|
|
2519
|
-
{modelID: 'TS0210', manufacturerName: '_TYZB01_kulduhbj'}
|
|
2526
|
+
{modelID: 'TS0210', manufacturerName: '_TYZB01_kulduhbj'},
|
|
2527
|
+
{modelID: 'TS0210', manufacturerName: '_TZ3000_bmfw9ykl'}],
|
|
2520
2528
|
model: 'TS0210',
|
|
2521
2529
|
vendor: 'TuYa',
|
|
2522
2530
|
description: 'Vibration sensor',
|
|
@@ -2804,7 +2812,7 @@ module.exports = [
|
|
|
2804
2812
|
.withFeature(exposes.binary('over_leakage_current_trip', ea.STATE_SET, 'ON', 'OFF'))
|
|
2805
2813
|
.withFeature(exposes.binary('over_leakage_current_alarm', ea.STATE_SET, 'ON', 'OFF'))
|
|
2806
2814
|
.withFeature(exposes.binary('self_test', ea.STATE_SET, 'test', 'clear')),*/
|
|
2807
|
-
exposes.enum('clear_device_data', ea.SET, ['
|
|
2815
|
+
exposes.enum('clear_device_data', ea.SET, ['']),
|
|
2808
2816
|
],
|
|
2809
2817
|
},
|
|
2810
2818
|
{
|
|
@@ -3021,7 +3029,7 @@ module.exports = [
|
|
|
3021
3029
|
.withDescription('Favorite position of this cover'),
|
|
3022
3030
|
exposes.binary(`reverse_direction`, ea.STATE_SET, true, false).withDescription(`Inverts the cover direction`),
|
|
3023
3031
|
exposes.text('motor_type', ea.STATE),
|
|
3024
|
-
exposes.enum('report', ea.SET, ['
|
|
3032
|
+
exposes.enum('report', ea.SET, ['']),
|
|
3025
3033
|
],
|
|
3026
3034
|
},
|
|
3027
3035
|
{
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const extend = require('../lib/extend');
|
|
2
|
+
const reporting = require('../lib/reporting');
|
|
3
|
+
|
|
4
|
+
module.exports = [
|
|
5
|
+
{
|
|
6
|
+
zigbeeModel: ['Z111PL0H-1JX'],
|
|
7
|
+
model: 'SA-029',
|
|
8
|
+
vendor: 'Woolley',
|
|
9
|
+
description: 'Smart Plug',
|
|
10
|
+
extend: extend.switch(),
|
|
11
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
12
|
+
const endpoint = device.getEndpoint(1);
|
|
13
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
|
|
14
|
+
await reporting.onOff(endpoint);
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
];
|
package/devices/xiaomi.js
CHANGED
|
@@ -312,6 +312,7 @@ module.exports = [
|
|
|
312
312
|
// set "event" mode
|
|
313
313
|
await endpoint1.write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
|
|
314
314
|
},
|
|
315
|
+
ota: ota.zigbeeOTA,
|
|
315
316
|
},
|
|
316
317
|
{
|
|
317
318
|
zigbeeModel: ['lumi.switch.b2laus01'],
|
|
@@ -332,6 +333,7 @@ module.exports = [
|
|
|
332
333
|
await reporting.bind(endpoint2, coordinatorEndpoint, ['genOnOff']);
|
|
333
334
|
await reporting.onOff(endpoint2);
|
|
334
335
|
},
|
|
336
|
+
ota: ota.zigbeeOTA,
|
|
335
337
|
},
|
|
336
338
|
{
|
|
337
339
|
zigbeeModel: ['lumi.switch.b1naus01'],
|
|
@@ -344,6 +346,7 @@ module.exports = [
|
|
|
344
346
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
|
|
345
347
|
await reporting.onOff(endpoint);
|
|
346
348
|
},
|
|
349
|
+
ota: ota.zigbeeOTA,
|
|
347
350
|
},
|
|
348
351
|
{
|
|
349
352
|
zigbeeModel: ['lumi.switch.b2naus01'],
|
|
@@ -364,6 +367,7 @@ module.exports = [
|
|
|
364
367
|
await reporting.bind(endpoint2, coordinatorEndpoint, ['genOnOff']);
|
|
365
368
|
await reporting.onOff(endpoint2);
|
|
366
369
|
},
|
|
370
|
+
ota: ota.zigbeeOTA,
|
|
367
371
|
},
|
|
368
372
|
{
|
|
369
373
|
zigbeeModel: ['lumi.switch.n2acn1'],
|
|
@@ -737,6 +741,7 @@ module.exports = [
|
|
|
737
741
|
await device.getEndpoint(1).write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
|
|
738
742
|
},
|
|
739
743
|
onEvent: preventReset,
|
|
744
|
+
ota: ota.zigbeeOTA,
|
|
740
745
|
},
|
|
741
746
|
{
|
|
742
747
|
zigbeeModel: ['lumi.switch.b1nacn02'],
|
|
@@ -761,6 +766,7 @@ module.exports = [
|
|
|
761
766
|
device.powerSource = 'Mains (single phase)';
|
|
762
767
|
device.save();
|
|
763
768
|
},
|
|
769
|
+
ota: ota.zigbeeOTA,
|
|
764
770
|
},
|
|
765
771
|
{
|
|
766
772
|
zigbeeModel: ['lumi.switch.b2nacn02'],
|
|
@@ -1045,7 +1051,7 @@ module.exports = [
|
|
|
1045
1051
|
'sensor detects approaching'),
|
|
1046
1052
|
exposes.enum('motion_sensitivity', ea.ALL, ['low', 'medium', 'high']).withDescription('Different sensitivities ' +
|
|
1047
1053
|
'means different static human body recognition rate and response speed of occupied'),
|
|
1048
|
-
exposes.enum('reset_nopresence_status', ea.SET, ['
|
|
1054
|
+
exposes.enum('reset_nopresence_status', ea.SET, ['']).withDescription('Reset the status of no presence'),
|
|
1049
1055
|
e.device_temperature(), e.power_outage_count()],
|
|
1050
1056
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1051
1057
|
const endpoint = device.getEndpoint(1);
|
|
@@ -1304,10 +1310,10 @@ module.exports = [
|
|
|
1304
1310
|
exposes.numeric('gas_density', ea.STATE_GET).withUnit('%LEL').withDescription('Value of gas concentration'),
|
|
1305
1311
|
exposes.enum('gas_sensitivity', ea.ALL, ['10%LEL', '15%LEL']).withDescription('Gas concentration value at which ' +
|
|
1306
1312
|
'an alarm is triggered ("10%LEL" is more sensitive than "15%LEL")'),
|
|
1307
|
-
exposes.enum('selftest', ea.SET, ['
|
|
1313
|
+
exposes.enum('selftest', ea.SET, ['']).withDescription('Starts the self-test process (checking the indicator ' +
|
|
1308
1314
|
'light and buzzer work properly)'),
|
|
1309
1315
|
exposes.binary('test', ea.STATE, true, false).withDescription('Self-test in progress'),
|
|
1310
|
-
exposes.enum('mute_buzzer', ea.SET, ['
|
|
1316
|
+
exposes.enum('mute_buzzer', ea.SET, ['']).withDescription('Mute the buzzer for 10 minutes (buzzer cannot be ' +
|
|
1311
1317
|
'pre-muted, because this function only works when the alarm is triggered)'),
|
|
1312
1318
|
exposes.binary('mute', ea.STATE_GET, true, false).withDescription('Buzzer muted'),
|
|
1313
1319
|
exposes.binary('linkage_alarm', ea.ALL, true, false).withDescription('When this option is enabled and a gas leak ' +
|
|
@@ -1338,10 +1344,10 @@ module.exports = [
|
|
|
1338
1344
|
exposes: [e.smoke().withAccess(ea.STATE_GET),
|
|
1339
1345
|
exposes.numeric('smoke_density', ea.STATE_GET).withDescription('Value of smoke concentration'),
|
|
1340
1346
|
exposes.numeric('smoke_density_dbm', ea.STATE).withUnit('dB/m').withDescription('Value of smoke concentration in dB/m'),
|
|
1341
|
-
exposes.enum('selftest', ea.SET, ['
|
|
1347
|
+
exposes.enum('selftest', ea.SET, ['']).withDescription('Starts the self-test process (checking the indicator ' +
|
|
1342
1348
|
'light and buzzer work properly)'),
|
|
1343
1349
|
exposes.binary('test', ea.STATE, true, false).withDescription('Self-test in progress'),
|
|
1344
|
-
exposes.enum('mute_buzzer', ea.SET, ['
|
|
1350
|
+
exposes.enum('mute_buzzer', ea.SET, ['']).withDescription('Mute the buzzer for 80 seconds (buzzer cannot be ' +
|
|
1345
1351
|
'pre-muted, because this function only works when the alarm is triggered)'),
|
|
1346
1352
|
exposes.binary('mute', ea.STATE_GET, true, false).withDescription('Buzzer muted'),
|
|
1347
1353
|
exposes.binary('heartbeat_indicator', ea.ALL, true, false).withDescription('When this option is enabled then in ' +
|
|
@@ -1392,6 +1398,7 @@ module.exports = [
|
|
|
1392
1398
|
fromZigbee: [fz.DJT12LM_vibration],
|
|
1393
1399
|
exposes: [e.action(['vibration'])],
|
|
1394
1400
|
toZigbee: [],
|
|
1401
|
+
ota: ota.zigbeeOTA,
|
|
1395
1402
|
},
|
|
1396
1403
|
{
|
|
1397
1404
|
zigbeeModel: ['lumi.curtain'],
|
|
@@ -1681,6 +1688,7 @@ module.exports = [
|
|
|
1681
1688
|
vendor: 'Xiaomi',
|
|
1682
1689
|
description: 'Aqara smart RGBW light controller',
|
|
1683
1690
|
extend: extend.light_onoff_brightness_colortemp_color({supportsHS: true}),
|
|
1691
|
+
ota: ota.zigbeeOTA,
|
|
1684
1692
|
},
|
|
1685
1693
|
{
|
|
1686
1694
|
zigbeeModel: ['lumi.light.cbacn1'],
|
|
@@ -1688,6 +1696,7 @@ module.exports = [
|
|
|
1688
1696
|
vendor: 'Xiaomi',
|
|
1689
1697
|
description: 'Aqara zigbee LED-controller ',
|
|
1690
1698
|
extend: extend.light_onoff_brightness(),
|
|
1699
|
+
ota: ota.zigbeeOTA,
|
|
1691
1700
|
},
|
|
1692
1701
|
{
|
|
1693
1702
|
zigbeeModel: ['lumi.switch.n0agl1'],
|
|
@@ -1771,37 +1780,37 @@ module.exports = [
|
|
|
1771
1780
|
},
|
|
1772
1781
|
exposes: [e.switch().withEndpoint('left'), e.switch().withEndpoint('center'),
|
|
1773
1782
|
e.switch().withEndpoint('right'),
|
|
1774
|
-
exposes.binary('standby_enabled', ea.
|
|
1775
|
-
exposes.enum('theme', ea.
|
|
1776
|
-
exposes.enum('beep_volume', ea.
|
|
1777
|
-
exposes.numeric('lcd_brightness', ea.
|
|
1783
|
+
exposes.binary('standby_enabled', ea.STATE_SET, true, false).withDescription('Enable standby'),
|
|
1784
|
+
exposes.enum('theme', ea.STATE_SET, ['classic', 'concise']).withDescription('Display theme'),
|
|
1785
|
+
exposes.enum('beep_volume', ea.STATE_SET, ['mute', 'low', 'medium', 'high']).withDescription('Beep volume'),
|
|
1786
|
+
exposes.numeric('lcd_brightness', ea.STATE_SET).withValueMin(1).withValueMax(100).withUnit('%')
|
|
1778
1787
|
.withDescription('LCD brightness (will not persist if auto-brightness is enabled)'),
|
|
1779
|
-
exposes.enum('language', ea.
|
|
1780
|
-
exposes.enum('screen_saver_style', ea.
|
|
1781
|
-
exposes.numeric('standby_time', ea.
|
|
1788
|
+
exposes.enum('language', ea.STATE_SET, ['chinese', 'english']).withDescription('Interface language'),
|
|
1789
|
+
exposes.enum('screen_saver_style', ea.STATE_SET, ['classic', 'analog clock']).withDescription('Screen saver style'),
|
|
1790
|
+
exposes.numeric('standby_time', ea.STATE_SET).withValueMin(0).withValueMax(65534).withUnit('s')
|
|
1782
1791
|
.withDescription('Display standby time'),
|
|
1783
|
-
exposes.enum('font_size', ea.
|
|
1784
|
-
exposes.binary('lcd_auto_brightness_enabled', ea.
|
|
1785
|
-
exposes.enum('homepage', ea.
|
|
1786
|
-
exposes.binary('screen_saver_enabled', ea.
|
|
1787
|
-
exposes.numeric('standby_lcd_brightness', ea.
|
|
1792
|
+
exposes.enum('font_size', ea.STATE_SET, ['small', 'medium', 'large']).withDescription('Display font size'),
|
|
1793
|
+
exposes.binary('lcd_auto_brightness_enabled', ea.STATE_SET, true, false).withDescription('Enable LCD auto brightness'),
|
|
1794
|
+
exposes.enum('homepage', ea.STATE_SET, ['scene', 'feel', 'thermostat', 'switch']).withDescription('Default display homepage'),
|
|
1795
|
+
exposes.binary('screen_saver_enabled', ea.STATE_SET, true, false).withDescription('Enable screen saver'),
|
|
1796
|
+
exposes.numeric('standby_lcd_brightness', ea.STATE_SET).withValueMin(1).withValueMax(100).withUnit('%')
|
|
1788
1797
|
.withDescription('Standby LCD brightness'),
|
|
1789
|
-
exposes.enum('available_switches', ea.
|
|
1798
|
+
exposes.enum('available_switches', ea.STATE_SET, ['none', '1', '2', '3', '1 and 2', '1 and 3', '2 and 3', 'all'])
|
|
1790
1799
|
.withDescription('Control which switches are available in the switches screen (none disables switches screen)'),
|
|
1791
1800
|
exposes.composite('switch_1_text_icon', 'switch_1_text_icon').withDescription('Switch 1 text and icon')
|
|
1792
|
-
.withFeature(exposes.enum('switch_1_icon', ea.
|
|
1801
|
+
.withFeature(exposes.enum('switch_1_icon', ea.STATE_SET, ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'])
|
|
1793
1802
|
.withDescription('Icon'))
|
|
1794
|
-
.withFeature(exposes.text('switch_1_text', ea.
|
|
1803
|
+
.withFeature(exposes.text('switch_1_text', ea.STATE_SET)
|
|
1795
1804
|
.withDescription('Text')),
|
|
1796
1805
|
exposes.composite('switch_2_text_icon', 'switch_2_text_icon').withDescription('Switch 2 text and icon')
|
|
1797
|
-
.withFeature(exposes.enum('switch_2_icon', ea.
|
|
1806
|
+
.withFeature(exposes.enum('switch_2_icon', ea.STATE_SET, ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'])
|
|
1798
1807
|
.withDescription('Icon'))
|
|
1799
|
-
.withFeature(exposes.text('switch_2_text', ea.
|
|
1808
|
+
.withFeature(exposes.text('switch_2_text', ea.STATE_SET)
|
|
1800
1809
|
.withDescription('Text')),
|
|
1801
1810
|
exposes.composite('switch_3_text_icon', 'switch_3_text_icon').withDescription('Switch 3 text and icon')
|
|
1802
|
-
.withFeature(exposes.enum('switch_3_icon', ea.
|
|
1811
|
+
.withFeature(exposes.enum('switch_3_icon', ea.STATE_SET, ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'])
|
|
1803
1812
|
.withDescription('Icon'))
|
|
1804
|
-
.withFeature(exposes.text('switch_3_text', ea.
|
|
1813
|
+
.withFeature(exposes.text('switch_3_text', ea.STATE_SET)
|
|
1805
1814
|
.withDescription('Text'))],
|
|
1806
1815
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1807
1816
|
await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
|
|
@@ -1811,6 +1820,7 @@ module.exports = [
|
|
|
1811
1820
|
// await reporting.onOff(device.getEndpoint(2)); ToDo: Currently fails
|
|
1812
1821
|
// await reporting.onOff(device.getEndpoint(3)); ToDo: Currently fails
|
|
1813
1822
|
},
|
|
1823
|
+
ota: ota.zigbeeOTA,
|
|
1814
1824
|
},
|
|
1815
1825
|
{
|
|
1816
1826
|
zigbeeModel: ['lumi.remote.b28ac1'],
|