zigbee-herdsman-converters 14.0.578 → 14.0.579
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/ajax_online.js +8 -0
- package/devices/bitron.js +5 -1
- package/devices/legrand.js +18 -0
- package/devices/mecrator.js +24 -0
- package/devices/philips.js +1 -1
- package/devices/plugwise.js +23 -0
- package/devices/tuya.js +2 -1
- package/devices/xiaomi.js +15 -0
- package/lib/xiaomi.js +3 -4
- package/package.json +1 -1
package/devices/ajax_online.js
CHANGED
|
@@ -30,4 +30,12 @@ module.exports = [
|
|
|
30
30
|
description: 'Smart Zigbee pro 12W A60 RGBCW bulb',
|
|
31
31
|
extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
32
32
|
},
|
|
33
|
+
{
|
|
34
|
+
fingerprint: [{modelID: 'TS0505B', manufacturerName: '_TZ3210_hzy4rjz3'}],
|
|
35
|
+
model: 'AJ_RGBCCT_CTRL',
|
|
36
|
+
vendor: 'Ajax Online',
|
|
37
|
+
description: 'Smart Zigbee LED strip RGB+CCT',
|
|
38
|
+
extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500], disableColorTempStartup: true}),
|
|
39
|
+
meta: {applyRedFix: true, enhancedHue: false},
|
|
40
|
+
},
|
|
33
41
|
];
|
package/devices/bitron.js
CHANGED
|
@@ -136,7 +136,11 @@ module.exports = [
|
|
|
136
136
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']);
|
|
137
137
|
await reporting.instantaneousDemand(endpoint);
|
|
138
138
|
await reporting.currentSummDelivered(endpoint);
|
|
139
|
-
|
|
139
|
+
try {
|
|
140
|
+
await reporting.currentSummReceived(endpoint);
|
|
141
|
+
} catch (error) {
|
|
142
|
+
/* fails for some: https://github.com/Koenkk/zigbee2mqtt/issues/13258 */
|
|
143
|
+
}
|
|
140
144
|
endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 10000, multiplier: 1});
|
|
141
145
|
},
|
|
142
146
|
},
|
package/devices/legrand.js
CHANGED
|
@@ -266,6 +266,24 @@ module.exports = [
|
|
|
266
266
|
// Read configuration values that are not sent periodically as well as current power (activePower).
|
|
267
267
|
await endpoint.read('haElectricalMeasurement', ['activePower', 0xf000, 0xf001, 0xf002]);
|
|
268
268
|
},
|
|
269
|
+
onEvent: async (type, data, device, options, state) => {
|
|
270
|
+
/**
|
|
271
|
+
* The DIN power consumption module loses the configure reporting
|
|
272
|
+
* after device restart/powerloss.
|
|
273
|
+
*
|
|
274
|
+
* We reconfigure the reporting at deviceAnnounce.
|
|
275
|
+
*/
|
|
276
|
+
if (type === 'deviceAnnounce') {
|
|
277
|
+
for (const endpoint of device.endpoints) {
|
|
278
|
+
for (const c of endpoint.configuredReportings) {
|
|
279
|
+
await endpoint.configureReporting(c.cluster.name, [{
|
|
280
|
+
attribute: c.attribute.name, minimumReportInterval: c.minimumReportInterval,
|
|
281
|
+
maximumReportInterval: c.maximumReportInterval, reportableChange: c.reportableChange,
|
|
282
|
+
}]);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
},
|
|
269
287
|
},
|
|
270
288
|
{
|
|
271
289
|
zigbeeModel: ['Remote switch Wake up / Sleep'],
|
package/devices/mecrator.js
CHANGED
|
@@ -6,6 +6,30 @@ const e = exposes.presets;
|
|
|
6
6
|
const ea = exposes.access;
|
|
7
7
|
|
|
8
8
|
module.exports = [
|
|
9
|
+
{
|
|
10
|
+
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3210_yvxjawlt'}],
|
|
11
|
+
model: 'SPP04G',
|
|
12
|
+
vendor: 'Mercator',
|
|
13
|
+
description: 'Ikuü Quad Power Point',
|
|
14
|
+
fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, fz.ignore_basic_report, fz.tuya_switch_power_outage_memory],
|
|
15
|
+
toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory],
|
|
16
|
+
exposes: [e.switch().withEndpoint('left'), e.switch().withEndpoint('right'),
|
|
17
|
+
e.power().withEndpoint('left'), e.current().withEndpoint('left'),
|
|
18
|
+
e.voltage().withEndpoint('left').withAccess(ea.STATE), e.energy(),
|
|
19
|
+
exposes.enum('power_outage_memory', ea.ALL, ['on', 'off', 'restore'])
|
|
20
|
+
.withDescription('Recover state after power outage')],
|
|
21
|
+
endpoint: (device) => {
|
|
22
|
+
return {left: 1, right: 2};
|
|
23
|
+
},
|
|
24
|
+
meta: {multiEndpoint: true},
|
|
25
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
26
|
+
const endpoint = device.getEndpoint(1);
|
|
27
|
+
await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
28
|
+
endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', {acCurrentDivisor: 1000, acCurrentMultiplier: 1});
|
|
29
|
+
endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 100, multiplier: 1});
|
|
30
|
+
device.save();
|
|
31
|
+
},
|
|
32
|
+
},
|
|
9
33
|
{
|
|
10
34
|
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3210_7jnk7l3k'}],
|
|
11
35
|
model: 'SPP02GIP',
|
package/devices/philips.js
CHANGED
|
@@ -406,7 +406,7 @@ module.exports = [
|
|
|
406
406
|
extend: hueExtend.light_onoff_brightness(),
|
|
407
407
|
},
|
|
408
408
|
{
|
|
409
|
-
zigbeeModel: ['LCT026', '7602031P7', '7602031U7'],
|
|
409
|
+
zigbeeModel: ['LCT026', '7602031P7', '7602031U7', '7602031PU'],
|
|
410
410
|
model: '7602031P7',
|
|
411
411
|
vendor: 'Philips',
|
|
412
412
|
description: 'Hue Go with Bluetooth',
|
package/devices/plugwise.js
CHANGED
|
@@ -149,4 +149,27 @@ module.exports = [
|
|
|
149
149
|
.withDescription('Calibrates valve on next wakeup'),
|
|
150
150
|
],
|
|
151
151
|
},
|
|
152
|
+
{
|
|
153
|
+
zigbeeModel: ['158-01'],
|
|
154
|
+
model: '158-01',
|
|
155
|
+
vendor: 'Plugwise',
|
|
156
|
+
description: 'Lisa zone thermostat',
|
|
157
|
+
fromZigbee: [fz.thermostat, fz.temperature, fz.battery],
|
|
158
|
+
toZigbee: [
|
|
159
|
+
tz.thermostat_system_mode,
|
|
160
|
+
tz.thermostat_occupied_heating_setpoint,
|
|
161
|
+
],
|
|
162
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
163
|
+
const endpoint = device.getEndpoint(1);
|
|
164
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genBasic', 'genPowerCfg', 'hvacThermostat']);
|
|
165
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
166
|
+
await reporting.thermostatTemperature(endpoint);
|
|
167
|
+
},
|
|
168
|
+
exposes: [e.battery(),
|
|
169
|
+
exposes.climate()
|
|
170
|
+
.withSetpoint('occupied_heating_setpoint', 5, 30, 0.5, ea.ALL)
|
|
171
|
+
.withLocalTemperature(ea.STATE)
|
|
172
|
+
.withSystemMode(['off', 'auto'], ea.ALL),
|
|
173
|
+
],
|
|
174
|
+
},
|
|
152
175
|
];
|
package/devices/tuya.js
CHANGED
|
@@ -981,6 +981,7 @@ module.exports = [
|
|
|
981
981
|
{modelID: 'TS0502B', manufacturerName: '_TZ3210_2p6wbry3'},
|
|
982
982
|
{modelID: 'TS0502B', manufacturerName: '_TZ3210_qamcypen'},
|
|
983
983
|
{modelID: 'TS0502B', manufacturerName: '_TZ3210_zdrhqmo0'},
|
|
984
|
+
{modelID: 'TS0502B', manufacturerName: '_TZ3210_2cjfbpy0'},
|
|
984
985
|
],
|
|
985
986
|
model: 'TS0502B',
|
|
986
987
|
vendor: 'TuYa',
|
|
@@ -2520,7 +2521,7 @@ module.exports = [
|
|
|
2520
2521
|
},
|
|
2521
2522
|
{
|
|
2522
2523
|
fingerprint: [{modelID: 'TS004F', manufacturerName: '_TZ3000_4fjiwweb'}, {modelID: 'TS004F', manufacturerName: '_TZ3000_uri7ongn'},
|
|
2523
|
-
{modelID: 'TS004F', manufacturerName: '_TZ3000_ixla93vd'}],
|
|
2524
|
+
{modelID: 'TS004F', manufacturerName: '_TZ3000_ixla93vd'}, {modelID: 'TS004F', manufacturerName: '_TZ3000_qja6nq5z'}],
|
|
2524
2525
|
model: 'ERS-10TZBVK-AA',
|
|
2525
2526
|
vendor: 'TuYa',
|
|
2526
2527
|
description: 'Smart knob',
|
package/devices/xiaomi.js
CHANGED
|
@@ -40,6 +40,21 @@ const preventReset = async (type, data, device) => {
|
|
|
40
40
|
};
|
|
41
41
|
|
|
42
42
|
module.exports = [
|
|
43
|
+
{
|
|
44
|
+
zigbeeModel: ['lumi.flood.acn001'],
|
|
45
|
+
model: 'SJCGQ13LM',
|
|
46
|
+
vendor: 'Xiaomi',
|
|
47
|
+
description: 'Aqara E1 water leak sensor',
|
|
48
|
+
fromZigbee: [fz.ias_water_leak_alarm_1, fz.aqara_opple, fz.battery],
|
|
49
|
+
toZigbee: [],
|
|
50
|
+
exposes: [e.water_leak(), e.battery(), e.battery_low(), e.battery_voltage(), e.device_temperature(), e.power_outage_count(false)],
|
|
51
|
+
meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
|
|
52
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
53
|
+
const endpoint = device.getEndpoint(1);
|
|
54
|
+
await endpoint.read('genPowerCfg', ['batteryVoltage']);
|
|
55
|
+
},
|
|
56
|
+
ota: ota.zigbeeOTA,
|
|
57
|
+
},
|
|
43
58
|
{
|
|
44
59
|
zigbeeModel: ['lumi.magnet.acn001'],
|
|
45
60
|
model: 'MCCGQ14LM',
|
package/lib/xiaomi.js
CHANGED
|
@@ -191,10 +191,7 @@ const numericAttributes2Payload = (msg, meta, model, options, dataObject) => {
|
|
|
191
191
|
}
|
|
192
192
|
break;
|
|
193
193
|
case '11':
|
|
194
|
-
if (['
|
|
195
|
-
// We don't know what the value means for these devices.
|
|
196
|
-
// https://github.com/Koenkk/zigbee2mqtt/issues/12451
|
|
197
|
-
} else {
|
|
194
|
+
if (['RTCGQ11LM'].includes(model.model)) {
|
|
198
195
|
payload.illuminance = calibrateAndPrecisionRoundOptions(value, options, 'illuminance');
|
|
199
196
|
// DEPRECATED: remove illuminance_lux here.
|
|
200
197
|
payload.illuminance_lux = calibrateAndPrecisionRoundOptions(value, options, 'illuminance_lux');
|
|
@@ -241,6 +238,8 @@ const numericAttributes2Payload = (msg, meta, model, options, dataObject) => {
|
|
|
241
238
|
} else if (['SJCGQ11LM'].includes(model.model)) {
|
|
242
239
|
// Ignore the message. It seems not reliable. See discussion here https://github.com/Koenkk/zigbee2mqtt/issues/12018
|
|
243
240
|
// payload.water_leak = value === 1;
|
|
241
|
+
} else if (['SJCGQ13LM'].includes(model.model)) {
|
|
242
|
+
payload.water_leak = value === 1;
|
|
244
243
|
} else if (['JTYJ-GD-01LM/BW'].includes(model.model)) {
|
|
245
244
|
payload.smoke_density = value;
|
|
246
245
|
} else if (['GZCGQ01LM'].includes(model.model)) {
|