@ncd-io/node-red-enterprise-sensors 1.4.5 → 1.4.6
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 +1776 -464
- package/package.json +1 -1
- package/wireless.html +181 -14
- package/wireless.js +50 -8
package/lib/WirelessGateway.js
CHANGED
|
@@ -160,7 +160,7 @@ module.exports = class WirelessSensor{
|
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
// #OTF
|
|
163
|
-
var otf_devices = [4,12,21,23,26,32,33,39,44,45,48,52,53,56,58,74,76,78,79,80,81,82,84,88,89,90,91,97,98,101,102,103,105,106,107,108,109,110,111,112,114,117,118,119,120,121,122,123,124,180,181,202,217,211,270,519,520,521,531,535,536,537,538,539,540,541,542,543,1010,1011];
|
|
163
|
+
var otf_devices = [4,12,21,23,26,29,32,33,39,44,45,48,52,53,54,55,56,58,74,76,78,79,80,81,82,84,88,89,90,91,97,98,101,102,103,105,106,107,108,109,110,111,112,114,117,118,119,120,121,122,123,124,180,181,202,217,211,270,519,520,521,531,535,536,537,538,539,540,541,542,543,1010,1011];
|
|
164
164
|
var device_type = msbLsb(frame.data[6], frame.data[7]);
|
|
165
165
|
// var device_type = frame.data[7];
|
|
166
166
|
|
|
@@ -361,7 +361,7 @@ module.exports = class WirelessSensor{
|
|
|
361
361
|
};
|
|
362
362
|
|
|
363
363
|
// #OTF
|
|
364
|
-
var otf_devices = [4,12,21,23,26,32,33,39,44,45,48,52,53,56,58,74,76,78,79,80,81,82,84,88,89,90,91,97,98,101,102,103,105,106,107,108,109,110,111,112,114,117,118,119,120,121,122,123,124,180,181,202,211,217,270,519,520,521,531,535,536,537,538,539,540,541,542,543,1010,1011];
|
|
364
|
+
var otf_devices = [4,12,21,23,26,29,32,33,39,44,45,48,52,53,54,55,56,58,74,76,78,79,80,81,82,84,88,89,90,91,97,98,101,102,103,105,106,107,108,109,110,111,112,114,117,118,119,120,121,122,123,124,180,181,202,211,217,270,519,520,521,531,535,536,537,538,539,540,541,542,543,1010,1011];
|
|
365
365
|
if(otf_devices.includes(parsed.sensor_type)){
|
|
366
366
|
// If the message says FLY and there is not FLY timer in progress.
|
|
367
367
|
if(payload[8] == 70 && payload[9] == 76 && payload[10] == 89) {
|
|
@@ -783,7 +783,7 @@ module.exports = class WirelessSensor{
|
|
|
783
783
|
data: payload.slice(8)
|
|
784
784
|
};
|
|
785
785
|
// #OTF
|
|
786
|
-
}else if(parsed.sensor_type == 21 || 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 == 103 || parsed.sensor_type == 110 || parsed.sensor_type == 111 || parsed.sensor_type == 112 || parsed.sensor_type == 114 || parsed.sensor_type == 117 || 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 || parsed.sensor_type == 543){
|
|
786
|
+
}else if(parsed.sensor_type == 21 || parsed.sensor_type == 33 || parsed.sensor_type == 39 || parsed.sensor_type == 29 || parsed.sensor_type == 54 || parsed.sensor_type == 55 || 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 == 103 || parsed.sensor_type == 110 || parsed.sensor_type == 111 || parsed.sensor_type == 112 || parsed.sensor_type == 114 || parsed.sensor_type == 117 || parsed.sensor_type == 118 || parsed.sensor_type == 180 || parsed.sensor_type == 181 || parsed.sensor_type == 202 || parsed.sensor_type == 217 || parsed.sensor_type == 515 || parsed.sensor_type == 519 || parsed.sensor_type == 531 || parsed.sensor_type == 537 || parsed.sensor_type == 538 || parsed.sensor_type == 543){
|
|
787
787
|
parsed.sensor_data = this.sensor_types[parsed.sensor_type].parse(payload, parsed, frame.mac);
|
|
788
788
|
if(!parsed.sensor_data){
|
|
789
789
|
return;
|
|
@@ -2109,6 +2109,14 @@ module.exports = class WirelessSensor{
|
|
|
2109
2109
|
console.log(packet);
|
|
2110
2110
|
return this.config_send(sensor_mac, packet);
|
|
2111
2111
|
}
|
|
2112
|
+
config_set_tare_value_217(sensor_mac, value){
|
|
2113
|
+
console.log('config_set_tare_value_217');
|
|
2114
|
+
var packet = [244, 34, 0, 0, 26];
|
|
2115
|
+
let value_ = int2Bytes((value*100), 4);
|
|
2116
|
+
packet.push(...value_);
|
|
2117
|
+
console.log(packet);
|
|
2118
|
+
return this.config_send(sensor_mac, packet);
|
|
2119
|
+
}
|
|
2112
2120
|
config_set_pressure_limit_26(sensor_mac, value){
|
|
2113
2121
|
console.log('config_set_pressure_limit_26');
|
|
2114
2122
|
var packet = [244, 82, 0, 0, 26];
|
|
@@ -2477,6 +2485,38 @@ module.exports = class WirelessSensor{
|
|
|
2477
2485
|
console.log(packet);
|
|
2478
2486
|
return this.config_send(sensor_mac, packet);
|
|
2479
2487
|
}
|
|
2488
|
+
config_set_sensor_length_29(sensor_mac, value){
|
|
2489
|
+
console.log('config_set_sensor_length_29');
|
|
2490
|
+
var packet = [244, 63, 0, 0, 29];
|
|
2491
|
+
let value_ = int2Bytes(value, 2);
|
|
2492
|
+
packet.push(...value_);
|
|
2493
|
+
console.log(packet);
|
|
2494
|
+
return this.config_send(sensor_mac, packet);
|
|
2495
|
+
}
|
|
2496
|
+
config_set_rtd_wire_type_ch2_54(sensor_mac, value){
|
|
2497
|
+
console.log('config_set_rtd_wire_type_ch2_54');
|
|
2498
|
+
var packet = [244, 68, 0, 0, 39, value];
|
|
2499
|
+
console.log(packet);
|
|
2500
|
+
return this.config_send(sensor_mac, packet);
|
|
2501
|
+
}
|
|
2502
|
+
config_set_rtd_range_ch2_54(sensor_mac, value){
|
|
2503
|
+
console.log('config_set_rtd_range_ch2_54');
|
|
2504
|
+
var packet = [244, 70, 0, 0, 39, value];
|
|
2505
|
+
console.log(packet);
|
|
2506
|
+
return this.config_send(sensor_mac, packet);
|
|
2507
|
+
}
|
|
2508
|
+
config_set_rtd_wire_type_ch3_55(sensor_mac, value){
|
|
2509
|
+
console.log('config_set_rtd_wire_type_ch3_55');
|
|
2510
|
+
var packet = [244, 72, 0, 0, 39, value];
|
|
2511
|
+
console.log(packet);
|
|
2512
|
+
return this.config_send(sensor_mac, packet);
|
|
2513
|
+
}
|
|
2514
|
+
config_set_rtd_range_ch3_55(sensor_mac, value){
|
|
2515
|
+
console.log('config_set_rtd_range_ch3_55');
|
|
2516
|
+
var packet = [244, 74, 0, 0, 39, value];
|
|
2517
|
+
console.log(packet);
|
|
2518
|
+
return this.config_send(sensor_mac, packet);
|
|
2519
|
+
}
|
|
2480
2520
|
config_get_delay(sensor_mac){
|
|
2481
2521
|
return new Promise((fulfill, reject) => {
|
|
2482
2522
|
this.config_send(sensor_mac, [247, 21, 0, 0, 0]).then((res) => {
|
|
@@ -3929,12 +3969,42 @@ function sensor_types(parent){
|
|
|
3929
3969
|
},
|
|
3930
3970
|
'29': {
|
|
3931
3971
|
'name': 'Linear Displacement Sensor',
|
|
3932
|
-
parse: (
|
|
3933
|
-
|
|
3934
|
-
|
|
3935
|
-
|
|
3936
|
-
|
|
3937
|
-
}
|
|
3972
|
+
parse: (payload, parsed, mac) => {
|
|
3973
|
+
if(payload[7] >> 1 != 0){
|
|
3974
|
+
console.log('Error found');
|
|
3975
|
+
parsed.data = {error: 'Error found, invalid data'};
|
|
3976
|
+
return parsed;
|
|
3977
|
+
}
|
|
3978
|
+
if(parsed.firmware > 4){
|
|
3979
|
+
return {
|
|
3980
|
+
position: (payload.slice(8, 10).reduce(msbLsb))/100
|
|
3981
|
+
};
|
|
3982
|
+
}else{
|
|
3983
|
+
var adc = payload.slice(8, 10).reduce(msbLsb);
|
|
3984
|
+
return {
|
|
3985
|
+
adc: adc,
|
|
3986
|
+
position: adc/1023*100,
|
|
3987
|
+
};
|
|
3988
|
+
}
|
|
3989
|
+
},
|
|
3990
|
+
'parse_fly': (frame) => {
|
|
3991
|
+
let firmware = frame[2];
|
|
3992
|
+
if(firmware > 4){
|
|
3993
|
+
return {
|
|
3994
|
+
'firmware': frame[2],
|
|
3995
|
+
'sensor_length': (frame.slice(12, 14).reduce(msbLsb))+"mm",
|
|
3996
|
+
'hardware_id': frame.slice(14, 17),
|
|
3997
|
+
'report_rate': frame.slice(17, 21).reduce(msbLsb)+"sec",
|
|
3998
|
+
'tx_life_counter': frame.slice(21, 25).reduce(msbLsb),
|
|
3999
|
+
'machine_values': {
|
|
4000
|
+
'firmware': frame[2],
|
|
4001
|
+
'sensor_length': frame.slice(12, 14),
|
|
4002
|
+
'hardware_id': frame.slice(14, 17),
|
|
4003
|
+
'report_rate': frame.slice(17, 21),
|
|
4004
|
+
'tx_life_counter': frame.slice(21, 25)
|
|
4005
|
+
}
|
|
4006
|
+
}
|
|
4007
|
+
}
|
|
3938
4008
|
}
|
|
3939
4009
|
},
|
|
3940
4010
|
'30': {
|
|
@@ -4036,10 +4106,62 @@ function sensor_types(parent){
|
|
|
4036
4106
|
},
|
|
4037
4107
|
'39': {
|
|
4038
4108
|
name: 'RTD Temperature Sensor',
|
|
4039
|
-
parse: (
|
|
4040
|
-
|
|
4041
|
-
|
|
4042
|
-
|
|
4109
|
+
parse: (payload, parsed, mac) => {
|
|
4110
|
+
if(parsed.firmware > 5){
|
|
4111
|
+
let fault_status = '';
|
|
4112
|
+
if (payload[7] === 0) {
|
|
4113
|
+
fault_status = 'data_valid';
|
|
4114
|
+
} else if (payload[7] === 15) {
|
|
4115
|
+
fault_status = 'data_invalid';
|
|
4116
|
+
} else {
|
|
4117
|
+
const faultTypeBits = payload[7] & 0b00111100;
|
|
4118
|
+
switch (faultTypeBits) {
|
|
4119
|
+
case 32:
|
|
4120
|
+
fault_status = 'ref_in_vbias';
|
|
4121
|
+
break;
|
|
4122
|
+
case 16:
|
|
4123
|
+
fault_status = 'ref_in_force_close';
|
|
4124
|
+
break;
|
|
4125
|
+
case 8:
|
|
4126
|
+
fault_status = 'rtd_in_force_open';
|
|
4127
|
+
break;
|
|
4128
|
+
case 4:
|
|
4129
|
+
fault_status = 'over_under_voltage';
|
|
4130
|
+
break;
|
|
4131
|
+
}
|
|
4132
|
+
}
|
|
4133
|
+
return {
|
|
4134
|
+
fault_status: fault_status,
|
|
4135
|
+
temperature: signInt(payload.slice(8, 12).reduce(msbLsb), 32) / 100
|
|
4136
|
+
};
|
|
4137
|
+
} else {
|
|
4138
|
+
return {
|
|
4139
|
+
temperature: signInt(payload.slice(8, 12).reduce(msbLsb), 32) / 100
|
|
4140
|
+
};
|
|
4141
|
+
}
|
|
4142
|
+
},
|
|
4143
|
+
'parse_fly': (frame) => {
|
|
4144
|
+
let firmware = frame[2];
|
|
4145
|
+
if(firmware > 5){
|
|
4146
|
+
const interface_types = ["rtd_2_wire", "rtd_3_wire", "rtd_4_wire"];
|
|
4147
|
+
const rtd_types = ["rtd_pt_100", "rtd_pt_1000"];
|
|
4148
|
+
return {
|
|
4149
|
+
'firmware': frame[2],
|
|
4150
|
+
'sensor_interface': interface_types[frame[12]],
|
|
4151
|
+
'sensor_type': rtd_types[frame[13]],
|
|
4152
|
+
'hardware_id': frame.slice(14, 17),
|
|
4153
|
+
'report_rate': frame.slice(17, 21).reduce(msbLsb) + " sec",
|
|
4154
|
+
'tx_life_counter': frame.slice(21, 25).reduce(msbLsb),
|
|
4155
|
+
'machine_values': {
|
|
4156
|
+
'firmware': frame[2],
|
|
4157
|
+
'sensor_interface': frame[12],
|
|
4158
|
+
'sensor_type': frame[13],
|
|
4159
|
+
'hardware_id': frame.slice(14, 17),
|
|
4160
|
+
'report_rate': frame.slice(17, 21),
|
|
4161
|
+
'tx_life_counter': frame.slice(21, 25)
|
|
4162
|
+
}
|
|
4163
|
+
}
|
|
4164
|
+
}
|
|
4043
4165
|
}
|
|
4044
4166
|
},
|
|
4045
4167
|
'40': {
|
|
@@ -4490,13 +4612,151 @@ function sensor_types(parent){
|
|
|
4490
4612
|
}
|
|
4491
4613
|
},
|
|
4492
4614
|
'54': {
|
|
4493
|
-
name: '
|
|
4494
|
-
parse: (
|
|
4615
|
+
name: '2-Channel RTD Temperature Sensor',
|
|
4616
|
+
parse: (payload, parsed, mac) => {
|
|
4617
|
+
if(parsed.firmware > 5){
|
|
4618
|
+
let fault_status = '';
|
|
4619
|
+
if (payload[7] === 0) {
|
|
4620
|
+
fault_status = 'data_valid';
|
|
4621
|
+
} else if (payload[7] === 15) {
|
|
4622
|
+
fault_status = 'data_invalid';
|
|
4623
|
+
} else {
|
|
4624
|
+
const fault_bits = (payload[7] >> 2) & 0b00001111;
|
|
4625
|
+
switch (fault_bits) {
|
|
4626
|
+
case 8:
|
|
4627
|
+
fault_status = 'ref_in_vbias';
|
|
4628
|
+
break;
|
|
4629
|
+
case 4:
|
|
4630
|
+
fault_status = 'ref_in_force_close';
|
|
4631
|
+
break;
|
|
4632
|
+
case 2:
|
|
4633
|
+
fault_status = 'rtd_in_force_open';
|
|
4634
|
+
break;
|
|
4635
|
+
case 1:
|
|
4636
|
+
fault_status = 'over_under_voltage';
|
|
4637
|
+
break;
|
|
4638
|
+
}
|
|
4639
|
+
const channel_bits = payload[7] & 0b00000011;
|
|
4640
|
+
switch (channel_bits) {
|
|
4641
|
+
case 1:
|
|
4642
|
+
fault_status = fault_status + '_ch1';
|
|
4643
|
+
break;
|
|
4644
|
+
case 2:
|
|
4645
|
+
fault_status = fault_status + '_ch2';
|
|
4646
|
+
break;
|
|
4647
|
+
}
|
|
4648
|
+
}
|
|
4649
|
+
return {
|
|
4650
|
+
fault_status: fault_status,
|
|
4651
|
+
temperature_1: signInt(payload.slice(8, 12).reduce(msbLsb), 32) / 100,
|
|
4652
|
+
temperature_2: signInt(payload.slice(12, 16).reduce(msbLsb), 32) / 100
|
|
4653
|
+
};
|
|
4654
|
+
} else {
|
|
4655
|
+
return {
|
|
4656
|
+
temperature_1: signInt(payload.slice(8, 12).reduce(msbLsb), 32) / 100,
|
|
4657
|
+
temperature_2: signInt(payload.slice(12, 16).reduce(msbLsb), 32) / 100
|
|
4658
|
+
};
|
|
4659
|
+
}
|
|
4660
|
+
},
|
|
4661
|
+
'parse_fly': (frame) => {
|
|
4662
|
+
let firmware = frame[2];
|
|
4663
|
+
if(firmware > 5){
|
|
4664
|
+
const interface_types = ["rtd_2_wire", "rtd_3_wire", "rtd_4_wire"];
|
|
4665
|
+
const rtd_types = ["rtd_pt_100", "rtd_pt_1000"];
|
|
4666
|
+
return {
|
|
4667
|
+
'firmware': frame[2],
|
|
4668
|
+
'sensor_interface_ch1': interface_types[frame[12]],
|
|
4669
|
+
'sensor_type_ch1': rtd_types[frame[13]],
|
|
4670
|
+
'sensor_interface_ch2': interface_types[frame[14]],
|
|
4671
|
+
'sensor_type_ch2': rtd_types[frame[15]],
|
|
4672
|
+
'hardware_id': frame.slice(16, 19),
|
|
4673
|
+
'report_rate': frame.slice(19, 23).reduce(msbLsb) + " sec",
|
|
4674
|
+
'tx_life_counter': frame.slice(23, 27).reduce(msbLsb),
|
|
4675
|
+
'machine_values': {
|
|
4676
|
+
'firmware': frame[2],
|
|
4677
|
+
'sensor_interface_ch1': frame[12],
|
|
4678
|
+
'sensor_type_ch1': frame[13],
|
|
4679
|
+
'sensor_interface_ch2': frame[14],
|
|
4680
|
+
'sensor_type_ch2': frame[15],
|
|
4681
|
+
'hardware_id': frame.slice(16, 19),
|
|
4682
|
+
'report_rate': frame.slice(19, 23),
|
|
4683
|
+
'tx_life_counter': frame.slice(23, 27)
|
|
4684
|
+
}
|
|
4685
|
+
}
|
|
4686
|
+
}
|
|
4687
|
+
}
|
|
4688
|
+
},
|
|
4689
|
+
'55': {
|
|
4690
|
+
name: '3-Channel RTD Temperature Sensor',
|
|
4691
|
+
parse: (payload, parsed, mac) => {
|
|
4692
|
+
let fault_status = '';
|
|
4693
|
+
if (payload[7] === 0) {
|
|
4694
|
+
fault_status = 'data_valid';
|
|
4695
|
+
} else if (payload[7] === 15) {
|
|
4696
|
+
fault_status = 'data_invalid';
|
|
4697
|
+
} else {
|
|
4698
|
+
const fault_bits = (payload[7] >> 2) & 0b00001111;
|
|
4699
|
+
switch (fault_bits) {
|
|
4700
|
+
case 8:
|
|
4701
|
+
fault_status = 'ref_in_vbias';
|
|
4702
|
+
break;
|
|
4703
|
+
case 4:
|
|
4704
|
+
fault_status = 'ref_in_force_close';
|
|
4705
|
+
break;
|
|
4706
|
+
case 2:
|
|
4707
|
+
fault_status = 'rtd_in_force_open';
|
|
4708
|
+
break;
|
|
4709
|
+
case 1:
|
|
4710
|
+
fault_status = 'over_under_voltage';
|
|
4711
|
+
break;
|
|
4712
|
+
}
|
|
4713
|
+
const channel_bits = payload[7] & 0b00000011;
|
|
4714
|
+
switch (channel_bits) {
|
|
4715
|
+
case 1:
|
|
4716
|
+
fault_status = fault_status + '_ch1';
|
|
4717
|
+
break;
|
|
4718
|
+
case 2:
|
|
4719
|
+
fault_status = fault_status + '_ch2';
|
|
4720
|
+
break;
|
|
4721
|
+
case 3:
|
|
4722
|
+
fault_status = fault_status + '_ch3';
|
|
4723
|
+
break;
|
|
4724
|
+
}
|
|
4725
|
+
}
|
|
4495
4726
|
return {
|
|
4496
|
-
|
|
4497
|
-
|
|
4498
|
-
|
|
4727
|
+
fault_status: fault_status,
|
|
4728
|
+
temperature_1: signInt(payload.slice(8, 12).reduce(msbLsb), 32) / 100,
|
|
4729
|
+
temperature_2: signInt(payload.slice(12, 16).reduce(msbLsb), 32) / 100,
|
|
4730
|
+
temperature_3: signInt(payload.slice(16, 20).reduce(msbLsb), 32) / 100
|
|
4499
4731
|
};
|
|
4732
|
+
},
|
|
4733
|
+
'parse_fly': (frame) => {
|
|
4734
|
+
const interface_types = ["rtd_2_wire", "rtd_3_wire", "rtd_4_wire"];
|
|
4735
|
+
const rtd_types = ["rtd_pt_100", "rtd_pt_1000"];
|
|
4736
|
+
return {
|
|
4737
|
+
'firmware': frame[2],
|
|
4738
|
+
'sensor_interface_ch1': interface_types[frame[12]],
|
|
4739
|
+
'sensor_type_ch1': rtd_types[frame[13]],
|
|
4740
|
+
'sensor_interface_ch2': interface_types[frame[14]],
|
|
4741
|
+
'sensor_type_ch2': rtd_types[frame[15]],
|
|
4742
|
+
'sensor_interface_ch3': interface_types[frame[16]],
|
|
4743
|
+
'sensor_type_ch3': rtd_types[frame[17]],
|
|
4744
|
+
'hardware_id': frame.slice(18, 21),
|
|
4745
|
+
'report_rate': frame.slice(21, 25).reduce(msbLsb) + " sec",
|
|
4746
|
+
'tx_life_counter': frame.slice(25, 29).reduce(msbLsb),
|
|
4747
|
+
'machine_values': {
|
|
4748
|
+
'firmware': frame[2],
|
|
4749
|
+
'sensor_interface_ch1': frame[12],
|
|
4750
|
+
'sensor_type_ch1': frame[13],
|
|
4751
|
+
'sensor_interface_ch2': frame[14],
|
|
4752
|
+
'sensor_type_ch2': frame[15],
|
|
4753
|
+
'sensor_interface_ch3': frame[16],
|
|
4754
|
+
'sensor_type_ch3': frame[17],
|
|
4755
|
+
'hardware_id': frame.slice(18, 21),
|
|
4756
|
+
'report_rate': frame.slice(21, 25),
|
|
4757
|
+
'tx_life_counter': frame.slice(25, 29)
|
|
4758
|
+
}
|
|
4759
|
+
}
|
|
4500
4760
|
}
|
|
4501
4761
|
},
|
|
4502
4762
|
'56': {
|
|
@@ -8414,13 +8674,13 @@ function sensor_types(parent){
|
|
|
8414
8674
|
label++;
|
|
8415
8675
|
|
|
8416
8676
|
if('x_offset' in en_axis_data){
|
|
8417
|
-
fft_concat.x.push(parseFloat((signInt(((raw_data[i+en_axis_data.x_offset]<<8)+(raw_data[i+en_axis_data.x_offset+1])), 16)*fsr_mult).toFixed(
|
|
8677
|
+
fft_concat.x.push(parseFloat((signInt(((raw_data[i+en_axis_data.x_offset]<<8)+(raw_data[i+en_axis_data.x_offset+1])), 16)*fsr_mult).toFixed(5)));
|
|
8418
8678
|
}
|
|
8419
8679
|
if('y_offset' in en_axis_data){
|
|
8420
|
-
fft_concat.y.push(parseFloat((signInt(((raw_data[i+en_axis_data.y_offset]<<8)+(raw_data[i+en_axis_data.y_offset+1])), 16)*fsr_mult).toFixed(
|
|
8680
|
+
fft_concat.y.push(parseFloat((signInt(((raw_data[i+en_axis_data.y_offset]<<8)+(raw_data[i+en_axis_data.y_offset+1])), 16)*fsr_mult).toFixed(5)));
|
|
8421
8681
|
}
|
|
8422
8682
|
if('z_offset' in en_axis_data){
|
|
8423
|
-
fft_concat.z.push(parseFloat((signInt(((raw_data[i+en_axis_data.z_offset]<<8)+(raw_data[i+en_axis_data.z_offset+1])), 16)*fsr_mult).toFixed(
|
|
8683
|
+
fft_concat.z.push(parseFloat((signInt(((raw_data[i+en_axis_data.z_offset]<<8)+(raw_data[i+en_axis_data.z_offset+1])), 16)*fsr_mult).toFixed(5)));
|
|
8424
8684
|
}
|
|
8425
8685
|
}
|
|
8426
8686
|
var fft_concat_obj = {
|
|
@@ -8831,12 +9091,12 @@ function sensor_types(parent){
|
|
|
8831
9091
|
name: 'Machine Uptime Monitoring Sensor',
|
|
8832
9092
|
parse: (d, payload) => {
|
|
8833
9093
|
let firmware = payload[1];
|
|
8834
|
-
if(payload[7] & 2 != 0){
|
|
8835
|
-
|
|
8836
|
-
|
|
8837
|
-
|
|
8838
|
-
|
|
8839
|
-
}
|
|
9094
|
+
// if((payload[7] & 2) != 0){
|
|
9095
|
+
// console.log('Error found');
|
|
9096
|
+
// // parsed.data = {error: 'Error found, Accelerometer Probe may be unattached'};
|
|
9097
|
+
// let error = {error: 'Error found, Accelerometer Probe may be unattached'};
|
|
9098
|
+
// return error;
|
|
9099
|
+
// }
|
|
8840
9100
|
if(firmware > 4){
|
|
8841
9101
|
let report_type = "Regular";
|
|
8842
9102
|
switch(d[41]){
|
|
@@ -8853,7 +9113,7 @@ function sensor_types(parent){
|
|
|
8853
9113
|
report_type = "Threshold";
|
|
8854
9114
|
break;
|
|
8855
9115
|
}
|
|
8856
|
-
|
|
9116
|
+
let res = {
|
|
8857
9117
|
digital_input_counter: d.slice(0, 4).reduce(msbLsb),
|
|
8858
9118
|
digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
8859
9119
|
ct_input_counter: d.slice(8, 12).reduce(msbLsb),
|
|
@@ -8876,8 +9136,14 @@ function sensor_types(parent){
|
|
|
8876
9136
|
String(d[44]).padStart(2, '0')
|
|
8877
9137
|
].join(':')
|
|
8878
9138
|
};
|
|
9139
|
+
if((payload[7] & 2) != 0){
|
|
9140
|
+
res.accelerometer_counter = "No probe detected";
|
|
9141
|
+
res.accelerometer_uptime = "No probe detected";
|
|
9142
|
+
res.input_acc = "No probe detected";
|
|
9143
|
+
};
|
|
9144
|
+
return res;
|
|
8879
9145
|
}else{
|
|
8880
|
-
|
|
9146
|
+
let res = {
|
|
8881
9147
|
digital_input_counter: d.slice(0, 4).reduce(msbLsb),
|
|
8882
9148
|
digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
8883
9149
|
ct_input_counter: d.slice(8, 12).reduce(msbLsb),
|
|
@@ -8894,6 +9160,12 @@ function sensor_types(parent){
|
|
|
8894
9160
|
input_acc: d[40] & 8 ? 1 : 0,
|
|
8895
9161
|
input_mag: d[40] & 16 ? 1 : 0
|
|
8896
9162
|
};
|
|
9163
|
+
if((payload[7] & 2) != 0){
|
|
9164
|
+
res.accelerometer_counter = "No probe detected";
|
|
9165
|
+
res.accelerometer_uptime = "No probe detected";
|
|
9166
|
+
res.input_acc = "No probe detected";
|
|
9167
|
+
};
|
|
9168
|
+
return res;
|
|
8897
9169
|
}
|
|
8898
9170
|
},
|
|
8899
9171
|
'parse_fly': (frame) => {
|
|
@@ -9207,7 +9479,7 @@ function sensor_types(parent){
|
|
|
9207
9479
|
'tx_life_counter': frame.slice(50, 54)
|
|
9208
9480
|
}
|
|
9209
9481
|
}
|
|
9210
|
-
} else if(frame[2]
|
|
9482
|
+
} else if(frame[2] == 14){ // 14
|
|
9211
9483
|
let reset_mode = "Disabled";
|
|
9212
9484
|
switch(frame[38]){
|
|
9213
9485
|
case 0:
|
|
@@ -9313,9 +9585,10 @@ function sensor_types(parent){
|
|
|
9313
9585
|
'counter_reset_mode': reset_mode,
|
|
9314
9586
|
'sampling_interval': rtc_sampling_interval,
|
|
9315
9587
|
'acc_odr': acc_odr,
|
|
9316
|
-
'
|
|
9317
|
-
'
|
|
9318
|
-
'
|
|
9588
|
+
'counter_ignore_timeout': frame.slice(41, 43).reduce(msbLsb) + "sec",
|
|
9589
|
+
'hardware_id': frame.slice(43, 46),
|
|
9590
|
+
'report_rate': frame.slice(46, 50).reduce(msbLsb) + "sec",
|
|
9591
|
+
'tx_life_counter': frame.slice(50, 54).reduce(msbLsb),
|
|
9319
9592
|
'machine_values': {
|
|
9320
9593
|
'firmware': frame[2],
|
|
9321
9594
|
'accelerometer_threshold': frame[16],
|
|
@@ -9334,14 +9607,15 @@ function sensor_types(parent){
|
|
|
9334
9607
|
'counter_reset_mode': frame[38],
|
|
9335
9608
|
'sampling_interval': frame[39],
|
|
9336
9609
|
'acc_odr': frame[40],
|
|
9337
|
-
'
|
|
9338
|
-
'
|
|
9339
|
-
'
|
|
9610
|
+
'counter_ignore_timeout': frame.slice(41, 43),
|
|
9611
|
+
'hardware_id': frame.slice(43, 46),
|
|
9612
|
+
'report_rate': frame.slice(46, 50),
|
|
9613
|
+
'tx_life_counter': frame.slice(50, 54)
|
|
9340
9614
|
}
|
|
9341
9615
|
}
|
|
9342
|
-
} else if(frame[2] >
|
|
9616
|
+
} else if(frame[2] > 9){ // firmware 10 11 12 13 14 15
|
|
9343
9617
|
let reset_mode = "Disabled";
|
|
9344
|
-
switch(frame[
|
|
9618
|
+
switch(frame[38]){
|
|
9345
9619
|
case 0:
|
|
9346
9620
|
reset_mode = "Disabled";
|
|
9347
9621
|
break;
|
|
@@ -9353,7 +9627,7 @@ function sensor_types(parent){
|
|
|
9353
9627
|
break;
|
|
9354
9628
|
}
|
|
9355
9629
|
let acc_odr = "10Hz";
|
|
9356
|
-
switch(frame[
|
|
9630
|
+
switch(frame[40]){
|
|
9357
9631
|
case 0:
|
|
9358
9632
|
acc_odr = "10Hz";
|
|
9359
9633
|
break;
|
|
@@ -9374,7 +9648,7 @@ function sensor_types(parent){
|
|
|
9374
9648
|
break;
|
|
9375
9649
|
}
|
|
9376
9650
|
let rtc_sampling_interval = "5 seconds";
|
|
9377
|
-
switch(frame[
|
|
9651
|
+
switch(frame[39]){
|
|
9378
9652
|
case 0:
|
|
9379
9653
|
rtc_sampling_interval = "1 minute";
|
|
9380
9654
|
break;
|
|
@@ -9418,69 +9692,201 @@ function sensor_types(parent){
|
|
|
9418
9692
|
return {
|
|
9419
9693
|
'firmware': frame[2],
|
|
9420
9694
|
'accelerometer_threshold': (frame[16]* 32) + "mg",
|
|
9421
|
-
'debouncing_timeout': frame
|
|
9422
|
-
'accelero_state': frame[
|
|
9423
|
-
'input_1_active_edge': frame[
|
|
9424
|
-
'input_2_active_edge': frame[
|
|
9425
|
-
'input_3_active_edge': frame[
|
|
9426
|
-
'counter_threshold': frame.slice(
|
|
9427
|
-
'trasnmit_on_change_status': frame[
|
|
9695
|
+
'debouncing_timeout': frame.slice(17, 19).reduce(msbLsb) + "msec",
|
|
9696
|
+
'accelero_state': frame[19]? "Enabled": "Disabled",
|
|
9697
|
+
'input_1_active_edge': frame[20]? "Rising": "Falling",
|
|
9698
|
+
'input_2_active_edge': frame[21]? "Rising": "Falling",
|
|
9699
|
+
'input_3_active_edge': frame[22]? "Rising": "Falling",
|
|
9700
|
+
'counter_threshold': frame.slice(23, 27).reduce(msbLsb),
|
|
9701
|
+
'trasnmit_on_change_status': frame[27]? "Enabled": "Disabled",
|
|
9428
9702
|
'Shift_end_1': [
|
|
9429
|
-
String(frame[
|
|
9430
|
-
String(frame[
|
|
9703
|
+
String(frame[28]).padStart(2, '0'),
|
|
9704
|
+
String(frame[29]).padStart(2, '0')
|
|
9431
9705
|
].join(':'),
|
|
9432
9706
|
'Shift_end_2': [
|
|
9433
|
-
String(frame[
|
|
9434
|
-
String(frame[
|
|
9707
|
+
String(frame[30]).padStart(2, '0'),
|
|
9708
|
+
String(frame[31]).padStart(2, '0')
|
|
9435
9709
|
].join(':'),
|
|
9436
9710
|
'Shift_end_3': [
|
|
9437
|
-
String(frame[
|
|
9438
|
-
String(frame[
|
|
9711
|
+
String(frame[32]).padStart(2, '0'),
|
|
9712
|
+
String(frame[33]).padStart(2, '0')
|
|
9439
9713
|
].join(':'),
|
|
9440
9714
|
'Shift_end_4': [
|
|
9441
|
-
String(frame[
|
|
9442
|
-
String(frame[
|
|
9715
|
+
String(frame[34]).padStart(2, '0'),
|
|
9716
|
+
String(frame[35]).padStart(2, '0')
|
|
9443
9717
|
].join(':'),
|
|
9444
|
-
'reset_timeout': frame.slice(
|
|
9718
|
+
'reset_timeout': frame.slice(36, 38).reduce(msbLsb) + "min",
|
|
9445
9719
|
'counter_reset_mode': reset_mode,
|
|
9446
9720
|
'sampling_interval': rtc_sampling_interval,
|
|
9447
9721
|
'acc_odr': acc_odr,
|
|
9448
|
-
'hardware_id': frame.slice(
|
|
9449
|
-
'report_rate': frame.slice(
|
|
9450
|
-
'tx_life_counter': frame.slice(
|
|
9722
|
+
'hardware_id': frame.slice(41, 44),
|
|
9723
|
+
'report_rate': frame.slice(44, 48).reduce(msbLsb) + "sec",
|
|
9724
|
+
'tx_life_counter': frame.slice(48, 52).reduce(msbLsb),
|
|
9451
9725
|
'machine_values': {
|
|
9452
9726
|
'firmware': frame[2],
|
|
9453
9727
|
'accelerometer_threshold': frame[16],
|
|
9454
|
-
'debouncing_timeout': frame
|
|
9455
|
-
'accelero_state': frame[
|
|
9456
|
-
'input_1_active_edge': frame[
|
|
9457
|
-
'input_2_active_edge': frame[
|
|
9458
|
-
'input_3_active_edge': frame[
|
|
9459
|
-
'counter_threshold': frame.slice(
|
|
9460
|
-
'trasnmit_on_change_status': frame[
|
|
9461
|
-
'Shift_end_1': frame.slice(
|
|
9462
|
-
'Shift_end_2': frame.slice(
|
|
9463
|
-
'Shift_end_3': frame.slice(
|
|
9464
|
-
'Shift_end_4': frame.slice(
|
|
9465
|
-
'reset_timeout': frame.slice(
|
|
9466
|
-
'counter_reset_mode': frame[
|
|
9467
|
-
'sampling_interval': frame[
|
|
9468
|
-
'acc_odr': frame[
|
|
9469
|
-
'hardware_id': frame.slice(
|
|
9470
|
-
'report_rate': frame.slice(
|
|
9471
|
-
'tx_life_counter': frame.slice(
|
|
9728
|
+
'debouncing_timeout': frame.slice(17, 19),
|
|
9729
|
+
'accelero_state': frame[19],
|
|
9730
|
+
'input_1_active_edge': frame[20],
|
|
9731
|
+
'input_2_active_edge': frame[21],
|
|
9732
|
+
'input_3_active_edge': frame[22],
|
|
9733
|
+
'counter_threshold': frame.slice(23, 27),
|
|
9734
|
+
'trasnmit_on_change_status': frame[27],
|
|
9735
|
+
'Shift_end_1': frame.slice(28, 30),
|
|
9736
|
+
'Shift_end_2': frame.slice(30, 32),
|
|
9737
|
+
'Shift_end_3': frame.slice(32, 34),
|
|
9738
|
+
'Shift_end_4': frame.slice(34, 36),
|
|
9739
|
+
'reset_timeout': frame.slice(36, 38),
|
|
9740
|
+
'counter_reset_mode': frame[38],
|
|
9741
|
+
'sampling_interval': frame[39],
|
|
9742
|
+
'acc_odr': frame[40],
|
|
9743
|
+
'hardware_id': frame.slice(41, 44),
|
|
9744
|
+
'report_rate': frame.slice(44, 48),
|
|
9745
|
+
'tx_life_counter': frame.slice(48, 52)
|
|
9472
9746
|
}
|
|
9473
9747
|
}
|
|
9474
|
-
} else{
|
|
9475
|
-
|
|
9476
|
-
|
|
9477
|
-
|
|
9478
|
-
|
|
9479
|
-
|
|
9480
|
-
|
|
9481
|
-
|
|
9482
|
-
|
|
9483
|
-
|
|
9748
|
+
} else if(frame[2] > 8){
|
|
9749
|
+
let reset_mode = "Disabled";
|
|
9750
|
+
switch(frame[37]){
|
|
9751
|
+
case 0:
|
|
9752
|
+
reset_mode = "Disabled";
|
|
9753
|
+
break;
|
|
9754
|
+
case 1:
|
|
9755
|
+
reset_mode = "Shift Ends";
|
|
9756
|
+
break;
|
|
9757
|
+
case 2:
|
|
9758
|
+
reset_mode = "Timeout";
|
|
9759
|
+
break;
|
|
9760
|
+
}
|
|
9761
|
+
let acc_odr = "10Hz";
|
|
9762
|
+
switch(frame[39]){
|
|
9763
|
+
case 0:
|
|
9764
|
+
acc_odr = "10Hz";
|
|
9765
|
+
break;
|
|
9766
|
+
case 1:
|
|
9767
|
+
acc_odr = "20Hz";
|
|
9768
|
+
break;
|
|
9769
|
+
case 2:
|
|
9770
|
+
acc_odr = "50Hz";
|
|
9771
|
+
break;
|
|
9772
|
+
case 3:
|
|
9773
|
+
acc_odr = "100Hz";
|
|
9774
|
+
break;
|
|
9775
|
+
case 4:
|
|
9776
|
+
acc_odr = "200Hz";
|
|
9777
|
+
break;
|
|
9778
|
+
case 5:
|
|
9779
|
+
acc_odr = "400Hz";
|
|
9780
|
+
break;
|
|
9781
|
+
}
|
|
9782
|
+
let rtc_sampling_interval = "5 seconds";
|
|
9783
|
+
switch(frame[38]){
|
|
9784
|
+
case 0:
|
|
9785
|
+
rtc_sampling_interval = "1 minute";
|
|
9786
|
+
break;
|
|
9787
|
+
case 1:
|
|
9788
|
+
rtc_sampling_interval = "5 minutes";
|
|
9789
|
+
break;
|
|
9790
|
+
case 2:
|
|
9791
|
+
rtc_sampling_interval = "15 minutes";
|
|
9792
|
+
break;
|
|
9793
|
+
case 3:
|
|
9794
|
+
rtc_sampling_interval = "30 minutes";
|
|
9795
|
+
break;
|
|
9796
|
+
case 4:
|
|
9797
|
+
rtc_sampling_interval = "1 hour";
|
|
9798
|
+
break;
|
|
9799
|
+
case 5:
|
|
9800
|
+
rtc_sampling_interval = "2 hours";
|
|
9801
|
+
break;
|
|
9802
|
+
case 6:
|
|
9803
|
+
rtc_sampling_interval = "3 hours";
|
|
9804
|
+
break;
|
|
9805
|
+
case 7:
|
|
9806
|
+
rtc_sampling_interval = "6 hours";
|
|
9807
|
+
break;
|
|
9808
|
+
case 8:
|
|
9809
|
+
rtc_sampling_interval = "12 hours";
|
|
9810
|
+
break;
|
|
9811
|
+
case 9:
|
|
9812
|
+
rtc_sampling_interval = "5 seconds";
|
|
9813
|
+
break;
|
|
9814
|
+
case 10:
|
|
9815
|
+
rtc_sampling_interval = "10 seconds";
|
|
9816
|
+
break;
|
|
9817
|
+
case 11:
|
|
9818
|
+
rtc_sampling_interval = "15 seconds";
|
|
9819
|
+
break;
|
|
9820
|
+
case 12:
|
|
9821
|
+
rtc_sampling_interval = "30 seconds";
|
|
9822
|
+
break;
|
|
9823
|
+
}
|
|
9824
|
+
return {
|
|
9825
|
+
'firmware': frame[2],
|
|
9826
|
+
'accelerometer_threshold': (frame[16]* 32) + "mg",
|
|
9827
|
+
'debouncing_timeout': frame[17] + "msec",
|
|
9828
|
+
'accelero_state': frame[18]? "Enabled": "Disabled",
|
|
9829
|
+
'input_1_active_edge': frame[19]? "Rising": "Falling",
|
|
9830
|
+
'input_2_active_edge': frame[20]? "Rising": "Falling",
|
|
9831
|
+
'input_3_active_edge': frame[21]? "Rising": "Falling",
|
|
9832
|
+
'counter_threshold': frame.slice(22, 26).reduce(msbLsb),
|
|
9833
|
+
'trasnmit_on_change_status': frame[26]? "Enabled": "Disabled",
|
|
9834
|
+
'Shift_end_1': [
|
|
9835
|
+
String(frame[27]).padStart(2, '0'),
|
|
9836
|
+
String(frame[28]).padStart(2, '0')
|
|
9837
|
+
].join(':'),
|
|
9838
|
+
'Shift_end_2': [
|
|
9839
|
+
String(frame[29]).padStart(2, '0'),
|
|
9840
|
+
String(frame[30]).padStart(2, '0')
|
|
9841
|
+
].join(':'),
|
|
9842
|
+
'Shift_end_3': [
|
|
9843
|
+
String(frame[31]).padStart(2, '0'),
|
|
9844
|
+
String(frame[32]).padStart(2, '0')
|
|
9845
|
+
].join(':'),
|
|
9846
|
+
'Shift_end_4': [
|
|
9847
|
+
String(frame[33]).padStart(2, '0'),
|
|
9848
|
+
String(frame[34]).padStart(2, '0')
|
|
9849
|
+
].join(':'),
|
|
9850
|
+
'reset_timeout': frame.slice(35, 37).reduce(msbLsb) + "min",
|
|
9851
|
+
'counter_reset_mode': reset_mode,
|
|
9852
|
+
'sampling_interval': rtc_sampling_interval,
|
|
9853
|
+
'acc_odr': acc_odr,
|
|
9854
|
+
'hardware_id': frame.slice(40, 43),
|
|
9855
|
+
'report_rate': frame.slice(43, 47).reduce(msbLsb) + "sec",
|
|
9856
|
+
'tx_life_counter': frame.slice(47, 51).reduce(msbLsb),
|
|
9857
|
+
'machine_values': {
|
|
9858
|
+
'firmware': frame[2],
|
|
9859
|
+
'accelerometer_threshold': frame[16],
|
|
9860
|
+
'debouncing_timeout': frame[17],
|
|
9861
|
+
'accelero_state': frame[18],
|
|
9862
|
+
'input_1_active_edge': frame[19],
|
|
9863
|
+
'input_2_active_edge': frame[20],
|
|
9864
|
+
'input_3_active_edge': frame[21],
|
|
9865
|
+
'counter_threshold': frame.slice(22, 26),
|
|
9866
|
+
'trasnmit_on_change_status': frame[26],
|
|
9867
|
+
'Shift_end_1': frame.slice(27, 29),
|
|
9868
|
+
'Shift_end_2': frame.slice(29, 31),
|
|
9869
|
+
'Shift_end_3': frame.slice(31, 33),
|
|
9870
|
+
'Shift_end_4': frame.slice(33, 35),
|
|
9871
|
+
'reset_timeout': frame.slice(35, 37),
|
|
9872
|
+
'counter_reset_mode': frame[37],
|
|
9873
|
+
'sampling_interval': frame[38],
|
|
9874
|
+
'acc_odr': frame[39],
|
|
9875
|
+
'hardware_id': frame.slice(40, 43),
|
|
9876
|
+
'report_rate': frame.slice(43, 47),
|
|
9877
|
+
'tx_life_counter': frame.slice(47, 51)
|
|
9878
|
+
}
|
|
9879
|
+
}
|
|
9880
|
+
} else{
|
|
9881
|
+
return {
|
|
9882
|
+
'firmware': frame[2],
|
|
9883
|
+
'report_rate': frame.slice(12, 16).reduce(msbLsb).toString() + "sec.",
|
|
9884
|
+
'accelerometer_threshold': (frame[16]* 32) + "mg.",
|
|
9885
|
+
'debouncing_timeout': frame[17].toString() + "msec.",
|
|
9886
|
+
'accelero_state': frame[18],
|
|
9887
|
+
'digital_inputs_active_edge': frame.slice(19, 22).reduce(msbLsb),
|
|
9888
|
+
'counter_threshold': frame.slice(22, 26).reduce(msbLsb),
|
|
9889
|
+
'trasnmit_on_change_status': frame[26],
|
|
9484
9890
|
'machine_values': {
|
|
9485
9891
|
'firmware': frame[2],
|
|
9486
9892
|
'report_rate': frame.slice(12, 16),
|
|
@@ -12253,7 +12659,7 @@ function sensor_types(parent){
|
|
|
12253
12659
|
frame_data.auto_raw_interval = frame[32] * frame_data.sampling_interval_number || 'disabled';
|
|
12254
12660
|
frame_data.auto_raw_interval = typeof frame_data.auto_raw_interval === 'number' ? frame_data.auto_raw_interval+'min' : frame_data.auto_raw_interval;
|
|
12255
12661
|
frame_data.smart_mode_threshold = frame[34] * 50;
|
|
12256
|
-
if(frame[2] >
|
|
12662
|
+
if(frame[2] > 6){ // for Firmware v7 and above
|
|
12257
12663
|
frame_data.motion_to_delay = frame[41] * 50;
|
|
12258
12664
|
return {
|
|
12259
12665
|
'firmware': frame[2],
|
|
@@ -12311,6 +12717,54 @@ function sensor_types(parent){
|
|
|
12311
12717
|
'tx_lifetime_counter': frame.slice(50, 54)
|
|
12312
12718
|
}
|
|
12313
12719
|
}
|
|
12720
|
+
} else if(frame[2] > 5){ // for Firmware v6
|
|
12721
|
+
frame_data.motion_to_delay = frame[41] * 50;
|
|
12722
|
+
return {
|
|
12723
|
+
'firmware': frame[2],
|
|
12724
|
+
'destination_address': toMac(frame.slice(12, 16)),
|
|
12725
|
+
'mode': frame_data.mode,
|
|
12726
|
+
'odr': frame_data.odr_1+'Hz',
|
|
12727
|
+
'sampling_duration': frame_data.sampling_duration_1,
|
|
12728
|
+
'filter_status': frame_data.filter_status,
|
|
12729
|
+
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
12730
|
+
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
12731
|
+
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
12732
|
+
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
12733
|
+
'sampling_interval': frame_data.sampling_interval,
|
|
12734
|
+
'on_request_timeout': frame_data.on_request_timeout,
|
|
12735
|
+
'deadband': frame_data.deadband,
|
|
12736
|
+
'payload_length': frame_data.payload_length,
|
|
12737
|
+
'fsr': frame_data.fsr_text,
|
|
12738
|
+
'rpm_compute_status': frame_data.rpm_status,
|
|
12739
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
12740
|
+
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
12741
|
+
'smart_mode_skip_count': frame[33],
|
|
12742
|
+
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
12743
|
+
'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
|
|
12744
|
+
'max_tx_raw_samples': frame.slice(39, 41).reduce(msbLsb),
|
|
12745
|
+
'machine_values': {
|
|
12746
|
+
'firmware': frame[2],
|
|
12747
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
12748
|
+
'mode': frame[16],
|
|
12749
|
+
'odr': frame[17],
|
|
12750
|
+
'sampling_duration': frame[18],
|
|
12751
|
+
'filter_status': frame[19],
|
|
12752
|
+
'lpf_coeff': frame[20],
|
|
12753
|
+
'hpf_coeff': frame[21],
|
|
12754
|
+
'sampling_interval': frame[22],
|
|
12755
|
+
'on_request_timeout': frame[23],
|
|
12756
|
+
'deadband': frame[24],
|
|
12757
|
+
'payload_length': frame[25],
|
|
12758
|
+
'fsr': frame[26],
|
|
12759
|
+
'rpm_compute_status': frame[27],
|
|
12760
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
|
|
12761
|
+
'auto_raw_interval': frame[32],
|
|
12762
|
+
'smart_mode_skip_count': frame[33],
|
|
12763
|
+
'smart_mode_acc_threshold':frame[34],
|
|
12764
|
+
'uptime_counter': frame.slice(35, 39),
|
|
12765
|
+
'max_tx_raw_samples': frame.slice(39, 41)
|
|
12766
|
+
}
|
|
12767
|
+
}
|
|
12314
12768
|
} else if(frame[2] > 4){ // for Firmware v5 and above
|
|
12315
12769
|
return {
|
|
12316
12770
|
'firmware': frame[2],
|
|
@@ -12665,13 +13119,21 @@ function sensor_types(parent){
|
|
|
12665
13119
|
},
|
|
12666
13120
|
'118': {
|
|
12667
13121
|
name: 'Dual Pressure and Temperature Sensor',
|
|
12668
|
-
parse: (
|
|
12669
|
-
|
|
12670
|
-
pressure_s1: signInt(
|
|
12671
|
-
temperature_s1: signInt(
|
|
12672
|
-
pressure_s2: signInt(
|
|
12673
|
-
temperature_s2: signInt(
|
|
13122
|
+
parse: (payload, parsed, mac) => {
|
|
13123
|
+
let res = {
|
|
13124
|
+
pressure_s1: signInt(payload.slice(8, 12).reduce(msbLsb),16)/100,
|
|
13125
|
+
temperature_s1: signInt(payload.slice(12, 14).reduce(msbLsb),16)/100,
|
|
13126
|
+
pressure_s2: signInt(payload.slice(14, 18).reduce(msbLsb),16)/100,
|
|
13127
|
+
temperature_s2: signInt(payload.slice(18, 20).reduce(msbLsb),16)/100
|
|
12674
13128
|
};
|
|
13129
|
+
if(payload[7] & 2 && payload[7] & 4){
|
|
13130
|
+
res.error = 'Error: Sensor Probe 1 and 2 communication error';
|
|
13131
|
+
} else if(payload[7] & 2){
|
|
13132
|
+
res.error = 'Error: Sensor Probe 1 communication error';
|
|
13133
|
+
} else if(payload[7] & 4){
|
|
13134
|
+
res.error = 'Error: Sensor Probe 2 communication error';
|
|
13135
|
+
}
|
|
13136
|
+
return res;
|
|
12675
13137
|
},
|
|
12676
13138
|
'parse_fly': (frame) => {
|
|
12677
13139
|
let psi_1;
|
|
@@ -12747,13 +13209,13 @@ function sensor_types(parent){
|
|
|
12747
13209
|
}
|
|
12748
13210
|
},
|
|
12749
13211
|
'119': {
|
|
12750
|
-
name: '
|
|
13212
|
+
name: 'Machine Runtime Hour Meter',
|
|
12751
13213
|
parse: (d, payload) => {
|
|
12752
13214
|
let firmware = payload[1];
|
|
12753
|
-
if(payload[7] & 2 != 0){
|
|
13215
|
+
if((payload[7] & 2) != 0){
|
|
12754
13216
|
console.log('Error found');
|
|
12755
|
-
// parsed.data = {error: 'Error found,
|
|
12756
|
-
let error = {error: 'Error found,
|
|
13217
|
+
// parsed.data = {error: 'Error found, Accelerometer Probe may be unattached'};
|
|
13218
|
+
let error = {error: 'Error found, Accelerometer'};
|
|
12757
13219
|
return error;
|
|
12758
13220
|
}
|
|
12759
13221
|
let report_type = "Regular";
|
|
@@ -12771,15 +13233,15 @@ function sensor_types(parent){
|
|
|
12771
13233
|
report_type = "Threshold";
|
|
12772
13234
|
break;
|
|
12773
13235
|
}
|
|
12774
|
-
if ((payload[7] & 4)
|
|
12775
|
-
|
|
13236
|
+
if ((payload[7] & 4)) {
|
|
13237
|
+
let res = {
|
|
12776
13238
|
raw_data: "Enabled",
|
|
12777
13239
|
accelerometer_counter: d.slice(0, 4).reduce(msbLsb),
|
|
12778
13240
|
accelerometer_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
12779
13241
|
magnetometer_counter: d.slice(8, 12).reduce(msbLsb),
|
|
12780
13242
|
magnetometer_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
12781
|
-
input_acc: d[16] &
|
|
12782
|
-
input_mag: d[16] &
|
|
13243
|
+
input_acc: d[16] & 1 ? 1 : 0,
|
|
13244
|
+
input_mag: d[16] & 2 ? 1 : 0,
|
|
12783
13245
|
report_type: report_type,
|
|
12784
13246
|
rtc: [
|
|
12785
13247
|
String(d[18]).padStart(2, '0'),
|
|
@@ -12787,66 +13249,58 @@ function sensor_types(parent){
|
|
|
12787
13249
|
String(d[20]).padStart(2, '0')
|
|
12788
13250
|
].join(':'),
|
|
12789
13251
|
'temperature': d.slice(21, 23).reduce(msbLsb)/100,
|
|
12790
|
-
'
|
|
12791
|
-
x:[
|
|
12792
|
-
|
|
12793
|
-
|
|
12794
|
-
|
|
12795
|
-
|
|
12796
|
-
|
|
12797
|
-
|
|
12798
|
-
|
|
12799
|
-
|
|
12800
|
-
|
|
12801
|
-
|
|
12802
|
-
|
|
12803
|
-
|
|
12804
|
-
|
|
12805
|
-
|
|
12806
|
-
|
|
12807
|
-
|
|
12808
|
-
|
|
12809
|
-
|
|
12810
|
-
|
|
12811
|
-
|
|
12812
|
-
|
|
12813
|
-
|
|
12814
|
-
|
|
12815
|
-
|
|
12816
|
-
|
|
12817
|
-
|
|
12818
|
-
|
|
12819
|
-
|
|
12820
|
-
|
|
12821
|
-
|
|
12822
|
-
|
|
12823
|
-
|
|
12824
|
-
|
|
12825
|
-
|
|
12826
|
-
|
|
12827
|
-
y:[signInt(d.slice(67, 69).reduce(msbLsb),16)/100],
|
|
12828
|
-
z:[signInt(d.slice(69, 71).reduce(msbLsb),16)/100]
|
|
12829
|
-
},
|
|
12830
|
-
'accelero_sample_9':{
|
|
12831
|
-
x:[signInt(d.slice(71, 73).reduce(msbLsb),16)/100],
|
|
12832
|
-
y:[signInt(d.slice(73, 75).reduce(msbLsb),16)/100],
|
|
12833
|
-
z:[signInt(d.slice(75, 77).reduce(msbLsb),16)/100]
|
|
12834
|
-
},
|
|
12835
|
-
'accelero_sample_10':{
|
|
12836
|
-
x:[signInt(d.slice(77, 79).reduce(msbLsb),16)/100],
|
|
12837
|
-
y:[signInt(d.slice(79, 81).reduce(msbLsb),16)/100],
|
|
12838
|
-
z:[signInt(d.slice(81, 83).reduce(msbLsb),16)/100]
|
|
13252
|
+
'data':{
|
|
13253
|
+
'x':[
|
|
13254
|
+
signInt(d.slice(23, 25).reduce(msbLsb),16)/100,
|
|
13255
|
+
signInt(d.slice(29, 31).reduce(msbLsb),16)/100,
|
|
13256
|
+
signInt(d.slice(35, 37).reduce(msbLsb),16)/100,
|
|
13257
|
+
signInt(d.slice(41, 43).reduce(msbLsb),16)/100,
|
|
13258
|
+
signInt(d.slice(47, 49).reduce(msbLsb),16)/100,
|
|
13259
|
+
signInt(d.slice(53, 55).reduce(msbLsb),16)/100,
|
|
13260
|
+
signInt(d.slice(59, 61).reduce(msbLsb),16)/100,
|
|
13261
|
+
signInt(d.slice(65, 67).reduce(msbLsb),16)/100,
|
|
13262
|
+
signInt(d.slice(71, 73).reduce(msbLsb),16)/100,
|
|
13263
|
+
signInt(d.slice(77, 79).reduce(msbLsb),16)/100
|
|
13264
|
+
],
|
|
13265
|
+
'y':[
|
|
13266
|
+
signInt(d.slice(25, 27).reduce(msbLsb),16)/100,
|
|
13267
|
+
signInt(d.slice(29, 31).reduce(msbLsb),16)/100,
|
|
13268
|
+
signInt(d.slice(37, 39).reduce(msbLsb),16)/100,
|
|
13269
|
+
signInt(d.slice(43, 45).reduce(msbLsb),16)/100,
|
|
13270
|
+
signInt(d.slice(49, 51).reduce(msbLsb),16)/100,
|
|
13271
|
+
signInt(d.slice(55, 57).reduce(msbLsb),16)/100,
|
|
13272
|
+
signInt(d.slice(61, 63).reduce(msbLsb),16)/100,
|
|
13273
|
+
signInt(d.slice(67, 69).reduce(msbLsb),16)/100,
|
|
13274
|
+
signInt(d.slice(73, 75).reduce(msbLsb),16)/100,
|
|
13275
|
+
signInt(d.slice(79, 81).reduce(msbLsb),16)/100
|
|
13276
|
+
],
|
|
13277
|
+
'z':[
|
|
13278
|
+
signInt(d.slice(27, 29).reduce(msbLsb),16)/100,
|
|
13279
|
+
signInt(d.slice(31, 33).reduce(msbLsb),16)/100,
|
|
13280
|
+
signInt(d.slice(37, 39).reduce(msbLsb),16)/100,
|
|
13281
|
+
signInt(d.slice(43, 45).reduce(msbLsb),16)/100,
|
|
13282
|
+
signInt(d.slice(51, 53).reduce(msbLsb),16)/100,
|
|
13283
|
+
signInt(d.slice(57, 59).reduce(msbLsb),16)/100,
|
|
13284
|
+
signInt(d.slice(63, 65).reduce(msbLsb),16)/100,
|
|
13285
|
+
signInt(d.slice(69, 71).reduce(msbLsb),16)/100,
|
|
13286
|
+
signInt(d.slice(75, 77).reduce(msbLsb),16)/100,
|
|
13287
|
+
signInt(d.slice(81, 83).reduce(msbLsb),16)/100
|
|
13288
|
+
]
|
|
12839
13289
|
}
|
|
12840
13290
|
};
|
|
13291
|
+
if((payload[7] & 2) != 0){
|
|
13292
|
+
res.error = 'Error: Accelerometer communication failure';
|
|
13293
|
+
}
|
|
13294
|
+
return res;
|
|
12841
13295
|
}else{
|
|
12842
|
-
|
|
13296
|
+
let res = {
|
|
12843
13297
|
raw_data: "Disabled",
|
|
12844
13298
|
accelerometer_counter: d.slice(0, 4).reduce(msbLsb),
|
|
12845
13299
|
accelerometer_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
12846
13300
|
magnetometer_counter: d.slice(8, 12).reduce(msbLsb),
|
|
12847
13301
|
magnetometer_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
12848
|
-
input_acc: d[16] &
|
|
12849
|
-
input_mag: d[16] &
|
|
13302
|
+
input_acc: d[16] & 1 ? 1 : 0,
|
|
13303
|
+
input_mag: d[16] & 2 ? 1 : 0,
|
|
12850
13304
|
report_type: report_type,
|
|
12851
13305
|
rtc: [
|
|
12852
13306
|
String(d[18]).padStart(2, '0'),
|
|
@@ -12855,6 +13309,10 @@ function sensor_types(parent){
|
|
|
12855
13309
|
].join(':'),
|
|
12856
13310
|
'temperature': d.slice(21, 23).reduce(msbLsb)/100
|
|
12857
13311
|
};
|
|
13312
|
+
if((payload[7] & 2) != 0){
|
|
13313
|
+
res.error = 'Error: Accelerometer communication failure';
|
|
13314
|
+
}
|
|
13315
|
+
return res;
|
|
12858
13316
|
}
|
|
12859
13317
|
},
|
|
12860
13318
|
'parse_fly': (frame) => {
|
|
@@ -12951,6 +13409,7 @@ function sensor_types(parent){
|
|
|
12951
13409
|
acc_enabled_axis = 'all axis';
|
|
12952
13410
|
break;
|
|
12953
13411
|
}
|
|
13412
|
+
let raw_acc_data = frame[41]?'Enabled':'Disabled';
|
|
12954
13413
|
return {
|
|
12955
13414
|
'firmware': frame[2],
|
|
12956
13415
|
'accelerometer_threshold': (frame[16]* 32) + " mg",
|
|
@@ -12958,19 +13417,19 @@ function sensor_types(parent){
|
|
|
12958
13417
|
'accelero_state': frame[19]? "Enabled": "Disabled",
|
|
12959
13418
|
'counter_threshold': frame.slice(20, 24).reduce(msbLsb),
|
|
12960
13419
|
'trasnmit_on_change_status': frame[24]? "Enabled": "Disabled",
|
|
12961
|
-
'
|
|
13420
|
+
'shift_end_1': [
|
|
12962
13421
|
String(frame[25]).padStart(2, '0'),
|
|
12963
13422
|
String(frame[26]).padStart(2, '0')
|
|
12964
13423
|
].join(':'),
|
|
12965
|
-
'
|
|
13424
|
+
'shift_end_2': [
|
|
12966
13425
|
String(frame[27]).padStart(2, '0'),
|
|
12967
13426
|
String(frame[28]).padStart(2, '0')
|
|
12968
13427
|
].join(':'),
|
|
12969
|
-
'
|
|
13428
|
+
'shift_end_3': [
|
|
12970
13429
|
String(frame[29]).padStart(2, '0'),
|
|
12971
13430
|
String(frame[30]).padStart(2, '0')
|
|
12972
13431
|
].join(':'),
|
|
12973
|
-
'
|
|
13432
|
+
'shift_end_4': [
|
|
12974
13433
|
String(frame[31]).padStart(2, '0'),
|
|
12975
13434
|
String(frame[32]).padStart(2, '0')
|
|
12976
13435
|
].join(':'),
|
|
@@ -12980,9 +13439,10 @@ function sensor_types(parent){
|
|
|
12980
13439
|
'acc_odr': acc_odr,
|
|
12981
13440
|
'interrupt_timeout': frame.slice(38, 40).reduce(msbLsb) + ' msec',
|
|
12982
13441
|
'acc_enabled_axis': acc_enabled_axis,
|
|
12983
|
-
'
|
|
12984
|
-
'
|
|
12985
|
-
'
|
|
13442
|
+
'raw_acc_data': raw_acc_data,
|
|
13443
|
+
'hardware_id': frame.slice(42, 45),
|
|
13444
|
+
'report_rate': frame.slice(45, 49).reduce(msbLsb) + " sec",
|
|
13445
|
+
'tx_life_counter': frame.slice(49, 53).reduce(msbLsb),
|
|
12986
13446
|
'machine_values': {
|
|
12987
13447
|
'firmware': frame[2],
|
|
12988
13448
|
'accelerometer_threshold': (frame[16]* 32),
|
|
@@ -12990,19 +13450,19 @@ function sensor_types(parent){
|
|
|
12990
13450
|
'accelero_state': frame[19],
|
|
12991
13451
|
'counter_threshold': frame.slice(20, 24),
|
|
12992
13452
|
'trasnmit_on_change_status': frame[24],
|
|
12993
|
-
'
|
|
13453
|
+
'shift_end_1': [
|
|
12994
13454
|
frame[25],
|
|
12995
13455
|
frame[26]
|
|
12996
13456
|
],
|
|
12997
|
-
'
|
|
13457
|
+
'shift_end_2': [
|
|
12998
13458
|
frame[27],
|
|
12999
13459
|
frame[28]
|
|
13000
13460
|
],
|
|
13001
|
-
'
|
|
13461
|
+
'shift_end_3': [
|
|
13002
13462
|
frame[29],
|
|
13003
13463
|
frame[30]
|
|
13004
13464
|
],
|
|
13005
|
-
'
|
|
13465
|
+
'shift_end_4': [
|
|
13006
13466
|
frame[31],
|
|
13007
13467
|
frame[32]
|
|
13008
13468
|
],
|
|
@@ -13012,338 +13472,1190 @@ function sensor_types(parent){
|
|
|
13012
13472
|
'acc_odr': frame[37],
|
|
13013
13473
|
'interrupt_timeout': frame.slice(38, 40),
|
|
13014
13474
|
'acc_enabled_axis': frame[40],
|
|
13015
|
-
'
|
|
13016
|
-
'
|
|
13017
|
-
'
|
|
13475
|
+
'raw_acc_data': frame[41],
|
|
13476
|
+
'hardware_id': frame.slice(42, 45),
|
|
13477
|
+
'report_rate': frame.slice(45, 49),
|
|
13478
|
+
'tx_life_counter': frame.slice(49, 53)
|
|
13018
13479
|
}
|
|
13019
13480
|
}
|
|
13020
13481
|
}
|
|
13021
13482
|
},
|
|
13022
|
-
'
|
|
13023
|
-
name: 'Wireless
|
|
13024
|
-
parse: (d) => {
|
|
13025
|
-
|
|
13026
|
-
|
|
13027
|
-
|
|
13028
|
-
|
|
13029
|
-
|
|
13030
|
-
|
|
13031
|
-
'parse_fly': (frame) => {
|
|
13032
|
-
return {
|
|
13033
|
-
'firmware': frame[2],
|
|
13034
|
-
'h2s_threshold': frame[12],
|
|
13035
|
-
'always_on_status': frame[13],
|
|
13036
|
-
'hardware_id': frame.slice(14, 17),
|
|
13037
|
-
'sample_rate': frame.slice(17, 21).reduce(msbLsb) + " Sec.",
|
|
13038
|
-
'tx_life_counter': frame.slice(21, 25).reduce(msbLsb),
|
|
13039
|
-
'machine_values': {
|
|
13040
|
-
'firmware': frame[2],
|
|
13041
|
-
'h2s threshold': frame[12],
|
|
13042
|
-
'always_on_status': frame[13],
|
|
13043
|
-
'hardware_id': frame.slice(14, 17),
|
|
13044
|
-
'sample_rate': frame.slice(17, 21).reduce(msbLsb),
|
|
13045
|
-
'tx_life_counter': frame.slice(21, 25).reduce(msbLsb)
|
|
13046
|
-
}
|
|
13483
|
+
'119': {
|
|
13484
|
+
name: 'Wireless Machine Run Time Hour Meter',
|
|
13485
|
+
parse: (d, payload) => {
|
|
13486
|
+
let firmware = payload[1];
|
|
13487
|
+
if(payload[7] & 2 != 0){
|
|
13488
|
+
console.log('Error found');
|
|
13489
|
+
// parsed.data = {error: 'Error found, Acclerometer Probe may be unattached'};
|
|
13490
|
+
let error = {error: 'Error found, Acclerometer Probe may be unattached'};
|
|
13491
|
+
return error;
|
|
13047
13492
|
}
|
|
13048
|
-
|
|
13049
|
-
|
|
13050
|
-
|
|
13051
|
-
|
|
13052
|
-
|
|
13053
|
-
|
|
13054
|
-
|
|
13055
|
-
|
|
13056
|
-
|
|
13057
|
-
|
|
13058
|
-
|
|
13059
|
-
|
|
13060
|
-
|
|
13061
|
-
|
|
13062
|
-
|
|
13063
|
-
|
|
13064
|
-
|
|
13065
|
-
|
|
13066
|
-
|
|
13067
|
-
|
|
13068
|
-
|
|
13069
|
-
|
|
13070
|
-
|
|
13493
|
+
let report_type = "Regular";
|
|
13494
|
+
switch(d[17]){
|
|
13495
|
+
case 0:
|
|
13496
|
+
report_type = "Regular";
|
|
13497
|
+
break;
|
|
13498
|
+
case 1:
|
|
13499
|
+
report_type = "Shift end";
|
|
13500
|
+
break;
|
|
13501
|
+
case 2:
|
|
13502
|
+
report_type = "Interrupt";
|
|
13503
|
+
break;
|
|
13504
|
+
case 3:
|
|
13505
|
+
report_type = "Threshold";
|
|
13506
|
+
break;
|
|
13507
|
+
}
|
|
13508
|
+
if ((payload[7] & 4) != 0) {
|
|
13509
|
+
return {
|
|
13510
|
+
raw_data: "Enabled",
|
|
13511
|
+
accelerometer_counter: d.slice(0, 4).reduce(msbLsb),
|
|
13512
|
+
accelerometer_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
13513
|
+
magnetometer_counter: d.slice(8, 12).reduce(msbLsb),
|
|
13514
|
+
magnetometer_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
13515
|
+
input_acc: d[16] & 8 ? 1 : 0,
|
|
13516
|
+
input_mag: d[16] & 16 ? 1 : 0,
|
|
13517
|
+
report_type: report_type,
|
|
13518
|
+
rtc: [
|
|
13519
|
+
String(d[18]).padStart(2, '0'),
|
|
13520
|
+
String(d[19]).padStart(2, '0'),
|
|
13521
|
+
String(d[20]).padStart(2, '0')
|
|
13522
|
+
].join(':'),
|
|
13523
|
+
'temperature': d.slice(21, 23).reduce(msbLsb)/100,
|
|
13524
|
+
'accelero_sample_1':{
|
|
13525
|
+
x:[signInt(d.slice(23, 25).reduce(msbLsb),16)/100],
|
|
13526
|
+
y:[signInt(d.slice(25, 27).reduce(msbLsb),16)/100],
|
|
13527
|
+
z:[signInt(d.slice(27, 29).reduce(msbLsb),16)/100]
|
|
13528
|
+
},
|
|
13529
|
+
'accelero_sample_2':{
|
|
13530
|
+
x:[signInt(d.slice(29, 31).reduce(msbLsb),16)/100],
|
|
13531
|
+
y:[signInt(d.slice(31, 33).reduce(msbLsb),16)/100],
|
|
13532
|
+
z:[signInt(d.slice(33, 35).reduce(msbLsb),16)/100]
|
|
13533
|
+
},
|
|
13534
|
+
'accelero_sample_3':{
|
|
13535
|
+
x:[signInt(d.slice(35, 37).reduce(msbLsb),16)/100],
|
|
13536
|
+
y:[signInt(d.slice(37, 39).reduce(msbLsb),16)/100],
|
|
13537
|
+
z:[signInt(d.slice(39, 41).reduce(msbLsb),16)/100]
|
|
13538
|
+
},
|
|
13539
|
+
'accelero_sample_4':{
|
|
13540
|
+
x:[signInt(d.slice(41, 43).reduce(msbLsb),16)/100],
|
|
13541
|
+
y:[signInt(d.slice(43, 45).reduce(msbLsb),16)/100],
|
|
13542
|
+
z:[signInt(d.slice(45, 47).reduce(msbLsb),16)/100]
|
|
13543
|
+
},
|
|
13544
|
+
'accelero_sample_5':{
|
|
13545
|
+
x:[signInt(d.slice(47, 49).reduce(msbLsb),16)/100],
|
|
13546
|
+
y:[signInt(d.slice(49, 51).reduce(msbLsb),16)/100],
|
|
13547
|
+
z:[signInt(d.slice(51, 53).reduce(msbLsb),16)/100]
|
|
13548
|
+
},
|
|
13549
|
+
'accelero_sample_6':{
|
|
13550
|
+
x:[signInt(d.slice(53, 55).reduce(msbLsb),16)/100],
|
|
13551
|
+
y:[signInt(d.slice(55, 57).reduce(msbLsb),16)/100],
|
|
13552
|
+
z:[signInt(d.slice(57, 59).reduce(msbLsb),16)/100]
|
|
13553
|
+
},
|
|
13554
|
+
'accelero_sample_7':{
|
|
13555
|
+
x:[signInt(d.slice(59, 61).reduce(msbLsb),16)/100],
|
|
13556
|
+
y:[signInt(d.slice(61, 63).reduce(msbLsb),16)/100],
|
|
13557
|
+
z:[signInt(d.slice(63, 65).reduce(msbLsb),16)/100]
|
|
13558
|
+
},
|
|
13559
|
+
'accelero_sample_8':{
|
|
13560
|
+
x:[signInt(d.slice(65, 67).reduce(msbLsb),16)/100],
|
|
13561
|
+
y:[signInt(d.slice(67, 69).reduce(msbLsb),16)/100],
|
|
13562
|
+
z:[signInt(d.slice(69, 71).reduce(msbLsb),16)/100]
|
|
13563
|
+
},
|
|
13564
|
+
'accelero_sample_9':{
|
|
13565
|
+
x:[signInt(d.slice(71, 73).reduce(msbLsb),16)/100],
|
|
13566
|
+
y:[signInt(d.slice(73, 75).reduce(msbLsb),16)/100],
|
|
13567
|
+
z:[signInt(d.slice(75, 77).reduce(msbLsb),16)/100]
|
|
13568
|
+
},
|
|
13569
|
+
'accelero_sample_10':{
|
|
13570
|
+
x:[signInt(d.slice(77, 79).reduce(msbLsb),16)/100],
|
|
13571
|
+
y:[signInt(d.slice(79, 81).reduce(msbLsb),16)/100],
|
|
13572
|
+
z:[signInt(d.slice(81, 83).reduce(msbLsb),16)/100]
|
|
13573
|
+
}
|
|
13574
|
+
};
|
|
13575
|
+
}else{
|
|
13576
|
+
return {
|
|
13577
|
+
raw_data: "Disabled",
|
|
13578
|
+
accelerometer_counter: d.slice(0, 4).reduce(msbLsb),
|
|
13579
|
+
accelerometer_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
13580
|
+
magnetometer_counter: d.slice(8, 12).reduce(msbLsb),
|
|
13581
|
+
magnetometer_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
13582
|
+
input_acc: d[16] & 8 ? 1 : 0,
|
|
13583
|
+
input_mag: d[16] & 16 ? 1 : 0,
|
|
13584
|
+
report_type: report_type,
|
|
13585
|
+
rtc: [
|
|
13586
|
+
String(d[18]).padStart(2, '0'),
|
|
13587
|
+
String(d[19]).padStart(2, '0'),
|
|
13588
|
+
String(d[20]).padStart(2, '0')
|
|
13589
|
+
].join(':'),
|
|
13590
|
+
'temperature': d.slice(21, 23).reduce(msbLsb)/100
|
|
13591
|
+
};
|
|
13071
13592
|
}
|
|
13072
|
-
}
|
|
13073
|
-
},
|
|
13074
|
-
'122': {
|
|
13075
|
-
name: 'Wireless 4-20mA Current Splitter',
|
|
13076
|
-
parse: (d) => {
|
|
13077
|
-
// This parser may be outdated if a customer has an issue check with Engineering
|
|
13078
|
-
var adc1 = signInt(d.slice(0, 2).reduce(msbLsb));
|
|
13079
|
-
var adc2 = signInt(d.slice(2, 4).reduce(msbLsb));
|
|
13080
|
-
return {
|
|
13081
|
-
adc1: adc1,
|
|
13082
|
-
adc2: adc2,
|
|
13083
|
-
mA1: signInt(d.slice(4, 6).reduce(msbLsb))/100,
|
|
13084
|
-
mA2: signInt(d.slice(6, 8).reduce(msbLsb))/100
|
|
13085
|
-
};
|
|
13086
13593
|
},
|
|
13087
13594
|
'parse_fly': (frame) => {
|
|
13088
|
-
let
|
|
13089
|
-
switch(frame[
|
|
13595
|
+
let reset_mode = "Disabled";
|
|
13596
|
+
switch(frame[35]){
|
|
13090
13597
|
case 0:
|
|
13091
|
-
|
|
13598
|
+
reset_mode = "Disabled";
|
|
13092
13599
|
break;
|
|
13093
13600
|
case 1:
|
|
13094
|
-
|
|
13601
|
+
reset_mode = "Shift Ends";
|
|
13095
13602
|
break;
|
|
13096
13603
|
case 2:
|
|
13097
|
-
|
|
13604
|
+
reset_mode = "Timeout";
|
|
13605
|
+
break;
|
|
13606
|
+
}
|
|
13607
|
+
let acc_odr = "10 Hz";
|
|
13608
|
+
switch(frame[37]){
|
|
13609
|
+
case 0:
|
|
13610
|
+
acc_odr = "10 Hz";
|
|
13611
|
+
break;
|
|
13612
|
+
case 1:
|
|
13613
|
+
acc_odr = "20 Hz";
|
|
13614
|
+
break;
|
|
13615
|
+
case 2:
|
|
13616
|
+
acc_odr = "50 Hz";
|
|
13098
13617
|
break;
|
|
13099
13618
|
case 3:
|
|
13100
|
-
|
|
13619
|
+
acc_odr = "100 Hz";
|
|
13101
13620
|
break;
|
|
13102
13621
|
case 4:
|
|
13103
|
-
|
|
13622
|
+
acc_odr = "200 Hz";
|
|
13104
13623
|
break;
|
|
13105
13624
|
case 5:
|
|
13106
|
-
|
|
13625
|
+
acc_odr = "400 Hz";
|
|
13107
13626
|
break;
|
|
13108
13627
|
}
|
|
13109
|
-
|
|
13110
|
-
|
|
13111
|
-
|
|
13112
|
-
|
|
13113
|
-
|
|
13114
|
-
|
|
13115
|
-
|
|
13116
|
-
|
|
13117
|
-
|
|
13118
|
-
|
|
13119
|
-
|
|
13120
|
-
|
|
13121
|
-
|
|
13122
|
-
|
|
13123
|
-
|
|
13124
|
-
|
|
13125
|
-
|
|
13126
|
-
|
|
13127
|
-
|
|
13128
|
-
|
|
13129
|
-
|
|
13130
|
-
|
|
13131
|
-
|
|
13132
|
-
|
|
13133
|
-
|
|
13134
|
-
|
|
13135
|
-
|
|
13136
|
-
|
|
13137
|
-
|
|
13138
|
-
|
|
13139
|
-
|
|
13140
|
-
|
|
13141
|
-
|
|
13142
|
-
|
|
13143
|
-
|
|
13144
|
-
|
|
13145
|
-
|
|
13146
|
-
|
|
13147
|
-
|
|
13148
|
-
|
|
13149
|
-
|
|
13150
|
-
|
|
13151
|
-
|
|
13152
|
-
|
|
13628
|
+
let rtc_sampling_interval = "5 sec";
|
|
13629
|
+
switch(frame[36]){
|
|
13630
|
+
case 0:
|
|
13631
|
+
rtc_sampling_interval = "1 min";
|
|
13632
|
+
break;
|
|
13633
|
+
case 1:
|
|
13634
|
+
rtc_sampling_interval = "5 min";
|
|
13635
|
+
break;
|
|
13636
|
+
case 2:
|
|
13637
|
+
rtc_sampling_interval = "15 min";
|
|
13638
|
+
break;
|
|
13639
|
+
case 3:
|
|
13640
|
+
rtc_sampling_interval = "30 min";
|
|
13641
|
+
break;
|
|
13642
|
+
case 4:
|
|
13643
|
+
rtc_sampling_interval = "1 hour";
|
|
13644
|
+
break;
|
|
13645
|
+
case 5:
|
|
13646
|
+
rtc_sampling_interval = "2 hours";
|
|
13647
|
+
break;
|
|
13648
|
+
case 6:
|
|
13649
|
+
rtc_sampling_interval = "3 hours";
|
|
13650
|
+
break;
|
|
13651
|
+
case 7:
|
|
13652
|
+
rtc_sampling_interval = "6 hours";
|
|
13653
|
+
break;
|
|
13654
|
+
case 8:
|
|
13655
|
+
rtc_sampling_interval = "12 hours";
|
|
13656
|
+
break;
|
|
13657
|
+
case 9:
|
|
13658
|
+
rtc_sampling_interval = "5 sec";
|
|
13659
|
+
break;
|
|
13660
|
+
case 10:
|
|
13661
|
+
rtc_sampling_interval = "10 sec";
|
|
13662
|
+
break;
|
|
13663
|
+
case 11:
|
|
13664
|
+
rtc_sampling_interval = "15 sec";
|
|
13665
|
+
break;
|
|
13666
|
+
case 12:
|
|
13667
|
+
rtc_sampling_interval = "30 sec";
|
|
13668
|
+
break;
|
|
13669
|
+
}
|
|
13670
|
+
let acc_enabled_axis = 'Disabled All';
|
|
13671
|
+
switch(frame[40]){
|
|
13672
|
+
case 0:
|
|
13673
|
+
acc_enabled_axis = 'Disabled All';
|
|
13674
|
+
break;
|
|
13675
|
+
case 1:
|
|
13676
|
+
acc_enabled_axis = 'x axis';
|
|
13677
|
+
break;
|
|
13678
|
+
case 2:
|
|
13679
|
+
acc_enabled_axis = 'y axis';
|
|
13680
|
+
break;
|
|
13681
|
+
case 3:
|
|
13682
|
+
acc_enabled_axis = 'z axis';
|
|
13683
|
+
break;
|
|
13684
|
+
case 7:
|
|
13685
|
+
acc_enabled_axis = 'all axis';
|
|
13686
|
+
break;
|
|
13687
|
+
}
|
|
13688
|
+
return {
|
|
13689
|
+
'firmware': frame[2],
|
|
13690
|
+
'accelerometer_threshold': (frame[16]* 32) + " mg",
|
|
13691
|
+
'debouncing_timeout': frame.slice(17, 19).reduce(msbLsb) + " msec",
|
|
13692
|
+
'accelero_state': frame[19]? "Enabled": "Disabled",
|
|
13693
|
+
'counter_threshold': frame.slice(20, 24).reduce(msbLsb),
|
|
13694
|
+
'trasnmit_on_change_status': frame[24]? "Enabled": "Disabled",
|
|
13695
|
+
'Shift_end_1': [
|
|
13696
|
+
String(frame[25]).padStart(2, '0'),
|
|
13697
|
+
String(frame[26]).padStart(2, '0')
|
|
13698
|
+
].join(':'),
|
|
13699
|
+
'Shift_end_2': [
|
|
13700
|
+
String(frame[27]).padStart(2, '0'),
|
|
13701
|
+
String(frame[28]).padStart(2, '0')
|
|
13702
|
+
].join(':'),
|
|
13703
|
+
'Shift_end_3': [
|
|
13704
|
+
String(frame[29]).padStart(2, '0'),
|
|
13705
|
+
String(frame[30]).padStart(2, '0')
|
|
13706
|
+
].join(':'),
|
|
13707
|
+
'Shift_end_4': [
|
|
13708
|
+
String(frame[31]).padStart(2, '0'),
|
|
13709
|
+
String(frame[32]).padStart(2, '0')
|
|
13710
|
+
].join(':'),
|
|
13711
|
+
'reset_timeout': frame.slice(33, 35).reduce(msbLsb) + " min",
|
|
13712
|
+
'counter_reset_mode': reset_mode,
|
|
13713
|
+
'sampling_interval': rtc_sampling_interval,
|
|
13714
|
+
'acc_odr': acc_odr,
|
|
13715
|
+
'interrupt_timeout': frame.slice(38, 40).reduce(msbLsb) + ' msec',
|
|
13716
|
+
'acc_enabled_axis': acc_enabled_axis,
|
|
13717
|
+
'hardware_id': frame.slice(41, 44),
|
|
13718
|
+
'report_rate': frame.slice(44, 48).reduce(msbLsb) + " sec",
|
|
13719
|
+
'tx_life_counter': frame.slice(48, 52).reduce(msbLsb),
|
|
13720
|
+
'machine_values': {
|
|
13721
|
+
'firmware': frame[2],
|
|
13722
|
+
'accelerometer_threshold': (frame[16]* 32),
|
|
13723
|
+
'debouncing_timeout': frame.slice(17, 19),
|
|
13724
|
+
'accelero_state': frame[19],
|
|
13725
|
+
'counter_threshold': frame.slice(20, 24),
|
|
13726
|
+
'trasnmit_on_change_status': frame[24],
|
|
13727
|
+
'Shift_end_1': [
|
|
13728
|
+
frame[25],
|
|
13729
|
+
frame[26]
|
|
13730
|
+
],
|
|
13731
|
+
'Shift_end_2': [
|
|
13732
|
+
frame[27],
|
|
13733
|
+
frame[28]
|
|
13734
|
+
],
|
|
13735
|
+
'Shift_end_3': [
|
|
13736
|
+
frame[29],
|
|
13737
|
+
frame[30]
|
|
13738
|
+
],
|
|
13739
|
+
'Shift_end_4': [
|
|
13740
|
+
frame[31],
|
|
13741
|
+
frame[32]
|
|
13742
|
+
],
|
|
13743
|
+
'reset_timeout': frame.slice(33, 35),
|
|
13744
|
+
'counter_reset_mode': frame[35],
|
|
13745
|
+
'sampling_interval': frame[36],
|
|
13746
|
+
'acc_odr': frame[37],
|
|
13747
|
+
'interrupt_timeout': frame.slice(38, 40),
|
|
13748
|
+
'acc_enabled_axis': frame[40],
|
|
13749
|
+
'hardware_id': frame.slice(41, 44),
|
|
13750
|
+
'report_rate': frame.slice(44, 48),
|
|
13751
|
+
'tx_life_counter': frame.slice(48, 52)
|
|
13752
|
+
}
|
|
13753
|
+
}
|
|
13754
|
+
}
|
|
13755
|
+
},
|
|
13756
|
+
'120': {
|
|
13757
|
+
name: 'Wireless H2S Sensor',
|
|
13758
|
+
parse: (d) => {
|
|
13759
|
+
return {
|
|
13760
|
+
ppm: d.slice(0, 2).reduce(msbLsb),
|
|
13761
|
+
temperature: signInt(d.slice(2, 4).reduce(msbLsb), 16) / 100,
|
|
13762
|
+
humidity: signInt(d.slice(4, 6).reduce(msbLsb), 16) / 100
|
|
13763
|
+
};
|
|
13764
|
+
},
|
|
13765
|
+
'parse_fly': (frame) => {
|
|
13766
|
+
return {
|
|
13767
|
+
'firmware': frame[2],
|
|
13768
|
+
'h2s_threshold': frame[12],
|
|
13769
|
+
'always_on_status': frame[13],
|
|
13770
|
+
'hardware_id': frame.slice(14, 17),
|
|
13771
|
+
'sample_rate': frame.slice(17, 21).reduce(msbLsb) + " Sec.",
|
|
13772
|
+
'tx_life_counter': frame.slice(21, 25).reduce(msbLsb),
|
|
13773
|
+
'machine_values': {
|
|
13774
|
+
'firmware': frame[2],
|
|
13775
|
+
'h2s threshold': frame[12],
|
|
13776
|
+
'always_on_status': frame[13],
|
|
13777
|
+
'hardware_id': frame.slice(14, 17),
|
|
13778
|
+
'sample_rate': frame.slice(17, 21).reduce(msbLsb),
|
|
13779
|
+
'tx_life_counter': frame.slice(21, 25).reduce(msbLsb)
|
|
13780
|
+
}
|
|
13781
|
+
}
|
|
13782
|
+
}
|
|
13783
|
+
},
|
|
13784
|
+
'121':{
|
|
13785
|
+
name: 'Wireless Wood Moisture Sensor',
|
|
13786
|
+
parse: (d) => {
|
|
13787
|
+
return {
|
|
13788
|
+
wood_type: d[0],
|
|
13789
|
+
temperature: signInt(d.slice(1, 3).reduce(msbLsb), 16) / 100,
|
|
13790
|
+
humidity: d.slice(3, 5).reduce(msbLsb) / 100,
|
|
13791
|
+
wood_moisture: d.slice(5, 7).reduce(msbLsb) / 100,
|
|
13792
|
+
wood_resistance: (d.slice(7, 15)).reduce(msbLsb) / 100
|
|
13793
|
+
};
|
|
13794
|
+
},
|
|
13795
|
+
'parse_fly': (frame) => {
|
|
13796
|
+
return {
|
|
13797
|
+
'hardware_id': frame.slice(12, 15),
|
|
13798
|
+
'sample_rate': frame.slice(15, 19).reduce(msbLsb) + " Sec.",
|
|
13799
|
+
'tx_life_counter': frame.slice(19, 23).reduce(msbLsb),
|
|
13800
|
+
'machine_values': {
|
|
13801
|
+
'hardware_id': frame.slice(12, 15),
|
|
13802
|
+
'sample_rate': frame.slice(15, 19),
|
|
13803
|
+
'tx_life_counter': frame.slice(19, 23)
|
|
13804
|
+
}
|
|
13805
|
+
}
|
|
13806
|
+
}
|
|
13807
|
+
},
|
|
13808
|
+
'122': {
|
|
13809
|
+
name: 'Wireless 4-20mA Current Splitter',
|
|
13810
|
+
parse: (d) => {
|
|
13811
|
+
// This parser may be outdated if a customer has an issue check with Engineering
|
|
13812
|
+
var adc1 = signInt(d.slice(0, 2).reduce(msbLsb));
|
|
13813
|
+
var adc2 = signInt(d.slice(2, 4).reduce(msbLsb));
|
|
13814
|
+
return {
|
|
13815
|
+
adc1: adc1,
|
|
13816
|
+
adc2: adc2,
|
|
13817
|
+
mA1: signInt(d.slice(4, 6).reduce(msbLsb))/100,
|
|
13818
|
+
mA2: signInt(d.slice(6, 8).reduce(msbLsb))/100
|
|
13819
|
+
};
|
|
13820
|
+
},
|
|
13821
|
+
'parse_fly': (frame) => {
|
|
13822
|
+
let frame_data = {};
|
|
13823
|
+
switch(frame[16]){
|
|
13824
|
+
case 0:
|
|
13825
|
+
frame_data.fsr = "+-6.114 V";
|
|
13826
|
+
break;
|
|
13827
|
+
case 1:
|
|
13828
|
+
frame_data.fsr = "+-4.096 V";
|
|
13829
|
+
break;
|
|
13830
|
+
case 2:
|
|
13831
|
+
frame_data.fsr = "+-2.048 V";
|
|
13832
|
+
break;
|
|
13833
|
+
case 3:
|
|
13834
|
+
frame_data.fsr = "+-1.024 V";
|
|
13835
|
+
break;
|
|
13836
|
+
case 4:
|
|
13837
|
+
frame_data.fsr = "+-0.512 V";
|
|
13838
|
+
break;
|
|
13839
|
+
case 5:
|
|
13840
|
+
frame_data.fsr = "+-0.256 V";
|
|
13841
|
+
break;
|
|
13842
|
+
}
|
|
13843
|
+
if(frame[2]>13){ // firmware 14 and above
|
|
13844
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
13845
|
+
if(!auto_check_interval){
|
|
13846
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
13847
|
+
}else{
|
|
13848
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
13849
|
+
}
|
|
13850
|
+
return {
|
|
13851
|
+
'firmware': frame[2],
|
|
13852
|
+
'fsr': frame_data.fsr,
|
|
13853
|
+
'boot_time': frame[17] + " sec",
|
|
13854
|
+
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
13855
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
13856
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
13857
|
+
'always_on': frame_data[24] ? 'Enabled' : 'Disabled',
|
|
13858
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
13859
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
13860
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
13861
|
+
'hardware_id': frame.slice(37, 40),
|
|
13862
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
13863
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
13153
13864
|
'machine_values': {
|
|
13154
13865
|
'firmware': frame[2],
|
|
13155
|
-
'
|
|
13156
|
-
'
|
|
13157
|
-
'boot_up_time': frame[17],
|
|
13866
|
+
'fsr': frame[16],
|
|
13867
|
+
'boot_time': frame[17],
|
|
13158
13868
|
'adc_pin_reading': frame.slice(18, 20),
|
|
13159
|
-
'
|
|
13869
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
13870
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
13871
|
+
'always_on': frame[24],
|
|
13872
|
+
'calibration_one': frame.slice(25, 29),
|
|
13873
|
+
'calibration_two':frame.slice(29, 33),
|
|
13874
|
+
'calibration_three':frame.slice(33, 37),
|
|
13875
|
+
'hardware_id': frame.slice(37, 40),
|
|
13876
|
+
'report_rate': frame.slice(40, 44),
|
|
13877
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
13160
13878
|
}
|
|
13161
13879
|
}
|
|
13162
|
-
}else{
|
|
13163
|
-
return {
|
|
13880
|
+
}else if(frame[2]>12){
|
|
13881
|
+
return {
|
|
13882
|
+
'firmware': frame[2],
|
|
13883
|
+
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
13884
|
+
'fsr':frame_data.fsr,
|
|
13885
|
+
'boot_up_time': frame[17],
|
|
13886
|
+
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
13887
|
+
'machine_values': {
|
|
13888
|
+
'firmware': frame[2],
|
|
13889
|
+
'report_rate': frame.slice(12, 16),
|
|
13890
|
+
'fsr':frame[16],
|
|
13891
|
+
'boot_up_time': frame[17],
|
|
13892
|
+
'adc_pin_reading': frame.slice(18, 20),
|
|
13893
|
+
'frame': frame
|
|
13894
|
+
}
|
|
13895
|
+
}
|
|
13896
|
+
}else{
|
|
13897
|
+
return {
|
|
13898
|
+
'firmware': frame[2],
|
|
13899
|
+
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
13900
|
+
'fsr':frame_data.fsr,
|
|
13901
|
+
'boot_up_time': frame[17],
|
|
13902
|
+
'machine_values': {
|
|
13903
|
+
'firmware': frame[2],
|
|
13904
|
+
'report_rate': frame.slice(12, 16),
|
|
13905
|
+
'fsr':frame[16],
|
|
13906
|
+
'boot_up_time': frame[17],
|
|
13907
|
+
'frame': frame
|
|
13908
|
+
}
|
|
13909
|
+
}
|
|
13910
|
+
}
|
|
13911
|
+
}
|
|
13912
|
+
},
|
|
13913
|
+
'123': {
|
|
13914
|
+
name: '3 Channel Production Counter',
|
|
13915
|
+
parse: (d, payload) => {
|
|
13916
|
+
let report_type = "Regular";
|
|
13917
|
+
switch(d[25]){
|
|
13918
|
+
case 0:
|
|
13919
|
+
report_type = "Regular";
|
|
13920
|
+
break;
|
|
13921
|
+
case 1:
|
|
13922
|
+
report_type = "Shift end";
|
|
13923
|
+
break;
|
|
13924
|
+
case 2:
|
|
13925
|
+
report_type = "Interrupt";
|
|
13926
|
+
break;
|
|
13927
|
+
case 3:
|
|
13928
|
+
report_type = "Threshold";
|
|
13929
|
+
break;
|
|
13930
|
+
}
|
|
13931
|
+
return {
|
|
13932
|
+
digital_input_1_counter: d.slice(0, 4).reduce(msbLsb),
|
|
13933
|
+
digital_input_1_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
13934
|
+
digital_input_2_counter: d.slice(8, 12).reduce(msbLsb),
|
|
13935
|
+
digital_input_2_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
13936
|
+
digital_input_3_counter: d.slice(16, 20).reduce(msbLsb),
|
|
13937
|
+
digital_input_3_uptime: d.slice(20, 24).reduce(msbLsb),
|
|
13938
|
+
input_1: d[24] & 1 ? 1 : 0,
|
|
13939
|
+
input_2: d[24] & 2 ? 1 : 0,
|
|
13940
|
+
input_3: d[24] & 4 ? 1 : 0,
|
|
13941
|
+
report_type: report_type,
|
|
13942
|
+
rtc: [
|
|
13943
|
+
String(d[26]).padStart(2, '0'),
|
|
13944
|
+
String(d[27]).padStart(2, '0'),
|
|
13945
|
+
String(d[28]).padStart(2, '0')
|
|
13946
|
+
].join(':')
|
|
13947
|
+
};
|
|
13948
|
+
},
|
|
13949
|
+
'parse_fly': (frame) => {
|
|
13950
|
+
let reset_mode = "Disabled";
|
|
13951
|
+
switch(frame[36]){
|
|
13952
|
+
case 0:
|
|
13953
|
+
reset_mode = "Disabled";
|
|
13954
|
+
break;
|
|
13955
|
+
case 1:
|
|
13956
|
+
reset_mode = "Shift Ends";
|
|
13957
|
+
break;
|
|
13958
|
+
case 2:
|
|
13959
|
+
reset_mode = "Timeout";
|
|
13960
|
+
break;
|
|
13961
|
+
}
|
|
13962
|
+
let rtc_sampling_interval = "5sec";
|
|
13963
|
+
switch(frame[37]){
|
|
13964
|
+
case 0:
|
|
13965
|
+
rtc_sampling_interval = "1min";
|
|
13966
|
+
break;
|
|
13967
|
+
case 1:
|
|
13968
|
+
rtc_sampling_interval = "5min";
|
|
13969
|
+
break;
|
|
13970
|
+
case 2:
|
|
13971
|
+
rtc_sampling_interval = "15min";
|
|
13972
|
+
break;
|
|
13973
|
+
case 3:
|
|
13974
|
+
rtc_sampling_interval = "30min";
|
|
13975
|
+
break;
|
|
13976
|
+
case 4:
|
|
13977
|
+
rtc_sampling_interval = "1h";
|
|
13978
|
+
break;
|
|
13979
|
+
case 5:
|
|
13980
|
+
rtc_sampling_interval = "2h";
|
|
13981
|
+
break;
|
|
13982
|
+
case 6:
|
|
13983
|
+
rtc_sampling_interval = "3h";
|
|
13984
|
+
break;
|
|
13985
|
+
case 7:
|
|
13986
|
+
rtc_sampling_interval = "6h";
|
|
13987
|
+
break;
|
|
13988
|
+
case 8:
|
|
13989
|
+
rtc_sampling_interval = "12h";
|
|
13990
|
+
break;
|
|
13991
|
+
case 9:
|
|
13992
|
+
rtc_sampling_interval = "5sec";
|
|
13993
|
+
break;
|
|
13994
|
+
case 10:
|
|
13995
|
+
rtc_sampling_interval = "10sec";
|
|
13996
|
+
break;
|
|
13997
|
+
case 11:
|
|
13998
|
+
rtc_sampling_interval = "15sec";
|
|
13999
|
+
break;
|
|
14000
|
+
case 12:
|
|
14001
|
+
rtc_sampling_interval = "30sec";
|
|
14002
|
+
break;
|
|
14003
|
+
}
|
|
14004
|
+
return {
|
|
14005
|
+
'firmware': frame[2],
|
|
14006
|
+
'debouncing_timeout': frame.slice(16, 18).reduce(msbLsb) + "msec",
|
|
14007
|
+
'input_1_active_edge': frame[18]? "Rising": "Falling",
|
|
14008
|
+
'input_2_active_edge': frame[19]? "Rising": "Falling",
|
|
14009
|
+
'input_3_active_edge': frame[20]? "Rising": "Falling",
|
|
14010
|
+
'counter_threshold': frame.slice(21, 25).reduce(msbLsb),
|
|
14011
|
+
'trasnmit_on_change_status': frame[25]? "Enabled": "Disabled",
|
|
14012
|
+
'Shift_end_1': [
|
|
14013
|
+
String(frame[26]).padStart(2, '0'),
|
|
14014
|
+
String(frame[27]).padStart(2, '0')
|
|
14015
|
+
].join(':'),
|
|
14016
|
+
'Shift_end_2': [
|
|
14017
|
+
String(frame[28]).padStart(2, '0'),
|
|
14018
|
+
String(frame[29]).padStart(2, '0')
|
|
14019
|
+
].join(':'),
|
|
14020
|
+
'Shift_end_3': [
|
|
14021
|
+
String(frame[30]).padStart(2, '0'),
|
|
14022
|
+
String(frame[31]).padStart(2, '0')
|
|
14023
|
+
].join(':'),
|
|
14024
|
+
'Shift_end_4': [
|
|
14025
|
+
String(frame[32]).padStart(2, '0'),
|
|
14026
|
+
String(frame[33]).padStart(2, '0')
|
|
14027
|
+
].join(':'),
|
|
14028
|
+
'reset_timeout': frame.slice(34, 36).reduce(msbLsb) + "min",
|
|
14029
|
+
'counter_reset_mode': reset_mode,
|
|
14030
|
+
'sampling_interval': rtc_sampling_interval,
|
|
14031
|
+
'interrupt_timeout': frame.slice(38, 40).reduce(msbLsb) + "msec",
|
|
14032
|
+
'hardware_id': frame.slice(40, 43),
|
|
14033
|
+
'report_rate': frame.slice(43, 47).reduce(msbLsb) + "sec",
|
|
14034
|
+
'tx_life_counter': frame.slice(47, 51).reduce(msbLsb),
|
|
14035
|
+
'machine_values': {
|
|
14036
|
+
'firmware': frame[2],
|
|
14037
|
+
'debouncing_timeout': frame.slice(16, 18),
|
|
14038
|
+
'input_1_active_edge': frame[18],
|
|
14039
|
+
'input_2_active_edge': frame[19],
|
|
14040
|
+
'input_3_active_edge': frame[20],
|
|
14041
|
+
'counter_threshold': frame.slice(21, 25),
|
|
14042
|
+
'trasnmit_on_change_status': frame[25],
|
|
14043
|
+
'Shift_end_1': frame.slice(26, 28),
|
|
14044
|
+
'Shift_end_2': frame.slice(28, 30),
|
|
14045
|
+
'Shift_end_3': frame.slice(30, 32),
|
|
14046
|
+
'Shift_end_4': frame.slice(32, 34),
|
|
14047
|
+
'reset_timeout': frame.slice(34, 36),
|
|
14048
|
+
'counter_reset_mode': frame[36],
|
|
14049
|
+
'sampling_interval': frame[37],
|
|
14050
|
+
'interrupt_timeout': frame.slice(38, 40),
|
|
14051
|
+
'hardware_id': frame.slice(40, 43),
|
|
14052
|
+
'report_rate': frame.slice(43, 47),
|
|
14053
|
+
'tx_life_counter': frame.slice(47, 51)
|
|
14054
|
+
}
|
|
14055
|
+
}
|
|
14056
|
+
}
|
|
14057
|
+
},
|
|
14058
|
+
'124': {
|
|
14059
|
+
name: 'Wireless EH Flow Sensor',
|
|
14060
|
+
parse: (d) => {
|
|
14061
|
+
return {
|
|
14062
|
+
volume_flow: signInt(d.slice(0, 4).reduce(msbLsb), 32) / 100,
|
|
14063
|
+
conductivity: d.slice(4, 8).reduce(msbLsb),
|
|
14064
|
+
flow_velocity: signInt(d.slice(8, 12).reduce(msbLsb), 32) / 100,
|
|
14065
|
+
pressure: signInt(d.slice(12, 16).reduce(msbLsb),32) / 100,
|
|
14066
|
+
// WARNING doesn't handle decimal values and will round to whole number.
|
|
14067
|
+
total_flow_1: d.slice(16, 24).reduce(msbLsb_to_SignedInt, 0n) / BigInt(100),
|
|
14068
|
+
total_flow_2: d.slice(24, 32).reduce(msbLsb_to_SignedInt, 0n) / BigInt(100),
|
|
14069
|
+
total_flow_3: d.slice(32, 40).reduce(msbLsb_to_SignedInt, 0n) / BigInt(100),
|
|
14070
|
+
battery_life: d.slice(40, 42).reduce(msbLsb),
|
|
14071
|
+
battery_state: d[42],
|
|
14072
|
+
total_flow_1_raw: d.slice(16, 24),
|
|
14073
|
+
total_flow_2_raw: d.slice(24, 32),
|
|
14074
|
+
total_flow_3_raw: d.slice(32, 40)
|
|
14075
|
+
};
|
|
14076
|
+
},
|
|
14077
|
+
'parse_fly': (frame) => {
|
|
14078
|
+
let frame_data = {};
|
|
14079
|
+
switch(frame[12]){
|
|
14080
|
+
case 0:
|
|
14081
|
+
frame_data.flow_unit = 'cm³/s';
|
|
14082
|
+
break;
|
|
14083
|
+
case 1:
|
|
14084
|
+
frame_data.flow_unit = 'cm³/min';
|
|
14085
|
+
break;
|
|
14086
|
+
case 2:
|
|
14087
|
+
frame_data.flow_unit = 'cm³/h';
|
|
14088
|
+
break;
|
|
14089
|
+
case 3:
|
|
14090
|
+
frame_data.flow_unit = 'cm³/d';
|
|
14091
|
+
break;
|
|
14092
|
+
case 4:
|
|
14093
|
+
frame_data.flow_unit = 'dm³/s';
|
|
14094
|
+
break;
|
|
14095
|
+
case 5:
|
|
14096
|
+
frame_data.flow_unit = 'dm³/min';
|
|
14097
|
+
break;
|
|
14098
|
+
case 6:
|
|
14099
|
+
frame_data.flow_unit = 'dm³/h';
|
|
14100
|
+
break;
|
|
14101
|
+
case 7:
|
|
14102
|
+
frame_data.flow_unit = 'dm³/d';
|
|
14103
|
+
break;
|
|
14104
|
+
case 8:
|
|
14105
|
+
frame_data.flow_unit = 'm³/s';
|
|
14106
|
+
break;
|
|
14107
|
+
case 9:
|
|
14108
|
+
frame_data.flow_unit = 'm³/min';
|
|
14109
|
+
break;
|
|
14110
|
+
case 10:
|
|
14111
|
+
frame_data.flow_unit = 'm³/h';
|
|
14112
|
+
break;
|
|
14113
|
+
case 11:
|
|
14114
|
+
frame_data.flow_unit = 'm³/d';
|
|
14115
|
+
break;
|
|
14116
|
+
case 12:
|
|
14117
|
+
frame_data.flow_unit = 'ml/s';
|
|
14118
|
+
break;
|
|
14119
|
+
case 13:
|
|
14120
|
+
frame_data.flow_unit = 'ml/min';
|
|
14121
|
+
break;
|
|
14122
|
+
case 14:
|
|
14123
|
+
frame_data.flow_unit = 'ml/h';
|
|
14124
|
+
break;
|
|
14125
|
+
case 15:
|
|
14126
|
+
frame_data.flow_unit = 'ml/d';
|
|
14127
|
+
break;
|
|
14128
|
+
case 16:
|
|
14129
|
+
unitStrframe_data.flow_uniting = 'l/s';
|
|
14130
|
+
break;
|
|
14131
|
+
case 17:
|
|
14132
|
+
frame_data.flow_unit = 'l/min';
|
|
14133
|
+
break;
|
|
14134
|
+
case 18:
|
|
14135
|
+
frame_data.flow_unit = 'l/h';
|
|
14136
|
+
break;
|
|
14137
|
+
case 19:
|
|
14138
|
+
frame_data.flow_unit = 'l/d';
|
|
14139
|
+
break;
|
|
14140
|
+
case 20:
|
|
14141
|
+
frame_data.flow_unit = 'hl/s';
|
|
14142
|
+
break;
|
|
14143
|
+
case 21:
|
|
14144
|
+
frame_data.flow_unit = 'hl/min';
|
|
14145
|
+
break;
|
|
14146
|
+
case 22:
|
|
14147
|
+
frame_data.flow_unit = 'hl/h';
|
|
14148
|
+
break;
|
|
14149
|
+
case 23:
|
|
14150
|
+
frame_data.flow_unit = 'hl/d';
|
|
14151
|
+
break;
|
|
14152
|
+
case 24:
|
|
14153
|
+
frame_data.flow_unit = 'Ml/s';
|
|
14154
|
+
break;
|
|
14155
|
+
case 25:
|
|
14156
|
+
frame_data.flow_unit = 'Ml/min';
|
|
14157
|
+
break;
|
|
14158
|
+
case 26:
|
|
14159
|
+
frame_data.flow_unit = 'Ml/h';
|
|
14160
|
+
break;
|
|
14161
|
+
case 27:
|
|
14162
|
+
frame_data.flow_unit = 'Ml/d';
|
|
14163
|
+
break;
|
|
14164
|
+
|
|
14165
|
+
// US Customary & Imperial Flow Rates
|
|
14166
|
+
case 32:
|
|
14167
|
+
frame_data.flow_unit = 'af/s';
|
|
14168
|
+
break;
|
|
14169
|
+
case 33:
|
|
14170
|
+
frame_data.flow_unit = 'af/min';
|
|
14171
|
+
break;
|
|
14172
|
+
case 34:
|
|
14173
|
+
frame_data.flow_unit = 'af/h';
|
|
14174
|
+
break;
|
|
14175
|
+
case 35:
|
|
14176
|
+
frame_data.flow_unit = 'af/d';
|
|
14177
|
+
break;
|
|
14178
|
+
case 36:
|
|
14179
|
+
frame_data.flow_unit = 'ft³/s';
|
|
14180
|
+
break;
|
|
14181
|
+
case 37:
|
|
14182
|
+
frame_data.flow_unit = 'ft³/min';
|
|
14183
|
+
break;
|
|
14184
|
+
case 38:
|
|
14185
|
+
frame_data.flow_unit = 'ft³/h';
|
|
14186
|
+
break;
|
|
14187
|
+
case 39:
|
|
14188
|
+
frame_data.flow_unit = 'ft³/d';
|
|
14189
|
+
break;
|
|
14190
|
+
case 40:
|
|
14191
|
+
frame_data.flow_unit = 'fl oz/s (us)';
|
|
14192
|
+
break;
|
|
14193
|
+
case 41:
|
|
14194
|
+
frame_data.flow_unit = 'fl oz/min (us)';
|
|
14195
|
+
break;
|
|
14196
|
+
case 42:
|
|
14197
|
+
frame_data.flow_unit = 'fl oz/h (us)';
|
|
14198
|
+
break;
|
|
14199
|
+
case 43:
|
|
14200
|
+
frame_data.flow_unit = 'fl oz/d (us)';
|
|
14201
|
+
break;
|
|
14202
|
+
case 44:
|
|
14203
|
+
frame_data.flow_unit = 'gal/s (us)';
|
|
14204
|
+
break;
|
|
14205
|
+
case 45:
|
|
14206
|
+
frame_data.flow_unit = 'gal/min (us)';
|
|
14207
|
+
break;
|
|
14208
|
+
case 46:
|
|
14209
|
+
frame_data.flow_unit = 'gal/h (us)';
|
|
14210
|
+
break;
|
|
14211
|
+
case 47:
|
|
14212
|
+
frame_data.flow_unit = 'gal/d (us)';
|
|
14213
|
+
break;
|
|
14214
|
+
case 48:
|
|
14215
|
+
frame_data.flow_unit = 'Mgal/s (us)';
|
|
14216
|
+
break;
|
|
14217
|
+
case 49:
|
|
14218
|
+
frame_data.flow_unit = 'Mgal/min (us)';
|
|
14219
|
+
break;
|
|
14220
|
+
case 50:
|
|
14221
|
+
frame_data.flow_unit = 'Mgal/h (us)';
|
|
14222
|
+
break;
|
|
14223
|
+
case 51:
|
|
14224
|
+
frame_data.flow_unit = 'Mgal/d (us)';
|
|
14225
|
+
break;
|
|
14226
|
+
case 52:
|
|
14227
|
+
frame_data.flow_unit = 'bbl/s (us;liq.)';
|
|
14228
|
+
break;
|
|
14229
|
+
case 53:
|
|
14230
|
+
frame_data.flow_unit = 'bbl/min (us;liq.)';
|
|
14231
|
+
break;
|
|
14232
|
+
case 54:
|
|
14233
|
+
frame_data.flow_unit = 'bbl/h (us;liq.)';
|
|
14234
|
+
break;
|
|
14235
|
+
case 55:
|
|
14236
|
+
frame_data.flow_unit = 'bbl/d (us;liq.)';
|
|
14237
|
+
break;
|
|
14238
|
+
case 56:
|
|
14239
|
+
frame_data.flow_unit = 'bbl/s (us;beer)';
|
|
14240
|
+
break;
|
|
14241
|
+
case 57:
|
|
14242
|
+
frame_data.flow_unit = 'bbl/min (us;beer)';
|
|
14243
|
+
break;
|
|
14244
|
+
case 58:
|
|
14245
|
+
frame_data.flow_unit = 'bbl/h (us;beer)';
|
|
14246
|
+
break;
|
|
14247
|
+
case 59:
|
|
14248
|
+
frame_data.flow_unit = 'bbl/d (us;beer)';
|
|
14249
|
+
break;
|
|
14250
|
+
case 60:
|
|
14251
|
+
frame_data.flow_unit = 'bbl/s (us;oil)';
|
|
14252
|
+
break;
|
|
14253
|
+
case 61:
|
|
14254
|
+
frame_data.flow_unit = 'bbl/min (us;oil)';
|
|
14255
|
+
break;
|
|
14256
|
+
case 62:
|
|
14257
|
+
frame_data.flow_unit = 'bbl/h (us;oil)';
|
|
14258
|
+
break;
|
|
14259
|
+
case 63:
|
|
14260
|
+
frame_data.flow_unit = 'bbl/d (us;oil)';
|
|
14261
|
+
break;
|
|
14262
|
+
case 64:
|
|
14263
|
+
frame_data.flow_unit = 'bbl/s (us;tank)';
|
|
14264
|
+
break;
|
|
14265
|
+
case 65:
|
|
14266
|
+
frame_data.flow_unit = 'bbl/min (us;tank)';
|
|
14267
|
+
break;
|
|
14268
|
+
case 66:
|
|
14269
|
+
frame_data.flow_unit = 'bbl/h (us;tank)';
|
|
14270
|
+
break;
|
|
14271
|
+
case 67:
|
|
14272
|
+
frame_data.flow_unit = 'bbl/d (us;tank)';
|
|
14273
|
+
break;
|
|
14274
|
+
case 68:
|
|
14275
|
+
frame_data.flow_unit = 'gal/s (imp)';
|
|
14276
|
+
break;
|
|
14277
|
+
case 69:
|
|
14278
|
+
frame_data.flow_unit = 'gal/min (imp)';
|
|
14279
|
+
break;
|
|
14280
|
+
case 70:
|
|
14281
|
+
frame_data.flow_unit = 'gal/h (imp)';
|
|
14282
|
+
break;
|
|
14283
|
+
case 71:
|
|
14284
|
+
frame_data.flow_unit = 'gal/d (imp)';
|
|
14285
|
+
break;
|
|
14286
|
+
case 72:
|
|
14287
|
+
frame_data.flow_unit = 'Mgal/s (imp)';
|
|
14288
|
+
break;
|
|
14289
|
+
case 73:
|
|
14290
|
+
frame_data.flow_unit = 'Mgal/min (imp)';
|
|
14291
|
+
break;
|
|
14292
|
+
case 74:
|
|
14293
|
+
frame_data.flow_unit = 'Mgal/h (imp)';
|
|
14294
|
+
break;
|
|
14295
|
+
case 75:
|
|
14296
|
+
frame_data.flow_unit = 'Mgal/d (imp)';
|
|
14297
|
+
break;
|
|
14298
|
+
case 76:
|
|
14299
|
+
frame_data.flow_unit = 'bbl/s (imp;beer)';
|
|
14300
|
+
break;
|
|
14301
|
+
case 77:
|
|
14302
|
+
frame_data.flow_unit = 'bbl/min (imp;beer)';
|
|
14303
|
+
break;
|
|
14304
|
+
case 78:
|
|
14305
|
+
frame_data.flow_unit = 'bbl/h (imp;beer)';
|
|
14306
|
+
break;
|
|
14307
|
+
case 79:
|
|
14308
|
+
frame_data.flow_unit = 'bbl/d (imp;beer)';
|
|
14309
|
+
break;
|
|
14310
|
+
case 80:
|
|
14311
|
+
frame_data.flow_unit = 'bbl/s (imp;oil)';
|
|
14312
|
+
break;
|
|
14313
|
+
case 81:
|
|
14314
|
+
frame_data.flow_unit = 'bbl/min (imp;oil)';
|
|
14315
|
+
break;
|
|
14316
|
+
case 82:
|
|
14317
|
+
frame_data.flow_unit = 'bbl/h (imp;oil)';
|
|
14318
|
+
break;
|
|
14319
|
+
case 83:
|
|
14320
|
+
frame_data.flow_unit = 'bbl/d (imp;oil)';
|
|
14321
|
+
break;
|
|
14322
|
+
case 88:
|
|
14323
|
+
frame_data.flow_unit = 'kgal/s (us)';
|
|
14324
|
+
break;
|
|
14325
|
+
case 89:
|
|
14326
|
+
frame_data.flow_unit = 'kgal/min (us)';
|
|
14327
|
+
break;
|
|
14328
|
+
case 90:
|
|
14329
|
+
frame_data.flow_unit = 'kgal/h (us)';
|
|
14330
|
+
break;
|
|
14331
|
+
case 91:
|
|
14332
|
+
frame_data.flow_unit = 'kgal/d (us)';
|
|
14333
|
+
break;
|
|
14334
|
+
case 92:
|
|
14335
|
+
frame_data.flow_unit = 'MMft³/s';
|
|
14336
|
+
break;
|
|
14337
|
+
case 93:
|
|
14338
|
+
frame_data.flow_unit = 'MMft³/min';
|
|
14339
|
+
break;
|
|
14340
|
+
case 94:
|
|
14341
|
+
frame_data.flow_unit = 'MMft³/h';
|
|
14342
|
+
break;
|
|
14343
|
+
case 96:
|
|
14344
|
+
frame_data.flow_unit = 'Mft³/d';
|
|
14345
|
+
break;
|
|
14346
|
+
}
|
|
14347
|
+
switch(frame[13]){
|
|
14348
|
+
case 0:
|
|
14349
|
+
frame_data.pressure_unit = 'bar';
|
|
14350
|
+
break;
|
|
14351
|
+
case 1:
|
|
14352
|
+
frame_data.pressure_unit = 'psi a';
|
|
14353
|
+
break;
|
|
14354
|
+
case 2:
|
|
14355
|
+
frame_data.pressure_unit = 'bar g';
|
|
14356
|
+
break;
|
|
14357
|
+
case 3:
|
|
14358
|
+
frame_data.pressure_unit = 'psi g';
|
|
14359
|
+
break;
|
|
14360
|
+
case 4:
|
|
14361
|
+
frame_data.pressure_unit = 'Pa a';
|
|
14362
|
+
break;
|
|
14363
|
+
case 5:
|
|
14364
|
+
frame_data.pressure_unit = 'kPa a';
|
|
14365
|
+
break;
|
|
14366
|
+
case 6:
|
|
14367
|
+
frame_data.pressure_unit = 'MPa a';
|
|
14368
|
+
break;
|
|
14369
|
+
case 7:
|
|
14370
|
+
frame_data.pressure_unit = 'Pa g';
|
|
14371
|
+
break;
|
|
14372
|
+
case 8:
|
|
14373
|
+
frame_data.pressure_unit = 'kPa g';
|
|
14374
|
+
break;
|
|
14375
|
+
case 9:
|
|
14376
|
+
frame_data.pressure_unit = 'MPa g';
|
|
14377
|
+
break;
|
|
14378
|
+
}
|
|
14379
|
+
switch(frame[14]){
|
|
14380
|
+
case 1:
|
|
14381
|
+
frame_data.conductivity_unit = 'MS/m';
|
|
14382
|
+
break;
|
|
14383
|
+
case 2:
|
|
14384
|
+
frame_data.conductivity_unit = 'kS/m';
|
|
14385
|
+
break;
|
|
14386
|
+
case 3:
|
|
14387
|
+
frame_data.conductivity_unit = 'S/m';
|
|
14388
|
+
break;
|
|
14389
|
+
case 4:
|
|
14390
|
+
frame_data.conductivity_unit = 'S/cm';
|
|
14391
|
+
break;
|
|
14392
|
+
case 5:
|
|
14393
|
+
frame_data.conductivity_unit = 'mS/m';
|
|
14394
|
+
break;
|
|
14395
|
+
case 6:
|
|
14396
|
+
frame_data.conductivity_unit = 'mS/cm';
|
|
14397
|
+
break;
|
|
14398
|
+
case 7:
|
|
14399
|
+
frame_data.conductivity_unit = 'μS/m';
|
|
14400
|
+
break;
|
|
14401
|
+
case 8:
|
|
14402
|
+
frame_data.conductivity_unit = 'μS/cm';
|
|
14403
|
+
break;
|
|
14404
|
+
case 9:
|
|
14405
|
+
frame_data.conductivity_unit = 'μS/mm';
|
|
14406
|
+
break;
|
|
14407
|
+
case 10:
|
|
14408
|
+
frame_data.conductivity_unit = 'nS/cm';
|
|
14409
|
+
break;
|
|
14410
|
+
}
|
|
14411
|
+
|
|
14412
|
+
frame_data.totalizer_unit = [];
|
|
14413
|
+
|
|
14414
|
+
for (let index = 0; index < 3; index++) {
|
|
14415
|
+
switch(frame[index + 15]){
|
|
14416
|
+
case 0:
|
|
14417
|
+
frame_data.totalizer_unit[index] = 'cm³';
|
|
14418
|
+
break;
|
|
14419
|
+
case 1:
|
|
14420
|
+
frame_data.totalizer_unit[index] = 'dm³';
|
|
14421
|
+
break;
|
|
14422
|
+
case 2:
|
|
14423
|
+
frame_data.totalizer_unit[index] = 'm³';
|
|
14424
|
+
break;
|
|
14425
|
+
case 3:
|
|
14426
|
+
frame_data.totalizer_unit[index] = 'ml';
|
|
14427
|
+
break;
|
|
14428
|
+
case 4:
|
|
14429
|
+
frame_data.totalizer_unit[index] = 'l';
|
|
14430
|
+
break;
|
|
14431
|
+
case 5:
|
|
14432
|
+
frame_data.totalizer_unit[index] = 'hl';
|
|
14433
|
+
break;
|
|
14434
|
+
case 6:
|
|
14435
|
+
frame_data.totalizer_unit[index] = 'Ml Mega';
|
|
14436
|
+
break;
|
|
14437
|
+
case 8:
|
|
14438
|
+
frame_data.totalizer_unit[index] = 'af';
|
|
14439
|
+
break;
|
|
14440
|
+
case 9:
|
|
14441
|
+
frame_data.totalizer_unit[index] = 'ft³';
|
|
14442
|
+
break;
|
|
14443
|
+
case 10:
|
|
14444
|
+
frame_data.totalizer_unit[index] = 'fl oz (us)';
|
|
14445
|
+
break;
|
|
14446
|
+
case 11:
|
|
14447
|
+
frame_data.totalizer_unit[index] = 'gal (us)';
|
|
14448
|
+
break;
|
|
14449
|
+
case 12:
|
|
14450
|
+
frame_data.totalizer_unit[index] = 'Mgal (us)';
|
|
14451
|
+
break;
|
|
14452
|
+
case 13:
|
|
14453
|
+
frame_data.totalizer_unit[index] = 'bbl (us;liq.)';
|
|
14454
|
+
break;
|
|
14455
|
+
case 14:
|
|
14456
|
+
frame_data.totalizer_unit[index] = 'bbl (us;beer)';
|
|
14457
|
+
break;
|
|
14458
|
+
case 15:
|
|
14459
|
+
frame_data.totalizer_unit[index] = 'bbl (us;oil)';
|
|
14460
|
+
break;
|
|
14461
|
+
case 16:
|
|
14462
|
+
frame_data.totalizer_unit[index] = 'bbl (us;tank)';
|
|
14463
|
+
break;
|
|
14464
|
+
case 17:
|
|
14465
|
+
frame_data.totalizer_unit[index] = 'gal (imp)';
|
|
14466
|
+
break;
|
|
14467
|
+
case 18:
|
|
14468
|
+
frame_data.totalizer_unit[index] = 'Mgal (imp)';
|
|
14469
|
+
break;
|
|
14470
|
+
case 19:
|
|
14471
|
+
frame_data.totalizer_unit[index] = 'bbl (imp;beer)';
|
|
14472
|
+
break;
|
|
14473
|
+
case 20:
|
|
14474
|
+
frame_data.totalizer_unit[index] = 'bbl (imp;oil)';
|
|
14475
|
+
break;
|
|
14476
|
+
case 22:
|
|
14477
|
+
frame_data.totalizer_unit[index] = 'kgal (us)';
|
|
14478
|
+
break;
|
|
14479
|
+
case 23:
|
|
14480
|
+
frame_data.totalizer_unit[index] = 'Mft³';
|
|
14481
|
+
break;
|
|
14482
|
+
}
|
|
14483
|
+
|
|
14484
|
+
}
|
|
14485
|
+
return {
|
|
14486
|
+
'firmware': frame[2],
|
|
14487
|
+
'flow_unit': frame_data.flow_unit,
|
|
14488
|
+
'pressure_unit': frame_data.pressure_unit,
|
|
14489
|
+
'conductivity_unit': frame_data.conductivity_unit,
|
|
14490
|
+
'totalizer_1_unit': frame_data.totalizer_unit[0],
|
|
14491
|
+
'totalizer_2_unit': frame_data.totalizer_unit[1],
|
|
14492
|
+
'totalizer_3_unit': frame_data.totalizer_unit[2],
|
|
14493
|
+
'hardware_id': frame.slice(18, 21),
|
|
14494
|
+
'sample_rate': frame.slice(21, 25).reduce(msbLsb),
|
|
14495
|
+
'tx_life_counter': frame.slice(25, 29).reduce(msbLsb),
|
|
14496
|
+
'machine_values': {
|
|
14497
|
+
'firmware': frame[2],
|
|
14498
|
+
'flow_unit': frame[12],
|
|
14499
|
+
'pressure_unit': frame[13],
|
|
14500
|
+
'conductivity_unit': frame[14],
|
|
14501
|
+
'totalizer_1_unit': frame[15],
|
|
14502
|
+
'totalizer_2_unit': frame[16],
|
|
14503
|
+
'totalizer_3_unit': frame[17],
|
|
14504
|
+
'hardware_id': frame.slice(18, 21),
|
|
14505
|
+
'sample_rate': frame.slice(21, 25),
|
|
14506
|
+
'tx_life_counter': frame.slice(25, 29)
|
|
14507
|
+
}
|
|
14508
|
+
}
|
|
14509
|
+
}
|
|
14510
|
+
},
|
|
14511
|
+
'124': {
|
|
14512
|
+
name: 'Wireless EH Flow Sensor',
|
|
14513
|
+
parse: (d) => {
|
|
14514
|
+
return {
|
|
14515
|
+
Temp: signInt(payload.slice(8, 12).reduce(msbLsb), 32) / 100,
|
|
14516
|
+
Humid: signInt(payload.slice(12, 16).reduce(msbLsb), 32) / 100,
|
|
14517
|
+
Pressure: signInt(payload.slice(16, 20).reduce(msbLsb), 32) / 100,
|
|
14518
|
+
WindSpd: signInt(payload.slice(20, 24).reduce(msbLsb),32) / 100,
|
|
14519
|
+
WindDir: signInt(payload.slice(24, 28).reduce(msbLsb),32) / 100,
|
|
14520
|
+
reserve: payload[7]
|
|
14521
|
+
};
|
|
14522
|
+
}
|
|
14523
|
+
},
|
|
14524
|
+
'211': {
|
|
14525
|
+
name: 'DO and Flow Sensor',
|
|
14526
|
+
parse: (payload, parsed, mac) => {
|
|
14527
|
+
if(payload[0] == 0){ // regular
|
|
14528
|
+
return {
|
|
14529
|
+
msg_type: 'regular',
|
|
14530
|
+
temperature: signInt(payload.slice(1, 3).reduce(msbLsb), 16),
|
|
14531
|
+
oxygen_saturation_percent: payload.slice(3, 7).reduce(msbLsb),
|
|
14532
|
+
oxygen_ppm: payload.slice(7, 11).reduce(msbLsb),
|
|
14533
|
+
oxygen_mg_l: payload.slice(11, 15).reduce(msbLsb)
|
|
14534
|
+
};
|
|
14535
|
+
}
|
|
14536
|
+
else{ // theshold
|
|
14537
|
+
let solenoid_status = payload[2];
|
|
14538
|
+
if(solenoid_status == 1){ // Solenoid On
|
|
14539
|
+
return {
|
|
14540
|
+
msg_type: 'threshold',
|
|
14541
|
+
solenoid_number: payload[1],
|
|
14542
|
+
solenoid_status: 'on',
|
|
14543
|
+
temperature: signInt(payload.slice(3, 5).reduce(msbLsb), 16),
|
|
14544
|
+
oxygen_saturation_percent: payload.slice(5, 9).reduce(msbLsb),
|
|
14545
|
+
oxygen_ppm: payload.slice(9, 13).reduce(msbLsb),
|
|
14546
|
+
oxygen_mg_l: payload.slice(13, 17).reduce(msbLsb),
|
|
14547
|
+
flow_rate: payload.slice(17, 21).reduce(msbLsb)
|
|
14548
|
+
};
|
|
14549
|
+
} else{ // Solenoid Off
|
|
14550
|
+
return {
|
|
14551
|
+
msg_type: 'threshold',
|
|
14552
|
+
solenoid_number: payload[1],
|
|
14553
|
+
solenoid_status: 'off',
|
|
14554
|
+
temperature: signInt(payload.slice(3, 5).reduce(msbLsb), 16),
|
|
14555
|
+
oxygen_saturation_percent: payload.slice(5, 9).reduce(msbLsb),
|
|
14556
|
+
oxygen_ppm: payload.slice(9, 13).reduce(msbLsb),
|
|
14557
|
+
oxygen_mg_l: payload.slice(13, 17).reduce(msbLsb)
|
|
14558
|
+
};
|
|
14559
|
+
}
|
|
14560
|
+
}
|
|
14561
|
+
},
|
|
14562
|
+
'parse_fly': (frame) => {
|
|
14563
|
+
return {
|
|
14564
|
+
'firmware': frame[2],
|
|
14565
|
+
'hardware_id': frame.slice(12, 15),
|
|
14566
|
+
'report_rate': frame.slice(15, 19).reduce(msbLsb) + "Sec",
|
|
14567
|
+
'tx_life_counter': frame.slice(19, 23).reduce(msbLsb),
|
|
14568
|
+
'machine_values': {
|
|
13164
14569
|
'firmware': frame[2],
|
|
13165
|
-
'
|
|
13166
|
-
'
|
|
13167
|
-
'
|
|
13168
|
-
'machine_values': {
|
|
13169
|
-
'firmware': frame[2],
|
|
13170
|
-
'report_rate': frame.slice(12, 16),
|
|
13171
|
-
'fsr':frame[16],
|
|
13172
|
-
'boot_up_time': frame[17],
|
|
13173
|
-
'frame': frame
|
|
13174
|
-
}
|
|
14570
|
+
'hardware_id': frame.slice(12, 15),
|
|
14571
|
+
'report_rate': frame.slice(15, 19),
|
|
14572
|
+
'tx_life_counter': frame.slice(19, 23)
|
|
13175
14573
|
}
|
|
13176
14574
|
}
|
|
13177
14575
|
}
|
|
13178
14576
|
},
|
|
13179
|
-
'
|
|
13180
|
-
name: '
|
|
13181
|
-
parse: (d,
|
|
13182
|
-
if(
|
|
14577
|
+
'217': {
|
|
14578
|
+
name: 'Wireless Weight Scale',
|
|
14579
|
+
parse: (d, parsed, mac) => {
|
|
14580
|
+
if(d[7] == 254){
|
|
13183
14581
|
console.log('Error found');
|
|
13184
|
-
|
|
13185
|
-
|
|
13186
|
-
return error;
|
|
13187
|
-
}
|
|
13188
|
-
let report_type = "Regular";
|
|
13189
|
-
switch(d[25]){
|
|
13190
|
-
case 0:
|
|
13191
|
-
report_type = "Regular";
|
|
13192
|
-
break;
|
|
13193
|
-
case 1:
|
|
13194
|
-
report_type = "Shift end";
|
|
13195
|
-
break;
|
|
13196
|
-
case 2:
|
|
13197
|
-
report_type = "Interrupt";
|
|
13198
|
-
break;
|
|
13199
|
-
case 3:
|
|
13200
|
-
report_type = "Threshold";
|
|
13201
|
-
break;
|
|
14582
|
+
parsed.data = {error: 'Error found, Load cell comm error'};
|
|
14583
|
+
return parsed;
|
|
13202
14584
|
}
|
|
13203
14585
|
return {
|
|
13204
|
-
|
|
13205
|
-
digital_input_1_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
13206
|
-
digital_input_2_counter: d.slice(8, 12).reduce(msbLsb),
|
|
13207
|
-
digital_input_2_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
13208
|
-
digital_input_3_counter: d.slice(16, 20).reduce(msbLsb),
|
|
13209
|
-
digital_input_3_uptime: d.slice(20, 24).reduce(msbLsb),
|
|
13210
|
-
input_1: d[24] & 1 ? 1 : 0,
|
|
13211
|
-
input_2: d[24] & 2 ? 1 : 0,
|
|
13212
|
-
input_3: d[24] & 4 ? 1 : 0,
|
|
13213
|
-
report_type: report_type,
|
|
13214
|
-
rtc: [
|
|
13215
|
-
String(d[26]).padStart(2, '0'),
|
|
13216
|
-
String(d[27]).padStart(2, '0'),
|
|
13217
|
-
String(d[28]).padStart(2, '0')
|
|
13218
|
-
].join(':')
|
|
14586
|
+
weight: signInt(d.slice(8, 12).reduce(msbLsb), 32) / 100
|
|
13219
14587
|
};
|
|
13220
14588
|
},
|
|
13221
14589
|
'parse_fly': (frame) => {
|
|
13222
|
-
|
|
13223
|
-
|
|
13224
|
-
|
|
13225
|
-
|
|
13226
|
-
|
|
13227
|
-
|
|
13228
|
-
|
|
13229
|
-
|
|
13230
|
-
|
|
13231
|
-
|
|
13232
|
-
|
|
13233
|
-
|
|
13234
|
-
let rtc_sampling_interval = "5sec";
|
|
13235
|
-
switch(frame[37]){
|
|
13236
|
-
case 0:
|
|
13237
|
-
rtc_sampling_interval = "1min";
|
|
13238
|
-
break;
|
|
13239
|
-
case 1:
|
|
13240
|
-
rtc_sampling_interval = "5min";
|
|
13241
|
-
break;
|
|
13242
|
-
case 2:
|
|
13243
|
-
rtc_sampling_interval = "15min";
|
|
13244
|
-
break;
|
|
13245
|
-
case 3:
|
|
13246
|
-
rtc_sampling_interval = "30min";
|
|
13247
|
-
break;
|
|
13248
|
-
case 4:
|
|
13249
|
-
rtc_sampling_interval = "1h";
|
|
13250
|
-
break;
|
|
13251
|
-
case 5:
|
|
13252
|
-
rtc_sampling_interval = "2h";
|
|
13253
|
-
break;
|
|
13254
|
-
case 6:
|
|
13255
|
-
rtc_sampling_interval = "3h";
|
|
13256
|
-
break;
|
|
13257
|
-
case 7:
|
|
13258
|
-
rtc_sampling_interval = "6h";
|
|
13259
|
-
break;
|
|
13260
|
-
case 8:
|
|
13261
|
-
rtc_sampling_interval = "12h";
|
|
13262
|
-
break;
|
|
13263
|
-
case 9:
|
|
13264
|
-
rtc_sampling_interval = "5sec";
|
|
13265
|
-
break;
|
|
13266
|
-
case 10:
|
|
13267
|
-
rtc_sampling_interval = "10sec";
|
|
13268
|
-
break;
|
|
13269
|
-
case 11:
|
|
13270
|
-
rtc_sampling_interval = "15sec";
|
|
13271
|
-
break;
|
|
13272
|
-
case 12:
|
|
13273
|
-
rtc_sampling_interval = "30sec";
|
|
13274
|
-
break;
|
|
13275
|
-
}
|
|
13276
|
-
return {
|
|
13277
|
-
'firmware': frame[2],
|
|
13278
|
-
'debouncing_timeout': frame.slice(16, 18).reduce(msbLsb) + "msec",
|
|
13279
|
-
'input_1_active_edge': frame[18]? "Rising": "Falling",
|
|
13280
|
-
'input_2_active_edge': frame[19]? "Rising": "Falling",
|
|
13281
|
-
'input_3_active_edge': frame[20]? "Rising": "Falling",
|
|
13282
|
-
'counter_threshold': frame.slice(21, 25).reduce(msbLsb),
|
|
13283
|
-
'trasnmit_on_change_status': frame[25]? "Enabled": "Disabled",
|
|
13284
|
-
'Shift_end_1': [
|
|
13285
|
-
String(frame[26]).padStart(2, '0'),
|
|
13286
|
-
String(frame[27]).padStart(2, '0')
|
|
13287
|
-
].join(':'),
|
|
13288
|
-
'Shift_end_2': [
|
|
13289
|
-
String(frame[28]).padStart(2, '0'),
|
|
13290
|
-
String(frame[29]).padStart(2, '0')
|
|
13291
|
-
].join(':'),
|
|
13292
|
-
'Shift_end_3': [
|
|
13293
|
-
String(frame[30]).padStart(2, '0'),
|
|
13294
|
-
String(frame[31]).padStart(2, '0')
|
|
13295
|
-
].join(':'),
|
|
13296
|
-
'Shift_end_4': [
|
|
13297
|
-
String(frame[32]).padStart(2, '0'),
|
|
13298
|
-
String(frame[33]).padStart(2, '0')
|
|
13299
|
-
].join(':'),
|
|
13300
|
-
'reset_timeout': frame.slice(34, 36).reduce(msbLsb) + "min",
|
|
13301
|
-
'counter_reset_mode': reset_mode,
|
|
13302
|
-
'sampling_interval': rtc_sampling_interval,
|
|
13303
|
-
'interrupt_timeout': frame.slice(38, 40).reduce(msbLsb) + "msec",
|
|
13304
|
-
'hardware_id': frame.slice(40, 43),
|
|
13305
|
-
'report_rate': frame.slice(43, 47).reduce(msbLsb) + "sec",
|
|
13306
|
-
'tx_life_counter': frame.slice(47, 51).reduce(msbLsb),
|
|
13307
|
-
'machine_values': {
|
|
14590
|
+
if(frame[2] > 2){
|
|
14591
|
+
let date = [
|
|
14592
|
+
String(frame.slice(20, 22).reduce(msbLsb)),
|
|
14593
|
+
String(frame[22]).padStart(2, '0'),
|
|
14594
|
+
String(frame[23]).padStart(2, '0')
|
|
14595
|
+
].join('-');
|
|
14596
|
+
let time = [
|
|
14597
|
+
String(frame[24]).padStart(2, '0'),
|
|
14598
|
+
String(frame[25]).padStart(2, '0'),
|
|
14599
|
+
String(frame[26]).padStart(2, '0')
|
|
14600
|
+
].join(':');
|
|
14601
|
+
return {
|
|
13308
14602
|
'firmware': frame[2],
|
|
13309
|
-
'
|
|
13310
|
-
'
|
|
13311
|
-
'
|
|
13312
|
-
'
|
|
13313
|
-
'
|
|
13314
|
-
'
|
|
13315
|
-
'
|
|
13316
|
-
|
|
13317
|
-
|
|
13318
|
-
|
|
13319
|
-
|
|
13320
|
-
|
|
13321
|
-
|
|
13322
|
-
|
|
13323
|
-
|
|
13324
|
-
'report_rate': frame.slice(43, 47),
|
|
13325
|
-
'tx_life_counter': frame.slice(47, 51)
|
|
14603
|
+
'calibration_tare': frame.slice(12, 16).reduce(msbLsb),
|
|
14604
|
+
'tare_counter': frame.slice(16, 20).reduce(msbLsb),
|
|
14605
|
+
'timestamp': date + 'T' + time,
|
|
14606
|
+
'hardware_id': frame.slice(27, 30),
|
|
14607
|
+
'report_rate': frame.slice(30, 34).reduce(msbLsb) + "Sec",
|
|
14608
|
+
'tx_life_counter': frame.slice(34, 38).reduce(msbLsb),
|
|
14609
|
+
'machine_values': {
|
|
14610
|
+
'firmware': frame[2],
|
|
14611
|
+
'calibration_tare': frame.slice(12, 16),
|
|
14612
|
+
'tare_counter': frame.slice(16, 20),
|
|
14613
|
+
'date': frame.slice(20, 27),
|
|
14614
|
+
'hardware_id': frame.slice(27, 30),
|
|
14615
|
+
'report_rate': frame.slice(30, 34),
|
|
14616
|
+
'tx_life_counter': frame.slice(34, 38)
|
|
14617
|
+
}
|
|
13326
14618
|
}
|
|
13327
14619
|
}
|
|
13328
14620
|
}
|
|
13329
14621
|
},
|
|
13330
|
-
'
|
|
13331
|
-
name: '
|
|
14622
|
+
'270': {
|
|
14623
|
+
name: 'Custom Salinity DO sensor',
|
|
13332
14624
|
parse: (d) => {
|
|
13333
14625
|
return {
|
|
13334
|
-
|
|
13335
|
-
|
|
13336
|
-
|
|
13337
|
-
|
|
13338
|
-
|
|
13339
|
-
|
|
13340
|
-
|
|
13341
|
-
|
|
13342
|
-
|
|
13343
|
-
|
|
13344
|
-
|
|
13345
|
-
|
|
13346
|
-
|
|
14626
|
+
sensor_status: d[0],
|
|
14627
|
+
do_temperature_1: d.slice(1, 3).reduce(msbLsb) / 100,
|
|
14628
|
+
do_temperature_2: d.slice(3, 5).reduce(msbLsb) / 100,
|
|
14629
|
+
do_temperature_3: d.slice(5, 7).reduce(msbLsb) / 100,
|
|
14630
|
+
do_temperature_4: d.slice(7, 9).reduce(msbLsb) / 100,
|
|
14631
|
+
ec_temperature_1: d.slice(9, 11).reduce(msbLsb) / 100,
|
|
14632
|
+
ec_temperature_2: d.slice(11, 13).reduce(msbLsb) / 100,
|
|
14633
|
+
ec_temperature_3: d.slice(13, 15).reduce(msbLsb) / 100,
|
|
14634
|
+
ec_temperature_4: d.slice(15, 17).reduce(msbLsb) / 100,
|
|
14635
|
+
do_saturation_perc_1: d.slice(17, 19).reduce(msbLsb) / 100,
|
|
14636
|
+
do_saturation_perc_2: d.slice(19, 21).reduce(msbLsb) / 100,
|
|
14637
|
+
do_saturation_perc_3: d.slice(21, 23).reduce(msbLsb) / 100,
|
|
14638
|
+
do_saturation_perc_4: d.slice(23, 25).reduce(msbLsb) / 100,
|
|
14639
|
+
do_ppm_1: d.slice(25, 27).reduce(msbLsb) / 100,
|
|
14640
|
+
do_ppm_2: d.slice(27, 29).reduce(msbLsb) / 100,
|
|
14641
|
+
do_ppm_3: d.slice(29, 31).reduce(msbLsb) / 100,
|
|
14642
|
+
do_ppm_4: d.slice(31, 33).reduce(msbLsb) / 100,
|
|
14643
|
+
do_mgl_1: d.slice(33, 35).reduce(msbLsb) / 100,
|
|
14644
|
+
do_mgl_2: d.slice(35, 37).reduce(msbLsb) / 100,
|
|
14645
|
+
do_mgl_3: d.slice(37, 39).reduce(msbLsb) / 100,
|
|
14646
|
+
do_mgl_4: d.slice(39, 41).reduce(msbLsb) / 100,
|
|
14647
|
+
ec_conductivity_1: d.slice(41, 43).reduce(msbLsb) / 100,
|
|
14648
|
+
ec_conductivity_2: d.slice(43, 45).reduce(msbLsb) / 100,
|
|
14649
|
+
ec_conductivity_3: d.slice(45, 47).reduce(msbLsb) / 100,
|
|
14650
|
+
ec_conductivity_4: d.slice(47, 49).reduce(msbLsb) / 100,
|
|
14651
|
+
ec_salinity_ppt_1: d.slice(49, 57).reduce(msbLsb) / 100,
|
|
14652
|
+
ec_salinity_ppt_2: d.slice(57, 65).reduce(msbLsb) / 100,
|
|
14653
|
+
ec_salinity_ppt_3: d.slice(65, 73).reduce(msbLsb) / 100,
|
|
14654
|
+
ec_salinity_ppt_4: d.slice(73, 81).reduce(msbLsb) / 100,
|
|
14655
|
+
ec_tds_1: d.slice(81, 85).reduce(msbLsb) / 100,
|
|
14656
|
+
ec_tds_2: d.slice(85, 89).reduce(msbLsb) / 100,
|
|
14657
|
+
ec_tds_3: d.slice(89, 93).reduce(msbLsb) / 100,
|
|
14658
|
+
ec_tds_4: d.slice(93, 97).reduce(msbLsb) / 100
|
|
13347
14659
|
};
|
|
13348
14660
|
},
|
|
13349
14661
|
'parse_fly': (frame) => {
|
|
@@ -16555,7 +17867,7 @@ function sensor_types(parent){
|
|
|
16555
17867
|
parsed.data = {error: 'Error found, Sensor Probe may be unattached'};
|
|
16556
17868
|
return parsed;
|
|
16557
17869
|
}
|
|
16558
|
-
let msg_type = 'regular';
|
|
17870
|
+
let msg_type = 'regular';
|
|
16559
17871
|
if(payload[8] === 1){
|
|
16560
17872
|
var deviceAddr = mac;
|
|
16561
17873
|
var firmware = payload[1];
|
|
@@ -16769,25 +18081,25 @@ function sensor_types(parent){
|
|
|
16769
18081
|
x_max_ACC_G: payload.slice(14, 16).reduce(msbLsb)/1000,
|
|
16770
18082
|
x_velocity_mm_sec: payload.slice(16, 18).reduce(msbLsb) / 100,
|
|
16771
18083
|
x_displacement_mm: payload.slice(18, 20).reduce(msbLsb) / 100,
|
|
16772
|
-
x_peak_one_Hz: payload.slice(20, 22).reduce(msbLsb),
|
|
16773
|
-
x_peak_two_Hz: payload.slice(22, 24).reduce(msbLsb),
|
|
16774
|
-
x_peak_three_Hz: payload.slice(24, 26).reduce(msbLsb),
|
|
18084
|
+
x_peak_one_Hz: payload.slice(20, 22).reduce(msbLsb)/100,
|
|
18085
|
+
x_peak_two_Hz: payload.slice(22, 24).reduce(msbLsb)/100,
|
|
18086
|
+
x_peak_three_Hz: payload.slice(24, 26).reduce(msbLsb)/100,
|
|
16775
18087
|
|
|
16776
18088
|
y_rms_ACC_G: payload.slice(26, 28).reduce(msbLsb)/1000,
|
|
16777
18089
|
y_max_ACC_G: payload.slice(28, 30).reduce(msbLsb)/1000,
|
|
16778
18090
|
y_velocity_mm_sec: payload.slice(30, 32).reduce(msbLsb) / 100,
|
|
16779
18091
|
y_displacement_mm: payload.slice(32, 34).reduce(msbLsb) / 100,
|
|
16780
|
-
y_peak_one_Hz: payload.slice(34, 36).reduce(msbLsb),
|
|
16781
|
-
y_peak_two_Hz: payload.slice(36, 38).reduce(msbLsb),
|
|
16782
|
-
y_peak_three_Hz: payload.slice(38, 40).reduce(msbLsb),
|
|
18092
|
+
y_peak_one_Hz: payload.slice(34, 36).reduce(msbLsb)/100,
|
|
18093
|
+
y_peak_two_Hz: payload.slice(36, 38).reduce(msbLsb)/100,
|
|
18094
|
+
y_peak_three_Hz: payload.slice(38, 40).reduce(msbLsb)/100,
|
|
16783
18095
|
|
|
16784
18096
|
z_rms_ACC_G: payload.slice(40, 42).reduce(msbLsb)/1000,
|
|
16785
18097
|
z_max_ACC_G: payload.slice(42, 44).reduce(msbLsb)/1000,
|
|
16786
18098
|
z_velocity_mm_sec: payload.slice(44, 46).reduce(msbLsb) / 100,
|
|
16787
18099
|
z_displacement_mm: payload.slice(46, 48).reduce(msbLsb) / 100,
|
|
16788
|
-
z_peak_one_Hz: payload.slice(48, 50).reduce(msbLsb),
|
|
16789
|
-
z_peak_two_Hz: payload.slice(50, 52).reduce(msbLsb),
|
|
16790
|
-
z_peak_three_Hz: payload.slice(52, 54).reduce(msbLsb)
|
|
18100
|
+
z_peak_one_Hz: payload.slice(48, 50).reduce(msbLsb)/100,
|
|
18101
|
+
z_peak_two_Hz: payload.slice(50, 52).reduce(msbLsb)/100,
|
|
18102
|
+
z_peak_three_Hz: payload.slice(52, 54).reduce(msbLsb)/100
|
|
16791
18103
|
};
|
|
16792
18104
|
}
|
|
16793
18105
|
// else{
|
|
@@ -16828,7 +18140,7 @@ function sensor_types(parent){
|
|
|
16828
18140
|
frame_data.odr_1 = 500;
|
|
16829
18141
|
break;
|
|
16830
18142
|
}
|
|
16831
|
-
frame_data.sampling_duration_1 = frame[18]
|
|
18143
|
+
frame_data.sampling_duration_1 = frame[18] + "sec";
|
|
16832
18144
|
switch(frame[19]){
|
|
16833
18145
|
case 0:
|
|
16834
18146
|
frame_data.filter_status = "Disabled";
|