zigbee-herdsman-converters 15.0.19 → 15.0.21
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 +33 -3
- package/devices/bosch.js +20 -0
- package/devices/datek.js +11 -10
- package/devices/essentialb.js +11 -0
- package/devices/lidl.js +3 -2
- package/devices/namron.js +21 -0
- package/devices/nodon.js +35 -0
- package/devices/philips.js +73 -3
- package/devices/sonoff.js +1 -1
- package/lib/exposes.js +2 -1
- package/package.json +1 -1
package/converters/fromZigbee.js
CHANGED
|
@@ -794,37 +794,58 @@ const converters = {
|
|
|
794
794
|
on_off: {
|
|
795
795
|
cluster: 'genOnOff',
|
|
796
796
|
type: ['attributeReport', 'readResponse'],
|
|
797
|
+
options: [exposes.options.state_action()],
|
|
797
798
|
convert: (model, msg, publish, options, meta) => {
|
|
798
799
|
if (msg.data.hasOwnProperty('onOff')) {
|
|
800
|
+
const payload = {};
|
|
799
801
|
const property = postfixWithEndpointName('state', msg, model, meta);
|
|
800
|
-
|
|
802
|
+
const state = msg.data['onOff'] === 1 ? 'ON' : 'OFF';
|
|
803
|
+
payload[property] = state;
|
|
804
|
+
if (options && options.state_action) {
|
|
805
|
+
payload['action'] = postfixWithEndpointName(state.toLowerCase(), msg, model, meta);
|
|
806
|
+
}
|
|
807
|
+
return payload;
|
|
801
808
|
}
|
|
802
809
|
},
|
|
803
810
|
},
|
|
804
811
|
on_off_force_multiendpoint: {
|
|
805
812
|
cluster: 'genOnOff',
|
|
806
813
|
type: ['attributeReport', 'readResponse'],
|
|
814
|
+
options: [exposes.options.state_action()],
|
|
807
815
|
convert: (model, msg, publish, options, meta) => {
|
|
808
816
|
// This converted is need instead of `fz.on_off` when no meta: {multiEndpoint: true} can be defined for this device
|
|
809
817
|
// but it is needed for the `state`. E.g. when a switch has 3 channels (state_l1, state_l2, state_l3) but
|
|
810
818
|
// has combined power measurements (power, energy))
|
|
811
819
|
if (msg.data.hasOwnProperty('onOff')) {
|
|
820
|
+
const payload = {};
|
|
812
821
|
const endpointName = model.hasOwnProperty('endpoint') ?
|
|
813
822
|
utils.getKey(model.endpoint(meta.device), msg.endpoint.ID) : msg.endpoint.ID;
|
|
814
|
-
|
|
823
|
+
const state = msg.data['onOff'] === 1 ? 'ON' : 'OFF';
|
|
824
|
+
payload[`state_${endpointName}`] = state;
|
|
825
|
+
if (options && options.state_action) {
|
|
826
|
+
payload['action'] = `${state.toLowerCase()}_${endpointName}`;
|
|
827
|
+
}
|
|
828
|
+
return payload;
|
|
815
829
|
}
|
|
816
830
|
},
|
|
817
831
|
},
|
|
818
832
|
on_off_skip_duplicate_transaction: {
|
|
819
833
|
cluster: 'genOnOff',
|
|
820
834
|
type: ['attributeReport', 'readResponse'],
|
|
835
|
+
options: [exposes.options.state_action()],
|
|
821
836
|
convert: (model, msg, publish, options, meta) => {
|
|
822
837
|
// Device sends multiple messages with the same transactionSequenceNumber,
|
|
823
838
|
// prevent that multiple messages get send.
|
|
824
839
|
// https://github.com/Koenkk/zigbee2mqtt/issues/3687
|
|
825
840
|
if (msg.data.hasOwnProperty('onOff') && !hasAlreadyProcessedMessage(msg, model)) {
|
|
841
|
+
const payload = {};
|
|
826
842
|
const property = postfixWithEndpointName('state', msg, model, meta);
|
|
827
|
-
|
|
843
|
+
const state = msg.data['onOff'] === 1 ? 'ON' : 'OFF';
|
|
844
|
+
payload[property] = state;
|
|
845
|
+
if (options && options.state_action) {
|
|
846
|
+
payload['action'] = postfixWithEndpointName(state.toLowerCase(), msg, model, meta);
|
|
847
|
+
}
|
|
848
|
+
return payload;
|
|
828
849
|
}
|
|
829
850
|
},
|
|
830
851
|
},
|
|
@@ -8291,6 +8312,15 @@ const converters = {
|
|
|
8291
8312
|
return result;
|
|
8292
8313
|
},
|
|
8293
8314
|
},
|
|
8315
|
+
hw_version: {
|
|
8316
|
+
cluster: 'genBasic',
|
|
8317
|
+
type: ['attributeReport', 'readResponse'],
|
|
8318
|
+
convert: (model, msg, publish, options, meta) => {
|
|
8319
|
+
const result = {};
|
|
8320
|
+
if (msg.data.hasOwnProperty('hwVersion')) result['hw_version'] = msg.data.hwVersion;
|
|
8321
|
+
return result;
|
|
8322
|
+
},
|
|
8323
|
+
},
|
|
8294
8324
|
// #endregion
|
|
8295
8325
|
|
|
8296
8326
|
// #region Ignore converters (these message dont need parsing).
|
package/devices/bosch.js
CHANGED
|
@@ -508,6 +508,26 @@ const definition = [
|
|
|
508
508
|
exposes.enum('heartbeat', ea.ALL, Object.keys(stateOffOn)).withDescription('Enable/disable heartbeat'),
|
|
509
509
|
],
|
|
510
510
|
},
|
|
511
|
+
{
|
|
512
|
+
zigbeeModel: ['RBSH-SP-ZB-EU'],
|
|
513
|
+
model: 'BSP-FZ2',
|
|
514
|
+
vendor: 'Bosch',
|
|
515
|
+
description: 'Plug compact EU',
|
|
516
|
+
fromZigbee: [fz.on_off, fz.power_on_behavior, fz.electrical_measurement, fz.metering],
|
|
517
|
+
toZigbee: [tz.on_off, tz.power_on_behavior],
|
|
518
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
519
|
+
const endpoint = device.getEndpoint(1);
|
|
520
|
+
await endpoint.read('genOnOff', ['onOff', 'startUpOnOff']);
|
|
521
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
|
|
522
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['seMetering']);
|
|
523
|
+
await reporting.readMeteringMultiplierDivisor(endpoint);
|
|
524
|
+
await reporting.currentSummDelivered(endpoint, {change: [0, 1]});
|
|
525
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['haElectricalMeasurement']);
|
|
526
|
+
await endpoint.read('haElectricalMeasurement', ['acPowerMultiplier', 'acPowerDivisor']);
|
|
527
|
+
await reporting.activePower(endpoint);
|
|
528
|
+
},
|
|
529
|
+
exposes: [e.switch(), e.power_on_behavior(), e.power(), e.energy()],
|
|
530
|
+
},
|
|
511
531
|
];
|
|
512
532
|
|
|
513
533
|
module.exports = definition;
|
package/devices/datek.js
CHANGED
|
@@ -10,7 +10,7 @@ const ea = exposes.access;
|
|
|
10
10
|
|
|
11
11
|
module.exports = [
|
|
12
12
|
{
|
|
13
|
-
|
|
13
|
+
fingerprint: [{modelID: 'PoP', manufacturerName: 'Eva'}],
|
|
14
14
|
model: 'HLU2909K',
|
|
15
15
|
vendor: 'Datek',
|
|
16
16
|
description: 'APEX smart plug 16A',
|
|
@@ -31,21 +31,23 @@ module.exports = [
|
|
|
31
31
|
exposes: [e.power(), e.current(), e.voltage(), e.switch(), e.temperature()],
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
|
-
|
|
34
|
+
fingerprint: [{modelID: 'Meter Reader', manufacturerName: 'Eva'}],
|
|
35
35
|
model: 'HSE2905E',
|
|
36
36
|
vendor: 'Datek',
|
|
37
37
|
description: 'Datek Eva AMS HAN power-meter sensor',
|
|
38
|
-
fromZigbee: [fz.metering_datek, fz.electrical_measurement, fz.temperature],
|
|
38
|
+
fromZigbee: [fz.metering_datek, fz.electrical_measurement, fz.temperature, fz.hw_version],
|
|
39
39
|
toZigbee: [],
|
|
40
40
|
ota: ota.zigbeeOTA,
|
|
41
41
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
42
42
|
const endpoint = device.getEndpoint(1);
|
|
43
43
|
await reporting.bind(endpoint, coordinatorEndpoint, ['haElectricalMeasurement', 'seMetering', 'msTemperatureMeasurement']);
|
|
44
|
+
await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
|
|
44
45
|
await reporting.readMeteringMultiplierDivisor(endpoint);
|
|
45
46
|
try {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
// hwVersion < 2 do not support hwVersion attribute, so we are testing if this is hwVersion 1 or 2
|
|
48
|
+
await endpoint.read('genBasic', ['hwVersion']);
|
|
49
|
+
} catch (e) {
|
|
50
|
+
e;
|
|
49
51
|
}
|
|
50
52
|
const payload = [{
|
|
51
53
|
attribute: 'rmsVoltagePhB',
|
|
@@ -78,8 +80,6 @@ module.exports = [
|
|
|
78
80
|
await reporting.currentSummDelivered(endpoint, {min: 60, max: 3600, change: [1, 1]});
|
|
79
81
|
await reporting.currentSummReceived(endpoint);
|
|
80
82
|
await reporting.temperature(endpoint, {min: 60, max: 3600, change: 0});
|
|
81
|
-
device.powerSource = 'DC source';
|
|
82
|
-
device.save();
|
|
83
83
|
},
|
|
84
84
|
exposes: [e.power(), e.energy(), e.current(), e.voltage(), e.current_phase_b(), e.voltage_phase_b(), e.current_phase_c(),
|
|
85
85
|
e.voltage_phase_c(), e.temperature()],
|
|
@@ -113,7 +113,7 @@ module.exports = [
|
|
|
113
113
|
exposes.numeric('occupancy_timeout', ea.ALL).withUnit('seconds').withValueMin(0).withValueMax(65535)],
|
|
114
114
|
},
|
|
115
115
|
{
|
|
116
|
-
|
|
116
|
+
fingerprint: [{modelID: 'ID Lock 150', manufacturerName: 'Eva'}],
|
|
117
117
|
model: '0402946',
|
|
118
118
|
vendor: 'Datek',
|
|
119
119
|
description: 'Zigbee module for ID lock 150',
|
|
@@ -187,7 +187,7 @@ module.exports = [
|
|
|
187
187
|
'random_pin_24_hours']).withDescription('Service Mode of the Lock')],
|
|
188
188
|
},
|
|
189
189
|
{
|
|
190
|
-
|
|
190
|
+
fingerprint: [{modelID: 'Water Sensor', manufacturerName: 'Eva'}],
|
|
191
191
|
model: 'HSE2919E',
|
|
192
192
|
vendor: 'Datek',
|
|
193
193
|
description: 'Eva water leak sensor',
|
|
@@ -228,6 +228,7 @@ module.exports = [
|
|
|
228
228
|
'brightness_move_down', 'brightness_move_up', 'brightness_stop'])],
|
|
229
229
|
},
|
|
230
230
|
{
|
|
231
|
+
fingerprint: [{modelID: 'Door/Window Sensor', manufacturerName: 'Eva'}],
|
|
231
232
|
zigbeeModel: ['Door/Window Sensor'],
|
|
232
233
|
model: 'HSE2920E',
|
|
233
234
|
vendor: 'Datek',
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const extend = require('../lib/extend');
|
|
2
|
+
|
|
3
|
+
module.exports = [
|
|
4
|
+
{
|
|
5
|
+
zigbeeModel: ['EB-E14-P45-RGBW'],
|
|
6
|
+
model: 'EB-E14-P45-RGBW',
|
|
7
|
+
vendor: 'EssentielB',
|
|
8
|
+
description: 'Smart LED bulb',
|
|
9
|
+
extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
|
|
10
|
+
},
|
|
11
|
+
];
|
package/devices/lidl.js
CHANGED
|
@@ -409,14 +409,15 @@ module.exports = [
|
|
|
409
409
|
model: 'HG08164',
|
|
410
410
|
vendor: 'Lidl',
|
|
411
411
|
description: 'Silvercrest smart button',
|
|
412
|
-
fromZigbee: [fz.command_on, fz.command_off, fz.command_step, fz.command_stop, fz.battery],
|
|
412
|
+
fromZigbee: [fz.command_on, fz.command_off, fz.command_step, fz.command_stop, fz.battery, fz.tuya_on_off_action],
|
|
413
413
|
toZigbee: [],
|
|
414
414
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
415
415
|
const endpoint = device.getEndpoint(1);
|
|
416
416
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
|
417
417
|
await reporting.batteryPercentageRemaining(endpoint);
|
|
418
418
|
},
|
|
419
|
-
exposes: [e.action(
|
|
419
|
+
exposes: [e.action(
|
|
420
|
+
['on', 'off', 'brightness_stop', 'brightness_step_up', 'brightness_step_down', 'single', 'double']), e.battery()],
|
|
420
421
|
},
|
|
421
422
|
{
|
|
422
423
|
fingerprint: [{modelID: 'TS0211', manufacturerName: '_TZ1800_ladpngdx'}],
|
package/devices/namron.js
CHANGED
|
@@ -734,4 +734,25 @@ module.exports = [
|
|
|
734
734
|
extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 555]}),
|
|
735
735
|
meta: {turnsOffAtBrightness1: true},
|
|
736
736
|
},
|
|
737
|
+
{
|
|
738
|
+
zigbeeModel: ['4512749'],
|
|
739
|
+
model: '4512749',
|
|
740
|
+
vendor: 'Namron',
|
|
741
|
+
description: 'Thermostat outlet socket',
|
|
742
|
+
fromZigbee: [fz.metering, fz.electrical_measurement, fz.on_off, fz.temperature],
|
|
743
|
+
toZigbee: [tz.on_off, tz.power_on_behavior],
|
|
744
|
+
exposes: [e.temperature(), e.power(), e.current(), e.voltage(), e.switch(), e.power_on_behavior()],
|
|
745
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
746
|
+
const endpoint = device.getEndpoint(1);
|
|
747
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'msTemperatureMeasurement']);
|
|
748
|
+
await endpoint.read('haElectricalMeasurement', ['acVoltageMultiplier', 'acVoltageDivisor']);
|
|
749
|
+
await endpoint.read('haElectricalMeasurement', ['acPowerMultiplier', 'acPowerDivisor']);
|
|
750
|
+
await endpoint.read('haElectricalMeasurement', ['acCurrentMultiplier', 'acCurrentDivisor']);
|
|
751
|
+
await reporting.onOff(endpoint);
|
|
752
|
+
await reporting.temperature(endpoint);
|
|
753
|
+
await reporting.rmsVoltage(endpoint);
|
|
754
|
+
await reporting.rmsCurrent(endpoint);
|
|
755
|
+
await reporting.activePower(endpoint);
|
|
756
|
+
},
|
|
757
|
+
},
|
|
737
758
|
];
|
package/devices/nodon.js
CHANGED
|
@@ -51,6 +51,21 @@ module.exports = [
|
|
|
51
51
|
return {default: 1};
|
|
52
52
|
},
|
|
53
53
|
},
|
|
54
|
+
{
|
|
55
|
+
zigbeeModel: ['SIN-4-1-20_PRO'],
|
|
56
|
+
model: 'SIN-4-1-20_PRO',
|
|
57
|
+
vendor: 'NodOn',
|
|
58
|
+
description: 'Single LED relay',
|
|
59
|
+
extend: extend.switch(),
|
|
60
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
61
|
+
const ep = device.getEndpoint(1);
|
|
62
|
+
await reporting.bind(ep, coordinatorEndpoint, ['genOnOff']);
|
|
63
|
+
await reporting.onOff(ep);
|
|
64
|
+
},
|
|
65
|
+
endpoint: (device) => {
|
|
66
|
+
return {default: 1};
|
|
67
|
+
},
|
|
68
|
+
},
|
|
54
69
|
{
|
|
55
70
|
zigbeeModel: ['SIN-4-2-20'],
|
|
56
71
|
model: 'SIN-4-2-20',
|
|
@@ -71,4 +86,24 @@ module.exports = [
|
|
|
71
86
|
await reporting.onOff(ep2);
|
|
72
87
|
},
|
|
73
88
|
},
|
|
89
|
+
{
|
|
90
|
+
zigbeeModel: ['SIN-4-2-20_PRO'],
|
|
91
|
+
model: 'SIN-4-2-20_PRO',
|
|
92
|
+
vendor: 'NodOn',
|
|
93
|
+
description: 'Double LED relay',
|
|
94
|
+
exposes: [e.switch().withEndpoint('l1'), e.switch().withEndpoint('l2')],
|
|
95
|
+
extend: extend.switch(),
|
|
96
|
+
endpoint: (device) => {
|
|
97
|
+
return {'l1': 1, 'l2': 2};
|
|
98
|
+
},
|
|
99
|
+
meta: {multiEndpoint: true},
|
|
100
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
101
|
+
const ep1 = device.getEndpoint(1);
|
|
102
|
+
const ep2 = device.getEndpoint(2);
|
|
103
|
+
await reporting.bind(ep1, coordinatorEndpoint, ['genOnOff']);
|
|
104
|
+
await reporting.bind(ep2, coordinatorEndpoint, ['genOnOff']);
|
|
105
|
+
await reporting.onOff(ep1);
|
|
106
|
+
await reporting.onOff(ep2);
|
|
107
|
+
},
|
|
108
|
+
},
|
|
74
109
|
];
|
package/devices/philips.js
CHANGED
|
@@ -979,7 +979,7 @@ module.exports = [
|
|
|
979
979
|
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
980
980
|
},
|
|
981
981
|
{
|
|
982
|
-
zigbeeModel: ['LCG002', '929003047701'],
|
|
982
|
+
zigbeeModel: ['LCG002', '929003047701', '929003047701'],
|
|
983
983
|
model: '929001953101',
|
|
984
984
|
vendor: 'Philips',
|
|
985
985
|
description: 'Hue White and Color Ambiance GU10',
|
|
@@ -1288,7 +1288,7 @@ module.exports = [
|
|
|
1288
1288
|
model: '1743930P7',
|
|
1289
1289
|
vendor: 'Philips',
|
|
1290
1290
|
description: 'Hue Outdoor Econic wall lantern',
|
|
1291
|
-
extend: hueExtend.light_onoff_brightness_colortemp_color(),
|
|
1291
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({disableHueEffects: false, colorTempRange: [153, 500]}),
|
|
1292
1292
|
},
|
|
1293
1293
|
{
|
|
1294
1294
|
zigbeeModel: ['929003053001'],
|
|
@@ -1458,6 +1458,13 @@ module.exports = [
|
|
|
1458
1458
|
description: 'Hue white ambiance E26 with Bluetooth',
|
|
1459
1459
|
extend: hueExtend.light_onoff_brightness_colortemp(),
|
|
1460
1460
|
},
|
|
1461
|
+
{
|
|
1462
|
+
zigbeeModel: ['LTO003'],
|
|
1463
|
+
model: '9290024782',
|
|
1464
|
+
vendor: 'Philips',
|
|
1465
|
+
description: 'Hue G125 B22 White Ambiance filament bulb',
|
|
1466
|
+
extend: hueExtend.light_onoff_brightness(),
|
|
1467
|
+
},
|
|
1461
1468
|
{
|
|
1462
1469
|
zigbeeModel: ['LTW010', 'LTW001', 'LTW004'],
|
|
1463
1470
|
model: '8718696548738',
|
|
@@ -1956,7 +1963,7 @@ module.exports = [
|
|
|
1956
1963
|
extend: hueExtend.light_onoff_brightness_colortemp_color_gradient({colorTempRange: [153, 500]}),
|
|
1957
1964
|
},
|
|
1958
1965
|
{
|
|
1959
|
-
zigbeeModel: ['
|
|
1966
|
+
zigbeeModel: ['929003479701'],
|
|
1960
1967
|
model: '915005987701',
|
|
1961
1968
|
vendor: 'Philips',
|
|
1962
1969
|
description: 'Hue Gradient Signe floor lamp (wood)',
|
|
@@ -3021,6 +3028,13 @@ module.exports = [
|
|
|
3021
3028
|
description: 'Hue White Ambiance E27 filament screw globe',
|
|
3022
3029
|
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [222, 454]}),
|
|
3023
3030
|
},
|
|
3031
|
+
{
|
|
3032
|
+
zigbeeModel: ['LTA006'],
|
|
3033
|
+
model: '8719514301443',
|
|
3034
|
+
vendor: 'Philips',
|
|
3035
|
+
description: 'Hue White Ambiance B22 filament screw globe',
|
|
3036
|
+
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [222, 454]}),
|
|
3037
|
+
},
|
|
3024
3038
|
{
|
|
3025
3039
|
zigbeeModel: ['LWE006'],
|
|
3026
3040
|
model: '929002294102',
|
|
@@ -3309,4 +3323,60 @@ module.exports = [
|
|
|
3309
3323
|
description: 'Hue white ambiance extra bright high lumen dimmable LED smart retrofit recessed 6" downlight',
|
|
3310
3324
|
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 500]}),
|
|
3311
3325
|
},
|
|
3326
|
+
{
|
|
3327
|
+
zigbeeModel: ['929003115801'],
|
|
3328
|
+
model: '929003115801',
|
|
3329
|
+
vendor: 'Philips',
|
|
3330
|
+
description: 'Hue Perifo ceiling light, 1 pendant (white)',
|
|
3331
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
3332
|
+
},
|
|
3333
|
+
{
|
|
3334
|
+
zigbeeModel: ['929003116201'],
|
|
3335
|
+
model: '929003116201',
|
|
3336
|
+
vendor: 'Philips',
|
|
3337
|
+
description: 'Hue Perifo linear light bar',
|
|
3338
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
3339
|
+
},
|
|
3340
|
+
{
|
|
3341
|
+
zigbeeModel: ['929003115901'],
|
|
3342
|
+
model: '929003117101',
|
|
3343
|
+
vendor: 'Philips',
|
|
3344
|
+
description: 'Hue Perifo ceiling light, 3 pendant (black)',
|
|
3345
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
3346
|
+
},
|
|
3347
|
+
{
|
|
3348
|
+
zigbeeModel: ['929003117201'],
|
|
3349
|
+
model: '929003117201',
|
|
3350
|
+
vendor: 'Philips',
|
|
3351
|
+
description: 'Hue Perifo ceiling light, 3 pendant (white)',
|
|
3352
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
3353
|
+
},
|
|
3354
|
+
{
|
|
3355
|
+
zigbeeModel: ['929003117301'],
|
|
3356
|
+
model: '929003117301',
|
|
3357
|
+
vendor: 'Philips',
|
|
3358
|
+
description: 'Hue Perifo ceiling light, 4 spotlights (black)',
|
|
3359
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
3360
|
+
},
|
|
3361
|
+
{
|
|
3362
|
+
zigbeeModel: ['929003117401'],
|
|
3363
|
+
model: '929003117401',
|
|
3364
|
+
vendor: 'Philips',
|
|
3365
|
+
description: 'Hue Perifo ceiling light, 4 spotlights (white)',
|
|
3366
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
3367
|
+
},
|
|
3368
|
+
{
|
|
3369
|
+
zigbeeModel: ['929003117701'],
|
|
3370
|
+
model: '929003117701',
|
|
3371
|
+
vendor: 'Philips',
|
|
3372
|
+
description: 'Hue Perifo Wall Light, 3 spotlights (black)',
|
|
3373
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
3374
|
+
},
|
|
3375
|
+
{
|
|
3376
|
+
zigbeeModel: ['929003117801'],
|
|
3377
|
+
model: '929003117801',
|
|
3378
|
+
vendor: 'Philips',
|
|
3379
|
+
description: 'Hue Perifo Wall Light, 3 spotlights (white)',
|
|
3380
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
3381
|
+
},
|
|
3312
3382
|
];
|
package/devices/sonoff.js
CHANGED
|
@@ -90,7 +90,7 @@ module.exports = [
|
|
|
90
90
|
model: 'S31ZB',
|
|
91
91
|
vendor: 'SONOFF',
|
|
92
92
|
description: 'Zigbee smart plug (US version)',
|
|
93
|
-
extend: extend.switch(),
|
|
93
|
+
extend: extend.switch({disablePowerOnBehavior: true}),
|
|
94
94
|
fromZigbee: [fz.on_off_skip_duplicate_transaction],
|
|
95
95
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
96
96
|
const endpoint = device.getEndpoint(1);
|
package/lib/exposes.js
CHANGED
|
@@ -521,6 +521,7 @@ module.exports = {
|
|
|
521
521
|
legacy: () => new Binary(`legacy`, access.SET, true, false).withDescription(`Set to false to disable the legacy integration (highly recommended), will change structure of the published payload (default true).`),
|
|
522
522
|
measurement_poll_interval: (extraNote='') => new Numeric(`measurement_poll_interval`, access.SET).withValueMin(-1).withDescription(`This device does not support reporting electric measurements so it is polled instead. The default poll interval is 60 seconds, set to -1 to disable.${extraNote}`),
|
|
523
523
|
illuminance_below_threshold_check: () => new Binary(`illuminance_below_threshold_check`, access.SET, true, false).withDescription(`Set to false to also send messages when illuminance is above threshold in night mode (default true).`),
|
|
524
|
+
state_action: () => new Binary(`state_action`, access.SET, true, false).withDescription(`State actions will also be published as 'action' when true (default false).`),
|
|
524
525
|
},
|
|
525
526
|
presets: {
|
|
526
527
|
ac_frequency: () => new Numeric('ac_frequency', access.STATE).withUnit('Hz').withDescription('Measured electrical AC frequency'),
|
|
@@ -534,7 +535,7 @@ module.exports = {
|
|
|
534
535
|
away_mode: () => new Switch().withState('away_mode', false, 'Enable/disable away mode', access.STATE_SET),
|
|
535
536
|
away_preset_days: () => new Numeric('away_preset_days', access.STATE_SET).withDescription('Away preset days').withValueMin(0).withValueMax(100),
|
|
536
537
|
away_preset_temperature: () => new Numeric('away_preset_temperature', access.STATE_SET).withUnit('°C').withDescription('Away preset temperature').withValueMin(-10).withValueMax(35),
|
|
537
|
-
battery: () => new Numeric('battery', access.STATE).withUnit('%').withDescription('Remaining battery in
|
|
538
|
+
battery: () => new Numeric('battery', access.STATE).withUnit('%').withDescription('Remaining battery in %, can take up to 24 hours before reported.').withValueMin(0).withValueMax(100),
|
|
538
539
|
battery_low: () => new Binary('battery_low', access.STATE, true, false).withDescription('Indicates if the battery of this device is almost empty'),
|
|
539
540
|
battery_voltage: () => new Numeric('voltage', access.STATE).withUnit('mV').withDescription('Voltage of the battery in millivolts'),
|
|
540
541
|
boost_time: () => new Numeric('boost_time', access.STATE_SET).withUnit('s').withDescription('Boost time').withValueMin(0).withValueMax(900),
|