node-switchbot 1.6.0-beta.1 → 1.6.0-beta.3

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.
@@ -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) / 5 + 32;
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
- let byte5 = buf.readUInt8(5);
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,33 @@ class SwitchbotAdvertising {
256
254
  }
257
255
  return null;
258
256
  }
257
+
258
+
259
259
  let byte1 = buf.readUInt8(1);
260
260
  let byte2 = buf.readUInt8(2);
261
- // let byte3 = buf.readUInt8(3);
262
- // let byte4 = buf.readUInt8(4);
263
261
  let byte5 = buf.readUInt8(5);
264
262
 
265
- let pirState = byte1 & 0b01000000 ? true : false; // 1 - Movement detected
266
- let battery = byte2 & 0b01111111; // %
267
- let lightLevel = byte5 & 0b00000011;
263
+
264
+ let tested = byte1 & 0b10000000 ? true : false;
265
+ let movement = byte1 & 0b01000000 ? true : false;
266
+ let battery = byte2 & 0b01111111;
267
+ let led = (byte5 & 0b00100000) >> 5;
268
+ let iot = (byte5 & 0b00010000) >> 4;
269
+ let sense_distance = (byte5 & 0b00001100) >> 2;
270
+ let light_intensity = byte5 & 0b00000011;
271
+ let is_light = byte5 & 0b00000010 ? true : false;
268
272
 
269
273
  let data = {
270
274
  model: "s",
271
275
  modelName: "WoMotion",
272
- movement: pirState,
276
+ tested: tested,
277
+ movement: movement,
273
278
  battery: battery,
274
- lightLevel:
275
- lightLevel == 1 ? "dark" : lightLevel == 2 ? "bright" : "unknown",
279
+ led: led,
280
+ iot: iot,
281
+ sense_distance: sense_distance,
282
+ light_intensity: light_intensity,
283
+ is_light: is_light,
276
284
  };
277
285
 
278
286
  return data;
