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

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];
@@ -2271,93 +2312,148 @@ function sensor_types(parent){
2271
2312
  var current_packet = payload[16];
2272
2313
  var sdata_start = 17;
2273
2314
 
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;
2315
+ if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
2316
+ if(expected_packets != 1){
2317
+ // 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
2318
+ if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
2319
+ console.log('-----');
2320
+ console.log('bad packet breakdown deleting stream');
2321
+ console.log(current_packet);
2322
+ console.log(expected_packets);
2323
+ console.log(current_packet in globalDevices[deviceAddr].data);
2324
+ console.log(current_packet == 1);
2325
+ console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
2326
+ if(this.hasOwnProperty('failure_no')){
2327
+ this.failure_no = this.failure_no + 1;
2343
2328
  }
2329
+ else{
2330
+ this.failure_no = 1;
2331
+ }
2332
+ if(this.hasOwnProperty('failure_no')){
2333
+ console.log('####falure no');
2334
+ console.log(this.failure_no);
2335
+ }
2336
+ // console.log(globalDevices[deviceAddr].data);
2337
+ delete globalDevices[deviceAddr];
2338
+ if(current_packet != 1){
2339
+ return;
2340
+ } else{
2341
+
2342
+ var mode = payload[8];
2343
+ var odr = payload[9];
2344
+ var en_axis = payload[10] & 7;
2345
+ var fsr = payload[10] >> 5;
2346
+ var device_temp = msbLsb(payload[13], payload[14])/100;
2347
+
2348
+
2349
+ switch(odr){
2350
+ case 6:
2351
+ odr = 50;
2352
+ break;
2353
+ case 7:
2354
+ odr = 100;
2355
+ break;
2356
+ case 8:
2357
+ odr = 200;
2358
+ break;
2359
+ case 9:
2360
+ odr = 400;
2361
+ break;
2362
+ case 10:
2363
+ odr = 800;
2364
+ break;
2365
+ case 11:
2366
+ odr = 1600;
2367
+ break;
2368
+ case 12:
2369
+ odr = 3200;
2370
+ break;
2371
+ case 13:
2372
+ odr = 6400;
2373
+ break;
2374
+ case 14:
2375
+ odr = 12800;
2376
+ break;
2377
+ case 15:
2378
+ odr = 25600;
2379
+ break;
2380
+ default:
2381
+ odr = 0;
2382
+ }
2344
2383
 
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,
2384
+ globalDevices[deviceAddr] = {
2385
+ // stream_size: expected_packets,
2386
+ data: {},
2387
+ odr: odr,
2388
+ mo: mode,
2389
+ en_axis: en_axis,
2390
+ fsr: fsr,
2391
+ hour: hour,
2392
+ minute: minute,
2393
+ device_temp: device_temp,
2394
+ }
2395
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
2396
+ return;
2355
2397
  }
2398
+ }
2399
+ else{
2356
2400
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
2357
- return;
2358
2401
  }
2359
2402
  }
2360
2403
  else{
2404
+ var mode = payload[8];
2405
+ var odr = payload[9];
2406
+ var en_axis = payload[10] & 7;
2407
+ var fsr = payload[10] >> 5;
2408
+ var device_temp = msbLsb(payload[13], payload[14])/100;
2409
+
2410
+
2411
+ switch(odr){
2412
+ case 6:
2413
+ odr = 50;
2414
+ break;
2415
+ case 7:
2416
+ odr = 100;
2417
+ break;
2418
+ case 8:
2419
+ odr = 200;
2420
+ break;
2421
+ case 9:
2422
+ odr = 400;
2423
+ break;
2424
+ case 10:
2425
+ odr = 800;
2426
+ break;
2427
+ case 11:
2428
+ odr = 1600;
2429
+ break;
2430
+ case 12:
2431
+ odr = 3200;
2432
+ break;
2433
+ case 13:
2434
+ odr = 6400;
2435
+ break;
2436
+ case 14:
2437
+ odr = 12800;
2438
+ break;
2439
+ case 15:
2440
+ odr = 25600;
2441
+ break;
2442
+ default:
2443
+ odr = 0;
2444
+ }
2445
+
2446
+ globalDevices[deviceAddr] = {
2447
+ // stream_size: expected_packets,
2448
+ data: {},
2449
+ odr: odr,
2450
+ mo: mode,
2451
+ en_axis: en_axis,
2452
+ fsr: fsr,
2453
+ hour: hour,
2454
+ minute: minute,
2455
+ device_temp: device_temp,
2456
+ }
2361
2457
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
2362
2458
  }
