zigbee-herdsman-converters 14.0.593 → 14.0.594
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/istar.js +8 -0
- package/devices/tuya.js +11 -5
- package/devices/woolley.js +17 -0
- package/devices/xiaomi.js +24 -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/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/tuya.js
CHANGED
|
@@ -842,14 +842,15 @@ module.exports = [
|
|
|
842
842
|
extend: extend.light_onoff_brightness(),
|
|
843
843
|
},
|
|
844
844
|
{
|
|
845
|
-
fingerprint: [{modelID: 'TS0202', manufacturerName: '_TYZB01_jytabjkb'}
|
|
845
|
+
fingerprint: [{modelID: 'TS0202', manufacturerName: '_TYZB01_jytabjkb'},
|
|
846
|
+
{modelID: 'TS0202', manufacturerName: '_TZ3000_lltemgsf'}],
|
|
846
847
|
model: 'TS0202_1',
|
|
847
848
|
vendor: 'TuYa',
|
|
848
849
|
description: 'Motion sensor',
|
|
849
850
|
// Requires alarm_1_with_timeout https://github.com/Koenkk/zigbee2mqtt/issues/2818#issuecomment-776119586
|
|
850
851
|
fromZigbee: [fz.ias_occupancy_alarm_1_with_timeout, fz.battery, fz.ignore_basic_report],
|
|
851
852
|
toZigbee: [],
|
|
852
|
-
exposes: [e.occupancy(), e.battery_low(), e.
|
|
853
|
+
exposes: [e.occupancy(), e.battery_low(), e.linkquality()],
|
|
853
854
|
},
|
|
854
855
|
{
|
|
855
856
|
fingerprint: [{modelID: 'TS0202', manufacturerName: '_TYZB01_dr6sduka'},
|
|
@@ -2479,7 +2480,12 @@ module.exports = [
|
|
|
2479
2480
|
.withLocalTemperature(ea.STATE).withLocalTemperatureCalibration(-9.9, 9.9, 0.1, ea.STATE_SET)
|
|
2480
2481
|
.withSystemMode(['off', 'heat'], ea.STATE_SET).withRunningState(['idle', 'heat'], ea.STATE)
|
|
2481
2482
|
.withPreset(['manual', 'program']).withSensor(['internal', 'external', 'both'], ea.STATE_SET),
|
|
2482
|
-
exposes.text('schedule', ea.STATE_SET)
|
|
2483
|
+
exposes.text('schedule', ea.STATE_SET).withDescription('There are 8 periods in the schedule in total. ' +
|
|
2484
|
+
'6 for workdays and 2 for holidays. It should be set in the following format for each of the periods: ' +
|
|
2485
|
+
'`hours:minutes/temperature`. All periods should be set at once and delimited by the space symbol. ' +
|
|
2486
|
+
'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`. ' +
|
|
2487
|
+
'The thermostat doesn\'t report the schedule by itself even if you change it manually from device'),
|
|
2488
|
+
e.child_lock(), e.week(),
|
|
2483
2489
|
exposes.enum('brightness_state', ea.STATE_SET, ['off', 'low', 'medium', 'high'])
|
|
2484
2490
|
.withDescription('Screen brightness'),
|
|
2485
2491
|
exposes.binary('sound', ea.STATE_SET, 'ON', 'OFF')
|
|
@@ -2804,7 +2810,7 @@ module.exports = [
|
|
|
2804
2810
|
.withFeature(exposes.binary('over_leakage_current_trip', ea.STATE_SET, 'ON', 'OFF'))
|
|
2805
2811
|
.withFeature(exposes.binary('over_leakage_current_alarm', ea.STATE_SET, 'ON', 'OFF'))
|
|
2806
2812
|
.withFeature(exposes.binary('self_test', ea.STATE_SET, 'test', 'clear')),*/
|
|
2807
|
-
exposes.enum('clear_device_data', ea.SET, ['
|
|
2813
|
+
exposes.enum('clear_device_data', ea.SET, ['']),
|
|
2808
2814
|
],
|
|
2809
2815
|
},
|
|
2810
2816
|
{
|
|
@@ -3021,7 +3027,7 @@ module.exports = [
|
|
|
3021
3027
|
.withDescription('Favorite position of this cover'),
|
|
3022
3028
|
exposes.binary(`reverse_direction`, ea.STATE_SET, true, false).withDescription(`Inverts the cover direction`),
|
|
3023
3029
|
exposes.text('motor_type', ea.STATE),
|
|
3024
|
-
exposes.enum('report', ea.SET, ['
|
|
3030
|
+
exposes.enum('report', ea.SET, ['']),
|
|
3025
3031
|
],
|
|
3026
3032
|
},
|
|
3027
3033
|
{
|
|
@@ -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
|
@@ -1045,7 +1045,7 @@ module.exports = [
|
|
|
1045
1045
|
'sensor detects approaching'),
|
|
1046
1046
|
exposes.enum('motion_sensitivity', ea.ALL, ['low', 'medium', 'high']).withDescription('Different sensitivities ' +
|
|
1047
1047
|
'means different static human body recognition rate and response speed of occupied'),
|
|
1048
|
-
exposes.enum('reset_nopresence_status', ea.SET, ['
|
|
1048
|
+
exposes.enum('reset_nopresence_status', ea.SET, ['']).withDescription('Reset the status of no presence'),
|
|
1049
1049
|
e.device_temperature(), e.power_outage_count()],
|
|
1050
1050
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1051
1051
|
const endpoint = device.getEndpoint(1);
|
|
@@ -1304,10 +1304,10 @@ module.exports = [
|
|
|
1304
1304
|
exposes.numeric('gas_density', ea.STATE_GET).withUnit('%LEL').withDescription('Value of gas concentration'),
|
|
1305
1305
|
exposes.enum('gas_sensitivity', ea.ALL, ['10%LEL', '15%LEL']).withDescription('Gas concentration value at which ' +
|
|
1306
1306
|
'an alarm is triggered ("10%LEL" is more sensitive than "15%LEL")'),
|
|
1307
|
-
exposes.enum('selftest', ea.SET, ['
|
|
1307
|
+
exposes.enum('selftest', ea.SET, ['']).withDescription('Starts the self-test process (checking the indicator ' +
|
|
1308
1308
|
'light and buzzer work properly)'),
|
|
1309
1309
|
exposes.binary('test', ea.STATE, true, false).withDescription('Self-test in progress'),
|
|
1310
|
-
exposes.enum('mute_buzzer', ea.SET, ['
|
|
1310
|
+
exposes.enum('mute_buzzer', ea.SET, ['']).withDescription('Mute the buzzer for 10 minutes (buzzer cannot be ' +
|
|
1311
1311
|
'pre-muted, because this function only works when the alarm is triggered)'),
|
|
1312
1312
|
exposes.binary('mute', ea.STATE_GET, true, false).withDescription('Buzzer muted'),
|
|
1313
1313
|
exposes.binary('linkage_alarm', ea.ALL, true, false).withDescription('When this option is enabled and a gas leak ' +
|
|
@@ -1338,10 +1338,10 @@ module.exports = [
|
|
|
1338
1338
|
exposes: [e.smoke().withAccess(ea.STATE_GET),
|
|
1339
1339
|
exposes.numeric('smoke_density', ea.STATE_GET).withDescription('Value of smoke concentration'),
|
|
1340
1340
|
exposes.numeric('smoke_density_dbm', ea.STATE).withUnit('dB/m').withDescription('Value of smoke concentration in dB/m'),
|
|
1341
|
-
exposes.enum('selftest', ea.SET, ['
|
|
1341
|
+
exposes.enum('selftest', ea.SET, ['']).withDescription('Starts the self-test process (checking the indicator ' +
|
|
1342
1342
|
'light and buzzer work properly)'),
|
|
1343
1343
|
exposes.binary('test', ea.STATE, true, false).withDescription('Self-test in progress'),
|
|
1344
|
-
exposes.enum('mute_buzzer', ea.SET, ['
|
|
1344
|
+
exposes.enum('mute_buzzer', ea.SET, ['']).withDescription('Mute the buzzer for 80 seconds (buzzer cannot be ' +
|
|
1345
1345
|
'pre-muted, because this function only works when the alarm is triggered)'),
|
|
1346
1346
|
exposes.binary('mute', ea.STATE_GET, true, false).withDescription('Buzzer muted'),
|
|
1347
1347
|
exposes.binary('heartbeat_indicator', ea.ALL, true, false).withDescription('When this option is enabled then in ' +
|
|
@@ -1771,37 +1771,37 @@ module.exports = [
|
|
|
1771
1771
|
},
|
|
1772
1772
|
exposes: [e.switch().withEndpoint('left'), e.switch().withEndpoint('center'),
|
|
1773
1773
|
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.
|
|
1774
|
+
exposes.binary('standby_enabled', ea.STATE_SET, true, false).withDescription('Enable standby'),
|
|
1775
|
+
exposes.enum('theme', ea.STATE_SET, ['classic', 'concise']).withDescription('Display theme'),
|
|
1776
|
+
exposes.enum('beep_volume', ea.STATE_SET, ['mute', 'low', 'medium', 'high']).withDescription('Beep volume'),
|
|
1777
|
+
exposes.numeric('lcd_brightness', ea.STATE_SET).withValueMin(1).withValueMax(100).withUnit('%')
|
|
1778
1778
|
.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.
|
|
1779
|
+
exposes.enum('language', ea.STATE_SET, ['chinese', 'english']).withDescription('Interface language'),
|
|
1780
|
+
exposes.enum('screen_saver_style', ea.STATE_SET, ['classic', 'analog clock']).withDescription('Screen saver style'),
|
|
1781
|
+
exposes.numeric('standby_time', ea.STATE_SET).withValueMin(0).withValueMax(65534).withUnit('s')
|
|
1782
1782
|
.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.
|
|
1783
|
+
exposes.enum('font_size', ea.STATE_SET, ['small', 'medium', 'large']).withDescription('Display font size'),
|
|
1784
|
+
exposes.binary('lcd_auto_brightness_enabled', ea.STATE_SET, true, false).withDescription('Enable LCD auto brightness'),
|
|
1785
|
+
exposes.enum('homepage', ea.STATE_SET, ['scene', 'feel', 'thermostat', 'switch']).withDescription('Default display homepage'),
|
|
1786
|
+
exposes.binary('screen_saver_enabled', ea.STATE_SET, true, false).withDescription('Enable screen saver'),
|
|
1787
|
+
exposes.numeric('standby_lcd_brightness', ea.STATE_SET).withValueMin(1).withValueMax(100).withUnit('%')
|
|
1788
1788
|
.withDescription('Standby LCD brightness'),
|
|
1789
|
-
exposes.enum('available_switches', ea.
|
|
1789
|
+
exposes.enum('available_switches', ea.STATE_SET, ['none', '1', '2', '3', '1 and 2', '1 and 3', '2 and 3', 'all'])
|
|
1790
1790
|
.withDescription('Control which switches are available in the switches screen (none disables switches screen)'),
|
|
1791
1791
|
exposes.composite('switch_1_text_icon', 'switch_1_text_icon').withDescription('Switch 1 text and icon')
|
|
1792
|
-
.withFeature(exposes.enum('switch_1_icon', ea.
|
|
1792
|
+
.withFeature(exposes.enum('switch_1_icon', ea.STATE_SET, ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'])
|
|
1793
1793
|
.withDescription('Icon'))
|
|
1794
|
-
.withFeature(exposes.text('switch_1_text', ea.
|
|
1794
|
+
.withFeature(exposes.text('switch_1_text', ea.STATE_SET)
|
|
1795
1795
|
.withDescription('Text')),
|
|
1796
1796
|
exposes.composite('switch_2_text_icon', 'switch_2_text_icon').withDescription('Switch 2 text and icon')
|
|
1797
|
-
.withFeature(exposes.enum('switch_2_icon', ea.
|
|
1797
|
+
.withFeature(exposes.enum('switch_2_icon', ea.STATE_SET, ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'])
|
|
1798
1798
|
.withDescription('Icon'))
|
|
1799
|
-
.withFeature(exposes.text('switch_2_text', ea.
|
|
1799
|
+
.withFeature(exposes.text('switch_2_text', ea.STATE_SET)
|
|
1800
1800
|
.withDescription('Text')),
|
|
1801
1801
|
exposes.composite('switch_3_text_icon', 'switch_3_text_icon').withDescription('Switch 3 text and icon')
|
|
1802
|
-
.withFeature(exposes.enum('switch_3_icon', ea.
|
|
1802
|
+
.withFeature(exposes.enum('switch_3_icon', ea.STATE_SET, ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'])
|
|
1803
1803
|
.withDescription('Icon'))
|
|
1804
|
-
.withFeature(exposes.text('switch_3_text', ea.
|
|
1804
|
+
.withFeature(exposes.text('switch_3_text', ea.STATE_SET)
|
|
1805
1805
|
.withDescription('Text'))],
|
|
1806
1806
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1807
1807
|
await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
|