zigbee-herdsman-converters 14.0.337 → 14.0.341
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 -7
- package/devices/custom_devices_diy.js +17 -0
- package/devices/danfoss.js +4 -2
- package/devices/develco.js +1 -1
- package/devices/diyruz.js +20 -13
- package/devices/fantem.js +8 -4
- package/devices/heiman.js +4 -2
- package/devices/hive.js +4 -2
- package/devices/ikea.js +2 -2
- package/devices/immax.js +8 -4
- package/devices/javis.js +2 -1
- package/devices/lidl.js +5 -3
- package/devices/moes.js +5 -31
- package/devices/namron.js +7 -0
- package/devices/neo.js +5 -5
- package/devices/philips.js +3 -3
- package/devices/popp.js +4 -2
- package/devices/tuya.js +34 -14
- package/lib/exposes.js +11 -11
- package/npm-shrinkwrap.json +30 -30
- package/package.json +2 -2
package/converters/fromZigbee.js
CHANGED
|
@@ -2318,20 +2318,20 @@ const converters = {
|
|
|
2318
2318
|
exposes.options.precision('humidity'), exposes.options.calibration('humidity')],
|
|
2319
2319
|
convert: (model, msg, publish, options, meta) => {
|
|
2320
2320
|
const dp = msg.data.dp;
|
|
2321
|
-
|
|
2321
|
+
const value = tuya.getDataValue(msg.data.datatype, msg.data.data);
|
|
2322
|
+
|
|
2323
|
+
if (dp === 101) return {occupancy: value > 0 ? true : false};
|
|
2322
2324
|
else if (dp === 102) {
|
|
2323
|
-
const value = msg.data.data[0];
|
|
2324
2325
|
return {
|
|
2325
2326
|
power_type: {0: 'battery_full', 1: 'battery_high', 2: 'battery_medium', 3: 'battery_low', 4: 'usb'}[value],
|
|
2326
2327
|
battery_low: value === 3,
|
|
2327
2328
|
};
|
|
2328
2329
|
} else if (dp === 103) {
|
|
2329
|
-
return {tamper:
|
|
2330
|
+
return {tamper: value > 0 ? true : false};
|
|
2330
2331
|
} else if (dp === 104) {
|
|
2331
|
-
|
|
2332
|
-
return {temperature: calibrateAndPrecisionRoundOptions(temperature, options, 'temperature')};
|
|
2332
|
+
return {temperature: calibrateAndPrecisionRoundOptions(value / 10, options, 'temperature')};
|
|
2333
2333
|
} else if (dp === 105) {
|
|
2334
|
-
return {humidity: calibrateAndPrecisionRoundOptions(
|
|
2334
|
+
return {humidity: calibrateAndPrecisionRoundOptions(value, options, 'humidity')};
|
|
2335
2335
|
} else {
|
|
2336
2336
|
meta.logger.warn(`zigbee-herdsman-converters:NEO-PD07: NOT RECOGNIZED DP #${dp} with data ${JSON.stringify(msg.data)}`);
|
|
2337
2337
|
}
|
|
@@ -2735,7 +2735,7 @@ const converters = {
|
|
|
2735
2735
|
const currentTime = new Date().getTime();
|
|
2736
2736
|
const utcTime = Math.round((currentTime - OneJanuary2000) / 1000);
|
|
2737
2737
|
const localTime = Math.round(currentTime / 1000) - (new Date()).getTimezoneOffset() * 60;
|
|
2738
|
-
const endpoint = msg.
|
|
2738
|
+
const endpoint = msg.endpoint;
|
|
2739
2739
|
const payload = {
|
|
2740
2740
|
payloadSize: 8,
|
|
2741
2741
|
payload: [
|
|
@@ -4927,6 +4927,11 @@ const converters = {
|
|
|
4927
4927
|
value = data.readUInt32LE(i+2);
|
|
4928
4928
|
i += 5;
|
|
4929
4929
|
break;
|
|
4930
|
+
case 36:
|
|
4931
|
+
// 0x24 Zcl40BitUint
|
|
4932
|
+
value = [data.readUInt32LE(i+2), data.readUInt8(i+6)];
|
|
4933
|
+
i += 6;
|
|
4934
|
+
break;
|
|
4930
4935
|
case 39:
|
|
4931
4936
|
// 0x27 Zcl64BitUint
|
|
4932
4937
|
value = data.readBigUInt64BE(i+2);
|
|
@@ -252,4 +252,21 @@ module.exports = [
|
|
|
252
252
|
},
|
|
253
253
|
exposes: [e.battery(), e.temperature(), e.humidity()],
|
|
254
254
|
},
|
|
255
|
+
{
|
|
256
|
+
zigbeeModel: ['EFEKTA_miniPWS'],
|
|
257
|
+
model: 'EFEKTA_miniPWS',
|
|
258
|
+
vendor: 'Custom devices (DiY)',
|
|
259
|
+
description: '[Mini plant wattering sensor](http://efektalab.com/miniPWS)',
|
|
260
|
+
fromZigbee: [fz.soil_moisture, fz.battery],
|
|
261
|
+
toZigbee: [tz.factory_reset],
|
|
262
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
263
|
+
const firstEndpoint = device.getEndpoint(1);
|
|
264
|
+
await reporting.bind(firstEndpoint, coordinatorEndpoint, ['genPowerCfg', 'msSoilMoisture']);
|
|
265
|
+
const overides = {min: 0, max: 21600, change: 0};
|
|
266
|
+
await reporting.batteryVoltage(firstEndpoint, overides);
|
|
267
|
+
await reporting.batteryPercentageRemaining(firstEndpoint, overides);
|
|
268
|
+
await reporting.soil_moisture(firstEndpoint, overides);
|
|
269
|
+
},
|
|
270
|
+
exposes: [e.soil_moisture(), e.battery()],
|
|
271
|
+
},
|
|
255
272
|
];
|
package/devices/danfoss.js
CHANGED
|
@@ -45,7 +45,8 @@ module.exports = [
|
|
|
45
45
|
.withSystemMode(['heat']).withRunningState(['idle', 'heat'], ea.STATE),
|
|
46
46
|
exposes.numeric('external_measured_room_sensor', ea.ALL)
|
|
47
47
|
.withDescription('Set at maximum 3 hours interval but not more often than every 30 minutes and 0.1 ' +
|
|
48
|
-
'degrees difference. Resets every 3hours to standard. e.g. 21C = 2100 (-8000=undefined).')
|
|
48
|
+
'degrees difference. Resets every 3hours to standard. e.g. 21C = 2100 (-8000=undefined).')
|
|
49
|
+
.withValueMin(-8000).withValueMax(3500),
|
|
49
50
|
exposes.numeric('window_open_internal', ea.STATE_GET).withValueMin(0).withValueMax(4)
|
|
50
51
|
.withDescription('0=Quarantine, 1=Windows are closed, 2=Hold - Windows are maybe about to open, ' +
|
|
51
52
|
'3=Open window detected, 4=In window open state from external but detected closed locally'),
|
|
@@ -64,7 +65,8 @@ module.exports = [
|
|
|
64
65
|
.withDescription('Whether or not the thermostat acts as standalone thermostat or shares load with other ' +
|
|
65
66
|
'thermostats in the room. The gateway must update load_room_mean if enabled.'),
|
|
66
67
|
exposes.numeric('load_room_mean', ea.ALL)
|
|
67
|
-
.withDescription('Mean radiator load for room calculated by gateway for load balancing purposes')
|
|
68
|
+
.withDescription('Mean radiator load for room calculated by gateway for load balancing purposes (-8000=undefined)')
|
|
69
|
+
.withValueMin(-8000).withValueMax(100),
|
|
68
70
|
exposes.numeric('load_estimate', ea.STATE_GET)
|
|
69
71
|
.withDescription('Load estimate on this radiator')],
|
|
70
72
|
ota: ota.zigbeeOTA,
|
package/devices/develco.js
CHANGED
|
@@ -318,7 +318,7 @@ module.exports = [
|
|
|
318
318
|
['electricity', 'gas', 'water', 'kamstrup-kmp', 'linky', 'IEC62056-21', 'DSMR-2.3', 'DSMR-4.0'])
|
|
319
319
|
.withDescription('Operating mode/probe'),
|
|
320
320
|
exposes.numeric('current_summation', ea.SET)
|
|
321
|
-
.withDescription('Current summation value sent to the display. e.g. 570 = 0,570 kWh'),
|
|
321
|
+
.withDescription('Current summation value sent to the display. e.g. 570 = 0,570 kWh').withValueMin(0).withValueMax(10000),
|
|
322
322
|
exposes.binary('check_meter', ea.STATE, true, false)
|
|
323
323
|
.withDescription('Is true if communication problem with meter is experienced'),
|
|
324
324
|
],
|
package/devices/diyruz.js
CHANGED
|
@@ -150,11 +150,13 @@ module.exports = [
|
|
|
150
150
|
exposes.numeric('radiation_dose_per_hour', ea.STATE).withUnit('μR/h').withDescription('Current radiation level'),
|
|
151
151
|
exposes.binary('led_feedback', ea.ALL, 'ON', 'OFF').withDescription('Enable LED feedback'),
|
|
152
152
|
exposes.binary('buzzer_feedback', ea.ALL, 'ON', 'OFF').withDescription('Enable buzzer feedback'),
|
|
153
|
-
exposes.numeric('alert_threshold', ea.ALL).withUnit('μR/h').withDescription('Critical radiation level')
|
|
153
|
+
exposes.numeric('alert_threshold', ea.ALL).withUnit('μR/h').withDescription('Critical radiation level')
|
|
154
|
+
.withValueMin(0).withValueMax(10000),
|
|
154
155
|
exposes.enum('sensors_type', ea.ALL, ['СБМ-20/СТС-5/BOI-33', 'СБМ-19/СТС-6', 'Others'])
|
|
155
156
|
.withDescription('Type of installed tubes'),
|
|
156
|
-
exposes.numeric('sensors_count', ea.ALL).withDescription('Count of installed tubes'),
|
|
157
|
-
exposes.numeric('sensitivity', ea.ALL).withDescription('This is applicable if tubes type is set to other')
|
|
157
|
+
exposes.numeric('sensors_count', ea.ALL).withDescription('Count of installed tubes').withValueMin(0).withValueMax(50),
|
|
158
|
+
exposes.numeric('sensitivity', ea.ALL).withDescription('This is applicable if tubes type is set to other')
|
|
159
|
+
.withValueMin(0).withValueMax(100)],
|
|
158
160
|
toZigbee: [tz.diyruz_geiger_config, tz.factory_reset],
|
|
159
161
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
160
162
|
const endpoint = device.getEndpoint(1);
|
|
@@ -250,11 +252,16 @@ module.exports = [
|
|
|
250
252
|
exposes: [e.co2(), e.temperature(), e.humidity(), e.pressure(),
|
|
251
253
|
exposes.binary('led_feedback', ea.ALL, 'ON', 'OFF').withDescription('Enable LEDs feedback'),
|
|
252
254
|
exposes.binary('enable_abc', ea.ALL, 'ON', 'OFF').withDescription('Enable ABC (Automatic Baseline Correction)'),
|
|
253
|
-
exposes.numeric('threshold1', ea.ALL).withUnit('ppm').withDescription('Warning (LED2) CO2 level')
|
|
254
|
-
|
|
255
|
-
exposes.numeric('
|
|
256
|
-
|
|
257
|
-
exposes.numeric('
|
|
255
|
+
exposes.numeric('threshold1', ea.ALL).withUnit('ppm').withDescription('Warning (LED2) CO2 level')
|
|
256
|
+
.withValueMin(0).withValueMax(50000),
|
|
257
|
+
exposes.numeric('threshold2', ea.ALL).withUnit('ppm').withDescription('Critical (LED3) CO2 level')
|
|
258
|
+
.withValueMin(0).withValueMax(50000),
|
|
259
|
+
exposes.numeric('temperature_offset', ea.ALL).withUnit('°C').withDescription('Adjust temperature')
|
|
260
|
+
.withValueMin(-20).withValueMax(20),
|
|
261
|
+
exposes.numeric('humidity_offset', ea.ALL).withUnit('%').withDescription('Adjust humidity')
|
|
262
|
+
.withValueMin(-50).withValueMax(50),
|
|
263
|
+
exposes.numeric('pressure_offset', ea.ALL).withUnit('hPa').withDescription('Adjust pressure')
|
|
264
|
+
.withValueMin(-1000).withValueMax(1000)],
|
|
258
265
|
},
|
|
259
266
|
{
|
|
260
267
|
zigbeeModel: ['DIY_Zintercom'],
|
|
@@ -282,15 +289,15 @@ module.exports = [
|
|
|
282
289
|
exposes.binary('sound', ea.ALL, 'ON', 'OFF').withProperty('sound')
|
|
283
290
|
.withDescription('Enable or disable sound'),
|
|
284
291
|
exposes.numeric('time_ring', ea.ALL).withUnit('sec')
|
|
285
|
-
.withDescription('Time to ring before answer'),
|
|
292
|
+
.withDescription('Time to ring before answer').withValueMin(0).withValueMax(600),
|
|
286
293
|
exposes.numeric('time_talk', ea.ALL).withUnit('sec')
|
|
287
|
-
.withDescription('Time to hold before open'),
|
|
294
|
+
.withDescription('Time to hold before open').withValueMin(0).withValueMax(600),
|
|
288
295
|
exposes.numeric('time_open', ea.ALL).withUnit('sec')
|
|
289
|
-
.withDescription('Time to open before end'),
|
|
296
|
+
.withDescription('Time to open before end').withValueMin(0).withValueMax(600),
|
|
290
297
|
exposes.numeric('time_bell', ea.ALL).withUnit('sec')
|
|
291
|
-
.withDescription('Time after last bell to finish ring'),
|
|
298
|
+
.withDescription('Time after last bell to finish ring').withValueMin(0).withValueMax(600),
|
|
292
299
|
exposes.numeric('time_report', ea.ALL).withUnit('min')
|
|
293
|
-
.withDescription('Reporting interval'),
|
|
300
|
+
.withDescription('Reporting interval').withValueMin(0).withValueMax(1440),
|
|
294
301
|
e.battery(),
|
|
295
302
|
],
|
|
296
303
|
},
|
package/devices/fantem.js
CHANGED
|
@@ -29,10 +29,14 @@ module.exports = [
|
|
|
29
29
|
fromZigbee: [fz.battery, fz.ignore_basic_report, fz.illuminance, fz.ZB003X, fz.ZB003X_attr, fz.ZB003X_occupancy],
|
|
30
30
|
toZigbee: [tz.ZB003X],
|
|
31
31
|
exposes: [e.occupancy(), e.tamper(), e.battery(), e.illuminance(), e.illuminance_lux().withUnit('lx'), e.temperature(),
|
|
32
|
-
e.humidity(), exposes.numeric('reporting_time', ea.STATE_SET).withDescription('Reporting interval in minutes')
|
|
33
|
-
|
|
34
|
-
exposes.numeric('
|
|
35
|
-
|
|
32
|
+
e.humidity(), exposes.numeric('reporting_time', ea.STATE_SET).withDescription('Reporting interval in minutes')
|
|
33
|
+
.withValueMin(0).withValueMax(1440),
|
|
34
|
+
exposes.numeric('temperature_calibration', ea.STATE_SET).withDescription('Temperature calibration')
|
|
35
|
+
.withValueMin(-20).withValueMax(20),
|
|
36
|
+
exposes.numeric('humidity_calibration', ea.STATE_SET).withDescription('Humidity calibration')
|
|
37
|
+
.withValueMin(-50).withValueMax(50),
|
|
38
|
+
exposes.numeric('illuminance_calibration', ea.STATE_SET).withDescription('Illuminance calibration')
|
|
39
|
+
.withValueMin(-10000).withValueMax(10000),
|
|
36
40
|
exposes.binary('pir_enable', ea.STATE_SET, true, false).withDescription('Enable PIR sensor'),
|
|
37
41
|
exposes.binary('led_enable', ea.STATE_SET, true, false).withDescription('Enabled LED'),
|
|
38
42
|
exposes.binary('reporting_enable', ea.STATE_SET, true, false).withDescription('Enabled reporting'),
|
package/devices/heiman.js
CHANGED
|
@@ -73,6 +73,7 @@ module.exports = [
|
|
|
73
73
|
globalStore.clearValue(device, 'interval');
|
|
74
74
|
} else if (!globalStore.hasValue(device, 'interval')) {
|
|
75
75
|
const seconds = options && options.measurement_poll_interval ? options.measurement_poll_interval : 60;
|
|
76
|
+
if (seconds === -1) return;
|
|
76
77
|
const interval = setInterval(async () => {
|
|
77
78
|
try {
|
|
78
79
|
await endpoint.read('haElectricalMeasurement', ['rmsVoltage', 'rmsCurrent', 'activePower']);
|
|
@@ -85,7 +86,8 @@ module.exports = [
|
|
|
85
86
|
},
|
|
86
87
|
{
|
|
87
88
|
zigbeeModel: ['SMOK_V16', 'SMOK_V15', 'b5db59bfd81e4f1f95dc57fdbba17931', '98293058552c49f38ad0748541ee96ba', 'SMOK_YDLV10',
|
|
88
|
-
'FB56-SMF02HM1.4', 'SmokeSensor-N-3.0', '319fa36e7384414a9ea62cba8f6e7626', 'c3442b4ac59b4ba1a83119d938f283ab'
|
|
89
|
+
'FB56-SMF02HM1.4', 'SmokeSensor-N-3.0', '319fa36e7384414a9ea62cba8f6e7626', 'c3442b4ac59b4ba1a83119d938f283ab',
|
|
90
|
+
'SmokeSensor-EF-3.0'],
|
|
89
91
|
model: 'HS1SA',
|
|
90
92
|
vendor: 'HEIMAN',
|
|
91
93
|
description: 'Smoke detector',
|
|
@@ -99,7 +101,7 @@ module.exports = [
|
|
|
99
101
|
exposes: [e.smoke(), e.battery_low(), e.battery()],
|
|
100
102
|
},
|
|
101
103
|
{
|
|
102
|
-
zigbeeModel: ['SmokeSensor-N', 'SmokeSensor-
|
|
104
|
+
zigbeeModel: ['SmokeSensor-N', 'SmokeSensor-EM'],
|
|
103
105
|
model: 'HS3SA',
|
|
104
106
|
vendor: 'HEIMAN',
|
|
105
107
|
description: 'Smoke detector',
|
package/devices/hive.js
CHANGED
|
@@ -184,7 +184,8 @@ module.exports = [
|
|
|
184
184
|
.withSystemMode(['heat']).withRunningState(['idle', 'heat'], ea.STATE),
|
|
185
185
|
exposes.numeric('external_measured_room_sensor', ea.ALL)
|
|
186
186
|
.withDescription('Set at maximum 3 hours interval but not more often than every 30 minutes and 0.1 ' +
|
|
187
|
-
'degrees difference. Resets every 3hours to standard. e.g. 21C = 2100 (-8000=undefined).')
|
|
187
|
+
'degrees difference. Resets every 3hours to standard. e.g. 21C = 2100 (-8000=undefined).')
|
|
188
|
+
.withValueMin(-8000).withValueMax(3500),
|
|
188
189
|
exposes.numeric('window_open_internal', ea.STATE_GET).withValueMin(0).withValueMax(4)
|
|
189
190
|
.withDescription('0=Quarantine, 1=Windows are closed, 2=Hold - Windows are maybe about to open, ' +
|
|
190
191
|
'3=Open window detected, 4=In window open state from external but detected closed locally'),
|
|
@@ -203,7 +204,8 @@ module.exports = [
|
|
|
203
204
|
.withDescription('Whether or not the thermostat acts as standalone thermostat or shares load with other ' +
|
|
204
205
|
'thermostats in the room. The gateway must update load_room_mean if enabled.'),
|
|
205
206
|
exposes.numeric('load_room_mean', ea.ALL)
|
|
206
|
-
.withDescription('Mean radiator load for room calculated by gateway for load balancing purposes')
|
|
207
|
+
.withDescription('Mean radiator load for room calculated by gateway for load balancing purposes (-8000=undefined)')
|
|
208
|
+
.withValueMin(-8000).withValueMax(100),
|
|
207
209
|
exposes.numeric('load_estimate', ea.STATE_GET)
|
|
208
210
|
.withDescription('Load estimate on this radiator')],
|
|
209
211
|
configure: async (device, coordinatorEndpoint, logger) => {
|
package/devices/ikea.js
CHANGED
|
@@ -302,10 +302,10 @@ module.exports = [
|
|
|
302
302
|
extend: tradfriExtend.light_onoff_brightness_colortemp(),
|
|
303
303
|
},
|
|
304
304
|
{
|
|
305
|
-
zigbeeModel: ['TRADFRI bulb E14 WS 470lm', 'TRADFRI bulb E12 WS 450lm'],
|
|
305
|
+
zigbeeModel: ['TRADFRI bulb E14 WS 470lm', 'TRADFRI bulb E12 WS 450lm', 'TRADFRI bulb E17 WS 440lm'],
|
|
306
306
|
model: 'LED1903C5/LED1835C6',
|
|
307
307
|
vendor: 'IKEA',
|
|
308
|
-
description: 'TRADFRI bulb E12/E14 WS 450/470 lumen, dimmable, white spectrum, opal white',
|
|
308
|
+
description: 'TRADFRI bulb E12/E14/E17 WS 450/470/440 lumen, dimmable, white spectrum, opal white',
|
|
309
309
|
extend: tradfriExtend.light_onoff_brightness_colortemp(),
|
|
310
310
|
},
|
|
311
311
|
{
|
package/devices/immax.js
CHANGED
|
@@ -148,10 +148,14 @@ module.exports = [
|
|
|
148
148
|
fromZigbee: [fz.battery, fz.ignore_basic_report, fz.illuminance, fz.ZB003X, fz.ZB003X_attr, fz.ZB003X_occupancy],
|
|
149
149
|
toZigbee: [tz.ZB003X],
|
|
150
150
|
exposes: [e.occupancy(), e.tamper(), e.battery(), e.illuminance(), e.illuminance_lux().withUnit('lx'), e.temperature(),
|
|
151
|
-
e.humidity(), exposes.numeric('reporting_time', ea.STATE_SET).withDescription('Reporting interval in minutes')
|
|
152
|
-
|
|
153
|
-
exposes.numeric('
|
|
154
|
-
|
|
151
|
+
e.humidity(), exposes.numeric('reporting_time', ea.STATE_SET).withDescription('Reporting interval in minutes')
|
|
152
|
+
.withValueMin(0).withValueMax(1440),
|
|
153
|
+
exposes.numeric('temperature_calibration', ea.STATE_SET).withDescription('Temperature calibration')
|
|
154
|
+
.withValueMin(-20).withValueMax(20),
|
|
155
|
+
exposes.numeric('humidity_calibration', ea.STATE_SET).withDescription('Humidity calibration')
|
|
156
|
+
.withValueMin(-50).withValueMax(50),
|
|
157
|
+
exposes.numeric('illuminance_calibration', ea.STATE_SET).withDescription('Illuminance calibration')
|
|
158
|
+
.withValueMin(-10000).withValueMax(10000),
|
|
155
159
|
exposes.binary('pir_enable', ea.STATE_SET, true, false).withDescription('Enable PIR sensor'),
|
|
156
160
|
exposes.binary('led_enable', ea.STATE_SET, true, false).withDescription('Enabled LED'),
|
|
157
161
|
exposes.binary('reporting_enable', ea.STATE_SET, true, false).withDescription('Enabled reporting'),
|
package/devices/javis.js
CHANGED
|
@@ -31,6 +31,7 @@ module.exports = [
|
|
|
31
31
|
exposes.enum('keep_time', ea.STATE_SET, ['0', '1', '2', '3', '4', '5', '6', '7'])
|
|
32
32
|
.withDescription('PIR keep time 0:5s|1:30s|2:60s|3:180s|4:300s|5:600s|6:1200s|7:1800s'),
|
|
33
33
|
exposes.enum('sensitivity', ea.STATE_SET, ['25', '50', '75', '100']),
|
|
34
|
-
exposes.numeric('illuminance_calibration', ea.STATE_SET).withDescription('Illuminance calibration')
|
|
34
|
+
exposes.numeric('illuminance_calibration', ea.STATE_SET).withDescription('Illuminance calibration')
|
|
35
|
+
.withValueMin(-10000).withValueMax(10000)],
|
|
35
36
|
},
|
|
36
37
|
];
|
package/devices/lidl.js
CHANGED
|
@@ -610,7 +610,7 @@ module.exports = [
|
|
|
610
610
|
toZigbee: [tz.on_off, tz.lidl_watering_timer],
|
|
611
611
|
onEvent: tuya.onEventSetTime,
|
|
612
612
|
configure: async (device, coordinatorEndpoint, logger) => {},
|
|
613
|
-
exposes: [e.switch(), exposes.numeric('timer', ea.SET).withValueMin(1)
|
|
613
|
+
exposes: [e.switch(), exposes.numeric('timer', ea.SET).withValueMin(1).withValueMax(10000)
|
|
614
614
|
.withUnit('min').withDescription('Auto off after specific time.')],
|
|
615
615
|
},
|
|
616
616
|
{
|
|
@@ -677,8 +677,10 @@ module.exports = [
|
|
|
677
677
|
.withLocalTemperature(ea.STATE).withLocalTemperatureCalibration(-20, 20, 1, ea.STATE_SET)
|
|
678
678
|
.withSystemMode(['off', 'heat', 'auto'], ea.STATE_SET)
|
|
679
679
|
.withPreset(['schedule', 'manual', 'holiday', 'boost']),
|
|
680
|
-
exposes.numeric('detectwindow_temperature', ea.STATE_SET).withUnit('°C').withDescription('Open window detection temperature')
|
|
681
|
-
|
|
680
|
+
exposes.numeric('detectwindow_temperature', ea.STATE_SET).withUnit('°C').withDescription('Open window detection temperature')
|
|
681
|
+
.withValueMin(-10).withValueMax(35),
|
|
682
|
+
exposes.numeric('detectwindow_timeminute', ea.STATE_SET).withUnit('min').withDescription('Open window time in minute')
|
|
683
|
+
.withValueMin(0).withValueMax(1000),
|
|
682
684
|
exposes.binary('binary_one', ea.STATE_SET, 'ON', 'OFF').withDescription('Unknown binary one'),
|
|
683
685
|
exposes.binary('binary_two', ea.STATE_SET, 'ON', 'OFF').withDescription('Unknown binary two'),
|
|
684
686
|
exposes.binary('away_mode', ea.STATE, 'ON', 'OFF').withDescription('Away mode'),
|
package/devices/moes.js
CHANGED
|
@@ -225,9 +225,10 @@ module.exports = [
|
|
|
225
225
|
'You can set up to 4 stages of temperature every for WEEKDAY ➀➁➂➃➄, SATURDAY ➅ and SUNDAY ➆.'),
|
|
226
226
|
exposes.binary('boost_heating', ea.STATE_SET, 'ON', 'OFF').withDescription('Boost Heating: press and hold "+" for 3 seconds, ' +
|
|
227
227
|
'the device will enter the boost heating mode, and the ▷╵◁ will flash. The countdown will be displayed in the APP'),
|
|
228
|
-
exposes.numeric('boost_heating_countdown', ea.STATE_SET).withUnit('min').withDescription('Countdown in minutes')
|
|
228
|
+
exposes.numeric('boost_heating_countdown', ea.STATE_SET).withUnit('min').withDescription('Countdown in minutes')
|
|
229
|
+
.withValueMin(0).withValueMax(15),
|
|
229
230
|
exposes.numeric('boost_heating_countdown_time_set', ea.STATE_SET).withUnit('second')
|
|
230
|
-
.withDescription('Boost Time Setting 100 sec - 900 sec, (default = 300 sec)')],
|
|
231
|
+
.withDescription('Boost Time Setting 100 sec - 900 sec, (default = 300 sec)').withValueMin(100).withValueMax(900)],
|
|
231
232
|
},
|
|
232
233
|
{
|
|
233
234
|
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_la2c2uo9'}],
|
|
@@ -285,34 +286,7 @@ module.exports = [
|
|
|
285
286
|
supports: 'open, close, stop, position',
|
|
286
287
|
fromZigbee: [fz.tuya_cover_options, fz.cover_position_tilt],
|
|
287
288
|
toZigbee: [tz.cover_state, tz.moes_cover_calibration, tz.cover_position_tilt, tz.tuya_cover_reversal],
|
|
288
|
-
exposes: [e.cover_position(), exposes.numeric('calibration_time', ea.ALL)
|
|
289
|
-
exposes.binary('motor_reversal', ea.ALL, 'ON', 'OFF')],
|
|
290
|
-
},
|
|
291
|
-
{
|
|
292
|
-
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_e9ba97vf'},
|
|
293
|
-
{modelID: 'TS0601', manufacturerName: '_TZE200_husqqvux'}],
|
|
294
|
-
model: 'TV01-ZB',
|
|
295
|
-
vendor: 'Moes',
|
|
296
|
-
description: 'Thermostat radiator valve',
|
|
297
|
-
fromZigbee: [fz.moes_thermostat_tv, fz.ignore_tuya_set_time],
|
|
298
|
-
whiteLabel: [{vendor: 'Tesla Smart', model: 'TSL-TRV-TV01ZG'}],
|
|
299
|
-
toZigbee: [tz.moes_thermostat_tv],
|
|
300
|
-
exposes: [
|
|
301
|
-
e.battery(), e.child_lock(), e.window_detection(),
|
|
302
|
-
exposes.binary('frost_detection', ea.STATE_SET, true, false).withDescription('Enables/disables frost detection on the device'),
|
|
303
|
-
exposes.binary('heating_stop', ea.STATE_SET, true, false).withDescription('Stop heating'),
|
|
304
|
-
exposes.numeric('holiday_temperature', ea.STATE_SET).withDescription('Holiday mode temperature'),
|
|
305
|
-
exposes.numeric('comfort_temperature', ea.STATE_SET).withDescription('Comfort mode temperature'),
|
|
306
|
-
exposes.numeric('eco_temperature', ea.STATE_SET).withDescription('Eco mode temperature'),
|
|
307
|
-
exposes.numeric('open_window_temperature', ea.STATE_SET).withDescription('Open window mode temperature'),
|
|
308
|
-
exposes.numeric('boost_heating_countdown', ea.STATE).withDescription('Boost heating countdown'),
|
|
309
|
-
exposes.numeric('error_status', ea.STATE).withDescription('Error status'),
|
|
310
|
-
// exposes.binary('boost_mode', ea.STATE_SET).withDescription('Enables/disables boost mode'),
|
|
311
|
-
exposes.climate().withSetpoint('current_heating_setpoint', 5, 29.5, 1, ea.STATE_SET)
|
|
312
|
-
.withLocalTemperature(ea.STATE).withLocalTemperatureCalibration(-20, 20, 1, ea.STATE_SET)
|
|
313
|
-
.withSystemMode(Object.values(tuya.tvThermostatMode), ea.STATE_SET)
|
|
314
|
-
.withPreset(Object.values(tuya.tvThermostatPreset)),
|
|
315
|
-
],
|
|
316
|
-
onEvent: tuya.onEventSetLocalTime,
|
|
289
|
+
exposes: [e.cover_position(), exposes.numeric('calibration_time', ea.ALL).withValueMin(0).withValueMax(100),
|
|
290
|
+
exposes.enum('moving', ea.STATE, ['UP', 'STOP', 'DOWN']), exposes.binary('motor_reversal', ea.ALL, 'ON', 'OFF')],
|
|
317
291
|
},
|
|
318
292
|
];
|
package/devices/namron.js
CHANGED
|
@@ -184,6 +184,13 @@ module.exports = [
|
|
|
184
184
|
return {l1: 1, l2: 2, l3: 3, l4: 4};
|
|
185
185
|
},
|
|
186
186
|
},
|
|
187
|
+
{
|
|
188
|
+
zigbeeModel: ['3802961'],
|
|
189
|
+
model: '3802961',
|
|
190
|
+
vendor: 'Namron',
|
|
191
|
+
description: 'LED 9W CCT E27',
|
|
192
|
+
extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
|
|
193
|
+
},
|
|
187
194
|
{
|
|
188
195
|
zigbeeModel: ['3802962'],
|
|
189
196
|
model: '3802962',
|
package/devices/neo.js
CHANGED
|
@@ -19,11 +19,11 @@ module.exports = [
|
|
|
19
19
|
exposes.binary('temperature_alarm', ea.STATE_SET, true, false),
|
|
20
20
|
exposes.binary('alarm', ea.STATE_SET, true, false),
|
|
21
21
|
exposes.enum('melody', ea.STATE_SET, Array.from(Array(18).keys()).map((x)=>(x+1).toString())),
|
|
22
|
-
exposes.numeric('duration', ea.STATE_SET).withUnit('second'),
|
|
23
|
-
exposes.numeric('temperature_min', ea.STATE_SET).withUnit('°C'),
|
|
24
|
-
exposes.numeric('temperature_max', ea.STATE_SET).withUnit('°C'),
|
|
25
|
-
exposes.numeric('humidity_min', ea.STATE_SET).withUnit('%'),
|
|
26
|
-
exposes.numeric('humidity_max', ea.STATE_SET).withUnit('%'),
|
|
22
|
+
exposes.numeric('duration', ea.STATE_SET).withUnit('second').withValueMin(0).withValueMax(1000),
|
|
23
|
+
exposes.numeric('temperature_min', ea.STATE_SET).withUnit('°C').withValueMin(-10).withValueMax(35),
|
|
24
|
+
exposes.numeric('temperature_max', ea.STATE_SET).withUnit('°C').withValueMin(-10).withValueMax(35),
|
|
25
|
+
exposes.numeric('humidity_min', ea.STATE_SET).withUnit('%').withValueMin(0).withValueMax(100),
|
|
26
|
+
exposes.numeric('humidity_max', ea.STATE_SET).withUnit('%').withValueMin(0).withValueMax(100),
|
|
27
27
|
exposes.enum('volume', ea.STATE_SET, ['low', 'medium', 'high']),
|
|
28
28
|
exposes.enum('power_type', ea.STATE, ['battery_full', 'battery_high', 'battery_medium', 'battery_low', 'usb']),
|
|
29
29
|
],
|
package/devices/philips.js
CHANGED
|
@@ -243,12 +243,12 @@ module.exports = [
|
|
|
243
243
|
ota: ota.zigbeeOTA,
|
|
244
244
|
},
|
|
245
245
|
{
|
|
246
|
-
zigbeeModel: ['LCP001', 'LCP002', '4090331P9_01', '4090331P9_02'],
|
|
246
|
+
zigbeeModel: ['LCP001', 'LCP002', '4090331P9_01', '4090331P9_02', '929003053301_01', '929003053301_02'],
|
|
247
247
|
model: '4090331P9',
|
|
248
248
|
vendor: 'Philips',
|
|
249
|
-
description: 'Hue Ensis',
|
|
249
|
+
description: 'Hue Ensis (white)',
|
|
250
250
|
meta: {turnsOffAtBrightness1: true},
|
|
251
|
-
extend: hueExtend.light_onoff_brightness_colortemp_color(),
|
|
251
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
252
252
|
ota: ota.zigbeeOTA,
|
|
253
253
|
},
|
|
254
254
|
{
|
package/devices/popp.js
CHANGED
|
@@ -43,7 +43,8 @@ module.exports = [
|
|
|
43
43
|
.withSystemMode(['heat']).withRunningState(['idle', 'heat'], ea.STATE),
|
|
44
44
|
exposes.numeric('external_measured_room_sensor', ea.ALL)
|
|
45
45
|
.withDescription('Set at maximum 3 hours interval but not more often than every 30 minutes and 0.1 ' +
|
|
46
|
-
'degrees difference. Resets every 3hours to standard. e.g. 21C = 2100 (-8000=undefined).')
|
|
46
|
+
'degrees difference. Resets every 3hours to standard. e.g. 21C = 2100 (-8000=undefined).')
|
|
47
|
+
.withValueMin(-8000).withValueMax(3500),
|
|
47
48
|
exposes.numeric('window_open_internal', ea.STATE_GET).withValueMin(0).withValueMax(4)
|
|
48
49
|
.withDescription('0=Quarantine, 1=Windows are closed, 2=Hold - Windows are maybe about to open, ' +
|
|
49
50
|
'3=Open window detected, 4=In window open state from external but detected closed locally'),
|
|
@@ -62,7 +63,8 @@ module.exports = [
|
|
|
62
63
|
.withDescription('Whether or not the thermostat acts as standalone thermostat or shares load with other ' +
|
|
63
64
|
'thermostats in the room. The gateway must update load_room_mean if enabled.'),
|
|
64
65
|
exposes.numeric('load_room_mean', ea.ALL)
|
|
65
|
-
.withDescription('Mean radiator load for room calculated by gateway for load balancing purposes')
|
|
66
|
+
.withDescription('Mean radiator load for room calculated by gateway for load balancing purposes (-8000=undefined)')
|
|
67
|
+
.withValueMin(-8000).withValueMax(100),
|
|
66
68
|
exposes.numeric('load_estimate', ea.STATE_GET)
|
|
67
69
|
.withDescription('Load estimate on this radiator')],
|
|
68
70
|
ota: ota.zigbeeOTA,
|
package/devices/tuya.js
CHANGED
|
@@ -80,12 +80,16 @@ module.exports = [
|
|
|
80
80
|
},
|
|
81
81
|
{
|
|
82
82
|
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_mvn6jl7x'},
|
|
83
|
-
{modelID: 'TS011F', manufacturerName: '_TZ3000_raviyuvk'}, {modelID: 'TS011F', manufacturerName: '_TYZB01_hlla45kx'}
|
|
83
|
+
{modelID: 'TS011F', manufacturerName: '_TZ3000_raviyuvk'}, {modelID: 'TS011F', manufacturerName: '_TYZB01_hlla45kx'},
|
|
84
|
+
{modelID: 'TS011F', manufacturerName: '_TZ3000_92qd4sqa'}],
|
|
84
85
|
model: 'TS011F_2_gang_wall',
|
|
85
86
|
vendor: 'TuYa',
|
|
86
87
|
description: '2 gang wall outlet',
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
toZigbee: extend.switch().toZigbee.concat([tz.moes_power_on_behavior, tz.tuya_backlight_mode]),
|
|
89
|
+
fromZigbee: extend.switch().fromZigbee.concat([fz.moes_power_on_behavior, fz.tuya_backlight_mode]),
|
|
90
|
+
exposes: [e.switch().withEndpoint('l1'), e.switch().withEndpoint('l2'),
|
|
91
|
+
exposes.enum('power_on_behavior', ea.ALL, ['on', 'off', 'previous']),
|
|
92
|
+
exposes.enum('backlight_mode', ea.ALL, ['LOW', 'MEDIUM', 'HIGH'])],
|
|
89
93
|
whiteLabel: [{vendor: 'ClickSmart+', model: 'CMA30036'}],
|
|
90
94
|
endpoint: (device) => {
|
|
91
95
|
return {'l1': 1, 'l2': 2};
|
|
@@ -816,22 +820,30 @@ module.exports = [
|
|
|
816
820
|
},
|
|
817
821
|
{
|
|
818
822
|
fingerprint: [
|
|
819
|
-
{
|
|
823
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_hue3yfsn'}, /* model: 'TV02-Zigbee', vendor: 'TuYa' */
|
|
824
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_e9ba97vf'}, /* model: 'TV01-ZB', vendor: 'Moes' */
|
|
825
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_husqqvux'}, /* model: 'TSL-TRV-TV01ZG', vendor: 'Tesla Smart' */
|
|
826
|
+
],
|
|
820
827
|
model: 'TV02-Zigbee',
|
|
821
828
|
vendor: 'TuYa',
|
|
822
829
|
description: 'Thermostat radiator valve',
|
|
830
|
+
whiteLabel: [
|
|
831
|
+
{vendor: 'Moes', model: 'TV01-ZB'},
|
|
832
|
+
{vendor: 'Tesla Smart', model: 'TSL-TRV-TV01ZG'},
|
|
833
|
+
],
|
|
823
834
|
ota: ota.zigbeeOTA,
|
|
824
835
|
fromZigbee: [fz.ignore_basic_report, fz.ignore_tuya_set_time, fz.tvtwo_thermostat],
|
|
825
836
|
toZigbee: [tz.tvtwo_thermostat],
|
|
826
837
|
onEvent: tuya.onEventSetLocalTime,
|
|
827
838
|
exposes: [
|
|
828
|
-
e.battery_low(), e.child_lock(), e.open_window(), e.open_window_temperature()
|
|
829
|
-
e.
|
|
839
|
+
e.battery_low(), e.child_lock(), e.open_window(), e.open_window_temperature().withValueMin(0).withValueMax(30),
|
|
840
|
+
e.holiday_temperature().withValueMin(0).withValueMax(30), e.comfort_temperature().withValueMin(0).withValueMax(30),
|
|
841
|
+
e.eco_temperature().withValueMin(0).withValueMax(30),
|
|
830
842
|
exposes.climate().withPreset(['auto', 'manual', 'holiday']).withLocalTemperatureCalibration(-20, 20, 1, ea.STATE_SET)
|
|
831
843
|
.withLocalTemperature(ea.STATE).withSetpoint('current_heating_setpoint', 0, 30, 0.5, ea.STATE_SET),
|
|
832
844
|
exposes.numeric('boost_timeset_countdown', ea.STATE_SET).withUnit('second').withDescription('Setting '+
|
|
833
845
|
'minimum 0 - maximum 465 seconds boost time. The boost (♨) function is activated. The remaining '+
|
|
834
|
-
'time for the function will be counted down in seconds ( 465 to 0 ).'),
|
|
846
|
+
'time for the function will be counted down in seconds ( 465 to 0 ).').withValueMin(0).withValueMax(465),
|
|
835
847
|
exposes.binary('frost_protection', ea.STATE_SET, 'ON', 'OFF').withDescription('When Anti-Freezing function'+
|
|
836
848
|
' is activated, the temperature in the house is kept at 8 °C ‚the device display "AF".press the '+
|
|
837
849
|
'pair button to cancel.'),
|
|
@@ -840,7 +852,8 @@ module.exports = [
|
|
|
840
852
|
'heating stop, the device display "HS" ‚press the pair button to cancel.'),
|
|
841
853
|
exposes.binary('online', ea.STATE_SET, 'ON', 'OFF').withDescription('Is the device online'),
|
|
842
854
|
exposes.numeric('holiday_mode_date', ea.STATE_SET).withDescription('The holiday mode( ⛱ ) will '+
|
|
843
|
-
'automatically start at the set time starting point and run the holiday temperature.')
|
|
855
|
+
'automatically start at the set time starting point and run the holiday temperature.')
|
|
856
|
+
.withValueMin(0).withValueMax(1000),
|
|
844
857
|
exposes.composite('programming').withDescription('Auto Mode ⏱ - In this mode,'+
|
|
845
858
|
' the device executes a preset week programming temperature time and temperature. ')
|
|
846
859
|
.withFeature(exposes.text('schedule_monday', ea.STATE))
|
|
@@ -942,7 +955,8 @@ module.exports = [
|
|
|
942
955
|
.withFeature(exposes.text('sunday_schedule', ea.STATE)),
|
|
943
956
|
exposes.binary('boost_heating', ea.STATE_SET, 'ON', 'OFF').withDescription('Boost Heating: press and hold "+" for 3 seconds, ' +
|
|
944
957
|
'the device will enter the boost heating mode, and the ▷╵◁ will flash. The countdown will be displayed in the APP'),
|
|
945
|
-
exposes.numeric('boost_heating_countdown', ea.STATE_SET).withUnit('min').withDescription('Countdown in minutes')
|
|
958
|
+
exposes.numeric('boost_heating_countdown', ea.STATE_SET).withUnit('min').withDescription('Countdown in minutes')
|
|
959
|
+
.withValueMin(0).withValueMax(1000),
|
|
946
960
|
],
|
|
947
961
|
},
|
|
948
962
|
{
|
|
@@ -974,6 +988,7 @@ module.exports = [
|
|
|
974
988
|
globalStore.clearValue(device, 'interval');
|
|
975
989
|
} else if (!globalStore.hasValue(device, 'interval')) {
|
|
976
990
|
const seconds = options && options.measurement_poll_interval ? options.measurement_poll_interval : 60;
|
|
991
|
+
if (seconds === -1) return;
|
|
977
992
|
const interval = setInterval(async () => {
|
|
978
993
|
try {
|
|
979
994
|
await endpoint.read('haElectricalMeasurement', ['rmsVoltage', 'rmsCurrent', 'activePower']);
|
|
@@ -1070,6 +1085,7 @@ module.exports = [
|
|
|
1070
1085
|
globalStore.clearValue(device, 'interval');
|
|
1071
1086
|
} else if (!globalStore.hasValue(device, 'interval')) {
|
|
1072
1087
|
const seconds = options && options.measurement_poll_interval ? options.measurement_poll_interval : 60;
|
|
1088
|
+
if (seconds === -1) return;
|
|
1073
1089
|
const interval = setInterval(async () => {
|
|
1074
1090
|
try {
|
|
1075
1091
|
await endpoint.read('haElectricalMeasurement', ['rmsVoltage', 'rmsCurrent', 'activePower']);
|
|
@@ -1216,7 +1232,8 @@ module.exports = [
|
|
|
1216
1232
|
},
|
|
1217
1233
|
},
|
|
1218
1234
|
{
|
|
1219
|
-
fingerprint: [{modelID: 'TS0011', manufacturerName: '_TZ3000_ji4araar'}, {modelID: 'TS0011', manufacturerName: '_TZ3000_qmi1cfuq'}
|
|
1235
|
+
fingerprint: [{modelID: 'TS0011', manufacturerName: '_TZ3000_ji4araar'}, {modelID: 'TS0011', manufacturerName: '_TZ3000_qmi1cfuq'},
|
|
1236
|
+
{modelID: 'TS0011', manufacturerName: '_TZ3000_txpirhfq'}],
|
|
1220
1237
|
model: 'TS0011_switch_module',
|
|
1221
1238
|
vendor: 'TuYa',
|
|
1222
1239
|
description: '1 gang switch module - (without neutral)',
|
|
@@ -1227,7 +1244,7 @@ module.exports = [
|
|
|
1227
1244
|
exposes.presets.power_on_behavior(),
|
|
1228
1245
|
exposes.presets.switch_type_2(),
|
|
1229
1246
|
],
|
|
1230
|
-
whiteLabel: [{vendor: 'AVATTO', model: '1gang N-ZLWSM01'}],
|
|
1247
|
+
whiteLabel: [{vendor: 'AVATTO', model: '1gang N-ZLWSM01'}, {vendor: 'SMATRUL', model: 'TMZ02L-16A-W'}],
|
|
1231
1248
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1232
1249
|
await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
|
|
1233
1250
|
device.powerSource = 'Mains (single phase)';
|
|
@@ -1604,9 +1621,12 @@ module.exports = [
|
|
|
1604
1621
|
exposes.enum('o_sensitivity', ea.STATE_SET, Object.values(tuya.msLookups.OSensitivity)).withDescription('O-Sensitivity mode'),
|
|
1605
1622
|
exposes.enum('v_sensitivity', ea.STATE_SET, Object.values(tuya.msLookups.VSensitivity)).withDescription('V-Sensitivity mode'),
|
|
1606
1623
|
exposes.enum('led_status', ea.STATE_SET, ['ON', 'OFF']).withDescription('Led status switch'),
|
|
1607
|
-
exposes.numeric('vacancy_delay', ea.STATE_SET).withUnit('sec').withDescription('Vacancy delay')
|
|
1608
|
-
|
|
1609
|
-
exposes.numeric('
|
|
1624
|
+
exposes.numeric('vacancy_delay', ea.STATE_SET).withUnit('sec').withDescription('Vacancy delay').withValueMin(0)
|
|
1625
|
+
.withValueMax(1000),
|
|
1626
|
+
exposes.numeric('light_on_luminance_prefer', ea.STATE_SET).withDescription('Light-On luminance prefer')
|
|
1627
|
+
.withValueMin(0).withValueMax(10000),
|
|
1628
|
+
exposes.numeric('light_off_luminance_prefer', ea.STATE_SET).withDescription('Light-Off luminance prefer')
|
|
1629
|
+
.withValueMin(0).withValueMax(10000),
|
|
1610
1630
|
exposes.enum('mode', ea.STATE_SET, Object.values(tuya.msLookups.Mode)).withDescription('Working mode'),
|
|
1611
1631
|
exposes.numeric('luminance_level', ea.STATE).withDescription('Luminance level'),
|
|
1612
1632
|
exposes.numeric('reference_luminance', ea.STATE).withDescription('Reference luminance'),
|
package/lib/exposes.js
CHANGED
|
@@ -495,7 +495,7 @@ module.exports = {
|
|
|
495
495
|
no_position_support: () => new Binary('no_position_support', access.SET, true, false).withDescription('Set to true when your device only reports position 0, 100 and 50 (in this case your device has an older firmware) (default false).'),
|
|
496
496
|
transition: () => new Numeric(`transition`, access.SET).withValueMin(0).withDescription('Controls the transition time (in seconds) of on/off, brightness, color temperature (if applicable) and color (if applicable) changes. Defaults to `0` (no transition).'),
|
|
497
497
|
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).`),
|
|
498
|
-
measurement_poll_interval: () => new Numeric(`measurement_poll_interval`, access.SET).withValueMin(
|
|
498
|
+
measurement_poll_interval: () => 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.`),
|
|
499
499
|
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).`),
|
|
500
500
|
},
|
|
501
501
|
presets: {
|
|
@@ -506,8 +506,8 @@ module.exports = {
|
|
|
506
506
|
auto_lock: () => new Switch().withState('auto_lock', false, 'Enable/disable auto lock', access.STATE_SET, 'AUTO', 'MANUAL'),
|
|
507
507
|
auto_relock_time: () => new Numeric('auto_relock_time', access.ALL).withValueMin(0).withUnit('s').withDescription('The number of seconds to wait after unlocking a lock before it automatically locks again. 0=disabled'),
|
|
508
508
|
away_mode: () => new Switch().withState('away_mode', false, 'Enable/disable away mode', access.STATE_SET),
|
|
509
|
-
away_preset_days: () => new Numeric('away_preset_days', access.STATE_SET).withDescription('Away preset days'),
|
|
510
|
-
away_preset_temperature: () => new Numeric('away_preset_temperature', access.STATE_SET).withUnit('°C').withDescription('Away preset temperature'),
|
|
509
|
+
away_preset_days: () => new Numeric('away_preset_days', access.STATE_SET).withDescription('Away preset days').withValueMin(0).withValueMax(100),
|
|
510
|
+
away_preset_temperature: () => new Numeric('away_preset_temperature', access.STATE_SET).withUnit('°C').withDescription('Away preset temperature').withValueMin(-10).withValueMax(35),
|
|
511
511
|
battery: () => new Numeric('battery', access.STATE).withUnit('%').withDescription('Remaining battery in %').withValueMin(0).withValueMax(100),
|
|
512
512
|
battery_low: () => new Binary('battery_low', access.STATE, true, false).withDescription('Indicates if the battery of this device is almost empty'),
|
|
513
513
|
battery_voltage: () => new Numeric('voltage', access.STATE).withUnit('mV').withDescription('Voltage of the battery in millivolts'),
|
|
@@ -516,7 +516,7 @@ module.exports = {
|
|
|
516
516
|
carbon_monoxide: () => new Binary('carbon_monoxide', access.STATE, true, false).withDescription('Indicates if CO (carbon monoxide) is detected'),
|
|
517
517
|
child_lock: () => new Lock().withState('child_lock', 'LOCK', 'UNLOCK', 'Enables/disables physical input on the device', access.STATE_SET),
|
|
518
518
|
co2: () => new Numeric('co2', access.STATE).withUnit('ppm').withDescription('The measured CO2 (carbon dioxide) value'),
|
|
519
|
-
comfort_temperature: () => new Numeric('comfort_temperature', access.STATE_SET).withUnit('°C').withDescription('Comfort temperature'),
|
|
519
|
+
comfort_temperature: () => new Numeric('comfort_temperature', access.STATE_SET).withUnit('°C').withDescription('Comfort temperature').withValueMin(-10).withValueMax(35),
|
|
520
520
|
consumer_connected: () => new Binary('consumer_connected', access.STATE, true, false).withDescription('Indicates whether a plug is physically attached. Device does not have to pull power or even be connected electrically (state of this binary switch can be ON even if main power switch is OFF)'),
|
|
521
521
|
contact: () => new Binary('contact', access.STATE, false, true).withDescription('Indicates if the contact is closed (= true) or open (= false)'),
|
|
522
522
|
cover_position: () => new Cover().withPosition(),
|
|
@@ -527,11 +527,11 @@ module.exports = {
|
|
|
527
527
|
current: () => new Numeric('current', access.STATE).withUnit('A').withDescription('Instantaneous measured electrical current'),
|
|
528
528
|
current_phase_b: () => new Numeric('current_phase_b', access.STATE).withUnit('A').withDescription('Instantaneous measured electrical current on phase B'),
|
|
529
529
|
current_phase_c: () => new Numeric('current_phase_c', access.STATE).withUnit('A').withDescription('Instantaneous measured electrical current on phase C'),
|
|
530
|
-
deadzone_temperature: () => new Numeric('deadzone_temperature', access.STATE_SET).withUnit('°C').withDescription('The delta between local_temperature and current_heating_setpoint to trigger Heat.
|
|
530
|
+
deadzone_temperature: () => new Numeric('deadzone_temperature', access.STATE_SET).withUnit('°C').withDescription('The delta between local_temperature and current_heating_setpoint to trigger Heat').withValueMin(1).withValueMax(5),
|
|
531
531
|
device_temperature: () => new Numeric('device_temperature', access.STATE).withUnit('°C').withDescription('Temperature of the device'),
|
|
532
532
|
eco2: () => new Numeric('eco2', access.STATE).withUnit('ppm').withDescription('Measured eCO2 value'),
|
|
533
533
|
eco_mode: () => new Binary('eco_mode', access.STATE_SET, 'ON', 'OFF').withDescription('ECO mode (energy saving mode)'),
|
|
534
|
-
eco_temperature: () => new Numeric('eco_temperature', access.STATE_SET).withUnit('°C').withDescription('Eco temperature'),
|
|
534
|
+
eco_temperature: () => new Numeric('eco_temperature', access.STATE_SET).withUnit('°C').withDescription('Eco temperature').withValueMin(-10).withValueMax(35),
|
|
535
535
|
effect: () => new Enum('effect', access.SET, ['blink', 'breathe', 'okay', 'channel_change', 'finish_effect', 'stop_effect']).withDescription('Triggers an effect on the light (e.g. make light blink for a few seconds)'),
|
|
536
536
|
energy: () => new Numeric('energy', access.STATE).withUnit('kWh').withDescription('Sum of consumed energy'),
|
|
537
537
|
fan: () => new Fan(),
|
|
@@ -539,7 +539,7 @@ module.exports = {
|
|
|
539
539
|
formaldehyd: () => new Numeric('formaldehyd', access.STATE).withDescription('The measured formaldehyd value'),
|
|
540
540
|
gas: () => new Binary('gas', access.STATE, true, false).withDescription('Indicates whether the device detected gas'),
|
|
541
541
|
hcho: () => new Numeric('hcho', access.STATE).withUnit('mg/m³').withDescription('Measured Hcho value'),
|
|
542
|
-
holiday_temperature: () => new Numeric('holiday_temperature', access.STATE_SET).withUnit('°C').withDescription('Holiday temperature'),
|
|
542
|
+
holiday_temperature: () => new Numeric('holiday_temperature', access.STATE_SET).withUnit('°C').withDescription('Holiday temperature').withValueMin(-10).withValueMax(35),
|
|
543
543
|
humidity: () => new Numeric('humidity', access.STATE).withUnit('%').withDescription('Measured relative humidity'),
|
|
544
544
|
illuminance: () => new Numeric('illuminance', access.STATE).withDescription('Raw measured illuminance'),
|
|
545
545
|
illuminance_lux: () => new Numeric('illuminance_lux', access.STATE).withUnit('lx').withDescription('Measured illuminance in lux'),
|
|
@@ -557,12 +557,12 @@ module.exports = {
|
|
|
557
557
|
linkquality: () => new Numeric('linkquality', access.STATE).withUnit('lqi').withDescription('Link quality (signal strength)').withValueMin(0).withValueMax(255),
|
|
558
558
|
local_temperature: () => new Numeric('local_temperature', access.STATE_GET).withUnit('°C').withDescription('Current temperature measured on the device'),
|
|
559
559
|
lock: () => new Lock().withState('state', 'LOCK', 'UNLOCK', 'State of the lock').withLockState('lock_state', 'Actual state of the lock'),
|
|
560
|
-
max_temperature: () => new Numeric('max_temperature', access.STATE_SET).withUnit('°C').withDescription('Maximum temperature'),
|
|
561
|
-
max_temperature_limit: () => new Numeric('max_temperature_limit', access.STATE_SET).withUnit('°C').withDescription('Maximum temperature limit'),
|
|
562
|
-
min_temperature: () => new Numeric('min_temperature', access.STATE_SET).withUnit('°C').withDescription('Minimum temperature'),
|
|
560
|
+
max_temperature: () => new Numeric('max_temperature', access.STATE_SET).withUnit('°C').withDescription('Maximum temperature').withValueMin(-10).withValueMax(35),
|
|
561
|
+
max_temperature_limit: () => new Numeric('max_temperature_limit', access.STATE_SET).withUnit('°C').withDescription('Maximum temperature limit').withValueMin(-10).withValueMax(35),
|
|
562
|
+
min_temperature: () => new Numeric('min_temperature', access.STATE_SET).withUnit('°C').withDescription('Minimum temperature').withValueMin(-10).withValueMax(35),
|
|
563
563
|
occupancy: () => new Binary('occupancy', access.STATE, true, false).withDescription('Indicates whether the device detected occupancy'),
|
|
564
564
|
open_window: () => new Binary('open_window', access.STATE_SET, 'ON', 'OFF').withDescription('Enables/disables the status on the device'),
|
|
565
|
-
open_window_temperature: () => new Numeric('open_window_temperature', access.STATE_SET).withUnit('°C').withDescription('Open window temperature'),
|
|
565
|
+
open_window_temperature: () => new Numeric('open_window_temperature', access.STATE_SET).withUnit('°C').withDescription('Open window temperature').withValueMin(-10).withValueMax(35),
|
|
566
566
|
pm10: () => new Numeric('pm10', access.STATE).withUnit('µg/m³').withDescription('Measured PM10 (particulate matter) concentration'),
|
|
567
567
|
pm25: () => new Numeric('pm25', access.STATE).withUnit('µg/m³').withDescription('Measured PM2.5 (particulate matter) concentration'),
|
|
568
568
|
position: () => new Numeric('position', access.STATE).withUnit('%').withDescription('Position'),
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zigbee-herdsman-converters",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.341",
|
|
4
4
|
"lockfileVersion": 1,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"dependencies": {
|
|
@@ -471,14 +471,14 @@
|
|
|
471
471
|
"dev": true
|
|
472
472
|
},
|
|
473
473
|
"@eslint/eslintrc": {
|
|
474
|
-
"version": "1.0.
|
|
475
|
-
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.
|
|
476
|
-
"integrity": "sha512-
|
|
474
|
+
"version": "1.0.5",
|
|
475
|
+
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz",
|
|
476
|
+
"integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==",
|
|
477
477
|
"dev": true,
|
|
478
478
|
"requires": {
|
|
479
479
|
"ajv": "^6.12.4",
|
|
480
480
|
"debug": "^4.3.2",
|
|
481
|
-
"espree": "^9.
|
|
481
|
+
"espree": "^9.2.0",
|
|
482
482
|
"globals": "^13.9.0",
|
|
483
483
|
"ignore": "^4.0.6",
|
|
484
484
|
"import-fresh": "^3.2.1",
|
|
@@ -488,12 +488,12 @@
|
|
|
488
488
|
}
|
|
489
489
|
},
|
|
490
490
|
"@humanwhocodes/config-array": {
|
|
491
|
-
"version": "0.
|
|
492
|
-
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.
|
|
493
|
-
"integrity": "sha512-
|
|
491
|
+
"version": "0.9.2",
|
|
492
|
+
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz",
|
|
493
|
+
"integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==",
|
|
494
494
|
"dev": true,
|
|
495
495
|
"requires": {
|
|
496
|
-
"@humanwhocodes/object-schema": "^1.2.
|
|
496
|
+
"@humanwhocodes/object-schema": "^1.2.1",
|
|
497
497
|
"debug": "^4.1.1",
|
|
498
498
|
"minimatch": "^3.0.4"
|
|
499
499
|
}
|
|
@@ -1306,9 +1306,9 @@
|
|
|
1306
1306
|
"dev": true
|
|
1307
1307
|
},
|
|
1308
1308
|
"caniuse-lite": {
|
|
1309
|
-
"version": "1.0.
|
|
1310
|
-
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.
|
|
1311
|
-
"integrity": "sha512-
|
|
1309
|
+
"version": "1.0.30001284",
|
|
1310
|
+
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001284.tgz",
|
|
1311
|
+
"integrity": "sha512-t28SKa7g6kiIQi6NHeOcKrOrGMzCRrXvlasPwWC26TH2QNdglgzQIRUuJ0cR3NeQPH+5jpuveeeSFDLm2zbkEw==",
|
|
1312
1312
|
"dev": true
|
|
1313
1313
|
},
|
|
1314
1314
|
"chalk": {
|
|
@@ -1540,9 +1540,9 @@
|
|
|
1540
1540
|
}
|
|
1541
1541
|
},
|
|
1542
1542
|
"electron-to-chromium": {
|
|
1543
|
-
"version": "1.4.
|
|
1544
|
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.
|
|
1545
|
-
"integrity": "sha512-
|
|
1543
|
+
"version": "1.4.11",
|
|
1544
|
+
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.11.tgz",
|
|
1545
|
+
"integrity": "sha512-2OhsaYgsWGhWjx2et8kaUcdktPbBGjKM2X0BReUCKcSCPttEY+hz2zie820JLbttU8jwL92+JJysWwkut3wZgA==",
|
|
1546
1546
|
"dev": true
|
|
1547
1547
|
},
|
|
1548
1548
|
"emittery": {
|
|
@@ -1641,13 +1641,13 @@
|
|
|
1641
1641
|
}
|
|
1642
1642
|
},
|
|
1643
1643
|
"eslint": {
|
|
1644
|
-
"version": "8.
|
|
1645
|
-
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.
|
|
1646
|
-
"integrity": "sha512-
|
|
1644
|
+
"version": "8.4.0",
|
|
1645
|
+
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.4.0.tgz",
|
|
1646
|
+
"integrity": "sha512-kv0XQcAQJL/VD9THQKhTQZVqkJKA+tIj/v2ZKNaIHRAADcJWFb+B/BAewUYuF6UVg1s2xC5qXVoDk0G8sKGeTA==",
|
|
1647
1647
|
"dev": true,
|
|
1648
1648
|
"requires": {
|
|
1649
|
-
"@eslint/eslintrc": "^1.0.
|
|
1650
|
-
"@humanwhocodes/config-array": "^0.
|
|
1649
|
+
"@eslint/eslintrc": "^1.0.5",
|
|
1650
|
+
"@humanwhocodes/config-array": "^0.9.2",
|
|
1651
1651
|
"ajv": "^6.10.0",
|
|
1652
1652
|
"chalk": "^4.0.0",
|
|
1653
1653
|
"cross-spawn": "^7.0.2",
|
|
@@ -1658,7 +1658,7 @@
|
|
|
1658
1658
|
"eslint-scope": "^7.1.0",
|
|
1659
1659
|
"eslint-utils": "^3.0.0",
|
|
1660
1660
|
"eslint-visitor-keys": "^3.1.0",
|
|
1661
|
-
"espree": "^9.
|
|
1661
|
+
"espree": "^9.2.0",
|
|
1662
1662
|
"esquery": "^1.4.0",
|
|
1663
1663
|
"esutils": "^2.0.2",
|
|
1664
1664
|
"fast-deep-equal": "^3.1.3",
|
|
@@ -1735,9 +1735,9 @@
|
|
|
1735
1735
|
"dev": true
|
|
1736
1736
|
},
|
|
1737
1737
|
"espree": {
|
|
1738
|
-
"version": "9.
|
|
1739
|
-
"resolved": "https://registry.npmjs.org/espree/-/espree-9.
|
|
1740
|
-
"integrity": "sha512-
|
|
1738
|
+
"version": "9.2.0",
|
|
1739
|
+
"resolved": "https://registry.npmjs.org/espree/-/espree-9.2.0.tgz",
|
|
1740
|
+
"integrity": "sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==",
|
|
1741
1741
|
"dev": true,
|
|
1742
1742
|
"requires": {
|
|
1743
1743
|
"acorn": "^8.6.0",
|
|
@@ -2292,9 +2292,9 @@
|
|
|
2292
2292
|
}
|
|
2293
2293
|
},
|
|
2294
2294
|
"istanbul-reports": {
|
|
2295
|
-
"version": "3.1.
|
|
2296
|
-
"resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.
|
|
2297
|
-
"integrity": "sha512-
|
|
2295
|
+
"version": "3.1.1",
|
|
2296
|
+
"resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.1.tgz",
|
|
2297
|
+
"integrity": "sha512-q1kvhAXWSsXfMjCdNHNPKZZv94OlspKnoGv+R9RGbnqOOQ0VbNfLFgQDVgi7hHenKsndGq3/o0OBdzDXthWcNw==",
|
|
2298
2298
|
"dev": true,
|
|
2299
2299
|
"requires": {
|
|
2300
2300
|
"html-escaper": "^2.0.0",
|
|
@@ -3843,9 +3843,9 @@
|
|
|
3843
3843
|
"dev": true
|
|
3844
3844
|
},
|
|
3845
3845
|
"zigbee-herdsman": {
|
|
3846
|
-
"version": "0.13.
|
|
3847
|
-
"resolved": "https://registry.npmjs.org/zigbee-herdsman/-/zigbee-herdsman-0.13.
|
|
3848
|
-
"integrity": "sha512-
|
|
3846
|
+
"version": "0.13.177",
|
|
3847
|
+
"resolved": "https://registry.npmjs.org/zigbee-herdsman/-/zigbee-herdsman-0.13.177.tgz",
|
|
3848
|
+
"integrity": "sha512-pefcK2eaGL2LoeOkhrb4ZMErCe2ic1cUkCA6cfdxWs1t8XIWpZixWtGmV0dAUck0tjLfiEvs2M/zNEhWTWfrzw==",
|
|
3849
3849
|
"requires": {
|
|
3850
3850
|
"debounce": "^1.2.1",
|
|
3851
3851
|
"debug": "^4.3.3",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zigbee-herdsman-converters",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.341",
|
|
4
4
|
"description": "Collection of device converters to be used with zigbee-herdsman",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"files": [
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"buffer-crc32": "^0.2.13",
|
|
39
39
|
"https-proxy-agent": "^5.0.0",
|
|
40
40
|
"tar-stream": "^2.2.0",
|
|
41
|
-
"zigbee-herdsman": "^0.13.
|
|
41
|
+
"zigbee-herdsman": "^0.13.177"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"eslint": "*",
|