@ncd-io/node-red-enterprise-sensors 1.4.5 → 1.4.7
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 +621 -129
- package/package.json +1 -1
- package/wireless.html +152 -16
- 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,6 +9479,140 @@ function sensor_types(parent){
|
|
|
9207
9479
|
'tx_life_counter': frame.slice(50, 54)
|
|
9208
9480
|
}
|
|
9209
9481
|
}
|
|
9482
|
+
} else if(frame[2] == 14){ // 14
|
|
9483
|
+
let reset_mode = "Disabled";
|
|
9484
|
+
switch(frame[38]){
|
|
9485
|
+
case 0:
|
|
9486
|
+
reset_mode = "Disabled";
|
|
9487
|
+
break;
|
|
9488
|
+
case 1:
|
|
9489
|
+
reset_mode = "Shift Ends";
|
|
9490
|
+
break;
|
|
9491
|
+
case 2:
|
|
9492
|
+
reset_mode = "Timeout";
|
|
9493
|
+
break;
|
|
9494
|
+
}
|
|
9495
|
+
let acc_odr = "10Hz";
|
|
9496
|
+
switch(frame[40]){
|
|
9497
|
+
case 0:
|
|
9498
|
+
acc_odr = "10Hz";
|
|
9499
|
+
break;
|
|
9500
|
+
case 1:
|
|
9501
|
+
acc_odr = "20Hz";
|
|
9502
|
+
break;
|
|
9503
|
+
case 2:
|
|
9504
|
+
acc_odr = "50Hz";
|
|
9505
|
+
break;
|
|
9506
|
+
case 3:
|
|
9507
|
+
acc_odr = "100Hz";
|
|
9508
|
+
break;
|
|
9509
|
+
case 4:
|
|
9510
|
+
acc_odr = "200Hz";
|
|
9511
|
+
break;
|
|
9512
|
+
case 5:
|
|
9513
|
+
acc_odr = "400Hz";
|
|
9514
|
+
break;
|
|
9515
|
+
}
|
|
9516
|
+
let rtc_sampling_interval = "5 seconds";
|
|
9517
|
+
switch(frame[39]){
|
|
9518
|
+
case 0:
|
|
9519
|
+
rtc_sampling_interval = "1 minute";
|
|
9520
|
+
break;
|
|
9521
|
+
case 1:
|
|
9522
|
+
rtc_sampling_interval = "5 minutes";
|
|
9523
|
+
break;
|
|
9524
|
+
case 2:
|
|
9525
|
+
rtc_sampling_interval = "15 minutes";
|
|
9526
|
+
break;
|
|
9527
|
+
case 3:
|
|
9528
|
+
rtc_sampling_interval = "30 minutes";
|
|
9529
|
+
break;
|
|
9530
|
+
case 4:
|
|
9531
|
+
rtc_sampling_interval = "1 hour";
|
|
9532
|
+
break;
|
|
9533
|
+
case 5:
|
|
9534
|
+
rtc_sampling_interval = "2 hours";
|
|
9535
|
+
break;
|
|
9536
|
+
case 6:
|
|
9537
|
+
rtc_sampling_interval = "3 hours";
|
|
9538
|
+
break;
|
|
9539
|
+
case 7:
|
|
9540
|
+
rtc_sampling_interval = "6 hours";
|
|
9541
|
+
break;
|
|
9542
|
+
case 8:
|
|
9543
|
+
rtc_sampling_interval = "12 hours";
|
|
9544
|
+
break;
|
|
9545
|
+
case 9:
|
|
9546
|
+
rtc_sampling_interval = "5 seconds";
|
|
9547
|
+
break;
|
|
9548
|
+
case 10:
|
|
9549
|
+
rtc_sampling_interval = "10 seconds";
|
|
9550
|
+
break;
|
|
9551
|
+
case 11:
|
|
9552
|
+
rtc_sampling_interval = "15 seconds";
|
|
9553
|
+
break;
|
|
9554
|
+
case 12:
|
|
9555
|
+
rtc_sampling_interval = "30 seconds";
|
|
9556
|
+
break;
|
|
9557
|
+
}
|
|
9558
|
+
return {
|
|
9559
|
+
'firmware': frame[2],
|
|
9560
|
+
'accelerometer_threshold': (frame[16]* 32) + "mg",
|
|
9561
|
+
'debouncing_timeout': frame.slice(17, 19).reduce(msbLsb) + "msec",
|
|
9562
|
+
'accelero_state': frame[19]? "Enabled": "Disabled",
|
|
9563
|
+
'input_1_active_edge': frame[20]? "Rising": "Falling",
|
|
9564
|
+
'input_2_active_edge': frame[21]? "Rising": "Falling",
|
|
9565
|
+
'input_3_active_edge': frame[22]? "Rising": "Falling",
|
|
9566
|
+
'counter_threshold': frame.slice(23, 27).reduce(msbLsb),
|
|
9567
|
+
'trasnmit_on_change_status': frame[27]? "Enabled": "Disabled",
|
|
9568
|
+
'Shift_end_1': [
|
|
9569
|
+
String(frame[28]).padStart(2, '0'),
|
|
9570
|
+
String(frame[29]).padStart(2, '0')
|
|
9571
|
+
].join(':'),
|
|
9572
|
+
'Shift_end_2': [
|
|
9573
|
+
String(frame[30]).padStart(2, '0'),
|
|
9574
|
+
String(frame[31]).padStart(2, '0')
|
|
9575
|
+
].join(':'),
|
|
9576
|
+
'Shift_end_3': [
|
|
9577
|
+
String(frame[32]).padStart(2, '0'),
|
|
9578
|
+
String(frame[33]).padStart(2, '0')
|
|
9579
|
+
].join(':'),
|
|
9580
|
+
'Shift_end_4': [
|
|
9581
|
+
String(frame[34]).padStart(2, '0'),
|
|
9582
|
+
String(frame[35]).padStart(2, '0')
|
|
9583
|
+
].join(':'),
|
|
9584
|
+
'reset_timeout': frame.slice(36, 38).reduce(msbLsb) + "min",
|
|
9585
|
+
'counter_reset_mode': reset_mode,
|
|
9586
|
+
'sampling_interval': rtc_sampling_interval,
|
|
9587
|
+
'acc_odr': acc_odr,
|
|
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),
|
|
9592
|
+
'machine_values': {
|
|
9593
|
+
'firmware': frame[2],
|
|
9594
|
+
'accelerometer_threshold': frame[16],
|
|
9595
|
+
'debouncing_timeout': frame.slice(17, 19),
|
|
9596
|
+
'accelero_state': frame[19],
|
|
9597
|
+
'input_1_active_edge': frame[20],
|
|
9598
|
+
'input_2_active_edge': frame[21],
|
|
9599
|
+
'input_3_active_edge': frame[22],
|
|
9600
|
+
'counter_threshold': frame.slice(23, 27),
|
|
9601
|
+
'trasnmit_on_change_status': frame[27],
|
|
9602
|
+
'Shift_end_1': frame.slice(28, 30),
|
|
9603
|
+
'Shift_end_2': frame.slice(30, 32),
|
|
9604
|
+
'Shift_end_3': frame.slice(32, 34),
|
|
9605
|
+
'Shift_end_4': frame.slice(34, 36),
|
|
9606
|
+
'reset_timeout': frame.slice(36, 38),
|
|
9607
|
+
'counter_reset_mode': frame[38],
|
|
9608
|
+
'sampling_interval': frame[39],
|
|
9609
|
+
'acc_odr': frame[40],
|
|
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)
|
|
9614
|
+
}
|
|
9615
|
+
}
|
|
9210
9616
|
} else if(frame[2] > 9){ // firmware 10 11 12 13 14 15
|
|
9211
9617
|
let reset_mode = "Disabled";
|
|
9212
9618
|
switch(frame[38]){
|
|
@@ -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,9 +13472,10 @@ 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
|
}
|
|
@@ -13179,12 +13640,6 @@ function sensor_types(parent){
|
|
|
13179
13640
|
'123': {
|
|
13180
13641
|
name: '3 Channel Production Counter',
|
|
13181
13642
|
parse: (d, payload) => {
|
|
13182
|
-
if(payload[7] & 2 != 0){
|
|
13183
|
-
console.log('Error found');
|
|
13184
|
-
// parsed.data = {error: 'Error found, Acclerometer Probe may be unattached'};
|
|
13185
|
-
let error = {error: 'Error found, Acclerometer Probe may be unattached'};
|
|
13186
|
-
return error;
|
|
13187
|
-
}
|
|
13188
13643
|
let report_type = "Regular";
|
|
13189
13644
|
switch(d[25]){
|
|
13190
13645
|
case 0:
|
|
@@ -13882,10 +14337,47 @@ function sensor_types(parent){
|
|
|
13882
14337
|
},
|
|
13883
14338
|
'217': {
|
|
13884
14339
|
name: 'Wireless Weight Scale',
|
|
13885
|
-
parse: (d) => {
|
|
14340
|
+
parse: (d, parsed, mac) => {
|
|
14341
|
+
if(d[7] == 254){
|
|
14342
|
+
console.log('Error found');
|
|
14343
|
+
parsed.data = {error: 'Error found, Load cell comm error'};
|
|
14344
|
+
return parsed;
|
|
14345
|
+
}
|
|
13886
14346
|
return {
|
|
13887
|
-
weight: signInt(d.slice(
|
|
14347
|
+
weight: signInt(d.slice(8, 12).reduce(msbLsb), 32) / 100
|
|
13888
14348
|
};
|
|
14349
|
+
},
|
|
14350
|
+
'parse_fly': (frame) => {
|
|
14351
|
+
if(frame[2] > 2){
|
|
14352
|
+
let date = [
|
|
14353
|
+
String(frame.slice(20, 22).reduce(msbLsb)),
|
|
14354
|
+
String(frame[22]).padStart(2, '0'),
|
|
14355
|
+
String(frame[23]).padStart(2, '0')
|
|
14356
|
+
].join('-');
|
|
14357
|
+
let time = [
|
|
14358
|
+
String(frame[24]).padStart(2, '0'),
|
|
14359
|
+
String(frame[25]).padStart(2, '0'),
|
|
14360
|
+
String(frame[26]).padStart(2, '0')
|
|
14361
|
+
].join(':');
|
|
14362
|
+
return {
|
|
14363
|
+
'firmware': frame[2],
|
|
14364
|
+
'calibration_tare': frame.slice(12, 16).reduce(msbLsb),
|
|
14365
|
+
'tare_counter': frame.slice(16, 20).reduce(msbLsb),
|
|
14366
|
+
'timestamp': date + 'T' + time,
|
|
14367
|
+
'hardware_id': frame.slice(27, 30),
|
|
14368
|
+
'report_rate': frame.slice(30, 34).reduce(msbLsb) + "Sec",
|
|
14369
|
+
'tx_life_counter': frame.slice(34, 38).reduce(msbLsb),
|
|
14370
|
+
'machine_values': {
|
|
14371
|
+
'firmware': frame[2],
|
|
14372
|
+
'calibration_tare': frame.slice(12, 16),
|
|
14373
|
+
'tare_counter': frame.slice(16, 20),
|
|
14374
|
+
'date': frame.slice(20, 27),
|
|
14375
|
+
'hardware_id': frame.slice(27, 30),
|
|
14376
|
+
'report_rate': frame.slice(30, 34),
|
|
14377
|
+
'tx_life_counter': frame.slice(34, 38)
|
|
14378
|
+
}
|
|
14379
|
+
}
|
|
14380
|
+
}
|
|
13889
14381
|
}
|
|
13890
14382
|
},
|
|
13891
14383
|
'270': {
|
|
@@ -16555,7 +17047,7 @@ function sensor_types(parent){
|
|
|
16555
17047
|
parsed.data = {error: 'Error found, Sensor Probe may be unattached'};
|
|
16556
17048
|
return parsed;
|
|
16557
17049
|
}
|
|
16558
|
-
let msg_type = 'regular';
|
|
17050
|
+
let msg_type = 'regular';
|
|
16559
17051
|
if(payload[8] === 1){
|
|
16560
17052
|
var deviceAddr = mac;
|
|
16561
17053
|
var firmware = payload[1];
|
|
@@ -16769,25 +17261,25 @@ function sensor_types(parent){
|
|
|
16769
17261
|
x_max_ACC_G: payload.slice(14, 16).reduce(msbLsb)/1000,
|
|
16770
17262
|
x_velocity_mm_sec: payload.slice(16, 18).reduce(msbLsb) / 100,
|
|
16771
17263
|
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),
|
|
17264
|
+
x_peak_one_Hz: payload.slice(20, 22).reduce(msbLsb)/100,
|
|
17265
|
+
x_peak_two_Hz: payload.slice(22, 24).reduce(msbLsb)/100,
|
|
17266
|
+
x_peak_three_Hz: payload.slice(24, 26).reduce(msbLsb)/100,
|
|
16775
17267
|
|
|
16776
17268
|
y_rms_ACC_G: payload.slice(26, 28).reduce(msbLsb)/1000,
|
|
16777
17269
|
y_max_ACC_G: payload.slice(28, 30).reduce(msbLsb)/1000,
|
|
16778
17270
|
y_velocity_mm_sec: payload.slice(30, 32).reduce(msbLsb) / 100,
|
|
16779
17271
|
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),
|
|
17272
|
+
y_peak_one_Hz: payload.slice(34, 36).reduce(msbLsb)/100,
|
|
17273
|
+
y_peak_two_Hz: payload.slice(36, 38).reduce(msbLsb)/100,
|
|
17274
|
+
y_peak_three_Hz: payload.slice(38, 40).reduce(msbLsb)/100,
|
|
16783
17275
|
|
|
16784
17276
|
z_rms_ACC_G: payload.slice(40, 42).reduce(msbLsb)/1000,
|
|
16785
17277
|
z_max_ACC_G: payload.slice(42, 44).reduce(msbLsb)/1000,
|
|
16786
17278
|
z_velocity_mm_sec: payload.slice(44, 46).reduce(msbLsb) / 100,
|
|
16787
17279
|
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)
|
|
17280
|
+
z_peak_one_Hz: payload.slice(48, 50).reduce(msbLsb)/100,
|
|
17281
|
+
z_peak_two_Hz: payload.slice(50, 52).reduce(msbLsb)/100,
|
|
17282
|
+
z_peak_three_Hz: payload.slice(52, 54).reduce(msbLsb)/100
|
|
16791
17283
|
};
|
|
16792
17284
|
}
|
|
16793
17285
|
// else{
|
|
@@ -16828,7 +17320,7 @@ function sensor_types(parent){
|
|
|
16828
17320
|
frame_data.odr_1 = 500;
|
|
16829
17321
|
break;
|
|
16830
17322
|
}
|
|
16831
|
-
frame_data.sampling_duration_1 = frame[18]
|
|
17323
|
+
frame_data.sampling_duration_1 = frame[18] + "sec";
|
|
16832
17324
|
switch(frame[19]){
|
|
16833
17325
|
case 0:
|
|
16834
17326
|
frame_data.filter_status = "Disabled";
|