@ncd-io/node-red-enterprise-sensors 2.0.3 → 2.0.4

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.
@@ -1063,6 +1063,9 @@ module.exports = class WirelessSensor{
1063
1063
  if(value.html_id){
1064
1064
  html_map[value.html_id] = key;
1065
1065
  }
1066
+ // else{
1067
+ // html_map[key] = key;
1068
+ // }
1066
1069
  }
1067
1070
  const response = {};
1068
1071
  for (let [key, value] of Object.entries(configs)) {
@@ -1072,6 +1075,8 @@ module.exports = class WirelessSensor{
1072
1075
  let active_key = '';
1073
1076
  if(is_node_id_or_delay){
1074
1077
  active_key = 'node_id_delay_active';
1078
+ }else if(Object.hasOwn(html_map, key) && Object.hasOwn(config_map[html_map[key]], 'html_active_id')){
1079
+ active_key = config_map[html_map[key]].html_active_id;
1075
1080
  }else{
1076
1081
  active_key = key+'_active';
1077
1082
  }
@@ -1615,18 +1620,18 @@ module.exports = class WirelessSensor{
1615
1620
  delete this.fly_101_in_progress;
1616
1621
  return this.config_send(sensor_mac, packet);
1617
1622
  }
1618
- config_set_roll_threshold_47(sensor_mac, threshold){
1619
- console.log('config_set_roll_threshold_47');
1620
- var packet = [244, 1, 0, 0, 47, 0, threshold];
1621
- console.log(packet);
1622
- return this.config_send(sensor_mac, packet);
1623
- }
1624
- config_set_pitch_threshold_47(sensor_mac, threshold){
1625
- console.log('config_set_pitch_threshold_47');
1626
- var packet = [244, 3, 0, 0, 47, 0, threshold];
1627
- console.log(packet);
1628
- return this.config_send(sensor_mac, packet);
1629
- }
1623
+ // config_set_roll_threshold_47(sensor_mac, threshold){
1624
+ // console.log('config_set_roll_threshold_47');
1625
+ // var packet = [244, 1, 0, 0, 47, 0, threshold];
1626
+ // console.log(packet);
1627
+ // return this.config_send(sensor_mac, packet);
1628
+ // }
1629
+ // config_set_pitch_threshold_47(sensor_mac, threshold){
1630
+ // console.log('config_set_pitch_threshold_47');
1631
+ // var packet = [244, 3, 0, 0, 47, 0, threshold];
1632
+ // console.log(packet);
1633
+ // return this.config_send(sensor_mac, packet);
1634
+ // }
1630
1635
  config_set_accelerometer_threshold_108(sensor_mac, value){
1631
1636
  console.log('config_set_accelerometer_threshold_108');
1632
1637
  var packet = [244, 32, 0, 0, 0, value];
@@ -1943,21 +1948,21 @@ module.exports = class WirelessSensor{
1943
1948
  console.log(packet);
1944
1949
  return this.config_send(sensor_mac, packet);
1945
1950
  }
1946
- config_set_number_of_regs_to_rd_539(sensor_mac, value){
1947
- console.log('config_set_number_of_regs_to_rd_539');
1948
- var packet = [244, 51, 0, 0, 23, value];
1949
- console.log(packet);
1950
- return this.config_send(sensor_mac, packet);
1951
- }
1952
- config_set_reg_539(sensor_mac, value, register){
1953
- console.log('config_set_reg_539');
1954
- // var packet = [244, 51, 0, 0, 23, ]
1955
- var packet = [244, 30 + register, 0, 0, 23];
1956
- let value_reg = int2Bytes((value), 2);
1957
- packet.push(...value_reg);
1958
- console.log(packet);
1959
- return this.config_send(sensor_mac, packet);
1960
- }
1951
+ // config_set_number_of_regs_to_rd_539(sensor_mac, value){
1952
+ // console.log('config_set_number_of_regs_to_rd_539');
1953
+ // var packet = [244, 51, 0, 0, 23, value];
1954
+ // console.log(packet);
1955
+ // return this.config_send(sensor_mac, packet);
1956
+ // }
1957
+ // config_set_reg_539(sensor_mac, value, register){
1958
+ // console.log('config_set_reg_539');
1959
+ // // var packet = [244, 51, 0, 0, 23, ]
1960
+ // var packet = [244, 30 + register, 0, 0, 23];
1961
+ // let value_reg = int2Bytes((value), 2);
1962
+ // packet.push(...value_reg);
1963
+ // console.log(packet);
1964
+ // return this.config_send(sensor_mac, packet);
1965
+ // }
1961
1966
  config_set_all_register_data_539(sensor_mac, number_of_registers, registers){
1962
1967
  console.log('config_set_all_registers_539');
1963
1968
  // registers is an arbitrary number of 16 bit integers
@@ -2736,23 +2741,23 @@ module.exports = class WirelessSensor{
2736
2741
  console.log(packet);
2737
2742
  return this.config_send(sensor_mac, packet);
2738
2743
  }
2739
- config_set_oxygen_rate_536(sensor_mac, value){
2740
- console.log('config_set_oxygen_rate_536');
2741
- var packet = [244, 32, 0, 0, 0, value];
2742
- console.log(packet);
2743
- return this.config_send(sensor_mac, packet);
2744
- }
2745
- config_set_oxygen_timeout_536(sensor_mac, value){
2746
- console.log('config_set_oxygen_timeout_536');
2747
- var packet = [244, 37, 0, 0, 0];
2748
- let value_ = int2Bytes(value, 2);
2749
- packet.push(...value_);
2750
- console.log(packet);
2751
- return this.config_send(sensor_mac, packet);
2752
- }
2744
+ // config_set_oxygen_rate_536(sensor_mac, value){
2745
+ // console.log('config_set_oxygen_rate_536');
2746
+ // var packet = [244, 32, 0, 0, 0, value];
2747
+ // console.log(packet);
2748
+ // return this.config_send(sensor_mac, packet);
2749
+ // }
2750
+ // config_set_oxygen_timeout_536(sensor_mac, value){
2751
+ // console.log('config_set_oxygen_timeout_536');
2752
+ // var packet = [244, 37, 0, 0, 0];
2753
+ // let value_ = int2Bytes(value, 2);
2754
+ // packet.push(...value_);
2755
+ // console.log(packet);
2756
+ // return this.config_send(sensor_mac, packet);
2757
+ // }
2753
2758
  config_set_oxygen_max_threshold_s1_536(sensor_mac, value){
2754
2759
  console.log('config_set_oxygen_max_threshold_s1_536');
2755
- value = value * 100;
2760
+ //value = value * 100;
2756
2761
  var packet = [244, 34, 0, 0, 0, 1];
2757
2762
  let value_ = int2Bytes(value, 2);
2758
2763
  packet.push(...value_);
@@ -2761,7 +2766,7 @@ module.exports = class WirelessSensor{
2761
2766
  }
2762
2767
  config_set_oxygen_max_threshold_s2_536(sensor_mac, value){
2763
2768
  console.log('config_set_oxygen_max_threshold_s2_536');
2764
- value = value * 100;
2769
+ //value = value * 100;
2765
2770
  var packet = [244, 34, 0, 0, 0, 2];
2766
2771
  let value_ = int2Bytes(value, 2);
2767
2772
  packet.push(...value_);
@@ -2769,7 +2774,7 @@ module.exports = class WirelessSensor{
2769
2774
  return this.config_send(sensor_mac, packet);
2770
2775
  }
2771
2776
  config_set_oxygen_max_threshold_s3_536(sensor_mac, value){
2772
- value = value * 100;
2777
+ //value = value * 100;
2773
2778
  console.log('config_set_oxygen_max_threshold_s3_536');
2774
2779
  var packet = [244, 34, 0, 0, 0, 3];
2775
2780
  let value_ = int2Bytes(value, 2);
@@ -2778,7 +2783,7 @@ module.exports = class WirelessSensor{
2778
2783
  return this.config_send(sensor_mac, packet);
2779
2784
  }
2780
2785
  config_set_oxygen_max_threshold_s4_536(sensor_mac, value){
2781
- value = value * 100;
2786
+ //value = value * 100;
2782
2787
  console.log('config_set_oxygen_max_threshold_s4_536');
2783
2788
  var packet = [244, 34, 0, 0, 0, 4];
2784
2789
  let value_ = int2Bytes(value, 2);
@@ -2788,7 +2793,7 @@ module.exports = class WirelessSensor{
2788
2793
  }
2789
2794
  config_set_oxygen_min_threshold_s1_536(sensor_mac, value){
2790
2795
  console.log('config_set_oxygen_min_threshold_s1_536');
2791
- value = value * 100;
2796
+ //value = value * 100;
2792
2797
  var packet = [244, 39, 0, 0, 0, 1];
2793
2798
  let value_ = int2Bytes(value, 2);
2794
2799
  packet.push(...value_);
@@ -2797,7 +2802,7 @@ module.exports = class WirelessSensor{
2797
2802
  }
2798
2803
  config_set_oxygen_min_threshold_s2_536(sensor_mac, value){
2799
2804
  console.log('config_set_oxygen_min_threshold_s2_536');
2800
- value = value * 100;
2805
+ //value = value * 100;
2801
2806
  var packet = [244, 39, 0, 0, 0, 2];
2802
2807
  let value_ = int2Bytes(value, 2);
2803
2808
  packet.push(...value_);
@@ -2805,7 +2810,7 @@ module.exports = class WirelessSensor{
2805
2810
  return this.config_send(sensor_mac, packet);
2806
2811
  }
2807
2812
  config_set_oxygen_min_threshold_s3_536(sensor_mac, value){
2808
- value = value * 100;
2813
+ //value = value * 100;
2809
2814
  console.log('config_set_oxygen_min_threshold_s3_536');
2810
2815
  var packet = [244, 39, 0, 0, 0, 3];
2811
2816
  let value_ = int2Bytes(value, 2);
@@ -2814,7 +2819,7 @@ module.exports = class WirelessSensor{
2814
2819
  return this.config_send(sensor_mac, packet);
2815
2820
  }
2816
2821
  config_set_oxygen_min_threshold_s4_536(sensor_mac, value){
2817
- value = value * 100;
2822
+ //value = value * 100;
2818
2823
  console.log('config_set_oxygen_min_threshold_s4_536');
2819
2824
  var packet = [244, 39, 0, 0, 0, 4];
2820
2825
  let value_ = int2Bytes(value, 2);
@@ -3066,6 +3071,100 @@ module.exports = class WirelessSensor{
3066
3071
  console.log(packet);
3067
3072
  return this.config_send(sensor_mac, packet);
3068
3073
  }
3074
+ config_set_lube_on_time_1_105(sensor_mac, value){
3075
+ console.log('config_set_lube_on_time_1_105');
3076
+ var packet = [244, 87, 0, 0, 88, 1, value];
3077
+ console.log(packet);
3078
+ return this.config_send(sensor_mac, packet);
3079
+ }
3080
+ config_set_lube_on_time_2_105(sensor_mac, value){
3081
+ console.log('config_set_lube_on_time_2_105');
3082
+ var packet = [244, 87, 0, 0, 88, 2, value];
3083
+ console.log(packet);
3084
+ return this.config_send(sensor_mac, packet);
3085
+ }
3086
+ config_set_faulty_level_105(sensor_mac, value){
3087
+ console.log('config_set_faulty_level_105');
3088
+ var packet = [244, 83, 0, 0, 88, value];
3089
+ console.log(packet);
3090
+ return this.config_send(sensor_mac, packet);
3091
+ }
3092
+ config_set_friction_level_105(sensor_mac, value){
3093
+ console.log('config_set_friction_level_105');
3094
+ var packet = [244, 85, 0, 0, 88, value];
3095
+ console.log(packet);
3096
+ return this.config_send(sensor_mac, packet);
3097
+ }
3098
+ config_set_vibration_mode_115(sensor_mac, value){
3099
+ console.log('config_set_vibration_mode_115');
3100
+ var packet = [244, 32, 0, 0, 0, value];
3101
+ console.log(packet);
3102
+ return this.config_send(sensor_mac, packet);
3103
+ }
3104
+ config_set_offset_mode_115(sensor_mac, value){
3105
+ console.log('config_set_offset_mode_115');
3106
+ var packet = [244, 34, 0, 0, 0, value];
3107
+ console.log(packet);
3108
+ return this.config_send(sensor_mac, packet);
3109
+ }
3110
+ config_set_flow_sensor_baud_rate_536(sensor_mac, value){
3111
+ console.log('config_set_flow_sensor_baud_rate_536');
3112
+ var packet = [244, 55, 0, 0, 0];
3113
+ let baudrate = int2Bytes((value), 4);
3114
+ packet.push(...baudrate);
3115
+ console.log(packet);
3116
+ return this.config_send(sensor_mac, packet);
3117
+ }
3118
+ config_set_oxygen_sensor_baud_rate_536(sensor_mac, value){
3119
+ console.log('config_set_oxygen_sensor_baud_rate_536');
3120
+ var packet = [244, 61, 0, 0, 0];
3121
+ let baudrate = int2Bytes((value), 4);
3122
+ packet.push(...baudrate);
3123
+ console.log(packet);
3124
+ return this.config_send(sensor_mac, packet);
3125
+ }
3126
+ config_set_flow_sensor_parity_bits_536(sensor_mac, value){
3127
+ console.log('config_set_flow_sensor_parity_bits_536');
3128
+ var packet = [244, 57, 0, 0, 0, value];
3129
+ console.log(packet);
3130
+ return this.config_send(sensor_mac, packet);
3131
+ }
3132
+ config_set_oxygen_sensor_parity_bits_536(sensor_mac, value){
3133
+ console.log('config_set_oxygen_sensor_parity_bits_536');
3134
+ var packet = [244, 63, 0, 0, 0, value];
3135
+ console.log(packet);
3136
+ return this.config_send(sensor_mac, packet);
3137
+ }
3138
+ config_set_flow_sensor_stop_bits_536(sensor_mac, value){
3139
+ console.log('config_set_flow_sensor_stop_bits_536');
3140
+ var packet = [244, 59, 0, 0, 0, value];
3141
+ console.log(packet);
3142
+ return this.config_send(sensor_mac, packet);
3143
+ }
3144
+ config_set_oxygen_sensor_stop_bits_536(sensor_mac, value){
3145
+ console.log('config_set_oxygen_sensor_stop_bits_536');
3146
+ var packet = [244, 65, 0, 0, 0, value];
3147
+ console.log(packet);
3148
+ return this.config_send(sensor_mac, packet);
3149
+ }
3150
+ config_set_tilt_mode_47(sensor_mac, value){
3151
+ console.log('config_set_tilt_mode_47');
3152
+ var packet = [244, 34, 0, 0 ,0, value];
3153
+ console.log(packet);
3154
+ return this.config_send(sensor_mac, packet);
3155
+ }
3156
+ config_set_tilt_angle_47(sensor_mac, value){
3157
+ console.log('config_set_tilt_angle_47');
3158
+ var packet = [244, 32, 0, 0, 0, value];
3159
+ console.log(packet);
3160
+ return this.config_send(sensor_mac, packet);
3161
+ }
3162
+ config_set_tilt_timer_47(sensor_mac, value){
3163
+ console.log('config_set_tilt_timer_47');
3164
+ var packet = [244, 36, 0, 0, 0, value];
3165
+ console.log(packet);
3166
+ return this.config_send(sensor_mac, packet);
3167
+ }
3069
3168
  config_get_delay(sensor_mac){
3070
3169
  return new Promise((fulfill, reject) => {
3071
3170
  this.config_send(sensor_mac, [247, 21, 0, 0, 0]).then((res) => {
@@ -4229,208 +4328,6 @@ function sensor_types(parent){
4229
4328
  };
4230
4329
  }
4231
4330
  },
4232
- '21': {
4233
- name: 'Differential Bidirectional Pressure Sensor',
4234
- parse: (payload, parsed, mac) => {
4235
- let pressure, temperature, raw_adc;
4236
-
4237
- if (parsed.firmware <= 12) {
4238
- pressure = signInt(payload.slice(8, 10).reduce(msbLsb), 16) / 100;
4239
- temperature = signInt(payload.slice(10, 12).reduce(msbLsb), 16) / 100;
4240
- // raw_adc not present in firmware ≤ 12
4241
- return {
4242
- pressure,
4243
- temperature
4244
- };
4245
- } else {
4246
- pressure = signInt(payload.slice(8, 10).reduce(msbLsb), 16) / 1000;
4247
- temperature = signInt(payload.slice(10, 12).reduce(msbLsb), 16) / 100;
4248
- raw_adc = signInt(payload.slice(12, 14).reduce(msbLsb), 16);
4249
- return {
4250
- pressure,
4251
- temperature,
4252
- raw_adc
4253
- };
4254
- }
4255
- },
4256
- 'parse_fly': (frame) => {
4257
- let sensor_type = '';
4258
- switch(frame[13]){
4259
- case 0:
4260
- sensor_type = 'AMS5812';
4261
- break;
4262
- case 1:
4263
- sensor_type = 'AMS5915';
4264
- break;
4265
- }
4266
- let sensor_range = '';
4267
- if(frame[13]){ // if sensor type is 5915
4268
- switch(frame[12]){
4269
- case 0:
4270
- sensor_range = '0005_D';
4271
- break;
4272
- case 1:
4273
- sensor_range = '0010_D';
4274
- break;
4275
- case 2:
4276
- sensor_range = '0002_D_B';
4277
- break;
4278
- case 3:
4279
- sensor_range = '0005_D_B';
4280
- break;
4281
- case 4:
4282
- sensor_range = '0010_D_B';
4283
- break;
4284
- case 5:
4285
- sensor_range = '0020_D';
4286
- break;
4287
- case 6:
4288
- sensor_range = '0035_D';
4289
- break;
4290
- case 7:
4291
- sensor_range = '0050_D';
4292
- break;
4293
- case 8:
4294
- sensor_range = '0100_D';
4295
- break;
4296
- case 9:
4297
- sensor_range = '0020_D_B';
4298
- break;
4299
- case 10:
4300
- sensor_range = '0035_D_B';
4301
- break;
4302
- case 11:
4303
- sensor_range = '0050_D_B';
4304
- break;
4305
- case 12:
4306
- sensor_range = '0100_D_B';
4307
- break;
4308
- case 13:
4309
- sensor_range = '0200_D';
4310
- break;
4311
- case 14:
4312
- sensor_range = '0350_D';
4313
- break;
4314
- case 15:
4315
- sensor_range = '0500_D';
4316
- break;
4317
- case 16:
4318
- sensor_range = '1000_D';
4319
- break;
4320
- case 17:
4321
- sensor_range = '2000_D';
4322
- break;
4323
- case 18:
4324
- sensor_range = '4000_D';
4325
- break;
4326
- case 19:
4327
- sensor_range = '7000_D';
4328
- break;
4329
- case 20:
4330
- sensor_range = '10000_D';
4331
- break;
4332
- case 21:
4333
- sensor_range = '0200_D_B';
4334
- break;
4335
- case 22:
4336
- sensor_range = '0350_D_B';
4337
- break;
4338
- case 23:
4339
- sensor_range = '0500_D_B';
4340
- break;
4341
- case 24:
4342
- sensor_range = '1000_D_B';
4343
- break;
4344
- }
4345
- }
4346
- else{ // sensor type is 5812
4347
- switch(frame[12]){
4348
- case 0:
4349
- sensor_range = '0000_D';
4350
- break;
4351
- case 1:
4352
- sensor_range = '0001_D';
4353
- break;
4354
- case 2:
4355
- sensor_range = '0000_D_B';
4356
- break;
4357
- case 3:
4358
- sensor_range = '0001_D_B';
4359
- break;
4360
- case 4:
4361
- sensor_range = '0003_D';
4362
- break;
4363
- case 5:
4364
- sensor_range = '0008_D';
4365
- break;
4366
- case 6:
4367
- sensor_range = '0015_D';
4368
- break;
4369
- case 7:
4370
- sensor_range = '0003_D_B';
4371
- break;
4372
- case 8:
4373
- sensor_range = '0008_D_B';
4374
- break;
4375
- case 9:
4376
- sensor_range = '0015_D_B';
4377
- break;
4378
- case 10:
4379
- sensor_range = '0030_D';
4380
- break;
4381
- case 11:
4382
- sensor_range = '0050_D';
4383
- break;
4384
- case 12:
4385
- sensor_range = '0150_D';
4386
- break;
4387
- case 13:
4388
- sensor_range = '0300_D';
4389
- break;
4390
- case 14:
4391
- sensor_range = '0600_D';
4392
- break;
4393
- case 15:
4394
- sensor_range = '1000_D';
4395
- break;
4396
- case 16:
4397
- sensor_range = '0030_D_B';
4398
- break;
4399
- case 17:
4400
- sensor_range = '0050_D_B';
4401
- break;
4402
- case 18:
4403
- sensor_range = '0150_D_B';
4404
- break;
4405
- case 19:
4406
- sensor_range = '0150_B';
4407
- break;
4408
- case 20:
4409
- sensor_range = '0150_A';
4410
- break;
4411
- case 21:
4412
- sensor_range = '0300_A';
4413
- break;
4414
- }
4415
- }
4416
- return {
4417
- 'firmware': frame[2],
4418
- 'sensor_range': sensor_range,
4419
- 'sensor_type': sensor_type,
4420
- 'hardware_id': frame.slice(14, 17),
4421
- 'report_rate': frame.slice(17, 21).reduce(msbLsb) + ' sec',
4422
- 'tx_counter': frame.slice(21, 25).reduce(msbLsb),
4423
- 'machine_values': {
4424
- 'firmware': frame[2],
4425
- 'sensor_range': frame[12],
4426
- 'sensor_type': frame[13],
4427
- 'hardware_id': frame.slice(14, 17),
4428
- 'report_rate': frame.slice(17, 21),
4429
- 'tx_counter': frame.slice(21, 25)
4430
- }
4431
- }
4432
- }
4433
- },
4434
4331
  '22': {
4435
4332
  name: 'Voltage Detection Input',
4436
4333
  parse: (d) => {
@@ -8062,171 +7959,22 @@ function sensor_types(parent){
8062
7959
  };
8063
7960
  }
8064
7961
  },
8065
- '105': {
8066
- name: '1 Channel Automatic Luber With Ultrasound Vibration Sensor',
8067
- parse: (d) => {
8068
- return {
8069
- raw_adc: d.slice(0, 2).reduce(msbLsb),
8070
- ma: d.slice(2, 4).reduce(msbLsb) / 100,
8071
- db: d.slice(4, 6).reduce(msbLsb) / 100
8072
- };
8073
- },
8074
- 'parse_fly': (frame) => {
8075
- let firmware = frame[2];
8076
- if(firmware > 13){ // firmware 14 and above
8077
- let frame_data = {};
8078
- let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
8079
- if(!auto_check_interval){
8080
- frame_data.auto_check_interval = 'Disabled';
8081
- }else{
8082
- frame_data.auto_check_interval = auto_check_interval + " sec";
8083
- }
8084
- frame_data.always_on = frame[24]?"Enabled":"Disabled";
8085
- switch(frame[16]){
7962
+ '108': {
7963
+ name: 'Machine Uptime Monitoring Sensor',
7964
+ parse: (d, payload) => {
7965
+ let firmware = payload[1];
7966
+ // if((payload[7] & 2) != 0){
7967
+ // console.log('Error found');
7968
+ // // parsed.data = {error: 'Error found, Accelerometer Probe may be unattached'};
7969
+ // let error = {error: 'Error found, Accelerometer Probe may be unattached'};
7970
+ // return error;
7971
+ // }
7972
+ if(firmware > 4){
7973
+ let report_type = "Regular";
7974
+ switch(d[41]){
8086
7975
  case 0:
8087
- frame_data.fsr = "+-6.114 V";
8088
- break;
8089
- case 1:
8090
- frame_data.fsr = "+-4.096 V";
8091
- break;
8092
- case 2:
8093
- frame_data.fsr = "+-2.048 V";
8094
- break;
8095
- case 3:
8096
- frame_data.fsr = "+-1.024 V";
8097
- break;
8098
- case 4:
8099
- frame_data.fsr = "+-0.512 V";
8100
- break;
8101
- case 5:
8102
- frame_data.fsr = "+-0.256 V";
8103
- break;
8104
- }
8105
- return {
8106
- 'firmware': frame[2],
8107
- 'fsr': frame_data.fsr,
8108
- 'boot_up_time': frame[17] + " sec",
8109
- 'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
8110
- 'auto_check_interval': frame_data.auto_check_interval,
8111
- 'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
8112
- 'always_on': frame_data.always_on,
8113
- 'calibration_one': frame.slice(25, 29).reduce(msbLsb),
8114
- 'calibration_two':frame.slice(29, 33).reduce(msbLsb),
8115
- 'calibration_three':frame.slice(33, 37).reduce(msbLsb),
8116
- 'hardware_id': frame.slice(37, 40),
8117
- 'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
8118
- 'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
8119
- 'machine_values': {
8120
- 'firmware': frame[2],
8121
- 'fsr': frame[16],
8122
- 'boot_up_time': frame[17],
8123
- 'adc_pin_reading': frame.slice(18, 20),
8124
- 'auto_check_interval': frame.slice(20, 22),
8125
- 'auto_check_percentage': frame.slice(22, 24),
8126
- 'always_on': frame[24],
8127
- 'calibration_one': frame.slice(25, 29),
8128
- 'calibration_two':frame.slice(29, 33),
8129
- 'calibration_three':frame.slice(33, 37),
8130
- 'hardware_id': frame.slice(37, 40),
8131
- 'report_rate': frame.slice(40, 44),
8132
- 'tx_life_counter': frame.slice(44, 48)
8133
- }
8134
- }
8135
- }
8136
- }
8137
- },
8138
- '106': {
8139
- name: '2 Channel Automatic Luber With Ultrasound Vibration Sensor',
8140
- parse: (d) => {
8141
- return {
8142
- c1_raw_adc: d.slice(0, 2).reduce(msbLsb),
8143
- c1_ma: d.slice(2, 4).reduce(msbLsb) / 100,
8144
- c1_db: d.slice(4, 6).reduce(msbLsb) / 100,
8145
- c2_raw_adc: d.slice(6, 8).reduce(msbLsb),
8146
- c2_ma: d.slice(8, 10).reduce(msbLsb) / 100,
8147
- c2_db: d.slice(10, 12).reduce(msbLsb) / 100
8148
- };
8149
- },
8150
- 'parse_fly': (frame) => {
8151
- let firmware = frame[2];
8152
- if(firmware > 13){ // firmware 14 and above
8153
- let frame_data = {};
8154
- let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
8155
- if(!auto_check_interval){
8156
- frame_data.auto_check_interval = 'Disabled';
8157
- }else{
8158
- frame_data.auto_check_interval = auto_check_interval + " sec";
8159
- }
8160
- frame_data.always_on = frame[24]?"Enabled":"Disabled";
8161
- switch(frame[16]){
8162
- case 0:
8163
- frame_data.fsr = "+-6.114 V";
8164
- break;
8165
- case 1:
8166
- frame_data.fsr = "+-4.096 V";
8167
- break;
8168
- case 2:
8169
- frame_data.fsr = "+-2.048 V";
8170
- break;
8171
- case 3:
8172
- frame_data.fsr = "+-1.024 V";
8173
- break;
8174
- case 4:
8175
- frame_data.fsr = "+-0.512 V";
8176
- break;
8177
- case 5:
8178
- frame_data.fsr = "+-0.256 V";
8179
- break;
8180
- }
8181
- return {
8182
- 'firmware': frame[2],
8183
- 'fsr': frame_data.fsr,
8184
- 'boot_up_time': frame[17] + " sec",
8185
- 'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
8186
- 'auto_check_interval': frame_data.auto_check_interval,
8187
- 'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
8188
- 'always_on': frame_data.always_on,
8189
- 'calibration_one': frame.slice(25, 29).reduce(msbLsb),
8190
- 'calibration_two':frame.slice(29, 33).reduce(msbLsb),
8191
- 'calibration_three':frame.slice(33, 37).reduce(msbLsb),
8192
- 'hardware_id': frame.slice(37, 40),
8193
- 'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
8194
- 'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
8195
- 'machine_values': {
8196
- 'firmware': frame[2],
8197
- 'fsr': frame[16],
8198
- 'boot_up_time': frame[17],
8199
- 'adc_pin_reading': frame.slice(18, 20),
8200
- 'auto_check_interval': frame.slice(20, 22),
8201
- 'auto_check_percentage': frame.slice(22, 24),
8202
- 'always_on': frame[24],
8203
- 'calibration_one': frame.slice(25, 29),
8204
- 'calibration_two':frame.slice(29, 33),
8205
- 'calibration_three':frame.slice(33, 37),
8206
- 'hardware_id': frame.slice(37, 40),
8207
- 'report_rate': frame.slice(40, 44),
8208
- 'tx_life_counter': frame.slice(44, 48)
8209
- }
8210
- }
8211
- }
8212
- }
8213
- },
8214
- '108': {
8215
- name: 'Machine Uptime Monitoring Sensor',
8216
- parse: (d, payload) => {
8217
- let firmware = payload[1];
8218
- // if((payload[7] & 2) != 0){
8219
- // console.log('Error found');
8220
- // // parsed.data = {error: 'Error found, Accelerometer Probe may be unattached'};
8221
- // let error = {error: 'Error found, Accelerometer Probe may be unattached'};
8222
- // return error;
8223
- // }
8224
- if(firmware > 4){
8225
- let report_type = "Regular";
8226
- switch(d[41]){
8227
- case 0:
8228
- report_type = "Regular";
8229
- break;
7976
+ report_type = "Regular";
7977
+ break;
8230
7978
  case 1:
8231
7979
  report_type = "Shift end";
8232
7980
  break;
@@ -8818,878 +8566,256 @@ function sensor_types(parent){
8818
8566
  ].join(':'),
8819
8567
  'Shift_end_3': [
8820
8568
  String(frame[31]).padStart(2, '0'),
8821
- String(frame[32]).padStart(2, '0')
8822
- ].join(':'),
8823
- 'Shift_end_4': [
8824
- String(frame[33]).padStart(2, '0'),
8825
- String(frame[34]).padStart(2, '0')
8826
- ].join(':'),
8827
- 'reset_timeout': frame.slice(35, 37).reduce(msbLsb) + "min",
8828
- 'counter_reset_mode': reset_mode,
8829
- 'sampling_interval': rtc_sampling_interval,
8830
- 'acc_odr': acc_odr,
8831
- 'hardware_id': frame.slice(40, 43),
8832
- 'report_rate': frame.slice(43, 47).reduce(msbLsb) + "sec",
8833
- 'tx_life_counter': frame.slice(47, 51).reduce(msbLsb),
8834
- 'machine_values': {
8835
- 'firmware': frame[2],
8836
- 'accelerometer_threshold': frame[16],
8837
- 'debouncing_timeout': frame[17],
8838
- 'accelero_state': frame[18],
8839
- 'input_1_active_edge': frame[19],
8840
- 'input_2_active_edge': frame[20],
8841
- 'input_3_active_edge': frame[21],
8842
- 'counter_threshold': frame.slice(22, 26),
8843
- 'trasnmit_on_change_status': frame[26],
8844
- 'Shift_end_1': frame.slice(27, 29),
8845
- 'Shift_end_2': frame.slice(29, 31),
8846
- 'Shift_end_3': frame.slice(31, 33),
8847
- 'Shift_end_4': frame.slice(33, 35),
8848
- 'reset_timeout': frame.slice(35, 37),
8849
- 'counter_reset_mode': frame[37],
8850
- 'sampling_interval': frame[38],
8851
- 'acc_odr': frame[39],
8852
- 'hardware_id': frame.slice(40, 43),
8853
- 'report_rate': frame.slice(43, 47),
8854
- 'tx_life_counter': frame.slice(47, 51)
8855
- }
8856
- }
8857
- } else{
8858
- return {
8859
- 'firmware': frame[2],
8860
- 'report_rate': frame.slice(12, 16).reduce(msbLsb).toString() + "sec.",
8861
- 'accelerometer_threshold': (frame[16]* 32) + "mg.",
8862
- 'debouncing_timeout': frame[17].toString() + "msec.",
8863
- 'accelero_state': frame[18],
8864
- 'digital_inputs_active_edge': frame.slice(19, 22).reduce(msbLsb),
8865
- 'counter_threshold': frame.slice(22, 26).reduce(msbLsb),
8866
- 'trasnmit_on_change_status': frame[26],
8867
- 'machine_values': {
8868
- 'firmware': frame[2],
8869
- 'report_rate': frame.slice(12, 16),
8870
- 'accelerometer_threshold': frame[16],
8871
- 'debouncing_timeout': frame[17],
8872
- 'accelero_active_state': frame[18],
8873
- 'digital_inputs_active_edge': frame.slice(19, 22),
8874
- 'counter_threshold': frame.slice(22, 26),
8875
- 'trasnmit_on_change_status': frame[26]
8876
- }
8877
- }
8878
- }
8879
- }
8880
- },
8881
- '109': {
8882
- name: 'Wireless Custom Solar Sensor',
8883
- parse: (d) => {
8884
- return {
8885
- illuminance: d.slice(0, 4).reduce(msbLsb),
8886
- total_solar_radiation: d.slice(4, 6).reduce(msbLsb),
8887
- ultraviolet_radiation: d.slice(6, 8).reduce(msbLsb)
8888
- };
8889
- },
8890
- 'parse_fly': (frame) => {
8891
- if(frame[2] > 8){
8892
- let reset_mode = "Disabled";
8893
- switch(frame[37]){
8894
- case 0:
8895
- reset_mode = "Disabled";
8896
- break;
8897
- case 1:
8898
- reset_mode = "Shift Ends";
8899
- break;
8900
- case 2:
8901
- reset_mode = "Timeout";
8902
- break;
8903
- }
8904
- let acc_odr = "10Hz";
8905
- switch(frame[39]){
8906
- case 0:
8907
- acc_odr = "10Hz";
8908
- break;
8909
- case 1:
8910
- acc_odr = "20Hz";
8911
- break;
8912
- case 2:
8913
- acc_odr = "50Hz";
8914
- break;
8915
- case 3:
8916
- acc_odr = "100Hz";
8917
- break;
8918
- case 4:
8919
- acc_odr = "200Hz";
8920
- break;
8921
- case 5:
8922
- acc_odr = "400Hz";
8923
- break;
8924
- }
8925
- let rtc_sampling_interval = "5 seconds";
8926
- switch(frame[38]){
8927
- case 0:
8928
- rtc_sampling_interval = "1 minute";
8929
- break;
8930
- case 1:
8931
- rtc_sampling_interval = "5 minutes";
8932
- break;
8933
- case 2:
8934
- rtc_sampling_interval = "15 minutes";
8935
- break;
8936
- case 3:
8937
- rtc_sampling_interval = "30 minutes";
8938
- break;
8939
- case 4:
8940
- rtc_sampling_interval = "1 hour";
8941
- break;
8942
- case 5:
8943
- rtc_sampling_interval = "2 hours";
8944
- break;
8945
- case 6:
8946
- rtc_sampling_interval = "3 hours";
8947
- break;
8948
- case 7:
8949
- rtc_sampling_interval = "6 hours";
8950
- break;
8951
- case 8:
8952
- rtc_sampling_interval = "12 hours";
8953
- break;
8954
- case 9:
8955
- rtc_sampling_interval = "5 seconds";
8956
- break;
8957
- case 10:
8958
- rtc_sampling_interval = "10 seconds";
8959
- break;
8960
- case 11:
8961
- rtc_sampling_interval = "15 seconds";
8962
- break;
8963
- case 12:
8964
- rtc_sampling_interval = "30 seconds";
8965
- break;
8966
- }
8967
- return {
8968
- 'firmware': frame[2],
8969
- 'accelerometer_threshold': (frame[16]* 32) + "mg",
8970
- 'debouncing_timeout': frame[17] + "sec",
8971
- 'accelero_state': frame[18]? "Enabled": "Disabled",
8972
- 'input_1_active_edge': frame[19]? "Rising": "Falling",
8973
- 'input_2_active_edge': frame[20]? "Rising": "Falling",
8974
- 'input_3_active_edge': frame[21]? "Rising": "Falling",
8975
- 'counter_threshold': frame.slice(22, 26).reduce(msbLsb) + "sec",
8976
- 'trasnmit_on_change_status': frame[26]? "Enabled": "Disabled",
8977
- 'Shift_end_1': [
8978
- String(frame[27]).padStart(2, '0'),
8979
- String(frame[28]).padStart(2, '0')
8980
- ].join(':'),
8981
- 'Shift_end_2': [
8982
- String(frame[29]).padStart(2, '0'),
8983
- String(frame[30]).padStart(2, '0')
8984
- ].join(':'),
8985
- 'Shift_end_3': [
8986
- String(frame[31]).padStart(2, '0'),
8987
- String(frame[32]).padStart(2, '0')
8988
- ].join(':'),
8989
- 'Shift_end_4': [
8990
- String(frame[33]).padStart(2, '0'),
8991
- String(frame[34]).padStart(2, '0')
8992
- ].join(':'),
8993
- 'reset_timeout': frame.slice(35, 37).reduce(msbLsb) + "min",
8994
- 'counter_reset_mode': reset_mode,
8995
- 'sampling_interval': rtc_sampling_interval,
8996
- 'acc_odr': acc_odr,
8997
- 'hardware_id': frame.slice(40, 43),
8998
- 'report_rate': frame.slice(43, 47).reduce(msbLsb) + "sec",
8999
- 'tx_life_counter': frame.slice(47, 51).reduce(msbLsb),
9000
- 'machine_values': {
9001
- 'firmware': frame[2],
9002
- 'accelerometer_threshold': frame[16],
9003
- 'debouncing_timeout': frame[17],
9004
- 'accelero_state': frame[18],
9005
- 'input_1_active_edge': frame[19],
9006
- 'input_2_active_edge': frame[20],
9007
- 'input_3_active_edge': frame[21],
9008
- 'counter_threshold': frame.slice(22, 26),
9009
- 'trasnmit_on_change_status': frame[26],
9010
- 'Shift_end_1': frame.slice(27, 29),
9011
- 'Shift_end_2': frame.slice(29, 31),
9012
- 'Shift_end_3': frame.slice(31, 33),
9013
- 'Shift_end_4': frame.slice(33, 35),
9014
- 'reset_timeout': frame.slice(35, 37),
9015
- 'counter_reset_mode': frame[37],
9016
- 'sampling_interval': frame[38],
9017
- 'acc_odr': frame[39],
9018
- 'hardware_id': frame.slice(40, 43),
9019
- 'report_rate': frame.slice(43, 47),
9020
- 'tx_life_counter': frame.slice(47, 51)
9021
- }
9022
- }
9023
- } else{
9024
- return {
9025
- 'firmware': frame[2],
9026
- 'report_rate': frame.slice(12, 16).reduce(msbLsb).toString() + "sec.",
9027
- 'accelerometer_threshold': (frame[16]* 32).toString() + "mg.",
9028
- 'debouncing_timeout': frame[17].toString() + "sec.",
9029
- 'accelero_state': frame[18],
9030
- 'digital_inputs_active_edge': frame.slice(19, 22),
9031
- 'counter_threshold': frame.slice(22, 26).reduce(msbLsb).toString() + "sec.",
9032
- 'trasnmit_on_change_status': frame[26],
9033
- 'machine_values': {
9034
- 'firmware': frame[2],
9035
- 'report_rate': frame.slice(12, 16),
9036
- 'accelerometer_threshold': frame[16],
9037
- 'debouncing_timeout': frame[17],
9038
- 'accelero_active_state': frame[18],
9039
- 'digital_inputs_active_edge': frame.slice(19, 22),
9040
- 'counter_threshold': frame.slice(22, 26),
9041
- 'trasnmit_on_change_status': frame[26]
9042
- }
9043
- }
9044
- }
9045
- }
9046
- },
9047
- '109': {
9048
- name: 'Wireless Custom Solar Sensor',
9049
- parse: (d) => {
9050
- return {
9051
- illuminance: d.slice(0, 4).reduce(msbLsb),
9052
- total_solar_radiation: d.slice(4, 6).reduce(msbLsb),
9053
- ultraviolet_radiation: d.slice(6, 8).reduce(msbLsb)
9054
- };
9055
- },
9056
- 'parse_fly': (frame) => {
9057
- return {
9058
- 'firmware': frame[2],
9059
- 'hardware_id': frame.slice(12, 15),
9060
- 'sample_rate': frame.slice(15, 19).reduce(msbLsb) + " Sec.",
9061
- 'tx_life_counter': frame.slice(19, 23).reduce(msbLsb),
9062
- 'machine_values': {
9063
- 'firmware': frame[2],
9064
- 'hardware_id': frame.slice(12, 15),
9065
- 'sample_rate': frame.slice(15, 19).reduce(msbLsb),
9066
- 'tx_life_counter': frame.slice(19, 23).reduce(msbLsb)
9067
- }
9068
- }
9069
- }
9070
- },
9071
- '112': {
9072
- name: 'Condition Based/Predictive Maintenance Sensor v4',
9073
- parse: (payload, parsed, mac) => {
9074
- if(payload[7] & 2){
9075
- console.log('Error found');
9076
- console.log(payload[7]);
9077
- parsed.data = {error: 'Error found, Sensor Probe may be unattached'};
9078
- return parsed;
9079
- }
9080
- let msg_type = (payload[7] & 16)? 'motion' : 'regular';
9081
- if (payload[8] === 1) {
9082
- var deviceAddr = mac;
9083
- // var firmware = payload[1];
9084
- // var hour = payload[12];
9085
- // var minute = payload[13];
9086
- var expected_packets = msbLsb(payload[16], payload[17]);
9087
- var current_packet = msbLsb(payload[18], payload[19]);
9088
- var sdata_start = 20;
9089
-
9090
-
9091
- if (globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1) {
9092
- if (expected_packets != 1) {
9093
- // if current packet is equal to last one (duplicated data). This does not apply to the last package
9094
- if (globalDevices[deviceAddr].last_packet_counter == current_packet) {
9095
- console.log('Duplicated message')
9096
- return;
9097
- }
9098
- // if current packet is equal to 1 or last packet counter is higher thant current packet
9099
- if (current_packet == 1 || (globalDevices[deviceAddr].last_packet_counter > current_packet)) {
9100
- console.log('Recovering bad packet');
9101
- // clear stream object & timeout
9102
- parent.sensor_types[112].utils.clear_globalDevices_stream(deviceAddr);
9103
-
9104
- // init new stream
9105
- parent.sensor_types[112].utils.init_globalDevices_stream(deviceAddr, payload, expected_packets, parsed, msg_type);
9106
-
9107
- globalDevices[deviceAddr].last_packet_counter = current_packet;
9108
- globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
9109
- return;
9110
- } else {
9111
- globalDevices[deviceAddr].last_packet_counter = current_packet;
9112
- globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
9113
- }
9114
- } else {
9115
- // clear stream object & timeout
9116
- parent.sensor_types[112].utils.clear_globalDevices_stream(deviceAddr);
9117
-
9118
- // init new stream
9119
- parent.sensor_types[112].utils.init_globalDevices_stream(deviceAddr, payload, expected_packets, parsed, msg_type);
9120
-
9121
- globalDevices[deviceAddr].last_packet_counter = current_packet;
9122
- globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
9123
- }
9124
- } else {
9125
- // clear stream object & timeout
9126
- parent.sensor_types[112].utils.clear_globalDevices_stream(deviceAddr);
9127
-
9128
- // init new stream
9129
- parent.sensor_types[112].utils.init_globalDevices_stream(deviceAddr, payload, expected_packets, parsed, msg_type);
9130
-
9131
- globalDevices[deviceAddr].last_packet_counter = current_packet;
9132
- globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
9133
- }
9134
- if (current_packet == expected_packets) {
9135
- // concatenate stream
9136
- sensor_data = parent.sensor_types[112].utils.concat_fft_data(deviceAddr, payload[8], msg_type);
9137
- // clear stream object & timeout
9138
- parent.sensor_types[112].utils.clear_globalDevices_stream(deviceAddr);
9139
- return sensor_data;
9140
- } else {
9141
- return;
9142
- }
9143
- }
9144
- else if(payload[8] === 0 || payload[8] === 2 || payload[8] === 3){
9145
- // mode byte most significant bit will indicate fft data.
9146
- // console.log(d);
9147
- var odr;
9148
- switch(payload[9]){
9149
- case 6:
9150
- odr = "50Hz"
9151
- break;
9152
- case 7:
9153
- odr = "100Hz";
9154
- break;
9155
- case 8:
9156
- odr = "200Hz";
9157
- break;
9158
- case 9:
9159
- odr = "400Hz";
9160
- break;
9161
- case 10:
9162
- odr = "800Hz";
9163
- break;
9164
- case 11:
9165
- odr = "1600Hz";
9166
- break;
9167
- case 12:
9168
- odr = "3200Hz";
9169
- break;
9170
- case 13:
9171
- odr = "6400Hz";
9172
- break;
9173
- case 14:
9174
- odr = "12800Hz";
9175
- break;
9176
- case 15:
9177
- odr = "25600Hz";
9178
- break;
9179
- }
9180
- return {
9181
- mode: payload[8],
9182
- msg_type: msg_type,
9183
-
9184
- odr: odr,
9185
- temperature: signInt(payload.slice(10, 12).reduce(msbLsb), 16) / 100,
9186
- ext_temperature: signInt(payload.slice(12, 16).reduce(msbLsb), 32) / 100,
9187
- current: signInt(payload.slice(16, 20).reduce(msbLsb), 32) / 1000,
9188
- x_rms_ACC_G: payload.slice(20, 22).reduce(msbLsb)/1000,
9189
- x_max_ACC_G: payload.slice(22, 24).reduce(msbLsb)/1000,
9190
- x_velocity_mm_sec: payload.slice(24, 26).reduce(msbLsb) / 100,
9191
- x_displacement_mm: payload.slice(26, 28).reduce(msbLsb) / 100,
9192
- x_peak_one_Hz: payload.slice(28, 30).reduce(msbLsb),
9193
- x_peak_two_Hz: payload.slice(30, 32).reduce(msbLsb),
9194
- x_peak_three_Hz: payload.slice(32, 34).reduce(msbLsb),
9195
-
9196
- y_rms_ACC_G: payload.slice(34, 36).reduce(msbLsb)/1000,
9197
- y_max_ACC_G: payload.slice(36, 38).reduce(msbLsb)/1000,
9198
- y_velocity_mm_sec: payload.slice(38, 40).reduce(msbLsb) / 100,
9199
- y_displacement_mm: payload.slice(40, 42).reduce(msbLsb) / 100,
9200
- y_peak_one_Hz: payload.slice(42, 44).reduce(msbLsb),
9201
- y_peak_two_Hz: payload.slice(44, 46).reduce(msbLsb),
9202
- y_peak_three_Hz: payload.slice(46, 48).reduce(msbLsb),
9203
-
9204
- z_rms_ACC_G: payload.slice(48, 50).reduce(msbLsb)/1000,
9205
- z_max_ACC_G: payload.slice(50, 52).reduce(msbLsb)/1000,
9206
- z_velocity_mm_sec: payload.slice(52, 54).reduce(msbLsb) / 100,
9207
- z_displacement_mm: payload.slice(54, 56).reduce(msbLsb) / 100,
9208
- z_peak_one_Hz: payload.slice(56, 58).reduce(msbLsb),
9209
- z_peak_two_Hz: payload.slice(58, 60).reduce(msbLsb),
9210
- z_peak_three_Hz: payload.slice(60, 62).reduce(msbLsb),
9211
- rpm: payload.slice(62, 64).reduce(msbLsb)
9212
- };
9213
- }
9214
- // else{
9215
- // parsed.data = {'error': 'Vibration mode error'}
9216
- // return parsed;
9217
- // }
9218
- },
9219
- 'utils': {
9220
- 'clear_globalDevices_stream': (deviceAddr) => {
9221
- if(Object.hasOwn(globalDevices, deviceAddr)){
9222
- if(Object.hasOwn(globalDevices[deviceAddr], 'packet_stream_timeout')){
9223
- clearTimeout(globalDevices[deviceAddr].packet_stream_timeout);
9224
- }
9225
- delete globalDevices[deviceAddr];
9226
- }
9227
- },
9228
- 'init_globalDevices_stream'(deviceAddr, payload, expected_packets, parsed, msg_type){
9229
- globalDevices[deviceAddr] = {
9230
- data: {},
9231
- odr: msbLsb(payload[9], payload[10]),
9232
- mo: payload[8],
9233
- fsr: payload[11] >> 5,
9234
- hour: payload[12],
9235
- minute: payload[13],
9236
- temperature: msbLsb(payload[14], payload[15]) / 100,
9237
- expected_packets: expected_packets
9238
- }
9239
- globalDevices[deviceAddr].packet_stream_timeout = setTimeout(() => {
9240
- parsed.sensor_data = parent.sensor_types[112].utils.concat_fft_data(deviceAddr, payload[8], msg_type);
9241
- parsed.sensor_data.error = 'Time Series Data Stream Timeout - incomplete data received';
9242
-
9243
- parsed.sensor_name = parent.sensor_types[112].name;
9244
- parsed.type = 'sensor_data';
9245
- parsed.addr = deviceAddr;
9246
- parsed.received = Date.now();
9247
-
9248
- parent._emitter.emit('sensor_data', parsed);
9249
- parent._emitter.emit('sensor_data-112', parsed);
9250
- parent._emitter.emit('sensor_data'+'-'+deviceAddr, parsed);
9251
- }, 60000);
9252
- },
9253
- 'concat_fft_data': (deviceAddr, mode, msg_type) => {
9254
- var raw_data = new Array();
9255
- for(const packet in globalDevices[deviceAddr].data){
9256
- raw_data = raw_data.concat(globalDevices[deviceAddr].data[packet]);
9257
- }
9258
- var label = 0;
9259
-
9260
- var fft_concat = {};
9261
-
9262
- var en_axis_data = {};
9263
- en_axis_data.x_offset = 0;
9264
- en_axis_data.y_offset = 2;
9265
- en_axis_data.z_offset = 4;
9266
- en_axis_data.increment = 6;
9267
- fft_concat = {x: [], y: [], z: []};
9268
-
9269
- var fsr_mult = .00006;
9270
- var fsr_text = "";
9271
-
9272
- switch(globalDevices[deviceAddr].fsr){
9273
- case 0:
9274
- fsr_mult = 0.00006;
9275
- break;
9276
- case 1:
9277
- fsr_mult = 0.00012;
9278
- break;
9279
- case 2:
9280
- fsr_mult = 0.00024;
9281
- break;
9282
- case 3:
9283
- fsr_mult = 0.00049;
9284
- break;
9285
- }
9286
- switch(globalDevices[deviceAddr].fsr){
9287
- case 0:
9288
- fsr_text = "2g";
9289
- break;
9290
- case 1:
9291
- fsr_text = "4g";
9292
- break;
9293
- case 2:
9294
- fsr_text = "8g";
9295
- break;
9296
- case 3:
9297
- fsr_text = "16g";
9298
- break;
9299
- }
9300
-
9301
- for(var i = 0; i < raw_data.length; i+=en_axis_data.increment){
9302
- label++;
9303
-
9304
- if('x_offset' in en_axis_data){
9305
- fft_concat.x.push(parseFloat((signInt(((raw_data[i+en_axis_data.x_offset]<<8)+(raw_data[i+en_axis_data.x_offset+1])), 16)*fsr_mult).toFixed(3)));
9306
- }
9307
- if('y_offset' in en_axis_data){
9308
- fft_concat.y.push(parseFloat((signInt(((raw_data[i+en_axis_data.y_offset]<<8)+(raw_data[i+en_axis_data.y_offset+1])), 16)*fsr_mult).toFixed(3)));
9309
- }
9310
- if('z_offset' in en_axis_data){
9311
- fft_concat.z.push(parseFloat((signInt(((raw_data[i+en_axis_data.z_offset]<<8)+(raw_data[i+en_axis_data.z_offset+1])), 16)*fsr_mult).toFixed(3)));
9312
- }
9313
- }
9314
- var fft_concat_obj = {
9315
- mode: mode,
9316
- msg_type: msg_type,
9317
- time_id: [
9318
- String(globalDevices[deviceAddr].hour).padStart(2, '0'),
9319
- String(globalDevices[deviceAddr].minute).padStart(2, '0'),
9320
- ].join(':'),
9321
- mac_address: deviceAddr,
9322
- fsr: fsr_text,
9323
- odr: globalDevices[deviceAddr].odr,
9324
- temperature: globalDevices[deviceAddr].temperature,
9325
- total_samples: label,
9326
- fft_confidence : ((Object.keys(globalDevices[deviceAddr].data).length / globalDevices[deviceAddr].expected_packets) * 100).toFixed(2) + '%',
9327
- data: fft_concat
9328
- };
9329
- return fft_concat_obj;
9330
- }
9331
- },
9332
- 'parse_fly': (frame) => {
9333
- let frame_data = {};
9334
- switch(frame[16]){
9335
- case 0:
9336
- frame_data.mode = "Processed";
9337
- break;
9338
- case 1:
9339
- frame_data.mode = "Raw";
9340
- break;
9341
- case 2:
9342
- frame_data.mode = "Processed + Raw on demand";
9343
- break;
9344
- case 3:
9345
- frame_data.mode = "Smart";
9346
- break;
9347
- }
9348
- switch(frame[17]){
9349
- case 6:
9350
- frame_data.odr_1 = 50;
9351
- break;
9352
- case 7:
9353
- frame_data.odr_1 = 100;
9354
- break;
9355
- case 8:
9356
- frame_data.odr_1 = 200;
9357
- break;
9358
- case 9:
9359
- frame_data.odr_1 = 400;
9360
- break;
9361
- case 10:
9362
- frame_data.odr_1 = 800;
9363
- break;
9364
- case 11:
9365
- frame_data.odr_1 = 1600;
9366
- break;
9367
- case 12:
9368
- frame_data.odr_1 = 3200;
9369
- break;
9370
- case 13:
9371
- frame_data.odr_1 = 6400;
9372
- break;
9373
- case 14:
9374
- frame_data.odr_1 = 12800;
9375
- break;
9376
- case 15:
9377
- frame_data.odr_1 = 25600;
9378
- break;
9379
- }
9380
- frame_data.sampling_duration_1 = frame[18]*50 + "ms";
9381
- switch(frame[19]){
9382
- case 0:
9383
- frame_data.filter_status = "Disabled";
9384
- break;
9385
- case 1:
9386
- frame_data.filter_status = "Enabled";
9387
- break;
9388
- }
9389
- switch(frame[20]){
9390
- case 0:
9391
- frame_data.lpf_coeff_1 = 4;
9392
- break;
9393
- case 1:
9394
- frame_data.lpf_coeff_1 = 8;
9395
- break;
9396
- case 2:
9397
- frame_data.lpf_coeff_1 = 16;
9398
- break;
9399
- case 2:
9400
- frame_data.lpf_coeff_1 = 32;
9401
- break;
9402
- case 4:
9403
- frame_data.lpf_coeff_1 = 64;
9404
- break;
9405
- case 5:
9406
- frame_data.lpf_coeff_1 = 128;
9407
- break;
9408
- case 6:
9409
- frame_data.lpf_coeff_1 = 256;
9410
- break;
9411
- case 7:
9412
- frame_data.lpf_coeff_1 = 512;
9413
- break;
9414
- case 8:
9415
- frame_data.lpf_coeff_1 = 1024;
9416
- break;
9417
- case 9:
9418
- frame_data.lpf_coeff_1 = 2048;
9419
- break;
9420
- }
9421
- frame_data.lpf_freq_1 = frame_data.odr_1 / frame_data.lpf_coeff_1;
9422
- switch(frame[21]){
9423
- case 0:
9424
- frame_data.hpf_coeff_1 = 4;
9425
- break;
9426
- case 1:
9427
- frame_data.hpf_coeff_1 = 8;
9428
- break;
9429
- case 2:
9430
- frame_data.hpf_coeff_1 = 16;
9431
- break;
9432
- case 2:
9433
- frame_data.hpf_coeff_1 = 32;
9434
- break;
9435
- case 4:
9436
- frame_data.hpf_coeff_1 = 64;
9437
- break;
9438
- case 5:
9439
- frame_data.hpf_coeff_1 = 128;
9440
- break;
9441
- case 6:
9442
- frame_data.hpf_coeff_1 = 256;
9443
- break;
9444
- case 7:
9445
- frame_data.hpf_coeff_1 = 512;
9446
- break;
9447
- case 8:
9448
- frame_data.hpf_coeff_1 = 1024;
9449
- break;
9450
- case 9:
9451
- frame_data.hpf_coeff_1 = 2048;
9452
- break;
9453
- }
9454
- frame_data.hpf_freq_1 = frame_data.odr_1 / frame_data.hpf_coeff_1;
9455
- switch(frame[22]){
9456
- case 0:
9457
- frame_data.sampling_interval = "5 Minutes";
9458
- frame_data.sampling_interval_number = 5;
9459
- break;
9460
- case 1:
9461
- frame_data.sampling_interval = "10 Minutes";
9462
- frame_data.sampling_interval_number = 10;
9463
- break;
9464
- case 2:
9465
- frame_data.sampling_interval = "15 Minutes";
9466
- frame_data.sampling_interval_number = 15;
9467
- break;
9468
- case 2:
9469
- frame_data.sampling_interval = "20 Minutes";
9470
- frame_data.sampling_interval_number = 20;
9471
- break;
9472
- case 4:
9473
- frame_data.sampling_interval = "30 Minutes";
9474
- frame_data.sampling_interval_number = 30;
9475
- break;
9476
- case 5:
9477
- frame_data.sampling_interval = "60 Minutes";
9478
- frame_data.sampling_interval_number = 60;
9479
- break;
9480
- case 6:
9481
- frame_data.sampling_interval = "120 Minutes";
9482
- frame_data.sampling_interval_number = 120;
9483
- break;
9484
- case 7:
9485
- frame_data.sampling_interval = "180 Minutes";
9486
- frame_data.sampling_interval_number = 180;
9487
- break;
9488
- case 8:
9489
- frame_data.sampling_interval = "1 Minute";
9490
- frame_data.sampling_interval_number = 1;
9491
- break;
9492
- }
9493
- frame_data.on_request_timeout = frame[23] + " Seconds";
9494
- frame_data.deadband = frame[24] + "mg";
9495
-
9496
- switch(frame[25]){
9497
- case 0:
9498
- frame_data.payload_length = "50 Bytes";
9499
- break;
9500
- case 1:
9501
- frame_data.payload_length = "100 Bytes";
9502
- break;
9503
- case 2:
9504
- frame_data.payload_length = "150 Bytes";
9505
- break;
9506
- case 3:
9507
- frame_data.payload_length = "180 Bytes";
9508
- break;
9509
- }
9510
- switch(frame[26]){
9511
- case 0:
9512
- frame_data.fsr_text = "2g";
9513
- break;
9514
- case 1:
9515
- frame_data.fsr_text = "4g";
9516
- break;
9517
- case 2:
9518
- frame_data.fsr_text = "8g";
9519
- break;
9520
- case 3:
9521
- frame_data.fsr_text = "16g";
9522
- break;
9523
- }
9524
- frame_data.rpm_status = frame[27]? 'Enabled': 'Disabled';
9525
- frame_data.auto_raw_interval = frame[32] * frame_data.sampling_interval_number || 'disabled';
9526
- frame_data.auto_raw_interval = typeof frame_data.auto_raw_interval === 'number' ? frame_data.auto_raw_interval+'min' : frame_data.auto_raw_interval;
9527
- frame_data.smart_mode_threshold = frame[34] * 50;
9528
- if(frame[2] > 5){ // for Firmware v6 and above
9529
- frame_data.motion_to_delay = frame[41] * 50;
8569
+ String(frame[32]).padStart(2, '0')
8570
+ ].join(':'),
8571
+ 'Shift_end_4': [
8572
+ String(frame[33]).padStart(2, '0'),
8573
+ String(frame[34]).padStart(2, '0')
8574
+ ].join(':'),
8575
+ 'reset_timeout': frame.slice(35, 37).reduce(msbLsb) + "min",
8576
+ 'counter_reset_mode': reset_mode,
8577
+ 'sampling_interval': rtc_sampling_interval,
8578
+ 'acc_odr': acc_odr,
8579
+ 'hardware_id': frame.slice(40, 43),
8580
+ 'report_rate': frame.slice(43, 47).reduce(msbLsb) + "sec",
8581
+ 'tx_life_counter': frame.slice(47, 51).reduce(msbLsb),
8582
+ 'machine_values': {
8583
+ 'firmware': frame[2],
8584
+ 'accelerometer_threshold': frame[16],
8585
+ 'debouncing_timeout': frame[17],
8586
+ 'accelero_state': frame[18],
8587
+ 'input_1_active_edge': frame[19],
8588
+ 'input_2_active_edge': frame[20],
8589
+ 'input_3_active_edge': frame[21],
8590
+ 'counter_threshold': frame.slice(22, 26),
8591
+ 'trasnmit_on_change_status': frame[26],
8592
+ 'Shift_end_1': frame.slice(27, 29),
8593
+ 'Shift_end_2': frame.slice(29, 31),
8594
+ 'Shift_end_3': frame.slice(31, 33),
8595
+ 'Shift_end_4': frame.slice(33, 35),
8596
+ 'reset_timeout': frame.slice(35, 37),
8597
+ 'counter_reset_mode': frame[37],
8598
+ 'sampling_interval': frame[38],
8599
+ 'acc_odr': frame[39],
8600
+ 'hardware_id': frame.slice(40, 43),
8601
+ 'report_rate': frame.slice(43, 47),
8602
+ 'tx_life_counter': frame.slice(47, 51)
8603
+ }
8604
+ }
8605
+ } else{
9530
8606
  return {
9531
8607
  'firmware': frame[2],
9532
- 'destination_address': toMac(frame.slice(12, 16)),
9533
- 'mode': frame_data.mode,
9534
- 'odr': frame_data.odr_1+'Hz',
9535
- 'sampling_duration': frame_data.sampling_duration_1,
9536
- 'filter_status': frame_data.filter_status,
9537
- 'lpf_coeff': frame_data.lpf_coeff_1,
9538
- 'lpf_freq': frame_data.lpf_freq_1+'Hz',
9539
- 'hpf_coeff': frame_data.hpf_coeff_1,
9540
- 'hpf_freq': frame_data.hpf_freq_1+'Hz',
9541
- 'sampling_interval': frame_data.sampling_interval,
9542
- 'on_request_timeout': frame_data.on_request_timeout,
9543
- 'deadband': frame_data.deadband,
9544
- 'payload_length': frame_data.payload_length,
9545
- 'fsr': frame_data.fsr_text,
9546
- 'rpm_compute_status': frame_data.rpm_status,
9547
- 'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
9548
- 'auto_raw_interval': frame_data.auto_raw_interval,
9549
- 'smart_mode_skip_count': frame[33],
9550
- 'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
9551
- 'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
9552
- 'max_tx_raw_samples': frame.slice(39, 41).reduce(msbLsb),
9553
- 'motion_to_sampling_delay': frame_data.motion_to_delay +'msec',
9554
- 'max_num_of_motion_tx_per_interval': frame[42],
9555
- 'hardware_id': frame.slice(43, 46),
9556
- 'reserved': frame.slice(46, 50),
9557
- 'tx_lifetime_counter': frame.slice(50, 54).reduce(msbLsb),
8608
+ 'report_rate': frame.slice(12, 16).reduce(msbLsb).toString() + "sec.",
8609
+ 'accelerometer_threshold': (frame[16]* 32) + "mg.",
8610
+ 'debouncing_timeout': frame[17].toString() + "msec.",
8611
+ 'accelero_state': frame[18],
8612
+ 'digital_inputs_active_edge': frame.slice(19, 22).reduce(msbLsb),
8613
+ 'counter_threshold': frame.slice(22, 26).reduce(msbLsb),
8614
+ 'trasnmit_on_change_status': frame[26],
9558
8615
  'machine_values': {
9559
8616
  'firmware': frame[2],
9560
- 'destination_address': toMac(frame.slice(12, 16), false),
9561
- 'mode': frame[16],
9562
- 'odr': frame[17],
9563
- 'sampling_duration': frame[18],
9564
- 'filter_status': frame[19],
9565
- 'lpf_coeff': frame[20],
9566
- 'hpf_coeff': frame[21],
9567
- 'sampling_interval': frame[22],
9568
- 'on_request_timeout': frame[23],
9569
- 'deadband': frame[24],
9570
- 'payload_length': frame[25],
9571
- 'fsr': frame[26],
9572
- 'rpm_compute_status': frame[27],
9573
- 'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
9574
- 'auto_raw_interval': frame[32],
9575
- 'smart_mode_skip_count': frame[33],
9576
- 'smart_mode_acc_threshold':frame[34],
9577
- 'uptime_counter': frame.slice(35, 39),
9578
- 'max_tx_raw_samples': frame.slice(39, 41),
9579
- 'motion_to_sampling_delay': frame[41],
9580
- 'max_num_of_motion_tx_per_interval': frame[42],
9581
- 'hardware_id': frame.slice(43, 46),
9582
- 'reserved': frame.slice(46, 50),
9583
- 'tx_lifetime_counter': frame.slice(50, 54)
8617
+ 'report_rate': frame.slice(12, 16),
8618
+ 'accelerometer_threshold': frame[16],
8619
+ 'debouncing_timeout': frame[17],
8620
+ 'accelero_active_state': frame[18],
8621
+ 'digital_inputs_active_edge': frame.slice(19, 22),
8622
+ 'counter_threshold': frame.slice(22, 26),
8623
+ 'trasnmit_on_change_status': frame[26]
9584
8624
  }
9585
8625
  }
9586
- } else if(frame[2] > 4){ // for Firmware v5 and above
8626
+ }
8627
+ }
8628
+ },
8629
+ '109': {
8630
+ name: 'Wireless Custom Solar Sensor',
8631
+ parse: (d) => {
8632
+ return {
8633
+ illuminance: d.slice(0, 4).reduce(msbLsb),
8634
+ total_solar_radiation: d.slice(4, 6).reduce(msbLsb),
8635
+ ultraviolet_radiation: d.slice(6, 8).reduce(msbLsb)
8636
+ };
8637
+ },
8638
+ 'parse_fly': (frame) => {
8639
+ if(frame[2] > 8){
8640
+ let reset_mode = "Disabled";
8641
+ switch(frame[37]){
8642
+ case 0:
8643
+ reset_mode = "Disabled";
8644
+ break;
8645
+ case 1:
8646
+ reset_mode = "Shift Ends";
8647
+ break;
8648
+ case 2:
8649
+ reset_mode = "Timeout";
8650
+ break;
8651
+ }
8652
+ let acc_odr = "10Hz";
8653
+ switch(frame[39]){
8654
+ case 0:
8655
+ acc_odr = "10Hz";
8656
+ break;
8657
+ case 1:
8658
+ acc_odr = "20Hz";
8659
+ break;
8660
+ case 2:
8661
+ acc_odr = "50Hz";
8662
+ break;
8663
+ case 3:
8664
+ acc_odr = "100Hz";
8665
+ break;
8666
+ case 4:
8667
+ acc_odr = "200Hz";
8668
+ break;
8669
+ case 5:
8670
+ acc_odr = "400Hz";
8671
+ break;
8672
+ }
8673
+ let rtc_sampling_interval = "5 seconds";
8674
+ switch(frame[38]){
8675
+ case 0:
8676
+ rtc_sampling_interval = "1 minute";
8677
+ break;
8678
+ case 1:
8679
+ rtc_sampling_interval = "5 minutes";
8680
+ break;
8681
+ case 2:
8682
+ rtc_sampling_interval = "15 minutes";
8683
+ break;
8684
+ case 3:
8685
+ rtc_sampling_interval = "30 minutes";
8686
+ break;
8687
+ case 4:
8688
+ rtc_sampling_interval = "1 hour";
8689
+ break;
8690
+ case 5:
8691
+ rtc_sampling_interval = "2 hours";
8692
+ break;
8693
+ case 6:
8694
+ rtc_sampling_interval = "3 hours";
8695
+ break;
8696
+ case 7:
8697
+ rtc_sampling_interval = "6 hours";
8698
+ break;
8699
+ case 8:
8700
+ rtc_sampling_interval = "12 hours";
8701
+ break;
8702
+ case 9:
8703
+ rtc_sampling_interval = "5 seconds";
8704
+ break;
8705
+ case 10:
8706
+ rtc_sampling_interval = "10 seconds";
8707
+ break;
8708
+ case 11:
8709
+ rtc_sampling_interval = "15 seconds";
8710
+ break;
8711
+ case 12:
8712
+ rtc_sampling_interval = "30 seconds";
8713
+ break;
8714
+ }
9587
8715
  return {
9588
8716
  'firmware': frame[2],
9589
- 'destination_address': toMac(frame.slice(12, 16)),
9590
- 'mode': frame_data.mode,
9591
- 'odr': frame_data.odr_1+'Hz',
9592
- 'sampling_duration': frame_data.sampling_duration_1,
9593
- 'filter_status': frame_data.filter_status,
9594
- 'lpf_coeff': frame_data.lpf_coeff_1,
9595
- 'lpf_freq': frame_data.lpf_freq_1+'Hz',
9596
- 'hpf_coeff': frame_data.hpf_coeff_1,
9597
- 'hpf_freq': frame_data.hpf_freq_1+'Hz',
9598
- 'sampling_interval': frame_data.sampling_interval,
9599
- 'on_request_timeout': frame_data.on_request_timeout,
9600
- 'deadband': frame_data.deadband,
9601
- 'payload_length': frame_data.payload_length,
9602
- 'fsr': frame_data.fsr_text,
9603
- 'rpm_compute_status': frame_data.rpm_status,
9604
- 'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
9605
- 'auto_raw_interval': frame_data.auto_raw_interval,
9606
- 'smart_mode_skip_count': frame[33],
9607
- 'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
9608
- 'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
9609
- 'max_tx_raw_samples': frame.slice(39, 41).reduce(msbLsb),
9610
- 'hardware_id': frame.slice(41, 44),
9611
- 'reserved': frame.slice(44, 48),
9612
- 'tx_lifetime_counter': frame.slice(48, 52).reduce(msbLsb),
8717
+ 'accelerometer_threshold': (frame[16]* 32) + "mg",
8718
+ 'debouncing_timeout': frame[17] + "sec",
8719
+ 'accelero_state': frame[18]? "Enabled": "Disabled",
8720
+ 'input_1_active_edge': frame[19]? "Rising": "Falling",
8721
+ 'input_2_active_edge': frame[20]? "Rising": "Falling",
8722
+ 'input_3_active_edge': frame[21]? "Rising": "Falling",
8723
+ 'counter_threshold': frame.slice(22, 26).reduce(msbLsb) + "sec",
8724
+ 'trasnmit_on_change_status': frame[26]? "Enabled": "Disabled",
8725
+ 'Shift_end_1': [
8726
+ String(frame[27]).padStart(2, '0'),
8727
+ String(frame[28]).padStart(2, '0')
8728
+ ].join(':'),
8729
+ 'Shift_end_2': [
8730
+ String(frame[29]).padStart(2, '0'),
8731
+ String(frame[30]).padStart(2, '0')
8732
+ ].join(':'),
8733
+ 'Shift_end_3': [
8734
+ String(frame[31]).padStart(2, '0'),
8735
+ String(frame[32]).padStart(2, '0')
8736
+ ].join(':'),
8737
+ 'Shift_end_4': [
8738
+ String(frame[33]).padStart(2, '0'),
8739
+ String(frame[34]).padStart(2, '0')
8740
+ ].join(':'),
8741
+ 'reset_timeout': frame.slice(35, 37).reduce(msbLsb) + "min",
8742
+ 'counter_reset_mode': reset_mode,
8743
+ 'sampling_interval': rtc_sampling_interval,
8744
+ 'acc_odr': acc_odr,
8745
+ 'hardware_id': frame.slice(40, 43),
8746
+ 'report_rate': frame.slice(43, 47).reduce(msbLsb) + "sec",
8747
+ 'tx_life_counter': frame.slice(47, 51).reduce(msbLsb),
9613
8748
  'machine_values': {
9614
8749
  'firmware': frame[2],
9615
- 'destination_address': toMac(frame.slice(12, 16), false),
9616
- 'mode': frame[16],
9617
- 'odr': frame[17],
9618
- 'sampling_duration': frame[18],
9619
- 'filter_status': frame[19],
9620
- 'lpf_coeff': frame[20],
9621
- 'hpf_coeff': frame[21],
9622
- 'sampling_interval': frame[22],
9623
- 'on_request_timeout': frame[23],
9624
- 'deadband': frame[24],
9625
- 'payload_length': frame[25],
9626
- 'fsr': frame[26],
9627
- 'rpm_compute_status': frame[27],
9628
- 'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
9629
- 'auto_raw_interval': frame[32],
9630
- 'smart_mode_skip_count': frame[33],
9631
- 'smart_mode_acc_threshold':frame[34],
9632
- 'uptime_counter': frame.slice(35, 39),
9633
- 'max_tx_raw_samples': frame.slice(39, 41),
9634
- 'hardware_id': frame.slice(41, 44),
9635
- 'reserved': frame.slice(44, 48),
9636
- 'tx_lifetime_counter': frame.slice(48, 52)
8750
+ 'accelerometer_threshold': frame[16],
8751
+ 'debouncing_timeout': frame[17],
8752
+ 'accelero_state': frame[18],
8753
+ 'input_1_active_edge': frame[19],
8754
+ 'input_2_active_edge': frame[20],
8755
+ 'input_3_active_edge': frame[21],
8756
+ 'counter_threshold': frame.slice(22, 26),
8757
+ 'trasnmit_on_change_status': frame[26],
8758
+ 'Shift_end_1': frame.slice(27, 29),
8759
+ 'Shift_end_2': frame.slice(29, 31),
8760
+ 'Shift_end_3': frame.slice(31, 33),
8761
+ 'Shift_end_4': frame.slice(33, 35),
8762
+ 'reset_timeout': frame.slice(35, 37),
8763
+ 'counter_reset_mode': frame[37],
8764
+ 'sampling_interval': frame[38],
8765
+ 'acc_odr': frame[39],
8766
+ 'hardware_id': frame.slice(40, 43),
8767
+ 'report_rate': frame.slice(43, 47),
8768
+ 'tx_life_counter': frame.slice(47, 51)
9637
8769
  }
9638
8770
  }
9639
- }else{
8771
+ } else{
9640
8772
  return {
9641
8773
  'firmware': frame[2],
9642
- 'destination_address': toMac(frame.slice(12, 16)),
9643
- 'mode': frame_data.mode,
9644
- 'odr': frame_data.odr_1+'Hz',
9645
- 'sampling_duration': frame_data.sampling_duration_1,
9646
- 'filter_status': frame_data.filter_status,
9647
- 'lpf_coeff': frame_data.lpf_coeff_1,
9648
- 'lpf_freq': frame_data.lpf_freq_1+'Hz',
9649
- 'hpf_coeff': frame_data.hpf_coeff_1,
9650
- 'hpf_freq': frame_data.hpf_freq_1+'Hz',
9651
- 'sampling_interval': frame_data.sampling_interval,
9652
- 'on_request_timeout': frame_data.on_request_timeout,
9653
- 'deadband': frame_data.deadband,
9654
- 'payload_length': frame_data.payload_length,
9655
- 'fsr': frame_data.fsr_text,
9656
- 'rpm_compute_status': frame_data.rpm_status,
9657
- 'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
9658
- 'auto_raw_interval': frame_data.auto_raw_interval,
9659
- 'smart_mode_skip_count': frame[33],
9660
- 'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
9661
- 'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
9662
- 'hardware_id': frame.slice(39, 42),
9663
- 'reserved': frame.slice(42, 46),
9664
- 'tx_lifetime_counter': frame.slice(46, 50).reduce(msbLsb),
8774
+ 'report_rate': frame.slice(12, 16).reduce(msbLsb).toString() + "sec.",
8775
+ 'accelerometer_threshold': (frame[16]* 32).toString() + "mg.",
8776
+ 'debouncing_timeout': frame[17].toString() + "sec.",
8777
+ 'accelero_state': frame[18],
8778
+ 'digital_inputs_active_edge': frame.slice(19, 22),
8779
+ 'counter_threshold': frame.slice(22, 26).reduce(msbLsb).toString() + "sec.",
8780
+ 'trasnmit_on_change_status': frame[26],
9665
8781
  'machine_values': {
9666
8782
  'firmware': frame[2],
9667
- 'destination_address': toMac(frame.slice(12, 16), false),
9668
- 'mode': frame[16],
9669
- 'odr': frame[17],
9670
- 'sampling_duration': frame[18],
9671
- 'filter_status': frame[19],
9672
- 'lpf_coeff': frame[20],
9673
- 'hpf_coeff': frame[21],
9674
- 'sampling_interval': frame[22],
9675
- 'on_request_timeout': frame[23],
9676
- 'deadband': frame[24],
9677
- 'payload_length': frame[25],
9678
- 'fsr': frame[26],
9679
- 'rpm_compute_status': frame[27],
9680
- 'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
9681
- 'auto_raw_interval': frame[32],
9682
- 'smart_mode_skip_count': frame[33],
9683
- 'smart_mode_acc_threshold':frame[34],
9684
- 'uptime_counter': frame.slice(35, 39),
9685
- 'hardware_id': frame.slice(39, 42),
9686
- 'reserved': frame.slice(42, 46),
9687
- 'tx_lifetime_counter': frame.slice(46, 50)
8783
+ 'report_rate': frame.slice(12, 16),
8784
+ 'accelerometer_threshold': frame[16],
8785
+ 'debouncing_timeout': frame[17],
8786
+ 'accelero_active_state': frame[18],
8787
+ 'digital_inputs_active_edge': frame.slice(19, 22),
8788
+ 'counter_threshold': frame.slice(22, 26),
8789
+ 'trasnmit_on_change_status': frame[26]
9688
8790
  }
9689
8791
  }
9690
8792
  }
9691
8793
  }
9692
8794
  },
8795
+ '109': {
8796
+ name: 'Wireless Custom Solar Sensor',
8797
+ parse: (d) => {
8798
+ return {
8799
+ illuminance: d.slice(0, 4).reduce(msbLsb),
8800
+ total_solar_radiation: d.slice(4, 6).reduce(msbLsb),
8801
+ ultraviolet_radiation: d.slice(6, 8).reduce(msbLsb)
8802
+ };
8803
+ },
8804
+ 'parse_fly': (frame) => {
8805
+ return {
8806
+ 'firmware': frame[2],
8807
+ 'hardware_id': frame.slice(12, 15),
8808
+ 'sample_rate': frame.slice(15, 19).reduce(msbLsb) + " Sec.",
8809
+ 'tx_life_counter': frame.slice(19, 23).reduce(msbLsb),
8810
+ 'machine_values': {
8811
+ 'firmware': frame[2],
8812
+ 'hardware_id': frame.slice(12, 15),
8813
+ 'sample_rate': frame.slice(15, 19).reduce(msbLsb),
8814
+ 'tx_life_counter': frame.slice(19, 23).reduce(msbLsb)
8815
+ }
8816
+ }
8817
+ }
8818
+ },
9693
8819
  '117': {
9694
8820
  name: 'Custom Vibration Sensor PPV',
9695
8821
  parse: (payload, parsed, mac) => {
@@ -9938,21 +9064,21 @@ function sensor_types(parent){
9938
9064
  '118': {
9939
9065
  name: 'Dual Pressure and Temperature Sensor',
9940
9066
  parse: (payload, parsed, mac) => {
9941
- let res = {};
9067
+ let res = {};
9942
9068
 
9943
9069
  res.pressure_s1 = signInt(payload.slice(8, 12).reduce(msbLsb),32)/100;
9944
9070
  res.temperature_s1 = signInt(payload.slice(12, 14).reduce(msbLsb),16)/100;
9945
- if((payload[7] & 2)){
9946
- res.error_s1 = 'Error: Sensor Probe 1 communication error';
9071
+ if((payload[7] & 2)){
9072
+ res.error_s1 = 'Error: Sensor Probe 1 communication error';
9947
9073
  }
9948
9074
 
9949
9075
  res.pressure_s2 = signInt(payload.slice(14, 18).reduce(msbLsb),32)/100;
9950
9076
  res.temperature_s2 = signInt(payload.slice(18, 20).reduce(msbLsb),16)/100;
9951
- if((payload[7] & 4)){
9077
+ if((payload[7] & 4)){
9952
9078
  res.error_s2 = 'Error: Sensor Probe 2 communication error';
9953
9079
  }
9954
- return res;
9955
- },
9080
+ return res;
9081
+ },
9956
9082
  'parse_fly': (frame) => {
9957
9083
  let psi_1;
9958
9084
  let psi_2;
@@ -12421,72 +11547,6 @@ function sensor_types(parent){
12421
11547
  };
12422
11548
  }
12423
11549
  },
12424
- '536': {
12425
- name: 'Wireless Oxygen Flow Meter',
12426
- parse: (payload, parsed) => {
12427
- return {
12428
- error_status: payload[0],
12429
- s1_oxygen_temp: payload.slice(1, 3).reduce(msbLsb)/100,
12430
- s2_oxygen_temp: payload.slice(3, 5).reduce(msbLsb)/100,
12431
- s3_oxygen_temp: payload.slice(5, 7).reduce(msbLsb)/100,
12432
- s4_oxygen_temp: payload.slice(7, 9).reduce(msbLsb)/100,
12433
- s1_saturation_percent: payload.slice(9, 13).reduce(msbLsb)/100,
12434
- s2_saturation_percent: payload.slice(13, 17).reduce(msbLsb)/100,
12435
- s3_saturation_percent: payload.slice(17, 21).reduce(msbLsb)/100,
12436
- s4_saturation_percent: payload.slice(21, 25).reduce(msbLsb)/100,
12437
- s1_oxigen_ppm: payload.slice(25, 29).reduce(msbLsb)/100,
12438
- s2_oxigen_ppm: payload.slice(29, 33).reduce(msbLsb)/100,
12439
- s3_oxigen_ppm: payload.slice(33, 37).reduce(msbLsb)/100,
12440
- s4_oxigen_ppm: payload.slice(37, 41).reduce(msbLsb)/100,
12441
- s1_oxigen_mg_l: payload.slice(41, 45).reduce(msbLsb)/100,
12442
- s2_oxigen_mg_l: payload.slice(45, 49).reduce(msbLsb)/100,
12443
- s3_oxigen_mg_l: payload.slice(49, 53).reduce(msbLsb)/100,
12444
- s4_oxigen_mg_l: payload.slice(53, 57).reduce(msbLsb)/100,
12445
- s1_flow_rate: payload.slice(57, 61).reduce(msbLsb)/100,
12446
- s2_flow_rate: payload.slice(61, 65).reduce(msbLsb)/100,
12447
- s3_flow_rate: payload.slice(65, 69).reduce(msbLsb)/100,
12448
- s4_flow_rate: payload.slice(69, 73).reduce(msbLsb)/100,
12449
- s1_solenoid_status: payload[73],
12450
- s2_solenoid_status: payload[74],
12451
- s3_solenoid_status: payload[75],
12452
- s4_solenoid_status: payload[76]
12453
- }
12454
- },
12455
- 'parse_fly': (frame) => {
12456
- return {
12457
- 'firmware': frame[2],
12458
- 'oxygen_bootup_time': frame[12] + 'sec',
12459
- 'flow_bootup_time': frame[13]+ 'sec',
12460
- 's1_oxygen_addr': frame[14],
12461
- 's2_oxygen_addr': frame[15],
12462
- 's3_oxygen_addr': frame[16],
12463
- 's4_oxygen_addr': frame[17],
12464
- 's1_flow_addr': frame[18],
12465
- 's2_flow_addr': frame[19],
12466
- 's3_flow_addr': frame[20],
12467
- 's4_flow_addr': frame[21],
12468
- 'hardware_id': frame.slice(22, 25),
12469
- 'report_rate': frame.slice(25, 29).reduce(msbLsb) + 'sec',
12470
- 'tx_life_counter': frame.slice(29, 33).reduce(msbLsb),
12471
- 'machine_values': {
12472
- 'firmware': frame[2],
12473
- 'oxygen_bootup_time': frame[12],
12474
- 'flow_bootup_time': frame[13],
12475
- 's1_oxygen_addr': frame[14],
12476
- 's2_oxygen_addr': frame[15],
12477
- 's3_oxygen_addr': frame[16],
12478
- 's4_oxygen_addr': frame[17],
12479
- 's1_flow_addr': frame[18],
12480
- 's2_flow_addr': frame[19],
12481
- 's3_flow_addr': frame[20],
12482
- 's4_flow_addr': frame[21],
12483
- 'hardware_id': frame.slice(22, 25),
12484
- 'report_rate': frame.slice(25, 29),
12485
- 'tx_life_counter': frame.slice(29, 33)
12486
- }
12487
- }
12488
- }
12489
- },
12490
11550
  '537': {
12491
11551
  name: 'Type 537 - Custom Standalone Smart Vibration Sensor',
12492
11552
  parse: (payload, parsed, mac) => {
@@ -14318,22 +13378,22 @@ function int2Bytes(i, l){
14318
13378
  return bytes;
14319
13379
  }
14320
13380
  function msbLsb_to_SignedInt(value, addition) {
14321
- const bigValue = BigInt(value);
14322
- const bigAddition = BigInt(addition);
13381
+ const bigValue = BigInt(value);
13382
+ const bigAddition = BigInt(addition);
14323
13383
 
14324
- let result = (bigValue << 8n) + bigAddition;
13384
+ let result = (bigValue << 8n) + bigAddition;
14325
13385
 
14326
- // Always return the result as an unsigned 64-bit BigInt.
14327
- return BigInt.asIntN(64, result);
13386
+ // Always return the result as an unsigned 64-bit BigInt.
13387
+ return BigInt.asIntN(64, result);
14328
13388
  };
14329
13389
  function msbLsb_to_UnsignedInt(value, addition) {
14330
- const bigValue = BigInt(value);
14331
- const bigAddition = BigInt(addition);
13390
+ const bigValue = BigInt(value);
13391
+ const bigAddition = BigInt(addition);
14332
13392
 
14333
- let result = (bigValue << 8n) + bigAddition;
13393
+ let result = (bigValue << 8n) + bigAddition;
14334
13394
 
14335
- // Always return the result as a signed 64-bit BigInt.
14336
- return BigInt.asUintN(64, result);
13395
+ // Always return the result as a signed 64-bit BigInt.
13396
+ return BigInt.asUintN(64, result);
14337
13397
  };
14338
13398
  // TODO implement this function in future for decimal formatting on BigInt values
14339
13399
  // Untested. Requires multiplication by scale factor to account for decimal value loss before passing in. Might handle that in this function as well.