2363
2459
 
@@ -2832,93 +2928,148 @@ function sensor_types(parent){
2832
2928
  var current_packet = payload[16];
2833
2929
  var sdata_start = 17;
2834
2930
 
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;
2931
+ if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
2932
+ if(expected_packets != 1){
2933
+ // 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
2934
+ if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !((current_packet-1) in globalDevices[deviceAddr].data)) {
2935
+ console.log('-----');
2936
+ console.log('bad packet breakdown deleting stream');
2937
+ console.log(current_packet);
2938
+ console.log(expected_packets);
2939
+ console.log(current_packet in globalDevices[deviceAddr].data);
2940
+ console.log(current_packet == 1);
2941
+ console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
2942
+ if(this.hasOwnProperty('failure_no')){
2943
+ this.failure_no = this.failure_no + 1;
2944
+ }
2945
+ else{
2946
+ this.failure_no = 1;
2901
2947
  }
2948
+ if(this.hasOwnProperty('failure_no')){
2949
+ console.log('####falure no');
2950
+ console.log(this.failure_no);
2951
+ }
2952
+ // console.log(globalDevices[deviceAddr].data);
2953
+ delete globalDevices[deviceAddr];
2954
+ if(current_packet != 1){
2955
+ return;
2956
+ } else{
2957
+ var mode = payload[8];
2958
+ var odr = payload[9];
2959
+ var en_axis = payload[10] & 7;
2960
+ var fsr = payload[10] >> 5;
2961
+ var device_temp = msbLsb(payload[13], payload[14])/100;
2962
+
2963
+ switch(odr){
2964
+ case 6:
2965
+ odr = 50;
2966
+ break;
2967
+ case 7:
2968
+ odr = 100;
2969
+ break;
2970
+ case 8:
2971
+ odr = 200;
2972
+ break;
2973
+ case 9:
2974
+ odr = 400;
2975
+ break;
2976
+ case 10:
2977
+ odr = 800;
2978
+ break;
2979
+ case 11:
2980
+ odr = 1600;
2981
+ break;
2982
+ case 12:
2983
+ odr = 3200;
2984
+ break;
2985
+ case 13:
2986
+ odr = 6400;
2987
+ break;
2988
+ case 14:
2989
+ odr = 12800;
2990
+ break;
2991
+ case 15:
2992
+ odr = 25600;
2993
+ break;
2994
+ default:
2995
+ odr = 0;
2996
+ }
2902
2997
 
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,
2998
+ globalDevices[deviceAddr] = {
2999
+ // stream_size: expected_packets,
3000
+ data: {},
3001
+ odr: odr,
3002
+ mo: mode,
3003
+ en_axis: en_axis,
3004
+ fsr: fsr,
3005
+ hour: hour,
3006
+ minute: minute,
3007
+ device_temp: device_temp,
3008
+ }
3009
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
3010
+ return;
2913
3011
  }
3012
+ }
3013
+ else{
2914
3014
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
2915
- return;
2916
3015
  }
2917
3016
  }
2918
3017
  else{
3018
+ var mode = payload[8];
3019
+ var odr = payload[9];
3020
+ var en_axis = payload[10] & 7;
3021
+ var fsr = payload[10] >> 5;
3022
+ var device_temp = msbLsb(payload[13], payload[14])/100;
3023
+
3024
+
3025
+ switch(odr){
3026
+ case 6:
3027
+ odr = 50;
3028
+ break;
3029
+ case 7:
3030
+ odr = 100;
3031
+ break;
3032
+ case 8:
3033
+ odr = 200;
3034
+ break;
3035
+ case 9:
3036
+ odr = 400;
3037
+ break;
3038
+ case 10:
3039
+ odr = 800;
3040
+ break;
3041
+ case 11:
3042
+ odr = 1600;
3043
+ break;
3044
+ case 12:
3045
+ odr = 3200;
3046
+ break;
3047
+ case 13:
3048
+ odr = 6400;
3049
+ break;
3050
+ case 14:
3051
+ odr = 12800;
3052
+ break;
3053
+ case 15:
3054
+ odr = 25600;
3055
+ break;
3056
+ default:
3057
+ odr = 0;
3058
+ }
3059
+
3060
+ globalDevices[deviceAddr] = {
3061
+ // stream_size: expected_packets,
3062
+ data: {},
3063
+ odr: odr,
3064
+ mo: mode,
3065
+ en_axis: en_axis,
3066
+ fsr: fsr,
3067
+ hour: hour,
3068
+ minute: minute,
3069
+ device_temp: device_temp,
3070
+ }
2919
3071
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
2920
3072
  }
