zigbee-herdsman-converters 14.0.526 → 14.0.527
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/devices/philips.js +20 -0
- package/devices/tuya.js +33 -1
- package/lib/exposes.js +9 -4
- package/package.json +1 -1
package/devices/philips.js
CHANGED
|
@@ -121,6 +121,15 @@ module.exports = [
|
|
|
121
121
|
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
|
|
122
122
|
ota: ota.zigbeeOTA,
|
|
123
123
|
},
|
|
124
|
+
{
|
|
125
|
+
zigbeeModel: ['915005996601'],
|
|
126
|
+
model: '915005996601',
|
|
127
|
+
vendor: 'Philips',
|
|
128
|
+
description: 'Hue white ambiance ceiling white Enrave M with Bluetooth',
|
|
129
|
+
meta: {turnsOffAtBrightness1: true},
|
|
130
|
+
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
|
|
131
|
+
ota: ota.zigbeeOTA,
|
|
132
|
+
},
|
|
124
133
|
{
|
|
125
134
|
zigbeeModel: ['915005996801', '915005996901'],
|
|
126
135
|
model: '915005996901',
|
|
@@ -2368,6 +2377,17 @@ module.exports = [
|
|
|
2368
2377
|
vendor: 'Philips',
|
|
2369
2378
|
description: 'Hue Being',
|
|
2370
2379
|
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
|
|
2380
|
+
ota: ota.zigbeeOTA,
|
|
2381
|
+
meta: {turnsOffAtBrightness1: true},
|
|
2382
|
+
},
|
|
2383
|
+
{
|
|
2384
|
+
zigbeeModel: ['4100448U9'],
|
|
2385
|
+
model: '4100448U9',
|
|
2386
|
+
vendor: 'Philips',
|
|
2387
|
+
description: 'Hue Being',
|
|
2388
|
+
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
|
|
2389
|
+
ota: ota.zigbeeOTA,
|
|
2390
|
+
meta: {turnsOffAtBrightness1: true},
|
|
2371
2391
|
},
|
|
2372
2392
|
{
|
|
2373
2393
|
zigbeeModel: ['1743630P7', '1743630V7'],
|
package/devices/tuya.js
CHANGED
|
@@ -2373,5 +2373,37 @@ module.exports = [
|
|
|
2373
2373
|
.withDescription('PIR keep time in seconds (refresh and update only while active)'),
|
|
2374
2374
|
],
|
|
2375
2375
|
},
|
|
2376
|
-
|
|
2376
|
+
{
|
|
2377
|
+
fingerprint: [{modelID: 'TS004F', manufacturerName: '_TZ3000_kjfzuycl'}],
|
|
2378
|
+
model: 'ERS-10TZBVB-AA',
|
|
2379
|
+
vendor: 'TuYa',
|
|
2380
|
+
description: 'Smart button',
|
|
2381
|
+
fromZigbee: [
|
|
2382
|
+
fz.command_step, fz.command_on, fz.command_off, fz.command_move_to_color_temp, fz.command_move_to_level,
|
|
2383
|
+
fz.tuya_multi_action, fz.tuya_operation_mode, fz.battery,
|
|
2384
|
+
],
|
|
2385
|
+
toZigbee: [tz.tuya_operation_mode],
|
|
2386
|
+
exposes: [
|
|
2387
|
+
e.action([
|
|
2388
|
+
'single', 'double', 'hold', 'brightness_move_to_level', 'color_temperature_move',
|
|
2389
|
+
'brightness_step_up', 'brightness_step_down', 'on', 'off',
|
|
2390
|
+
]),
|
|
2391
|
+
e.battery(),
|
|
2392
|
+
exposes.enum('operation_mode', ea.ALL, ['command', 'event']).withDescription(
|
|
2393
|
+
'Operation mode: "command" - for group control, "event" - for clicks'),
|
|
2394
|
+
],
|
|
2395
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
2396
|
+
const endpoint = device.getEndpoint(1);
|
|
2397
|
+
await endpoint.read('genBasic', [0x0004, 0x000, 0x0001, 0x0005, 0x0007, 0xfffe]);
|
|
2398
|
+
await endpoint.write('genOnOff', {'tuyaOperationMode': 1});
|
|
2399
|
+
await endpoint.read('genOnOff', ['tuyaOperationMode']);
|
|
2400
|
+
try {
|
|
2401
|
+
await endpoint.read(0xE001, [0xD011]);
|
|
2402
|
+
} catch (err) {/* do nothing */}
|
|
2403
|
+
await endpoint.read('genPowerCfg', ['batteryVoltage', 'batteryPercentageRemaining']);
|
|
2404
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
|
2405
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
|
|
2406
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
2407
|
+
},
|
|
2408
|
+
},
|
|
2377
2409
|
];
|
package/lib/exposes.js
CHANGED
|
@@ -327,7 +327,6 @@ class Cover extends Base {
|
|
|
327
327
|
super();
|
|
328
328
|
this.type = 'cover';
|
|
329
329
|
this.features = [];
|
|
330
|
-
this.features.push(new Enum('state', access.STATE_SET, ['OPEN', 'CLOSE', 'STOP']));
|
|
331
330
|
}
|
|
332
331
|
|
|
333
332
|
withPosition() {
|
|
@@ -341,6 +340,12 @@ class Cover extends Base {
|
|
|
341
340
|
this.features.push(new Numeric('tilt', access.ALL).withValueMin(0).withValueMax(100).withDescription('Tilt of this cover'));
|
|
342
341
|
return this;
|
|
343
342
|
}
|
|
343
|
+
|
|
344
|
+
withState(property='state', access=a.STATE_SET, values=['OPEN', 'CLOSE', 'STOP']) {
|
|
345
|
+
assert(!this.endpoint, 'Cannot add feature after adding endpoint');
|
|
346
|
+
this.features.push(new Enum(property, access, values));
|
|
347
|
+
return this;
|
|
348
|
+
}
|
|
344
349
|
}
|
|
345
350
|
|
|
346
351
|
class Fan extends Base {
|
|
@@ -532,9 +537,9 @@ module.exports = {
|
|
|
532
537
|
comfort_temperature: () => new Numeric('comfort_temperature', access.STATE_SET).withUnit('°C').withDescription('Comfort temperature').withValueMin(0).withValueMax(30),
|
|
533
538
|
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)'),
|
|
534
539
|
contact: () => new Binary('contact', access.STATE, false, true).withDescription('Indicates if the contact is closed (= true) or open (= false)'),
|
|
535
|
-
cover_position: () => new Cover().withPosition(),
|
|
536
|
-
cover_position_tilt: () => new Cover().withPosition().withTilt(),
|
|
537
|
-
cover_tilt: () => new Cover().withTilt(),
|
|
540
|
+
cover_position: () => new Cover().withState().withPosition(),
|
|
541
|
+
cover_position_tilt: () => new Cover().withState().withPosition().withTilt(),
|
|
542
|
+
cover_tilt: () => new Cover().withState().withTilt(),
|
|
538
543
|
cpu_temperature: () => new Numeric('cpu_temperature', access.STATE).withUnit('°C').withDescription('Temperature of the CPU'),
|
|
539
544
|
cube_side: (name) => new Numeric(name, access.STATE).withDescription('Side of the cube').withValueMin(0).withValueMax(6).withValueStep(1),
|
|
540
545
|
current: () => new Numeric('current', access.STATE).withUnit('A').withDescription('Instantaneous measured electrical current'),
|