node-switchbot 1.6.0-beta.1 → 1.6.0-beta.11
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/lib/switchbot-advertising.js +120 -90
- package/lib/switchbot-device-wobulb.js +107 -3
- package/lib/switchbot-device-wostrip.js +101 -3
- package/package.json +1 -1
|
@@ -198,8 +198,8 @@ class SwitchbotAdvertising {
|
|
|
198
198
|
let byte5 = buf.readUInt8(5);
|
|
199
199
|
|
|
200
200
|
let temp_sign = byte4 & 0b10000000 ? 1 : -1;
|
|
201
|
-
let temp_c = temp_sign * ((byte4 & 0b01111111) + byte3 / 10);
|
|
202
|
-
let temp_f = (temp_c * 9
|
|
201
|
+
let temp_c = temp_sign * ((byte4 & 0b01111111) + (byte3 & 0b00001111) / 10);
|
|
202
|
+
let temp_f = (temp_c * 9 / 5) + 32;
|
|
203
203
|
temp_f = Math.round(temp_f * 10) / 10;
|
|
204
204
|
|
|
205
205
|
let data = {
|
|
@@ -227,10 +227,8 @@ class SwitchbotAdvertising {
|
|
|
227
227
|
return null;
|
|
228
228
|
}
|
|
229
229
|
let byte1 = buf.readUInt8(1);
|
|
230
|
-
// let byte2 = buf.readUInt8(2);
|
|
231
|
-
let byte3 = buf.readUInt8(3);
|
|
232
230
|
let byte4 = buf.readUInt8(4);
|
|
233
|
-
|
|
231
|
+
|
|
234
232
|
|
|
235
233
|
let onState = byte1 & 0b10000000 ? true : false; // 1 - on
|
|
236
234
|
let autoMode = byte4 & 0b10000000 ? true : false; // 1 - auto
|
|
@@ -256,23 +254,32 @@ class SwitchbotAdvertising {
|
|
|
256
254
|
}
|
|
257
255
|
return null;
|
|
258
256
|
}
|
|
257
|
+
|
|
259
258
|
let byte1 = buf.readUInt8(1);
|
|
260
259
|
let byte2 = buf.readUInt8(2);
|
|
261
|
-
// let byte3 = buf.readUInt8(3);
|
|
262
|
-
// let byte4 = buf.readUInt8(4);
|
|
263
260
|
let byte5 = buf.readUInt8(5);
|
|
264
261
|
|
|
265
|
-
let
|
|
266
|
-
let
|
|
262
|
+
let tested = byte1 & 0b10000000 ? true : false;
|
|
263
|
+
let movement = byte1 & 0b01000000 ? true : false;
|
|
264
|
+
let battery = byte2 & 0b01111111;
|
|
265
|
+
let led = (byte5 & 0b00100000) >> 5;
|
|
266
|
+
let iot = (byte5 & 0b00010000) >> 4;
|
|
267
|
+
let sense_distance = (byte5 & 0b00001100) >> 2;
|
|
267
268
|
let lightLevel = byte5 & 0b00000011;
|
|
269
|
+
let is_light = byte5 & 0b00000010 ? true : false;
|
|
268
270
|
|
|
269
271
|
let data = {
|
|
270
272
|
model: "s",
|
|
271
273
|
modelName: "WoMotion",
|
|
272
|
-
|
|
274
|
+
tested: tested,
|
|
275
|
+
movement: movement,
|
|
273
276
|
battery: battery,
|
|
277
|
+
led: led,
|
|
278
|
+
iot: iot,
|
|
279
|
+
sense_distance: sense_distance,
|
|
274
280
|
lightLevel:
|
|
275
281
|
lightLevel == 1 ? "dark" : lightLevel == 2 ? "bright" : "unknown",
|
|
282
|
+
is_light: is_light,
|
|
276
283
|
};
|
|
277
284
|
|
|
278
285
|
return data;
|
|
@@ -291,29 +298,33 @@ class SwitchbotAdvertising {
|
|
|
291
298
|
let byte1 = buf.readUInt8(1);
|
|
292
299
|
let byte2 = buf.readUInt8(2);
|
|
293
300
|
let byte3 = buf.readUInt8(3);
|
|
294
|
-
|
|
295
|
-
// let byte5 = buf.readUInt8(5);
|
|
296
|
-
// let byte6 = buf.readUInt8(6);
|
|
297
|
-
// let byte7 = buf.readUInt8(7);
|
|
298
|
-
// let byte8 = buf.readUInt8(8);
|
|
301
|
+
let byte8 = buf.readUInt8(8);
|
|
299
302
|
|
|
300
|
-
let pirState = byte1 & 0b01000000 ? true : false; // 1 - Movement detected
|
|
301
|
-
let battery = byte2 & 0b01111111; // %
|
|
302
303
|
let hallState = (byte3 >> 1) & 0b00000011;
|
|
304
|
+
let tested = byte1 & 0b10000000;
|
|
305
|
+
let movement = byte1 & 0b01000000 ? true : false; // 1 - Movement detected
|
|
306
|
+
let battery = byte2 & 0b01111111; // %
|
|
307
|
+
let contact_open = byte3 & 0b00000010 == 0b00000010;
|
|
308
|
+
let contact_timeout = byte3 & 0b00000100 == 0b00000100;
|
|
303
309
|
let lightLevel = byte3 & 0b00000001;
|
|
310
|
+
let button_count = byte8 & 0b00001111;
|
|
304
311
|
|
|
305
312
|
let data = {
|
|
306
313
|
model: "d",
|
|
307
314
|
modelName: "WoContact",
|
|
308
|
-
movement:
|
|
315
|
+
movement: movement,
|
|
316
|
+
tested: tested,
|
|
309
317
|
battery: battery,
|
|
318
|
+
contact_open: contact_open,
|
|
319
|
+
contact_timeout: contact_timeout,
|
|
320
|
+
lightLevel: lightLevel == 0 ? "dark" : "bright",
|
|
321
|
+
button_count: button_count,
|
|
310
322
|
doorState:
|
|
311
323
|
hallState == 0
|
|
312
324
|
? "close"
|
|
313
325
|
: hallState == 1
|
|
314
326
|
? "open"
|
|
315
327
|
: "timeout no closed",
|
|
316
|
-
lightLevel: lightLevel == 0 ? "dark" : "bright",
|
|
317
328
|
};
|
|
318
329
|
|
|
319
330
|
return data;
|
|
@@ -332,20 +343,24 @@ class SwitchbotAdvertising {
|
|
|
332
343
|
let byte2 = buf.readUInt8(2);
|
|
333
344
|
let byte3 = buf.readUInt8(3);
|
|
334
345
|
let byte4 = buf.readUInt8(4);
|
|
335
|
-
// let byte5 = buf.readUInt8(5);
|
|
336
346
|
|
|
337
347
|
let calibration = byte1 & 0b01000000 ? true : false; // Whether the calibration is completed
|
|
338
348
|
let battery = byte2 & 0b01111111; // %
|
|
349
|
+
let inMotion = byte3 & 0b10000000 ? true : false;
|
|
339
350
|
let currPosition = byte3 & 0b01111111; // current positon %
|
|
351
|
+
//let currPosition = max(min(byte3 & 0b01111111, 100), 0) //byte3 & 0b01111111; // current positon %
|
|
340
352
|
let lightLevel = (byte4 >> 4) & 0b00001111; // light sensor level (1-10)
|
|
353
|
+
let deviceChain = byte4 & 0b00000111;
|
|
341
354
|
|
|
342
355
|
let data = {
|
|
343
356
|
model: "c",
|
|
344
357
|
modelName: "WoCurtain",
|
|
345
358
|
calibration: calibration,
|
|
346
359
|
battery: battery,
|
|
360
|
+
inMotion: inMotion,
|
|
347
361
|
position: currPosition,
|
|
348
362
|
lightLevel: lightLevel,
|
|
363
|
+
deviceChain: deviceChain,
|
|
349
364
|
};
|
|
350
365
|
|
|
351
366
|
return data;
|
|
@@ -360,28 +375,37 @@ class SwitchbotAdvertising {
|
|
|
360
375
|
}
|
|
361
376
|
return null;
|
|
362
377
|
}
|
|
378
|
+
let byte1 = buf.readUInt8(1);//power and light status
|
|
379
|
+
let byte2 = buf.readUInt8(2);//bulb brightness
|
|
380
|
+
let byte3 = buf.readUInt8(3);//bulb R
|
|
381
|
+
let byte4 = buf.readUInt8(4);//bulb G
|
|
382
|
+
let byte5 = buf.readUInt8(5);//bulb B
|
|
383
|
+
let byte6 = buf.readUInt8(6);//bulb temperature
|
|
384
|
+
let byte7 = buf.readUInt8(7);
|
|
385
|
+
let byte8 = buf.readUInt8(8);
|
|
386
|
+
let byte9 = buf.readUInt8(9);
|
|
387
|
+
let byte10 = buf.readUInt8(10);//bulb mode
|
|
388
|
+
|
|
389
|
+
let red = byte3;
|
|
390
|
+
let green = byte4;
|
|
391
|
+
let blue = byte5;
|
|
392
|
+
let color_temperature = byte6;
|
|
393
|
+
let state = byte7 & 0b01111111 ? true : false;
|
|
394
|
+
let brightness = byte7 & 0b01111111;
|
|
395
|
+
let delay = byte8 & 0b10000000;
|
|
396
|
+
let preset = byte8 & 0b00001000;
|
|
397
|
+
let color_mode = byte8 & 0b00000111;
|
|
398
|
+
let speed = byte9 & 0b01111111;
|
|
399
|
+
let loop_index = byte10 & 0b11111110;
|
|
363
400
|
|
|
364
|
-
|
|
365
|
-
const byte7 = buf.readUInt8(7);
|
|
366
|
-
const byte8 = buf.readUInt8(8);
|
|
367
|
-
const byte9 = buf.readUInt8(9);
|
|
368
|
-
const byte10 = buf.readUInt8(10);
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
const sequence_number = byte6;
|
|
372
|
-
const isOn = byte7 & 0b01111111 ? true : false;
|
|
373
|
-
const brightness = byte7 & 0b01111111;
|
|
374
|
-
const delay = byte8 & 0b10000000;
|
|
375
|
-
const preset = byte8 & 0b00001000;
|
|
376
|
-
const color_mode = byte8 & 0b00000111;
|
|
377
|
-
const speed = byte9 & 0b01111111;
|
|
378
|
-
const loop_index = byte10 & 0b11111110;
|
|
379
|
-
|
|
380
|
-
const data = {
|
|
401
|
+
let data = {
|
|
381
402
|
model: "u",
|
|
382
403
|
modelName: "WoBulb",
|
|
383
|
-
|
|
384
|
-
|
|
404
|
+
color_temperature: color_temperature,
|
|
405
|
+
state: state,
|
|
406
|
+
red: red,
|
|
407
|
+
green: green,
|
|
408
|
+
blue: blue,
|
|
385
409
|
brightness: brightness,
|
|
386
410
|
delay: delay,
|
|
387
411
|
preset: preset,
|
|
@@ -402,22 +426,22 @@ class SwitchbotAdvertising {
|
|
|
402
426
|
}
|
|
403
427
|
return null;
|
|
404
428
|
}
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
429
|
+
let byte9 = buf.readUInt8(9); // byte9: plug mini state; 0x00=off, 0x80=on
|
|
430
|
+
let byte10 = buf.readUInt8(10); // byte10: bit0: 0=no delay,1=delay, bit1:0=no timer, 1=timer; bit2:0=no sync time, 1=sync'ed time
|
|
431
|
+
let byte11 = buf.readUInt8(11); // byte11: wifi rssi
|
|
432
|
+
let byte12 = buf.readUInt8(12); // byte12: bit7: overload?
|
|
433
|
+
let byte13 = buf.readUInt8(13); // byte12[bit0~6] + byte13: current power value
|
|
434
|
+
|
|
435
|
+
let state = byte9 === 0x00 ? "off" : byte9 === 0x80 ? "on" : null;
|
|
436
|
+
let delay = !!(byte10 & 0b00000001);
|
|
437
|
+
let timer = !!(byte10 & 0b00000010);
|
|
438
|
+
let syncUtcTime = !!(byte10 & 0b00000100);
|
|
439
|
+
let wifiRssi = byte11;
|
|
440
|
+
let overload = !!(byte12 & 0b10000000);
|
|
441
|
+
let currentPower = (((byte12 & 0b01111111) << 8) + byte13) / 10; // in watt
|
|
418
442
|
// TODO: voltage ???
|
|
419
443
|
|
|
420
|
-
|
|
444
|
+
let data = {
|
|
421
445
|
model: "g",
|
|
422
446
|
modelName: "WoPlugMini",
|
|
423
447
|
state: state,
|
|
@@ -441,22 +465,22 @@ class SwitchbotAdvertising {
|
|
|
441
465
|
}
|
|
442
466
|
return null;
|
|
443
467
|
}
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
468
|
+
let byte9 = buf.readUInt8(9); // byte9: plug mini state; 0x00=off, 0x80=on
|
|
469
|
+
let byte10 = buf.readUInt8(10); // byte10: bit0: 0=no delay,1=delay, bit1:0=no timer, 1=timer; bit2:0=no sync time, 1=sync'ed time
|
|
470
|
+
let byte11 = buf.readUInt8(11); // byte11: wifi rssi
|
|
471
|
+
let byte12 = buf.readUInt8(12); // byte12: bit7: overload?
|
|
472
|
+
let byte13 = buf.readUInt8(13); // byte12[bit0~6] + byte13: current power value
|
|
473
|
+
|
|
474
|
+
let state = byte9 === 0x00 ? "off" : byte9 === 0x80 ? "on" : null;
|
|
475
|
+
let delay = !!(byte10 & 0b00000001);
|
|
476
|
+
let timer = !!(byte10 & 0b00000010);
|
|
477
|
+
let syncUtcTime = !!(byte10 & 0b00000100);
|
|
478
|
+
let wifiRssi = byte11;
|
|
479
|
+
let overload = !!(byte12 & 0b10000000);
|
|
480
|
+
let currentPower = (((byte12 & 0b01111111) << 8) + byte13) / 10; // in watt
|
|
457
481
|
// TODO: voltage ???
|
|
458
482
|
|
|
459
|
-
|
|
483
|
+
let data = {
|
|
460
484
|
model: "j",
|
|
461
485
|
modelName: "WoPlugMini",
|
|
462
486
|
state: state,
|
|
@@ -482,20 +506,15 @@ class SwitchbotAdvertising {
|
|
|
482
506
|
}
|
|
483
507
|
let byte1 = buf.readUInt8(1);
|
|
484
508
|
let byte2 = buf.readUInt8(2);
|
|
485
|
-
// let byte3 = buf.readUInt8(3);
|
|
486
|
-
// let byte4 = buf.readUInt8(4);
|
|
487
|
-
let byte5 = buf.readUInt8(5);
|
|
488
509
|
|
|
489
|
-
|
|
510
|
+
let movement = (byte1 & 0b01000000) ? true : false; // 1 - Movement detected
|
|
490
511
|
let battery = byte2 & 0b01111111; // %
|
|
491
|
-
//let lightLevel = byte5 & 0b00000011;
|
|
492
512
|
|
|
493
513
|
let data = {
|
|
494
514
|
model: "o",
|
|
495
515
|
modelName: "WoSmartLock",
|
|
496
|
-
//movement: pirState,
|
|
497
516
|
battery: battery,
|
|
498
|
-
|
|
517
|
+
movement: movement,
|
|
499
518
|
};
|
|
500
519
|
|
|
501
520
|
return data;
|
|
@@ -516,8 +535,8 @@ class SwitchbotAdvertising {
|
|
|
516
535
|
let byte5 = buf.readUInt8(5);
|
|
517
536
|
|
|
518
537
|
let temp_sign = byte4 & 0b10000000 ? 1 : -1;
|
|
519
|
-
let temp_c = temp_sign * ((byte4 & 0b01111111) + byte3 / 10);
|
|
520
|
-
let temp_f = (temp_c * 9
|
|
538
|
+
let temp_c = temp_sign * ((byte4 & 0b01111111) + (byte3 & 0b00001111) / 10);
|
|
539
|
+
let temp_f = (temp_c * 9 / 5) + 32;
|
|
521
540
|
temp_f = Math.round(temp_f * 10) / 10;
|
|
522
541
|
|
|
523
542
|
let data = {
|
|
@@ -545,24 +564,35 @@ class SwitchbotAdvertising {
|
|
|
545
564
|
return null;
|
|
546
565
|
}
|
|
547
566
|
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
567
|
+
let byte1 = buf.readUInt8(1);//power and light status
|
|
568
|
+
let byte2 = buf.readUInt8(2);//bulb brightness
|
|
569
|
+
let byte3 = buf.readUInt8(3);//bulb R
|
|
570
|
+
let byte4 = buf.readUInt8(4);//bulb G
|
|
571
|
+
let byte5 = buf.readUInt8(5);//bulb B
|
|
572
|
+
let byte7 = buf.readUInt8(7);
|
|
573
|
+
let byte8 = buf.readUInt8(8);
|
|
574
|
+
let byte9 = buf.readUInt8(9);
|
|
575
|
+
let byte10 = buf.readUInt8(10);
|
|
576
|
+
|
|
577
|
+
let state = byte7 & 0b10000000 ? true : false;
|
|
578
|
+
let brightness = byte7 & 0b01111111;
|
|
579
|
+
let red = byte3;
|
|
580
|
+
let green = byte4;
|
|
581
|
+
let blue = byte5;
|
|
582
|
+
let delay = byte8 & 0b10000000;
|
|
583
|
+
let preset = byte8 & 0b00001000;
|
|
584
|
+
let color_mode = byte8 & 0b00000111;
|
|
585
|
+
let speed = byte9 & 0b01111111;
|
|
586
|
+
let loop_index = byte10 & 0b11111110;
|
|
560
587
|
|
|
561
|
-
|
|
588
|
+
let data = {
|
|
562
589
|
model: "r",
|
|
563
590
|
modelName: "WoStrip",
|
|
564
|
-
|
|
591
|
+
state: state,
|
|
565
592
|
brightness: brightness,
|
|
593
|
+
red: red,
|
|
594
|
+
green: green,
|
|
595
|
+
blue: blue,
|
|
566
596
|
delay: delay,
|
|
567
597
|
preset: preset,
|
|
568
598
|
color_mode: color_mode,
|
|
@@ -35,10 +35,114 @@ class SwitchbotDeviceWoBulb extends SwitchbotDevice {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
|
-
* @returns {Promise<
|
|
38
|
+
* @returns {Promise<number>} resolves with brightness percent
|
|
39
|
+
*/
|
|
40
|
+
setBrightness(brightness) {
|
|
41
|
+
if (typeof brightness != "number") {
|
|
42
|
+
return new Promise((resolve, reject) => {
|
|
43
|
+
reject(
|
|
44
|
+
new Error(
|
|
45
|
+
"The type of target brightness percentage is incorrent: " +
|
|
46
|
+
typeof brightness
|
|
47
|
+
)
|
|
48
|
+
);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
if (brightness > 100) {
|
|
52
|
+
brightness = 100;
|
|
53
|
+
} else if (brightness < 0) {
|
|
54
|
+
brightness = 0;
|
|
55
|
+
}
|
|
56
|
+
return this._setState([0x02, 0x14]);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @returns {Promise<number>} resolves with brightness percent
|
|
61
|
+
*/
|
|
62
|
+
setColorTemperature(color_temperature) {
|
|
63
|
+
if (typeof color_temperature != "number") {
|
|
64
|
+
return new Promise((resolve, reject) => {
|
|
65
|
+
reject(
|
|
66
|
+
new Error(
|
|
67
|
+
"The type of target brightness percentage is incorrent: " +
|
|
68
|
+
typeof brightness
|
|
69
|
+
)
|
|
70
|
+
);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
if (color_temperature > 100) {
|
|
74
|
+
color_temperature = 100;
|
|
75
|
+
} else if (color_temperature < 0) {
|
|
76
|
+
color_temperature = 0;
|
|
77
|
+
}
|
|
78
|
+
return this._setState([0x02, 0x17, color_temperature]);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @returns {Promise<number>} resolves with brightness percent
|
|
39
83
|
*/
|
|
40
|
-
|
|
41
|
-
|
|
84
|
+
setRGB(brightness, red, green, blue) {
|
|
85
|
+
if (typeof brightness != "number") {
|
|
86
|
+
return new Promise((resolve, reject) => {
|
|
87
|
+
reject(
|
|
88
|
+
new Error(
|
|
89
|
+
"The type of target brightness percentage is incorrent: " +
|
|
90
|
+
typeof brightness
|
|
91
|
+
)
|
|
92
|
+
);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
if (typeof red != "number") {
|
|
96
|
+
return new Promise((resolve, reject) => {
|
|
97
|
+
reject(
|
|
98
|
+
new Error(
|
|
99
|
+
"The type of target red is incorrent: " +
|
|
100
|
+
typeof red
|
|
101
|
+
)
|
|
102
|
+
);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
if (typeof green != "number") {
|
|
106
|
+
return new Promise((resolve, reject) => {
|
|
107
|
+
reject(
|
|
108
|
+
new Error(
|
|
109
|
+
"The type of target green is incorrent: " +
|
|
110
|
+
typeof green
|
|
111
|
+
)
|
|
112
|
+
);
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
if (typeof blue != "number") {
|
|
116
|
+
return new Promise((resolve, reject) => {
|
|
117
|
+
reject(
|
|
118
|
+
new Error(
|
|
119
|
+
"The type of target blue is incorrent: " +
|
|
120
|
+
typeof blue
|
|
121
|
+
)
|
|
122
|
+
);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
if (brightness > 100) {
|
|
126
|
+
brightness = 100;
|
|
127
|
+
} else if (brightness < 0) {
|
|
128
|
+
brightness = 0;
|
|
129
|
+
}
|
|
130
|
+
if (red > 255) {
|
|
131
|
+
red = 255;
|
|
132
|
+
} else if (red < 0) {
|
|
133
|
+
red = 0;
|
|
134
|
+
}
|
|
135
|
+
if (green > 255) {
|
|
136
|
+
green = 255;
|
|
137
|
+
} else if (green < 0) {
|
|
138
|
+
green = 0;
|
|
139
|
+
}
|
|
140
|
+
if (blue > 255) {
|
|
141
|
+
blue = 255;
|
|
142
|
+
} else if (blue < 0) {
|
|
143
|
+
blue = 0;
|
|
144
|
+
}
|
|
145
|
+
return this._setState([0x02, 0x12, brightness, red, green, blue]);
|
|
42
146
|
}
|
|
43
147
|
|
|
44
148
|
/**
|
|
@@ -35,10 +35,108 @@ class SwitchbotDeviceWoStrip extends SwitchbotDevice {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
|
-
* @returns {Promise<
|
|
38
|
+
* @returns {Promise<number>} resolves with brightness percent
|
|
39
|
+
*/
|
|
40
|
+
setBrightness(brightness) {
|
|
41
|
+
if (typeof brightness != "number") {
|
|
42
|
+
return new Promise((resolve, reject) => {
|
|
43
|
+
reject(
|
|
44
|
+
new Error(
|
|
45
|
+
"The type of target brightness percentage is incorrent: " +
|
|
46
|
+
typeof brightness
|
|
47
|
+
)
|
|
48
|
+
);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
if (brightness > 100) {
|
|
52
|
+
brightness = 100;
|
|
53
|
+
} else if (brightness < 0) {
|
|
54
|
+
brightness = 0;
|
|
55
|
+
}
|
|
56
|
+
return this._setState([0x02, 0x14]);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @returns {Promise<number>} resolves with color temperature
|
|
61
|
+
*/
|
|
62
|
+
setColorTemperature(color_temperature) {
|
|
63
|
+
if (color_temperature) {
|
|
64
|
+
return new Promise((resolve, reject) => {
|
|
65
|
+
reject(
|
|
66
|
+
new Error(
|
|
67
|
+
"Strip Light Doesn't Support Color temperature: " +
|
|
68
|
+
typeof color_temperature
|
|
69
|
+
)
|
|
70
|
+
);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @returns {Promise<number>} resolves with brightness + rgb
|
|
39
77
|
*/
|
|
40
|
-
|
|
41
|
-
|
|
78
|
+
setRGB(brightness, red, green, blue) {
|
|
79
|
+
if (typeof brightness != "number") {
|
|
80
|
+
return new Promise((resolve, reject) => {
|
|
81
|
+
reject(
|
|
82
|
+
new Error(
|
|
83
|
+
"The type of target brightness percentage is incorrent: " +
|
|
84
|
+
typeof brightness
|
|
85
|
+
)
|
|
86
|
+
);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
if (typeof red != "number") {
|
|
90
|
+
return new Promise((resolve, reject) => {
|
|
91
|
+
reject(
|
|
92
|
+
new Error(
|
|
93
|
+
"The type of target red is incorrent: " +
|
|
94
|
+
typeof red
|
|
95
|
+
)
|
|
96
|
+
);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (typeof green != "number") {
|
|
100
|
+
return new Promise((resolve, reject) => {
|
|
101
|
+
reject(
|
|
102
|
+
new Error(
|
|
103
|
+
"The type of target green is incorrent: " +
|
|
104
|
+
typeof green
|
|
105
|
+
)
|
|
106
|
+
);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
if (typeof blue != "number") {
|
|
110
|
+
return new Promise((resolve, reject) => {
|
|
111
|
+
reject(
|
|
112
|
+
new Error(
|
|
113
|
+
"The type of target blue is incorrent: " +
|
|
114
|
+
typeof blue
|
|
115
|
+
)
|
|
116
|
+
);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
if (brightness > 100) {
|
|
120
|
+
brightness = 100;
|
|
121
|
+
} else if (brightness < 0) {
|
|
122
|
+
brightness = 0;
|
|
123
|
+
}
|
|
124
|
+
if (red > 255) {
|
|
125
|
+
red = 255;
|
|
126
|
+
} else if (red < 0) {
|
|
127
|
+
red = 0;
|
|
128
|
+
}
|
|
129
|
+
if (green > 255) {
|
|
130
|
+
green = 255;
|
|
131
|
+
} else if (green < 0) {
|
|
132
|
+
green = 0;
|
|
133
|
+
}
|
|
134
|
+
if (blue > 255) {
|
|
135
|
+
blue = 255;
|
|
136
|
+
} else if (blue < 0) {
|
|
137
|
+
blue = 0;
|
|
138
|
+
}
|
|
139
|
+
return this._setState([0x02, 0x12, brightness, red, green, blue]);
|
|
42
140
|
}
|
|
43
141
|
|
|
44
142
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-switchbot",
|
|
3
|
-
"version": "1.6.0-beta.
|
|
3
|
+
"version": "1.6.0-beta.11",
|
|
4
4
|
"description": "The node-switchbot is a Node.js module which allows you to control your Switchbot Devices through Bluetooth (BLE).",
|
|
5
5
|
"main": "./lib/switchbot.js",
|
|
6
6
|
"files": [
|