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

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 = {
@@ -256,23 +256,35 @@ class SwitchbotAdvertising {
256
256
  }
257
257
  return null;
258
258
  }
259
+
260
+
259
261
  let byte1 = buf.readUInt8(1);
260
262
  let byte2 = buf.readUInt8(2);
261
- // let byte3 = buf.readUInt8(3);
262
- // let byte4 = buf.readUInt8(4);
263
+ //let byte3 = buf.readUInt8(3);
264
+ //let byte4 = buf.readUInt8(4);
263
265
  let byte5 = buf.readUInt8(5);
264
266
 
265
- let pirState = byte1 & 0b01000000 ? true : false; // 1 - Movement detected
266
- let battery = byte2 & 0b01111111; // %
267
- let lightLevel = byte5 & 0b00000011;
267
+
268
+ let tested = byte1 & 0b10000000 ? true : false;
269
+ let movement = byte1 & 0b01000000 ? true : false;
270
+ let battery = byte2 & 0b01111111;
271
+ let led = (byte5 & 0b00100000) >> 5;
272
+ let iot = (byte5 & 0b00010000) >> 4;
273
+ let sense_distance = (byte5 & 0b00001100) >> 2;
274
+ let light_intensity = byte5 & 0b00000011;
275
+ let is_light = byte5 & 0b00000010 ? true : false;
268
276
 
269
277
  let data = {
270
278
  model: "s",
271
279
  modelName: "WoMotion",
272
- movement: pirState,
280
+ tested: tested,
281
+ movement: movement,
273
282
  battery: battery,
274
- lightLevel:
275
- lightLevel == 1 ? "dark" : lightLevel == 2 ? "bright" : "unknown",
283
+ led: led,
284
+ iot: iot,
285
+ sense_distance: sense_distance,
286
+ light_intensity: light_intensity,
287
+ is_light: is_light,
276
288
  };
277
289
 
278
290
  return data;
