zigbee-herdsman-converters 14.0.508 → 14.0.511
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 +19 -3
- package/converters/toZigbee.js +17 -5
- package/devices/aurora_lighting.js +13 -2
- package/devices/awox.js +2 -0
- package/devices/bticino.js +2 -2
- package/devices/gledopto.js +7 -0
- package/devices/heiman.js +1 -1
- package/devices/ikea.js +11 -1
- package/devices/immax.js +5 -3
- package/devices/keen_home.js +2 -1
- package/devices/legrand.js +2 -2
- package/devices/namron.js +6 -6
- package/devices/philips.js +23 -0
- package/devices/rtx.js +2 -1
- package/devices/tuya.js +21 -6
- package/package.json +1 -1
package/converters/fromZigbee.js
CHANGED
|
@@ -1693,10 +1693,10 @@ const converters = {
|
|
|
1693
1693
|
result.temperature_display = lookup[data[0x1008]];
|
|
1694
1694
|
}
|
|
1695
1695
|
if (data.hasOwnProperty(0x1009)) { // WindowOpenCheck
|
|
1696
|
-
result.window_open_check = data[0x1009];
|
|
1696
|
+
result.window_open_check = data[0x1009] / 2;
|
|
1697
1697
|
}
|
|
1698
1698
|
if (data.hasOwnProperty(0x100A)) { // Hysterersis
|
|
1699
|
-
result.hysterersis = data[0x100A];
|
|
1699
|
+
result.hysterersis = precisionRound(data[0x100A], 2) / 10;
|
|
1700
1700
|
}
|
|
1701
1701
|
if (data.hasOwnProperty(0x100B)) { // DisplayAutoOffEnable
|
|
1702
1702
|
const lookup = {0: 'enable', 1: 'disable'};
|
|
@@ -5408,7 +5408,7 @@ const converters = {
|
|
|
5408
5408
|
payload.device_mode = 'unknown';
|
|
5409
5409
|
}
|
|
5410
5410
|
}
|
|
5411
|
-
if (msg.data.hasOwnProperty('1')) payload.
|
|
5411
|
+
if (msg.data.hasOwnProperty('1')) payload.led_when_off = msg.data['1'] === 0x00 ? 'OFF' : 'ON';
|
|
5412
5412
|
if (msg.data.hasOwnProperty('2')) payload.led_when_on = msg.data['2'] === 0x00 ? 'OFF' : 'ON';
|
|
5413
5413
|
return payload;
|
|
5414
5414
|
},
|
|
@@ -7191,6 +7191,22 @@ const converters = {
|
|
|
7191
7191
|
}
|
|
7192
7192
|
},
|
|
7193
7193
|
},
|
|
7194
|
+
tuya_relay_din_led_indicator: {
|
|
7195
|
+
cluster: 'genOnOff',
|
|
7196
|
+
type: ['attributeReport', 'readResponse'],
|
|
7197
|
+
convert: (model, msg, publish, options, meta) => {
|
|
7198
|
+
const property = 0x8001;
|
|
7199
|
+
|
|
7200
|
+
if (msg.data.hasOwnProperty(property)) {
|
|
7201
|
+
const dict = {0x00: 'off', 0x01: 'on_off', 0x02: 'off_on'};
|
|
7202
|
+
const value = msg.data[property];
|
|
7203
|
+
|
|
7204
|
+
if (dict.hasOwnProperty(value)) {
|
|
7205
|
+
return {[postfixWithEndpointName('indicator_mode', msg, model)]: dict[value]};
|
|
7206
|
+
}
|
|
7207
|
+
}
|
|
7208
|
+
},
|
|
7209
|
+
},
|
|
7194
7210
|
ias_keypad: {
|
|
7195
7211
|
cluster: 'ssIasZone',
|
|
7196
7212
|
type: 'commandStatusChangeNotification',
|
package/converters/toZigbee.js
CHANGED
|
@@ -2531,12 +2531,24 @@ const converters = {
|
|
|
2531
2531
|
return {state: {power_outage_memory: value}};
|
|
2532
2532
|
},
|
|
2533
2533
|
},
|
|
2534
|
+
tuya_relay_din_led_indicator: {
|
|
2535
|
+
key: ['indicator_mode'],
|
|
2536
|
+
convertSet: async (entity, key, value, meta) => {
|
|
2537
|
+
value = value.toLowerCase();
|
|
2538
|
+
const lookup = {'off': 0x00, 'on_off': 0x01, 'off_on': 0x02};
|
|
2539
|
+
utils.validateValue(value, Object.keys(lookup));
|
|
2540
|
+
const payload = lookup[value];
|
|
2541
|
+
await entity.write('genOnOff', {0x8001: {value: payload, type: 0x30}});
|
|
2542
|
+
return {state: {indicator_mode: value}};
|
|
2543
|
+
},
|
|
2544
|
+
},
|
|
2534
2545
|
kmpcil_res005_on_off: {
|
|
2535
2546
|
key: ['state'],
|
|
2536
2547
|
convertSet: async (entity, key, value, meta) => {
|
|
2537
2548
|
const options = {disableDefaultResponse: true};
|
|
2549
|
+
value = value.toLowerCase();
|
|
2538
2550
|
utils.validateValue(value, ['toggle', 'off', 'on']);
|
|
2539
|
-
if (value
|
|
2551
|
+
if (value === 'toggle') {
|
|
2540
2552
|
if (!meta.state.hasOwnProperty('state')) {
|
|
2541
2553
|
throw new Error('Cannot toggle, state not known yet');
|
|
2542
2554
|
} else {
|
|
@@ -3062,10 +3074,10 @@ const converters = {
|
|
|
3062
3074
|
const payload = {0x1008: {value: lookup[value], type: herdsman.Zcl.DataType.enum8}};
|
|
3063
3075
|
await entity.write('hvacThermostat', payload, manufacturerOptions.sunricher);
|
|
3064
3076
|
} else if (key==='window_open_check') {
|
|
3065
|
-
const payload = {0x1009: {value:
|
|
3077
|
+
const payload = {0x1009: {value: value * 2, type: 0x20}};
|
|
3066
3078
|
await entity.write('hvacThermostat', payload, manufacturerOptions.sunricher);
|
|
3067
3079
|
} else if (key==='hysterersis') {
|
|
3068
|
-
const payload = {0x100A: {value:
|
|
3080
|
+
const payload = {0x100A: {value: value* 10, type: 0x20}};
|
|
3069
3081
|
await entity.write('hvacThermostat', payload, manufacturerOptions.sunricher);
|
|
3070
3082
|
} else if (key==='display_auto_off_enabled') {
|
|
3071
3083
|
const lookup = {'enable': 0, 'disabled': 1};
|
|
@@ -4839,13 +4851,13 @@ const converters = {
|
|
|
4839
4851
|
},
|
|
4840
4852
|
legrand_settingAlwaysEnableLed: {
|
|
4841
4853
|
// connected power outlet is on attribute 2 and not 1
|
|
4842
|
-
key: ['
|
|
4854
|
+
key: ['led_when_off'],
|
|
4843
4855
|
convertSet: async (entity, key, value, meta) => {
|
|
4844
4856
|
// enable or disable the LED (blue) when permitJoin=false (LED off)
|
|
4845
4857
|
const enableLedIfOn = value === 'ON' || (value === 'OFF' ? false : !!value);
|
|
4846
4858
|
const payload = {1: {value: enableLedIfOn, type: 16}};
|
|
4847
4859
|
await entity.write('manuSpecificLegrandDevices', payload, manufacturerOptions.legrand);
|
|
4848
|
-
return {state: {'
|
|
4860
|
+
return {state: {'led_when_off': value}};
|
|
4849
4861
|
},
|
|
4850
4862
|
convertGet: async (entity, key, meta) => {
|
|
4851
4863
|
await entity.read('manuSpecificLegrandDevices', [0x0001], manufacturerOptions.legrand);
|
|
@@ -18,6 +18,17 @@ const tzLocal = {
|
|
|
18
18
|
return {state: {backlight_led: state.toUpperCase()}};
|
|
19
19
|
},
|
|
20
20
|
},
|
|
21
|
+
backlight_brightness: {
|
|
22
|
+
key: ['brightness'],
|
|
23
|
+
options: [exposes.options.transition()],
|
|
24
|
+
convertSet: async (entity, key, value, meta) => {
|
|
25
|
+
await entity.command('genLevelCtrl', 'moveToLevel', {level: value, transtime: 0}, utils.getOptions(meta.mapped, entity));
|
|
26
|
+
return {state: {brightness: value}};
|
|
27
|
+
},
|
|
28
|
+
convertGet: async (entity, key, meta) => {
|
|
29
|
+
await entity.read('genLevelCtrl', ['currentLevel']);
|
|
30
|
+
},
|
|
31
|
+
},
|
|
21
32
|
};
|
|
22
33
|
|
|
23
34
|
const disableBatteryRotaryDimmerReporting = async (endpoint) => {
|
|
@@ -181,12 +192,12 @@ module.exports = [
|
|
|
181
192
|
model: 'AU-A1ZBDSS',
|
|
182
193
|
vendor: 'Aurora Lighting',
|
|
183
194
|
description: 'Double smart socket UK',
|
|
184
|
-
fromZigbee: [fz.identify, fz.on_off, fz.electrical_measurement],
|
|
195
|
+
fromZigbee: [fz.identify, fz.on_off, fz.electrical_measurement, fz.brightness],
|
|
185
196
|
exposes: [e.switch().withEndpoint('left'), e.switch().withEndpoint('right'),
|
|
186
197
|
e.power().withEndpoint('left'), e.power().withEndpoint('right'),
|
|
187
198
|
exposes.numeric('brightness', ea.ALL).withValueMin(0).withValueMax(254)
|
|
188
199
|
.withDescription('Brightness of this backlight LED')],
|
|
189
|
-
toZigbee: [tz.
|
|
200
|
+
toZigbee: [tzLocal.backlight_brightness, tz.on_off],
|
|
190
201
|
meta: {multiEndpoint: true},
|
|
191
202
|
endpoint: (device) => {
|
|
192
203
|
return {'left': 1, 'right': 2};
|
package/devices/awox.js
CHANGED
|
@@ -67,6 +67,7 @@ module.exports = [
|
|
|
67
67
|
vendor: 'AwoX',
|
|
68
68
|
description: 'LED white',
|
|
69
69
|
extend: extend.light_onoff_brightness(),
|
|
70
|
+
whiteLabel: [{vendor: 'EGLO', model: '12229'}],
|
|
70
71
|
},
|
|
71
72
|
{
|
|
72
73
|
fingerprint: [
|
|
@@ -248,6 +249,7 @@ module.exports = [
|
|
|
248
249
|
vendor: 'AwoX',
|
|
249
250
|
description: 'LED light with color temperature',
|
|
250
251
|
extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
|
|
252
|
+
whiteLabel: [{vendor: 'EGLO', model: '12239'}],
|
|
251
253
|
},
|
|
252
254
|
{
|
|
253
255
|
fingerprint: [
|
package/devices/bticino.js
CHANGED
|
@@ -16,7 +16,7 @@ module.exports = [
|
|
|
16
16
|
toZigbee: [tz.on_off, tz.legrand_settingAlwaysEnableLed, tz.legrand_settingEnableLedIfOn, tz.legrand_identify],
|
|
17
17
|
exposes: [
|
|
18
18
|
e.switch(), e.action(['identify', 'on', 'off']),
|
|
19
|
-
exposes.binary('
|
|
19
|
+
exposes.binary('led_when_off', ea.ALL, 'ON', 'OFF').withDescription('Enables the LED when the light is off'),
|
|
20
20
|
exposes.binary('led_when_on', ea.ALL, 'ON', 'OFF').withDescription('Enables the LED when the light is on'),
|
|
21
21
|
],
|
|
22
22
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
@@ -39,7 +39,7 @@ module.exports = [
|
|
|
39
39
|
exposes.numeric('ballast_maximum_level', ea.ALL).withValueMin(1).withValueMax(254)
|
|
40
40
|
.withDescription('Specifies the maximum brightness value'),
|
|
41
41
|
exposes.binary('device_mode', ea.ALL, 'dimmer_on', 'dimmer_off').withDescription('Allow the device to change brightness'),
|
|
42
|
-
exposes.binary('
|
|
42
|
+
exposes.binary('led_when_off', ea.ALL, 'ON', 'OFF').withDescription('Enables the LED when the light is off'),
|
|
43
43
|
exposes.binary('led_when_on', ea.ALL, 'ON', 'OFF').withDescription('Enables the LED when the light is on')],
|
|
44
44
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
45
45
|
await extend.light_onoff_brightness().configure(device, coordinatorEndpoint, logger);
|
package/devices/gledopto.js
CHANGED
|
@@ -315,6 +315,13 @@ module.exports = [
|
|
|
315
315
|
extend: gledoptoExtend.light_onoff_brightness_colortemp_color(),
|
|
316
316
|
meta: {disableDefaultResponse: true},
|
|
317
317
|
},
|
|
318
|
+
{
|
|
319
|
+
zigbeeModel: ['GL-B-002P'],
|
|
320
|
+
model: 'GL-B-002P',
|
|
321
|
+
vendor: 'Gledopto',
|
|
322
|
+
description: 'Zigbee smart filament LED bulb',
|
|
323
|
+
extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [158, 495]}),
|
|
324
|
+
},
|
|
318
325
|
{
|
|
319
326
|
zigbeeModel: ['GL-MC-001P'],
|
|
320
327
|
model: 'GL-MC-001P',
|
package/devices/heiman.js
CHANGED
|
@@ -287,7 +287,7 @@ module.exports = [
|
|
|
287
287
|
description: 'Smart motion sensor',
|
|
288
288
|
fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery],
|
|
289
289
|
toZigbee: [],
|
|
290
|
-
exposes: [e.occupancy(), e.battery_low(), e.battery(), e.battery_voltage()],
|
|
290
|
+
exposes: [e.occupancy(), e.battery_low(), e.battery(), e.battery_voltage(), e.tamper()],
|
|
291
291
|
meta: {battery: {voltageToPercentage: '3V_2500'}},
|
|
292
292
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
293
293
|
const endpoint = device.getEndpoint(1);
|
package/devices/ikea.js
CHANGED
|
@@ -13,11 +13,15 @@ const {
|
|
|
13
13
|
calibrateAndPrecisionRoundOptions, postfixWithEndpointName, getMetaValue,
|
|
14
14
|
} = require('../lib/utils');
|
|
15
15
|
|
|
16
|
-
const bulbOnEvent = async (type, data, device) => {
|
|
16
|
+
const bulbOnEvent = async (type, data, device, options, state) => {
|
|
17
17
|
/**
|
|
18
18
|
* IKEA bulbs lose their configured reportings when losing power.
|
|
19
19
|
* A deviceAnnounce indicates they are powered on again.
|
|
20
20
|
* Reconfigure the configured reoprting here.
|
|
21
|
+
*
|
|
22
|
+
* Additionally some other information is lost like
|
|
23
|
+
* color_options.execute_if_off. We also restore these.
|
|
24
|
+
*
|
|
21
25
|
* NOTE: binds are not lost so rebinding is not needed!
|
|
22
26
|
*/
|
|
23
27
|
if (type === 'deviceAnnounce') {
|
|
@@ -29,6 +33,12 @@ const bulbOnEvent = async (type, data, device) => {
|
|
|
29
33
|
}]);
|
|
30
34
|
}
|
|
31
35
|
}
|
|
36
|
+
|
|
37
|
+
// NOTE: execute_if_off default is false
|
|
38
|
+
// we only restore if true, to save unneeded network writes
|
|
39
|
+
if (state.color_options.execute_if_off === true) {
|
|
40
|
+
device.endpoints[0].write('lightingColorCtrl', {'options': 1});
|
|
41
|
+
}
|
|
32
42
|
}
|
|
33
43
|
};
|
|
34
44
|
|
package/devices/immax.js
CHANGED
|
@@ -66,16 +66,18 @@ module.exports = [
|
|
|
66
66
|
model: '07048L',
|
|
67
67
|
vendor: 'Immax',
|
|
68
68
|
description: 'NEO SMART plug',
|
|
69
|
-
fromZigbee: [fz.on_off, fz.electrical_measurement],
|
|
69
|
+
fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering],
|
|
70
70
|
toZigbee: [tz.on_off],
|
|
71
71
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
72
72
|
const endpoint = device.getEndpoint(1);
|
|
73
|
-
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement']);
|
|
73
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'seMetering']);
|
|
74
74
|
await reporting.onOff(endpoint);
|
|
75
75
|
await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
|
|
76
|
+
await reporting.readMeteringMultiplierDivisor(endpoint);
|
|
77
|
+
await reporting.currentSummDelivered(endpoint);
|
|
76
78
|
await reporting.activePower(endpoint);
|
|
77
79
|
},
|
|
78
|
-
exposes: [e.switch(), e.power()],
|
|
80
|
+
exposes: [e.switch(), e.power(), e.energy()],
|
|
79
81
|
},
|
|
80
82
|
{
|
|
81
83
|
zigbeeModel: ['losfena'],
|
package/devices/keen_home.js
CHANGED
|
@@ -41,7 +41,8 @@ module.exports = [
|
|
|
41
41
|
exposes: [e.cover_position().setAccess('state', ea.ALL), e.temperature(), e.battery(), e.pressure()],
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
|
-
zigbeeModel: ['SV02-410-MP-1.3', 'SV02-412-MP-1.3', 'SV02-610-MP-1.3', 'SV02-612-MP-1.
|
|
44
|
+
zigbeeModel: ['SV02-410-MP-1.3', 'SV02-412-MP-1.3', 'SV02-610-MP-1.3', 'SV02-612-MP-1.2', 'SV02-612-MP-1.3', 'SV02-410-MP-1.0',
|
|
45
|
+
'SV02-410-MP-1.2'],
|
|
45
46
|
model: 'SV02',
|
|
46
47
|
vendor: 'Keen Home',
|
|
47
48
|
description: 'Smart vent',
|
package/devices/legrand.js
CHANGED
|
@@ -182,7 +182,7 @@ module.exports = [
|
|
|
182
182
|
exposes.numeric('ballast_maximum_level', ea.ALL).withValueMin(1).withValueMax(254)
|
|
183
183
|
.withDescription('Specifies the maximum brightness value'),
|
|
184
184
|
exposes.binary('device_mode', ea.ALL, 'dimmer_on', 'dimmer_off').withDescription('Allow the device to change brightness'),
|
|
185
|
-
exposes.binary('
|
|
185
|
+
exposes.binary('led_when_off', ea.ALL, 'ON', 'OFF').withDescription('Enable the LED when the light is off'),
|
|
186
186
|
exposes.binary('led_when_on', ea.ALL, 'ON', 'OFF').withDescription('Enables the LED when the light is on')],
|
|
187
187
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
188
188
|
await extend.light_onoff_brightness().configure(device, coordinatorEndpoint, logger);
|
|
@@ -328,7 +328,7 @@ module.exports = [
|
|
|
328
328
|
toZigbee: [tz.on_off, tz.legrand_settingAlwaysEnableLed, tz.legrand_settingEnableLedIfOn],
|
|
329
329
|
exposes: [e.switch().withEndpoint('left'),
|
|
330
330
|
e.switch().withEndpoint('right'),
|
|
331
|
-
exposes.binary('
|
|
331
|
+
exposes.binary('led_when_off', ea.ALL, 'ON', 'OFF').withDescription('Enable the LED when the light is off'),
|
|
332
332
|
exposes.binary('led_when_on', ea.ALL, 'ON', 'OFF').withDescription('Enables the LED when the light is on')],
|
|
333
333
|
meta: {multiEndpoint: true},
|
|
334
334
|
configure: async (device, coordinatorEndpoint, logger) => {
|
package/devices/namron.js
CHANGED
|
@@ -276,7 +276,7 @@ module.exports = [
|
|
|
276
276
|
exposes.climate()
|
|
277
277
|
.withSetpoint('occupied_heating_setpoint', 0, 40, 0.1)
|
|
278
278
|
.withLocalTemperature()
|
|
279
|
-
.withLocalTemperatureCalibration(-
|
|
279
|
+
.withLocalTemperatureCalibration(-3, 3, 0.1)
|
|
280
280
|
.withSystemMode(['off', 'auto', 'heat'])
|
|
281
281
|
.withRunningState(['idle', 'heat']),
|
|
282
282
|
exposes.binary('away_mode', ea.ALL, 'ON', 'OFF')
|
|
@@ -308,16 +308,16 @@ module.exports = [
|
|
|
308
308
|
.withDescription('The temperature on the display. Default: Room Temperature.'),
|
|
309
309
|
exposes.numeric('window_open_check', ea.ALL)
|
|
310
310
|
.withUnit('°C')
|
|
311
|
-
.withValueMin(
|
|
312
|
-
.withDescription('The threshold to detect window open, between
|
|
311
|
+
.withValueMin(1.5).withValueMax(4).withValueStep(0.5)
|
|
312
|
+
.withDescription('The threshold to detect window open, between 1.5 and 4 in 0.5 °C. Default: 0 (disabled).'),
|
|
313
313
|
exposes.numeric('hysterersis', ea.ALL)
|
|
314
314
|
.withUnit('°C')
|
|
315
|
-
.withValueMin(5).withValueMax(
|
|
316
|
-
.withDescription('Hysteresis setting, between 5 and
|
|
315
|
+
.withValueMin(0.5).withValueMax(2).withValueStep(0.1)
|
|
316
|
+
.withDescription('Hysteresis setting, between 0.5 and 2 in 0.1 °C. Default: 0.5.'),
|
|
317
317
|
exposes.enum('display_auto_off_enabled', ea.ALL, ['enable', 'disabled']),
|
|
318
318
|
exposes.numeric('alarm_airtemp_overvalue', ea.ALL)
|
|
319
319
|
.withUnit('°C')
|
|
320
|
-
.withValueMin(20).withValueMax(60)
|
|
320
|
+
.withValueMin(20).withValueMax(60)
|
|
321
321
|
.withDescription('Room temperature alarm threshold, between 20 and 60 in °C. 0 means disabled. Default: 45.'),
|
|
322
322
|
],
|
|
323
323
|
configure: async (device, coordinatorEndpoint, logger) => {
|
package/devices/philips.js
CHANGED
|
@@ -81,6 +81,15 @@ module.exports = [
|
|
|
81
81
|
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
82
82
|
ota: ota.zigbeeOTA,
|
|
83
83
|
},
|
|
84
|
+
{
|
|
85
|
+
zigbeeModel: ['929003045501_01', '929003045501_02', '929003045501_03'],
|
|
86
|
+
model: '929003045501',
|
|
87
|
+
vendor: 'Philips',
|
|
88
|
+
description: 'Hue Centura recessed spotlight white and color ambiance GU10 (black)',
|
|
89
|
+
meta: {turnsOffAtBrightness1: true},
|
|
90
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
91
|
+
ota: ota.zigbeeOTA,
|
|
92
|
+
},
|
|
84
93
|
{
|
|
85
94
|
zigbeeModel: ['929003047501'],
|
|
86
95
|
model: '929003047501',
|
|
@@ -2258,6 +2267,20 @@ module.exports = [
|
|
|
2258
2267
|
},
|
|
2259
2268
|
ota: ota.zigbeeOTA,
|
|
2260
2269
|
},
|
|
2270
|
+
{
|
|
2271
|
+
zigbeeModel: ['LOM011'],
|
|
2272
|
+
model: '8719514342361',
|
|
2273
|
+
vendor: 'Philips',
|
|
2274
|
+
description: 'Hue smart plug - AU',
|
|
2275
|
+
extend: extend.switch(),
|
|
2276
|
+
toZigbee: [tz.on_off].concat([tz.hue_power_on_behavior, tz.hue_power_on_error]),
|
|
2277
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
2278
|
+
const endpoint = device.getEndpoint(11);
|
|
2279
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
|
|
2280
|
+
await reporting.onOff(endpoint);
|
|
2281
|
+
},
|
|
2282
|
+
ota: ota.zigbeeOTA,
|
|
2283
|
+
},
|
|
2261
2284
|
{
|
|
2262
2285
|
zigbeeModel: ['LOM006'],
|
|
2263
2286
|
model: '9290024426',
|
package/devices/rtx.js
CHANGED
|
@@ -6,7 +6,8 @@ const ea = exposes.access;
|
|
|
6
6
|
|
|
7
7
|
module.exports = [
|
|
8
8
|
{
|
|
9
|
-
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_akjefhj5'}, {modelID: 'TS0601', manufacturerName: '_TZE200_2wg5qrjy'}
|
|
9
|
+
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_akjefhj5'}, {modelID: 'TS0601', manufacturerName: '_TZE200_2wg5qrjy'},
|
|
10
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_81isopgh'}],
|
|
10
11
|
model: 'ZVG1',
|
|
11
12
|
vendor: 'RTX',
|
|
12
13
|
description: 'Zigbee smart water valve',
|
package/devices/tuya.js
CHANGED
|
@@ -1929,8 +1929,9 @@ module.exports = [
|
|
|
1929
1929
|
model: 'TS011F_din_smart_relay',
|
|
1930
1930
|
description: 'Din smart relay (with power monitoring)',
|
|
1931
1931
|
vendor: 'TuYa',
|
|
1932
|
-
fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, fz.ignore_basic_report, fz.tuya_switch_power_outage_memory
|
|
1933
|
-
|
|
1932
|
+
fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, fz.ignore_basic_report, fz.tuya_switch_power_outage_memory,
|
|
1933
|
+
fz.tuya_relay_din_led_indicator],
|
|
1934
|
+
toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory, tz.tuya_relay_din_led_indicator],
|
|
1934
1935
|
whiteLabel: [{vendor: 'MatSee Plus', model: 'ATMS1602Z'}],
|
|
1935
1936
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1936
1937
|
const endpoint = device.getEndpoint(1);
|
|
@@ -1945,15 +1946,17 @@ module.exports = [
|
|
|
1945
1946
|
},
|
|
1946
1947
|
exposes: [e.switch(), e.power(), e.current(), e.voltage().withAccess(ea.STATE),
|
|
1947
1948
|
e.energy(), exposes.enum('power_outage_memory', ea.STATE_SET, ['on', 'off', 'restore'])
|
|
1948
|
-
.withDescription('Recover state after power outage')
|
|
1949
|
+
.withDescription('Recover state after power outage'),
|
|
1950
|
+
exposes.enum('indicator_mode', ea.STATE_SET, ['off', 'on_off', 'off_on'])
|
|
1951
|
+
.withDescription('Relay LED indicator mode')],
|
|
1949
1952
|
},
|
|
1950
1953
|
{
|
|
1951
1954
|
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_7issjl2q'}],
|
|
1952
1955
|
model: 'ATMS1601Z',
|
|
1953
1956
|
description: 'Din smart relay (without power monitoring)',
|
|
1954
1957
|
vendor: 'TuYa',
|
|
1955
|
-
fromZigbee: [fz.on_off, fz.ignore_basic_report, fz.tuya_switch_power_outage_memory],
|
|
1956
|
-
toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory],
|
|
1958
|
+
fromZigbee: [fz.on_off, fz.ignore_basic_report, fz.tuya_switch_power_outage_memory, fz.tuya_relay_din_led_indicator],
|
|
1959
|
+
toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory, tz.tuya_relay_din_led_indicator],
|
|
1957
1960
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1958
1961
|
const endpoint = device.getEndpoint(1);
|
|
1959
1962
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
|
|
@@ -1961,7 +1964,9 @@ module.exports = [
|
|
|
1961
1964
|
},
|
|
1962
1965
|
exposes: [e.switch(),
|
|
1963
1966
|
exposes.enum('power_outage_memory', ea.STATE_SET, ['on', 'off', 'restore'])
|
|
1964
|
-
.withDescription('Recover state after power outage')
|
|
1967
|
+
.withDescription('Recover state after power outage'),
|
|
1968
|
+
exposes.enum('indicator_mode', ea.STATE_SET, ['off', 'on_off', 'off_on'])
|
|
1969
|
+
.withDescription('Relay LED indicator mode')],
|
|
1965
1970
|
},
|
|
1966
1971
|
{
|
|
1967
1972
|
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_nklqjk62'}],
|
|
@@ -2335,4 +2340,14 @@ module.exports = [
|
|
|
2335
2340
|
.withDescription('Alarm humidity min'),
|
|
2336
2341
|
],
|
|
2337
2342
|
},
|
|
2343
|
+
{
|
|
2344
|
+
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_qoy0ekbd'}],
|
|
2345
|
+
model: 'CX-0726',
|
|
2346
|
+
vendor: 'TuYa',
|
|
2347
|
+
description: 'Temperature & humidity LCD sensor',
|
|
2348
|
+
fromZigbee: [fz.tuya_temperature_humidity_sensor, fz.ignore_tuya_set_time],
|
|
2349
|
+
toZigbee: [],
|
|
2350
|
+
onEvent: tuya.onEventSetLocalTime,
|
|
2351
|
+
exposes: [e.temperature(), e.humidity(), e.battery()],
|
|
2352
|
+
},
|
|
2338
2353
|
];
|