zigbee-herdsman-converters 14.0.573 → 14.0.576
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/bitron.js +3 -1
- package/devices/custom_devices_diy.js +11 -5
- package/devices/dresden_elektronik.js +8 -0
- package/devices/heiman.js +17 -0
- package/devices/kurvia.js +21 -0
- package/devices/led_trading.js +36 -0
- package/devices/lupus.js +1 -1
- package/devices/osram.js +1 -1
- package/devices/philips.js +14 -0
- package/devices/tuya.js +22 -3
- package/lib/ota/ubisys.js +2 -2
- package/lib/reporting.js +4 -0
- package/package.json +1 -1
package/devices/bitron.js
CHANGED
|
@@ -186,7 +186,8 @@ module.exports = [
|
|
|
186
186
|
vendor: 'SMaBiT (Bitron Video)',
|
|
187
187
|
description: 'Wireless wall thermostat with relay',
|
|
188
188
|
fromZigbee: [fz.legacy.bitron_thermostat_att_report, fz.battery, fz.hvac_user_interface],
|
|
189
|
-
toZigbee: [tz.
|
|
189
|
+
toZigbee: [tz.thermostat_control_sequence_of_operation, tz.thermostat_occupied_heating_setpoint,
|
|
190
|
+
tz.thermostat_occupied_cooling_setpoint, tz.thermostat_local_temperature_calibration, tz.thermostat_local_temperature,
|
|
190
191
|
tz.thermostat_running_state, tz.thermostat_temperature_display_mode, tz.thermostat_keypad_lockout, tz.thermostat_system_mode],
|
|
191
192
|
exposes: [e.battery(), exposes.climate().withSetpoint('occupied_heating_setpoint', 7, 30, 0.5).withLocalTemperature()
|
|
192
193
|
.withSystemMode(['off', 'auto', 'heat']).withRunningState(['idle', 'heat', 'cool'])
|
|
@@ -201,6 +202,7 @@ module.exports = [
|
|
|
201
202
|
await reporting.thermostatTemperature(endpoint);
|
|
202
203
|
await reporting.thermostatTemperatureCalibration(endpoint);
|
|
203
204
|
await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
|
|
205
|
+
await reporting.thermostatOccupiedCoolingSetpoint(endpoint);
|
|
204
206
|
await reporting.thermostatRunningState(endpoint);
|
|
205
207
|
await reporting.batteryAlarmState(endpoint);
|
|
206
208
|
await reporting.batteryVoltage(endpoint);
|
|
@@ -435,19 +435,25 @@ module.exports = [
|
|
|
435
435
|
zigbeeModel: ['EFEKTA_PWS'],
|
|
436
436
|
model: 'EFEKTA_PWS',
|
|
437
437
|
vendor: 'Custom devices (DiY)',
|
|
438
|
-
description: '[Plant Wattering Sensor]',
|
|
439
|
-
fromZigbee: [fz.temperature, fz.soil_moisture, fz.battery],
|
|
440
|
-
toZigbee: [tz.factory_reset],
|
|
438
|
+
description: '[Plant Wattering Sensor, CR2450, CR2477 batteries, temperature ]',
|
|
439
|
+
fromZigbee: [fz.temperature, fz.humidity, fz.illuminance, fz.soil_moisture, fz.battery, fzLocal.node_config],
|
|
440
|
+
toZigbee: [tz.factory_reset, tzLocal.node_config],
|
|
441
441
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
442
442
|
const firstEndpoint = device.getEndpoint(1);
|
|
443
|
-
await reporting.bind(firstEndpoint, coordinatorEndpoint, [
|
|
443
|
+
await reporting.bind(firstEndpoint, coordinatorEndpoint, [
|
|
444
|
+
'genPowerCfg', 'msTemperatureMeasurement', 'msSoilMoisture']);
|
|
444
445
|
const overides = {min: 0, max: 21600, change: 0};
|
|
445
446
|
await reporting.batteryVoltage(firstEndpoint, overides);
|
|
446
447
|
await reporting.batteryPercentageRemaining(firstEndpoint, overides);
|
|
447
448
|
await reporting.temperature(firstEndpoint, overides);
|
|
448
449
|
await reporting.soil_moisture(firstEndpoint, overides);
|
|
450
|
+
const payload1 = [{attribute: {ID: 0x0201, type: 0x21},
|
|
451
|
+
minimumReportInterval: 0, maximumReportInterval: 21600, reportableChange: 0}];
|
|
452
|
+
await firstEndpoint.configureReporting('genPowerCfg', payload1);
|
|
449
453
|
},
|
|
450
|
-
exposes: [e.soil_moisture(), e.battery(), e.temperature()
|
|
454
|
+
exposes: [e.soil_moisture(), e.battery(), e.temperature(),
|
|
455
|
+
exposes.numeric('report_delay', ea.STATE_SET).withUnit('Minutes').withValueMin(1).withValueMax(240)
|
|
456
|
+
.withDescription('Adjust Report Delay. Setting the time in minutes, by default 15 minutes')],
|
|
451
457
|
},
|
|
452
458
|
{
|
|
453
459
|
zigbeeModel: ['EFEKTA_THP_LR'],
|
|
@@ -23,4 +23,12 @@ module.exports = [
|
|
|
23
23
|
description: 'ZigBee Light Link wireless electronic ballast color temperature',
|
|
24
24
|
extend: extend.light_onoff_brightness_colortemp(),
|
|
25
25
|
},
|
|
26
|
+
{
|
|
27
|
+
zigbeeModel: ['Kobold'],
|
|
28
|
+
model: 'BN-600110',
|
|
29
|
+
vendor: 'Dresden Elektronik',
|
|
30
|
+
description: 'Zigbee 3.0 dimm actuator',
|
|
31
|
+
extend: extend.light_onoff_brightness(),
|
|
32
|
+
ota: ota.zigbeeOTA,
|
|
33
|
+
},
|
|
26
34
|
];
|
package/devices/heiman.js
CHANGED
|
@@ -699,4 +699,21 @@ module.exports = [
|
|
|
699
699
|
},
|
|
700
700
|
exposes: [e.battery(), e.action(['pressed']), e.battery_low(), e.tamper()],
|
|
701
701
|
},
|
|
702
|
+
{
|
|
703
|
+
zigbeeModel: ['HS3AQ-EFA-3.0'],
|
|
704
|
+
model: 'HS3AQ',
|
|
705
|
+
vendor: 'HEIMAN',
|
|
706
|
+
description: 'Smart air quality monitor',
|
|
707
|
+
fromZigbee: [fz.co2, fz.humidity, fz.battery, fz.temperature],
|
|
708
|
+
toZigbee: [],
|
|
709
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
710
|
+
const endpoint = device.getEndpoint(1);
|
|
711
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['msRelativeHumidity', 'genPowerCfg', 'msTemperatureMeasurement', 'msCO2']);
|
|
712
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
713
|
+
await reporting.temperature(endpoint, {min: 1, max: constants.repInterval.MINUTES_5, change: 10}); // 0.1 degree change
|
|
714
|
+
await reporting.humidity(endpoint, {min: 1, max: constants.repInterval.MINUTES_5, change: 10}); // 0.1 % change
|
|
715
|
+
await reporting.co2(endpoint, {min: 5, max: constants.repInterval.MINUTES_5, change: 0.00005}); // 50 ppm change
|
|
716
|
+
},
|
|
717
|
+
exposes: [e.co2(), e.battery(), e.humidity(), e.temperature()],
|
|
718
|
+
},
|
|
702
719
|
];
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const tz = require('../converters/toZigbee');
|
|
2
|
+
const exposes = require('../lib/exposes');
|
|
3
|
+
const extend = require('../lib/extend');
|
|
4
|
+
const e = exposes.presets;
|
|
5
|
+
|
|
6
|
+
const extendData = extend.light_onoff_brightness_colortemp_color({colorTempRange: [250, 454]});
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
module.exports = [
|
|
10
|
+
{
|
|
11
|
+
zigbeeModel: ['ZB-CL01'],
|
|
12
|
+
model: 'ZB-CL01',
|
|
13
|
+
vendor: 'KURVIA',
|
|
14
|
+
description: 'GU10 GRBWC built from AliExpress',
|
|
15
|
+
exposes: extendData.exposes.concat(e.power_on_behavior()),
|
|
16
|
+
toZigbee: [tz.on_off].concat(extendData.toZigbee),
|
|
17
|
+
fromZigbee: extendData.fromZigbee,
|
|
18
|
+
meta: {applyRedFix: true, enhancedHue: false},
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
|
package/devices/led_trading.js
CHANGED
|
@@ -21,6 +21,31 @@ const fzLocal = {
|
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
},
|
|
24
|
+
led_trading_9125: {
|
|
25
|
+
cluster: 'greenPower',
|
|
26
|
+
type: ['commandNotification', 'commandCommisioningNotification'],
|
|
27
|
+
convert: (model, msg, publish, options, meta) => {
|
|
28
|
+
const commandID = msg.data.commandID;
|
|
29
|
+
if (utils.hasAlreadyProcessedMessage(msg, msg.data.frameCounter, `${msg.device.ieeeAddr}_${commandID}`)) return;
|
|
30
|
+
if (commandID === 104) return; // Skip commisioning command.
|
|
31
|
+
|
|
32
|
+
// Button 1: A0 (top left)
|
|
33
|
+
// Button 2: A1 (bottom left)
|
|
34
|
+
// Button 3: B0 (top right)
|
|
35
|
+
// Button 4: B1 (bottom right)
|
|
36
|
+
const lookup = {
|
|
37
|
+
0x10: 'press_1', 0x14: 'release_1', 0x11: 'press_2', 0x15: 'release_2', 0x13: 'press_3', 0x17: 'release_3',
|
|
38
|
+
0x12: 'press_4', 0x16: 'release_4', 0x64: 'press_1_and_3', 0x65: 'release_1_and_3', 0x62: 'press_2_and_4',
|
|
39
|
+
0x63: 'release_2_and_4',
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
if (!lookup.hasOwnProperty(commandID)) {
|
|
43
|
+
meta.logger.error(`LED Trading 9125: missing command '${commandID}'`);
|
|
44
|
+
} else {
|
|
45
|
+
return {action: lookup[commandID]};
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
},
|
|
24
49
|
};
|
|
25
50
|
|
|
26
51
|
module.exports = [
|
|
@@ -66,4 +91,15 @@ module.exports = [
|
|
|
66
91
|
await reporting.bind(device.getEndpoint(5), coordinatorEndpoint, ['genOnOff']);
|
|
67
92
|
},
|
|
68
93
|
},
|
|
94
|
+
{
|
|
95
|
+
fingerprint: [{modelID: 'GreenPower_2', ieeeAddr: /^0x00000000017.....$/, manufId: null}],
|
|
96
|
+
model: '9125',
|
|
97
|
+
vendor: 'LED Trading',
|
|
98
|
+
description: 'FOH smart switch',
|
|
99
|
+
whiteLabel: [{vendor: 'Sunricher', model: 'SR-ZGP2801K4-FOH-E'}],
|
|
100
|
+
fromZigbee: [fzLocal.led_trading_9125],
|
|
101
|
+
toZigbee: [],
|
|
102
|
+
exposes: [e.action(['press_1', 'release_1', 'press_2', 'release_2', 'press_3', 'release_3', 'press_4', 'release_4',
|
|
103
|
+
'press_1_and_3', 'release_1_and_3', 'press_2_and_4', 'release_2_and_4'])],
|
|
104
|
+
},
|
|
69
105
|
];
|
package/devices/lupus.js
CHANGED
package/devices/osram.js
CHANGED
|
@@ -83,7 +83,7 @@ module.exports = [
|
|
|
83
83
|
model: 'AC03642',
|
|
84
84
|
vendor: 'OSRAM',
|
|
85
85
|
description: 'SMART+ CLASSIC A 60 TW',
|
|
86
|
-
extend: extend.ledvance.light_onoff_brightness_colortemp(),
|
|
86
|
+
extend: extend.ledvance.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
|
|
87
87
|
ota: ota.ledvance,
|
|
88
88
|
},
|
|
89
89
|
{
|
package/devices/philips.js
CHANGED
|
@@ -951,6 +951,13 @@ module.exports = [
|
|
|
951
951
|
description: 'Hue white ambiance Adore wall light',
|
|
952
952
|
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
|
|
953
953
|
},
|
|
954
|
+
{
|
|
955
|
+
zigbeeModel: ['929003056001'],
|
|
956
|
+
model: '929003056001',
|
|
957
|
+
vendor: 'Philips',
|
|
958
|
+
description: 'Hue white ambiance Adore bathroom mirror light with Bluetooth',
|
|
959
|
+
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
|
|
960
|
+
},
|
|
954
961
|
{
|
|
955
962
|
zigbeeModel: ['LTW015'],
|
|
956
963
|
model: '9290011998B',
|
|
@@ -2448,6 +2455,13 @@ module.exports = [
|
|
|
2448
2455
|
description: 'Akari downlight',
|
|
2449
2456
|
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
2450
2457
|
},
|
|
2458
|
+
{
|
|
2459
|
+
zigbeeModel: ['LCD004'],
|
|
2460
|
+
model: '8719514382350',
|
|
2461
|
+
vendor: 'Philips',
|
|
2462
|
+
description: 'Akari downlight',
|
|
2463
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
2464
|
+
},
|
|
2451
2465
|
{
|
|
2452
2466
|
zigbeeModel: ['LCD006'],
|
|
2453
2467
|
model: '9290031346',
|
package/devices/tuya.js
CHANGED
|
@@ -467,6 +467,10 @@ module.exports = [
|
|
|
467
467
|
return {'l1': 1, 'l2': 2};
|
|
468
468
|
},
|
|
469
469
|
meta: {multiEndpoint: true},
|
|
470
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
471
|
+
const endpoint = device.getEndpoint(1);
|
|
472
|
+
await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
473
|
+
},
|
|
470
474
|
},
|
|
471
475
|
{
|
|
472
476
|
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_rk2yzt0u'},
|
|
@@ -904,8 +908,7 @@ module.exports = [
|
|
|
904
908
|
},
|
|
905
909
|
{
|
|
906
910
|
fingerprint: [{modelID: 'TS0215A', manufacturerName: '_TZ3000_4fsgukof'},
|
|
907
|
-
{modelID: 'TS0215A', manufacturerName: '_TZ3000_wr2ucaj9'},
|
|
908
|
-
{modelID: 'TS0215A', manufacturerName: '_TZ3000_tj4pwzzm'}],
|
|
911
|
+
{modelID: 'TS0215A', manufacturerName: '_TZ3000_wr2ucaj9'}],
|
|
909
912
|
model: 'TS0215A_sos',
|
|
910
913
|
vendor: 'TuYa',
|
|
911
914
|
description: 'SOS button',
|
|
@@ -915,6 +918,7 @@ module.exports = [
|
|
|
915
918
|
},
|
|
916
919
|
{
|
|
917
920
|
fingerprint: [{modelID: 'TS0215A', manufacturerName: '_TZ3000_p6ju8myv'},
|
|
921
|
+
{modelID: 'TS0215A', manufacturerName: '_TZ3000_tj4pwzzm'},
|
|
918
922
|
{modelID: 'TS0215A', manufacturerName: '_TZ3000_fsiepnrh'}],
|
|
919
923
|
model: 'TS0215A_remote',
|
|
920
924
|
vendor: 'TuYa',
|
|
@@ -1022,8 +1026,8 @@ module.exports = [
|
|
|
1022
1026
|
fingerprint: [
|
|
1023
1027
|
{modelID: 'TS0201', manufacturerName: '_TZ3000_bguser20'},
|
|
1024
1028
|
{modelID: 'TS0201', manufacturerName: '_TZ3000_fllyghyj'},
|
|
1025
|
-
{modelID: 'TS0201', manufacturerName: '_TZ3000_dowj6gyi'},
|
|
1026
1029
|
{modelID: 'TS0201', manufacturerName: '_TZ3000_yd2e749y'},
|
|
1030
|
+
{modelID: 'TS0201', manufacturerName: '_TZ3000_6uzkisv2'},
|
|
1027
1031
|
],
|
|
1028
1032
|
model: 'WSD500A',
|
|
1029
1033
|
vendor: 'TuYa',
|
|
@@ -1036,6 +1040,21 @@ module.exports = [
|
|
|
1036
1040
|
await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
1037
1041
|
},
|
|
1038
1042
|
},
|
|
1043
|
+
{
|
|
1044
|
+
fingerprint: [
|
|
1045
|
+
{modelID: 'TS0201', manufacturerName: '_TZ3000_dowj6gyi'},
|
|
1046
|
+
],
|
|
1047
|
+
model: 'IH-K009',
|
|
1048
|
+
vendor: 'TuYa',
|
|
1049
|
+
description: 'Temperature & humidity sensor',
|
|
1050
|
+
fromZigbee: [fzLocal.TS0201_battery, fz.temperature, fz.humidity],
|
|
1051
|
+
toZigbee: [],
|
|
1052
|
+
exposes: [e.battery(), e.temperature(), e.humidity(), e.battery_voltage()],
|
|
1053
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1054
|
+
const endpoint = device.getEndpoint(1);
|
|
1055
|
+
await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
1056
|
+
},
|
|
1057
|
+
},
|
|
1039
1058
|
{
|
|
1040
1059
|
fingerprint: [{modelID: 'SM0201', manufacturerName: '_TYZB01_cbiezpds'}],
|
|
1041
1060
|
model: 'SM0201',
|
package/lib/ota/ubisys.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const firmwareHtmlPageUrl = '
|
|
2
|
-
const imageRegex = /
|
|
1
|
+
const firmwareHtmlPageUrl = 'http://fwu.ubisys.de/smarthome/OTA/release/index';
|
|
2
|
+
const imageRegex = /10F2-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{8})\S*ota1?\.zigbee/gi;
|
|
3
3
|
const assert = require('assert');
|
|
4
4
|
const url = require('url');
|
|
5
5
|
const common = require('./common');
|
package/lib/reporting.js
CHANGED
|
@@ -94,6 +94,10 @@ module.exports = {
|
|
|
94
94
|
const p = payload('measuredValue', 10, repInterval.HOUR, 100, overrides);
|
|
95
95
|
await endpoint.configureReporting('msTemperatureMeasurement', p);
|
|
96
96
|
},
|
|
97
|
+
co2: async (endpoint, overrides) => {
|
|
98
|
+
const p = payload('measuredValue', 10, repInterval.HOUR, 1, overrides);
|
|
99
|
+
await endpoint.configureReporting('msCO2', p);
|
|
100
|
+
},
|
|
97
101
|
deviceTemperature: async (endpoint, overrides) => {
|
|
98
102
|
const p = payload('currentTemperature', 300, repInterval.HOUR, 1, overrides);
|
|
99
103
|
await endpoint.configureReporting('genDeviceTempCfg', p);
|