zigbee-herdsman-converters 14.0.643 → 14.0.645
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/adurosmart.js +7 -0
- package/devices/awox.js +1 -0
- package/devices/develco.js +12 -11
- package/devices/fantem.js +3 -2
- package/devices/heiman.js +2 -2
- package/devices/inovelli.js +46 -28
- package/devices/lidl.js +2 -1
- package/devices/lonsonho.js +1 -1
- package/devices/mecrator.js +1 -1
- package/devices/moes.js +1 -87
- package/devices/philips.js +15 -1
- package/devices/robb.js +7 -3
- package/devices/sercomm.js +17 -0
- package/devices/tuya.js +69 -9
- package/devices/villeroy_boch.js +8 -1
- package/lib/ota/OTA_URLs.md +14 -0
- package/lib/tuya.js +9 -4
- package/package.json +2 -2
package/devices/adurosmart.js
CHANGED
|
@@ -59,6 +59,13 @@ module.exports = [
|
|
|
59
59
|
description: 'ERIA E14 Candle Color',
|
|
60
60
|
extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
61
61
|
},
|
|
62
|
+
{
|
|
63
|
+
zigbeeModel: ['AD-DimmableLight3001'],
|
|
64
|
+
model: '81810',
|
|
65
|
+
vendor: 'AduroSmart',
|
|
66
|
+
description: 'Zigbee Aduro Eria B22 bulb - warm white',
|
|
67
|
+
extend: extend.light_onoff_brightness(),
|
|
68
|
+
},
|
|
62
69
|
{
|
|
63
70
|
zigbeeModel: ['Adurolight_NCC'],
|
|
64
71
|
model: '81825',
|
package/devices/awox.js
CHANGED
package/devices/develco.js
CHANGED
|
@@ -91,14 +91,14 @@ const develco = {
|
|
|
91
91
|
type: ['attributeReport', 'readResponse'],
|
|
92
92
|
convert: (model, msg, publish, options, meta) => {
|
|
93
93
|
const result = {};
|
|
94
|
-
if (
|
|
95
|
-
const firmware = msg.data
|
|
94
|
+
if (msg.data.hasOwnProperty('develcoPrimarySwVersion')) {
|
|
95
|
+
const firmware = msg.data.develcoPrimarySwVersion.join('.');
|
|
96
96
|
result.current_firmware = firmware;
|
|
97
97
|
meta.device.softwareBuildID = firmware;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
if (
|
|
101
|
-
meta.device.hardwareVersion = msg.data
|
|
100
|
+
if (msg.data.hasOwnProperty('develcoPrimaryHwVersion')) {
|
|
101
|
+
meta.device.hardwareVersion = msg.data.develcoPrimaryHwVersion.join('.');
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
return result;
|
|
@@ -218,7 +218,7 @@ const develco = {
|
|
|
218
218
|
key: ['interface_mode'],
|
|
219
219
|
convertSet: async (entity, key, value, meta) => {
|
|
220
220
|
const payload = {'develcoInterfaceMode': utils.getKey(constants.develcoInterfaceMode, value, undefined, Number)};
|
|
221
|
-
await entity.write('seMetering', payload, manufacturerOptions
|
|
221
|
+
await entity.write('seMetering', payload, manufacturerOptions);
|
|
222
222
|
return {readAfterWriteTime: 200, state: {'interface_mode': value}};
|
|
223
223
|
},
|
|
224
224
|
convertGet: async (entity, key, meta) => {
|
|
@@ -379,7 +379,7 @@ module.exports = [
|
|
|
379
379
|
ota: ota.zigbeeOTA,
|
|
380
380
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
381
381
|
const endpoint = device.getEndpoint(2);
|
|
382
|
-
await endpoint.read('genBasic', [
|
|
382
|
+
await endpoint.read('genBasic', ['develcoPrimarySwVersion', 'develcoPrimaryHwVersion'], manufacturerOptions);
|
|
383
383
|
await reporting.bind(endpoint, coordinatorEndpoint, ['haElectricalMeasurement', 'seMetering']);
|
|
384
384
|
|
|
385
385
|
try {
|
|
@@ -424,7 +424,7 @@ module.exports = [
|
|
|
424
424
|
|
|
425
425
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'ssIasZone', 'ssIasWd', 'genBasic', 'genBinaryInput']);
|
|
426
426
|
await reporting.batteryVoltage(endpoint);
|
|
427
|
-
await endpoint.read('genBasic', [
|
|
427
|
+
await endpoint.read('genBasic', ['develcoPrimarySwVersion', 'develcoPrimaryHwVersion'], manufacturerOptions);
|
|
428
428
|
await endpoint.read('ssIasZone', ['iasCieAddr', 'zoneState', 'zoneId']);
|
|
429
429
|
await endpoint.read('genBinaryInput', ['reliability', 'statusFlags']);
|
|
430
430
|
await endpoint.read('ssIasWd', ['maxDuration']);
|
|
@@ -457,7 +457,7 @@ module.exports = [
|
|
|
457
457
|
|
|
458
458
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'ssIasZone', 'ssIasWd', 'genBasic', 'genBinaryInput']);
|
|
459
459
|
await reporting.batteryVoltage(endpoint);
|
|
460
|
-
await endpoint.read('genBasic', [
|
|
460
|
+
await endpoint.read('genBasic', ['develcoPrimarySwVersion'], manufacturerOptions);
|
|
461
461
|
await endpoint.read('ssIasZone', ['iasCieAddr', 'zoneState', 'zoneId']);
|
|
462
462
|
await endpoint.read('genBinaryInput', ['reliability', 'statusFlags']);
|
|
463
463
|
await endpoint.read('ssIasWd', ['maxDuration']);
|
|
@@ -519,7 +519,7 @@ module.exports = [
|
|
|
519
519
|
description: 'Motion sensor',
|
|
520
520
|
fromZigbee: [
|
|
521
521
|
fz.temperature, fz.illuminance, fz.ias_occupancy_alarm_1, fz.battery,
|
|
522
|
-
develco.fz.led_control, develco.fz.ias_occupancy_timeout,
|
|
522
|
+
develco.fz.led_control, develco.fz.ias_occupancy_timeout, develco.fz.firmware_version,
|
|
523
523
|
],
|
|
524
524
|
toZigbee: [develco.tz.led_control, develco.tz.ias_occupancy_timeout],
|
|
525
525
|
exposes: [
|
|
@@ -538,6 +538,7 @@ module.exports = [
|
|
|
538
538
|
await reporting.bind(endpoint35, coordinatorEndpoint, ['genPowerCfg']);
|
|
539
539
|
await reporting.batteryVoltage(endpoint35, {min: constants.repInterval.HOUR, max: 43200, change: 100});
|
|
540
540
|
try {
|
|
541
|
+
await endpoint35.read('genBasic', ['develcoPrimarySwVersion', 'develcoPrimaryHwVersion'], manufacturerOptions);
|
|
541
542
|
await endpoint35.read('ssIasZone', ['develcoAlarmOffDelay'], manufacturerOptions);
|
|
542
543
|
await endpoint35.read('genBasic', ['develcoLedControl'], manufacturerOptions);
|
|
543
544
|
} catch (error) {/* some reports of timeouts on reading these */}
|
|
@@ -682,7 +683,7 @@ module.exports = [
|
|
|
682
683
|
const endpoint = device.getEndpoint(43);
|
|
683
684
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'ssIasZone', 'ssIasWd', 'genBasic']);
|
|
684
685
|
await reporting.batteryVoltage(endpoint);
|
|
685
|
-
await endpoint.read('genBasic', [
|
|
686
|
+
await endpoint.read('genBasic', ['develcoPrimarySwVersion', 'develcoPrimaryHwVersion'], manufacturerOptions);
|
|
686
687
|
await endpoint.read('ssIasZone', ['iasCieAddr', 'zoneState', 'zoneId']);
|
|
687
688
|
await endpoint.read('ssIasWd', ['maxDuration']);
|
|
688
689
|
|
|
@@ -758,7 +759,7 @@ module.exports = [
|
|
|
758
759
|
const ep2 = device.getEndpoint(112);
|
|
759
760
|
await reporting.bind(ep2, coordinatorEndpoint, ['genBinaryInput', 'genBasic']);
|
|
760
761
|
await reporting.presentValue(ep2, {min: 0});
|
|
761
|
-
await ep2.read('genBasic', [
|
|
762
|
+
await ep2.read('genBasic', ['develcoPrimarySwVersion', 'develcoPrimaryHwVersion'], options);
|
|
762
763
|
|
|
763
764
|
const ep3 = device.getEndpoint(113);
|
|
764
765
|
await reporting.bind(ep3, coordinatorEndpoint, ['genBinaryInput']);
|
package/devices/fantem.js
CHANGED
|
@@ -9,10 +9,11 @@ const tuya = require('../lib/tuya');
|
|
|
9
9
|
|
|
10
10
|
module.exports = [
|
|
11
11
|
{
|
|
12
|
-
fingerprint: [{modelID: 'TS110F', manufacturerName: '_TZ3210_lfbz816s'}
|
|
12
|
+
fingerprint: [{modelID: 'TS110F', manufacturerName: '_TZ3210_lfbz816s'},
|
|
13
|
+
{modelID: 'TS110F', manufacturerName: '_TZ3210_ebbfkvoy'}],
|
|
13
14
|
model: 'ZB006-X',
|
|
14
15
|
vendor: 'Fantem',
|
|
15
|
-
description: 'Smart dimmer module
|
|
16
|
+
description: 'Smart dimmer module',
|
|
16
17
|
extend: extend.light_onoff_brightness({noConfigure: true}),
|
|
17
18
|
fromZigbee: [...extend.light_onoff_brightness({noConfigure: true}).fromZigbee,
|
|
18
19
|
fz.command_on, fz.command_off, fz.command_move, fz.command_stop, fz.ZB006X_settings],
|
package/devices/heiman.js
CHANGED
|
@@ -11,7 +11,7 @@ const tuya = require('../lib/tuya');
|
|
|
11
11
|
module.exports = [
|
|
12
12
|
{
|
|
13
13
|
fingerprint: [{modelID: 'TS0212', manufacturerName: '_TYZB01_wpmo3ja3'}],
|
|
14
|
-
zigbeeModel: ['CO_V15', 'CO_YDLV10', 'CO_V16', '1ccaa94c49a84abaa9e38687913947ba'],
|
|
14
|
+
zigbeeModel: ['CO_V15', 'CO_YDLV10', 'CO_V16', '1ccaa94c49a84abaa9e38687913947ba', 'CO_CTPG'],
|
|
15
15
|
model: 'HS1CA-M',
|
|
16
16
|
description: 'Smart carbon monoxide sensor',
|
|
17
17
|
vendor: 'HEIMAN',
|
|
@@ -104,7 +104,7 @@ module.exports = [
|
|
|
104
104
|
model: 'HS3CG',
|
|
105
105
|
vendor: 'HEIMAN',
|
|
106
106
|
description: 'Combustible gas sensor',
|
|
107
|
-
fromZigbee: [fz.
|
|
107
|
+
fromZigbee: [fz.ias_gas_alarm_2],
|
|
108
108
|
toZigbee: [],
|
|
109
109
|
exposes: [e.gas(), e.battery_low(), e.tamper()],
|
|
110
110
|
},
|
package/devices/inovelli.js
CHANGED
|
@@ -177,19 +177,19 @@ const ATTRIBUTES = {
|
|
|
177
177
|
ID: 13,
|
|
178
178
|
dataType: UINT8,
|
|
179
179
|
min: 0,
|
|
180
|
-
max:
|
|
180
|
+
max: 255,
|
|
181
181
|
description:
|
|
182
182
|
'Default level for the dimmer when it is turned on at the switch.' +
|
|
183
|
-
' A setting of
|
|
183
|
+
' A setting of 255 means that the switch will return to the level that it was on before it was turned off.',
|
|
184
184
|
},
|
|
185
185
|
defaultLevelRemote: {
|
|
186
186
|
ID: 14,
|
|
187
187
|
dataType: UINT8,
|
|
188
188
|
min: 0,
|
|
189
|
-
max:
|
|
189
|
+
max: 255,
|
|
190
190
|
description:
|
|
191
191
|
'Default level for the dimmer when it is turned on from the hub.' +
|
|
192
|
-
' A setting of
|
|
192
|
+
' A setting of 255 means that the switch will return to the level that it was on before it was turned off.',
|
|
193
193
|
},
|
|
194
194
|
stateAfterPowerRestored: {
|
|
195
195
|
ID: 15,
|
|
@@ -197,7 +197,7 @@ const ATTRIBUTES = {
|
|
|
197
197
|
min: 0,
|
|
198
198
|
max: 255,
|
|
199
199
|
description:
|
|
200
|
-
'The state the switch should return to when power is restored after power failure. 0 = off, 1-
|
|
200
|
+
'The state the switch should return to when power is restored after power failure. 0 = off, 1-254 = level, 255 = previous.',
|
|
201
201
|
},
|
|
202
202
|
loadLevelIndicatorTimeout: {
|
|
203
203
|
ID: 17,
|
|
@@ -225,12 +225,11 @@ const ATTRIBUTES = {
|
|
|
225
225
|
},
|
|
226
226
|
activePowerReports: {
|
|
227
227
|
ID: 18,
|
|
228
|
-
dataType:
|
|
228
|
+
dataType: UINT8,
|
|
229
229
|
min: 0,
|
|
230
|
-
max:
|
|
230
|
+
max: 100,
|
|
231
231
|
description:
|
|
232
|
-
'
|
|
233
|
-
'0 = disabled, 1-32767 = 0.1W-3276.7W.',
|
|
232
|
+
'Percent power level change that will result in a new power report being sent. 0 = Disabled',
|
|
234
233
|
},
|
|
235
234
|
periodicPowerAndEnergyReports: {
|
|
236
235
|
ID: 19,
|
|
@@ -256,6 +255,7 @@ const ATTRIBUTES = {
|
|
|
256
255
|
values: {'Non Neutral': 0, 'Neutral': 1},
|
|
257
256
|
min: 0,
|
|
258
257
|
max: 1,
|
|
258
|
+
readOnly: true,
|
|
259
259
|
description: 'Set the power type for the device.',
|
|
260
260
|
},
|
|
261
261
|
switchType: {
|
|
@@ -267,11 +267,13 @@ const ATTRIBUTES = {
|
|
|
267
267
|
max: 2,
|
|
268
268
|
description: 'Set the switch configuration.',
|
|
269
269
|
},
|
|
270
|
-
|
|
270
|
+
buttonDelay: {
|
|
271
271
|
ID: 50,
|
|
272
272
|
dataType: UINT8,
|
|
273
273
|
values: {
|
|
274
274
|
'0ms': 0,
|
|
275
|
+
'100ms': 1,
|
|
276
|
+
'200ms': 2,
|
|
275
277
|
'300ms': 3,
|
|
276
278
|
'400ms': 4,
|
|
277
279
|
'500ms': 5,
|
|
@@ -285,7 +287,7 @@ const ATTRIBUTES = {
|
|
|
285
287
|
max: 9,
|
|
286
288
|
description:
|
|
287
289
|
'This will set the button press delay. 0 = no delay (Disables Button Press Events),' +
|
|
288
|
-
'
|
|
290
|
+
'Default = 500ms.',
|
|
289
291
|
},
|
|
290
292
|
smartBulbMode: {
|
|
291
293
|
ID: 52,
|
|
@@ -610,7 +612,7 @@ const ATTRIBUTES = {
|
|
|
610
612
|
description:
|
|
611
613
|
'Intesity of LED strip when off. 101 = Syncronized with default all LED strip intensity parameter.',
|
|
612
614
|
},
|
|
613
|
-
|
|
615
|
+
doubleTapUpForFullBrightness: {
|
|
614
616
|
ID: 53,
|
|
615
617
|
dataType: BOOLEAN,
|
|
616
618
|
min: 0,
|
|
@@ -620,6 +622,16 @@ const ATTRIBUTES = {
|
|
|
620
622
|
'Button Press Event Only': 0,
|
|
621
623
|
'Button Press Event + Set Load to 100%': 1,
|
|
622
624
|
},
|
|
625
|
+
displayType: 'enum',
|
|
626
|
+
},
|
|
627
|
+
relayClick: {
|
|
628
|
+
ID: 261,
|
|
629
|
+
dataType: BOOLEAN,
|
|
630
|
+
min: 0,
|
|
631
|
+
max: 1,
|
|
632
|
+
description: 'Audible Click in On/Off mode.',
|
|
633
|
+
values: {'Enabled (Default)': 1, 'Disabled': 0},
|
|
634
|
+
displayType: 'enum',
|
|
623
635
|
},
|
|
624
636
|
};
|
|
625
637
|
|
|
@@ -644,11 +656,12 @@ tzLocal.inovelli_vzw31sn_parameters = {
|
|
|
644
656
|
manufacturerCode: INOVELLI,
|
|
645
657
|
});
|
|
646
658
|
|
|
647
|
-
meta.state[key] = value;
|
|
648
|
-
|
|
649
659
|
return {
|
|
650
660
|
state: {
|
|
651
|
-
[key]:
|
|
661
|
+
[key]:
|
|
662
|
+
ATTRIBUTES[key].displayType === 'enum' ?
|
|
663
|
+
ATTRIBUTES[key].values[value] :
|
|
664
|
+
value,
|
|
652
665
|
},
|
|
653
666
|
};
|
|
654
667
|
},
|
|
@@ -700,7 +713,7 @@ tzLocal.inovelli_vzw31sn_parameters_readOnly = {
|
|
|
700
713
|
};
|
|
701
714
|
|
|
702
715
|
tzLocal.inovelli_led_effect = {
|
|
703
|
-
key: ['
|
|
716
|
+
key: ['led_effect'],
|
|
704
717
|
convertSet: async (entity, key, values, meta) => {
|
|
705
718
|
await entity.command(
|
|
706
719
|
'manuSpecificInovelliVZM31SN',
|
|
@@ -718,7 +731,7 @@ tzLocal.inovelli_led_effect = {
|
|
|
718
731
|
};
|
|
719
732
|
|
|
720
733
|
tzLocal.inovelli_individual_led_effect = {
|
|
721
|
-
key: ['
|
|
734
|
+
key: ['individual_led_effect'],
|
|
722
735
|
convertSet: async (entity, key, values, meta) => {
|
|
723
736
|
await entity.command(
|
|
724
737
|
'manuSpecificInovelliVZM31SN',
|
|
@@ -807,7 +820,6 @@ const inovelliOnOffConvertSet = async (entity, key, value, meta) => {
|
|
|
807
820
|
*/
|
|
808
821
|
tzLocal.light_onoff_brightness_inovelli = {
|
|
809
822
|
key: ['state', 'brightness', 'brightness_percent'],
|
|
810
|
-
// options: [exposes.options.transition()], this is a setting on the device
|
|
811
823
|
convertSet: async (entity, key, value, meta) => {
|
|
812
824
|
const {message} = meta;
|
|
813
825
|
const transition = utils.getTransition(entity, 'brightness', meta);
|
|
@@ -1146,7 +1158,7 @@ Object.keys(ATTRIBUTES).forEach((key) => {
|
|
|
1146
1158
|
const enumE = exposes
|
|
1147
1159
|
.enum(
|
|
1148
1160
|
key,
|
|
1149
|
-
ATTRIBUTES[key].readOnly ? ea.
|
|
1161
|
+
ATTRIBUTES[key].readOnly ? ea.STATE_GET : ea.ALL,
|
|
1150
1162
|
Object.keys(ATTRIBUTES[key].values),
|
|
1151
1163
|
)
|
|
1152
1164
|
.withDescription(ATTRIBUTES[key].description);
|
|
@@ -1159,7 +1171,7 @@ Object.keys(ATTRIBUTES).forEach((key) => {
|
|
|
1159
1171
|
exposes
|
|
1160
1172
|
.binary(
|
|
1161
1173
|
key,
|
|
1162
|
-
ATTRIBUTES[key].readOnly ? ea.
|
|
1174
|
+
ATTRIBUTES[key].readOnly ? ea.STATE_GET : ea.ALL,
|
|
1163
1175
|
ATTRIBUTES[key].values.Enabled,
|
|
1164
1176
|
ATTRIBUTES[key].values.Disabled,
|
|
1165
1177
|
)
|
|
@@ -1167,7 +1179,7 @@ Object.keys(ATTRIBUTES).forEach((key) => {
|
|
|
1167
1179
|
);
|
|
1168
1180
|
} else {
|
|
1169
1181
|
const numeric = exposes
|
|
1170
|
-
.numeric(key, ATTRIBUTES[key].readOnly ? ea.
|
|
1182
|
+
.numeric(key, ATTRIBUTES[key].readOnly ? ea.STATE_GET : ea.ALL)
|
|
1171
1183
|
.withValueMin(ATTRIBUTES[key].min)
|
|
1172
1184
|
.withValueMax(ATTRIBUTES[key].max);
|
|
1173
1185
|
|
|
@@ -1206,20 +1218,26 @@ module.exports = [
|
|
|
1206
1218
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1207
1219
|
const endpoint = device.getEndpoint(1);
|
|
1208
1220
|
await reporting.bind(endpoint, coordinatorEndpoint, [
|
|
1209
|
-
'
|
|
1210
|
-
'
|
|
1221
|
+
'seMetering',
|
|
1222
|
+
'haElectricalMeasurement',
|
|
1211
1223
|
]);
|
|
1212
|
-
|
|
1213
1224
|
// Bind for Button Event Reporting
|
|
1214
1225
|
const endpoint2 = device.getEndpoint(2);
|
|
1215
1226
|
await reporting.bind(endpoint2, coordinatorEndpoint, [
|
|
1216
1227
|
'manuSpecificInovelliVZM31SN',
|
|
1217
1228
|
]);
|
|
1229
|
+
await endpoint.read('haElectricalMeasurement', [
|
|
1230
|
+
'acPowerMultiplier',
|
|
1231
|
+
'acPowerDivisor',
|
|
1232
|
+
]);
|
|
1233
|
+
await reporting.readMeteringMultiplierDivisor(endpoint);
|
|
1218
1234
|
|
|
1219
|
-
await reporting.
|
|
1220
|
-
await reporting.
|
|
1221
|
-
|
|
1222
|
-
|
|
1235
|
+
await reporting.activePower(endpoint, {min: 1, max: 3600, change: 1});
|
|
1236
|
+
await reporting.currentSummDelivered(endpoint, {
|
|
1237
|
+
min: 1,
|
|
1238
|
+
max: 3600,
|
|
1239
|
+
change: 0,
|
|
1240
|
+
});
|
|
1223
1241
|
},
|
|
1224
1242
|
},
|
|
1225
1243
|
];
|
package/devices/lidl.js
CHANGED
|
@@ -716,7 +716,8 @@ module.exports = [
|
|
|
716
716
|
},
|
|
717
717
|
},
|
|
718
718
|
{
|
|
719
|
-
fingerprint: [{modelID: 'TS0502A', manufacturerName: '_TZ3000_rylaozuc'}
|
|
719
|
+
fingerprint: [{modelID: 'TS0502A', manufacturerName: '_TZ3000_rylaozuc'},
|
|
720
|
+
{modelID: 'TS0502A', manufacturerName: '_TZ3000_5fkufhn1'}],
|
|
720
721
|
model: '14147206L',
|
|
721
722
|
vendor: 'Lidl',
|
|
722
723
|
description: 'Livarno Lux ceiling light',
|
package/devices/lonsonho.js
CHANGED
|
@@ -260,7 +260,7 @@ module.exports = [
|
|
|
260
260
|
extend: extend.light_onoff_brightness(),
|
|
261
261
|
},
|
|
262
262
|
{
|
|
263
|
-
fingerprint: [{modelID: 'TS110E', manufacturerName: '_TZ3210_wdexaypg'}],
|
|
263
|
+
fingerprint: [{modelID: 'TS110E', manufacturerName: '_TZ3210_wdexaypg'}, {modelID: 'TS110E', manufacturerName: '_TZ3210_3mpwqzuu'}],
|
|
264
264
|
model: 'TS110E_2gang',
|
|
265
265
|
vendor: 'Lonsonho',
|
|
266
266
|
description: 'Zigbee smart dimmer module 2 gang with neutral',
|
package/devices/mecrator.js
CHANGED
|
@@ -81,7 +81,7 @@ module.exports = [
|
|
|
81
81
|
},
|
|
82
82
|
{
|
|
83
83
|
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3210_pfbzs1an'}],
|
|
84
|
-
model: '
|
|
84
|
+
model: 'SPPUSB02',
|
|
85
85
|
vendor: 'Mercator',
|
|
86
86
|
description: 'Ikuü double power point with USB',
|
|
87
87
|
fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, fz.ignore_basic_report, fz.tuya_switch_power_outage_memory],
|
package/devices/moes.js
CHANGED
|
@@ -8,78 +8,10 @@ const extend = require('../lib/extend');
|
|
|
8
8
|
const e = exposes.presets;
|
|
9
9
|
const ea = exposes.access;
|
|
10
10
|
const zosung = require('../lib/zosung');
|
|
11
|
-
const utils = require('../lib/utils');
|
|
12
11
|
const fzZosung = zosung.fzZosung;
|
|
13
12
|
const tzZosung = zosung.tzZosung;
|
|
14
13
|
const ez = zosung.presetsZosung;
|
|
15
14
|
|
|
16
|
-
const fzLocal = {
|
|
17
|
-
ZSEUD: {
|
|
18
|
-
cluster: 'manuSpecificTuya',
|
|
19
|
-
type: ['commandDataResponse', 'commandDataReport'],
|
|
20
|
-
convert: async (model, msg, publish, options, meta) => {
|
|
21
|
-
const result = {};
|
|
22
|
-
for (const dpValue of msg.data.dpValues) {
|
|
23
|
-
const dp = dpValue.dp;
|
|
24
|
-
const value = tuya.getDataValue(dpValue);
|
|
25
|
-
switch (dp) {
|
|
26
|
-
case 1:
|
|
27
|
-
result.state_l1 = value ? 'ON' : 'OFF';
|
|
28
|
-
break;
|
|
29
|
-
case 2:
|
|
30
|
-
result.brightness_l1 = utils.mapNumberRange(value, 0, 1000, 0, 254);
|
|
31
|
-
break;
|
|
32
|
-
case 7:
|
|
33
|
-
result.state_l2 = value ? 'ON' : 'OFF';
|
|
34
|
-
break;
|
|
35
|
-
case 8:
|
|
36
|
-
result.brightness_l2 = utils.mapNumberRange(value, 0, 1000, 0, 254);
|
|
37
|
-
break;
|
|
38
|
-
default:
|
|
39
|
-
meta.logger.warn(`zigbee-herdsman-converters:ZSEUD: NOT RECOGNIZED DP #${dp} with data ${JSON.stringify(dpValue)}`);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return result;
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
const tzLocal = {
|
|
48
|
-
ZSEUD_state: {
|
|
49
|
-
key: ['state'],
|
|
50
|
-
convertSet: async (entity, key, value, meta) => {
|
|
51
|
-
const lookup = {l1: 1, l2: 7};
|
|
52
|
-
const dp = lookup[meta.endpoint_name];
|
|
53
|
-
await tuya.sendDataPointBool(entity, dp, value === 'ON');
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
ZSEUD_brightness: {
|
|
57
|
-
key: ['brightness'],
|
|
58
|
-
convertSet: async (entity, key, value, meta) => {
|
|
59
|
-
const lookup = {l1: 2, l2: 8};
|
|
60
|
-
const dp = lookup[meta.endpoint_name];
|
|
61
|
-
|
|
62
|
-
if (key == 'brightness') {
|
|
63
|
-
// upscale to 1000
|
|
64
|
-
if (value >= 0 && value <= 254) {
|
|
65
|
-
const newValue = utils.mapNumberRange(value, 0, 254, 0, 1000);
|
|
66
|
-
// Always use same transid as tuya_dimmer_state (https://github.com/Koenkk/zigbee2mqtt/issues/6366)
|
|
67
|
-
if (meta.state[`state_${meta.endpoint_name}`] === 'ON') {
|
|
68
|
-
await tuya.sendDataPointValue(entity, dp, newValue, 'dataRequest', 1);
|
|
69
|
-
} else {
|
|
70
|
-
await tuya.sendDataPoints(entity, [tuya.dpValueFromBool(dp-1, true), tuya.dpValueFromIntValue(dp, newValue)],
|
|
71
|
-
'dataRequest', 1);
|
|
72
|
-
}
|
|
73
|
-
} else {
|
|
74
|
-
throw new Error('Dimmer brightness is out of range 0..254');
|
|
75
|
-
}
|
|
76
|
-
} else {
|
|
77
|
-
meta.logger.warn(`ZSEUD TZ unsupported key=${key} value=${value}`);
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
};
|
|
82
|
-
|
|
83
15
|
const exposesLocal = {
|
|
84
16
|
hour: (name) => exposes.numeric(name, ea.STATE_SET).withUnit('h').withValueMin(0).withValueMax(23),
|
|
85
17
|
minute: (name) => exposes.numeric(name, ea.STATE_SET).withUnit('m').withValueMin(0).withValueMax(59),
|
|
@@ -369,7 +301,7 @@ module.exports = [
|
|
|
369
301
|
exposes: [
|
|
370
302
|
e.battery(), e.child_lock(), e.eco_mode(), e.eco_temperature(), e.max_temperature().withValueMax(45), e.min_temperature(),
|
|
371
303
|
e.valve_state(), e.position(), e.window_detection(),
|
|
372
|
-
exposes.binary('window', ea.STATE, '
|
|
304
|
+
exposes.binary('window', ea.STATE, 'OPEN', 'CLOSED').withDescription('Window status closed or open '),
|
|
373
305
|
exposes.climate()
|
|
374
306
|
.withLocalTemperature(ea.STATE).withSetpoint('current_heating_setpoint', 5, 35, 0.5, ea.STATE_SET)
|
|
375
307
|
.withLocalTemperatureCalibration(-9, 9, 1, ea.STATE_SET)
|
|
@@ -391,24 +323,6 @@ module.exports = [
|
|
|
391
323
|
exposes.numeric('boost_heating_countdown_time_set', ea.STATE_SET).withUnit('second')
|
|
392
324
|
.withDescription('Boost Time Setting 100 sec - 900 sec, (default = 300 sec)').withValueMin(100).withValueMax(900)],
|
|
393
325
|
},
|
|
394
|
-
{
|
|
395
|
-
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_fjjbhx9d'}],
|
|
396
|
-
model: 'ZS-EUD',
|
|
397
|
-
vendor: 'Moes',
|
|
398
|
-
description: '2 gang light dimmer switch',
|
|
399
|
-
fromZigbee: [fzLocal.ZSEUD, fz.ignore_basic_report],
|
|
400
|
-
toZigbee: [tzLocal.ZSEUD_brightness, tzLocal.ZSEUD_state],
|
|
401
|
-
meta: {turnsOffAtBrightness1: true, multiEndpoint: true},
|
|
402
|
-
configure: async (device, coordinatorEndpoint, logger) => {
|
|
403
|
-
await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
|
|
404
|
-
if (device.getEndpoint(2)) await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
|
|
405
|
-
},
|
|
406
|
-
exposes: [e.light_brightness().withEndpoint('l1').setAccess('state', ea.STATE_SET).setAccess('brightness', ea.STATE_SET),
|
|
407
|
-
e.light_brightness().withEndpoint('l2').setAccess('state', ea.STATE_SET).setAccess('brightness', ea.STATE_SET)],
|
|
408
|
-
endpoint: (device) => {
|
|
409
|
-
return {'l1': 1, 'l2': 1};
|
|
410
|
-
},
|
|
411
|
-
},
|
|
412
326
|
{
|
|
413
327
|
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_e3oitdyu'}],
|
|
414
328
|
model: 'MS-105B',
|
package/devices/philips.js
CHANGED
|
@@ -2842,10 +2842,24 @@ module.exports = [
|
|
|
2842
2842
|
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
|
|
2843
2843
|
},
|
|
2844
2844
|
{
|
|
2845
|
-
zigbeeModel: ['
|
|
2845
|
+
zigbeeModel: ['929003048301_01', '929003048301_02', '929003048301_03', '929003048301_04'],
|
|
2846
2846
|
model: '8719514339163',
|
|
2847
2847
|
vendor: 'Philips',
|
|
2848
2848
|
description: 'Hue white ambiance Buckram quadruple spotlight with Bluetooth',
|
|
2849
2849
|
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
|
|
2850
2850
|
},
|
|
2851
|
+
{
|
|
2852
|
+
zigbeeModel: ['929003048101_01', '929003048101_02', '929003048101_03'],
|
|
2853
|
+
model: '8719514339125',
|
|
2854
|
+
vendor: 'Philips',
|
|
2855
|
+
description: 'Hue white ambiance Buckram triple spotlight with Bluetooth',
|
|
2856
|
+
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
|
|
2857
|
+
},
|
|
2858
|
+
{
|
|
2859
|
+
zigbeeModel: ['929003047901_01', '929003047901_02'],
|
|
2860
|
+
model: '871951433908',
|
|
2861
|
+
vendor: 'Philips',
|
|
2862
|
+
description: 'Hue white ambiance Buckram double spotlight with Bluetooth',
|
|
2863
|
+
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
|
|
2864
|
+
},
|
|
2851
2865
|
];
|
package/devices/robb.js
CHANGED
|
@@ -209,18 +209,22 @@ module.exports = [
|
|
|
209
209
|
model: 'ROB_200-017-0',
|
|
210
210
|
vendor: 'ROBB',
|
|
211
211
|
description: 'Zigbee smart plug',
|
|
212
|
-
fromZigbee: [fz.electrical_measurement, fz.on_off, fz.ignore_genLevelCtrl_report, fz.metering],
|
|
212
|
+
fromZigbee: [fz.electrical_measurement, fz.on_off, fz.ignore_genLevelCtrl_report, fz.metering, fz.temperature],
|
|
213
213
|
toZigbee: [tz.on_off],
|
|
214
214
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
215
215
|
const endpoint = device.getEndpoint(1);
|
|
216
|
-
await reporting.bind(endpoint, coordinatorEndpoint,
|
|
216
|
+
await reporting.bind(endpoint, coordinatorEndpoint,
|
|
217
|
+
['genOnOff', 'haElectricalMeasurement', 'seMetering', 'msTemperatureMeasurement']);
|
|
217
218
|
await reporting.onOff(endpoint);
|
|
218
219
|
await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
|
|
220
|
+
await reporting.readMeteringMultiplierDivisor(endpoint);
|
|
219
221
|
await reporting.rmsVoltage(endpoint);
|
|
220
222
|
await reporting.rmsCurrent(endpoint);
|
|
221
223
|
await reporting.activePower(endpoint);
|
|
224
|
+
await reporting.temperature(endpoint);
|
|
225
|
+
await reporting.currentSummDelivered(endpoint);
|
|
222
226
|
},
|
|
223
|
-
exposes: [e.power(), e.current(), e.voltage().withAccess(ea.STATE), e.switch(), e.energy()],
|
|
227
|
+
exposes: [e.power(), e.current(), e.voltage().withAccess(ea.STATE), e.switch(), e.energy(), e.temperature()],
|
|
224
228
|
},
|
|
225
229
|
{
|
|
226
230
|
zigbeeModel: ['ROB_200-017-1'],
|
package/devices/sercomm.js
CHANGED
|
@@ -120,4 +120,21 @@ module.exports = [
|
|
|
120
120
|
},
|
|
121
121
|
exposes: [e.occupancy(), e.battery_low(), e.tamper(), e.battery()],
|
|
122
122
|
},
|
|
123
|
+
{
|
|
124
|
+
zigbeeModel: ['SZ-PIR04N', 'SZ-PIR04N_EU'],
|
|
125
|
+
model: 'SZ-PIR04N',
|
|
126
|
+
vendor: 'Sercomm',
|
|
127
|
+
description: 'PIR motion & temperature sensor',
|
|
128
|
+
fromZigbee: [fz.ias_occupancy_alarm_1, fz.illuminance, fz.temperature, fz.battery],
|
|
129
|
+
toZigbee: [],
|
|
130
|
+
meta: {battery: {voltageToPercent: '3V_2500_3200'}},
|
|
131
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
132
|
+
const endpoint = device.getEndpoint(1);
|
|
133
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['msIlluminanceMeasurement', 'msTemperatureMeasurement', 'genPowerCfg']);
|
|
134
|
+
await reporting.illuminance(endpoint);
|
|
135
|
+
await reporting.temperature(endpoint);
|
|
136
|
+
await reporting.batteryVoltage(endpoint);
|
|
137
|
+
},
|
|
138
|
+
exposes: [e.occupancy(), e.tamper(), e.illuminance(), e.temperature(), e.battery(), e.battery_voltage()],
|
|
139
|
+
},
|
|
123
140
|
];
|
package/devices/tuya.js
CHANGED
|
@@ -1172,7 +1172,7 @@ module.exports = [
|
|
|
1172
1172
|
fingerprint: tuya.fingerprint('TS0601', ['_TZE200_ip2akl4w', '_TZE200_1agwnems', '_TZE200_la2c2uo9', '_TZE200_579lguh2']),
|
|
1173
1173
|
model: 'TS0601_dimmer_1',
|
|
1174
1174
|
vendor: 'TuYa',
|
|
1175
|
-
description: '
|
|
1175
|
+
description: '1 gang smart dimmer',
|
|
1176
1176
|
fromZigbee: [tuya.fzDataPoints],
|
|
1177
1177
|
toZigbee: [tuya.tzDataPoints],
|
|
1178
1178
|
configure: tuya.configureMagicPacket,
|
|
@@ -1192,6 +1192,60 @@ module.exports = [
|
|
|
1192
1192
|
whiteLabel: [
|
|
1193
1193
|
{vendor: 'Moes', model: 'MS-105Z'},
|
|
1194
1194
|
{vendor: 'Lerlink', model: 'X706U'},
|
|
1195
|
+
{vendor: 'Moes', model: 'ZS-EUD_1gang'},
|
|
1196
|
+
],
|
|
1197
|
+
},
|
|
1198
|
+
{
|
|
1199
|
+
fingerprint: tuya.fingerprint('TS0601', ['_TZE200_fjjbhx9d']),
|
|
1200
|
+
model: 'TS0601_dimmer_2',
|
|
1201
|
+
vendor: 'TuYa',
|
|
1202
|
+
description: '2 gang smart dimmer',
|
|
1203
|
+
fromZigbee: [tuya.fzDataPoints],
|
|
1204
|
+
toZigbee: [tuya.tzDataPoints],
|
|
1205
|
+
configure: tuya.configureMagicPacket,
|
|
1206
|
+
exposes: [tuya.exposes.lightBrightness().withEndpoint('l1'), tuya.exposes.lightBrightness().withEndpoint('l2')],
|
|
1207
|
+
meta: {
|
|
1208
|
+
multiEndpoint: true,
|
|
1209
|
+
tuyaDatapoints: [
|
|
1210
|
+
[1, 'state_l1', tuya.valueConverter.onOff, {skip: tuya.skip.stateOnAndBrightnessPresent}],
|
|
1211
|
+
[2, 'brightness_l1', tuya.valueConverter.scale0_254to0_1000],
|
|
1212
|
+
[7, 'state_l2', tuya.valueConverter.onOff, {skip: tuya.skip.stateOnAndBrightnessPresent}],
|
|
1213
|
+
[8, 'brightness_l2', tuya.valueConverter.scale0_254to0_1000],
|
|
1214
|
+
],
|
|
1215
|
+
},
|
|
1216
|
+
endpoint: (device) => {
|
|
1217
|
+
return {'l1': 1, 'l2': 1};
|
|
1218
|
+
},
|
|
1219
|
+
whiteLabel: [
|
|
1220
|
+
{vendor: 'Moes', model: 'ZS-EUD_2gang'},
|
|
1221
|
+
],
|
|
1222
|
+
},
|
|
1223
|
+
{
|
|
1224
|
+
fingerprint: tuya.fingerprint('TS0601', ['_TZE200_vm1gyrso']),
|
|
1225
|
+
model: 'TS0601_dimmer_3',
|
|
1226
|
+
vendor: 'TuYa',
|
|
1227
|
+
description: '3 gang smart dimmer',
|
|
1228
|
+
fromZigbee: [tuya.fzDataPoints],
|
|
1229
|
+
toZigbee: [tuya.tzDataPoints],
|
|
1230
|
+
configure: tuya.configureMagicPacket,
|
|
1231
|
+
exposes: [tuya.exposes.lightBrightness().withEndpoint('l1'), tuya.exposes.lightBrightness().withEndpoint('l2'),
|
|
1232
|
+
tuya.exposes.lightBrightness().withEndpoint('l3')],
|
|
1233
|
+
meta: {
|
|
1234
|
+
multiEndpoint: true,
|
|
1235
|
+
tuyaDatapoints: [
|
|
1236
|
+
[1, 'state_l1', tuya.valueConverter.onOff, {skip: tuya.skip.stateOnAndBrightnessPresent}],
|
|
1237
|
+
[2, 'brightness_l1', tuya.valueConverter.scale0_254to0_1000],
|
|
1238
|
+
[7, 'state_l2', tuya.valueConverter.onOff, {skip: tuya.skip.stateOnAndBrightnessPresent}],
|
|
1239
|
+
[8, 'brightness_l2', tuya.valueConverter.scale0_254to0_1000],
|
|
1240
|
+
[15, 'state_l3', tuya.valueConverter.onOff, {skip: tuya.skip.stateOnAndBrightnessPresent}],
|
|
1241
|
+
[16, 'brightness_l3', tuya.valueConverter.scale0_254to0_1000],
|
|
1242
|
+
],
|
|
1243
|
+
},
|
|
1244
|
+
endpoint: (device) => {
|
|
1245
|
+
return {'l1': 1, 'l2': 1, 'l3': 1};
|
|
1246
|
+
},
|
|
1247
|
+
whiteLabel: [
|
|
1248
|
+
{vendor: 'Moes', model: 'ZS-EUD_3gang'},
|
|
1195
1249
|
],
|
|
1196
1250
|
},
|
|
1197
1251
|
{
|
|
@@ -1332,7 +1386,10 @@ module.exports = [
|
|
|
1332
1386
|
},
|
|
1333
1387
|
},
|
|
1334
1388
|
{
|
|
1335
|
-
fingerprint: [
|
|
1389
|
+
fingerprint: [
|
|
1390
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_nkjintbl'},
|
|
1391
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_ji1gn7rw'},
|
|
1392
|
+
],
|
|
1336
1393
|
model: 'TS0601_switch_2_gang',
|
|
1337
1394
|
vendor: 'TuYa',
|
|
1338
1395
|
description: '2 gang switch',
|
|
@@ -1521,9 +1578,7 @@ module.exports = [
|
|
|
1521
1578
|
},
|
|
1522
1579
|
},
|
|
1523
1580
|
{
|
|
1524
|
-
fingerprint: [
|
|
1525
|
-
{modelID: 'TS0201', manufacturerName: '_TZ3000_dowj6gyi'},
|
|
1526
|
-
],
|
|
1581
|
+
fingerprint: tuya.fingerprint('TS0201', ['_TZ3000_dowj6gyi', '_TZ3000_8ybe88nf']),
|
|
1527
1582
|
model: 'IH-K009',
|
|
1528
1583
|
vendor: 'TuYa',
|
|
1529
1584
|
description: 'Temperature & humidity sensor',
|
|
@@ -1822,14 +1877,16 @@ module.exports = [
|
|
|
1822
1877
|
e.switch().withEndpoint('l1'),
|
|
1823
1878
|
e.switch().withEndpoint('l2'),
|
|
1824
1879
|
e.switch().withEndpoint('l3'),
|
|
1825
|
-
|
|
1826
|
-
|
|
1880
|
+
e.power_on_behavior(),
|
|
1881
|
+
e.switch_type_2(),
|
|
1827
1882
|
],
|
|
1828
1883
|
endpoint: (device) => {
|
|
1829
1884
|
return {'l1': 1, 'l2': 2, 'l3': 3};
|
|
1830
1885
|
},
|
|
1831
1886
|
meta: {multiEndpoint: true},
|
|
1832
1887
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1888
|
+
await device.getEndpoint(1).read('genBasic',
|
|
1889
|
+
['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
1833
1890
|
await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
|
|
1834
1891
|
await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
|
|
1835
1892
|
await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
|
|
@@ -1848,14 +1905,16 @@ module.exports = [
|
|
|
1848
1905
|
e.switch().withEndpoint('l2'),
|
|
1849
1906
|
e.switch().withEndpoint('l3'),
|
|
1850
1907
|
e.switch().withEndpoint('l4'),
|
|
1851
|
-
|
|
1852
|
-
|
|
1908
|
+
e.power_on_behavior(),
|
|
1909
|
+
e.switch_type_2(),
|
|
1853
1910
|
],
|
|
1854
1911
|
endpoint: (device) => {
|
|
1855
1912
|
return {'l1': 1, 'l2': 2, 'l3': 3, 'l4': 4};
|
|
1856
1913
|
},
|
|
1857
1914
|
meta: {multiEndpoint: true},
|
|
1858
1915
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1916
|
+
await device.getEndpoint(1).read('genBasic',
|
|
1917
|
+
['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
1859
1918
|
await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
|
|
1860
1919
|
await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
|
|
1861
1920
|
await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
|
|
@@ -1955,6 +2014,7 @@ module.exports = [
|
|
|
1955
2014
|
{vendor: 'SHOJZJ', model: '378RT'},
|
|
1956
2015
|
{vendor: 'Silvercrest', model: 'TVR01'},
|
|
1957
2016
|
{vendor: 'Immax', model: '07732B'},
|
|
2017
|
+
{vendor: 'Evolveo', model: 'Heat M30'},
|
|
1958
2018
|
],
|
|
1959
2019
|
meta: {tuyaThermostatPreset: tuya.thermostatPresets, tuyaThermostatSystemMode: tuya.thermostatSystemModes3},
|
|
1960
2020
|
ota: ota.zigbeeOTA,
|
package/devices/villeroy_boch.js
CHANGED
|
@@ -5,7 +5,14 @@ module.exports = [
|
|
|
5
5
|
zigbeeModel: ['5991711'],
|
|
6
6
|
model: 'C5850000',
|
|
7
7
|
vendor: 'Villeroy & Boch',
|
|
8
|
-
description: 'Subway 3.0 Zigbee home
|
|
8
|
+
description: 'Subway 3.0 Zigbee home automation kit',
|
|
9
|
+
extend: extend.light_onoff_brightness_colortemp({colorTempRange: [160, 450]}),
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
zigbeeModel: ['EC1300'],
|
|
13
|
+
model: 'C0040000',
|
|
14
|
+
vendor: 'Villeroy & Boch',
|
|
15
|
+
description: 'Zigbee home automation kit for mirror',
|
|
9
16
|
extend: extend.light_onoff_brightness_colortemp({colorTempRange: [160, 450]}),
|
|
10
17
|
},
|
|
11
18
|
];
|
package/lib/ota/OTA_URLs.md
CHANGED
|
@@ -18,6 +18,20 @@ https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/OTA-Image-Types---
|
|
|
18
18
|
|
|
19
19
|
Dresden Elektronik also provide third-party OTA firmware images and external URLs for many third-party Zigbee OTA firmware images.
|
|
20
20
|
|
|
21
|
+
### Inovelli OTA Firmware provider
|
|
22
|
+
|
|
23
|
+
Inovelli Zigbee OTA firmware images are made publicly available by Inovelli (first-party) at the following URLs:
|
|
24
|
+
|
|
25
|
+
https://files.inovelli.com/firmware/firmware.json
|
|
26
|
+
|
|
27
|
+
https://files.inovelli.com/firmware
|
|
28
|
+
|
|
29
|
+
### Sonoff OTA Firmware provider
|
|
30
|
+
|
|
31
|
+
Sonoff Zigbee OTA firmware images are made publicly available by Sonoff (first-party) at the following URLs:
|
|
32
|
+
|
|
33
|
+
https://zigbee-ota.sonoff.tech/releases/upgrade.json
|
|
34
|
+
|
|
21
35
|
### EUROTRONICS
|
|
22
36
|
|
|
23
37
|
EUROTRONICS Zigbee OTA firmware images are made publicly available by EUROTRONIC Technology (first-party) at the following URL:
|
package/lib/tuya.js
CHANGED
|
@@ -1141,9 +1141,14 @@ const tuyaExposes = {
|
|
|
1141
1141
|
.withDescription('Controls the behavior when the device is powered on'),
|
|
1142
1142
|
lightType: () => exposes.enum('light_type', ea.STATE_SET, ['led', 'incandescent', 'halogen'])
|
|
1143
1143
|
.withDescription('Type of light attached to the device'),
|
|
1144
|
-
lightBrightnessWithMinMax: () => e.light_brightness().withMinBrightness().withMaxBrightness()
|
|
1145
|
-
|
|
1146
|
-
|
|
1144
|
+
lightBrightnessWithMinMax: () => e.light_brightness().withMinBrightness().withMaxBrightness()
|
|
1145
|
+
.setAccess('state', ea.STATE_SET)
|
|
1146
|
+
.setAccess('brightness', ea.STATE_SET)
|
|
1147
|
+
.setAccess('min_brightness', ea.STATE_SET)
|
|
1148
|
+
.setAccess('max_brightness', ea.STATE_SET),
|
|
1149
|
+
lightBrightness: () => e.light_brightness()
|
|
1150
|
+
.setAccess('state', ea.STATE_SET)
|
|
1151
|
+
.setAccess('brightness', ea.STATE_SET),
|
|
1147
1152
|
countdown: () => exposes.numeric('countdown', ea.STATE_SET).withValueMin(0).withValueMax(43200).withValueStep(1).withUnit('s')
|
|
1148
1153
|
.withDescription('Countdown to turn device off after a certain time'),
|
|
1149
1154
|
switch: () => e.switch().setAccess('state', ea.STATE_SET),
|
|
@@ -1235,7 +1240,7 @@ const tzDataPoints = {
|
|
|
1235
1240
|
} else {
|
|
1236
1241
|
throw new Error(`Don't know how to send type '${typeof convertedValue}'`);
|
|
1237
1242
|
}
|
|
1238
|
-
state[
|
|
1243
|
+
state[key] = value;
|
|
1239
1244
|
}
|
|
1240
1245
|
return {state};
|
|
1241
1246
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zigbee-herdsman-converters",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.645",
|
|
4
4
|
"description": "Collection of device converters to be used with zigbee-herdsman",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"files": [
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
},
|
|
35
35
|
"homepage": "https://github.com/Koenkk/zigbee-herdsman-converters",
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"axios": "^1.1.
|
|
37
|
+
"axios": "^1.1.3",
|
|
38
38
|
"buffer-crc32": "^0.2.13",
|
|
39
39
|
"https-proxy-agent": "^5.0.1",
|
|
40
40
|
"tar-stream": "^2.2.0",
|