@ncd-io/node-red-enterprise-sensors 1.1.0 → 1.1.1
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.
- package/lib/WirelessGateway.js +590 -36
- package/package.json +2 -2
- package/wireless.html +319 -38
- package/wireless.js +177 -32
package/lib/WirelessGateway.js
CHANGED
|
@@ -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;
|
|
@@ -1260,12 +1271,6 @@ module.exports = class WirelessSensor{
|
|
|
1260
1271
|
console.log(packet);
|
|
1261
1272
|
return this.config_send(sensor_mac, packet);
|
|
1262
1273
|
}
|
|
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
1274
|
config_set_deactivate_activate_accelero_108(sensor_mac, value){
|
|
1270
1275
|
console.log('config_set_deactivate_activate_accelero_108');
|
|
1271
1276
|
var packet = [244, 37, 0, 0, 0, value];
|
|
@@ -1399,6 +1404,36 @@ module.exports = class WirelessSensor{
|
|
|
1399
1404
|
console.log(packet);
|
|
1400
1405
|
return this.config_send(sensor_mac, packet);
|
|
1401
1406
|
}
|
|
1407
|
+
config_set_filter_thermocouple(sensor_mac, value){
|
|
1408
|
+
console.log('config_set_filter_thermocouple');
|
|
1409
|
+
let packet = [244, 85, 0, 0, 23, value];
|
|
1410
|
+
console.log(packet);
|
|
1411
|
+
return this.config_send(sensor_mac, packet);
|
|
1412
|
+
}
|
|
1413
|
+
config_set_cold_junction_thermocouple(sensor_mac, value){
|
|
1414
|
+
console.log('config_set_cold_junction_thermocouple');
|
|
1415
|
+
let packet = [244, 87, 0, 0, 23, value];
|
|
1416
|
+
console.log(packet);
|
|
1417
|
+
return this.config_send(sensor_mac, packet);
|
|
1418
|
+
}
|
|
1419
|
+
config_set_sample_resolution_thermocouple(sensor_mac, value){
|
|
1420
|
+
console.log('config_set_sample_resolution_thermocouple');
|
|
1421
|
+
let packet = [244, 89, 0, 0, 23, value];
|
|
1422
|
+
console.log(packet);
|
|
1423
|
+
return this.config_send(sensor_mac, packet);
|
|
1424
|
+
}
|
|
1425
|
+
config_set_number_of_samples_thermocouple(sensor_mac, value){
|
|
1426
|
+
console.log('config_set_number_of_samples_thermocouple');
|
|
1427
|
+
let packet = [244, 91, 0, 0, 23, value];
|
|
1428
|
+
console.log(packet);
|
|
1429
|
+
return this.config_send(sensor_mac, packet);
|
|
1430
|
+
}
|
|
1431
|
+
config_set_measurement_type_thermocouple(sensor_mac, value){
|
|
1432
|
+
console.log('config_set_number_of_samples_thermocouple');
|
|
1433
|
+
let packet = [244, 95, 0, 0, 23, value];
|
|
1434
|
+
console.log(packet);
|
|
1435
|
+
return this.config_send(sensor_mac, packet);
|
|
1436
|
+
}
|
|
1402
1437
|
config_set_debounce_time_2(sensor_mac, value){
|
|
1403
1438
|
console.log('config_set_debounce_time_2');
|
|
1404
1439
|
var packet = [244, 66, 0, 0, 2, value];
|
|
@@ -1503,7 +1538,7 @@ module.exports = class WirelessSensor{
|
|
|
1503
1538
|
}
|
|
1504
1539
|
config_set_auto_raw_interval_110(sensor_mac, value){
|
|
1505
1540
|
console.log('config_set_raw_interval_110');
|
|
1506
|
-
var packet = [244, 79, 0, 0, 80,
|
|
1541
|
+
var packet = [244, 79, 0, 0, 80, 70, value];
|
|
1507
1542
|
console.log(packet);
|
|
1508
1543
|
return this.config_send(sensor_mac, packet);
|
|
1509
1544
|
}
|
|
@@ -1515,9 +1550,9 @@ module.exports = class WirelessSensor{
|
|
|
1515
1550
|
console.log(packet);
|
|
1516
1551
|
return this.config_send(sensor_mac, packet);
|
|
1517
1552
|
}
|
|
1518
|
-
config_set_clear_probe_uptimers_110(sensor_mac
|
|
1553
|
+
config_set_clear_probe_uptimers_110(sensor_mac){
|
|
1519
1554
|
console.log('config_set_clear_probe_uptimers_110');
|
|
1520
|
-
var packet = [244, 79, 0, 0, 80,
|
|
1555
|
+
var packet = [244, 79, 0, 0, 80, 75];
|
|
1521
1556
|
console.log(packet);
|
|
1522
1557
|
return this.config_send(sensor_mac, packet);
|
|
1523
1558
|
}
|
|
@@ -1529,9 +1564,13 @@ module.exports = class WirelessSensor{
|
|
|
1529
1564
|
}
|
|
1530
1565
|
config_set_smart_threshold_110(sensor_mac, value){
|
|
1531
1566
|
console.log('config_set_smart_threshold_110');
|
|
1532
|
-
var packet = [244, 79, 0, 0, 101];
|
|
1533
|
-
|
|
1534
|
-
|
|
1567
|
+
var packet = [244, 79, 0, 0, 101, 78, 1, value];
|
|
1568
|
+
console.log(packet);
|
|
1569
|
+
return this.config_send(sensor_mac, packet);
|
|
1570
|
+
}
|
|
1571
|
+
config_set_smart_threshold_p2_110(sensor_mac, value){
|
|
1572
|
+
console.log('config_set_smart_threshold_p2_110');
|
|
1573
|
+
var packet = [244, 79, 0, 0, 101, 78, 2, value];
|
|
1535
1574
|
console.log(packet);
|
|
1536
1575
|
return this.config_send(sensor_mac, packet);
|
|
1537
1576
|
}
|
|
@@ -1706,6 +1745,66 @@ module.exports = class WirelessSensor{
|
|
|
1706
1745
|
console.log(packet);
|
|
1707
1746
|
return this.config_send(sensor_mac, packet);
|
|
1708
1747
|
}
|
|
1748
|
+
config_set_pressure_sensor_fs_ch1_118(sensor_mac, value){
|
|
1749
|
+
console.log('config_set_pressure_sensor_fs_ch1_118');
|
|
1750
|
+
var packet = [244, 64, 0, 0, 26, value];
|
|
1751
|
+
console.log(packet);
|
|
1752
|
+
return this.config_send(sensor_mac, packet);
|
|
1753
|
+
}
|
|
1754
|
+
config_set_pressure_sensor_fs_ch2_118(sensor_mac, value){
|
|
1755
|
+
console.log('config_set_pressure_sensor_fs_ch2_118');
|
|
1756
|
+
var packet = [244, 64, 0, 0, 118, value];
|
|
1757
|
+
console.log(packet);
|
|
1758
|
+
return this.config_send(sensor_mac, packet);
|
|
1759
|
+
}
|
|
1760
|
+
config_set_auto_check_interval_118(sensor_mac, value){
|
|
1761
|
+
console.log('config_set_auto_check_interval_118');
|
|
1762
|
+
var packet = [244, 66, 0, 0, 26];
|
|
1763
|
+
let value_ = int2Bytes((value), 2);
|
|
1764
|
+
packet.push(...value_);
|
|
1765
|
+
console.log(packet);
|
|
1766
|
+
return this.config_send(sensor_mac, packet);
|
|
1767
|
+
}
|
|
1768
|
+
config_set_press_auto_check_percent_118(sensor_mac, value){
|
|
1769
|
+
console.log('config_set_press_auto_check_percent_118');
|
|
1770
|
+
var packet = [244, 68, 0, 0, 26, value];
|
|
1771
|
+
console.log(packet);
|
|
1772
|
+
return this.config_send(sensor_mac, packet);
|
|
1773
|
+
}
|
|
1774
|
+
config_set_temp_auto_check_percent_118(sensor_mac, value){
|
|
1775
|
+
console.log('config_set_temp_auto_check_percent_118');
|
|
1776
|
+
var packet = [244, 70, 0, 0, 26, value];
|
|
1777
|
+
console.log(packet);
|
|
1778
|
+
return this.config_send(sensor_mac, packet);
|
|
1779
|
+
}
|
|
1780
|
+
config_set_raw_length_97(sensor_mac, value){
|
|
1781
|
+
console.log('config_set_raw_length_97');
|
|
1782
|
+
var packet = [244, 67, 0, 0, 0, value];
|
|
1783
|
+
console.log(packet);
|
|
1784
|
+
return this.config_send(sensor_mac, packet);
|
|
1785
|
+
}
|
|
1786
|
+
config_set_raw_timeout_97(sensor_mac, value){
|
|
1787
|
+
console.log('config_set_raw_timeout_97');
|
|
1788
|
+
var packet = [244, 71, 0, 0, 0, value];
|
|
1789
|
+
console.log(packet);
|
|
1790
|
+
return this.config_send(sensor_mac, packet);
|
|
1791
|
+
}
|
|
1792
|
+
config_set_fly_rate_97(sensor_mac, value){
|
|
1793
|
+
console.log('config_set_fly_rate_97');
|
|
1794
|
+
var packet = [244, 73, 0, 0, 0];
|
|
1795
|
+
let value_ = int2Bytes((value), 2);
|
|
1796
|
+
packet.push(...value_);
|
|
1797
|
+
console.log(packet);
|
|
1798
|
+
return this.config_send(sensor_mac, packet);
|
|
1799
|
+
}
|
|
1800
|
+
config_set_boot_up_time_97(sensor_mac, value){
|
|
1801
|
+
console.log('config_set_boot_up_time_97');
|
|
1802
|
+
var packet = [244, 51, 0, 0, 0];
|
|
1803
|
+
let value_ = int2Bytes((value), 2);
|
|
1804
|
+
packet.push(...value_);
|
|
1805
|
+
console.log(packet);
|
|
1806
|
+
return this.config_send(sensor_mac, packet);
|
|
1807
|
+
}
|
|
1709
1808
|
config_get_delay(sensor_mac){
|
|
1710
1809
|
return new Promise((fulfill, reject) => {
|
|
1711
1810
|
this.config_send(sensor_mac, [247, 21, 0, 0, 0]).then((res) => {
|
|
@@ -1928,6 +2027,7 @@ module.exports = class WirelessSensor{
|
|
|
1928
2027
|
function pass(packet){
|
|
1929
2028
|
clearTimeout(tout);
|
|
1930
2029
|
that._emitter.removeListener('config_error-'+sensor_mac, fail);
|
|
2030
|
+
packet.sent = data;
|
|
1931
2031
|
fulfill(packet);
|
|
1932
2032
|
f();
|
|
1933
2033
|
};
|
|
@@ -1977,8 +2077,8 @@ module.exports = class WirelessSensor{
|
|
|
1977
2077
|
}
|
|
1978
2078
|
// var odr;
|
|
1979
2079
|
var odr = payload[8];
|
|
1980
|
-
var device_temp = msbLsb(payload[11], payload[12])/100;
|
|
1981
|
-
var probe_temp = msbLsb(payload[13], payload[14])/100;
|
|
2080
|
+
var device_temp = signInt((msbLsb(payload[11], payload[12])), 16)/100;
|
|
2081
|
+
var probe_temp = signInt((msbLsb(payload[13], payload[14])), 16)/100;
|
|
1982
2082
|
|
|
1983
2083
|
switch(odr){
|
|
1984
2084
|
case 6:
|
|
@@ -2026,7 +2126,8 @@ module.exports = class WirelessSensor{
|
|
|
2026
2126
|
var odr = payload[9];
|
|
2027
2127
|
var en_axis = payload[10] & 7;
|
|
2028
2128
|
var fsr = payload[10] >> 5;
|
|
2029
|
-
|
|
2129
|
+
|
|
2130
|
+
var device_temp = signInt((msbLsb(payload[13], payload[14])), 16)/100;
|
|
2030
2131
|
switch(odr){
|
|
2031
2132
|
case 0:
|
|
2032
2133
|
odr = 4000;
|
|
@@ -2076,7 +2177,7 @@ module.exports = class WirelessSensor{
|
|
|
2076
2177
|
device_temp: device_temp,
|
|
2077
2178
|
}
|
|
2078
2179
|
if(firmware > 0){
|
|
2079
|
-
var probe_temp = msbLsb(payload[15], payload[16])/100;
|
|
2180
|
+
var probe_temp = signInt((msbLsb(payload[15], payload[16])), 16)/100;
|
|
2080
2181
|
globalDevices[deviceAddr].probe_temp = probe_temp;
|
|
2081
2182
|
}
|
|
2082
2183
|
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
@@ -3113,20 +3214,55 @@ function sensor_types(parent){
|
|
|
3113
3214
|
}
|
|
3114
3215
|
},
|
|
3115
3216
|
'74': {
|
|
3116
|
-
name: 'Wireless Temp Humidity Pressure Air quality Sensor',
|
|
3117
|
-
parse: (d) => {
|
|
3217
|
+
name: 'Wireless Temp Humidity Pressure Air quality Sensor V2',
|
|
3218
|
+
parse: (d, parsed) => {
|
|
3219
|
+
if(parsed[1] > 1){ // Firmware version
|
|
3220
|
+
return {
|
|
3221
|
+
temperature: signInt(d.slice(0, 2).reduce(msbLsb), 16) / 100,
|
|
3222
|
+
pressure: d.slice(2, 6).reduce(msbLsb) / 100,
|
|
3223
|
+
humidity: d.slice(6, 10).reduce(msbLsb) / 1000,
|
|
3224
|
+
resistance: d.slice(10, 14).reduce(msbLsb),
|
|
3225
|
+
iaq: d.slice(14, 16).reduce(msbLsb),
|
|
3226
|
+
co2_eqv: d.slice(16, 18).reduce(msbLsb),
|
|
3227
|
+
breath_voc: d.slice(18, 22).reduce(msbLsb) / 100,
|
|
3228
|
+
static_iaq: d.slice(22, 26).reduce(msbLsb) / 100,
|
|
3229
|
+
iaq_accuracy: d[26]
|
|
3230
|
+
};
|
|
3231
|
+
}
|
|
3232
|
+
else{
|
|
3233
|
+
return {
|
|
3234
|
+
temperature: signInt(d.slice(0, 2).reduce(msbLsb), 16) / 100,
|
|
3235
|
+
pressure: d.slice(2, 6).reduce(msbLsb) / 100,
|
|
3236
|
+
humidity: d.slice(6, 10).reduce(msbLsb) / 1000,
|
|
3237
|
+
resistance: d.slice(10, 14).reduce(msbLsb),
|
|
3238
|
+
iaq: d.slice(14, 16).reduce(msbLsb),
|
|
3239
|
+
co2_eqv: d.slice(16, 18).reduce(msbLsb),
|
|
3240
|
+
breath_voc: d.slice(18, 22).reduce(msbLsb)/ 100,
|
|
3241
|
+
static_iaq: (d.slice(22, 26).reverse()).reduce(msbLsb)/ 100,
|
|
3242
|
+
// TODO Check if the iaq_accuracy should still be d[27]
|
|
3243
|
+
iaq_accuracy: d[26]
|
|
3244
|
+
};
|
|
3245
|
+
}
|
|
3246
|
+
},
|
|
3247
|
+
'parse_fly': (frame) => {
|
|
3118
3248
|
return {
|
|
3119
|
-
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3249
|
+
'firmware': frame[2],
|
|
3250
|
+
'calibration_days': frame[12],
|
|
3251
|
+
'sensor_update_rate':frame.slice(13, 15).reduce(msbLsb),
|
|
3252
|
+
'hardware_id_1': frame[15],
|
|
3253
|
+
'hardware_id_2': frame[16],
|
|
3254
|
+
'hardware_id_3': frame[17],
|
|
3255
|
+
'report_rate': frame.slice(18, 22).reduce(msbLsb),
|
|
3256
|
+
'tx_counter': frame.slice(22, 26).reduce(msbLsb),
|
|
3257
|
+
'machine_values': {
|
|
3258
|
+
'firmware': frame[2],
|
|
3259
|
+
'calibration_days': frame[12],
|
|
3260
|
+
'sensor_update_rate':frame.slice(13, 15),
|
|
3261
|
+
'hardware_id': frame.slice(15, 18),
|
|
3262
|
+
'report_rate': frame.slice(18, 22),
|
|
3263
|
+
'tx_counter': frame.slice(22, 26),
|
|
3264
|
+
}
|
|
3265
|
+
}
|
|
3130
3266
|
}
|
|
3131
3267
|
},
|
|
3132
3268
|
'75': {
|
|
@@ -6036,6 +6172,333 @@ function sensor_types(parent){
|
|
|
6036
6172
|
};
|
|
6037
6173
|
}
|
|
6038
6174
|
},
|
|
6175
|
+
'97': {
|
|
6176
|
+
name: 'One channel Dynamic Ultrasound vibration Sensor',
|
|
6177
|
+
parse: (payload, parsed, mac) => {
|
|
6178
|
+
if (payload[8] === 1) { // raw
|
|
6179
|
+
var mode = payload[8];
|
|
6180
|
+
var sampling_frequency = payload.slice(9, 13).reduce(msbLsb);
|
|
6181
|
+
var sensor_index = payload[13];
|
|
6182
|
+
var gain_db = payload[14];
|
|
6183
|
+
var deviceAddr = mac;
|
|
6184
|
+
var expected_packets = payload.slice(15, 17).reduce(msbLsb);
|
|
6185
|
+
var current_packet = payload.slice(17, 19).reduce(msbLsb);
|
|
6186
|
+
var sdata_start = 19;
|
|
6187
|
+
|
|
6188
|
+
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
6189
|
+
// if(expected_packets == 1){
|
|
6190
|
+
// this.build_102_data(payload, deviceAddr, hour, minute, sdata_start, current_packet, firmware);
|
|
6191
|
+
// }
|
|
6192
|
+
|
|
6193
|
+
// if a packet is already stored with the same packet ID,
|
|
6194
|
+
// or if packet ID is 1,
|
|
6195
|
+
// or if current packet ID is not one more than last packet ID
|
|
6196
|
+
if(current_packet == 1 && expected_packets != 1) {
|
|
6197
|
+
if(current_packet in globalDevices[deviceAddr].data || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
|
|
6198
|
+
console.log('bad packet breakdown, deleting stream. Current packet:');
|
|
6199
|
+
console.log(current_packet);
|
|
6200
|
+
console.log('Total Expected Packets:');
|
|
6201
|
+
console.log(expected_packets);
|
|
6202
|
+
// console.log(current_packet in globalDevices[deviceAddr].data && current_packet == 1 && expected_packets != 1);
|
|
6203
|
+
// console.log(current_packet == 1);
|
|
6204
|
+
// console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
|
|
6205
|
+
if(this.hasOwnProperty('failure_no')){
|
|
6206
|
+
this.failure_no = this.failure_no + 1;
|
|
6207
|
+
}
|
|
6208
|
+
else{
|
|
6209
|
+
this.failure_no = 1;
|
|
6210
|
+
}
|
|
6211
|
+
if(this.hasOwnProperty('failure_no')){
|
|
6212
|
+
console.log('####falure no');
|
|
6213
|
+
console.log(this.failure_no);
|
|
6214
|
+
}
|
|
6215
|
+
delete globalDevices[deviceAddr];
|
|
6216
|
+
if(current_packet != 1){
|
|
6217
|
+
return;
|
|
6218
|
+
} else{
|
|
6219
|
+
if(current_packet != 1){
|
|
6220
|
+
console.log('bad packet cleanup');
|
|
6221
|
+
return;
|
|
6222
|
+
}
|
|
6223
|
+
globalDevices[deviceAddr] = {
|
|
6224
|
+
// stream_size: expected_packets,
|
|
6225
|
+
data: {},
|
|
6226
|
+
}
|
|
6227
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
6228
|
+
return;
|
|
6229
|
+
}
|
|
6230
|
+
}
|
|
6231
|
+
}
|
|
6232
|
+
if(expected_packets == 1){
|
|
6233
|
+
if(current_packet != 1){
|
|
6234
|
+
console.log('bad packet cleanup');
|
|
6235
|
+
return;
|
|
6236
|
+
}
|
|
6237
|
+
globalDevices[deviceAddr] = {
|
|
6238
|
+
// stream_size: expected_packets,
|
|
6239
|
+
data: {},
|
|
6240
|
+
}
|
|
6241
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
6242
|
+
//return;
|
|
6243
|
+
} else{
|
|
6244
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
6245
|
+
}
|
|
6246
|
+
if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
|
|
6247
|
+
var raw_data = new Array();
|
|
6248
|
+
for(const packet in globalDevices[deviceAddr].data){
|
|
6249
|
+
raw_data = raw_data.concat(globalDevices[deviceAddr].data[packet]);
|
|
6250
|
+
}
|
|
6251
|
+
var label = 0;
|
|
6252
|
+
// var fft = {
|
|
6253
|
+
// data: new Array()
|
|
6254
|
+
// // test: new Array()
|
|
6255
|
+
// };
|
|
6256
|
+
var fft = new Array();
|
|
6257
|
+
var adc = {};
|
|
6258
|
+
|
|
6259
|
+
for(var i = 0; i < raw_data.length; i+=2){
|
|
6260
|
+
label++;
|
|
6261
|
+
adc[label] = (raw_data[i]<<8)+(raw_data[i+1]);
|
|
6262
|
+
}
|
|
6263
|
+
// var data = globalDevices[deviceAddr];
|
|
6264
|
+
delete globalDevices[deviceAddr];
|
|
6265
|
+
if(this.hasOwnProperty('failure_no')){
|
|
6266
|
+
console.log('####falure no');
|
|
6267
|
+
console.log(this.failure_no);
|
|
6268
|
+
}
|
|
6269
|
+
return{
|
|
6270
|
+
'mode': mode,
|
|
6271
|
+
'sampling_frequency': sampling_frequency,
|
|
6272
|
+
'sensor_index': sensor_index,
|
|
6273
|
+
'gain_db':gain_db,
|
|
6274
|
+
'adc':adc,
|
|
6275
|
+
'raw_data':raw_data
|
|
6276
|
+
}
|
|
6277
|
+
}
|
|
6278
|
+
else{
|
|
6279
|
+
return;
|
|
6280
|
+
}
|
|
6281
|
+
|
|
6282
|
+
}else{
|
|
6283
|
+
if(current_packet != 1){
|
|
6284
|
+
console.log('bad packet cleanup');
|
|
6285
|
+
return;
|
|
6286
|
+
}
|
|
6287
|
+
globalDevices[deviceAddr] = {
|
|
6288
|
+
// stream_size: expected_packets,
|
|
6289
|
+
data: {},
|
|
6290
|
+
}
|
|
6291
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
6292
|
+
return;
|
|
6293
|
+
}
|
|
6294
|
+
}
|
|
6295
|
+
else if(payload[8] === 0){ // processed mode
|
|
6296
|
+
return {
|
|
6297
|
+
mode: payload[8],
|
|
6298
|
+
rms_mv: payload.slice(9, 13).reduce(msbLsb) / 1000,
|
|
6299
|
+
freq_1: payload.slice(13, 15).reduce(msbLsb),
|
|
6300
|
+
freq_2: payload.slice(15, 17).reduce(msbLsb),
|
|
6301
|
+
freq_3: payload.slice(17, 19).reduce(msbLsb),
|
|
6302
|
+
};
|
|
6303
|
+
}
|
|
6304
|
+
|
|
6305
|
+
},
|
|
6306
|
+
'parse_fly': (frame) => {
|
|
6307
|
+
return {
|
|
6308
|
+
'firmware': frame[2],
|
|
6309
|
+
'raw_length': frame[12],
|
|
6310
|
+
'raw_on_request_timeout': frame[13] + " Sec",
|
|
6311
|
+
'fly_rate': frame.slice(14, 16).reduce(msbLsb) + " min",
|
|
6312
|
+
'sensor_gain_db': frame[16] + " dB",
|
|
6313
|
+
'sensor_boot_time': frame[17] + " Sec",
|
|
6314
|
+
'hardware_id_1': frame[18],
|
|
6315
|
+
'hardware_id_2': frame[19],
|
|
6316
|
+
'hardware_id_3': frame[20],
|
|
6317
|
+
'rate': frame.slice(21, 25).reduce(msbLsb),
|
|
6318
|
+
'tx_life_count': frame.slice(25, 29).reduce(msbLsb),
|
|
6319
|
+
'machine_values': {
|
|
6320
|
+
'firmware': frame[2],
|
|
6321
|
+
'raw_lenght': frame[12],
|
|
6322
|
+
'raw_on_request_timeout': frame[13],
|
|
6323
|
+
'fly_rate': frame.slice(14, 16),
|
|
6324
|
+
'sensor_gain_db': frame[16],
|
|
6325
|
+
'sensor_boot_time': frame[17],
|
|
6326
|
+
'hardware_id_1': frame[18],
|
|
6327
|
+
'hardware_id_2': frame[19],
|
|
6328
|
+
'hardware_id_3': frame[20],
|
|
6329
|
+
'rate': frame.slice(21, 25),
|
|
6330
|
+
'tx_life_count': frame.slice(25, 29)
|
|
6331
|
+
}
|
|
6332
|
+
}
|
|
6333
|
+
}
|
|
6334
|
+
},
|
|
6335
|
+
'98': {
|
|
6336
|
+
name: 'Two channel Dynamic Ultrasound vibration Sensor',
|
|
6337
|
+
parse: (payload, parsed, mac) => {
|
|
6338
|
+
if (payload[8] === 1) { // raw
|
|
6339
|
+
var mode = payload[8];
|
|
6340
|
+
var sampling_frequency = payload.slice(9, 13).reduce(msbLsb);
|
|
6341
|
+
var sensor_index = payload[13];
|
|
6342
|
+
var gain_db = payload[14];
|
|
6343
|
+
var deviceAddr = mac;
|
|
6344
|
+
var expected_packets = payload.slice(15, 17).reduce(msbLsb);
|
|
6345
|
+
var current_packet = payload.slice(17, 19).reduce(msbLsb);
|
|
6346
|
+
var sdata_start = 19;
|
|
6347
|
+
|
|
6348
|
+
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
6349
|
+
// if(expected_packets == 1){
|
|
6350
|
+
// this.build_102_data(payload, deviceAddr, hour, minute, sdata_start, current_packet, firmware);
|
|
6351
|
+
// }
|
|
6352
|
+
|
|
6353
|
+
// if a packet is already stored with the same packet ID,
|
|
6354
|
+
// or if packet ID is 1,
|
|
6355
|
+
// or if current packet ID is not one more than last packet ID
|
|
6356
|
+
if(current_packet == 1 && expected_packets != 1) {
|
|
6357
|
+
if(current_packet in globalDevices[deviceAddr].data || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
|
|
6358
|
+
console.log('bad packet breakdown, deleting stream. Current packet:');
|
|
6359
|
+
console.log(current_packet);
|
|
6360
|
+
console.log('Total Expected Packets:');
|
|
6361
|
+
console.log(expected_packets);
|
|
6362
|
+
// console.log(current_packet in globalDevices[deviceAddr].data && current_packet == 1 && expected_packets != 1);
|
|
6363
|
+
// console.log(current_packet == 1);
|
|
6364
|
+
// console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
|
|
6365
|
+
if(this.hasOwnProperty('failure_no')){
|
|
6366
|
+
this.failure_no = this.failure_no + 1;
|
|
6367
|
+
}
|
|
6368
|
+
else{
|
|
6369
|
+
this.failure_no = 1;
|
|
6370
|
+
}
|
|
6371
|
+
if(this.hasOwnProperty('failure_no')){
|
|
6372
|
+
console.log('####falure no');
|
|
6373
|
+
console.log(this.failure_no);
|
|
6374
|
+
}
|
|
6375
|
+
delete globalDevices[deviceAddr];
|
|
6376
|
+
if(current_packet != 1){
|
|
6377
|
+
return;
|
|
6378
|
+
} else{
|
|
6379
|
+
if(current_packet != 1){
|
|
6380
|
+
console.log('bad packet cleanup');
|
|
6381
|
+
return;
|
|
6382
|
+
}
|
|
6383
|
+
globalDevices[deviceAddr] = {
|
|
6384
|
+
// stream_size: expected_packets,
|
|
6385
|
+
data: {},
|
|
6386
|
+
}
|
|
6387
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
6388
|
+
return;
|
|
6389
|
+
}
|
|
6390
|
+
}
|
|
6391
|
+
}
|
|
6392
|
+
if(expected_packets == 1){
|
|
6393
|
+
if(current_packet != 1){
|
|
6394
|
+
console.log('bad packet cleanup');
|
|
6395
|
+
return;
|
|
6396
|
+
}
|
|
6397
|
+
globalDevices[deviceAddr] = {
|
|
6398
|
+
// stream_size: expected_packets,
|
|
6399
|
+
data: {},
|
|
6400
|
+
}
|
|
6401
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
6402
|
+
//return;
|
|
6403
|
+
} else{
|
|
6404
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
6405
|
+
}
|
|
6406
|
+
if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
|
|
6407
|
+
var raw_data = new Array();
|
|
6408
|
+
for(const packet in globalDevices[deviceAddr].data){
|
|
6409
|
+
raw_data = raw_data.concat(globalDevices[deviceAddr].data[packet]);
|
|
6410
|
+
}
|
|
6411
|
+
var label = 0;
|
|
6412
|
+
// var fft = {
|
|
6413
|
+
// data: new Array()
|
|
6414
|
+
// // test: new Array()
|
|
6415
|
+
// };
|
|
6416
|
+
var fft = new Array();
|
|
6417
|
+
var adc = {};
|
|
6418
|
+
|
|
6419
|
+
for(var i = 0; i < raw_data.length; i+=2){
|
|
6420
|
+
label++;
|
|
6421
|
+
adc[label] = (raw_data[i]<<8)+(raw_data[i+1]);
|
|
6422
|
+
}
|
|
6423
|
+
// var data = globalDevices[deviceAddr];
|
|
6424
|
+
delete globalDevices[deviceAddr];
|
|
6425
|
+
if(this.hasOwnProperty('failure_no')){
|
|
6426
|
+
console.log('####falure no');
|
|
6427
|
+
console.log(this.failure_no);
|
|
6428
|
+
}
|
|
6429
|
+
return{
|
|
6430
|
+
'mode': mode,
|
|
6431
|
+
'sampling_frequency': sampling_frequency,
|
|
6432
|
+
'sensor_index': sensor_index,
|
|
6433
|
+
'gain_db':gain_db,
|
|
6434
|
+
'adc':adc,
|
|
6435
|
+
'raw_data':raw_data
|
|
6436
|
+
}
|
|
6437
|
+
}
|
|
6438
|
+
else{
|
|
6439
|
+
return;
|
|
6440
|
+
}
|
|
6441
|
+
|
|
6442
|
+
}else{
|
|
6443
|
+
if(current_packet != 1){
|
|
6444
|
+
console.log('bad packet cleanup');
|
|
6445
|
+
return;
|
|
6446
|
+
}
|
|
6447
|
+
globalDevices[deviceAddr] = {
|
|
6448
|
+
// stream_size: expected_packets,
|
|
6449
|
+
data: {},
|
|
6450
|
+
}
|
|
6451
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
6452
|
+
return;
|
|
6453
|
+
}
|
|
6454
|
+
}
|
|
6455
|
+
else if(payload[8] === 0){ // processed mode
|
|
6456
|
+
return {
|
|
6457
|
+
mode: payload[8],
|
|
6458
|
+
c1_rms_mv: payload.slice(9, 13).reduce(msbLsb) / 1000,
|
|
6459
|
+
c1_freq_1: payload.slice(13, 15).reduce(msbLsb),
|
|
6460
|
+
c1_freq_2: payload.slice(15, 17).reduce(msbLsb),
|
|
6461
|
+
c1_freq_3: payload.slice(17, 19).reduce(msbLsb),
|
|
6462
|
+
c2_rms_mv: payload.slice(19, 23).reduce(msbLsb) / 1000,
|
|
6463
|
+
c2_freq_1: payload.slice(23, 25).reduce(msbLsb),
|
|
6464
|
+
c2_freq_2: payload.slice(25, 27).reduce(msbLsb),
|
|
6465
|
+
c2_freq_3: payload.slice(27, 30).reduce(msbLsb)
|
|
6466
|
+
};
|
|
6467
|
+
}
|
|
6468
|
+
},
|
|
6469
|
+
'parse_fly': (frame) => {
|
|
6470
|
+
return {
|
|
6471
|
+
'firmware': frame[2],
|
|
6472
|
+
'raw_length': frame[12],
|
|
6473
|
+
'raw_on_request_timeout': frame[13] + " Sec",
|
|
6474
|
+
'fly_rate': frame.slice(14, 16).reduce(msbLsb) + " min",
|
|
6475
|
+
'c1_sensor_gain_db': frame[16] + " dB",
|
|
6476
|
+
'c1_sensor_boot_time': frame[17] + " Sec",
|
|
6477
|
+
'c2_sensor_gain_db': frame[18] + " dB",
|
|
6478
|
+
'c2_sensor_boot_time': frame[19] + " Sec",
|
|
6479
|
+
'hardware_id_1': frame[20],
|
|
6480
|
+
'hardware_id_2': frame[21],
|
|
6481
|
+
'hardware_id_3': frame[22],
|
|
6482
|
+
'rate': frame.slice(23, 27).reduce(msbLsb),
|
|
6483
|
+
'tx_life_count': frame.slice(27, 31).reduce(msbLsb),
|
|
6484
|
+
'machine_values': {
|
|
6485
|
+
'firmware': frame[2],
|
|
6486
|
+
'raw_lenght': frame[12],
|
|
6487
|
+
'raw_on_request_timeout': frame[13],
|
|
6488
|
+
'fly_rate': frame.slice(14, 16),
|
|
6489
|
+
'c1_sensor_gain_db': frame[16],
|
|
6490
|
+
'c1_sensor_boot_time': frame[17],
|
|
6491
|
+
'c2_sensor_gain_db': frame[18],
|
|
6492
|
+
'c2_sensor_boot_time': frame[19],
|
|
6493
|
+
'hardware_id_1': frame[20],
|
|
6494
|
+
'hardware_id_2': frame[21],
|
|
6495
|
+
'hardware_id_3': frame[22],
|
|
6496
|
+
'rate': frame.slice(23, 27),
|
|
6497
|
+
'tx_life_count': frame.slice(27, 31)
|
|
6498
|
+
}
|
|
6499
|
+
}
|
|
6500
|
+
}
|
|
6501
|
+
},
|
|
6039
6502
|
'101':{
|
|
6040
6503
|
name: 'Pro Vibration',
|
|
6041
6504
|
parse: (d, full)=>{
|
|
@@ -6571,6 +7034,7 @@ function sensor_types(parent){
|
|
|
6571
7034
|
z_peak_one_Hz: payload.slice(48, 50).reduce(msbLsb),
|
|
6572
7035
|
z_peak_two_Hz: payload.slice(50, 52).reduce(msbLsb),
|
|
6573
7036
|
z_peak_three_Hz: payload.slice(52, 54).reduce(msbLsb),
|
|
7037
|
+
rpm: payload.slice(54, 56).reduce(msbLsb) / 10
|
|
6574
7038
|
};
|
|
6575
7039
|
}
|
|
6576
7040
|
// else{
|
|
@@ -7237,6 +7701,7 @@ function sensor_types(parent){
|
|
|
7237
7701
|
z1_peak_one_Hz: payload.slice(48, 50).reduce(msbLsb),
|
|
7238
7702
|
z1_peak_two_Hz: payload.slice(50, 52).reduce(msbLsb),
|
|
7239
7703
|
z1_peak_three_Hz: payload.slice(52, 54).reduce(msbLsb),
|
|
7704
|
+
rpm_1: payload.slice(54, 56).reduce(msbLsb) / 10,
|
|
7240
7705
|
|
|
7241
7706
|
s2_odr: odr2,
|
|
7242
7707
|
s2_temperature: signInt(payload.slice(55, 57).reduce(msbLsb), 16) / 100,
|
|
@@ -7263,7 +7728,8 @@ function sensor_types(parent){
|
|
|
7263
7728
|
z2_displacement_mm: payload.slice(91, 93).reduce(msbLsb) / 100,
|
|
7264
7729
|
z2_peak_one_Hz: payload.slice(93, 95).reduce(msbLsb),
|
|
7265
7730
|
z2_peak_two_Hz: payload.slice(95, 97).reduce(msbLsb),
|
|
7266
|
-
z2_peak_three_Hz: payload.slice(97, 99).reduce(msbLsb)
|
|
7731
|
+
z2_peak_three_Hz: payload.slice(97, 99).reduce(msbLsb),
|
|
7732
|
+
rpm_2: payload.slice(99, 101).reduce(msbLsb) / 10
|
|
7267
7733
|
};
|
|
7268
7734
|
}
|
|
7269
7735
|
// else{
|
|
@@ -7987,6 +8453,7 @@ function sensor_types(parent){
|
|
|
7987
8453
|
z_peak_one_Hz: payload.slice(56, 58).reduce(msbLsb),
|
|
7988
8454
|
z_peak_two_Hz: payload.slice(58, 60).reduce(msbLsb),
|
|
7989
8455
|
z_peak_three_Hz: payload.slice(60, 62).reduce(msbLsb),
|
|
8456
|
+
rpm: payload.slice(62, 64).reduce(msbLsb) / 10
|
|
7990
8457
|
};
|
|
7991
8458
|
}
|
|
7992
8459
|
// else{
|
|
@@ -8595,6 +9062,7 @@ function sensor_types(parent){
|
|
|
8595
9062
|
z_peak_one_Hz: payload.slice(48, 50).reduce(msbLsb),
|
|
8596
9063
|
z_peak_two_Hz: payload.slice(50, 52).reduce(msbLsb),
|
|
8597
9064
|
z_peak_three_Hz: payload.slice(52, 54).reduce(msbLsb),
|
|
9065
|
+
rpm: payload.slice(54, 56).reduce(msbLsb) / 10
|
|
8598
9066
|
};
|
|
8599
9067
|
}
|
|
8600
9068
|
// else{
|
|
@@ -8801,7 +9269,93 @@ function sensor_types(parent){
|
|
|
8801
9269
|
}
|
|
8802
9270
|
}
|
|
8803
9271
|
},
|
|
8804
|
-
|
|
9272
|
+
'118': {
|
|
9273
|
+
name: 'Dual Pressure and Temperature Sensor',
|
|
9274
|
+
parse: (d) => {
|
|
9275
|
+
return{
|
|
9276
|
+
pressure_s1: signInt(d.slice(0, 4).reduce(msbLsb)),
|
|
9277
|
+
temperature_s1: signInt(d.slice(4, 6).reduce(msbLsb))/100,
|
|
9278
|
+
pressure_s2: signInt(d.slice(6, 10).reduce(msbLsb)),
|
|
9279
|
+
temperature_s2: signInt(d.slice(10, 12).reduce(msbLsb))/100
|
|
9280
|
+
};
|
|
9281
|
+
},
|
|
9282
|
+
'parse_fly': (frame) => {
|
|
9283
|
+
let psi_1;
|
|
9284
|
+
let psi_2;
|
|
9285
|
+
switch(frame[12]){
|
|
9286
|
+
case 0:
|
|
9287
|
+
psi_1 = "10 PSI"
|
|
9288
|
+
break;
|
|
9289
|
+
case 1:
|
|
9290
|
+
psi_1 = "20 PSI"
|
|
9291
|
+
break;
|
|
9292
|
+
case 2:
|
|
9293
|
+
psi_1 = "100 PSI"
|
|
9294
|
+
break;
|
|
9295
|
+
case 3:
|
|
9296
|
+
psi_1 = "500 PSI"
|
|
9297
|
+
break;
|
|
9298
|
+
case 4:
|
|
9299
|
+
psi_1 = "1000 PSI"
|
|
9300
|
+
break;
|
|
9301
|
+
case 5:
|
|
9302
|
+
psi_1 = "5000 PSI"
|
|
9303
|
+
break;
|
|
9304
|
+
case 6:
|
|
9305
|
+
psi_1 = "10000 PSI"
|
|
9306
|
+
break;
|
|
9307
|
+
}
|
|
9308
|
+
switch(frame[13]){
|
|
9309
|
+
case 0:
|
|
9310
|
+
psi_2 = "10 PSI"
|
|
9311
|
+
break;
|
|
9312
|
+
case 1:
|
|
9313
|
+
psi_2 = "20 PSI"
|
|
9314
|
+
break;
|
|
9315
|
+
case 2:
|
|
9316
|
+
psi_2 = "100 PSI"
|
|
9317
|
+
break;
|
|
9318
|
+
case 3:
|
|
9319
|
+
psi_2 = "500 PSI"
|
|
9320
|
+
break;
|
|
9321
|
+
case 4:
|
|
9322
|
+
psi_2 = "1000 PSI"
|
|
9323
|
+
break;
|
|
9324
|
+
case 5:
|
|
9325
|
+
psi_2 = "5000 PSI"
|
|
9326
|
+
break;
|
|
9327
|
+
case 6:
|
|
9328
|
+
psi_2 = "10000 PSI"
|
|
9329
|
+
break;
|
|
9330
|
+
}
|
|
9331
|
+
return {
|
|
9332
|
+
'firmware': frame[2],
|
|
9333
|
+
'sensor_1_fs': psi_1,
|
|
9334
|
+
'sensor_2_fs': psi_2,
|
|
9335
|
+
'auto_check_interval': frame.slice(14, 16).reduce(msbLsb) + " Sec.",
|
|
9336
|
+
'press_auto_check_percent': frame[17] + " %",
|
|
9337
|
+
'temp_auto_check_percent': frame[17] + " %",
|
|
9338
|
+
'hardware_id_1': frame[18],
|
|
9339
|
+
'hardware_id_2': frame[19],
|
|
9340
|
+
'hardware_id_3': frame[20],
|
|
9341
|
+
'sample_rate': frame.slice(21, 25).reduce(msbLsb) + " Sec.",
|
|
9342
|
+
'tx_life_counter': frame.slice(25, 29).reduce(msbLsb),
|
|
9343
|
+
'machine_values': {
|
|
9344
|
+
'firmware': frame[2],
|
|
9345
|
+
'sensor_1_fs': frame[12],
|
|
9346
|
+
'sensor_2_fs': frame[13],
|
|
9347
|
+
'auto_check_interval': frame.slice(14, 16),
|
|
9348
|
+
'press_auto_check_percent': frame[16],
|
|
9349
|
+
'temp_auto_check_percent': frame[17],
|
|
9350
|
+
'hardware_id_1': frame[18],
|
|
9351
|
+
'hardware_id_2': frame[19],
|
|
9352
|
+
'hardware_id_3': frame[20],
|
|
9353
|
+
'sample_rate': frame.slice(21, 25),
|
|
9354
|
+
'tx_life_counter': frame.slice(25, 29),
|
|
9355
|
+
}
|
|
9356
|
+
}
|
|
9357
|
+
}
|
|
9358
|
+
},
|
|
8805
9359
|
'180': {
|
|
8806
9360
|
name: 'C1D2 One Channel Vibration Plus',
|
|
8807
9361
|
parse: (payload, parsed, mac) => {
|