@ncd-io/node-red-enterprise-sensors 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -141,7 +141,7 @@ module.exports = class WirelessSensor{
141
141
  }
142
142
  }
143
143
  // #OTF
144
- var otf_devices = [23,26,32,33,39,44,45,48,52,53,58,74,76,78,79,80,81,82,84,88,89,90,91,101,102,105,106,107,108,110,111,112,114,180,181,202,519,520,521,531,535,537,538,539,540,1010,1011];
144
+ var otf_devices = [23,26,32,33,39,44,45,48,52,53,58,74,76,78,79,80,81,82,84,88,89,90,91,97,98,101,102,105,106,107,108,110,111,112,114,118,180,181,202,519,520,521,531,535,537,538,539,540,1010,1011];
145
145
  var device_type = msbLsb(frame.data[6], frame.data[7]);
146
146
  // var device_type = frame.data[7];
147
147
 
@@ -150,6 +150,9 @@ module.exports = class WirelessSensor{
150
150
  var broadcast_otf_devices = [101,102,202];
151
151
  mode = "FLY";
152
152
  }
153
+ if(frame.data[9] == 85 && frame.data[10] == 80 && frame.data[11] == 84 && frame.data[12] == 72 && frame.data[13] == 87 && frame.data[14] == 82 && frame.data[15] == 78) {
154
+ mode = "UPTHWRN";
155
+ }
153
156
  }
154
157
  if(mode == 'ACK'){
155
158
  data.firmware_version = frame.data[5];
@@ -187,6 +190,7 @@ module.exports = class WirelessSensor{
187
190
  type: data.sensor_type,
188
191
  nodeId: data.nodeId,
189
192
  mode: mode,
193
+ // data: data,
190
194
  lastHeard: data.received
191
195
  };
192
196
 
@@ -197,6 +201,8 @@ module.exports = class WirelessSensor{
197
201
  // If we ever need to add any of the additional information of this packet we will need to rebuild to match
198
202
  frame.data.splice(2,0,frame.data[5],0);
199
203
  this.sensor_pool[frame.mac].reported_config = this.sensor_types[data.sensor_type].parse_fly(frame.data);
204
+ }else if(mode === 'ACK'){
205
+ this.sensor_pool[frame.mac].result = data.result;
200
206
  }
201
207
  var that = this;
202
208
 
@@ -218,7 +224,7 @@ module.exports = class WirelessSensor{
218
224
  }).catch(console.log);
219
225
  }
220
226
  }