2921
-
2922
3073
  if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
2923
3074
  var raw_data = new Array();
2924
3075
 
@@ -3049,7 +3200,6 @@ function sensor_types(parent){
3049
3200
  return;
3050
3201
  }
3051
3202
  }else{
3052
-
3053
3203
  var mode = payload[8];
3054
3204
  var odr = payload[9];
3055
3205
  var en_axis = payload[10] & 7;
@@ -3577,93 +3727,150 @@ function sensor_types(parent){
3577
3727
  var current_packet = payload[16];
3578
3728
  var sdata_start = 17;
3579
3729
 
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;
3730
+ if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
3731
+ if(expected_packets != 1){
3732
+ // 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
3733
+ if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !((current_packet-1) in globalDevices[deviceAddr].data)) {
3734
+ console.log('-----');
3735
+ console.log('bad packet breakdown deleting stream');
3736
+ console.log(current_packet);
3737
+ console.log(expected_packets);
3738
+ console.log(current_packet in globalDevices[deviceAddr].data);
3739
+ console.log(current_packet == 1);
3740
+ console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
3741
+ if(this.hasOwnProperty('failure_no')){
3742
+ this.failure_no = this.failure_no + 1;
3646
3743
  }
3744
+ else{
3745
+ this.failure_no = 1;
3746
+ }
3747
+ if(this.hasOwnProperty('failure_no')){
3748
+ console.log('####falure no');
3749
+ console.log(this.failure_no);
3750
+ }
3751
+ // console.log(globalDevices[deviceAddr].data);
3752
+ delete globalDevices[deviceAddr];
3753
+ if(current_packet != 1){
3754
+ return;
3755
+ } else{
3756
+
3757
+ var mode = payload[8];
3758
+ var odr = payload[9];
3759
+ var en_axis = payload[10] & 7;
3760
+ var fsr = payload[10] >> 5;
3761
+ var device_temp = msbLsb(payload[13], payload[14])/100;
3762
+
3763
+
3764
+ switch(odr){
3765
+ case 6:
3766
+ odr = 50;
3767
+ break;
3768
+ case 7:
3769
+ odr = 100;
3770
+ break;
3771
+ case 8:
3772
+ odr = 200;
3773
+ break;
3774
+ case 9:
3775
+ odr = 400;
3776
+ break;
3777
+ case 10:
3778
+ odr = 800;
3779
+ break;
3780
+ case 11:
3781
+ odr = 1600;
3782
+ break;
3783
+ case 12:
3784
+ odr = 3200;
3785
+ break;
3786
+ case 13:
3787
+ odr = 6400;
3788
+ break;
3789
+ case 14:
3790
+ odr = 12800;
3791
+ break;
3792
+ case 15:
3793
+ odr = 25600;
3794
+ break;
3795
+ default:
3796
+ odr = 0;
3797
+ }
3647
3798
 
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,
3799
+ globalDevices[deviceAddr] = {
3800
+ // stream_size: expected_packets,
3801
+ data: {},
3802
+ odr: odr,
3803
+ mo: mode,
3804
+ en_axis: en_axis,
3805
+ fsr: fsr,
3806
+ hour: hour,
3807
+ minute: minute,
3808
+ device_temp: device_temp,
3809
+ }
3810
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
3811
+ return;
3658
3812
  }
3813
+ }
3814
+ else{
3659
3815
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
3660
- return;
3661
3816
  }
3662
3817
  }
3663
3818
  else{
3819
+ var mode = payload[8];
3820
+ var odr = payload[9];
3821
+ var en_axis = payload[10] & 7;
3822
+ var fsr = payload[10] >> 5;
3823
+ var device_temp = msbLsb(payload[13], payload[14])/100;
3824
+
3825
+
3826
+ switch(odr){
3827
+ case 6:
3828
+ odr = 50;
3829
+ break;
3830
+ case 7:
3831
+ odr = 100;
3832
+ break;
3833
+ case 8:
3834
+ odr = 200;
3835
+ break;
3836
+ case 9:
3837
+ odr = 400;
3838
+ break;
3839
+ case 10:
3840
+ odr = 800;
3841
+ break;
3842
+ case 11:
3843
+ odr = 1600;
3844
+ break;
3845
+ case 12:
3846
+ odr = 3200;
3847
+ break;
3848
+ case 13:
3849
+ odr = 6400;
3850
+ break;
3851
+ case 14:
3852
+ odr = 12800;
3853
+ break;
3854
+ case 15:
3855
+ odr = 25600;
3856
+ break;
3857
+ default:
3858
+ odr = 0;
3859
+ }
3860
+
3861
+ globalDevices[deviceAddr] = {
3862
+ // stream_size: expected_packets,
3863
+ data: {},
3864
+ odr: odr,
3865
+ mo: mode,
3866
+ en_axis: en_axis,
3867
+ fsr: fsr,
3868
+ hour: hour,
3869
+ minute: minute,
3870
+ device_temp: device_temp,
3871
+ }
3664
3872
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
3665
3873
  }
3666
-
3667
3874
  if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
3668
3875
  var raw_data = new Array();
3669
3876
  for(const packet in globalDevices[deviceAddr].data){
@@ -4136,96 +4343,150 @@ function sensor_types(parent){
4136
4343
  var current_packet = payload[16];
4137
4344
  var sdata_start = 17;
4138
4345
 
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;
4346
+ if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
4347
+ if(expected_packets != 1){
4348
+ // 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
4349
+ if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !((current_packet-1) in globalDevices[deviceAddr].data)) {
4350
+ console.log('-----');
4351
+ console.log('bad packet breakdown deleting stream');
4352
+ console.log(current_packet);
4353
+ console.log(expected_packets);
4354
+ console.log(current_packet in globalDevices[deviceAddr].data);
4355
+ console.log(current_packet == 1);
4356
+ console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
4357
+ if(this.hasOwnProperty('failure_no')){
4358
+ this.failure_no = this.failure_no + 1;
4359
+ }
4360
+ else{
4361
+ this.failure_no = 1;
4208
4362
  }
4363
+ if(this.hasOwnProperty('failure_no')){
4364
+ console.log('####falure no');
4365
+ console.log(this.failure_no);
4366
+ }
4367
+ // console.log(globalDevices[deviceAddr].data);
4368
+ delete globalDevices[deviceAddr];
4369
+ if(current_packet != 1){
4370
+ return;
4371
+ } else{
4372
+
4373
+ var mode = payload[8];
4374
+ var odr = payload[9];
4375
+ var en_axis = payload[10] & 7;
4376
+ var fsr = payload[10] >> 5;
4377
+ var device_temp = msbLsb(payload[13], payload[14])/100;
4378
+
4379
+
4380
+ switch(odr){
4381
+ case 6:
4382
+ odr = 50;
4383
+ break;
4384
+ case 7:
4385
+ odr = 100;
4386
+ break;
4387
+ case 8:
4388
+ odr = 200;
4389
+ break;
4390
+ case 9:
4391
+ odr = 400;
4392
+ break;
4393
+ case 10:
4394
+ odr = 800;
4395
+ break;
4396
+ case 11:
4397
+ odr = 1600;
4398
+ break;
4399
+ case 12:
4400
+ odr = 3200;
4401
+ break;
4402
+ case 13:
4403
+ odr = 6400;
4404
+ break;
4405
+ case 14:
4406
+ odr = 12800;
4407
+ break;
4408
+ case 15:
4409
+ odr = 25600;
4410
+ break;
4411
+ default:
4412
+ odr = 0;
4413
+ }
4209
4414
 
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,
4415
+ globalDevices[deviceAddr] = {
4416
+ // stream_size: expected_packets,
4417
+ data: {},
4418
+ odr: odr,
4419
+ mo: mode,
4420
+ en_axis: en_axis,
4421
+ fsr: fsr,
4422
+ hour: hour,
4423
+ minute: minute,
4424
+ device_temp: device_temp,
4425
+ }
4426
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
4427
+ return;
4220
4428
  }
4429
+ }
4430
+ else{
4221
4431
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
4222
- return;
4223
4432
  }
4224
4433
  }
4225
4434
  else{
4435
+ var mode = payload[8];
4436
+ var odr = payload[9];
4437
+ var en_axis = payload[10] & 7;
4438
+ var fsr = payload[10] >> 5;
4439
+ var device_temp = msbLsb(payload[13], payload[14])/100;
4440
+
4441
+
4442
+ switch(odr){
4443
+ case 6:
4444
+ odr = 50;
4445
+ break;
4446
+ case 7:
4447
+ odr = 100;
4448
+ break;
4449
+ case 8:
4450
+ odr = 200;
4451
+ break;
4452
+ case 9:
4453
+ odr = 400;
4454
+ break;
4455
+ case 10:
4456
+ odr = 800;
4457
+ break;
4458
+ case 11:
4459
+ odr = 1600;
4460
+ break;
4461
+ case 12:
4462
+ odr = 3200;
4463
+ break;
4464
+ case 13:
4465
+ odr = 6400;
4466
+ break;
4467
+ case 14:
4468
+ odr = 12800;
4469
+ break;
4470
+ case 15:
4471
+ odr = 25600;
4472
+ break;
4473
+ default:
4474
+ odr = 0;
4475
+ }
4476
+
4477
+ globalDevices[deviceAddr] = {
4478
+ // stream_size: expected_packets,
4479
+ data: {},
4480
+ odr: odr,
4481
+ mo: mode,
4482
+ en_axis: en_axis,
4483
+ fsr: fsr,
4484
+ hour: hour,
4485
+ minute: minute,
4486
+ device_temp: device_temp,
4487
+ }
4226
4488
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
4227
4489
  }
4228
-
4229
4490
  if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
4230
4491
  var raw_data = new Array();
4231
4492
  for(const packet in globalDevices[deviceAddr].data){
@@ -4697,6 +4958,14 @@ function sensor_types(parent){
4697
4958
  };
4698
4959
  }
4699
4960
  },
4961
+ '91': {
4962
+ name: 'Wireless Air Velocity Sensor HVAC',
4963
+ parse: (d) => {
4964
+ return {
4965
+ velocity_mps: signInt(msbLsb(d[0], d[1]), 16) / 1000
4966
+ };
4967
+ }
4968
+ },
4700
4969
  '92': {
4701
4970
  name: 'Sound Sensor',
4702
4971
  parse: (d) => {
@@ -4855,7 +5124,7 @@ function sensor_types(parent){
4855
5124
  // 0x01 (Success + OTF) ,
4856
5125
  // 0x02 (Error + no OTF),
4857
5126
  // 0x03 (Error + OTF)
4858
- if(d[7]>1){
5127
+ if(d[7] & 15 > 1){
4859
5128
  console.log('!-----!');
4860
5129
  console.log('515 Error Detected');
4861
5130
  console.log(d[7]);
@@ -4980,100 +5249,158 @@ function sensor_types(parent){
4980
5249
  var current_packet = payload[20];
4981
5250
  var sdata_start = 21;
4982
5251
 
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;
5252
+ if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
5253
+ if(expected_packets != 1){
5254
+ // 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
5255
+ if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
5256
+ console.log('-----');
5257
+ console.log('bad packet breakdown deleting stream');
5258
+ console.log(current_packet);
5259
+ console.log(expected_packets);
5260
+ console.log(current_packet in globalDevices[deviceAddr].data);
5261
+ console.log(current_packet == 1);
5262
+ console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
5263
+ if(this.hasOwnProperty('failure_no')){
5264
+ this.failure_no = this.failure_no + 1;
5054
5265
  }
5266
+ else{
5267
+ this.failure_no = 1;
5268
+ }
5269
+ if(this.hasOwnProperty('failure_no')){
5270
+ console.log('####falure no');
5271
+ console.log(this.failure_no);
5272
+ }
5273
+ // console.log(globalDevices[deviceAddr].data);
5274
+ delete globalDevices[deviceAddr];
5275
+ if(current_packet != 1){
5276
+ return;
5277
+ } else{
5278
+
5279
+ var mode = payload[8];
5280
+ var odr = payload[9];
5281
+ var en_axis = payload[10] & 7;
5282
+ var fsr = payload[10] >> 5;
5283
+ var device_temp = signInt(msbLsb(payload[13], payload[14]))/100;
5284
+ var adc_1_raw = msbLsb(payload[15], payload[16]);
5285
+ var adc_2_raw = msbLsb(payload[17], payload[18]);
5286
+
5287
+
5288
+ switch(odr){
5289
+ case 6:
5290
+ odr = 50;
5291
+ break;
5292
+ case 7:
5293
+ odr = 100;
5294
+ break;
5295
+ case 8:
5296
+ odr = 200;
5297
+ break;
5298
+ case 9:
5299
+ odr = 400;
5300
+ break;
5301
+ case 10:
5302
+ odr = 800;
5303
+ break;
5304
+ case 11:
5305
+ odr = 1600;
5306
+ break;
5307
+ case 12:
5308
+ odr = 3200;
5309
+ break;
5310
+ case 13:
5311
+ odr = 6400;
5312
+ break;
5313
+ case 14:
5314
+ odr = 12800;
5315
+ break;
5316
+ case 15:
5317
+ odr = 25600;
5318
+ break;
5319
+ default:
5320
+ odr = 0;
5321
+ }
5055
5322
 
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,
5323
+ globalDevices[deviceAddr] = {
5324
+ // stream_size: expected_packets,
5325
+ data: {},
5326
+ odr: odr,
5327
+ mo: mode,
5328
+ en_axis: en_axis,
5329
+ fsr: fsr,
5330
+ hour: hour,
5331
+ minute: minute,
5332
+ adc_1_raw: adc_1_raw,
5333
+ adc_2_raw: adc_2_raw,
5334
+ device_temp: device_temp,
5335
+ }
5336
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
5337
+ return;
5068
5338
  }
5339
+ }
5340
+ else{
5069
5341
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
5070
- return;
5071
5342
  }
5072
5343
  }
5073
5344
  else{
5345
+ var mode = payload[8];
5346
+ var odr = payload[9];
5347
+ var en_axis = payload[10] & 7;
5348
+ var fsr = payload[10] >> 5;
5349
+ var device_temp = signInt(msbLsb(payload[13], payload[14]))/100;
5350
+ var adc_1_raw = msbLsb(payload[15], payload[16]);
5351
+ var adc_2_raw = msbLsb(payload[17], payload[18]);
5352
+
5353
+
5354
+ switch(odr){
5355
+ case 6:
5356
+ odr = 50;
5357
+ break;
5358
+ case 7:
5359
+ odr = 100;
5360
+ break;
5361
+ case 8:
5362
+ odr = 200;
5363
+ break;
5364
+ case 9:
5365
+ odr = 400;
5366
+ break;
5367
+ case 10:
5368
+ odr = 800;
5369
+ break;
5370
+ case 11:
5371
+ odr = 1600;
5372
+ break;
5373
+ case 12:
5374
+ odr = 3200;
5375
+ break;
5376
+ case 13:
5377
+ odr = 6400;
5378
+ break;
5379
+ case 14:
5380
+ odr = 12800;
5381
+ break;
5382
+ case 15:
5383
+ odr = 25600;
5384
+ break;
5385
+ default:
5386
+ odr = 0;
5387
+ }
5388
+
5389
+ globalDevices[deviceAddr] = {
5390
+ // stream_size: expected_packets,
5391
+ data: {},
5392
+ odr: odr,
5393
+ mo: mode,
5394
+ en_axis: en_axis,
5395
+ fsr: fsr,
5396
+ hour: hour,
5397
+ minute: minute,
5398
+ adc_1_raw: adc_1_raw,
5399
+ adc_2_raw: adc_2_raw,
5400
+ device_temp: device_temp,
5401
+ }
5074
5402
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
5075
5403
  }
5076
-
5077
5404
  if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
5078
5405
  var raw_data = new Array();
5079
5406
  for(const packet in globalDevices[deviceAddr].data){
@@ -5562,6 +5889,16 @@ function sensor_types(parent){
5562
5889
  }
5563
5890
  }
5564
5891
  },
5892
+ '521': {
5893
+ name: 'Type 520 - 6 Channel Current Temperature and Humidity',
5894
+ parse: (payload, parsed) => {
5895
+ return {
5896
+ lux_1: payload.slice(0, 2).reduce(msbLsb)/100,
5897
+ lux_2: payload.slice(2, 4).reduce(msbLsb)/100,
5898
+ lux_3: payload.slice(4, 6).reduce(msbLsb)/100
5899
+ }
5900
+ }
5901
+ },
5565
5902
  '10000': {
5566
5903
  name: '4-Relay',
5567
5904
  parse: (d) => {