zigbee-herdsman-converters 14.0.493 → 14.0.496
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/ikea.js +2 -2
- package/devices/innr.js +12 -0
- package/devices/prolight.js +10 -3
- package/devices/sinope.js +16 -0
- package/devices/tuya.js +1 -1
- package/devices/woox.js +81 -3
- package/lib/ota/OTA_URLs.md +99 -0
- package/lib/tuya.js +2 -1
- package/package.json +1 -1
package/devices/ikea.js
CHANGED
|
@@ -279,10 +279,10 @@ module.exports = [
|
|
|
279
279
|
extend: tradfriExtend.light_onoff_brightness_colortemp(),
|
|
280
280
|
},
|
|
281
281
|
{
|
|
282
|
-
zigbeeModel: ['TRADFRIbulbE27WSglobeopal1055lm'],
|
|
282
|
+
zigbeeModel: ['TRADFRIbulbE27WSglobeopal1055lm', 'TRADFRIbulbE26WSglobeopal1100lm'],
|
|
283
283
|
model: 'LED2003G10',
|
|
284
284
|
vendor: 'IKEA',
|
|
285
|
-
description: 'TRADFRI LED bulb
|
|
285
|
+
description: 'TRADFRI LED bulb E26/27 1100/1055 lumen, dimmable, white spectrum, opal white',
|
|
286
286
|
extend: tradfriExtend.light_onoff_brightness_colortemp(),
|
|
287
287
|
},
|
|
288
288
|
{
|
package/devices/innr.js
CHANGED
|
@@ -497,6 +497,18 @@ module.exports = [
|
|
|
497
497
|
},
|
|
498
498
|
exposes: [e.power(), e.current(), e.voltage().withAccess(ea.STATE), e.switch(), e.energy()],
|
|
499
499
|
},
|
|
500
|
+
{
|
|
501
|
+
zigbeeModel: ['SP 110'],
|
|
502
|
+
model: 'SP 110',
|
|
503
|
+
vendor: 'Innr',
|
|
504
|
+
description: 'Smart plug',
|
|
505
|
+
extend: extend.switch(),
|
|
506
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
507
|
+
const endpoint = device.getEndpoint(1);
|
|
508
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
|
|
509
|
+
await reporting.onOff(endpoint);
|
|
510
|
+
},
|
|
511
|
+
},
|
|
500
512
|
{
|
|
501
513
|
zigbeeModel: ['SP 220'],
|
|
502
514
|
model: 'SP 220',
|
package/devices/prolight.js
CHANGED
|
@@ -6,10 +6,10 @@ const e = exposes.presets;
|
|
|
6
6
|
module.exports = [
|
|
7
7
|
{
|
|
8
8
|
zigbeeModel: ['PROLIGHT E27 WHITE AND COLOUR'],
|
|
9
|
-
model: '
|
|
9
|
+
model: '5412748727371',
|
|
10
10
|
vendor: 'Prolight',
|
|
11
11
|
description: 'E27 white and colour bulb',
|
|
12
|
-
extend: extend.light_onoff_brightness_colortemp_color(),
|
|
12
|
+
extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 555]}),
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
zigbeeModel: ['PROLIGHT E27 WARM WHITE CLEAR'],
|
|
@@ -32,9 +32,16 @@ module.exports = [
|
|
|
32
32
|
description: 'GU10 white and colour spot',
|
|
33
33
|
extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 555]}),
|
|
34
34
|
},
|
|
35
|
+
{
|
|
36
|
+
zigbeeModel: ['PROLIGHT GU10 WARM WHITE'],
|
|
37
|
+
model: '5412748727395',
|
|
38
|
+
vendor: 'Prolight',
|
|
39
|
+
description: 'GU10 spot dimmable',
|
|
40
|
+
extend: extend.light_onoff_brightness(),
|
|
41
|
+
},
|
|
35
42
|
{
|
|
36
43
|
zigbeeModel: ['PROLIGHT REMOTE CONTROL'],
|
|
37
|
-
model: '
|
|
44
|
+
model: '5412748727388',
|
|
38
45
|
vendor: 'Prolight',
|
|
39
46
|
description: 'Remote control',
|
|
40
47
|
toZigbee: [],
|
package/devices/sinope.js
CHANGED
|
@@ -259,6 +259,22 @@ module.exports = [
|
|
|
259
259
|
await reporting.activePower(endpoint, {min: 10, change: 1});
|
|
260
260
|
},
|
|
261
261
|
},
|
|
262
|
+
{
|
|
263
|
+
zigbeeModel: ['SP2610ZB'],
|
|
264
|
+
model: 'SP2610ZB',
|
|
265
|
+
vendor: 'Sinopé',
|
|
266
|
+
description: 'Zigbee smart outlet',
|
|
267
|
+
fromZigbee: [fz.on_off, fz.electrical_measurement],
|
|
268
|
+
toZigbee: [tz.on_off],
|
|
269
|
+
exposes: [e.switch(), e.power()],
|
|
270
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
271
|
+
const endpoint = device.getEndpoint(1);
|
|
272
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement']);
|
|
273
|
+
await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
|
|
274
|
+
await reporting.onOff(endpoint);
|
|
275
|
+
await reporting.activePower(endpoint, {min: 10, change: 1});
|
|
276
|
+
},
|
|
277
|
+
},
|
|
262
278
|
{
|
|
263
279
|
zigbeeModel: ['DM2500ZB'],
|
|
264
280
|
model: 'DM2500ZB',
|
package/devices/tuya.js
CHANGED
|
@@ -13,7 +13,7 @@ const utils = require('../lib/utils');
|
|
|
13
13
|
const TS011Fplugs = ['_TZ3000_5f43h46b', '_TZ3000_cphmq0q7', '_TZ3000_dpo1ysak', '_TZ3000_ew3ldmgx', '_TZ3000_gjnozsaz',
|
|
14
14
|
'_TZ3000_jvzvulen', '_TZ3000_mraovvmm', '_TZ3000_nfnmi125', '_TZ3000_ps3dmato', '_TZ3000_w0qqde0g', '_TZ3000_u5u4cakc',
|
|
15
15
|
'_TZ3000_rdtixbnu', '_TZ3000_typdpbpg', '_TZ3000_kx0pris5', '_TZ3000_amdymr7l', '_TZ3000_z1pnpsdo', '_TZ3000_ksw8qtmt',
|
|
16
|
-
'_TZ3000_nzkqcvvs'];
|
|
16
|
+
'_TZ3000_nzkqcvvs', '_TZ3000_1h2x4akh'];
|
|
17
17
|
|
|
18
18
|
const tzLocal = {
|
|
19
19
|
TS0504B_color: {
|
package/devices/woox.js
CHANGED
|
@@ -7,6 +7,75 @@ const extend = require('../lib/extend');
|
|
|
7
7
|
const e = exposes.presets;
|
|
8
8
|
const ea = exposes.access;
|
|
9
9
|
|
|
10
|
+
const fzLocal = {
|
|
11
|
+
R7049_status: {
|
|
12
|
+
cluster: 'manuSpecificTuya',
|
|
13
|
+
type: ['commandDataResponse', 'commandDataReport'],
|
|
14
|
+
convert: (model, msg, publish, options, meta) => {
|
|
15
|
+
const result = {};
|
|
16
|
+
for (const dpValue of msg.data.dpValues) {
|
|
17
|
+
const dp = dpValue.dp; // First we get the data point ID
|
|
18
|
+
const value = tuya.getDataValue(dpValue); // This function will take care of converting the data to proper JS type
|
|
19
|
+
switch (dp) {
|
|
20
|
+
case 1:
|
|
21
|
+
result.smoke = Boolean(!value);
|
|
22
|
+
break;
|
|
23
|
+
case 8:
|
|
24
|
+
result.test_alarm = value;
|
|
25
|
+
break;
|
|
26
|
+
case 9: {
|
|
27
|
+
const testAlarmResult = {0: 'checking', 1: 'check_success', 2: 'check_failure', 3: 'others'};
|
|
28
|
+
result.test_alarm_result = testAlarmResult[value];
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
case 11:
|
|
32
|
+
result.fault_alarm = Boolean(value);
|
|
33
|
+
break;
|
|
34
|
+
case 14: {
|
|
35
|
+
const batteryLevels = {0: 'low', 1: 'middle', 2: 'high'};
|
|
36
|
+
result.battery_level = batteryLevels[value];
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
case 16:
|
|
40
|
+
result.silence_siren = value;
|
|
41
|
+
break;
|
|
42
|
+
case 20: {
|
|
43
|
+
const alarm = {0: true, 1: false};
|
|
44
|
+
result.alarm = alarm[value];
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
default:
|
|
48
|
+
meta.logger.warn(`zigbee-herdsman-converters:Woox Smoke Detector: NOT RECOGNIZED DP #${
|
|
49
|
+
dp} with data ${JSON.stringify(dpValue)}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const tzLocal = {
|
|
58
|
+
R7049_silenceSiren: {
|
|
59
|
+
key: ['silence_siren'],
|
|
60
|
+
convertSet: async (entity, key, value, meta) => {
|
|
61
|
+
await tuya.sendDataPointBool(entity, 16, value);
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
R7049_testAlarm: {
|
|
65
|
+
key: ['test_alarm'],
|
|
66
|
+
convertSet: async (entity, key, value, meta) => {
|
|
67
|
+
await tuya.sendDataPointBool(entity, 8, value);
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
R7049_alarm: {
|
|
71
|
+
key: ['alarm'],
|
|
72
|
+
convertSet: async (entity, key, value, meta) => {
|
|
73
|
+
const linkAlarm = {true: 0, false: 1};
|
|
74
|
+
await tuya.sendDataPointEnum(entity, 20, linkAlarm[value]);
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
|
|
10
79
|
module.exports = [
|
|
11
80
|
{
|
|
12
81
|
fingerprint: [{modelID: 'TS0101', manufacturerName: '_TZ3210_eymunffl'}],
|
|
@@ -50,10 +119,19 @@ module.exports = [
|
|
|
50
119
|
model: 'R7049',
|
|
51
120
|
vendor: 'Woox',
|
|
52
121
|
description: 'Smart smoke alarm',
|
|
53
|
-
|
|
54
|
-
|
|
122
|
+
meta: {timeout: 30000, disableDefaultResponse: true},
|
|
123
|
+
fromZigbee: [fzLocal.R7049_status, fz.ignore_tuya_set_time, fz.ignore_time_read],
|
|
124
|
+
toZigbee: [tzLocal.R7049_silenceSiren, tzLocal.R7049_testAlarm, tzLocal.R7049_alarm],
|
|
125
|
+
exposes: [e.battery_low(),
|
|
126
|
+
exposes.binary('smoke', ea.STATE, true, false).withDescription('Smoke alarm status'),
|
|
127
|
+
exposes.binary('test_alarm', ea.STATE_SET, true, false).withDescription('Test alarm'),
|
|
128
|
+
exposes.enum('test_alarm_result', ea.STATE, ['checking', 'check_success', 'check_failure', 'others'])
|
|
129
|
+
.withDescription('Test alarm result'),
|
|
130
|
+
exposes.enum('battery_level', ea.STATE, ['low', 'middle', 'high']).withDescription('Battery level state'),
|
|
131
|
+
exposes.binary('alarm', ea.STATE_SET, true, false).withDescription('Alarm enable'),
|
|
132
|
+
exposes.binary('fault_alarm', ea.STATE, true, false).withDescription('Fault alarm status'),
|
|
133
|
+
exposes.binary('silence_siren', ea.STATE_SET, true, false).withDescription('Silence siren')],
|
|
55
134
|
onEvent: tuya.onEventsetTime,
|
|
56
|
-
exposes: [e.smoke(), e.battery_low()],
|
|
57
135
|
},
|
|
58
136
|
{
|
|
59
137
|
fingerprint: [{modelID: 'TS0219', manufacturerName: '_TYZB01_ynsiasng'}],
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Zigbee OTA source provider sources for these and others
|
|
2
|
+
|
|
3
|
+
Collection of external Zigbee OTA firmware images from official and unofficial OTA provider sources.
|
|
4
|
+
|
|
5
|
+
### Koenkk zigbee-OTA repository
|
|
6
|
+
|
|
7
|
+
Koenkk zigbee-OTA repository host third-party OTA firmware images and external URLs for many third-party Zigbee OTA firmware images.
|
|
8
|
+
|
|
9
|
+
https://github.com/Koenkk/zigbee-OTA/tree/master/images
|
|
10
|
+
|
|
11
|
+
https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/index.json
|
|
12
|
+
|
|
13
|
+
### Dresden Elektronik
|
|
14
|
+
|
|
15
|
+
Dresden Elektronik Zigbee OTA firmware images are made publicly available by Dresden Elektronik (first-party) at the following URL:
|
|
16
|
+
|
|
17
|
+
https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/OTA-Image-Types---Firmware-versions
|
|
18
|
+
|
|
19
|
+
Dresden Elektronik also provide third-party OTA firmware images and external URLs for many third-party Zigbee OTA firmware images.
|
|
20
|
+
|
|
21
|
+
### EUROTRONICS
|
|
22
|
+
|
|
23
|
+
EUROTRONICS Zigbee OTA firmware images are made publicly available by EUROTRONIC Technology (first-party) at the following URL:
|
|
24
|
+
|
|
25
|
+
https://github.com/EUROTRONIC-Technology/Spirit-ZigBee/releases/download/
|
|
26
|
+
|
|
27
|
+
### IKEA Trådfri
|
|
28
|
+
|
|
29
|
+
IKEA Tradfi Zigbee OTA firmware images are made publicly available by IKEA (first-party) at the following URL:
|
|
30
|
+
|
|
31
|
+
Download-URL:
|
|
32
|
+
|
|
33
|
+
http://fw.ota.homesmart.ikea.net/feed/version_info.json
|
|
34
|
+
|
|
35
|
+
Download-URL (Test/Beta-Version):
|
|
36
|
+
|
|
37
|
+
http://fw.test.ota.homesmart.ikea.net/feed/version_info.json
|
|
38
|
+
|
|
39
|
+
Release changelogs
|
|
40
|
+
|
|
41
|
+
https://ww8.ikea.com/ikeahomesmart/releasenotes/releasenotes.html
|
|
42
|
+
|
|
43
|
+
### LEDVANCE/Sylvania and OSRAM Lightify
|
|
44
|
+
|
|
45
|
+
LEDVANCE/Sylvania and OSRAM Lightify Zigbee OTA firmware images are made publicly available by LEDVANCE (first-party) at the following URL:
|
|
46
|
+
|
|
47
|
+
https://update.ledvance.com/firmware-overview
|
|
48
|
+
|
|
49
|
+
https://api.update.ledvance.com/v1/zigbee/firmwares/download
|
|
50
|
+
|
|
51
|
+
https://consumer.sylvania.com/our-products/smart/sylvania-smart-zigbee-products-menu/index.jsp
|
|
52
|
+
|
|
53
|
+
### Legrand/Netatmo
|
|
54
|
+
|
|
55
|
+
Legrand/Netatmo Zigbee OTA firmware images are made publicly available by Legrand (first-party) at the following URL:
|
|
56
|
+
|
|
57
|
+
https://developer.legrand.com/documentation/operating-manual/ https://developer.legrand.com/documentation/firmwares-download/
|
|
58
|
+
|
|
59
|
+
### LiXee
|
|
60
|
+
|
|
61
|
+
LiXee Zigbee OTA firmware images are made publicly available by Fairecasoimeme / ZiGate (first-party) at the following URL:
|
|
62
|
+
|
|
63
|
+
https://github.com/fairecasoimeme/Zlinky_TIC/releases
|
|
64
|
+
|
|
65
|
+
### SALUS/Computime
|
|
66
|
+
|
|
67
|
+
SALUS/Computime Hue Zigbee OTA firmware images are made publicly available by SALUS (first-party) at the following URL:
|
|
68
|
+
|
|
69
|
+
https://eu.salusconnect.io/demo/default/status/firmware
|
|
70
|
+
|
|
71
|
+
### Sengled
|
|
72
|
+
|
|
73
|
+
Sengled Zigbee OTA firmware images are made publicly available by Dresden Elektronik (third-party) at the following URL:
|
|
74
|
+
|
|
75
|
+
https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/OTA-Image-Types---Firmware-versions#sengled
|
|
76
|
+
|
|
77
|
+
### Philips Hue (Signify)
|
|
78
|
+
|
|
79
|
+
Philips Hue OTA firmware images are available for different Hue devices for several official sources that do not all use the same APIs:
|
|
80
|
+
|
|
81
|
+
https://firmware.meethue.com/v1/checkUpdate
|
|
82
|
+
|
|
83
|
+
https://firmware.meethue.com/storage/
|
|
84
|
+
|
|
85
|
+
http://fds.dc1.philips.com/firmware/
|
|
86
|
+
|
|
87
|
+
Philips Hue (Signify) Zigbee OTA firmware images direct URLs are available by Koenkk zigbee-OTA repository (third-party) at following URL:
|
|
88
|
+
|
|
89
|
+
https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/index.json
|
|
90
|
+
|
|
91
|
+
Philips Hue (Signify) Zigbee OTA firmware images are also made publicly available by Dresden Elektronik (third-party) at following URL:
|
|
92
|
+
|
|
93
|
+
https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/OTA-Image-Types---Firmware-versions#philips-hue
|
|
94
|
+
|
|
95
|
+
### Ubisys
|
|
96
|
+
|
|
97
|
+
Ubisys Zigbee OTA firmware images are made publicly available by Ubisys (first-party) at the following URL:
|
|
98
|
+
|
|
99
|
+
https://www.ubisys.de/en/support/firmware/
|
package/lib/tuya.js
CHANGED
|
@@ -219,7 +219,8 @@ function convertStringToHexArray(value) {
|
|
|
219
219
|
// Default is 100 = open, 0 = closed; Devices listed here will use 0 = open, 100 = closed instead
|
|
220
220
|
// Use manufacturerName to identify device!
|
|
221
221
|
// Dont' invert _TZE200_cowvfni3: https://github.com/Koenkk/zigbee2mqtt/issues/6043
|
|
222
|
-
const coverPositionInvert = ['_TZE200_wmcdj3aq', '_TZE200_nogaemzt', '_TZE200_xuzcvlku', '_TZE200_xaabybja', '_TZE200_rmymn92d'
|
|
222
|
+
const coverPositionInvert = ['_TZE200_wmcdj3aq', '_TZE200_nogaemzt', '_TZE200_xuzcvlku', '_TZE200_xaabybja', '_TZE200_rmymn92d',
|
|
223
|
+
'_TZE200_gubdgai2'];
|
|
223
224
|
|
|
224
225
|
// Gets a boolean indicating whether the cover by this manufacturerName needs reversed positions
|
|
225
226
|
function isCoverInverted(manufacturerName) {
|