@@ -295,25 +307,28 @@ class SwitchbotAdvertising {
295
307
  // let byte5 = buf.readUInt8(5);
296
308
  // let byte6 = buf.readUInt8(6);
297
309
  // let byte7 = buf.readUInt8(7);
298
- // let byte8 = buf.readUInt8(8);
310
+ let byte8 = buf.readUInt8(8);
299
311
 
300
- let pirState = byte1 & 0b01000000 ? true : false; // 1 - Movement detected
301
- let battery = byte2 & 0b01111111; // %
302
312
  let hallState = (byte3 >> 1) & 0b00000011;
303
- let lightLevel = byte3 & 0b00000001;
313
+ let tested = byte1 & 0b10000000;
314
+ let movement = byte1 & 0b01000000 ? true : false; // 1 - Movement detected
315
+ let battery = byte2 & 0b01111111; // %
316
+ let contact_open = byte3 & 0b00000010 == 0b00000010;
317
+ let contact_timeout = byte3 & 0b00000100 == 0b00000100;
318
+ let is_light = byte3 & 0b00000001 ? true : false;
319
+ let button_count = (data[8] & 0b00001111);
304
320
 
305
321
  let data = {
306
322
  model: "d",
307
323
  modelName: "WoContact",
308
- movement: pirState,
324
+ movement: movement,
325
+ tested: tested,
309
326
  battery: battery,
310
- doorState:
311
- hallState == 0
312
- ? "close"
313
- : hallState == 1
314
- ? "open"
315
- : "timeout no closed",
316
- lightLevel: lightLevel == 0 ? "dark" : "bright",
327
+ contact_open: contact_open,
328
+ contact_timeout: contact_timeout,
329
+ is_light: is_light,
330
+ button_count: button_count,
331
+ hallState: hallState,
317
332
  };
318
333
 
319
334
  return data;
@@ -332,20 +347,23 @@ class SwitchbotAdvertising {
332
347
  let byte2 = buf.readUInt8(2);
333
348
  let byte3 = buf.readUInt8(3);
334
349
  let byte4 = buf.readUInt8(4);
335
- // let byte5 = buf.readUInt8(5);
336
350
 
337
351
  let calibration = byte1 & 0b01000000 ? true : false; // Whether the calibration is completed
338
352
  let battery = byte2 & 0b01111111; // %
339
- let currPosition = byte3 & 0b01111111; // current positon %
353
+ let inMotion = byte3 & 0b10000000 ? true : false;
354
+ let currPosition = max(min(data[3] & 0b01111111, 100), 0) //byte3 & 0b01111111; // current positon %
340
355
  let lightLevel = (byte4 >> 4) & 0b00001111; // light sensor level (1-10)
356
+ let deviceChain = byte4 & 0b00000111;
341
357
 
342
358
  let data = {
343
359
  model: "c",
344
360
  modelName: "WoCurtain",
345
361
  calibration: calibration,
346
362
  battery: battery,
363
+ inMotion: inMotion,
347
364
  position: currPosition,
348
365
  lightLevel: lightLevel,
366
+ deviceChain: deviceChain,
349
367
  };
350
368
 
351
369
  return data;
@@ -369,7 +387,7 @@ class SwitchbotAdvertising {
369
387
 
370
388
 
371
389
  const sequence_number = byte6;
372
- const isOn = byte7 & 0b01111111 ? true : false;
390
+ const state = byte7 & 0b01111111 ? true : false;
373
391
  const brightness = byte7 & 0b01111111;
374
392
  const delay = byte8 & 0b10000000;
375
393
  const preset = byte8 & 0b00001000;
@@ -381,7 +399,7 @@ class SwitchbotAdvertising {
381
399
  model: "u",
382
400
  modelName: "WoBulb",
383
401
  sequence_number: sequence_number,
384
- isOn: isOn,
402
+ state: state,
385
403
  brightness: brightness,
386
404
  delay: delay,
387
405
  preset: preset,
@@ -486,14 +504,14 @@ class SwitchbotAdvertising {
486
504
  // let byte4 = buf.readUInt8(4);
487
505
  let byte5 = buf.readUInt8(5);
488
506
 
489
- //let pirState = (byte1 & 0b01000000) ? true : false; // 1 - Movement detected
507
+ //let movement = (byte1 & 0b01000000) ? true : false; // 1 - Movement detected
490
508
  let battery = byte2 & 0b01111111; // %
491
509
  //let lightLevel = byte5 & 0b00000011;
492
510
 
493
511
  let data = {
494
512
  model: "o",
495
513
  modelName: "WoSmartLock",
496
- //movement: pirState,
514
+ //movement: movement,
497
515
  battery: battery,
498
516
  //lightLevel: (lightLevel == 1) ? 'dark' : ((lightLevel == 2) ? 'bright' : 'unknown'),
499
517
  };
@@ -516,8 +534,8 @@ class SwitchbotAdvertising {
516
534
  let byte5 = buf.readUInt8(5);
517
535
 
518
536
  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;
537
+ let temp_c = temp_sign * ((byte4 & 0b01111111) + (byte3 & 0b00001111) / 10);
538
+ let temp_f = (temp_c * 9 / 5) + 32;
521
539
  temp_f = Math.round(temp_f * 10) / 10;
522
540
 
523
541
  let data = {
@@ -550,8 +568,8 @@ class SwitchbotAdvertising {
550
568
  const byte9 = buf.readUInt8(9);
551
569
  const byte10 = buf.readUInt8(10);
552
570
 
553
- const isOn = byte7 & 0b10000000 ? true : false;
554
- const brightness = byte7 & 0b01111111;
571
+ const state = byte7 & 0b10000000 ? true : false;
572
+ const lightLevel = byte7 & 0b01111111;
555
573
  const delay = byte8 & 0b10000000;
556
574
  const preset = byte8 & 0b00001000;
557
575
  const color_mode = byte8 & 0b00000111;
@@ -561,8 +579,8 @@ class SwitchbotAdvertising {
561
579
  const data = {
562
580
  model: "r",
563
581
  modelName: "WoStrip",
564
- isOn: isOn,
565
- brightness: brightness,
582
+ state: state,
583
+ lightLevel: lightLevel,
566
584
  delay: delay,
567
585
  preset: preset,
568
586
  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.2",
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": [