zigbee-herdsman-converters 14.0.596 → 14.0.599
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/feibit.js +14 -7
- package/devices/heiman.js +1 -1
- package/devices/iluminize.js +10 -6
- package/devices/namron.js +20 -5
- package/devices/osram.js +1 -1
- package/devices/philips.js +7 -0
- package/devices/schneider_electric.js +1 -1
- package/devices/shinasystem.js +26 -1
- package/devices/xiaomi.js +3 -0
- package/lib/utils.js +6 -0
- package/package.json +1 -1
package/devices/feibit.js
CHANGED
|
@@ -22,6 +22,13 @@ module.exports = [
|
|
|
22
22
|
await reporting.bind(device.getEndpoint(17), coordinatorEndpoint, ['genOnOff']);
|
|
23
23
|
},
|
|
24
24
|
},
|
|
25
|
+
{
|
|
26
|
+
zigbeeModel: ['FB56+ZSW1GKJ2.3'],
|
|
27
|
+
model: 'SKY01-TS1-101',
|
|
28
|
+
vendor: 'Feibit',
|
|
29
|
+
description: 'Smart light switch - 1 gang',
|
|
30
|
+
extend: extend.switch(),
|
|
31
|
+
},
|
|
25
32
|
{
|
|
26
33
|
zigbeeModel: ['FNB56-SOS03FB1.5'],
|
|
27
34
|
model: 'SEB01ZB',
|
|
@@ -32,7 +39,7 @@ module.exports = [
|
|
|
32
39
|
exposes: [e.sos(), e.battery_low(), e.tamper(), e.battery()],
|
|
33
40
|
},
|
|
34
41
|
{
|
|
35
|
-
zigbeeModel: ['FNB56-BOT06FB2.3', 'FNB56-BOT06FB2.8', 'FB56-BOT02HM1.2'],
|
|
42
|
+
zigbeeModel: ['FNB56-BOT06FB2.3', 'FNB56-BOT06FB2.8', 'FB56-BOT02HM1.2', 'FNB56-BOT06FB2.8'],
|
|
36
43
|
model: 'SBM01ZB',
|
|
37
44
|
vendor: 'Feibit',
|
|
38
45
|
description: 'Human body movement sensor',
|
|
@@ -47,7 +54,7 @@ module.exports = [
|
|
|
47
54
|
exposes: [e.occupancy(), e.battery_low(), e.tamper(), e.battery()],
|
|
48
55
|
},
|
|
49
56
|
{
|
|
50
|
-
zigbeeModel: ['FNB56-THM14FB2.4', 'FNB54-THM17ML1.1', 'FB56-THM12HM1.2'],
|
|
57
|
+
zigbeeModel: ['FNB56-THM14FB2.4', 'FNB54-THM17ML1.1', 'FB56-THM12HM1.2', 'FNB56-THM14FB2.5'],
|
|
51
58
|
model: 'STH01ZB',
|
|
52
59
|
vendor: 'Feibit',
|
|
53
60
|
description: 'Smart temperature & humidity Sensor',
|
|
@@ -57,7 +64,7 @@ module.exports = [
|
|
|
57
64
|
exposes: [e.temperature(), e.humidity(), e.battery()],
|
|
58
65
|
},
|
|
59
66
|
{
|
|
60
|
-
zigbeeModel: ['FNB56-SMF06FB1.6'],
|
|
67
|
+
zigbeeModel: ['FNB56-SMF06FB1.6', 'FNB56-SMF06FB2.0'],
|
|
61
68
|
model: 'SSA01ZB',
|
|
62
69
|
vendor: 'Feibit',
|
|
63
70
|
description: 'Smoke detector',
|
|
@@ -72,7 +79,7 @@ module.exports = [
|
|
|
72
79
|
exposes: [e.smoke(), e.battery_low(), e.tamper(), e.battery()],
|
|
73
80
|
},
|
|
74
81
|
{
|
|
75
|
-
zigbeeModel: ['FNB56-COS06FB1.7'],
|
|
82
|
+
zigbeeModel: ['FNB56-COS06FB1.7', 'FNB56-COS06FB2.1'],
|
|
76
83
|
model: 'SCA01ZB',
|
|
77
84
|
vendor: 'Feibit',
|
|
78
85
|
description: 'Smart carbon monoxide sensor',
|
|
@@ -87,7 +94,7 @@ module.exports = [
|
|
|
87
94
|
exposes: [e.carbon_monoxide(), e.battery_low(), e.tamper(), e.battery()],
|
|
88
95
|
},
|
|
89
96
|
{
|
|
90
|
-
zigbeeModel: ['FNB56-GAS05FB1.4'],
|
|
97
|
+
zigbeeModel: ['FNB56-GAS05FB1.4', 'FNB56-GAS05FB1.8'],
|
|
91
98
|
model: 'SGA01ZB',
|
|
92
99
|
vendor: 'Feibit',
|
|
93
100
|
description: 'Combustible gas sensor',
|
|
@@ -96,7 +103,7 @@ module.exports = [
|
|
|
96
103
|
exposes: [e.gas()],
|
|
97
104
|
},
|
|
98
105
|
{
|
|
99
|
-
zigbeeModel: ['FNB56-WTS05FB2.0'],
|
|
106
|
+
zigbeeModel: ['FNB56-WTS05FB2.0', 'FNB56-WTS05FB2.4'],
|
|
100
107
|
model: 'SWA01ZB',
|
|
101
108
|
vendor: 'Feibit',
|
|
102
109
|
description: 'Water leakage sensor',
|
|
@@ -114,7 +121,7 @@ module.exports = [
|
|
|
114
121
|
exposes: [e.contact(), e.battery_low(), e.tamper(), e.battery()],
|
|
115
122
|
},
|
|
116
123
|
{
|
|
117
|
-
zigbeeModel: ['FB56+SKT14AL2.1'],
|
|
124
|
+
zigbeeModel: ['FB56+SKT14AL2.1', 'FTB56+SKT1BCW1.0'],
|
|
118
125
|
model: 'SFS01ZB',
|
|
119
126
|
vendor: 'Feibit',
|
|
120
127
|
description: 'Power plug',
|
package/devices/heiman.js
CHANGED
|
@@ -211,7 +211,7 @@ module.exports = [
|
|
|
211
211
|
description: 'Smart remote controller',
|
|
212
212
|
fromZigbee: [fz.battery, fz.command_arm, fz.command_emergency],
|
|
213
213
|
toZigbee: [],
|
|
214
|
-
exposes: [e.battery(), e.action(['emergency', 'disarm', '
|
|
214
|
+
exposes: [e.battery(), e.action(['emergency', 'disarm', 'arm_day_zones', 'arm_all_zones'])],
|
|
215
215
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
216
216
|
const endpoint = device.getEndpoint(1);
|
|
217
217
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
package/devices/iluminize.js
CHANGED
|
@@ -162,13 +162,17 @@ module.exports = [
|
|
|
162
162
|
exposes: [e.battery(), e.action([
|
|
163
163
|
'color_move', 'color_temperature_move', 'hue_move', 'hue_stop', 'brightness_step_up', 'brightness_step_down',
|
|
164
164
|
'recall_*', 'on', 'off']),
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
exposes.numeric('
|
|
165
|
+
exposes.composite('action_color', 'action_color')
|
|
166
|
+
.withFeature(exposes.numeric('x', ea.STATE))
|
|
167
|
+
.withFeature(exposes.numeric('y', ea.STATE))
|
|
168
|
+
.withDescription('Only shows the transmitted color in X7Y-Mode. Noch changes possible.'),
|
|
169
|
+
exposes.numeric('action_color_temperature', ea.STATE).withUnit('mired')
|
|
170
|
+
.withDescription('color temperature value. Fixed values for each key press: 145, 175, 222, 304, 480 mired'),
|
|
171
|
+
exposes.numeric('action_group', ea.STATE)
|
|
172
|
+
.withDescription('Shows the zigbee2mqtt group bound to the active data point EP(1-4).'),
|
|
170
173
|
exposes.numeric('action_transition_time', ea.STATE),
|
|
171
|
-
exposes.
|
|
174
|
+
exposes.numeric('action_step_size', ea.STATE),
|
|
175
|
+
exposes.numeric('action_rate', ea.STATE)],
|
|
172
176
|
toZigbee: [],
|
|
173
177
|
meta: {multiEndpoint: true},
|
|
174
178
|
endpoint: (device) => {
|
package/devices/namron.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 constants = require('../lib/constants');
|
|
5
5
|
const reporting = require('../lib/reporting');
|
|
6
|
+
const globalStore = require('../lib/store');
|
|
6
7
|
const extend = require('../lib/extend');
|
|
7
8
|
const ea = exposes.access;
|
|
8
9
|
const e = exposes.presets;
|
|
@@ -340,6 +341,25 @@ module.exports = [
|
|
|
340
341
|
.withValueMin(20).withValueMax(60)
|
|
341
342
|
.withDescription('Room temperature alarm threshold, between 20 and 60 in °C. 0 means disabled. Default: 45.'),
|
|
342
343
|
],
|
|
344
|
+
onEvent: async (type, data, device, options) => {
|
|
345
|
+
const endpoint = device.getEndpoint(1);
|
|
346
|
+
if (type === 'stop') {
|
|
347
|
+
clearInterval(globalStore.getValue(device, 'time'));
|
|
348
|
+
globalStore.clearValue(device, 'time');
|
|
349
|
+
} else if (!globalStore.hasValue(device, 'time')) {
|
|
350
|
+
const hours24 = 1000 * 60 * 60 * 24;
|
|
351
|
+
const interval = setInterval(async () => {
|
|
352
|
+
try {
|
|
353
|
+
// Device does not asks for the time with binding, therefore we write the time every 24 hours
|
|
354
|
+
const time = Math.round(((new Date()).getTime() - constants.OneJanuary2000) / 1000 + ((new Date())
|
|
355
|
+
.getTimezoneOffset() * -1) * 60);
|
|
356
|
+
const values = {time: time};
|
|
357
|
+
endpoint.write('genTime', values);
|
|
358
|
+
} catch (error) {/* Do nothing*/}
|
|
359
|
+
}, hours24);
|
|
360
|
+
globalStore.putValue(device, 'time', interval);
|
|
361
|
+
}
|
|
362
|
+
},
|
|
343
363
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
344
364
|
const endpoint = device.getEndpoint(1);
|
|
345
365
|
const binds = [
|
|
@@ -474,11 +494,6 @@ module.exports = [
|
|
|
474
494
|
reportableChange: null}],
|
|
475
495
|
options);
|
|
476
496
|
|
|
477
|
-
// Device does not asks for the time with binding, we need to write time during configure
|
|
478
|
-
const time = Math.round(((new Date()).getTime() - constants.OneJanuary2000) / 1000);
|
|
479
|
-
const values = {time: time};
|
|
480
|
-
endpoint.write('genTime', values);
|
|
481
|
-
|
|
482
497
|
// Trigger initial read
|
|
483
498
|
await endpoint.read('hvacThermostat', ['systemMode', 'runningState', 'occupiedHeatingSetpoint']);
|
|
484
499
|
await endpoint.read('hvacThermostat', [0x1000, 0x1001, 0x1002, 0x1003], options);
|
package/devices/osram.js
CHANGED
|
@@ -227,7 +227,7 @@ module.exports = [
|
|
|
227
227
|
model: '4052899926110',
|
|
228
228
|
vendor: 'OSRAM',
|
|
229
229
|
description: 'Flex RGBW',
|
|
230
|
-
extend: extend.ledvance.light_onoff_brightness_colortemp_color({colorTempRange: [125, 666]}),
|
|
230
|
+
extend: extend.ledvance.light_onoff_brightness_colortemp_color({colorTempRange: [125, 666], supportsHS: true, preferHS: true}),
|
|
231
231
|
ota: ota.ledvance,
|
|
232
232
|
},
|
|
233
233
|
{
|
package/devices/philips.js
CHANGED
|
@@ -966,6 +966,13 @@ module.exports = [
|
|
|
966
966
|
description: 'Hue Outdoor Econic wall lantern',
|
|
967
967
|
extend: hueExtend.light_onoff_brightness_colortemp_color(),
|
|
968
968
|
},
|
|
969
|
+
{
|
|
970
|
+
zigbeeModel: ['929003053001'],
|
|
971
|
+
model: '929003053001',
|
|
972
|
+
vendor: 'Philips',
|
|
973
|
+
description: 'Hue Sana wall light',
|
|
974
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
975
|
+
},
|
|
969
976
|
{
|
|
970
977
|
zigbeeModel: ['LCE001'],
|
|
971
978
|
model: '929002294101',
|
|
@@ -213,7 +213,7 @@ module.exports = [
|
|
|
213
213
|
fz.legacy.wiser_thermostat, fz.legacy.wiser_itrv_battery, fz.hvac_user_interface, fz.wiser_device_info],
|
|
214
214
|
toZigbee: [tz.thermostat_occupied_heating_setpoint, tz.thermostat_keypad_lockout],
|
|
215
215
|
exposes: [exposes.climate().withSetpoint('occupied_heating_setpoint', 7, 30, 1).withLocalTemperature(ea.STATE)
|
|
216
|
-
.
|
|
216
|
+
.withRunningState(['idle', 'heat'], ea.STATE).withPiHeatingDemand()],
|
|
217
217
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
218
218
|
const endpoint = device.getEndpoint(1);
|
|
219
219
|
const binds = ['genBasic', 'genPowerCfg', 'hvacThermostat', 'haDiagnostic'];
|
package/devices/shinasystem.js
CHANGED
|
@@ -9,7 +9,12 @@ const ea = exposes.access;
|
|
|
9
9
|
|
|
10
10
|
module.exports = [
|
|
11
11
|
{
|
|
12
|
-
|
|
12
|
+
fingerprint: [
|
|
13
|
+
{modelID: 'CSM-300Z', applicationVersion: 1},
|
|
14
|
+
{modelID: 'CSM-300Z', applicationVersion: 2},
|
|
15
|
+
{modelID: 'CSM-300Z', applicationVersion: 3},
|
|
16
|
+
{modelID: 'CSM-300Z', applicationVersion: 4},
|
|
17
|
+
],
|
|
13
18
|
model: 'CSM-300ZB',
|
|
14
19
|
vendor: 'ShinaSystem',
|
|
15
20
|
description: 'SiHAS multipurpose sensor',
|
|
@@ -24,7 +29,27 @@ module.exports = [
|
|
|
24
29
|
const payload = reporting.payload('presentValue', 1, 600, 0);
|
|
25
30
|
await endpoint.configureReporting('genAnalogInput', payload);
|
|
26
31
|
},
|
|
32
|
+
exposes: [e.battery(), e.battery_voltage(),
|
|
33
|
+
exposes.enum('status', ea.STATE, ['idle', 'in', 'out']).withDescription('Currently status'),
|
|
34
|
+
exposes.numeric('people', ea.ALL).withValueMin(0).withValueMax(50).withDescription('People count')],
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
zigbeeModel: ['CSM-300Z'],
|
|
38
|
+
model: 'CSM-300ZB_V2',
|
|
39
|
+
vendor: 'ShinaSystem',
|
|
27
40
|
ota: ota.zigbeeOTA,
|
|
41
|
+
description: 'SiHAS multipurpose ToF sensor',
|
|
42
|
+
meta: {battery: {voltageToPercentage: 'Add_1V_42V_CSM300z2v2'}},
|
|
43
|
+
fromZigbee: [fz.battery, fz.sihas_people_cnt],
|
|
44
|
+
toZigbee: [tz.sihas_set_people],
|
|
45
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
46
|
+
const endpoint = device.getEndpoint(1);
|
|
47
|
+
const binds = ['genPowerCfg', 'genAnalogInput'];
|
|
48
|
+
await reporting.bind(endpoint, coordinatorEndpoint, binds);
|
|
49
|
+
await reporting.batteryVoltage(endpoint);
|
|
50
|
+
const payload = reporting.payload('presentValue', 1, 600, 0);
|
|
51
|
+
await endpoint.configureReporting('genAnalogInput', payload);
|
|
52
|
+
},
|
|
28
53
|
exposes: [e.battery(), e.battery_voltage(),
|
|
29
54
|
exposes.enum('status', ea.STATE, ['idle', 'in', 'out']).withDescription('Currently status'),
|
|
30
55
|
exposes.numeric('people', ea.ALL).withValueMin(0).withValueMax(50).withDescription('People count')],
|
package/devices/xiaomi.js
CHANGED
|
@@ -101,6 +101,7 @@ module.exports = [
|
|
|
101
101
|
e.light_brightness_colortemp([153, 370]).removeFeature('color_temp_startup').withEndpoint('l2'),
|
|
102
102
|
exposes.enum('dimmer_mode', ea.ALL, ['rgbw', 'dual_ct'])
|
|
103
103
|
.withDescription('Switch between rgbw mode or dual color temperature mode')],
|
|
104
|
+
ota: ota.zigbeeOTA,
|
|
104
105
|
},
|
|
105
106
|
{
|
|
106
107
|
zigbeeModel: ['lumi.light.aqcn02'],
|
|
@@ -1877,6 +1878,7 @@ module.exports = [
|
|
|
1877
1878
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1878
1879
|
await device.getEndpoint(1).write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
|
|
1879
1880
|
},
|
|
1881
|
+
ota: ota.zigbeeOTA,
|
|
1880
1882
|
},
|
|
1881
1883
|
{
|
|
1882
1884
|
zigbeeModel: ['lumi.switch.b2lc04'],
|
|
@@ -1908,6 +1910,7 @@ module.exports = [
|
|
|
1908
1910
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1909
1911
|
await device.getEndpoint(1).write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
|
|
1910
1912
|
},
|
|
1913
|
+
ota: ota.zigbeeOTA,
|
|
1911
1914
|
},
|
|
1912
1915
|
{
|
|
1913
1916
|
zigbeeModel: ['lumi.airmonitor.acn01'],
|
package/lib/utils.js
CHANGED
|
@@ -170,6 +170,12 @@ function batteryVoltageToPercentage(voltage, option) {
|
|
|
170
170
|
percentage = toPercentage(voltage, 2850, 3200);
|
|
171
171
|
} else if (option === '4LR6AA1_5v') {
|
|
172
172
|
percentage = toPercentage(voltage, 3000, 4200);
|
|
173
|
+
} else if (option === '3V_add 1V') {
|
|
174
|
+
voltage = voltage + 1000;
|
|
175
|
+
percentage = toPercentage(voltage, 3200, 4200);
|
|
176
|
+
} else if (option === 'Add_1V_42V_CSM300z2v2') {
|
|
177
|
+
voltage = voltage + 1000;
|
|
178
|
+
percentage = toPercentage(voltage, 2900, 4100);
|
|
173
179
|
} else {
|
|
174
180
|
throw new Error(`Not batteryVoltageToPercentage type supported: ${option}`);
|
|
175
181
|
}
|