zigbee-herdsman-converters 14.0.522 → 14.0.523
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/converters/fromZigbee.js +12 -1
- package/devices/centralite.js +8 -35
- package/devices/innr.js +2 -1
- package/devices/insta.js +1 -1
- package/devices/somgoms.js +9 -0
- package/devices/tuya.js +0 -1
- package/devices/xiaomi.js +43 -43
- package/devices/zemismart.js +2 -0
- package/lib/xiaomi.js +5 -6
- package/package.json +1 -1
package/converters/fromZigbee.js
CHANGED
|
@@ -2257,7 +2257,9 @@ const converters = {
|
|
|
2257
2257
|
const value = tuya.getDataValue(dpValue);
|
|
2258
2258
|
|
|
2259
2259
|
switch (dp) {
|
|
2260
|
-
case tuya.dataPoints.coverPosition: // Started moving to position (triggered from Zigbee)
|
|
2260
|
+
case tuya.dataPoints.coverPosition: { // Started moving to position (triggered from Zigbee)
|
|
2261
|
+
return {running: true};
|
|
2262
|
+
}
|
|
2261
2263
|
case tuya.dataPoints.coverArrived: { // Arrived at position
|
|
2262
2264
|
const running = dp === tuya.dataPoints.coverArrived ? false : true;
|
|
2263
2265
|
const invert = tuya.isCoverInverted(meta.device.manufacturerName) ? !options.invert_cover : options.invert_cover;
|
|
@@ -5529,6 +5531,9 @@ const converters = {
|
|
|
5529
5531
|
if (definition.exposes.find((e) => e.name === 'temperature')) {
|
|
5530
5532
|
result.push(exposes.options.precision('temperature'), exposes.options.calibration('temperature'));
|
|
5531
5533
|
}
|
|
5534
|
+
if (definition.exposes.find((e) => e.name === 'device_temperature')) {
|
|
5535
|
+
result.push(exposes.options.precision('device_temperature'), exposes.options.calibration('device_temperature'));
|
|
5536
|
+
}
|
|
5532
5537
|
if (definition.exposes.find((e) => e.name === 'illuminance')) {
|
|
5533
5538
|
result.push(exposes.options.precision('illuminance'), exposes.options.calibration('illuminance', 'percentual'));
|
|
5534
5539
|
}
|
|
@@ -5550,6 +5555,9 @@ const converters = {
|
|
|
5550
5555
|
if (definition.exposes.find((e) => e.name === 'temperature')) {
|
|
5551
5556
|
result.push(exposes.options.precision('temperature'), exposes.options.calibration('temperature'));
|
|
5552
5557
|
}
|
|
5558
|
+
if (definition.exposes.find((e) => e.name === 'device_temperature')) {
|
|
5559
|
+
result.push(exposes.options.precision('device_temperature'), exposes.options.calibration('device_temperature'));
|
|
5560
|
+
}
|
|
5553
5561
|
return result;
|
|
5554
5562
|
},
|
|
5555
5563
|
convert: (model, msg, publish, options, meta) => {
|
|
@@ -5569,6 +5577,9 @@ const converters = {
|
|
|
5569
5577
|
if (definition.exposes.find((e) => e.name === 'temperature')) {
|
|
5570
5578
|
result.push(exposes.options.precision('temperature'), exposes.options.calibration('temperature'));
|
|
5571
5579
|
}
|
|
5580
|
+
if (definition.exposes.find((e) => e.name === 'device_temperature')) {
|
|
5581
|
+
result.push(exposes.options.precision('device_temperature'), exposes.options.calibration('device_temperature'));
|
|
5582
|
+
}
|
|
5572
5583
|
if (definition.exposes.find((e) => e.name === 'illuminance')) {
|
|
5573
5584
|
result.push(exposes.options.precision('illuminance'), exposes.options.calibration('illuminance', 'percentual'));
|
|
5574
5585
|
}
|
package/devices/centralite.js
CHANGED
|
@@ -161,36 +161,10 @@ module.exports = [
|
|
|
161
161
|
extend: extend.light_onoff_brightness(),
|
|
162
162
|
},
|
|
163
163
|
{
|
|
164
|
-
|
|
164
|
+
fingerprint: [{modelID: '3157100', manufacturerName: 'Centralite'}, {modelID: '3157100-E', manufacturerName: 'Centralite'}],
|
|
165
165
|
model: '3157100',
|
|
166
166
|
vendor: 'Centralite',
|
|
167
|
-
description: '3-Series pearl touch thermostat
|
|
168
|
-
fromZigbee: [fz.battery, fz.legacy.thermostat_att_report, fz.fan, fz.ignore_time_read],
|
|
169
|
-
toZigbee: [tz.factory_reset, tz.thermostat_local_temperature, tz.thermostat_local_temperature_calibration,
|
|
170
|
-
tz.thermostat_occupied_heating_setpoint, tz.thermostat_occupied_cooling_setpoint,
|
|
171
|
-
tz.thermostat_setpoint_raise_lower, tz.thermostat_remote_sensing,
|
|
172
|
-
tz.thermostat_control_sequence_of_operation, tz.thermostat_system_mode,
|
|
173
|
-
tz.thermostat_relay_status_log, tz.fan_mode, tz.thermostat_running_state],
|
|
174
|
-
exposes: [e.battery(), exposes.climate().withSetpoint('occupied_heating_setpoint', 10, 30, 1).withLocalTemperature()
|
|
175
|
-
.withSystemMode(['off', 'heat', 'cool', 'emergency_heating'])
|
|
176
|
-
.withRunningState(['idle', 'heat', 'cool', 'fan_only']).withFanMode(['auto', 'on'])
|
|
177
|
-
.withSetpoint('occupied_cooling_setpoint', 10, 30, 1)
|
|
178
|
-
.withLocalTemperatureCalibration(-30, 30, 0.1)],
|
|
179
|
-
meta: {battery: {voltageToPercentage: '3V_1500_2800'}},
|
|
180
|
-
configure: async (device, coordinatorEndpoint, logger) => {
|
|
181
|
-
const endpoint = device.getEndpoint(1);
|
|
182
|
-
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'hvacThermostat', 'hvacFanCtrl']);
|
|
183
|
-
await reporting.batteryVoltage(endpoint);
|
|
184
|
-
await reporting.thermostatRunningState(endpoint);
|
|
185
|
-
await reporting.thermostatTemperature(endpoint);
|
|
186
|
-
await reporting.fanMode(endpoint);
|
|
187
|
-
},
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
zigbeeModel: ['3157100-E'],
|
|
191
|
-
model: '3157100-E',
|
|
192
|
-
vendor: 'Centralite',
|
|
193
|
-
description: '3-Series pearl touch thermostat,',
|
|
167
|
+
description: '3-Series pearl touch thermostat',
|
|
194
168
|
fromZigbee: [fz.battery, fz.thermostat, fz.fan, fz.ignore_time_read],
|
|
195
169
|
toZigbee: [tz.factory_reset, tz.thermostat_local_temperature, tz.thermostat_local_temperature_calibration,
|
|
196
170
|
tz.thermostat_occupied_heating_setpoint, tz.thermostat_occupied_cooling_setpoint,
|
|
@@ -200,11 +174,11 @@ module.exports = [
|
|
|
200
174
|
exposes: [e.battery(),
|
|
201
175
|
exposes.binary('temperature_setpoint_hold', ea.ALL, true, false)
|
|
202
176
|
.withDescription('Prevent changes. `false` = run normally. `true` = prevent from making changes.'),
|
|
203
|
-
exposes.climate().withSetpoint('occupied_heating_setpoint',
|
|
177
|
+
exposes.climate().withSetpoint('occupied_heating_setpoint', 7, 30, 1).withLocalTemperature()
|
|
204
178
|
.withSystemMode(['off', 'heat', 'cool', 'emergency_heating'])
|
|
205
179
|
.withRunningState(['idle', 'heat', 'cool', 'fan_only']).withFanMode(['auto', 'on'])
|
|
206
|
-
.withSetpoint('occupied_cooling_setpoint',
|
|
207
|
-
.withLocalTemperatureCalibration(-
|
|
180
|
+
.withSetpoint('occupied_cooling_setpoint', 7, 30, 1)
|
|
181
|
+
.withLocalTemperatureCalibration(-2.5, 2.5, 0.1)],
|
|
208
182
|
meta: {battery: {voltageToPercentage: '3V_1500_2800'}},
|
|
209
183
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
210
184
|
const endpoint = device.getEndpoint(1);
|
|
@@ -222,7 +196,7 @@ module.exports = [
|
|
|
222
196
|
vendor: 'Centralite',
|
|
223
197
|
description: 'HA thermostat',
|
|
224
198
|
fromZigbee: [fz.battery, fz.thermostat, fz.fan, fz.ignore_time_read],
|
|
225
|
-
toZigbee: [tz.factory_reset, tz.thermostat_local_temperature,
|
|
199
|
+
toZigbee: [tz.factory_reset, tz.thermostat_local_temperature,
|
|
226
200
|
tz.thermostat_occupied_heating_setpoint, tz.thermostat_occupied_cooling_setpoint,
|
|
227
201
|
tz.thermostat_setpoint_raise_lower, tz.thermostat_remote_sensing,
|
|
228
202
|
tz.thermostat_control_sequence_of_operation, tz.thermostat_system_mode,
|
|
@@ -230,11 +204,10 @@ module.exports = [
|
|
|
230
204
|
exposes: [e.battery(),
|
|
231
205
|
exposes.binary('temperature_setpoint_hold', ea.ALL, true, false)
|
|
232
206
|
.withDescription('Prevent changes. `false` = run normally. `true` = prevent from making changes.'),
|
|
233
|
-
exposes.climate().withSetpoint('occupied_heating_setpoint',
|
|
207
|
+
exposes.climate().withSetpoint('occupied_heating_setpoint', 7, 30, 1).withLocalTemperature()
|
|
234
208
|
.withSystemMode(['off', 'heat', 'cool', 'emergency_heating'])
|
|
235
209
|
.withRunningState(['idle', 'heat', 'cool', 'fan_only']).withFanMode(['auto', 'on'])
|
|
236
|
-
.withSetpoint('occupied_cooling_setpoint',
|
|
237
|
-
.withLocalTemperatureCalibration(-30, 30, 0.1)],
|
|
210
|
+
.withSetpoint('occupied_cooling_setpoint', 7, 30, 1)],
|
|
238
211
|
meta: {battery: {voltageToPercentage: '3V_1500_2800'}},
|
|
239
212
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
240
213
|
const endpoint = device.getEndpoint(1);
|
package/devices/innr.js
CHANGED
|
@@ -60,7 +60,8 @@ module.exports = [
|
|
|
60
60
|
model: 'OPL 130 C',
|
|
61
61
|
vendor: 'Innr',
|
|
62
62
|
description: 'Outdoor smart pedestal light colour',
|
|
63
|
-
extend: extend.light_onoff_brightness_colortemp_color(
|
|
63
|
+
extend: extend.light_onoff_brightness_colortemp_color(
|
|
64
|
+
{colorTempRange: [153, 555], supportsHS: true, disableColorTempStartup: true}),
|
|
64
65
|
meta: {applyRedFix: true, turnsOffAtBrightness1: true},
|
|
65
66
|
},
|
|
66
67
|
{
|
package/devices/insta.js
CHANGED
|
@@ -21,7 +21,7 @@ module.exports = [
|
|
|
21
21
|
ota: ota.zigbeeOTA,
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
|
-
zigbeeModel: ['Generic UP Device'],
|
|
24
|
+
zigbeeModel: ['NEXENTRO Blinds Actuator', 'Generic UP Device'],
|
|
25
25
|
model: '57008000',
|
|
26
26
|
vendor: 'Insta',
|
|
27
27
|
description: 'Blinds actor with lift/tilt calibration & with with inputs for wall switches',
|
package/devices/somgoms.js
CHANGED
|
@@ -25,6 +25,15 @@ module.exports = [
|
|
|
25
25
|
toZigbee: [tz.tuya_cover_control, tz.tuya_cover_options],
|
|
26
26
|
exposes: [e.cover_position().setAccess('position', ea.STATE_SET)],
|
|
27
27
|
},
|
|
28
|
+
{
|
|
29
|
+
zigbeeModel: ['sbordckq'],
|
|
30
|
+
model: 'SM-1CTW-EU',
|
|
31
|
+
vendor: 'Somgoms',
|
|
32
|
+
description: 'Curtain switch',
|
|
33
|
+
fromZigbee: [fz.tuya_cover, fz.ignore_basic_report],
|
|
34
|
+
toZigbee: [tz.tuya_cover_control, tz.tuya_cover_options],
|
|
35
|
+
exposes: [e.cover_position().setAccess('position', ea.STATE_SET)],
|
|
36
|
+
},
|
|
28
37
|
{
|
|
29
38
|
zigbeeModel: ['hpb9yts'],
|
|
30
39
|
model: 'ZSTY-SM-1DMZG-US-W',
|
package/devices/tuya.js
CHANGED
|
@@ -1100,7 +1100,6 @@ module.exports = [
|
|
|
1100
1100
|
{modelID: 'zo2pocs\u0000', manufacturerName: '_TYST11_fzo2pocs'},
|
|
1101
1101
|
{modelID: 'TS0601', manufacturerName: '_TZE200_cf1sl3tj'},
|
|
1102
1102
|
// Roller blinds:
|
|
1103
|
-
{modelID: 'TS0601', manufacturerName: '_TZE200_sbordckq'},
|
|
1104
1103
|
{modelID: 'TS0601', manufacturerName: '_TZE200_fctwhugx'},
|
|
1105
1104
|
{modelID: 'TS0601', manufacturerName: '_TZE200_zah67ekd'},
|
|
1106
1105
|
{modelID: 'TS0601', manufacturerName: '_TZE200_hsgrhjpf'},
|
package/devices/xiaomi.js
CHANGED
|
@@ -79,7 +79,7 @@ module.exports = [
|
|
|
79
79
|
endpoint: (device) => {
|
|
80
80
|
return {l1: 1, l2: 2};
|
|
81
81
|
},
|
|
82
|
-
exposes: [e.power(), e.energy(), e.voltage(), e.
|
|
82
|
+
exposes: [e.power(), e.energy(), e.voltage(), e.device_temperature(), e.power_outage_memory(),
|
|
83
83
|
// When in rgbw mode, only one of color and colortemp will be valid, and l2 will be invalid
|
|
84
84
|
// Do not control l2 in rgbw mode
|
|
85
85
|
e.light_brightness_colortemp_colorxy([153, 370]).removeFeature('color_temp_startup').withEndpoint('l1'),
|
|
@@ -178,7 +178,7 @@ module.exports = [
|
|
|
178
178
|
description: 'Aqara wireless switch',
|
|
179
179
|
meta: {battery: {voltageToPercentage: '3V_2850_3000_log'}},
|
|
180
180
|
exposes: [e.battery(), e.battery_voltage(), e.action(['single', 'double', 'triple', 'quadruple', 'hold', 'release']),
|
|
181
|
-
e.
|
|
181
|
+
e.device_temperature(), e.power_outage_count()],
|
|
182
182
|
fromZigbee: [fz.xiaomi_multistate_action, fz.xiaomi_WXKG11LM_action, fz.xiaomi_basic,
|
|
183
183
|
fz.legacy.WXKG11LM_click, fz.legacy.xiaomi_action_click_multistate],
|
|
184
184
|
toZigbee: [],
|
|
@@ -337,8 +337,8 @@ module.exports = [
|
|
|
337
337
|
fromZigbee: [fz.on_off, fz.xiaomi_power, fz.aqara_opple, fz.xiaomi_multistate_action],
|
|
338
338
|
toZigbee: [tz.on_off, tz.xiaomi_switch_operation_mode_opple, tz.xiaomi_switch_power_outage_memory,
|
|
339
339
|
tz.xiaomi_led_disabled_night, tz.xiaomi_flip_indicator_light],
|
|
340
|
-
exposes: [e.switch().withEndpoint('left'), e.switch().withEndpoint('right'),
|
|
341
|
-
e.
|
|
340
|
+
exposes: [e.switch().withEndpoint('left'), e.switch().withEndpoint('right'), e.power(), e.energy(), e.voltage(),
|
|
341
|
+
e.device_temperature(), e.power_outage_memory(), e.led_disabled_night(), e.flip_indicator_light(),
|
|
342
342
|
e.action([
|
|
343
343
|
'single_left', 'single_right', 'single_both',
|
|
344
344
|
'double_left', 'double_right', 'double_both']),
|
|
@@ -398,7 +398,7 @@ module.exports = [
|
|
|
398
398
|
toZigbee: [tz.on_off, tz.xiaomi_power, tz.xiaomi_switch_operation_mode_opple, tz.xiaomi_switch_power_outage_memory,
|
|
399
399
|
tz.xiaomi_flip_indicator_light],
|
|
400
400
|
exposes: [e.switch(), e.action(['single', 'double']), e.power().withAccess(ea.STATE_GET), e.energy(), e.flip_indicator_light(),
|
|
401
|
-
e.power_outage_memory(), e.
|
|
401
|
+
e.power_outage_memory(), e.device_temperature().withAccess(ea.STATE),
|
|
402
402
|
exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled']).withDescription('Decoupled mode')],
|
|
403
403
|
onEvent: preventReset,
|
|
404
404
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
@@ -425,7 +425,7 @@ module.exports = [
|
|
|
425
425
|
exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled']).withDescription('Decoupled mode for right button')
|
|
426
426
|
.withEndpoint('right'),
|
|
427
427
|
e.action(['single_left', 'double_left', 'single_right', 'double_right', 'single_both', 'double_both']),
|
|
428
|
-
e.
|
|
428
|
+
e.device_temperature().withAccess(ea.STATE), e.power_outage_memory(), e.flip_indicator_light()],
|
|
429
429
|
onEvent: preventReset,
|
|
430
430
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
431
431
|
const endpoint1 = device.getEndpoint(1);
|
|
@@ -466,7 +466,7 @@ module.exports = [
|
|
|
466
466
|
fz.legacy.QBKG04LM_QBKG11LM_click, fz.xiaomi_basic, fz.xiaomi_operation_mode_basic,
|
|
467
467
|
fz.legacy.QBKG11LM_click, fz.ignore_multistate_report, fz.xiaomi_power],
|
|
468
468
|
exposes: [
|
|
469
|
-
e.switch(), e.power().withAccess(ea.STATE_GET), e.
|
|
469
|
+
e.switch(), e.power().withAccess(ea.STATE_GET), e.device_temperature(),
|
|
470
470
|
e.action(['single', 'double', 'release', 'hold']),
|
|
471
471
|
exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled'])
|
|
472
472
|
.withDescription('Decoupled mode'),
|
|
@@ -488,7 +488,7 @@ module.exports = [
|
|
|
488
488
|
exposes: [
|
|
489
489
|
e.switch().withEndpoint('left'),
|
|
490
490
|
e.switch().withEndpoint('right'),
|
|
491
|
-
e.
|
|
491
|
+
e.device_temperature(),
|
|
492
492
|
e.action(['release_left', 'release_right', 'release_both', 'double_left', 'double_right',
|
|
493
493
|
'single_left', 'single_right', 'hold_release_left', 'hold_release_left']),
|
|
494
494
|
exposes.enum('operation_mode', ea.STATE_SET, ['control_left_relay', 'control_right_relay', 'decoupled'])
|
|
@@ -522,7 +522,7 @@ module.exports = [
|
|
|
522
522
|
exposes: [
|
|
523
523
|
e.switch().withEndpoint('left'),
|
|
524
524
|
e.switch().withEndpoint('right'),
|
|
525
|
-
e.
|
|
525
|
+
e.device_temperature(),
|
|
526
526
|
e.power().withAccess(ea.STATE_GET),
|
|
527
527
|
e.action(['single_left', 'single_right', 'single_both', 'double_left', 'double_right', 'double_both',
|
|
528
528
|
'hold_left', 'hold_right', 'hold_both', 'release_left', 'release_right', 'release_both']),
|
|
@@ -638,7 +638,7 @@ module.exports = [
|
|
|
638
638
|
exposes.enum('mode_switch', ea.ALL, ['anti_flicker_mode', 'quick_mode'])
|
|
639
639
|
.withDescription('Anti flicker mode can be used to solve blinking issues of some lights.' +
|
|
640
640
|
'Quick mode makes the device respond faster.'),
|
|
641
|
-
e.power_outage_memory(), e.led_disabled_night(), e.
|
|
641
|
+
e.power_outage_memory(), e.led_disabled_night(), e.device_temperature().withAccess(ea.STATE), e.flip_indicator_light(),
|
|
642
642
|
e.action([
|
|
643
643
|
'left_single', 'left_double', 'center_single', 'center_double', 'right_single', 'right_double',
|
|
644
644
|
'single_left_center', 'double_left_center', 'single_left_right', 'double_left_right',
|
|
@@ -668,7 +668,7 @@ module.exports = [
|
|
|
668
668
|
.withDescription('Decoupled mode for right button')
|
|
669
669
|
.withEndpoint('right'),
|
|
670
670
|
e.power().withAccess(ea.STATE), e.power_outage_memory(), e.led_disabled_night(),
|
|
671
|
-
e.
|
|
671
|
+
e.device_temperature().withAccess(ea.STATE), e.flip_indicator_light(),
|
|
672
672
|
e.action([
|
|
673
673
|
'single_left', 'double_left', 'single_center', 'double_center', 'single_right', 'double_right',
|
|
674
674
|
'single_left_center', 'double_left_center', 'single_left_right', 'double_left_right',
|
|
@@ -699,7 +699,7 @@ module.exports = [
|
|
|
699
699
|
onEvent: preventReset,
|
|
700
700
|
exposes: [
|
|
701
701
|
e.switch(), e.power().withAccess(ea.STATE_GET),
|
|
702
|
-
e.energy(), e.
|
|
702
|
+
e.energy(), e.device_temperature().withAccess(ea.STATE),
|
|
703
703
|
e.voltage().withAccess(ea.STATE), e.action(['single', 'release']),
|
|
704
704
|
exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled'])
|
|
705
705
|
.withDescription('Decoupled mode'),
|
|
@@ -749,7 +749,7 @@ module.exports = [
|
|
|
749
749
|
tz.xiaomi_led_disabled_night, tz.xiaomi_flip_indicator_light],
|
|
750
750
|
exposes: [
|
|
751
751
|
e.switch(), e.action(['single', 'double']), e.power().withAccess(ea.STATE), e.energy(),
|
|
752
|
-
e.voltage().withAccess(ea.STATE), e.
|
|
752
|
+
e.voltage().withAccess(ea.STATE), e.device_temperature().withAccess(ea.STATE),
|
|
753
753
|
e.power_outage_memory(), e.led_disabled_night(), e.flip_indicator_light(),
|
|
754
754
|
exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled'])
|
|
755
755
|
.withDescription('Decoupled mode for left button'),
|
|
@@ -772,7 +772,7 @@ module.exports = [
|
|
|
772
772
|
exposes: [
|
|
773
773
|
e.switch().withEndpoint('left'), e.switch().withEndpoint('right'),
|
|
774
774
|
e.power().withAccess(ea.STATE), e.energy(), e.voltage().withAccess(ea.STATE), e.flip_indicator_light(),
|
|
775
|
-
e.power_outage_memory(), e.led_disabled_night(), e.
|
|
775
|
+
e.power_outage_memory(), e.led_disabled_night(), e.device_temperature().withAccess(ea.STATE),
|
|
776
776
|
e.action([
|
|
777
777
|
'single_left', 'double_left', 'single_right', 'double_right', 'single_both', 'double_both']),
|
|
778
778
|
exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled'])
|
|
@@ -800,7 +800,7 @@ module.exports = [
|
|
|
800
800
|
exposes: [
|
|
801
801
|
e.switch().withEndpoint('left'), e.switch().withEndpoint('center'), e.switch().withEndpoint('right'),
|
|
802
802
|
e.power().withAccess(ea.STATE), e.energy(), e.voltage().withAccess(ea.STATE), e.flip_indicator_light(),
|
|
803
|
-
e.power_outage_memory(), e.led_disabled_night(), e.
|
|
803
|
+
e.power_outage_memory(), e.led_disabled_night(), e.device_temperature().withAccess(ea.STATE),
|
|
804
804
|
e.action([
|
|
805
805
|
'single_left', 'double_left', 'single_center', 'double_center',
|
|
806
806
|
'single_right', 'double_right', 'single_left_center', 'double_left_center',
|
|
@@ -850,7 +850,7 @@ module.exports = [
|
|
|
850
850
|
description: 'Aqara T1 temperature, humidity and pressure sensor',
|
|
851
851
|
fromZigbee: [fz.aqara_opple, fz.temperature, fz.humidity, fz.pressure, fz.battery],
|
|
852
852
|
toZigbee: [],
|
|
853
|
-
exposes: [e.temperature(), e.humidity(), e.pressure(), e.battery(), e.battery_voltage()],
|
|
853
|
+
exposes: [e.temperature(), e.humidity(), e.pressure(), e.device_temperature(), e.battery(), e.battery_voltage()],
|
|
854
854
|
meta: {battery: {voltageToPercentage: '3V_2850_3000_log'}},
|
|
855
855
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
856
856
|
const endpoint = device.getEndpoint(1);
|
|
@@ -878,7 +878,7 @@ module.exports = [
|
|
|
878
878
|
meta: {battery: {voltageToPercentage: '3V_2850_3000_log'}},
|
|
879
879
|
fromZigbee: [fz.xiaomi_basic, fz.occupancy_with_timeout, fz.RTCGQ11LM_illuminance],
|
|
880
880
|
toZigbee: [],
|
|
881
|
-
exposes: [e.battery(), e.occupancy(), e.
|
|
881
|
+
exposes: [e.battery(), e.occupancy(), e.device_temperature(), e.battery_voltage(), e.illuminance_lux().withProperty('illuminance'),
|
|
882
882
|
e.illuminance().withUnit('lx').withDescription('Measured illuminance in lux')],
|
|
883
883
|
},
|
|
884
884
|
{
|
|
@@ -891,7 +891,7 @@ module.exports = [
|
|
|
891
891
|
exposes: [e.occupancy(), e.illuminance_lux().withProperty('illuminance'),
|
|
892
892
|
e.illuminance().withUnit('lx').withDescription('Measured illuminance in lux'),
|
|
893
893
|
exposes.numeric('detection_interval', ea.ALL).withValueMin(2).withValueMax(65535).withUnit('s')
|
|
894
|
-
.withDescription('Time interval for detecting actions'), e.
|
|
894
|
+
.withDescription('Time interval for detecting actions'), e.device_temperature(), e.battery(), e.battery_voltage()],
|
|
895
895
|
meta: {battery: {voltageToPercentage: '3V_2850_3000_log'}},
|
|
896
896
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
897
897
|
const endpoint = device.getEndpoint(1);
|
|
@@ -909,7 +909,7 @@ module.exports = [
|
|
|
909
909
|
toZigbee: [tz.aqara_detection_interval, tz.aqara_motion_sensitivity],
|
|
910
910
|
exposes: [e.occupancy(), exposes.enum('motion_sensitivity', ea.ALL, ['low', 'medium', 'high']),
|
|
911
911
|
exposes.numeric('detection_interval', ea.ALL).withValueMin(2).withValueMax(65535).withUnit('s')
|
|
912
|
-
.withDescription('Time interval for detecting actions'), e.
|
|
912
|
+
.withDescription('Time interval for detecting actions'), e.device_temperature(), e.battery(), e.battery_voltage()],
|
|
913
913
|
meta: {battery: {voltageToPercentage: '3V_2850_3000_log'}},
|
|
914
914
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
915
915
|
const endpoint = device.getEndpoint(1);
|
|
@@ -933,7 +933,7 @@ module.exports = [
|
|
|
933
933
|
exposes.numeric('detection_interval', ea.ALL).withValueMin(2).withValueMax(65535).withUnit('s')
|
|
934
934
|
.withDescription('Time interval for detecting actions'),
|
|
935
935
|
exposes.binary('trigger_indicator', ea.ALL, true, false).withDescription('When this option is enabled then ' +
|
|
936
|
-
'blue LED will blink once when motion is detected'), e.
|
|
936
|
+
'blue LED will blink once when motion is detected'), e.device_temperature(), e.battery(), e.battery_voltage()],
|
|
937
937
|
meta: {battery: {voltageToPercentage: '3V_2850_3000_log'}},
|
|
938
938
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
939
939
|
const endpoint = device.getEndpoint(1);
|
|
@@ -952,7 +952,7 @@ module.exports = [
|
|
|
952
952
|
fromZigbee: [fz.aqara_opple],
|
|
953
953
|
toZigbee: [tz.RTCZCGQ11LM_presence, tz.RTCZCGQ11LM_monitoring_mode, tz.RTCZCGQ11LM_approach_distance,
|
|
954
954
|
tz.aqara_motion_sensitivity, tz.RTCZCGQ11LM_reset_nopresence_status],
|
|
955
|
-
exposes: [e.presence().withAccess(ea.STATE_GET),
|
|
955
|
+
exposes: [e.presence().withAccess(ea.STATE_GET),
|
|
956
956
|
exposes.enum('presence_event', ea.STATE, ['enter', 'leave', 'left_enter', 'right_leave', 'right_enter', 'left_leave',
|
|
957
957
|
'approach', 'away']).withDescription('Presence events: "enter", "leave", "left_enter", "right_leave", ' +
|
|
958
958
|
'"right_enter", "left_leave", "approach", "away"'),
|
|
@@ -963,7 +963,7 @@ module.exports = [
|
|
|
963
963
|
exposes.enum('motion_sensitivity', ea.ALL, ['low', 'medium', 'high']).withDescription('Different sensitivities ' +
|
|
964
964
|
'means different static human body recognition rate and response speed of occupied'),
|
|
965
965
|
exposes.enum('reset_nopresence_status', ea.SET, ['Reset']).withDescription('Reset the status of no presence'),
|
|
966
|
-
|
|
966
|
+
e.device_temperature(), e.power_outage_count()],
|
|
967
967
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
968
968
|
const endpoint = device.getEndpoint(1);
|
|
969
969
|
await endpoint.read('aqaraOpple', [0x010c], {manufacturerCode: 0x115f});
|
|
@@ -991,7 +991,7 @@ module.exports = [
|
|
|
991
991
|
meta: {battery: {voltageToPercentage: '3V_2850_3000_log'}},
|
|
992
992
|
fromZigbee: [fz.xiaomi_basic, fz.xiaomi_contact],
|
|
993
993
|
toZigbee: [],
|
|
994
|
-
exposes: [e.battery(), e.contact(), e.
|
|
994
|
+
exposes: [e.battery(), e.contact(), e.device_temperature(), e.battery_voltage()],
|
|
995
995
|
configure: async (device) => {
|
|
996
996
|
device.powerSource = 'Battery';
|
|
997
997
|
device.save();
|
|
@@ -1005,7 +1005,7 @@ module.exports = [
|
|
|
1005
1005
|
meta: {battery: {voltageToPercentage: '3V_2850_3000_log'}},
|
|
1006
1006
|
fromZigbee: [fz.xiaomi_basic, fz.ias_water_leak_alarm_1],
|
|
1007
1007
|
toZigbee: [],
|
|
1008
|
-
exposes: [e.battery(), e.water_leak(), e.battery_low(), e.battery_voltage(), e.
|
|
1008
|
+
exposes: [e.battery(), e.water_leak(), e.battery_low(), e.battery_voltage(), e.device_temperature(), e.power_outage_count()],
|
|
1009
1009
|
},
|
|
1010
1010
|
{
|
|
1011
1011
|
zigbeeModel: ['lumi.flood.agl02'],
|
|
@@ -1025,7 +1025,7 @@ module.exports = [
|
|
|
1025
1025
|
description: 'Mi/Aqara smart home cube',
|
|
1026
1026
|
meta: {battery: {voltageToPercentage: '3V_2850_3000_log'}},
|
|
1027
1027
|
fromZigbee: [fz.xiaomi_basic, fz.MFKZQ01LM_action_multistate, fz.MFKZQ01LM_action_analog],
|
|
1028
|
-
exposes: [e.battery(), e.battery_voltage(), e.angle('action_angle'), e.
|
|
1028
|
+
exposes: [e.battery(), e.battery_voltage(), e.angle('action_angle'), e.device_temperature(), e.power_outage_count(),
|
|
1029
1029
|
e.cube_side('action_from_side'), e.cube_side('action_side'), e.cube_side('action_to_side'),
|
|
1030
1030
|
e.action(['shake', 'wakeup', 'fall', 'tap', 'slide', 'flip180', 'flip90', 'rotate_left', 'rotate_right'])],
|
|
1031
1031
|
toZigbee: [],
|
|
@@ -1037,7 +1037,7 @@ module.exports = [
|
|
|
1037
1037
|
vendor: 'Xiaomi',
|
|
1038
1038
|
fromZigbee: [fz.on_off, fz.xiaomi_power, fz.xiaomi_basic, fz.ignore_occupancy_report, fz.ignore_illuminance_report],
|
|
1039
1039
|
toZigbee: [tz.on_off, tz.xiaomi_switch_power_outage_memory, tz.xiaomi_power],
|
|
1040
|
-
exposes: [e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.
|
|
1040
|
+
exposes: [e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.device_temperature(), e.power_outage_memory()],
|
|
1041
1041
|
ota: ota.zigbeeOTA,
|
|
1042
1042
|
},
|
|
1043
1043
|
{
|
|
@@ -1047,7 +1047,7 @@ module.exports = [
|
|
|
1047
1047
|
vendor: 'Xiaomi',
|
|
1048
1048
|
fromZigbee: [fz.on_off, fz.xiaomi_power, fz.xiaomi_basic, fz.ignore_occupancy_report, fz.ignore_illuminance_report],
|
|
1049
1049
|
toZigbee: [tz.on_off, tz.xiaomi_power],
|
|
1050
|
-
exposes: [e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.
|
|
1050
|
+
exposes: [e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.device_temperature().withAccess(ea.STATE),
|
|
1051
1051
|
e.voltage().withAccess(ea.STATE)],
|
|
1052
1052
|
},
|
|
1053
1053
|
{
|
|
@@ -1060,7 +1060,7 @@ module.exports = [
|
|
|
1060
1060
|
toZigbee: [tz.on_off, tz.xiaomi_power, tz.xiaomi_switch_power_outage_memory, tz.xiaomi_auto_off, tz.xiaomi_led_disabled_night,
|
|
1061
1061
|
tz.xiaomi_overload_protection],
|
|
1062
1062
|
exposes: [
|
|
1063
|
-
e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.
|
|
1063
|
+
e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.device_temperature().withAccess(ea.STATE),
|
|
1064
1064
|
e.voltage().withAccess(ea.STATE), e.current(), e.consumer_connected(), e.led_disabled_night(),
|
|
1065
1065
|
e.power_outage_memory(), exposes.binary('auto_off', ea.STATE_SET, true, false)
|
|
1066
1066
|
.withDescription('Turn the device automatically off when attached device consumes less than 2W for 20 minutes'),
|
|
@@ -1075,7 +1075,7 @@ module.exports = [
|
|
|
1075
1075
|
vendor: 'Xiaomi',
|
|
1076
1076
|
fromZigbee: [fz.on_off, fz.xiaomi_power, fz.xiaomi_basic, fz.ignore_occupancy_report, fz.ignore_illuminance_report],
|
|
1077
1077
|
toZigbee: [tz.on_off, tz.xiaomi_power],
|
|
1078
|
-
exposes: [e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.
|
|
1078
|
+
exposes: [e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.device_temperature().withAccess(ea.STATE),
|
|
1079
1079
|
e.voltage().withAccess(ea.STATE)],
|
|
1080
1080
|
},
|
|
1081
1081
|
{
|
|
@@ -1147,7 +1147,7 @@ module.exports = [
|
|
|
1147
1147
|
fromZigbee: [fz.on_off, fz.xiaomi_power, fz.ignore_occupancy_report, fz.xiaomi_basic],
|
|
1148
1148
|
toZigbee: [tz.on_off, tz.xiaomi_power, tz.xiaomi_led_disabled_night,
|
|
1149
1149
|
tz.xiaomi_switch_power_outage_memory, tz.xiaomi_auto_off],
|
|
1150
|
-
exposes: [e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.
|
|
1150
|
+
exposes: [e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.device_temperature(), e.voltage().withAccess(ea.STATE),
|
|
1151
1151
|
e.power_outage_memory(), e.led_disabled_night(),
|
|
1152
1152
|
exposes.binary('auto_off', ea.STATE_SET, true, false)
|
|
1153
1153
|
.withDescription('If the power is constantly lower than 2W within half an hour, ' +
|
|
@@ -1173,7 +1173,7 @@ module.exports = [
|
|
|
1173
1173
|
vendor: 'Xiaomi',
|
|
1174
1174
|
fromZigbee: [fz.on_off, fz.xiaomi_power, fz.xiaomi_basic],
|
|
1175
1175
|
toZigbee: [tz.on_off, tz.xiaomi_switch_power_outage_memory, tz.xiaomi_power],
|
|
1176
|
-
exposes: [e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.
|
|
1176
|
+
exposes: [e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.device_temperature().withAccess(ea.STATE),
|
|
1177
1177
|
e.voltage().withAccess(ea.STATE), e.power_outage_memory()],
|
|
1178
1178
|
ota: ota.zigbeeOTA,
|
|
1179
1179
|
},
|
|
@@ -1259,7 +1259,7 @@ module.exports = [
|
|
|
1259
1259
|
'the normal monitoring state, the green indicator light flashes every 60 seconds'),
|
|
1260
1260
|
exposes.binary('linkage_alarm', ea.ALL, true, false).withDescription('When this option is enabled and a smoke ' +
|
|
1261
1261
|
'is detected, other detectors with this option enabled will also sound the alarm buzzer'),
|
|
1262
|
-
e.
|
|
1262
|
+
e.device_temperature(), e.battery(), e.battery_voltage()],
|
|
1263
1263
|
meta: {battery: {voltageToPercentage: '3V_2850_3000_log'}},
|
|
1264
1264
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1265
1265
|
const endpoint = device.getEndpoint(1);
|
|
@@ -1290,7 +1290,7 @@ module.exports = [
|
|
|
1290
1290
|
fromZigbee: [fz.xiaomi_basic, fz.DJT11LM_vibration],
|
|
1291
1291
|
toZigbee: [tz.DJT11LM_vibration_sensitivity],
|
|
1292
1292
|
exposes: [
|
|
1293
|
-
e.battery(), e.
|
|
1293
|
+
e.battery(), e.device_temperature(), e.vibration(), e.action(['vibration', 'tilt', 'drop']),
|
|
1294
1294
|
exposes.numeric('strength', ea.STATE), exposes.enum('sensitivity', ea.STATE_SET, ['low', 'medium', 'high']),
|
|
1295
1295
|
e.angle_axis('angle_x'), e.angle_axis('angle_y'), e.angle_axis('angle_z'), e.battery_voltage(),
|
|
1296
1296
|
],
|
|
@@ -1366,7 +1366,7 @@ module.exports = [
|
|
|
1366
1366
|
await device.getEndpoint(1).read('genAnalogOutput', ['presentValue']);
|
|
1367
1367
|
}
|
|
1368
1368
|
},
|
|
1369
|
-
exposes: [e.cover_position().setAccess('state', ea.ALL), e.battery().withAccess(ea.STATE_GET), e.
|
|
1369
|
+
exposes: [e.cover_position().setAccess('state', ea.ALL), e.battery().withAccess(ea.STATE_GET), e.device_temperature(),
|
|
1370
1370
|
exposes.binary('charging_status', ea.STATE_GET, true, false)
|
|
1371
1371
|
.withDescription('The current charging status.'),
|
|
1372
1372
|
exposes.enum('motor_state', ea.STATE, ['declining', 'rising', 'pause', 'blocked'])
|
|
@@ -1392,7 +1392,7 @@ module.exports = [
|
|
|
1392
1392
|
endpoint: (device) => {
|
|
1393
1393
|
return {'l1': 1, 'l2': 2};
|
|
1394
1394
|
},
|
|
1395
|
-
exposes: [e.power().withAccess(ea.STATE_GET), e.energy(), e.
|
|
1395
|
+
exposes: [e.power().withAccess(ea.STATE_GET), e.energy(), e.device_temperature(), e.voltage(), e.current(),
|
|
1396
1396
|
e.switch().withEndpoint('l1'), e.switch().withEndpoint('l2'), e.power_outage_count(false),
|
|
1397
1397
|
e.power_outage_memory(),
|
|
1398
1398
|
exposes.binary('interlock', ea.STATE_SET, true, false)
|
|
@@ -1593,7 +1593,7 @@ module.exports = [
|
|
|
1593
1593
|
description: 'Aqara single switch module T1 (with neutral)',
|
|
1594
1594
|
fromZigbee: [fz.on_off, fz.xiaomi_power, fz.aqara_opple],
|
|
1595
1595
|
toZigbee: [tz.on_off, tz.xiaomi_power, tz.xiaomi_switch_type, tz.xiaomi_switch_power_outage_memory, tz.xiaomi_led_disabled_night],
|
|
1596
|
-
exposes: [e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.
|
|
1596
|
+
exposes: [e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.device_temperature().withAccess(ea.STATE),
|
|
1597
1597
|
e.voltage().withAccess(ea.STATE), e.power_outage_memory(), e.led_disabled_night(), e.switch_type()],
|
|
1598
1598
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1599
1599
|
await device.getEndpoint(1).write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
|
|
@@ -1731,7 +1731,7 @@ module.exports = [
|
|
|
1731
1731
|
toZigbee: [tz.on_off, tz.xiaomi_switch_operation_mode_opple, tz.xiaomi_switch_power_outage_memory,
|
|
1732
1732
|
tz.aqara_switch_mode_switch, tz.xiaomi_flip_indicator_light],
|
|
1733
1733
|
exposes: [e.switch(), e.power_outage_memory(), e.action(['single', 'double']),
|
|
1734
|
-
e.
|
|
1734
|
+
e.device_temperature(), e.flip_indicator_light(),
|
|
1735
1735
|
exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled'])
|
|
1736
1736
|
.withDescription('Decoupled mode for button'),
|
|
1737
1737
|
exposes.enum('mode_switch', ea.ALL, ['anti_flicker_mode', 'quick_mode'])
|
|
@@ -1755,7 +1755,7 @@ module.exports = [
|
|
|
1755
1755
|
return {'left': 1, 'right': 2};
|
|
1756
1756
|
},
|
|
1757
1757
|
exposes: [
|
|
1758
|
-
e.switch().withEndpoint('left'), e.switch().withEndpoint('right'), e.
|
|
1758
|
+
e.switch().withEndpoint('left'), e.switch().withEndpoint('right'), e.device_temperature(),
|
|
1759
1759
|
exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled'])
|
|
1760
1760
|
.withDescription('Decoupled mode for left button')
|
|
1761
1761
|
.withEndpoint('left'),
|
|
@@ -1816,7 +1816,7 @@ module.exports = [
|
|
|
1816
1816
|
.withDescription('Decoupled mode for right button')
|
|
1817
1817
|
.withEndpoint('right'),
|
|
1818
1818
|
e.action(['single_left', 'double_left', 'single_right', 'double_right', 'single_both', 'double_both']),
|
|
1819
|
-
e.power_outage_memory(), e.
|
|
1819
|
+
e.power_outage_memory(), e.device_temperature(), e.flip_indicator_light(),
|
|
1820
1820
|
],
|
|
1821
1821
|
onEvent: preventReset,
|
|
1822
1822
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
@@ -1832,7 +1832,7 @@ module.exports = [
|
|
|
1832
1832
|
fromZigbee: [fz.on_off, fz.xiaomi_power, fz.aqara_opple],
|
|
1833
1833
|
toZigbee: [tz.on_off, tz.xiaomi_switch_power_outage_memory, tz.xiaomi_led_disabled_night,
|
|
1834
1834
|
tz.xiaomi_overload_protection, tz.xiaomi_socket_button_lock],
|
|
1835
|
-
exposes: [e.switch(), e.power().withAccess(ea.STATE), e.energy(), e.
|
|
1835
|
+
exposes: [e.switch(), e.power().withAccess(ea.STATE), e.energy(), e.device_temperature().withAccess(ea.STATE),
|
|
1836
1836
|
e.voltage().withAccess(ea.STATE), e.current(), e.consumer_connected().withAccess(ea.STATE),
|
|
1837
1837
|
e.power_outage_memory(), e.led_disabled_night(), e.button_lock(),
|
|
1838
1838
|
exposes.numeric('overload_protection', exposes.access.ALL).withValueMin(100).withValueMax(2500).withUnit('W')
|
|
@@ -1847,7 +1847,7 @@ module.exports = [
|
|
|
1847
1847
|
fromZigbee: [fz.on_off, fz.xiaomi_multistate_action, fz.aqara_opple],
|
|
1848
1848
|
toZigbee: [tz.on_off, tz.xiaomi_switch_operation_mode_opple, tz.xiaomi_switch_power_outage_memory,
|
|
1849
1849
|
tz.xiaomi_flip_indicator_light],
|
|
1850
|
-
exposes: [e.switch(), e.action(['single', 'double']), e.power_outage_memory(), e.
|
|
1850
|
+
exposes: [e.switch(), e.action(['single', 'double']), e.power_outage_memory(), e.device_temperature(), e.flip_indicator_light(),
|
|
1851
1851
|
exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled']).withDescription('Decoupled mode')],
|
|
1852
1852
|
onEvent: preventReset,
|
|
1853
1853
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
@@ -1900,7 +1900,7 @@ module.exports = [
|
|
|
1900
1900
|
},
|
|
1901
1901
|
exposes: [
|
|
1902
1902
|
e.switch().withEndpoint('relay'), e.switch().withEndpoint('usb'),
|
|
1903
|
-
e.power().withAccess(ea.STATE), e.energy(), e.
|
|
1903
|
+
e.power().withAccess(ea.STATE), e.energy(), e.device_temperature().withAccess(ea.STATE), e.voltage().withAccess(ea.STATE),
|
|
1904
1904
|
e.current(), e.power_outage_memory(), e.led_disabled_night(), e.button_lock(),
|
|
1905
1905
|
exposes.enum('button_switch_mode', exposes.access.ALL, ['relay', 'relay_and_usb'])
|
|
1906
1906
|
.withDescription('Control both relay and usb or only the relay with the physical switch button'),
|
|
@@ -1928,7 +1928,7 @@ module.exports = [
|
|
|
1928
1928
|
tz.xiaomi_overload_protection, tz.xiaomi_socket_button_lock],
|
|
1929
1929
|
exposes: [
|
|
1930
1930
|
e.switch(), e.power().withAccess(ea.STATE), e.energy(),
|
|
1931
|
-
e.
|
|
1931
|
+
e.device_temperature().withAccess(ea.STATE), e.voltage().withAccess(ea.STATE),
|
|
1932
1932
|
e.current(), e.power_outage_memory(), e.led_disabled_night(), e.button_lock(),
|
|
1933
1933
|
exposes.numeric('overload_protection', exposes.access.ALL).withValueMin(100).withValueMax(2500).withUnit('W')
|
|
1934
1934
|
.withDescription('Maximum allowed load, turns off if exceeded')],
|
package/devices/zemismart.js
CHANGED
|
@@ -70,6 +70,8 @@ module.exports = [
|
|
|
70
70
|
whiteLabel: [{vendor: 'BSEED', model: 'TS0003', description: 'Zigbee switch'}],
|
|
71
71
|
meta: {multiEndpoint: true, disableDefaultResponse: true},
|
|
72
72
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
73
|
+
await device.getEndpoint(1).read('genBasic',
|
|
74
|
+
['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
73
75
|
await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
|
|
74
76
|
await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
|
|
75
77
|
await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
|
package/lib/xiaomi.js
CHANGED
|
@@ -158,12 +158,11 @@ const numericAttributes2Payload = (msg, meta, model, options, dataObject) => {
|
|
|
158
158
|
}
|
|
159
159
|
break;
|
|
160
160
|
case '3':
|
|
161
|
-
if (['
|
|
162
|
-
//
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
payload.temperature = calibrateAndPrecisionRoundOptions(value, options, 'temperature'); // 0x03
|
|
161
|
+
if (['WXCJKG11LM', 'WXCJKG12LM', 'WXCJKG13LM'].includes(model.model)) {
|
|
162
|
+
// The temperature value is constant 25 °C and does not change, so we ignore it
|
|
163
|
+
// https://github.com/Koenkk/zigbee2mqtt/issues/11126
|
|
164
|
+
} else {
|
|
165
|
+
payload.device_temperature = calibrateAndPrecisionRoundOptions(value, options, 'device_temperature'); // 0x03
|
|
167
166
|
}
|
|
168
167
|
break;
|
|
169
168
|
case '4':
|