221
- if(mode != 'FLY'){
227
+ if(mode != 'FLY' && mode !='UPTHWRN'){
222
228
  var send_events = function(){
223
229
  that._emitter.emit(type, data);
224
230
  that._emitter.emit(type+'-'+data.sensor_type, data);
@@ -251,9 +257,10 @@ module.exports = class WirelessSensor{
251
257
  nodeId: payload[0],
252
258
  counter: payload[1],
253
259
  sensor_type: msbLsb(payload[2], payload[3]),
260
+ result: payload[5],
254
261
  data: payload.slice(6)
255
262
  };
256
- }
263
+ };
257
264
  config_error(payload){
258
265
  var errors = [
259
266
  'Unknown',
@@ -293,7 +300,7 @@ module.exports = class WirelessSensor{
293
300
  };
294
301
 
295
302
  // #OTF
296
- var otf_devices = [23,26,32,33,39,44,45,48,52,53,58,74,76,78,79,80,81,82,84,88,89,90,91,101,102,105,106,107,108,110,111,112,114,180,181,202,519,520,521,531,535,537,538,539,540,1010,1011];
303
+ var otf_devices = [23,26,32,33,39,44,45,48,52,53,58,74,76,78,79,80,81,82,84,88,89,90,91,97,98,101,102,105,106,107,108,110,111,112,114,118,180,181,202,519,520,521,531,535,537,538,539,540,1010,1011];
297
304
  if(otf_devices.includes(parsed.sensor_type)){
298
305
  // If the message says FLY and there is not FLY timer in progress.
299
306
  if(payload[8] == 70 && payload[9] == 76 && payload[10] == 89) {
@@ -301,6 +308,10 @@ module.exports = class WirelessSensor{
301
308
  return parsed;
302
309
  }
303
310
  }
311
+ if(frame.data[9] == 85 && frame.data[10] == 80 && frame.data[11] == 84 && frame.data[12] == 72 && frame.data[13] == 87 && frame.data[14] == 82 && frame.data[15] == 78) {
312
+ parsed.payload = "Upthwrn command";
313
+ return parsed;
314
+ }
304
315
 
305
316
  // Sensor type 515 has a unique OTF that is indicated by a reserve byte value with MSb of 1
306
317
  if(parsed.sensor_type == 515){
@@ -711,7 +722,7 @@ module.exports = class WirelessSensor{
711
722
  data: payload.slice(8)
712
723
  };
713
724
  // #OTF
714
- }else if(parsed.sensor_type == 33 || parsed.sensor_type == 80 || parsed.sensor_type == 81 || parsed.sensor_type == 82 || parsed.sensor_type == 84 || parsed.sensor_type == 110 || parsed.sensor_type == 111 || parsed.sensor_type == 112 || parsed.sensor_type == 114 || parsed.sensor_type == 180 || parsed.sensor_type == 181 || parsed.sensor_type == 202 || parsed.sensor_type == 515 || parsed.sensor_type == 519 || parsed.sensor_type == 531 || parsed.sensor_type == 537 || parsed.sensor_type == 538){
725
+ }else if(parsed.sensor_type == 33 || parsed.sensor_type == 80 || parsed.sensor_type == 81 || parsed.sensor_type == 82 || parsed.sensor_type == 84 || parsed.sensor_type == 97 || parsed.sensor_type == 98 || parsed.sensor_type == 110 || parsed.sensor_type == 111 || parsed.sensor_type == 112 || parsed.sensor_type == 114 || parsed.sensor_type == 180 || parsed.sensor_type == 181 || parsed.sensor_type == 202 || parsed.sensor_type == 515 || parsed.sensor_type == 519 || parsed.sensor_type == 531 || parsed.sensor_type == 537 || parsed.sensor_type == 538){
715
726
  parsed.sensor_data = this.sensor_types[parsed.sensor_type].parse(payload, parsed, frame.mac);
716
727
  if(!parsed.sensor_data){
717
728
  return;
@@ -1150,9 +1161,15 @@ module.exports = class WirelessSensor{
1150
1161
  console.log(packet);
1151
1162
  return this.config_send(sensor_mac, packet);
1152
1163
  }
1153
- config_set_acceleration_interrupt_threshold_84(sensor_mac, value){
1154
- console.log('config_set_acceleration_interrupt_threshold_84');
1155
- var packet = [244, 79, 0, 0, 0, 60, value];
1164
+ config_set_acceleration_interrupt_threshold_p1_84(sensor_mac, value){
1165
+ console.log('config_set_acceleration_interrupt_threshold_p1_84');
1166
+ var packet = [244, 79, 0, 0, 0, 60, 1, value];
1167
+ console.log(packet);
1168
+ return this.config_send(sensor_mac, packet);
1169
+ }
1170
+ config_set_acceleration_interrupt_threshold_p2_84(sensor_mac, value){
1171
+ console.log('config_set_acceleration_interrupt_threshold_p2_84');
1172
+ var packet = [244, 79, 0, 0, 0, 60, 2, value];
1156
1173
  console.log(packet);
1157
1174
  return this.config_send(sensor_mac, packet);
1158
1175
  }
@@ -1260,12 +1277,6 @@ module.exports = class WirelessSensor{
1260
1277
  console.log(packet);
1261
1278
  return this.config_send(sensor_mac, packet);
1262
1279
  }
1263
- config_set_qos_108(sensor_mac, value){
1264
- console.log('config_set_qos_108');
1265
- var packet = [247, 52, 0, 0, 0, value];
1266
- console.log(packet);
1267
- return this.config_send(sensor_mac, packet);
1268
- }
1269
1280
  config_set_deactivate_activate_accelero_108(sensor_mac, value){
1270
1281
  console.log('config_set_deactivate_activate_accelero_108');
1271
1282
  var packet = [244, 37, 0, 0, 0, value];
@@ -1399,6 +1410,36 @@ module.exports = class WirelessSensor{
1399
1410
  console.log(packet);
1400
1411
  return this.config_send(sensor_mac, packet);
1401
1412
  }
1413
+ config_set_filter_thermocouple(sensor_mac, value){
1414
+ console.log('config_set_filter_thermocouple');
1415
+ let packet = [244, 85, 0, 0, 23, value];
1416
+ console.log(packet);
1417
+ return this.config_send(sensor_mac, packet);
1418
+ }
1419
+ config_set_cold_junction_thermocouple(sensor_mac, value){
1420
+ console.log('config_set_cold_junction_thermocouple');
1421
+ let packet = [244, 87, 0, 0, 23, value];
1422
+ console.log(packet);
1423
+ return this.config_send(sensor_mac, packet);
1424
+ }
1425
+ config_set_sample_resolution_thermocouple(sensor_mac, value){
1426
+ console.log('config_set_sample_resolution_thermocouple');
1427
+ let packet = [244, 89, 0, 0, 23, value];
1428
+ console.log(packet);
1429
+ return this.config_send(sensor_mac, packet);
1430
+ }
1431
+ config_set_number_of_samples_thermocouple(sensor_mac, value){
1432
+ console.log('config_set_number_of_samples_thermocouple');
1433
+ let packet = [244, 91, 0, 0, 23, value];
1434
+ console.log(packet);
1435
+ return this.config_send(sensor_mac, packet);
1436
+ }
1437
+ config_set_measurement_type_thermocouple(sensor_mac, value){
1438
+ console.log('config_set_number_of_samples_thermocouple');
1439
+ let packet = [244, 95, 0, 0, 23, value];
1440
+ console.log(packet);
1441
+ return this.config_send(sensor_mac, packet);
1442
+ }
1402
1443
  config_set_debounce_time_2(sensor_mac, value){
1403
1444
  console.log('config_set_debounce_time_2');
1404
1445
  var packet = [244, 66, 0, 0, 2, value];
@@ -1503,7 +1544,7 @@ module.exports = class WirelessSensor{
1503
1544
  }
1504
1545
  config_set_auto_raw_interval_110(sensor_mac, value){
1505
1546
  console.log('config_set_raw_interval_110');
1506
- var packet = [244, 79, 0, 0, 80, 76, value];
1547
+ var packet = [244, 79, 0, 0, 80, 70, value];
1507
1548
  console.log(packet);
1508
1549
  return this.config_send(sensor_mac, packet);
1509
1550
  }
@@ -1515,9 +1556,9 @@ module.exports = class WirelessSensor{
1515
1556
  console.log(packet);
1516
1557
  return this.config_send(sensor_mac, packet);
1517
1558
  }
1518
- config_set_clear_probe_uptimers_110(sensor_mac, value){
1559
+ config_set_clear_probe_uptimers_110(sensor_mac){
1519
1560
  console.log('config_set_clear_probe_uptimers_110');
1520
- var packet = [244, 79, 0, 0, 80, value];
1561
+ var packet = [244, 79, 0, 0, 80, 75];
1521
1562
  console.log(packet);
1522
1563
  return this.config_send(sensor_mac, packet);
1523
1564
  }
@@ -1529,9 +1570,13 @@ module.exports = class WirelessSensor{
1529
1570
  }
1530
1571
  config_set_smart_threshold_110(sensor_mac, value){
1531
1572
  console.log('config_set_smart_threshold_110');
1532
- var packet = [244, 79, 0, 0, 101];
1533
- let value_th = int2Bytes((value), 2);
1534
- packet.push(...value_th);
1573
+ var packet = [244, 79, 0, 0, 101, 78, 1, value];
1574
+ console.log(packet);
1575
+ return this.config_send(sensor_mac, packet);
1576
+ }
1577
+ config_set_smart_threshold_p2_110(sensor_mac, value){
1578
+ console.log('config_set_smart_threshold_p2_110');
1579
+ var packet = [244, 79, 0, 0, 101, 78, 2, value];
1535
1580
  console.log(packet);
1536
1581
  return this.config_send(sensor_mac, packet);
1537
1582
  }
@@ -1706,6 +1751,72 @@ module.exports = class WirelessSensor{
1706
1751
  console.log(packet);
1707
1752
  return this.config_send(sensor_mac, packet);
1708
1753
  }
1754
+ config_set_pressure_sensor_fs_ch1_118(sensor_mac, value){
1755
+ console.log('config_set_pressure_sensor_fs_ch1_118');
1756
+ var packet = [244, 64, 0, 0, 26, value];
1757
+ console.log(packet);
1758
+ return this.config_send(sensor_mac, packet);
1759
+ }
1760
+ config_set_pressure_sensor_fs_ch2_118(sensor_mac, value){
1761
+ console.log('config_set_pressure_sensor_fs_ch2_118');
1762
+ var packet = [244, 64, 0, 0, 118, value];
1763
+ console.log(packet);
1764
+ return this.config_send(sensor_mac, packet);
1765
+ }
1766
+ config_set_auto_check_interval_118(sensor_mac, value){
1767
+ console.log('config_set_auto_check_interval_118');
1768
+ var packet = [244, 66, 0, 0, 26];
1769
+ let value_ = int2Bytes((value), 2);
1770
+ packet.push(...value_);
1771
+ console.log(packet);
1772
+ return this.config_send(sensor_mac, packet);
1773
+ }
1774
+ config_set_press_auto_check_percent_118(sensor_mac, value){
1775
+ console.log('config_set_press_auto_check_percent_118');
1776
+ var packet = [244, 68, 0, 0, 26, value];
1777
+ console.log(packet);
1778
+ return this.config_send(sensor_mac, packet);
1779
+ }
1780
+ config_set_temp_auto_check_percent_118(sensor_mac, value){
1781
+ console.log('config_set_temp_auto_check_percent_118');
1782
+ var packet = [244, 70, 0, 0, 26, value];
1783
+ console.log(packet);
1784
+ return this.config_send(sensor_mac, packet);
1785
+ }
1786
+ config_set_raw_length_97(sensor_mac, value){
1787
+ console.log('config_set_raw_length_97');
1788
+ var packet = [244, 67, 0, 0, 0, value];
1789
+ console.log(packet);
1790
+ return this.config_send(sensor_mac, packet);
1791
+ }
1792
+ config_set_raw_timeout_97(sensor_mac, value){
1793
+ console.log('config_set_raw_timeout_97');
1794
+ var packet = [244, 71, 0, 0, 0, value];
1795
+ console.log(packet);
1796
+ return this.config_send(sensor_mac, packet);
1797
+ }
1798
+ config_set_fly_rate_97(sensor_mac, value){
1799
+ console.log('config_set_fly_rate_97');
1800
+ var packet = [244, 73, 0, 0, 0];
1801
+ let value_ = int2Bytes((value), 2);
1802
+ packet.push(...value_);
1803
+ console.log(packet);
1804
+ return this.config_send(sensor_mac, packet);
1805
+ }
1806
+ config_set_boot_up_time_97(sensor_mac, value){
1807
+ console.log('config_set_boot_up_time_97');
1808
+ var packet = [244, 51, 0, 0, 0];
1809
+ let value_ = int2Bytes((value), 2);
1810
+ packet.push(...value_);
1811
+ console.log(packet);
1812
+ return this.config_send(sensor_mac, packet);
1813
+ }
1814
+ config_set_mode_97(sensor_mac, value){
1815
+ console.log('config_set_mode_97');
1816
+ var packet = [244, 83, 0, 0, 0, value]
1817
+ console.log(packet);
1818
+ return this.config_send(sensor_mac, packet);
1819
+ }
1709
1820
  config_get_delay(sensor_mac){
1710
1821
  return new Promise((fulfill, reject) => {
1711
1822
  this.config_send(sensor_mac, [247, 21, 0, 0, 0]).then((res) => {
@@ -1928,6 +2039,7 @@ module.exports = class WirelessSensor{
1928
2039
  function pass(packet){
1929
2040
  clearTimeout(tout);
1930
2041
  that._emitter.removeListener('config_error-'+sensor_mac, fail);
2042
+ packet.sent = data;
1931
2043
  fulfill(packet);
1932
2044
  f();
1933
2045
  };
@@ -1977,8 +2089,8 @@ module.exports = class WirelessSensor{
1977
2089
  }
1978
2090
  // var odr;
1979
2091
  var odr = payload[8];
1980
- var device_temp = msbLsb(payload[11], payload[12])/100;
1981
- var probe_temp = msbLsb(payload[13], payload[14])/100;
2092
+ var device_temp = signInt((msbLsb(payload[11], payload[12])), 16)/100;
2093
+ var probe_temp = signInt((msbLsb(payload[13], payload[14])), 16)/100;
1982
2094
 
1983
2095
  switch(odr){
1984
2096
  case 6:
@@ -2026,7 +2138,8 @@ module.exports = class WirelessSensor{
2026
2138
  var odr = payload[9];
2027
2139
  var en_axis = payload[10] & 7;
2028
2140
  var fsr = payload[10] >> 5;
2029
- var device_temp = msbLsb(payload[13], payload[14])/100;
2141
+
2142
+ var device_temp = signInt((msbLsb(payload[13], payload[14])), 16)/100;
2030
2143
  switch(odr){
2031
2144
  case 0:
2032
2145
  odr = 4000;
@@ -2076,7 +2189,7 @@ module.exports = class WirelessSensor{
2076
2189
  device_temp: device_temp,
2077
2190
  }
2078
2191
  if(firmware > 0){
2079
- var probe_temp = msbLsb(payload[15], payload[16])/100;
2192
+ var probe_temp = signInt((msbLsb(payload[15], payload[16])), 16)/100;
2080
2193
  globalDevices[deviceAddr].probe_temp = probe_temp;
2081
2194
  }
2082
2195
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
@@ -3113,20 +3226,78 @@ function sensor_types(parent){
3113
3226
  }
3114
3227
  },
3115
3228
  '74': {
3116
- name: 'Wireless Temp Humidity Pressure Air quality Sensor',
3117
- parse: (d) => {
3118
- return {
3119
- temperature: signInt(d.slice(0, 2).reduce(msbLsb), 16) / 100,
3120
- pressure: d.slice(2, 6).reduce(msbLsb) / 100,
3121
- humidity: d.slice(6, 10).reduce(msbLsb) / 1000,
3122
- resistance: d.slice(10, 14).reduce(msbLsb),
3123
- iaq: d.slice(14, 16).reduce(msbLsb),
3124
- co2_eqv: d.slice(16, 18).reduce(msbLsb),
3125
- breath_voc: d.slice(18, 22).reduce(msbLsb)/ 100,
3126
- static_iaq: (d.slice(22, 26).reverse()).reduce(msbLsb)/ 100,
3127
- // TODO Check if the iaq_accuracy should still be d[27]
3128
- iaq_accuracy: d[26]
3129
- };
3229
+ name: 'Wireless Temp Humidity Pressure Air quality Sensor V2',
3230
+ parse: (d, parsed) => {
3231
+ if(parsed[1] > 1){ // Firmware version
3232
+ return {
3233
+ temperature: signInt(d.slice(0, 2).reduce(msbLsb), 16) / 100,
3234
+ pressure: d.slice(2, 6).reduce(msbLsb) / 100,
3235
+ humidity: d.slice(6, 10).reduce(msbLsb) / 1000,
3236
+ resistance: d.slice(10, 14).reduce(msbLsb),
3237
+ iaq: d.slice(14, 16).reduce(msbLsb),
3238
+ co2_eqv: d.slice(16, 18).reduce(msbLsb),
3239
+ breath_voc: d.slice(18, 22).reduce(msbLsb) / 100,
3240
+ static_iaq: d.slice(22, 26).reduce(msbLsb) / 100,
3241
+ iaq_accuracy: d[26]
3242
+ };
3243
+ }
3244
+ else{
3245
+ return {
3246
+ temperature: signInt(d.slice(0, 2).reduce(msbLsb), 16) / 100,
3247
+ pressure: d.slice(2, 6).reduce(msbLsb) / 100,
3248
+ humidity: d.slice(6, 10).reduce(msbLsb) / 1000,
3249
+ resistance: d.slice(10, 14).reduce(msbLsb),
3250
+ iaq: d.slice(14, 16).reduce(msbLsb),
3251
+ co2_eqv: d.slice(16, 18).reduce(msbLsb),
3252
+ breath_voc: d.slice(18, 22).reduce(msbLsb)/ 100,
3253
+ static_iaq: (d.slice(22, 26).reverse()).reduce(msbLsb)/ 100,
3254
+ // TODO Check if the iaq_accuracy should still be d[27]
3255
+ iaq_accuracy: d[26]
3256
+ };
3257
+ }
3258
+ },
3259
+ 'parse_fly': (frame) => {
3260
+ if(frame[2] > 2){
3261
+ return {
3262
+ 'firmware': frame[2],
3263
+ 'calibration_days': frame[12] + ' days',
3264
+ 'sensor_update_rate':frame.slice(13, 15).reduce(msbLsb) + ' sec',
3265
+ 'heater_duration': frame.slice(15, 17).reduce(msbLsb) + ' msec',
3266
+ 'heater_temperature': frame.slice(17, 19).reduce(msbLsb) + ' °C',
3267
+ 'hardware_id': frame.slice(19, 22),
3268
+ 'report_rate': frame.slice(22, 26).reduce(msbLsb) + ' sec',
3269
+ 'tx_counter': frame.slice(26, 30).reduce(msbLsb),
3270
+ 'machine_values': {
3271
+ 'firmware': frame[2],
3272
+ 'calibration_days': frame[12],
3273
+ 'sensor_update_rate':frame.slice(13, 15),
3274
+ 'heater_duration': frame.slice(15, 17),
3275
+ 'heater_temperature': frame.slice(17, 19),
3276
+ 'hardware_id': frame.slice(19, 22),
3277
+ 'report_rate': frame.slice(22, 26).reduce(msbLsb),
3278
+ 'tx_counter': frame.slice(26, 30).reduce(msbLsb),
3279
+
3280
+ }
3281
+ };
3282
+ }
3283
+ else{
3284
+ return {
3285
+ 'firmware': frame[2],
3286
+ 'calibration_days': frame[12] + ' days',
3287
+ 'sensor_update_rate':frame.slice(13, 15).reduce(msbLsb) + ' sec',
3288
+ 'hardware_id': frame.slice(15, 18),
3289
+ 'report_rate': frame.slice(18, 22).reduce(msbLsb) + ' sec',
3290
+ 'tx_counter': frame.slice(22, 26).reduce(msbLsb),
3291
+ 'machine_values': {
3292
+ 'firmware': frame[2],
3293
+ 'calibration_days': frame[12],
3294
+ 'sensor_update_rate':frame.slice(13, 15),
3295
+ 'hardware_id': frame.slice(15, 18),
3296
+ 'report_rate': frame.slice(18, 22),
3297
+ 'tx_counter': frame.slice(22, 26),
3298
+ }
3299
+ };
3300
+ }
3130
3301
  }
3131
3302
  },
3132
3303
  '75': {
@@ -6036,167 +6207,36 @@ function sensor_types(parent){
6036
6207
  };
6037
6208
  }
6038
6209
  },
6039
- '101':{
6040
- name: 'Pro Vibration',
6041
- parse: (d, full)=>{
6042
- return{
6043
- mode: full[7] == 1? "raw" : "normal"
6044
- };
6045
- }
6046
- },
6047
- '105': {
6048
- name: '1 Channel Automatic Luber With Ultrasound Vibration Sensor',
6049
- parse: (d) => {
6050
- return {
6051
- raw_adc: d.slice(0, 2).reduce(msbLsb),
6052
- ma: d.slice(2, 4).reduce(msbLsb) / 100,
6053
- db: d.slice(4, 6).reduce(msbLsb) / 100
6054
- };
6055
- }
6056
- },
6057
- '106': {
6058
- name: '2 Channel Automatic Luber With Ultrasound Vibration Sensor',
6059
- parse: (d) => {
6060
- return {
6061
- c1_raw_adc: d.slice(0, 2).reduce(msbLsb),
6062
- c1_ma: d.slice(2, 4).reduce(msbLsb) / 100,
6063
- c1_db: d.slice(4, 6).reduce(msbLsb) / 100,
6064
- c2_raw_adc: d.slice(6, 8).reduce(msbLsb),
6065
- c2_ma: d.slice(8, 10).reduce(msbLsb) / 100,
6066
- c2_db: d.slice(10, 12).reduce(msbLsb) / 100
6067
- };
6068
- }
6069
- },
6070
- '107': {
6071
- name: '16-Bit 4-Channel 4-20mA',
6072
- parse: (d) => {
6073
- var adc1 = signInt(d.slice(0, 2).reduce(msbLsb));
6074
- var adc2 = signInt(d.slice(2, 4).reduce(msbLsb));
6075
- var adc3 = signInt(d.slice(4, 6).reduce(msbLsb));
6076
- var adc4 = signInt(d.slice(6, 8).reduce(msbLsb));
6077
- var ma1 = (signInt(d.slice(8, 10).reduce(msbLsb)))/100.0;
6078
- var ma2 = (signInt(d.slice(10, 12).reduce(msbLsb)))/100.0;
6079
- var ma3 = (signInt(d.slice(12, 14).reduce(msbLsb)))/100.0;
6080
- var ma4 = (signInt(d.slice(14, 16).reduce(msbLsb)))/100.0;
6081
- return {
6082
- adc1: adc1,
6083
- adc2: adc2,
6084
- adc3: adc3,
6085
- adc4: adc4,
6086
- ma1: ma1,
6087
- ma2: ma2,
6088
- ma3: ma3,
6089
- ma4: ma4
6090
- };
6091
- }
6092
- },
6093
- '108': {
6094
- name: 'Machine Uptime Monitoring Sensor',
6095
- parse: (d, payload) => {
6096
- let firmware = payload[1];
6097
- if(payload[7] & 2 != 0){
6098
- console.log('Error found');
6099
- // parsed.data = {error: 'Error found, Acclerometer Probe may be unattached'};
6100
- let error = {error: 'Error found, Acclerometer Probe may be unattached'};
6101
- return error;
6102
- }
6103
- if(firmware > 4){
6104
- let report_type = d[41]? "Shift": "Regular";
6105
- return {
6106
- digital_input_counter: d.slice(0, 4).reduce(msbLsb),
6107
- digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
6108
- ct_input_counter: d.slice(8, 12).reduce(msbLsb),
6109
- ct_input_uptime: d.slice(12, 16).reduce(msbLsb),
6110
- opto_input_counter: d.slice(16, 20).reduce(msbLsb),
6111
- opto_input_uptime: d.slice(20, 24).reduce(msbLsb),
6112
- accelerometer_counter: d.slice(24, 28).reduce(msbLsb),
6113
- accelerometer_uptime: d.slice(28, 32).reduce(msbLsb),
6114
- magnetometer_counter: d.slice(32, 36).reduce(msbLsb),
6115
- magnetometer_uptime: d.slice(36, 40).reduce(msbLsb),
6116
- input_di: d[40] & 1 ? 1 : 0,
6117
- input_ct: d[40] & 2 ? 1 : 0,
6118
- input_opto: d[40] & 4 ? 1 : 0,
6119
- input_acc: d[40] & 8 ? 1 : 0,
6120
- input_mag: d[40] & 16 ? 1 : 0,
6121
- report_type: report_type,
6122
- rtc: [
6123
- String(d[42]).padStart(2, '0'),
6124
- String(d[43]).padStart(2, '0'),
6125
- String(d[44]).padStart(2, '0')
6126
- ].join(':')
6127
- };
6128
- }else{
6129
- return {
6130
- digital_input_counter: d.slice(0, 4).reduce(msbLsb),
6131
- digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
6132
- ct_input_counter: d.slice(8, 12).reduce(msbLsb),
6133
- ct_input_uptime: d.slice(12, 16).reduce(msbLsb),
6134
- opto_input_counter: d.slice(16, 20).reduce(msbLsb),
6135
- opto_input_uptime: d.slice(20, 24).reduce(msbLsb),
6136
- accelerometer_counter: d.slice(24, 28).reduce(msbLsb),
6137
- accelerometer_uptime: d.slice(28, 32).reduce(msbLsb),
6138
- magnetometer_counter: d.slice(32, 36).reduce(msbLsb),
6139
- magnetometer_uptime: d.slice(36, 40).reduce(msbLsb),
6140
- input_di: d[40] & 1 ? 1 : 0,
6141
- input_ct: d[40] & 2 ? 1 : 0,
6142
- input_opto: d[40] & 4 ? 1 : 0,
6143
- input_acc: d[40] & 8 ? 1 : 0,
6144
- input_mag: d[40] & 16 ? 1 : 0
6145
- };
6146
- }
6147
- },
6148
- 'parse_fly': (frame) => {
6149
- return {
6150
- 'firmware': frame[2],
6151
- 'report_rate': frame.slice(12, 16).reduce(msbLsb).toString() + "sec.",
6152
- 'accelerometer_threshold': (frame[16]* 32).toString() + "mg.",
6153
- 'debouncing_timeout': frame[17].toString() + "sec.",
6154
- 'accelero_active_state': frame[18],
6155
- 'digital_inputs_active_edge': frame.slice(19, 22).reduce(msbLsb),
6156
- 'counter_threshold': frame.slice(22, 26).reduce(msbLsb).toString() + "sec.",
6157
- 'trasnmit_on_change_status': frame[26],
6158
- 'machine_values': {
6159
- 'firmware': frame[2],
6160
- 'report_rate': frame.slice(12, 16),
6161
- 'accelerometer_threshold': frame[16],
6162
- 'debouncing_timeout': frame[17],
6163
- 'accelero_active_state': frame[18],
6164
- 'digital_inputs_active_edge': frame.slice(19, 22),
6165
- 'counter_threshold': frame.slice(22, 26),
6166
- 'trasnmit_on_change_status': frame[26]
6167
- }
6168
- }
6169
- }
6170
- },
6171
- '110': {
6172
- name: 'One Channel Vibration Plus v4',
6210
+ '97': {
6211
+ name: 'One channel Dynamic Ultrasound vibration Sensor',
6173
6212
  parse: (payload, parsed, mac) => {
6174
- if(payload[7] >> 1 != 0){
6175
- console.log('Error found');
6176
- parsed.data = {error: 'Error found, Sensor Probe may be unattached'};
6177
- return parsed;
6178
- }
6179
-
6180
- if(payload[8] === 1){
6213
+ if (payload[8] === 1) { // raw
6214
+ var mode = payload[8];
6215
+ var sampling_frequency = payload.slice(9, 13).reduce(msbLsb);
6216
+ var sensor_index = payload[13];
6217
+ var gain_db = payload[14];
6181
6218
  var deviceAddr = mac;
6182
- var firmware = payload[1];
6183
- var hour = payload[11];
6184
- var minute = payload[12];
6185
- var expected_packets = payload[15];
6186
- var current_packet = payload[16];
6187
- var sdata_start = 17;
6219
+ var expected_packets = payload.slice(15, 17).reduce(msbLsb);
6220
+ var current_packet = payload.slice(17, 19).reduce(msbLsb);
6221
+ var sdata_start = 19;
6188
6222
 
6189
6223
  if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
6190
- if(expected_packets != 1){
6191
- // 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
6192
- if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
6193
- console.log('-----');
6194
- console.log('bad packet breakdown deleting stream');
6195
- console.log(current_packet);
6224
+ // if(expected_packets == 1){
6225
+ // this.build_102_data(payload, deviceAddr, hour, minute, sdata_start, current_packet, firmware);
6226
+ // }
6227
+
6228
+ // if a packet is already stored with the same packet ID,
6229
+ // or if packet ID is 1,
6230
+ // or if current packet ID is not one more than last packet ID
6231
+ if(current_packet == 1 && expected_packets != 1) {
6232
+ if(current_packet in globalDevices[deviceAddr].data || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
6233
+ console.log('bad packet breakdown, deleting stream. Current packet:');
6234
+ console.log(current_packet);
6235
+ console.log('Total Expected Packets:');
6196
6236
  console.log(expected_packets);
6197
- console.log(current_packet in globalDevices[deviceAddr].data);
6198
- console.log(current_packet == 1);
6199
- console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
6237
+ // console.log(current_packet in globalDevices[deviceAddr].data && current_packet == 1 && expected_packets != 1);
6238
+ // console.log(current_packet == 1);
6239
+ // console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
6200
6240
  if(this.hasOwnProperty('failure_no')){
6201
6241
  this.failure_no = this.failure_no + 1;
6202
6242
  }
@@ -6207,115 +6247,535 @@ function sensor_types(parent){
6207
6247
  console.log('####falure no');
6208
6248
  console.log(this.failure_no);
6209
6249
  }
6210
- // console.log(globalDevices[deviceAddr].data);
6211
6250
  delete globalDevices[deviceAddr];
6212
6251
  if(current_packet != 1){
6213
6252
  return;
6214
6253
  } else{
6254
+ if(current_packet != 1){
6255
+ console.log('bad packet cleanup');
6256
+ return;
6257
+ }
6258
+ globalDevices[deviceAddr] = {
6259
+ // stream_size: expected_packets,
6260
+ data: {},
6261
+ }
6262
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
6263
+ return;
6264
+ }
6265
+ }
6266
+ }
6267
+ if(expected_packets == 1){
6268
+ if(current_packet != 1){
6269
+ console.log('bad packet cleanup');
6270
+ return;
6271
+ }
6272
+ globalDevices[deviceAddr] = {
6273
+ // stream_size: expected_packets,
6274
+ data: {},
6275
+ }
6276
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
6277
+ //return;
6278
+ } else{
6279
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
6280
+ }
6281
+ if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
6282
+ var raw_data = new Array();
6283
+ for(const packet in globalDevices[deviceAddr].data){
6284
+ raw_data = raw_data.concat(globalDevices[deviceAddr].data[packet]);
6285
+ }
6286
+ var label = 0;
6287
+ // var fft = {
6288
+ // data: new Array()
6289
+ // // test: new Array()
6290
+ // };
6291
+ var fft = new Array();
6292
+ var adc = {};
6215
6293
 
6216
- var mode = payload[8];
6217
- var odr = payload[9];
6218
- var en_axis = payload[10] & 7;
6219
- var fsr = payload[10] >> 5;
6220
- var device_temp = msbLsb(payload[13], payload[14])/100;
6294
+ for(var i = 0; i < raw_data.length; i+=2){
6295
+ label++;
6296
+ adc[label] = (raw_data[i]<<8)+(raw_data[i+1]);
6297
+ }
6298
+ // var data = globalDevices[deviceAddr];
6299
+ delete globalDevices[deviceAddr];
6300
+ if(this.hasOwnProperty('failure_no')){
6301
+ console.log('####falure no');
6302
+ console.log(this.failure_no);
6303
+ }
6304
+ return{
6305
+ 'mode': mode,
6306
+ 'sampling_frequency': sampling_frequency,
6307
+ 'sensor_index': sensor_index,
6308
+ 'gain_db':gain_db,
6309
+ 'adc':adc,
6310
+ 'raw_data':raw_data
6311
+ }
6312
+ }
6313
+ else{
6314
+ return;
6315
+ }
6221
6316
 
6317
+ }else{
6318
+ if(current_packet != 1){
6319
+ console.log('bad packet cleanup');
6320
+ return;
6321
+ }
6322
+ globalDevices[deviceAddr] = {
6323
+ // stream_size: expected_packets,
6324
+ data: {},
6325
+ }
6326
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
6327
+ return;
6328
+ }
6329
+ }
6330
+ else if(payload[8] === 0){ // processed mode
6331
+ return {
6332
+ mode: payload[8],
6333
+ sampling_frequency: payload.slice(9, 13).reduce(msbLsb),
6334
+ rms_mv: payload.slice(13, 17).reduce(msbLsb) / 1000,
6335
+ freq_1: payload.slice(17, 19).reduce(msbLsb),
6336
+ freq_2: payload.slice(19, 21).reduce(msbLsb),
6337
+ freq_3: payload.slice(21, 23).reduce(msbLsb),
6338
+ };
6339
+ }
6222
6340
 
6223
- switch(odr){
6224
- case 6:
6225
- odr = 50;
6226
- break;
6227
- case 7:
6228
- odr = 100;
6229
- break;
6230
- case 8:
6231
- odr = 200;
6232
- break;
6233
- case 9:
6234
- odr = 400;
6235
- break;
6236
- case 10:
6237
- odr = 800;
6238
- break;
6239
- case 11:
6240
- odr = 1600;
6241
- break;
6242
- case 12:
6243
- odr = 3200;
6244
- break;
6245
- case 13:
6246
- odr = 6400;
6247
- break;
6248
- case 14:
6249
- odr = 12800;
6250
- break;
6251
- case 15:
6252
- odr = 25600;
6253
- break;
6254
- default:
6255
- odr = 0;
6256
- }
6341
+ },
6342
+ 'parse_fly': (frame) => {
6343
+ let frame_data = {};
6344
+ frame_data.mode = frame[12] ? 'Raw':'Processed';
6345
+ switch(frame[13]){
6346
+ case 0:
6347
+ frame_data.raw_lenght = 55;
6348
+ break;
6349
+ case 1:
6350
+ frame_data.raw_lenght = 100;
6351
+ break;
6352
+ case 2:
6353
+ frame_data.raw_lenght = 150;
6354
+ break;
6355
+ case 3:
6356
+ frame_data.raw_lenght = 180;
6357
+ break;
6358
+ }
6359
+ return {
6360
+ 'firmware': frame[2],
6361
+ 'mode': frame_data.mode,
6362
+ 'raw_length': frame_data.raw_lenght + " Bytes",
6363
+ 'raw_on_request_timeout': frame[14] + " sec",
6364
+ 'fly_rate': frame.slice(15, 17).reduce(msbLsb) + " min",
6365
+ 'sensor_gain_db': frame[17] + " dB",
6366
+ 'sensor_boot_time': frame[18] + " sec",
6367
+ 'sampling_frequency': (frame.slice(19, 23).reverse()).reduce(msbLsb) + " Hz",
6368
+ 'hardware_id': frame.slice(23, 26),
6369
+ 'report_rate': frame.slice(26, 30).reduce(msbLsb),
6370
+ 'tx_life_count': frame.slice(30, 34).reduce(msbLsb),
6371
+ 'machine_values': {
6372
+ 'firmware': frame[2],
6373
+ 'mode':frame[12],
6374
+ 'raw_lenght': frame[13],
6375
+ 'raw_on_request_timeout': frame[14],
6376
+ 'fly_rate': frame.slice(15, 17),
6377
+ 'sensor_gain_db': frame[17],
6378
+ 'sensor_boot_time': frame[18],
6379
+ 'sampling_frequency': frame.slice(19, 23),
6380
+ 'hardware_id': frame.slice(23, 26),
6381
+ 'report_rate': frame.slice(26, 30),
6382
+ 'tx_life_count': frame.slice(30, 34)
6383
+ }
6384
+ }
6385
+ }
6386
+ },
6387
+ '98': {
6388
+ name: 'Two channel Dynamic Ultrasound vibration Sensor',
6389
+ parse: (payload, parsed, mac) => {
6390
+ if (payload[8] === 1) { // raw
6391
+ var mode = payload[8];
6392
+ var sampling_frequency = payload.slice(9, 13).reduce(msbLsb);
6393
+ var sensor_index = payload[13];
6394
+ var gain_db = payload[14];
6395
+ var deviceAddr = mac;
6396
+ var expected_packets = payload.slice(15, 17).reduce(msbLsb);
6397
+ var current_packet = payload.slice(17, 19).reduce(msbLsb);
6398
+ var sdata_start = 19;
6399
+
6400
+ if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
6401
+ // if(expected_packets == 1){
6402
+ // this.build_102_data(payload, deviceAddr, hour, minute, sdata_start, current_packet, firmware);
6403
+ // }
6257
6404
 
6405
+ // if a packet is already stored with the same packet ID,
6406
+ // or if packet ID is 1,
6407
+ // or if current packet ID is not one more than last packet ID
6408
+ if(current_packet == 1 && expected_packets != 1) {
6409
+ if(current_packet in globalDevices[deviceAddr].data || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
6410
+ console.log('bad packet breakdown, deleting stream. Current packet:');
6411
+ console.log(current_packet);
6412
+ console.log('Total Expected Packets:');
6413
+ console.log(expected_packets);
6414
+ // console.log(current_packet in globalDevices[deviceAddr].data && current_packet == 1 && expected_packets != 1);
6415
+ // console.log(current_packet == 1);
6416
+ // console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
6417
+ if(this.hasOwnProperty('failure_no')){
6418
+ this.failure_no = this.failure_no + 1;
6419
+ }
6420
+ else{
6421
+ this.failure_no = 1;
6422
+ }
6423
+ if(this.hasOwnProperty('failure_no')){
6424
+ console.log('####falure no');
6425
+ console.log(this.failure_no);
6426
+ }
6427
+ delete globalDevices[deviceAddr];
6428
+ if(current_packet != 1){
6429
+ return;
6430
+ } else{
6431
+ if(current_packet != 1){
6432
+ console.log('bad packet cleanup');
6433
+ return;
6434
+ }
6258
6435
  globalDevices[deviceAddr] = {
6259
6436
  // stream_size: expected_packets,
6260
6437
  data: {},
6261
- odr: odr,
6262
- mo: mode,
6263
- en_axis: en_axis,
6264
- fsr: fsr,
6265
- hour: hour,
6266
- minute: minute,
6267
- device_temp: device_temp,
6268
6438
  }
6269
6439
  globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
6270
6440
  return;
6271
6441
  }
6272
6442
  }
6273
- else{
6274
- globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
6443
+ }
6444
+ if(expected_packets == 1){
6445
+ if(current_packet != 1){
6446
+ console.log('bad packet cleanup');
6447
+ return;
6448
+ }
6449
+ globalDevices[deviceAddr] = {
6450
+ // stream_size: expected_packets,
6451
+ data: {},
6452
+ }
6453
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
6454
+ //return;
6455
+ } else{
6456
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
6457
+ }
6458
+ if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
6459
+ var raw_data = new Array();
6460
+ for(const packet in globalDevices[deviceAddr].data){
6461
+ raw_data = raw_data.concat(globalDevices[deviceAddr].data[packet]);
6462
+ }
6463
+ var label = 0;
6464
+ // var fft = {
6465
+ // data: new Array()
6466
+ // // test: new Array()
6467
+ // };
6468
+ var fft = new Array();
6469
+ var adc = {};
6470
+
6471
+ for(var i = 0; i < raw_data.length; i+=2){
6472
+ label++;
6473
+ adc[label] = (raw_data[i]<<8)+(raw_data[i+1]);
6474
+ }
6475
+ // var data = globalDevices[deviceAddr];
6476
+ delete globalDevices[deviceAddr];
6477
+ if(this.hasOwnProperty('failure_no')){
6478
+ console.log('####falure no');
6479
+ console.log(this.failure_no);
6480
+ }
6481
+ return{
6482
+ 'mode': mode,
6483
+ 'sampling_frequency': sampling_frequency,
6484
+ 'sensor_index': sensor_index,
6485
+ 'gain_db':gain_db,
6486
+ 'adc':adc,
6487
+ 'raw_data':raw_data
6275
6488
  }
6276
6489
  }
6277
6490
  else{
6278
- var mode = payload[8];
6279
- var odr = payload[9];
6280
- var en_axis = payload[10] & 7;
6281
- var fsr = payload[10] >> 5;
6282
- var device_temp = msbLsb(payload[13], payload[14])/100;
6491
+ return;
6492
+ }
6493
+
6494
+ }else{
6495
+ if(current_packet != 1){
6496
+ console.log('bad packet cleanup');
6497
+ return;
6498
+ }
6499
+ globalDevices[deviceAddr] = {
6500
+ // stream_size: expected_packets,
6501
+ data: {},
6502
+ }
6503
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
6504
+ return;
6505
+ }
6506
+ }
6507
+ else if(payload[8] === 0){ // processed mode
6508
+ return {
6509
+ mode: payload[8],
6510
+ sampling_frequency: payload.slice(9, 13).reduce(msbLsb),
6511
+ c1_rms_mv: payload.slice(13, 15).reduce(msbLsb) / 1000,
6512
+ c1_freq_1: payload.slice(15, 17).reduce(msbLsb),
6513
+ c1_freq_2: payload.slice(17, 19).reduce(msbLsb),
6514
+ c1_freq_3: payload.slice(19, 23).reduce(msbLsb),
6515
+ c2_rms_mv: payload.slice(23, 25).reduce(msbLsb) / 1000,
6516
+ c2_freq_1: payload.slice(25, 27).reduce(msbLsb),
6517
+ c2_freq_2: payload.slice(27, 30).reduce(msbLsb),
6518
+ c2_freq_3: payload.slice(30, 34).reduce(msbLsb)
6519
+ };
6520
+ }
6521
+ },
6522
+ 'parse_fly': (frame) => {
6523
+ let frame_data = {};
6524
+ frame_data.mode = frame[12] ? 'Raw':'Processed';
6525
+ switch(frame[13]){
6526
+ case 0:
6527
+ frame_data.raw_lenght = 55;
6528
+ break;
6529
+ case 1:
6530
+ frame_data.raw_lenght = 100;
6531
+ break;
6532
+ case 2:
6533
+ frame_data.raw_lenght = 150;
6534
+ break;
6535
+ case 3:
6536
+ frame_data.raw_lenght = 180;
6537
+ break;
6538
+ }
6539
+ return {
6540
+ 'firmware': frame[2],
6541
+ 'mode': frame_data.mode,
6542
+ 'raw_length': frame_data.raw_lenght + " Bytes",
6543
+ 'raw_on_request_timeout': frame[14] + " sec",
6544
+ 'fly_rate': frame.slice(15, 17).reduce(msbLsb) + " min",
6545
+ 'c1_sensor_gain_db': frame[17] + " dB",
6546
+ 'c1_sensor_boot_time': frame[18] + " sec",
6547
+ 'c2_sensor_gain_db': frame[19] + " dB",
6548
+ 'c2_sensor_boot_time': frame[20] + " sec",
6549
+ 'sampling_frequency': (frame.slice(21, 25).reverse()).reduce(msbLsb) + " Hz",
6550
+ 'hardware_id': frame.slice(25, 28),
6551
+ 'report_rate': frame.slice(28, 32).reduce(msbLsb),
6552
+ 'tx_life_count': frame.slice(32, 36).reduce(msbLsb),
6553
+ 'machine_values': {
6554
+ 'firmware': frame[2],
6555
+ 'mode': frame[12],
6556
+ 'raw_lenght': frame[13],
6557
+ 'raw_on_request_timeout': frame[14],
6558
+ 'fly_rate': frame.slice(15, 17),
6559
+ 'c1_sensor_gain_db': frame[17],
6560
+ 'c1_sensor_boot_time': frame[18],
6561
+ 'c2_sensor_gain_db': frame[19],
6562
+ 'c2_sensor_boot_time': frame[20],
6563
+ 'sampling_frequency': frame.slice(21, 25),
6564
+ 'hardware_id': frame.slice(25, 28),
6565
+ 'report_rate': frame.slice(28, 32),
6566
+ 'tx_life_count': frame.slice(32, 36)
6567
+ }
6568
+ }
6569
+ }
6570
+ },
6571
+ '101':{
6572
+ name: 'Pro Vibration',
6573
+ parse: (d, full)=>{
6574
+ return{
6575
+ mode: full[7] == 1? "raw" : "normal"
6576
+ };
6577
+ }
6578
+ },
6579
+ '105': {
6580
+ name: '1 Channel Automatic Luber With Ultrasound Vibration Sensor',
6581
+ parse: (d) => {
6582
+ return {
6583
+ raw_adc: d.slice(0, 2).reduce(msbLsb),
6584
+ ma: d.slice(2, 4).reduce(msbLsb) / 100,
6585
+ db: d.slice(4, 6).reduce(msbLsb) / 100
6586
+ };
6587
+ }
6588
+ },
6589
+ '106': {
6590
+ name: '2 Channel Automatic Luber With Ultrasound Vibration Sensor',
6591
+ parse: (d) => {
6592
+ return {
6593
+ c1_raw_adc: d.slice(0, 2).reduce(msbLsb),
6594
+ c1_ma: d.slice(2, 4).reduce(msbLsb) / 100,
6595
+ c1_db: d.slice(4, 6).reduce(msbLsb) / 100,
6596
+ c2_raw_adc: d.slice(6, 8).reduce(msbLsb),
6597
+ c2_ma: d.slice(8, 10).reduce(msbLsb) / 100,
6598
+ c2_db: d.slice(10, 12).reduce(msbLsb) / 100
6599
+ };
6600
+ }
6601
+ },
6602
+ '107': {
6603
+ name: '16-Bit 4-Channel 4-20mA',
6604
+ parse: (d) => {
6605
+ var adc1 = signInt(d.slice(0, 2).reduce(msbLsb));
6606
+ var adc2 = signInt(d.slice(2, 4).reduce(msbLsb));
6607
+ var adc3 = signInt(d.slice(4, 6).reduce(msbLsb));
6608
+ var adc4 = signInt(d.slice(6, 8).reduce(msbLsb));
6609
+ var ma1 = (signInt(d.slice(8, 10).reduce(msbLsb)))/100.0;
6610
+ var ma2 = (signInt(d.slice(10, 12).reduce(msbLsb)))/100.0;
6611
+ var ma3 = (signInt(d.slice(12, 14).reduce(msbLsb)))/100.0;
6612
+ var ma4 = (signInt(d.slice(14, 16).reduce(msbLsb)))/100.0;
6613
+ return {
6614
+ adc1: adc1,
6615
+ adc2: adc2,
6616
+ adc3: adc3,
6617
+ adc4: adc4,
6618
+ ma1: ma1,
6619
+ ma2: ma2,
6620
+ ma3: ma3,
6621
+ ma4: ma4
6622
+ };
6623
+ }
6624
+ },
6625
+ '108': {
6626
+ name: 'Machine Uptime Monitoring Sensor',
6627
+ parse: (d, payload) => {
6628
+ let firmware = payload[1];
6629
+ if(payload[7] & 2 != 0){
6630
+ console.log('Error found');
6631
+ // parsed.data = {error: 'Error found, Acclerometer Probe may be unattached'};
6632
+ let error = {error: 'Error found, Acclerometer Probe may be unattached'};
6633
+ return error;
6634
+ }
6635
+ if(firmware > 4){
6636
+ let report_type = d[41]? "Shift": "Regular";
6637
+ return {
6638
+ digital_input_counter: d.slice(0, 4).reduce(msbLsb),
6639
+ digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
6640
+ ct_input_counter: d.slice(8, 12).reduce(msbLsb),
6641
+ ct_input_uptime: d.slice(12, 16).reduce(msbLsb),
6642
+ opto_input_counter: d.slice(16, 20).reduce(msbLsb),
6643
+ opto_input_uptime: d.slice(20, 24).reduce(msbLsb),
6644
+ accelerometer_counter: d.slice(24, 28).reduce(msbLsb),
6645
+ accelerometer_uptime: d.slice(28, 32).reduce(msbLsb),
6646
+ magnetometer_counter: d.slice(32, 36).reduce(msbLsb),
6647
+ magnetometer_uptime: d.slice(36, 40).reduce(msbLsb),
6648
+ input_di: d[40] & 1 ? 1 : 0,
6649
+ input_ct: d[40] & 2 ? 1 : 0,
6650
+ input_opto: d[40] & 4 ? 1 : 0,
6651
+ input_acc: d[40] & 8 ? 1 : 0,
6652
+ input_mag: d[40] & 16 ? 1 : 0,
6653
+ report_type: report_type,
6654
+ rtc: [
6655
+ String(d[42]).padStart(2, '0'),
6656
+ String(d[43]).padStart(2, '0'),
6657
+ String(d[44]).padStart(2, '0')
6658
+ ].join(':')
6659
+ };
6660
+ }else{
6661
+ return {
6662
+ digital_input_counter: d.slice(0, 4).reduce(msbLsb),
6663
+ digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
6664
+ ct_input_counter: d.slice(8, 12).reduce(msbLsb),
6665
+ ct_input_uptime: d.slice(12, 16).reduce(msbLsb),
6666
+ opto_input_counter: d.slice(16, 20).reduce(msbLsb),
6667
+ opto_input_uptime: d.slice(20, 24).reduce(msbLsb),
6668
+ accelerometer_counter: d.slice(24, 28).reduce(msbLsb),
6669
+ accelerometer_uptime: d.slice(28, 32).reduce(msbLsb),
6670
+ magnetometer_counter: d.slice(32, 36).reduce(msbLsb),
6671
+ magnetometer_uptime: d.slice(36, 40).reduce(msbLsb),
6672
+ input_di: d[40] & 1 ? 1 : 0,
6673
+ input_ct: d[40] & 2 ? 1 : 0,
6674
+ input_opto: d[40] & 4 ? 1 : 0,
6675
+ input_acc: d[40] & 8 ? 1 : 0,
6676
+ input_mag: d[40] & 16 ? 1 : 0
6677
+ };
6678
+ }
6679
+ },
6680
+ 'parse_fly': (frame) => {
6681
+ return {
6682
+ 'firmware': frame[2],
6683
+ 'report_rate': frame.slice(12, 16).reduce(msbLsb).toString() + "sec.",
6684
+ 'accelerometer_threshold': (frame[16]* 32).toString() + "mg.",
6685
+ 'debouncing_timeout': frame[17].toString() + "sec.",
6686
+ 'accelero_active_state': frame[18],
6687
+ 'digital_inputs_active_edge': frame.slice(19, 22).reduce(msbLsb),
6688
+ 'counter_threshold': frame.slice(22, 26).reduce(msbLsb).toString() + "sec.",
6689
+ 'trasnmit_on_change_status': frame[26],
6690
+ 'machine_values': {
6691
+ 'firmware': frame[2],
6692
+ 'report_rate': frame.slice(12, 16),
6693
+ 'accelerometer_threshold': frame[16],
6694
+ 'debouncing_timeout': frame[17],
6695
+ 'accelero_active_state': frame[18],
6696
+ 'digital_inputs_active_edge': frame.slice(19, 22),
6697
+ 'counter_threshold': frame.slice(22, 26),
6698
+ 'trasnmit_on_change_status': frame[26]
6699
+ }
6700
+ }
6701
+ }
6702
+ },
6703
+ '110': {
6704
+ name: 'One Channel Vibration Plus v4',
6705
+ parse: (payload, parsed, mac) => {
6706
+ if(payload[7] >> 1 != 0){
6707
+ console.log('Error found');
6708
+ parsed.data = {error: 'Error found, Sensor Probe may be unattached'};
6709
+ return parsed;
6710
+ }
6283
6711
 
6712
+ if(payload[8] === 1){
6713
+ var deviceAddr = mac;
6714
+ var firmware = payload[1];
6715
+ var hour = payload[12];
6716
+ var minute = payload[13];
6717
+ var expected_packets = payload[16];
6718
+ var current_packet = payload[17];
6719
+ var sdata_start = 18;
6284
6720
 
6285
- switch(odr){
6286
- case 6:
6287
- odr = 50;
6288
- break;
6289
- case 7:
6290
- odr = 100;
6291
- break;
6292
- case 8:
6293
- odr = 200;
6294
- break;
6295
- case 9:
6296
- odr = 400;
6297
- break;
6298
- case 10:
6299
- odr = 800;
6300
- break;
6301
- case 11:
6302
- odr = 1600;
6303
- break;
6304
- case 12:
6305
- odr = 3200;
6306
- break;
6307
- case 13:
6308
- odr = 6400;
6309
- break;
6310
- case 14:
6311
- odr = 12800;
6312
- break;
6313
- case 15:
6314
- odr = 25600;
6315
- break;
6316
- default:
6317
- odr = 0;
6721
+ if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
6722
+ if(expected_packets != 1){
6723
+ // 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
6724
+ if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
6725
+ console.log('-----');
6726
+ console.log('bad packet breakdown deleting stream');
6727
+ console.log(current_packet);
6728
+ console.log(expected_packets);
6729
+ console.log(current_packet in globalDevices[deviceAddr].data);
6730
+ console.log(current_packet == 1);
6731
+ console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
6732
+ if(this.hasOwnProperty('failure_no')){
6733
+ this.failure_no = this.failure_no + 1;
6734
+ }
6735
+ else{
6736
+ this.failure_no = 1;
6737
+ }
6738
+ if(this.hasOwnProperty('failure_no')){
6739
+ console.log('####falure no');
6740
+ console.log(this.failure_no);
6741
+ }
6742
+ // console.log(globalDevices[deviceAddr].data);
6743
+ delete globalDevices[deviceAddr];
6744
+ if(current_packet != 1){
6745
+ return;
6746
+ } else{
6747
+
6748
+ var mode = payload[8];
6749
+ var odr = msbLsb(payload[9], payload[10])
6750
+ var en_axis = payload[11] & 7;
6751
+ var fsr = payload[11] >> 5;
6752
+ var device_temp = msbLsb(payload[14], payload[15])/100;
6753
+
6754
+ globalDevices[deviceAddr] = {
6755
+ // stream_size: expected_packets,
6756
+ data: {},
6757
+ odr: odr,
6758
+ mo: mode,
6759
+ en_axis: en_axis,
6760
+ fsr: fsr,
6761
+ hour: hour,
6762
+ minute: minute,
6763
+ device_temp: device_temp,
6764
+ }
6765
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
6766
+ return;
6767
+ }
6768
+ }
6769
+ else{
6770
+ globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
6318
6771
  }
6772
+ }
6773
+ else{
6774
+ var mode = payload[8];
6775
+ var odr = msbLsb(payload[9], payload[10])
6776
+ var en_axis = payload[11] & 7;
6777
+ var fsr = payload[11] >> 5;
6778
+ var device_temp = msbLsb(payload[14], payload[15])/100;
6319
6779
 
6320
6780
  globalDevices[deviceAddr] = {
6321
6781
  // stream_size: expected_packets,
@@ -6450,46 +6910,10 @@ function sensor_types(parent){
6450
6910
  }else{
6451
6911
 
6452
6912
  var mode = payload[8];
6453
- var odr = payload[9];
6454
- var en_axis = payload[10] & 7;
6455
- var fsr = payload[10] >> 5;
6456
- var device_temp = msbLsb(payload[13], payload[14])/100;
6457
-
6458
-
6459
- switch(odr){
6460
- case 6:
6461
- odr = 50;
6462
- break;
6463
- case 7:
6464
- odr = 100;
6465
- break;
6466
- case 8:
6467
- odr = 200;
6468
- break;
6469
- case 9:
6470
- odr = 400;
6471
- break;
6472
- case 10:
6473
- odr = 800;
6474
- break;
6475
- case 11:
6476
- odr = 1600;
6477
- break;
6478
- case 12:
6479
- odr = 3200;
6480
- break;
6481
- case 13:
6482
- odr = 6400;
6483
- break;
6484
- case 14:
6485
- odr = 12800;
6486
- break;
6487
- case 15:
6488
- odr = 25600;
6489
- break;
6490
- default:
6491
- odr = 0;
6492
- }
6913
+ var odr = msbLsb(payload[9], payload[10])
6914
+ var en_axis = payload[11] & 7;
6915
+ var fsr = payload[11] >> 5;
6916
+ var device_temp = msbLsb(payload[14], payload[15])/100;
6493
6917
 
6494
6918
  globalDevices[deviceAddr] = {
6495
6919
  // stream_size: expected_packets,
@@ -6571,6 +6995,7 @@ function sensor_types(parent){
6571
6995
  z_peak_one_Hz: payload.slice(48, 50).reduce(msbLsb),
6572
6996
  z_peak_two_Hz: payload.slice(50, 52).reduce(msbLsb),
6573
6997
  z_peak_three_Hz: payload.slice(52, 54).reduce(msbLsb),
6998
+ rpm: payload.slice(54, 56).reduce(msbLsb)
6574
6999
  };
6575
7000
  }
6576
7001
  // else{
@@ -6794,11 +7219,11 @@ function sensor_types(parent){
6794
7219
  if(payload[8] === 1){
6795
7220
  var deviceAddr = mac;
6796
7221
  var firmware = payload[1];
6797
- var hour = payload[11];
6798
- var minute = payload[12];
6799
- var expected_packets = payload[15];
6800
- var current_packet = payload[16];
6801
- var sdata_start = 17;
7222
+ var hour = payload[12];
7223
+ var minute = payload[13];
7224
+ var expected_packets = payload[16];
7225
+ var current_packet = payload[17];
7226
+ var sdata_start = 18;
6802
7227
 
6803
7228
  if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
6804
7229
  if(expected_packets != 1){
@@ -6827,45 +7252,10 @@ function sensor_types(parent){
6827
7252
  return;
6828
7253
  } else{
6829
7254
  var mode = payload[8];
6830
- var odr = payload[9];
6831
- var en_axis = payload[10] & 7;
6832
- var fsr = payload[10] >> 5;
6833
- var device_temp = msbLsb(payload[13], payload[14])/100;
6834
-
6835
- switch(odr){
6836
- case 6:
6837
- odr = 50;
6838
- break;
6839
- case 7:
6840
- odr = 100;
6841
- break;
6842
- case 8:
6843
- odr = 200;
6844
- break;
6845
- case 9:
6846
- odr = 400;
6847
- break;
6848
- case 10:
6849
- odr = 800;
6850
- break;
6851
- case 11:
6852
- odr = 1600;
6853
- break;
6854
- case 12:
6855
- odr = 3200;
6856
- break;
6857
- case 13:
6858
- odr = 6400;
6859
- break;
6860
- case 14:
6861
- odr = 12800;
6862
- break;
6863
- case 15:
6864
- odr = 25600;
6865
- break;
6866
- default:
6867
- odr = 0;
6868
- }
7255
+ var odr = msbLsb(payload[9], payload[10])
7256
+ var en_axis = payload[11] & 7;
7257
+ var fsr = payload[11] >> 5;
7258
+ var device_temp = msbLsb(payload[14], payload[15])/100;
6869
7259
 
6870
7260
  globalDevices[deviceAddr] = {
6871
7261
  // stream_size: expected_packets,
@@ -6888,46 +7278,10 @@ function sensor_types(parent){
6888
7278
  }
6889
7279
  else{
6890
7280
  var mode = payload[8];
6891
- var odr = payload[9];
6892
- var en_axis = payload[10] & 7;
6893
- var fsr = payload[10] >> 5;
6894
- var device_temp = msbLsb(payload[13], payload[14])/100;
6895
-
6896
-
6897
- switch(odr){
6898
- case 6:
6899
- odr = 50;
6900
- break;
6901
- case 7:
6902
- odr = 100;
6903
- break;
6904
- case 8:
6905
- odr = 200;
6906
- break;
6907
- case 9:
6908
- odr = 400;
6909
- break;
6910
- case 10:
6911
- odr = 800;
6912
- break;
6913
- case 11:
6914
- odr = 1600;
6915
- break;
6916
- case 12:
6917
- odr = 3200;
6918
- break;
6919
- case 13:
6920
- odr = 6400;
6921
- break;
6922
- case 14:
6923
- odr = 12800;
6924
- break;
6925
- case 15:
6926
- odr = 25600;
6927
- break;
6928
- default:
6929
- odr = 0;
6930
- }
7281
+ var odr = msbLsb(payload[9], payload[10])
7282
+ var en_axis = payload[11] & 7;
7283
+ var fsr = payload[11] >> 5;
7284
+ var device_temp = msbLsb(payload[14], payload[15])/100;
6931
7285
 
6932
7286
  globalDevices[deviceAddr] = {
6933
7287
  // stream_size: expected_packets,
@@ -7073,46 +7427,10 @@ function sensor_types(parent){
7073
7427
  }
7074
7428
  }else{
7075
7429
  var mode = payload[8];
7076
- var odr = payload[9];
7077
- var en_axis = payload[10] & 7;
7078
- var fsr = payload[10] >> 5;
7079
- var device_temp = msbLsb(payload[13], payload[14])/100;
7080
-
7081
-
7082
- switch(odr){
7083
- case 6:
7084
- odr = 50;
7085
- break;
7086
- case 7:
7087
- odr = 100;
7088
- break;
7089
- case 8:
7090
- odr = 200;
7091
- break;
7092
- case 9:
7093
- odr = 400;
7094
- break;
7095
- case 10:
7096
- odr = 800;
7097
- break;
7098
- case 11:
7099
- odr = 1600;
7100
- break;
7101
- case 12:
7102
- odr = 3200;
7103
- break;
7104
- case 13:
7105
- odr = 6400;
7106
- break;
7107
- case 14:
7108
- odr = 12800;
7109
- break;
7110
- case 15:
7111
- odr = 25600;
7112
- break;
7113
- default:
7114
- odr = 0;
7115
- }
7430
+ var odr = msbLsb(payload[9], payload[10])
7431
+ var en_axis = payload[11] & 7;
7432
+ var fsr = payload[11] >> 5;
7433
+ var device_temp = msbLsb(payload[14], payload[15])/100;
7116
7434
 
7117
7435
  globalDevices[deviceAddr] = {
7118
7436
  // stream_size: expected_packets,
@@ -7237,6 +7555,7 @@ function sensor_types(parent){
7237
7555
  z1_peak_one_Hz: payload.slice(48, 50).reduce(msbLsb),
7238
7556
  z1_peak_two_Hz: payload.slice(50, 52).reduce(msbLsb),
7239
7557
  z1_peak_three_Hz: payload.slice(52, 54).reduce(msbLsb),
7558
+ rpm_1: payload.slice(54, 56).reduce(msbLsb),
7240
7559
 
7241
7560
  s2_odr: odr2,
7242
7561
  s2_temperature: signInt(payload.slice(55, 57).reduce(msbLsb), 16) / 100,
@@ -7263,7 +7582,8 @@ function sensor_types(parent){
7263
7582
  z2_displacement_mm: payload.slice(91, 93).reduce(msbLsb) / 100,
7264
7583
  z2_peak_one_Hz: payload.slice(93, 95).reduce(msbLsb),
7265
7584
  z2_peak_two_Hz: payload.slice(95, 97).reduce(msbLsb),
7266
- z2_peak_three_Hz: payload.slice(97, 99).reduce(msbLsb)
7585
+ z2_peak_three_Hz: payload.slice(97, 99).reduce(msbLsb),
7586
+ rpm_2: payload.slice(99, 101).reduce(msbLsb)
7267
7587
  };
7268
7588
  }
7269
7589
  // else{
@@ -7592,11 +7912,11 @@ function sensor_types(parent){
7592
7912
  if(payload[8] === 1){
7593
7913
  var deviceAddr = mac;
7594
7914
  var firmware = payload[1];
7595
- var hour = payload[11];
7596
- var minute = payload[12];
7597
- var expected_packets = payload[15];
7598
- var current_packet = payload[16];
7599
- var sdata_start = 17;
7915
+ var hour = payload[12];
7916
+ var minute = payload[13];
7917
+ var expected_packets = payload[16];
7918
+ var current_packet = payload[17];
7919
+ var sdata_start = 18;
7600
7920
 
7601
7921
  if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
7602
7922
  if(expected_packets != 1){
@@ -7619,53 +7939,17 @@ function sensor_types(parent){
7619
7939
  console.log('####falure no');
7620
7940
  console.log(this.failure_no);
7621
7941
  }
7622
- // console.log(globalDevices[deviceAddr].data);
7623
- delete globalDevices[deviceAddr];
7624
- if(current_packet != 1){
7625
- return;
7626
- } else{
7627
-
7628
- var mode = payload[8];
7629
- var odr = payload[9];
7630
- var en_axis = payload[10] & 7;
7631
- var fsr = payload[10] >> 5;
7632
- var device_temp = msbLsb(payload[13], payload[14])/100;
7633
-
7634
-
7635
- switch(odr){
7636
- case 6:
7637
- odr = 50;
7638
- break;
7639
- case 7:
7640
- odr = 100;
7641
- break;
7642
- case 8:
7643
- odr = 200;
7644
- break;
7645
- case 9:
7646
- odr = 400;
7647
- break;
7648
- case 10:
7649
- odr = 800;
7650
- break;
7651
- case 11:
7652
- odr = 1600;
7653
- break;
7654
- case 12:
7655
- odr = 3200;
7656
- break;
7657
- case 13:
7658
- odr = 6400;
7659
- break;
7660
- case 14:
7661
- odr = 12800;
7662
- break;
7663
- case 15:
7664
- odr = 25600;
7665
- break;
7666
- default:
7667
- odr = 0;
7668
- }
7942
+ // console.log(globalDevices[deviceAddr].data);
7943
+ delete globalDevices[deviceAddr];
7944
+ if(current_packet != 1){
7945
+ return;
7946
+ } else{
7947
+
7948
+ var mode = payload[8];
7949
+ var odr = msbLsb(payload[9], payload[10])
7950
+ var en_axis = payload[11] & 7;
7951
+ var fsr = payload[11] >> 5;
7952
+ var device_temp = msbLsb(payload[14], payload[15])/100;
7669
7953
 
7670
7954
  globalDevices[deviceAddr] = {
7671
7955
  // stream_size: expected_packets,
@@ -7688,46 +7972,10 @@ function sensor_types(parent){
7688
7972
  }
7689
7973
  else{
7690
7974
  var mode = payload[8];
7691
- var odr = payload[9];
7692
- var en_axis = payload[10] & 7;
7693
- var fsr = payload[10] >> 5;
7694
- var device_temp = msbLsb(payload[13], payload[14])/100;
7695
-
7696
-
7697
- switch(odr){
7698
- case 6:
7699
- odr = 50;
7700
- break;
7701
- case 7:
7702
- odr = 100;
7703
- break;
7704
- case 8:
7705
- odr = 200;
7706
- break;
7707
- case 9:
7708
- odr = 400;
7709
- break;
7710
- case 10:
7711
- odr = 800;
7712
- break;
7713
- case 11:
7714
- odr = 1600;
7715
- break;
7716
- case 12:
7717
- odr = 3200;
7718
- break;
7719
- case 13:
7720
- odr = 6400;
7721
- break;
7722
- case 14:
7723
- odr = 12800;
7724
- break;
7725
- case 15:
7726
- odr = 25600;
7727
- break;
7728
- default:
7729
- odr = 0;
7730
- }
7975
+ var odr = msbLsb(payload[9], payload[10])
7976
+ var en_axis = payload[11] & 7;
7977
+ var fsr = payload[11] >> 5;
7978
+ var device_temp = msbLsb(payload[14], payload[15])/100;
7731
7979
 
7732
7980
  globalDevices[deviceAddr] = {
7733
7981
  // stream_size: expected_packets,
@@ -7865,46 +8113,10 @@ function sensor_types(parent){
7865
8113
  }else{
7866
8114
 
7867
8115
  var mode = payload[8];
7868
- var odr = payload[9];
7869
- var en_axis = payload[10] & 7;
7870
- var fsr = payload[10] >> 5;
7871
- var device_temp = msbLsb(payload[13], payload[14])/100;
7872
-
7873
-
7874
- switch(odr){
7875
- case 6:
7876
- odr = 50;
7877
- break;
7878
- case 7:
7879
- odr = 100;
7880
- break;
7881
- case 8:
7882
- odr = 200;
7883
- break;
7884
- case 9:
7885
- odr = 400;
7886
- break;
7887
- case 10:
7888
- odr = 800;
7889
- break;
7890
- case 11:
7891
- odr = 1600;
7892
- break;
7893
- case 12:
7894
- odr = 3200;
7895
- break;
7896
- case 13:
7897
- odr = 6400;
7898
- break;
7899
- case 14:
7900
- odr = 12800;
7901
- break;
7902
- case 15:
7903
- odr = 25600;
7904
- break;
7905
- default:
7906
- odr = 0;
7907
- }
8116
+ var odr = msbLsb(payload[9], payload[10])
8117
+ var en_axis = payload[11] & 7;
8118
+ var fsr = payload[11] >> 5;
8119
+ var device_temp = msbLsb(payload[14], payload[15])/100;
7908
8120
 
7909
8121
  globalDevices[deviceAddr] = {
7910
8122
  // stream_size: expected_packets,
@@ -7987,6 +8199,7 @@ function sensor_types(parent){
7987
8199
  z_peak_one_Hz: payload.slice(56, 58).reduce(msbLsb),
7988
8200
  z_peak_two_Hz: payload.slice(58, 60).reduce(msbLsb),
7989
8201
  z_peak_three_Hz: payload.slice(60, 62).reduce(msbLsb),
8202
+ rpm: payload.slice(62, 64).reduce(msbLsb)
7990
8203
  };
7991
8204
  }
7992
8205
  // else{
@@ -8205,11 +8418,11 @@ function sensor_types(parent){
8205
8418
  if(payload[8] === 1){
8206
8419
  var deviceAddr = mac;
8207
8420
  var firmware = payload[1];
8208
- var hour = payload[11];
8209
- var minute = payload[12];
8210
- var expected_packets = payload[15];
8211
- var current_packet = payload[16];
8212
- var sdata_start = 17;
8421
+ var hour = payload[12];
8422
+ var minute = payload[13];
8423
+ var expected_packets = payload[16];
8424
+ var current_packet = payload[17];
8425
+ var sdata_start = 18;
8213
8426
 
8214
8427
  if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
8215
8428
  if(expected_packets != 1){
@@ -8239,46 +8452,10 @@ function sensor_types(parent){
8239
8452
  } else{
8240
8453
 
8241
8454
  var mode = payload[8];
8242
- var odr = payload[9];
8243
- var en_axis = payload[10] & 7;
8244
- var fsr = payload[10] >> 5;
8245
- var device_temp = msbLsb(payload[13], payload[14])/100;
8246
-
8247
-
8248
- switch(odr){
8249
- case 6:
8250
- odr = 50;
8251
- break;
8252
- case 7:
8253
- odr = 100;
8254
- break;
8255
- case 8:
8256
- odr = 200;
8257
- break;
8258
- case 9:
8259
- odr = 400;
8260
- break;
8261
- case 10:
8262
- odr = 800;
8263
- break;
8264
- case 11:
8265
- odr = 1600;
8266
- break;
8267
- case 12:
8268
- odr = 3200;
8269
- break;
8270
- case 13:
8271
- odr = 6400;
8272
- break;
8273
- case 14:
8274
- odr = 12800;
8275
- break;
8276
- case 15:
8277
- odr = 25600;
8278
- break;
8279
- default:
8280
- odr = 0;
8281
- }
8455
+ var odr = msbLsb(payload[9], payload[10])
8456
+ var en_axis = payload[11] & 7;
8457
+ var fsr = payload[11] >> 5;
8458
+ var device_temp = msbLsb(payload[14], payload[15])/100;
8282
8459
 
8283
8460
  globalDevices[deviceAddr] = {
8284
8461
  // stream_size: expected_packets,
@@ -8301,46 +8478,10 @@ function sensor_types(parent){
8301
8478
  }
8302
8479
  else{
8303
8480
  var mode = payload[8];
8304
- var odr = payload[9];
8305
- var en_axis = payload[10] & 7;
8306
- var fsr = payload[10] >> 5;
8307
- var device_temp = msbLsb(payload[13], payload[14])/100;
8308
-
8309
-
8310
- switch(odr){
8311
- case 6:
8312
- odr = 50;
8313
- break;
8314
- case 7:
8315
- odr = 100;
8316
- break;
8317
- case 8:
8318
- odr = 200;
8319
- break;
8320
- case 9:
8321
- odr = 400;
8322
- break;
8323
- case 10:
8324
- odr = 800;
8325
- break;
8326
- case 11:
8327
- odr = 1600;
8328
- break;
8329
- case 12:
8330
- odr = 3200;
8331
- break;
8332
- case 13:
8333
- odr = 6400;
8334
- break;
8335
- case 14:
8336
- odr = 12800;
8337
- break;
8338
- case 15:
8339
- odr = 25600;
8340
- break;
8341
- default:
8342
- odr = 0;
8343
- }
8481
+ var odr = msbLsb(payload[9], payload[10])
8482
+ var en_axis = payload[11] & 7;
8483
+ var fsr = payload[11] >> 5;
8484
+ var device_temp = msbLsb(payload[14], payload[15])/100;
8344
8485
 
8345
8486
  globalDevices[deviceAddr] = {
8346
8487
  // stream_size: expected_packets,
@@ -8474,46 +8615,10 @@ function sensor_types(parent){
8474
8615
  }else{
8475
8616
 
8476
8617
  var mode = payload[8];
8477
- var odr = payload[9];
8478
- var en_axis = payload[10] & 7;
8479
- var fsr = payload[10] >> 5;
8480
- var device_temp = msbLsb(payload[13], payload[14])/100;
8481
-
8482
-
8483
- switch(odr){
8484
- case 6:
8485
- odr = 50;
8486
- break;
8487
- case 7:
8488
- odr = 100;
8489
- break;
8490
- case 8:
8491
- odr = 200;
8492
- break;
8493
- case 9:
8494
- odr = 400;
8495
- break;
8496
- case 10:
8497
- odr = 800;
8498
- break;
8499
- case 11:
8500
- odr = 1600;
8501
- break;
8502
- case 12:
8503
- odr = 3200;
8504
- break;
8505
- case 13:
8506
- odr = 6400;
8507
- break;
8508
- case 14:
8509
- odr = 12800;
8510
- break;
8511
- case 15:
8512
- odr = 25600;
8513
- break;
8514
- default:
8515
- odr = 0;
8516
- }
8618
+ var odr = msbLsb(payload[9], payload[10])
8619
+ var en_axis = payload[11] & 7;
8620
+ var fsr = payload[11] >> 5;
8621
+ var device_temp = msbLsb(payload[14], payload[15])/100;
8517
8622
 
8518
8623
  globalDevices[deviceAddr] = {
8519
8624
  // stream_size: expected_packets,
@@ -8595,6 +8700,7 @@ function sensor_types(parent){
8595
8700
  z_peak_one_Hz: payload.slice(48, 50).reduce(msbLsb),
8596
8701
  z_peak_two_Hz: payload.slice(50, 52).reduce(msbLsb),
8597
8702
  z_peak_three_Hz: payload.slice(52, 54).reduce(msbLsb),
8703
+ rpm: payload.slice(54, 56).reduce(msbLsb) / 10
8598
8704
  };
8599
8705
  }
8600
8706
  // else{
@@ -8801,7 +8907,89 @@ function sensor_types(parent){
8801
8907
  }
8802
8908
  }
8803
8909
  },
8804
-
8910
+ '118': {
8911
+ name: 'Dual Pressure and Temperature Sensor',
8912
+ parse: (d) => {
8913
+ return{
8914
+ pressure_s1: signInt(d.slice(0, 4).reduce(msbLsb)) / 100,
8915
+ temperature_s1: signInt(d.slice(4, 6).reduce(msbLsb))/100,
8916
+ pressure_s2: signInt(d.slice(6, 10).reduce(msbLsb)) / 100,
8917
+ temperature_s2: signInt(d.slice(10, 12).reduce(msbLsb))/100
8918
+ };
8919
+ },
8920
+ 'parse_fly': (frame) => {
8921
+ let psi_1;
8922
+ let psi_2;
8923
+ switch(frame[12]){
8924
+ case 0:
8925
+ psi_1 = "10 PSI"
8926
+ break;
8927
+ case 1:
8928
+ psi_1 = "20 PSI"
8929
+ break;
8930
+ case 2:
8931
+ psi_1 = "100 PSI"
8932
+ break;
8933
+ case 3:
8934
+ psi_1 = "500 PSI"
8935
+ break;
8936
+ case 4:
8937
+ psi_1 = "1000 PSI"
8938
+ break;
8939
+ case 5:
8940
+ psi_1 = "5000 PSI"
8941
+ break;
8942
+ case 6:
8943
+ psi_1 = "10000 PSI"
8944
+ break;
8945
+ }
8946
+ switch(frame[13]){
8947
+ case 0:
8948
+ psi_2 = "10 PSI"
8949
+ break;
8950
+ case 1:
8951
+ psi_2 = "20 PSI"
8952
+ break;
8953
+ case 2:
8954
+ psi_2 = "100 PSI"
8955
+ break;
8956
+ case 3:
8957
+ psi_2 = "500 PSI"
8958
+ break;
8959
+ case 4:
8960
+ psi_2 = "1000 PSI"
8961
+ break;
8962
+ case 5:
8963
+ psi_2 = "5000 PSI"
8964
+ break;
8965
+ case 6:
8966
+ psi_2 = "10000 PSI"
8967
+ break;
8968
+ }
8969
+ return {
8970
+ 'firmware': frame[2],
8971
+ 'sensor_1_fs': psi_1,
8972
+ 'sensor_2_fs': psi_2,
8973
+ 'auto_check_interval': frame.slice(14, 16).reduce(msbLsb) + " Sec.",
8974
+ 'press_auto_check_percent': frame[17] + " %",
8975
+ 'temp_auto_check_percent': frame[17] + " %",
8976
+ 'hardware_id': frame.slice(18, 21),
8977
+ 'sample_rate': frame.slice(21, 25).reduce(msbLsb) + " Sec.",
8978
+ 'tx_life_counter': frame.slice(25, 29).reduce(msbLsb),
8979
+ 'machine_values': {
8980
+ 'firmware': frame[2],
8981
+ 'sensor_1_fs': frame[12],
8982
+ 'sensor_2_fs': frame[13],
8983
+ 'auto_check_interval': frame.slice(14, 16),
8984
+ 'press_auto_check_percent': frame[16],
8985
+ 'temp_auto_check_percent': frame[17],
8986
+ 'hardware_id': frame.slice(18, 21),
8987
+ 'sample_rate': frame.slice(21, 25),
8988
+ 'tx_life_counter': frame.slice(25, 29),
8989
+ }
8990
+ }
8991
+ }
8992
+ },
8805
8993
  '180': {
8806
8994
  name: 'C1D2 One Channel Vibration Plus',
8807
8995
  parse: (payload, parsed, mac) => {