@@ -291,29 +299,28 @@ class SwitchbotAdvertising {
291
299
  let byte1 = buf.readUInt8(1);
292
300
  let byte2 = buf.readUInt8(2);
293
301
  let byte3 = buf.readUInt8(3);
294
- // let byte4 = buf.readUInt8(4);
295
- // let byte5 = buf.readUInt8(5);
296
- // let byte6 = buf.readUInt8(6);
297
- // let byte7 = buf.readUInt8(7);
298
- // let byte8 = buf.readUInt8(8);
302
+ let byte8 = buf.readUInt8(8);
299
303
 
300
- let pirState = byte1 & 0b01000000 ? true : false; // 1 - Movement detected
301
- let battery = byte2 & 0b01111111; // %
302
304
  let hallState = (byte3 >> 1) & 0b00000011;
303
- let lightLevel = byte3 & 0b00000001;
305
+ let tested = byte1 & 0b10000000;
306
+ let movement = byte1 & 0b01000000 ? true : false; // 1 - Movement detected
307
+ let battery = byte2 & 0b01111111; // %
308
+ let contact_open = byte3 & 0b00000010 == 0b00000010;
309
+ let contact_timeout = byte3 & 0b00000100 == 0b00000100;
310
+ let is_light = byte3 & 0b00000001 ? true : false;
311
+ let button_count = byte8 & 0b00001111;
304
312
 
305
313
  let data = {
306
314
  model: "d",
307
315
  modelName: "WoContact",
308
- movement: pirState,
316
+ movement: movement,
317
+ tested: tested,
309
318
  battery: battery,
310
- doorState:
311
- hallState == 0
312
- ? "close"
313
- : hallState == 1
314
- ? "open"
315
- : "timeout no closed",
316
- lightLevel: lightLevel == 0 ? "dark" : "bright",
319
+ contact_open: contact_open,
320
+ contact_timeout: contact_timeout,
321
+ is_light: is_light,
322
+ button_count: button_count,
323
+ hallState: hallState,
317
324
  };
318
325
 
319
326
  return data;
@@ -332,20 +339,23 @@ class SwitchbotAdvertising {
332
339
  let byte2 = buf.readUInt8(2);
333
340
  let byte3 = buf.readUInt8(3);
334
341
  let byte4 = buf.readUInt8(4);
335
- // let byte5 = buf.readUInt8(5);
336
342
 
337
343
  let calibration = byte1 & 0b01000000 ? true : false; // Whether the calibration is completed
338
344
  let battery = byte2 & 0b01111111; // %
339
- let currPosition = byte3 & 0b01111111; // current positon %
345
+ let inMotion = byte3 & 0b10000000 ? true : false;
346
+ let currPosition = max(min(byte3 & 0b01111111, 100), 0) //byte3 & 0b01111111; // current positon %
340
347
  let lightLevel = (byte4 >> 4) & 0b00001111; // light sensor level (1-10)
348
+ let deviceChain = byte4 & 0b00000111;
341
349
 
342
350
  let data = {
343
351
  model: "c",
344
352
  modelName: "WoCurtain",
345
353
  calibration: calibration,
346
354
  battery: battery,
355
+ inMotion: inMotion,
347
356
  position: currPosition,
348
357
  lightLevel: lightLevel,
358
+ deviceChain: deviceChain,
349
359
  };
350
360
 
351
361
  return data;
@@ -369,7 +379,7 @@ class SwitchbotAdvertising {
369
379
 
370
380
 
371
381
  const sequence_number = byte6;
372
- const isOn = byte7 & 0b01111111 ? true : false;
382
+ const state = byte7 & 0b01111111 ? true : false;
373
383
  const brightness = byte7 & 0b01111111;
374
384
  const delay = byte8 & 0b10000000;
375
385
  const preset = byte8 & 0b00001000;
@@ -381,7 +391,7 @@ class SwitchbotAdvertising {
381
391
  model: "u",
382
392
  modelName: "WoBulb",
383
393
  sequence_number: sequence_number,
384
- isOn: isOn,
394
+ state: state,
385
395
  brightness: brightness,
386
396
  delay: delay,
387
397
  preset: preset,
@@ -482,20 +492,15 @@ class SwitchbotAdvertising {
482
492
  }
483
493
  let byte1 = buf.readUInt8(1);
484
494
  let byte2 = buf.readUInt8(2);
485
- // let byte3 = buf.readUInt8(3);
486
- // let byte4 = buf.readUInt8(4);
487
- let byte5 = buf.readUInt8(5);
488
495
 
489
- //let pirState = (byte1 & 0b01000000) ? true : false; // 1 - Movement detected
496
+ let movement = (byte1 & 0b01000000) ? true : false; // 1 - Movement detected
490
497
  let battery = byte2 & 0b01111111; // %
491
- //let lightLevel = byte5 & 0b00000011;
492
498
 
493
499
  let data = {
494
500
  model: "o",
495
501
  modelName: "WoSmartLock",
496
- //movement: pirState,
497
502
  battery: battery,
498
- //lightLevel: (lightLevel == 1) ? 'dark' : ((lightLevel == 2) ? 'bright' : 'unknown'),
503
+ movement: movement,
499
504
  };
500
505
 
501
506
  return data;
@@ -516,8 +521,8 @@ class SwitchbotAdvertising {
516
521
  let byte5 = buf.readUInt8(5);
517
522
 
518
523
  let temp_sign = byte4 & 0b10000000 ? 1 : -1;
519
- let temp_c = temp_sign * ((byte4 & 0b01111111) + byte3 / 10);
520
- let temp_f = (temp_c * 9) / 5 + 32;
524
+ let temp_c = temp_sign * ((byte4 & 0b01111111) + (byte3 & 0b00001111) / 10);
525
+ let temp_f = (temp_c * 9 / 5) + 32;
521
526
  temp_f = Math.round(temp_f * 10) / 10;
522
527
 
523
528
  let data = {
@@ -550,8 +555,8 @@ class SwitchbotAdvertising {
550
555
  const byte9 = buf.readUInt8(9);
551
556
  const byte10 = buf.readUInt8(10);
552
557
 
553
- const isOn = byte7 & 0b10000000 ? true : false;
554
- const brightness = byte7 & 0b01111111;
558
+ const state = byte7 & 0b10000000 ? true : false;
559
+ const lightLevel = byte7 & 0b01111111;
555
560
  const delay = byte8 & 0b10000000;
556
561
  const preset = byte8 & 0b00001000;
557
562
  const color_mode = byte8 & 0b00000111;
@@ -561,8 +566,8 @@ class SwitchbotAdvertising {
561
566
  const data = {
562
567
  model: "r",
563
568
  modelName: "WoStrip",
564
- isOn: isOn,
565
- brightness: brightness,
569
+ state: state,
570
+ lightLevel: lightLevel,
566
571
  delay: delay,
567
572
  preset: preset,
568
573
  color_mode: color_mode,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-switchbot",
3
- "version": "1.6.0-beta.1",
3
+ "version": "1.6.0-beta.3",
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": [