@ncd-io/node-red-enterprise-sensors 0.1.7 → 0.1.9

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.
@@ -62,7 +62,7 @@ module.exports = class WirelessSensor{
62
62
  var new_mode = is_new;
63
63
  var mode = (type == 'power_up') ? data.mode : ((type == 'sensor_data') ? 'RUN' : ((type == 'config_ack') ? 'ACK' : 'PGM'));
64
64
  // #OTF
65
- var otf_devices = [80,81,82,84,89,101,102,519,520];
65
+ var otf_devices = [78,79,80,81,82,84,89,91,101,102,519,520,521];
66
66
  var device_type = msbLsb(frame.data[6], frame.data[7]);
67
67
  // var device_type = frame.data[7];
68
68
 
@@ -214,7 +214,7 @@ module.exports = class WirelessSensor{
214
214
  };
215
215
 
216
216
  // #OTF
217
- var otf_devices = [80,81,82,84,89,101,102,519,520];
217
+ var otf_devices = [78,79,80,81,82,84,89,91,101,102,519,520,521];
218
218
  if(otf_devices.includes(parsed.sensor_type)){
219
219
  // If the message says FLY and there is not FLY timer in progress.
220
220
  if(payload[8] == 70 && payload[9] == 76 && payload[10] == 89) {
@@ -225,6 +225,9 @@ module.exports = class WirelessSensor{
225
225
 
226
226
  // Sensor type 515 has a unique OTF that is indicated by a reserve byte value with MSb of 1
227
227
  if(parsed.sensor_type == 515){
228
+ // MSb of reserve byte indicates sub-unit/ct firmware.
229
+ parsed.ct_firmware = payload[7] >> 4;
230
+
228
231
  // If first bit in reserve is 1 AND current bank equals total banks
229
232
  if(payload[7] & 1 && payload[8] == payload[9]){
230
233
  this._emitter.emit('set_destination_address'+frame.mac, frame.mac);
@@ -722,22 +725,6 @@ module.exports = class WirelessSensor{
722
725
  var packet = [244, 3, 0, 0, 0, scale];
723
726
  return this.config_send(sensor_mac, packet);
724
727
  }
725
- config_set_impact_accel(sensor_mac, range){
726
- var packet = [244, 1, 0, 0, 0, range];
727
- return this.config_send(sensor_mac, packet);
728
- }
729
- config_set_impact_data_rate(sensor_mac, rate){
730
- var packet = [244, 2, 0, 0, 0, rate];
731
- return this.config_send(sensor_mac, packet);
732
- }
733
- config_set_impact_threshold(sensor_mac, threshold){
734
- var packet = [244, 3, 0, 0, 0, threshold];
735
- return this.config_send(sensor_mac, packet);
736
- }
737
- config_set_impact_duration(sensor_mac, duration){
738
- var packet = [244, 4, 0, 0, 0, duration];
739
- return this.config_send(sensor_mac, packet);
740
- }
741
728
  config_set_filtering(sensor_mac, enable){
742
729
  var packet = [244, 2, 0, 0, 0, enable];
743
730
  return this.config_send(sensor_mac, packet);
@@ -763,6 +750,53 @@ module.exports = class WirelessSensor{
763
750
  return this.config_send(sensor_mac, packet);
764
751
  }
765
752
 
753
+ config_set_acceleration_range_24(sensor_mac, value){
754
+ console.log('config_set_acceleration_range_24');
755
+ var packet = [244, 1, 0, 0, 0, value];
756
+ console.log(packet);
757
+ return this.config_send(sensor_mac, packet);
758
+ }
759
+ config_set_data_rate_24(sensor_mac, value){
760
+ console.log('config_set_data_rate_24');
761
+ var packet = [244, 2, 0, 0, 0, value];
762
+ console.log(packet);
763
+ return this.config_send(sensor_mac, packet);
764
+ }
765
+ config_set_threshold_24(sensor_mac, value){
766
+ console.log('config_set_threshold_24');
767
+ var packet = [244, 3, 0, 0, 0, value];
768
+ console.log(packet);
769
+ return this.config_send(sensor_mac, packet);
770
+ }
771
+ config_set_duration_24(sensor_mac, value){
772
+ console.log('config_set_duration_24');
773
+ var packet = [244, 4, 0, 0, 0, value];
774
+ console.log(packet);
775
+ return this.config_send(sensor_mac, packet);
776
+ }
777
+ config_set_interrupt_24(sensor_mac, value){
778
+ console.log('config_set_interrupt_24');
779
+ var packet = [244, 9, 0, 0, 0, value];
780
+ console.log(packet);
781
+ return this.config_send(sensor_mac, packet);
782
+ }
783
+ // config_set_impact_accel(sensor_mac, range){
784
+ // var packet = [244, 1, 0, 0, 0, range];
785
+ // return this.config_send(sensor_mac, packet);
786
+ // }
787
+ // config_set_impact_data_rate(sensor_mac, rate){
788
+ // var packet = [244, 2, 0, 0, 0, rate];
789
+ // return this.config_send(sensor_mac, packet);
790
+ // }
791
+ // config_set_impact_threshold(sensor_mac, threshold){
792
+ // var packet = [244, 3, 0, 0, 0, threshold];
793
+ // return this.config_send(sensor_mac, packet);
794
+ // }
795
+ // config_set_impact_duration(sensor_mac, duration){
796
+ // var packet = [244, 4, 0, 0, 0, duration];
797
+ // return this.config_send(sensor_mac, packet);
798
+ // }
799
+
766
800
  config_set_sensor_forced_calibration(sensor_mac, value){
767
801
  var packet = [244, 31, 0, 0, 0];
768
802
  var cal_val = int2Bytes(value, 2);
@@ -993,6 +1027,13 @@ module.exports = class WirelessSensor{
993
1027
  console.log(packet);
994
1028
  return this.config_send(sensor_mac, packet);
995
1029
  }
1030
+ config_set_sensor_boot_time_78(sensor_mac, value){
1031
+ console.log('config_set_sensor_boot_time_78');
1032
+ var packet = [244, 78, 0, 0, 0];
1033
+ packet.push(...value);
1034
+ console.log(packet);
1035
+ return this.config_send(sensor_mac, packet);
1036
+ }
996
1037
  config_set_payload_length_80(sensor_mac, value){
997
1038
  console.log('config_set_payload_length_80');
998
1039
  var packet = [244, 79, 0, 0, 80, 68, value];
@@ -2216,25 +2257,42 @@ function sensor_types(parent){
2216
2257
  },
2217
2258
  '78': {
2218
2259
  name: 'Oil Particulate Counter Sensor',
2219
- parse: (d) => {
2220
- return {
2221
-
2222
- ferro_particles_lt_50_um: d.slice(0, 2).reduce(msbLsb),
2223
- ferro_particles_50_100_um: d.slice(2, 4).reduce(msbLsb),
2224
- ferro_particles_100_200_um: d.slice(4, 6).reduce(msbLsb),
2225
- ferro_particles_200_400_um: d.slice(6, 8).reduce(msbLsb),
2226
- ferro_particles_400_800_um: d.slice(8, 10).reduce(msbLsb),
2227
- ferro_particles_gt_800_um: d.slice(10, 12).reduce(msbLsb),
2228
- ferro_particles_total: d.slice(12, 14).reduce(msbLsb),
2229
- non_ferro_particles_150_200_um: d.slice(14, 16).reduce(msbLsb),
2230
- non_ferro_particles_200_400_um: d.slice(16, 18).reduce(msbLsb),
2231
- non_ferro_particles_400_800_um: d.slice(18, 20).reduce(msbLsb),
2232
- non_ferro_particles_800_1600_um: d.slice(20, 22).reduce(msbLsb),
2233
- non_ferro_particles_gt_1600_um: d.slice(22, 24).reduce(msbLsb),
2234
- non_ferro_particles_total: d.slice(24, 26).reduce(msbLsb),
2235
- ferro_particles_total_24h: d.slice(26, 28).reduce(msbLsb),
2236
- non_ferro_particles_total_24h: d.slice(28, 30).reduce(msbLsb)
2237
- };
2260
+ parse: (d, original_payload) => {
2261
+ if(original_payload[1] <= 3){
2262
+ return {
2263
+ ferro_particles_30_50_um: d.slice(0, 4).reduce(msbLsb)/100,
2264
+ ferro_particles_50_100_um: d.slice(4, 8).reduce(msbLsb)/100,
2265
+ ferro_particles_100_200_um: d.slice(8, 12).reduce(msbLsb)/100,
2266
+ ferro_particles_200_400_um: d.slice(12, 16).reduce(msbLsb)/100,
2267
+ ferro_particles_400_800_um: d.slice(16, 20).reduce(msbLsb)/100,
2268
+ ferro_particles_gt_800_um: d.slice(20, 24).reduce(msbLsb)/100,
2269
+ ferro_particles_total: d.slice(24, 28).reduce(msbLsb)/100,
2270
+ non_ferro_particles_120_200_um: d.slice(28, 32).reduce(msbLsb)/100,
2271
+ non_ferro_particles_200_400_um: d.slice(32, 36).reduce(msbLsb)/100,
2272
+ non_ferro_particles_400_800_um: d.slice(36, 40).reduce(msbLsb)/100
2273
+ };
2274
+ }else{
2275
+ return {
2276
+ ferro_particles_30_50_um: d.slice(0, 4).reduce(msbLsb)/100,
2277
+ ferro_particles_50_100_um: d.slice(4, 8).reduce(msbLsb)/100,
2278
+ ferro_particles_100_200_um: d.slice(8, 12).reduce(msbLsb)/100,
2279
+ ferro_particles_200_400_um: d.slice(12, 16).reduce(msbLsb)/100,
2280
+ ferro_particles_400_800_um: d.slice(16, 20).reduce(msbLsb)/100,
2281
+ ferro_particles_gt_800_um: d.slice(20, 24).reduce(msbLsb)/100,
2282
+ ferro_particles_total: d.slice(24, 28).reduce(msbLsb)/100,
2283
+ non_ferro_particles_120_200_um: d.slice(28, 32).reduce(msbLsb)/100,
2284
+ non_ferro_particles_200_400_um: d.slice(32, 36).reduce(msbLsb)/100,
2285
+ non_ferro_particles_400_800_um: d.slice(36, 40).reduce(msbLsb)/100,
2286
+ non_ferro_particles_800_1600_um: d.slice(40, 44).reduce(msbLsb)/100,
2287
+ non_ferro_particles_gt_1600_um: d.slice(44, 48).reduce(msbLsb)/100,
2288
+ non_ferro_particles_total: d.slice(48, 52).reduce(msbLsb)/100,
2289
+ ferro_particles_total_24h: d.slice(52, 56).reduce(msbLsb)/100,
2290
+ non_ferro_particles_total_24h: d.slice(56, 60).reduce(msbLsb)/100,
2291
+ ferro_concentration: d.slice(60, 64).reduce(msbLsb)/100,
2292
+ non_ferro_concentration: d.slice(64, 68).reduce(msbLsb)/100,
2293
+ flow: d.slice(68, 72).reduce(msbLsb)/100,
2294
+ };
2295
+ }
2238
2296
  }
2239
2297
  },
2240
2298
  '79': {
@@ -2271,93 +2329,148 @@ function sensor_types(parent){
2271
2329
  var current_packet = payload[16];
2272
2330
  var sdata_start = 17;
2273
2331
 
2274
-
2275
-
2276
-
2277
- if(globalDevices.hasOwnProperty(deviceAddr)){
2278
- // if a packet is already stored with the same packet ID, or if packet ID is 1, or if current packet ID is not one more than last packet ID
2279
- if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
2280
- console.log('-----');
2281
- console.log('bad packet breakdown deleting stream');
2282
- console.log(current_packet);
2283
- console.log(expected_packets);
2284
- console.log(current_packet in globalDevices[deviceAddr].data);
2285
- console.log(current_packet == 1);
2286
- console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
2287
- if(this.hasOwnProperty('failure_no')){
2288
- this.failure_no = this.failure_no + 1;
2289
- }
2290
- else{
2291
- this.failure_no = 1;
2292
- }
2293
- if(this.hasOwnProperty('failure_no')){
2294
- console.log('####falure no');
2295
- console.log(this.failure_no);
2296
- }
2297
- // console.log(globalDevices[deviceAddr].data);
2298
- delete globalDevices[deviceAddr];
2299
- if(current_packet != 1){
2300
- return;
2301
- } else{
2302
-
2303
- var mode = payload[8];
2304
- var odr = payload[9];
2305
- var en_axis = payload[10] & 7;
2306
- var fsr = payload[10] >> 5;
2307
- var device_temp = msbLsb(payload[13], payload[14])/100;
2308
-
2309
-
2310
- switch(odr){
2311
- case 6:
2312
- odr = 50;
2313
- break;
2314
- case 7:
2315
- odr = 100;
2316
- break;
2317
- case 8:
2318
- odr = 200;
2319
- break;
2320
- case 9:
2321
- odr = 400;
2322
- break;
2323
- case 10:
2324
- odr = 800;
2325
- break;
2326
- case 11:
2327
- odr = 1600;
2328
- break;
2329
- case 12:
2330
- odr = 3200;
2331
- break;
2332
- case 13:
2333
- odr = 6400;
2334
- break;
2335
- case 14:
2336
- odr = 12800;
2337
- break;
2338
- case 15:
2339
- odr = 25600;
2340
- break;
2341
- default:
2342
- odr = 0;
2332
+ if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
2333
+ if(expected_packets != 1){
2334
+ // if a packet is already stored with the same packet ID, or if packet ID is 1, or if current packet ID is not one more than last packet ID
2335
+ if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
2336
+ console.log('-----');
2337
+ console.log('bad packet breakdown deleting stream');
2338
+ console.log(current_packet);
2339
+ console.log(expected_packets);
2340
+ console.log(current_packet in globalDevices[deviceAddr].data);
2341
+ console.log(current_packet == 1);
2342
+ console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
2343
+ if(this.hasOwnProperty('failure_no')){
2344
+ this.failure_no = this.failure_no + 1;
2343
2345
  }
2346
+ else{
2347
+ this.failure_no = 1;
2348
+ }
2349
+ if(this.hasOwnProperty('failure_no')){
2350
+ console.log('####falure no');
2351
+ console.log(this.failure_no);
2352
+ }
2353
+ // console.log(globalDevices[deviceAddr].data);
2354
+ delete globalDevices[deviceAddr];
2355
+ if(current_packet != 1){
2356
+ return;
2357
+ } else{
2358
+
2359
+ var mode = payload[8];
2360
+ var odr = payload[9];
2361
+ var en_axis = payload[10] & 7;
2362
+ var fsr = payload[10] >> 5;
2363
+ var device_temp = msbLsb(payload[13], payload[14])/100;
2364
+
2365
+
2366
+ switch(odr){
2367
+ case 6:
2368
+ odr = 50;
2369
+ break;
2370
+ case 7:
2371
+ odr = 100;
2372
+ break;
2373
+ case 8:
2374
+ odr = 200;
2375
+ break;
2376
+ case 9:
2377
+ odr = 400;
2378
+ break;
2379
+ case 10:
2380
+ odr = 800;
2381
+ break;
2382
+ case 11:
2383
+ odr = 1600;
2384
+ break;
2385
+ case 12:
2386
+ odr = 3200;
2387
+ break;
2388
+ case 13:
2389
+ odr = 6400;
2390
+ break;
2391
+ case 14:
2392
+ odr = 12800;
2393
+ break;
2394
+ case 15:
2395
+ odr = 25600;
2396
+ break;
2397
+ default:
2398
+ odr = 0;
2399
+ }
2344
2400
 
2345
- globalDevices[deviceAddr] = {
2346
- // stream_size: expected_packets,
2347
- data: {},
2348
- odr: odr,
2349
- mo: mode,
2350
- en_axis: en_axis,
2351
- fsr: fsr,
2352
- hour: hour,
2353
- minute: minute,
2354
- device_temp: device_temp,
2401
+ globalDevices[deviceAddr] = {
2402
+ // stream_size: expected_packets,
2403
+ data: {},
2404
+ odr: odr,
2405
+ mo: mode,
2406
+ en_axis: en_axis,
2407
+ fsr: fsr,
2408
+ hour: hour,
2409
+ minute: minute,
2410
+ device_temp: device_temp,
2411
+ }
2412
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
2413
+ return;
2355
2414
  }
2415
+ }
2416
+ else{
2356
2417
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
2357
- return;
2358
2418
  }
2359
2419
  }
2360
2420
  else{
2421
+ var mode = payload[8];
2422
+ var odr = payload[9];
2423
+ var en_axis = payload[10] & 7;
2424
+ var fsr = payload[10] >> 5;
2425
+ var device_temp = msbLsb(payload[13], payload[14])/100;
2426
+
2427
+
2428
+ switch(odr){
2429
+ case 6:
2430
+ odr = 50;
2431
+ break;
2432
+ case 7:
2433
+ odr = 100;
2434
+ break;
2435
+ case 8:
2436
+ odr = 200;
2437
+ break;
2438
+ case 9:
2439
+ odr = 400;
2440
+ break;
2441
+ case 10:
2442
+ odr = 800;
2443
+ break;
2444
+ case 11:
2445
+ odr = 1600;
2446
+ break;
2447
+ case 12:
2448
+ odr = 3200;
2449
+ break;
2450
+ case 13:
2451
+ odr = 6400;
2452
+ break;
2453
+ case 14:
2454
+ odr = 12800;
2455
+ break;
2456
+ case 15:
2457
+ odr = 25600;
2458
+ break;
2459
+ default:
2460
+ odr = 0;
2461
+ }
2462
+
2463
+ globalDevices[deviceAddr] = {
2464
+ // stream_size: expected_packets,
2465
+ data: {},
2466
+ odr: odr,
2467
+ mo: mode,
2468
+ en_axis: en_axis,
2469
+ fsr: fsr,
2470
+ hour: hour,
2471
+ minute: minute,
2472
+ device_temp: device_temp,
2473
+ }
2361
2474
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
2362
2475
  }
2363
2476
 
@@ -2832,93 +2945,148 @@ function sensor_types(parent){
2832
2945
  var current_packet = payload[16];
2833
2946
  var sdata_start = 17;
2834
2947
 
2835
- if(globalDevices.hasOwnProperty(deviceAddr)){
2836
- // if a packet is already stored with the same packet ID, or if packet ID is 1, or if current packet ID is not one more than last packet ID
2837
- if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
2838
- console.log('-----');
2839
- console.log('bad packet breakdown deleting stream');
2840
- console.log(current_packet);
2841
- console.log(expected_packets);
2842
- console.log(current_packet in globalDevices[deviceAddr].data);
2843
- console.log(current_packet == 1);
2844
- console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
2845
- if(this.hasOwnProperty('failure_no')){
2846
- this.failure_no = this.failure_no + 1;
2847
- }
2848
- else{
2849
- this.failure_no = 1;
2850
- }
2851
- if(this.hasOwnProperty('failure_no')){
2852
- console.log('####falure no');
2853
- console.log(this.failure_no);
2854
- }
2855
- // console.log(globalDevices[deviceAddr].data);
2856
- delete globalDevices[deviceAddr];
2857
- if(current_packet != 1){
2858
- return;
2859
- } else{
2860
-
2861
- var mode = payload[8];
2862
- var odr = payload[9];
2863
- var en_axis = payload[10] & 7;
2864
- var fsr = payload[10] >> 5;
2865
- var device_temp = msbLsb(payload[13], payload[14])/100;
2866
-
2867
-
2868
- switch(odr){
2869
- case 6:
2870
- odr = 50;
2871
- break;
2872
- case 7:
2873
- odr = 100;
2874
- break;
2875
- case 8:
2876
- odr = 200;
2877
- break;
2878
- case 9:
2879
- odr = 400;
2880
- break;
2881
- case 10:
2882
- odr = 800;
2883
- break;
2884
- case 11:
2885
- odr = 1600;
2886
- break;
2887
- case 12:
2888
- odr = 3200;
2889
- break;
2890
- case 13:
2891
- odr = 6400;
2892
- break;
2893
- case 14:
2894
- odr = 12800;
2895
- break;
2896
- case 15:
2897
- odr = 25600;
2898
- break;
2899
- default:
2900
- odr = 0;
2948
+ if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
2949
+ if(expected_packets != 1){
2950
+ // if a packet is already stored with the same packet ID, or if packet ID is 1, or if current packet ID is not one more than last packet ID
2951
+ if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !((current_packet-1) in globalDevices[deviceAddr].data)) {
2952
+ console.log('-----');
2953
+ console.log('bad packet breakdown deleting stream');
2954
+ console.log(current_packet);
2955
+ console.log(expected_packets);
2956
+ console.log(current_packet in globalDevices[deviceAddr].data);
2957
+ console.log(current_packet == 1);
2958
+ console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
2959
+ if(this.hasOwnProperty('failure_no')){
2960
+ this.failure_no = this.failure_no + 1;
2961
+ }
2962
+ else{
2963
+ this.failure_no = 1;
2964
+ }
2965
+ if(this.hasOwnProperty('failure_no')){
2966
+ console.log('####falure no');
2967
+ console.log(this.failure_no);
2901
2968
  }
2969
+ // console.log(globalDevices[deviceAddr].data);
2970
+ delete globalDevices[deviceAddr];
2971
+ if(current_packet != 1){
2972
+ return;
2973
+ } else{
2974
+ var mode = payload[8];
2975
+ var odr = payload[9];
2976
+ var en_axis = payload[10] & 7;
2977
+ var fsr = payload[10] >> 5;
2978
+ var device_temp = msbLsb(payload[13], payload[14])/100;
2979
+
2980
+ switch(odr){
2981
+ case 6:
2982
+ odr = 50;
2983
+ break;
2984
+ case 7:
2985
+ odr = 100;
2986
+ break;
2987
+ case 8:
2988
+ odr = 200;
2989
+ break;
2990
+ case 9:
2991
+ odr = 400;
2992
+ break;
2993
+ case 10:
2994
+ odr = 800;
2995
+ break;
2996
+ case 11:
2997
+ odr = 1600;
2998
+ break;
2999
+ case 12:
3000
+ odr = 3200;
3001
+ break;
3002
+ case 13:
3003
+ odr = 6400;
3004
+ break;
3005
+ case 14:
3006
+ odr = 12800;
3007
+ break;
3008
+ case 15:
3009
+ odr = 25600;
3010
+ break;
3011
+ default:
3012
+ odr = 0;
3013
+ }
2902
3014
 
2903
- globalDevices[deviceAddr] = {
2904
- // stream_size: expected_packets,
2905
- data: {},
2906
- odr: odr,
2907
- mo: mode,
2908
- en_axis: en_axis,
2909
- fsr: fsr,
2910
- hour: hour,
2911
- minute: minute,
2912
- device_temp: device_temp,
3015
+ globalDevices[deviceAddr] = {
3016
+ // stream_size: expected_packets,
3017
+ data: {},
3018
+ odr: odr,
3019
+ mo: mode,
3020
+ en_axis: en_axis,
3021
+ fsr: fsr,
3022
+ hour: hour,
3023
+ minute: minute,
3024
+ device_temp: device_temp,
3025
+ }
3026
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
3027
+ return;
2913
3028
  }
3029
+ }
3030
+ else{
2914
3031
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
2915
- return;
2916
3032
  }
2917
3033
  }
2918
3034
  else{
3035
+ var mode = payload[8];
3036
+ var odr = payload[9];
3037
+ var en_axis = payload[10] & 7;
3038
+ var fsr = payload[10] >> 5;
3039
+ var device_temp = msbLsb(payload[13], payload[14])/100;
3040
+
3041
+
3042
+ switch(odr){
3043
+ case 6:
3044
+ odr = 50;
3045
+ break;
3046
+ case 7:
3047
+ odr = 100;
3048
+ break;
3049
+ case 8:
3050
+ odr = 200;
3051
+ break;
3052
+ case 9:
3053
+ odr = 400;
3054
+ break;
3055
+ case 10:
3056
+ odr = 800;
3057
+ break;
3058
+ case 11:
3059
+ odr = 1600;
3060
+ break;
3061
+ case 12:
3062
+ odr = 3200;
3063
+ break;
3064
+ case 13:
3065
+ odr = 6400;
3066
+ break;
3067
+ case 14:
3068
+ odr = 12800;
3069
+ break;
3070
+ case 15:
3071
+ odr = 25600;
3072
+ break;
3073
+ default:
3074
+ odr = 0;
3075
+ }
3076
+
3077
+ globalDevices[deviceAddr] = {
3078
+ // stream_size: expected_packets,
3079
+ data: {},
3080
+ odr: odr,
3081
+ mo: mode,
3082
+ en_axis: en_axis,
3083
+ fsr: fsr,
3084
+ hour: hour,
3085
+ minute: minute,
3086
+ device_temp: device_temp,
3087
+ }
2919
3088
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
2920
3089
  }
2921
-
2922
3090
  if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
2923
3091
  var raw_data = new Array();
2924
3092
 
@@ -3049,7 +3217,6 @@ function sensor_types(parent){
3049
3217
  return;
3050
3218
  }
3051
3219
  }else{
3052
-
3053
3220
  var mode = payload[8];
3054
3221
  var odr = payload[9];
3055
3222
  var en_axis = payload[10] & 7;
@@ -3577,93 +3744,150 @@ function sensor_types(parent){
3577
3744
  var current_packet = payload[16];
3578
3745
  var sdata_start = 17;
3579
3746
 
3580
- if(globalDevices.hasOwnProperty(deviceAddr)){
3581
- // if a packet is already stored with the same packet ID, or if packet ID is 1, or if current packet ID is not one more than last packet ID
3582
- if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
3583
- console.log('-----');
3584
- console.log('bad packet breakdown deleting stream');
3585
- console.log(current_packet);
3586
- console.log(expected_packets);
3587
- console.log(current_packet in globalDevices[deviceAddr].data);
3588
- console.log(current_packet == 1);
3589
- console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
3590
- if(this.hasOwnProperty('failure_no')){
3591
- this.failure_no = this.failure_no + 1;
3592
- }
3593
- else{
3594
- this.failure_no = 1;
3595
- }
3596
- if(this.hasOwnProperty('failure_no')){
3597
- console.log('####falure no');
3598
- console.log(this.failure_no);
3599
- }
3600
- // console.log(globalDevices[deviceAddr].data);
3601
- delete globalDevices[deviceAddr];
3602
- if(current_packet != 1){
3603
- return;
3604
- } else{
3605
-
3606
- var mode = payload[8];
3607
- var odr = payload[9];
3608
- var en_axis = payload[10] & 7;
3609
- var fsr = payload[10] >> 5;
3610
- var device_temp = msbLsb(payload[13], payload[14])/100;
3611
-
3612
-
3613
- switch(odr){
3614
- case 6:
3615
- odr = 50;
3616
- break;
3617
- case 7:
3618
- odr = 100;
3619
- break;
3620
- case 8:
3621
- odr = 200;
3622
- break;
3623
- case 9:
3624
- odr = 400;
3625
- break;
3626
- case 10:
3627
- odr = 800;
3628
- break;
3629
- case 11:
3630
- odr = 1600;
3631
- break;
3632
- case 12:
3633
- odr = 3200;
3634
- break;
3635
- case 13:
3636
- odr = 6400;
3637
- break;
3638
- case 14:
3639
- odr = 12800;
3640
- break;
3641
- case 15:
3642
- odr = 25600;
3643
- break;
3644
- default:
3645
- odr = 0;
3747
+ if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
3748
+ if(expected_packets != 1){
3749
+ // if a packet is already stored with the same packet ID, or if packet ID is 1, or if current packet ID is not one more than last packet ID
3750
+ if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !((current_packet-1) in globalDevices[deviceAddr].data)) {
3751
+ console.log('-----');
3752
+ console.log('bad packet breakdown deleting stream');
3753
+ console.log(current_packet);
3754
+ console.log(expected_packets);
3755
+ console.log(current_packet in globalDevices[deviceAddr].data);
3756
+ console.log(current_packet == 1);
3757
+ console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
3758
+ if(this.hasOwnProperty('failure_no')){
3759
+ this.failure_no = this.failure_no + 1;
3760
+ }
3761
+ else{
3762
+ this.failure_no = 1;
3646
3763
  }
3764
+ if(this.hasOwnProperty('failure_no')){
3765
+ console.log('####falure no');
3766
+ console.log(this.failure_no);
3767
+ }
3768
+ // console.log(globalDevices[deviceAddr].data);
3769
+ delete globalDevices[deviceAddr];
3770
+ if(current_packet != 1){
3771
+ return;
3772
+ } else{
3773
+
3774
+ var mode = payload[8];
3775
+ var odr = payload[9];
3776
+ var en_axis = payload[10] & 7;
3777
+ var fsr = payload[10] >> 5;
3778
+ var device_temp = msbLsb(payload[13], payload[14])/100;
3779
+
3780
+
3781
+ switch(odr){
3782
+ case 6:
3783
+ odr = 50;
3784
+ break;
3785
+ case 7:
3786
+ odr = 100;
3787
+ break;
3788
+ case 8:
3789
+ odr = 200;
3790
+ break;
3791
+ case 9:
3792
+ odr = 400;
3793
+ break;
3794
+ case 10:
3795
+ odr = 800;
3796
+ break;
3797
+ case 11:
3798
+ odr = 1600;
3799
+ break;
3800
+ case 12:
3801
+ odr = 3200;
3802
+ break;
3803
+ case 13:
3804
+ odr = 6400;
3805
+ break;
3806
+ case 14:
3807
+ odr = 12800;
3808
+ break;
3809
+ case 15:
3810
+ odr = 25600;
3811
+ break;
3812
+ default:
3813
+ odr = 0;
3814
+ }
3647
3815
 
3648
- globalDevices[deviceAddr] = {
3649
- // stream_size: expected_packets,
3650
- data: {},
3651
- odr: odr,
3652
- mo: mode,
3653
- en_axis: en_axis,
3654
- fsr: fsr,
3655
- hour: hour,
3656
- minute: minute,
3657
- device_temp: device_temp,
3816
+ globalDevices[deviceAddr] = {
3817
+ // stream_size: expected_packets,
3818
+ data: {},
3819
+ odr: odr,
3820
+ mo: mode,
3821
+ en_axis: en_axis,
3822
+ fsr: fsr,
3823
+ hour: hour,
3824
+ minute: minute,
3825
+ device_temp: device_temp,
3826
+ }
3827
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
3828
+ return;
3658
3829
  }
3830
+ }
3831
+ else{
3659
3832
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
3660
- return;
3661
3833
  }
3662
3834
  }
3663
3835
  else{
3836
+ var mode = payload[8];
3837
+ var odr = payload[9];
3838
+ var en_axis = payload[10] & 7;
3839
+ var fsr = payload[10] >> 5;
3840
+ var device_temp = msbLsb(payload[13], payload[14])/100;
3841
+
3842
+
3843
+ switch(odr){
3844
+ case 6:
3845
+ odr = 50;
3846
+ break;
3847
+ case 7:
3848
+ odr = 100;
3849
+ break;
3850
+ case 8:
3851
+ odr = 200;
3852
+ break;
3853
+ case 9:
3854
+ odr = 400;
3855
+ break;
3856
+ case 10:
3857
+ odr = 800;
3858
+ break;
3859
+ case 11:
3860
+ odr = 1600;
3861
+ break;
3862
+ case 12:
3863
+ odr = 3200;
3864
+ break;
3865
+ case 13:
3866
+ odr = 6400;
3867
+ break;
3868
+ case 14:
3869
+ odr = 12800;
3870
+ break;
3871
+ case 15:
3872
+ odr = 25600;
3873
+ break;
3874
+ default:
3875
+ odr = 0;
3876
+ }
3877
+
3878
+ globalDevices[deviceAddr] = {
3879
+ // stream_size: expected_packets,
3880
+ data: {},
3881
+ odr: odr,
3882
+ mo: mode,
3883
+ en_axis: en_axis,
3884
+ fsr: fsr,
3885
+ hour: hour,
3886
+ minute: minute,
3887
+ device_temp: device_temp,
3888
+ }
3664
3889
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
3665
3890
  }
3666
-
3667
3891
  if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
3668
3892
  var raw_data = new Array();
3669
3893
  for(const packet in globalDevices[deviceAddr].data){
@@ -4136,96 +4360,150 @@ function sensor_types(parent){
4136
4360
  var current_packet = payload[16];
4137
4361
  var sdata_start = 17;
4138
4362
 
4139
-
4140
-
4141
-
4142
- if(globalDevices.hasOwnProperty(deviceAddr)){
4143
- // if a packet is already stored with the same packet ID, or if packet ID is 1, or if current packet ID is not one more than last packet ID
4144
- if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
4145
- console.log('-----');
4146
- console.log('bad packet breakdown deleting stream');
4147
- console.log(current_packet);
4148
- console.log(expected_packets);
4149
- console.log(current_packet in globalDevices[deviceAddr].data);
4150
- console.log(current_packet == 1);
4151
- console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
4152
- if(this.hasOwnProperty('failure_no')){
4153
- this.failure_no = this.failure_no + 1;
4154
- }
4155
- else{
4156
- this.failure_no = 1;
4157
- }
4158
- if(this.hasOwnProperty('failure_no')){
4159
- console.log('####falure no');
4160
- console.log(this.failure_no);
4161
- }
4162
- // console.log(globalDevices[deviceAddr].data);
4163
- delete globalDevices[deviceAddr];
4164
- if(current_packet != 1){
4165
- return;
4166
- } else{
4167
-
4168
- var mode = payload[8];
4169
- var odr = payload[9];
4170
- var en_axis = payload[10] & 7;
4171
- var fsr = payload[10] >> 5;
4172
- var device_temp = msbLsb(payload[13], payload[14])/100;
4173
-
4174
-
4175
- switch(odr){
4176
- case 6:
4177
- odr = 50;
4178
- break;
4179
- case 7:
4180
- odr = 100;
4181
- break;
4182
- case 8:
4183
- odr = 200;
4184
- break;
4185
- case 9:
4186
- odr = 400;
4187
- break;
4188
- case 10:
4189
- odr = 800;
4190
- break;
4191
- case 11:
4192
- odr = 1600;
4193
- break;
4194
- case 12:
4195
- odr = 3200;
4196
- break;
4197
- case 13:
4198
- odr = 6400;
4199
- break;
4200
- case 14:
4201
- odr = 12800;
4202
- break;
4203
- case 15:
4204
- odr = 25600;
4205
- break;
4206
- default:
4207
- odr = 0;
4363
+ if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
4364
+ if(expected_packets != 1){
4365
+ // if a packet is already stored with the same packet ID, or if packet ID is 1, or if current packet ID is not one more than last packet ID
4366
+ if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !((current_packet-1) in globalDevices[deviceAddr].data)) {
4367
+ console.log('-----');
4368
+ console.log('bad packet breakdown deleting stream');
4369
+ console.log(current_packet);
4370
+ console.log(expected_packets);
4371
+ console.log(current_packet in globalDevices[deviceAddr].data);
4372
+ console.log(current_packet == 1);
4373
+ console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
4374
+ if(this.hasOwnProperty('failure_no')){
4375
+ this.failure_no = this.failure_no + 1;
4376
+ }
4377
+ else{
4378
+ this.failure_no = 1;
4379
+ }
4380
+ if(this.hasOwnProperty('failure_no')){
4381
+ console.log('####falure no');
4382
+ console.log(this.failure_no);
4208
4383
  }
4384
+ // console.log(globalDevices[deviceAddr].data);
4385
+ delete globalDevices[deviceAddr];
4386
+ if(current_packet != 1){
4387
+ return;
4388
+ } else{
4389
+
4390
+ var mode = payload[8];
4391
+ var odr = payload[9];
4392
+ var en_axis = payload[10] & 7;
4393
+ var fsr = payload[10] >> 5;
4394
+ var device_temp = msbLsb(payload[13], payload[14])/100;
4395
+
4396
+
4397
+ switch(odr){
4398
+ case 6:
4399
+ odr = 50;
4400
+ break;
4401
+ case 7:
4402
+ odr = 100;
4403
+ break;
4404
+ case 8:
4405
+ odr = 200;
4406
+ break;
4407
+ case 9:
4408
+ odr = 400;
4409
+ break;
4410
+ case 10:
4411
+ odr = 800;
4412
+ break;
4413
+ case 11:
4414
+ odr = 1600;
4415
+ break;
4416
+ case 12:
4417
+ odr = 3200;
4418
+ break;
4419
+ case 13:
4420
+ odr = 6400;
4421
+ break;
4422
+ case 14:
4423
+ odr = 12800;
4424
+ break;
4425
+ case 15:
4426
+ odr = 25600;
4427
+ break;
4428
+ default:
4429
+ odr = 0;
4430
+ }
4209
4431
 
4210
- globalDevices[deviceAddr] = {
4211
- // stream_size: expected_packets,
4212
- data: {},
4213
- odr: odr,
4214
- mo: mode,
4215
- en_axis: en_axis,
4216
- fsr: fsr,
4217
- hour: hour,
4218
- minute: minute,
4219
- device_temp: device_temp,
4432
+ globalDevices[deviceAddr] = {
4433
+ // stream_size: expected_packets,
4434
+ data: {},
4435
+ odr: odr,
4436
+ mo: mode,
4437
+ en_axis: en_axis,
4438
+ fsr: fsr,
4439
+ hour: hour,
4440
+ minute: minute,
4441
+ device_temp: device_temp,
4442
+ }
4443
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
4444
+ return;
4220
4445
  }
4446
+ }
4447
+ else{
4221
4448
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
4222
- return;
4223
4449
  }
4224
4450
  }
4225
4451
  else{
4452
+ var mode = payload[8];
4453
+ var odr = payload[9];
4454
+ var en_axis = payload[10] & 7;
4455
+ var fsr = payload[10] >> 5;
4456
+ var device_temp = msbLsb(payload[13], payload[14])/100;
4457
+
4458
+
4459
+ switch(odr){
4460
+ case 6:
4461
+ odr = 50;
4462
+ break;
4463
+ case 7:
4464
+ odr = 100;
4465
+ break;
4466
+ case 8:
4467
+ odr = 200;
4468
+ break;
4469
+ case 9:
4470
+ odr = 400;
4471
+ break;
4472
+ case 10:
4473
+ odr = 800;
4474
+ break;
4475
+ case 11:
4476
+ odr = 1600;
4477
+ break;
4478
+ case 12:
4479
+ odr = 3200;
4480
+ break;
4481
+ case 13:
4482
+ odr = 6400;
4483
+ break;
4484
+ case 14:
4485
+ odr = 12800;
4486
+ break;
4487
+ case 15:
4488
+ odr = 25600;
4489
+ break;
4490
+ default:
4491
+ odr = 0;
4492
+ }
4493
+
4494
+ globalDevices[deviceAddr] = {
4495
+ // stream_size: expected_packets,
4496
+ data: {},
4497
+ odr: odr,
4498
+ mo: mode,
4499
+ en_axis: en_axis,
4500
+ fsr: fsr,
4501
+ hour: hour,
4502
+ minute: minute,
4503
+ device_temp: device_temp,
4504
+ }
4226
4505
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
4227
4506
  }
4228
-
4229
4507
  if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
4230
4508
  var raw_data = new Array();
4231
4509
  for(const packet in globalDevices[deviceAddr].data){
@@ -4697,6 +4975,14 @@ function sensor_types(parent){
4697
4975
  };
4698
4976
  }
4699
4977
  },
4978
+ '91': {
4979
+ name: 'Wireless Air Velocity Sensor HVAC',
4980
+ parse: (d) => {
4981
+ return {
4982
+ velocity_mps: signInt(msbLsb(d[0], d[1]), 16) / 1000
4983
+ };
4984
+ }
4985
+ },
4700
4986
  '92': {
4701
4987
  name: 'Sound Sensor',
4702
4988
  parse: (d) => {
@@ -4855,7 +5141,7 @@ function sensor_types(parent){
4855
5141
  // 0x01 (Success + OTF) ,
4856
5142
  // 0x02 (Error + no OTF),
4857
5143
  // 0x03 (Error + OTF)
4858
- if(d[7]>1){
5144
+ if(d[7] & 15 > 1){
4859
5145
  console.log('!-----!');
4860
5146
  console.log('515 Error Detected');
4861
5147
  console.log(d[7]);
@@ -4980,100 +5266,158 @@ function sensor_types(parent){
4980
5266
  var current_packet = payload[20];
4981
5267
  var sdata_start = 21;
4982
5268
 
4983
-
4984
-
4985
-
4986
- if(globalDevices.hasOwnProperty(deviceAddr)){
4987
- // if a packet is already stored with the same packet ID, or if packet ID is 1, or if current packet ID is not one more than last packet ID
4988
- if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
4989
- console.log('-----');
4990
- console.log('bad packet breakdown deleting stream');
4991
- console.log(current_packet);
4992
- console.log(expected_packets);
4993
- console.log(current_packet in globalDevices[deviceAddr].data);
4994
- console.log(current_packet == 1);
4995
- console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
4996
- if(this.hasOwnProperty('failure_no')){
4997
- this.failure_no = this.failure_no + 1;
4998
- }
4999
- else{
5000
- this.failure_no = 1;
5001
- }
5002
- if(this.hasOwnProperty('failure_no')){
5003
- console.log('####falure no');
5004
- console.log(this.failure_no);
5005
- }
5006
- // console.log(globalDevices[deviceAddr].data);
5007
- delete globalDevices[deviceAddr];
5008
- if(current_packet != 1){
5009
- return;
5010
- } else{
5011
-
5012
- var mode = payload[8];
5013
- var odr = payload[9];
5014
- var en_axis = payload[10] & 7;
5015
- var fsr = payload[10] >> 5;
5016
- var device_temp = signInt(msbLsb(payload[13], payload[14]))/100;
5017
- var adc_1_raw = msbLsb(payload[15], payload[16]);
5018
- var adc_2_raw = msbLsb(payload[17], payload[18]);
5019
-
5020
-
5021
- switch(odr){
5022
- case 6:
5023
- odr = 50;
5024
- break;
5025
- case 7:
5026
- odr = 100;
5027
- break;
5028
- case 8:
5029
- odr = 200;
5030
- break;
5031
- case 9:
5032
- odr = 400;
5033
- break;
5034
- case 10:
5035
- odr = 800;
5036
- break;
5037
- case 11:
5038
- odr = 1600;
5039
- break;
5040
- case 12:
5041
- odr = 3200;
5042
- break;
5043
- case 13:
5044
- odr = 6400;
5045
- break;
5046
- case 14:
5047
- odr = 12800;
5048
- break;
5049
- case 15:
5050
- odr = 25600;
5051
- break;
5052
- default:
5053
- odr = 0;
5269
+ if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
5270
+ if(expected_packets != 1){
5271
+ // if a packet is already stored with the same packet ID, or if packet ID is 1, or if current packet ID is not one more than last packet ID
5272
+ if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
5273
+ console.log('-----');
5274
+ console.log('bad packet breakdown deleting stream');
5275
+ console.log(current_packet);
5276
+ console.log(expected_packets);
5277
+ console.log(current_packet in globalDevices[deviceAddr].data);
5278
+ console.log(current_packet == 1);
5279
+ console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
5280
+ if(this.hasOwnProperty('failure_no')){
5281
+ this.failure_no = this.failure_no + 1;
5282
+ }
5283
+ else{
5284
+ this.failure_no = 1;
5285
+ }
5286
+ if(this.hasOwnProperty('failure_no')){
5287
+ console.log('####falure no');
5288
+ console.log(this.failure_no);
5054
5289
  }
5290
+ // console.log(globalDevices[deviceAddr].data);
5291
+ delete globalDevices[deviceAddr];
5292
+ if(current_packet != 1){
5293
+ return;
5294
+ } else{
5295
+
5296
+ var mode = payload[8];
5297
+ var odr = payload[9];
5298
+ var en_axis = payload[10] & 7;
5299
+ var fsr = payload[10] >> 5;
5300
+ var device_temp = signInt(msbLsb(payload[13], payload[14]))/100;
5301
+ var adc_1_raw = msbLsb(payload[15], payload[16]);
5302
+ var adc_2_raw = msbLsb(payload[17], payload[18]);
5303
+
5304
+
5305
+ switch(odr){
5306
+ case 6:
5307
+ odr = 50;
5308
+ break;
5309
+ case 7:
5310
+ odr = 100;
5311
+ break;
5312
+ case 8:
5313
+ odr = 200;
5314
+ break;
5315
+ case 9:
5316
+ odr = 400;
5317
+ break;
5318
+ case 10:
5319
+ odr = 800;
5320
+ break;
5321
+ case 11:
5322
+ odr = 1600;
5323
+ break;
5324
+ case 12:
5325
+ odr = 3200;
5326
+ break;
5327
+ case 13:
5328
+ odr = 6400;
5329
+ break;
5330
+ case 14:
5331
+ odr = 12800;
5332
+ break;
5333
+ case 15:
5334
+ odr = 25600;
5335
+ break;
5336
+ default:
5337
+ odr = 0;
5338
+ }
5055
5339
 
5056
- globalDevices[deviceAddr] = {
5057
- // stream_size: expected_packets,
5058
- data: {},
5059
- odr: odr,
5060
- mo: mode,
5061
- en_axis: en_axis,
5062
- fsr: fsr,
5063
- hour: hour,
5064
- minute: minute,
5065
- adc_1_raw: adc_1_raw,
5066
- adc_2_raw: adc_2_raw,
5067
- device_temp: device_temp,
5340
+ globalDevices[deviceAddr] = {
5341
+ // stream_size: expected_packets,
5342
+ data: {},
5343
+ odr: odr,
5344
+ mo: mode,
5345
+ en_axis: en_axis,
5346
+ fsr: fsr,
5347
+ hour: hour,
5348
+ minute: minute,
5349
+ adc_1_raw: adc_1_raw,
5350
+ adc_2_raw: adc_2_raw,
5351
+ device_temp: device_temp,
5352
+ }
5353
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
5354
+ return;
5068
5355
  }
5356
+ }
5357
+ else{
5069
5358
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
5070
- return;
5071
5359
  }
5072
5360
  }
5073
5361
  else{
5362
+ var mode = payload[8];
5363
+ var odr = payload[9];
5364
+ var en_axis = payload[10] & 7;
5365
+ var fsr = payload[10] >> 5;
5366
+ var device_temp = signInt(msbLsb(payload[13], payload[14]))/100;
5367
+ var adc_1_raw = msbLsb(payload[15], payload[16]);
5368
+ var adc_2_raw = msbLsb(payload[17], payload[18]);
5369
+
5370
+
5371
+ switch(odr){
5372
+ case 6:
5373
+ odr = 50;
5374
+ break;
5375
+ case 7:
5376
+ odr = 100;
5377
+ break;
5378
+ case 8:
5379
+ odr = 200;
5380
+ break;
5381
+ case 9:
5382
+ odr = 400;
5383
+ break;
5384
+ case 10:
5385
+ odr = 800;
5386
+ break;
5387
+ case 11:
5388
+ odr = 1600;
5389
+ break;
5390
+ case 12:
5391
+ odr = 3200;
5392
+ break;
5393
+ case 13:
5394
+ odr = 6400;
5395
+ break;
5396
+ case 14:
5397
+ odr = 12800;
5398
+ break;
5399
+ case 15:
5400
+ odr = 25600;
5401
+ break;
5402
+ default:
5403
+ odr = 0;
5404
+ }
5405
+
5406
+ globalDevices[deviceAddr] = {
5407
+ // stream_size: expected_packets,
5408
+ data: {},
5409
+ odr: odr,
5410
+ mo: mode,
5411
+ en_axis: en_axis,
5412
+ fsr: fsr,
5413
+ hour: hour,
5414
+ minute: minute,
5415
+ adc_1_raw: adc_1_raw,
5416
+ adc_2_raw: adc_2_raw,
5417
+ device_temp: device_temp,
5418
+ }
5074
5419
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
5075
5420
  }
5076
-
5077
5421
  if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
5078
5422
  var raw_data = new Array();
5079
5423
  for(const packet in globalDevices[deviceAddr].data){
@@ -5562,6 +5906,16 @@ function sensor_types(parent){
5562
5906
  }
5563
5907
  }
5564
5908
  },
5909
+ '521': {
5910
+ name: 'Type 520 - 6 Channel Current Temperature and Humidity',
5911
+ parse: (payload, parsed) => {
5912
+ return {
5913
+ lux_1: payload.slice(0, 2).reduce(msbLsb)/100,
5914
+ lux_2: payload.slice(2, 4).reduce(msbLsb)/100,
5915
+ lux_3: payload.slice(4, 6).reduce(msbLsb)/100
5916
+ }
5917
+ }
5918
+ },
5565
5919
  '10000': {
5566
5920
  name: '4-Relay',
5567
5921
  parse: (d) => {