@ncd-io/node-red-enterprise-sensors 2.0.2 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/WirelessGateway.js +790 -3302
- package/lib/sensors/105.js +454 -0
- package/lib/sensors/106.js +472 -0
- package/lib/sensors/107.js +452 -0
- package/lib/sensors/110.js +55 -40
- package/lib/sensors/111.js +19 -2
- package/lib/sensors/112.js +1479 -0
- package/lib/sensors/115.js +292 -0
- package/lib/sensors/12.js +405 -0
- package/lib/sensors/122.js +461 -0
- package/lib/sensors/125.js +1 -1
- package/lib/sensors/126.js +1 -1
- package/lib/sensors/128.js +1 -1
- package/lib/sensors/15.js +439 -0
- package/lib/sensors/21.js +471 -0
- package/lib/sensors/23.js +404 -0
- package/lib/sensors/39.js +324 -0
- package/lib/sensors/4.js +403 -0
- package/lib/sensors/45.js +438 -0
- package/lib/sensors/47.js +295 -0
- package/lib/sensors/48.js +438 -0
- package/lib/sensors/52.js +508 -0
- package/lib/sensors/536.js +708 -0
- package/lib/sensors/539.js +963 -0
- package/lib/sensors/54.js +380 -0
- package/lib/sensors/540.js +439 -0
- package/lib/sensors/541.js +476 -0
- package/lib/sensors/545.js +478 -0
- package/lib/sensors/55.js +419 -0
- package/lib/sensors/554.js +1 -1
- package/lib/sensors/56.js +442 -0
- package/lib/sensors/75.js +469 -0
- package/lib/sensors/88.js +456 -0
- package/lib/sensors/89.js +459 -0
- package/lib/sensors/90.js +404 -0
- package/lib/sensors/95.js +438 -0
- package/lib/sensors/96.js +438 -0
- package/package.json +1 -1
- package/wireless.html +594 -153
- package/wireless.js +145 -35
package/lib/WirelessGateway.js
CHANGED
|
@@ -1063,6 +1063,9 @@ module.exports = class WirelessSensor{
|
|
|
1063
1063
|
if(value.html_id){
|
|
1064
1064
|
html_map[value.html_id] = key;
|
|
1065
1065
|
}
|
|
1066
|
+
// else{
|
|
1067
|
+
// html_map[key] = key;
|
|
1068
|
+
// }
|
|
1066
1069
|
}
|
|
1067
1070
|
const response = {};
|
|
1068
1071
|
for (let [key, value] of Object.entries(configs)) {
|
|
@@ -1072,6 +1075,8 @@ module.exports = class WirelessSensor{
|
|
|
1072
1075
|
let active_key = '';
|
|
1073
1076
|
if(is_node_id_or_delay){
|
|
1074
1077
|
active_key = 'node_id_delay_active';
|
|
1078
|
+
}else if(Object.hasOwn(html_map, key) && Object.hasOwn(config_map[html_map[key]], 'html_active_id')){
|
|
1079
|
+
active_key = config_map[html_map[key]].html_active_id;
|
|
1075
1080
|
}else{
|
|
1076
1081
|
active_key = key+'_active';
|
|
1077
1082
|
}
|
|
@@ -1615,18 +1620,18 @@ module.exports = class WirelessSensor{
|
|
|
1615
1620
|
delete this.fly_101_in_progress;
|
|
1616
1621
|
return this.config_send(sensor_mac, packet);
|
|
1617
1622
|
}
|
|
1618
|
-
config_set_roll_threshold_47(sensor_mac, threshold){
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
}
|
|
1624
|
-
config_set_pitch_threshold_47(sensor_mac, threshold){
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
}
|
|
1623
|
+
// config_set_roll_threshold_47(sensor_mac, threshold){
|
|
1624
|
+
// console.log('config_set_roll_threshold_47');
|
|
1625
|
+
// var packet = [244, 1, 0, 0, 47, 0, threshold];
|
|
1626
|
+
// console.log(packet);
|
|
1627
|
+
// return this.config_send(sensor_mac, packet);
|
|
1628
|
+
// }
|
|
1629
|
+
// config_set_pitch_threshold_47(sensor_mac, threshold){
|
|
1630
|
+
// console.log('config_set_pitch_threshold_47');
|
|
1631
|
+
// var packet = [244, 3, 0, 0, 47, 0, threshold];
|
|
1632
|
+
// console.log(packet);
|
|
1633
|
+
// return this.config_send(sensor_mac, packet);
|
|
1634
|
+
// }
|
|
1630
1635
|
config_set_accelerometer_threshold_108(sensor_mac, value){
|
|
1631
1636
|
console.log('config_set_accelerometer_threshold_108');
|
|
1632
1637
|
var packet = [244, 32, 0, 0, 0, value];
|
|
@@ -1943,21 +1948,21 @@ module.exports = class WirelessSensor{
|
|
|
1943
1948
|
console.log(packet);
|
|
1944
1949
|
return this.config_send(sensor_mac, packet);
|
|
1945
1950
|
}
|
|
1946
|
-
config_set_number_of_regs_to_rd_539(sensor_mac, value){
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
}
|
|
1952
|
-
config_set_reg_539(sensor_mac, value, register){
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
}
|
|
1951
|
+
// config_set_number_of_regs_to_rd_539(sensor_mac, value){
|
|
1952
|
+
// console.log('config_set_number_of_regs_to_rd_539');
|
|
1953
|
+
// var packet = [244, 51, 0, 0, 23, value];
|
|
1954
|
+
// console.log(packet);
|
|
1955
|
+
// return this.config_send(sensor_mac, packet);
|
|
1956
|
+
// }
|
|
1957
|
+
// config_set_reg_539(sensor_mac, value, register){
|
|
1958
|
+
// console.log('config_set_reg_539');
|
|
1959
|
+
// // var packet = [244, 51, 0, 0, 23, ]
|
|
1960
|
+
// var packet = [244, 30 + register, 0, 0, 23];
|
|
1961
|
+
// let value_reg = int2Bytes((value), 2);
|
|
1962
|
+
// packet.push(...value_reg);
|
|
1963
|
+
// console.log(packet);
|
|
1964
|
+
// return this.config_send(sensor_mac, packet);
|
|
1965
|
+
// }
|
|
1961
1966
|
config_set_all_register_data_539(sensor_mac, number_of_registers, registers){
|
|
1962
1967
|
console.log('config_set_all_registers_539');
|
|
1963
1968
|
// registers is an arbitrary number of 16 bit integers
|
|
@@ -2736,23 +2741,23 @@ module.exports = class WirelessSensor{
|
|
|
2736
2741
|
console.log(packet);
|
|
2737
2742
|
return this.config_send(sensor_mac, packet);
|
|
2738
2743
|
}
|
|
2739
|
-
config_set_oxygen_rate_536(sensor_mac, value){
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
}
|
|
2745
|
-
config_set_oxygen_timeout_536(sensor_mac, value){
|
|
2746
|
-
|
|
2747
|
-
|
|
2748
|
-
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
|
|
2752
|
-
}
|
|
2744
|
+
// config_set_oxygen_rate_536(sensor_mac, value){
|
|
2745
|
+
// console.log('config_set_oxygen_rate_536');
|
|
2746
|
+
// var packet = [244, 32, 0, 0, 0, value];
|
|
2747
|
+
// console.log(packet);
|
|
2748
|
+
// return this.config_send(sensor_mac, packet);
|
|
2749
|
+
// }
|
|
2750
|
+
// config_set_oxygen_timeout_536(sensor_mac, value){
|
|
2751
|
+
// console.log('config_set_oxygen_timeout_536');
|
|
2752
|
+
// var packet = [244, 37, 0, 0, 0];
|
|
2753
|
+
// let value_ = int2Bytes(value, 2);
|
|
2754
|
+
// packet.push(...value_);
|
|
2755
|
+
// console.log(packet);
|
|
2756
|
+
// return this.config_send(sensor_mac, packet);
|
|
2757
|
+
// }
|
|
2753
2758
|
config_set_oxygen_max_threshold_s1_536(sensor_mac, value){
|
|
2754
2759
|
console.log('config_set_oxygen_max_threshold_s1_536');
|
|
2755
|
-
value = value * 100;
|
|
2760
|
+
//value = value * 100;
|
|
2756
2761
|
var packet = [244, 34, 0, 0, 0, 1];
|
|
2757
2762
|
let value_ = int2Bytes(value, 2);
|
|
2758
2763
|
packet.push(...value_);
|
|
@@ -2761,7 +2766,7 @@ module.exports = class WirelessSensor{
|
|
|
2761
2766
|
}
|
|
2762
2767
|
config_set_oxygen_max_threshold_s2_536(sensor_mac, value){
|
|
2763
2768
|
console.log('config_set_oxygen_max_threshold_s2_536');
|
|
2764
|
-
value = value * 100;
|
|
2769
|
+
//value = value * 100;
|
|
2765
2770
|
var packet = [244, 34, 0, 0, 0, 2];
|
|
2766
2771
|
let value_ = int2Bytes(value, 2);
|
|
2767
2772
|
packet.push(...value_);
|
|
@@ -2769,7 +2774,7 @@ module.exports = class WirelessSensor{
|
|
|
2769
2774
|
return this.config_send(sensor_mac, packet);
|
|
2770
2775
|
}
|
|
2771
2776
|
config_set_oxygen_max_threshold_s3_536(sensor_mac, value){
|
|
2772
|
-
value = value * 100;
|
|
2777
|
+
//value = value * 100;
|
|
2773
2778
|
console.log('config_set_oxygen_max_threshold_s3_536');
|
|
2774
2779
|
var packet = [244, 34, 0, 0, 0, 3];
|
|
2775
2780
|
let value_ = int2Bytes(value, 2);
|
|
@@ -2778,7 +2783,7 @@ module.exports = class WirelessSensor{
|
|
|
2778
2783
|
return this.config_send(sensor_mac, packet);
|
|
2779
2784
|
}
|
|
2780
2785
|
config_set_oxygen_max_threshold_s4_536(sensor_mac, value){
|
|
2781
|
-
value = value * 100;
|
|
2786
|
+
//value = value * 100;
|
|
2782
2787
|
console.log('config_set_oxygen_max_threshold_s4_536');
|
|
2783
2788
|
var packet = [244, 34, 0, 0, 0, 4];
|
|
2784
2789
|
let value_ = int2Bytes(value, 2);
|
|
@@ -2788,7 +2793,7 @@ module.exports = class WirelessSensor{
|
|
|
2788
2793
|
}
|
|
2789
2794
|
config_set_oxygen_min_threshold_s1_536(sensor_mac, value){
|
|
2790
2795
|
console.log('config_set_oxygen_min_threshold_s1_536');
|
|
2791
|
-
value = value * 100;
|
|
2796
|
+
//value = value * 100;
|
|
2792
2797
|
var packet = [244, 39, 0, 0, 0, 1];
|
|
2793
2798
|
let value_ = int2Bytes(value, 2);
|
|
2794
2799
|
packet.push(...value_);
|
|
@@ -2797,7 +2802,7 @@ module.exports = class WirelessSensor{
|
|
|
2797
2802
|
}
|
|
2798
2803
|
config_set_oxygen_min_threshold_s2_536(sensor_mac, value){
|
|
2799
2804
|
console.log('config_set_oxygen_min_threshold_s2_536');
|
|
2800
|
-
value = value * 100;
|
|
2805
|
+
//value = value * 100;
|
|
2801
2806
|
var packet = [244, 39, 0, 0, 0, 2];
|
|
2802
2807
|
let value_ = int2Bytes(value, 2);
|
|
2803
2808
|
packet.push(...value_);
|
|
@@ -2805,7 +2810,7 @@ module.exports = class WirelessSensor{
|
|
|
2805
2810
|
return this.config_send(sensor_mac, packet);
|
|
2806
2811
|
}
|
|
2807
2812
|
config_set_oxygen_min_threshold_s3_536(sensor_mac, value){
|
|
2808
|
-
value = value * 100;
|
|
2813
|
+
//value = value * 100;
|
|
2809
2814
|
console.log('config_set_oxygen_min_threshold_s3_536');
|
|
2810
2815
|
var packet = [244, 39, 0, 0, 0, 3];
|
|
2811
2816
|
let value_ = int2Bytes(value, 2);
|
|
@@ -2814,7 +2819,7 @@ module.exports = class WirelessSensor{
|
|
|
2814
2819
|
return this.config_send(sensor_mac, packet);
|
|
2815
2820
|
}
|
|
2816
2821
|
config_set_oxygen_min_threshold_s4_536(sensor_mac, value){
|
|
2817
|
-
value = value * 100;
|
|
2822
|
+
//value = value * 100;
|
|
2818
2823
|
console.log('config_set_oxygen_min_threshold_s4_536');
|
|
2819
2824
|
var packet = [244, 39, 0, 0, 0, 4];
|
|
2820
2825
|
let value_ = int2Bytes(value, 2);
|
|
@@ -3040,6 +3045,126 @@ module.exports = class WirelessSensor{
|
|
|
3040
3045
|
console.log(packet);
|
|
3041
3046
|
return this.config_send(sensor_mac, packet);
|
|
3042
3047
|
}
|
|
3048
|
+
config_set_reset_total_545(sensor_mac){
|
|
3049
|
+
console.log('config_set_reset_total_545');
|
|
3050
|
+
var packet = [244, 36, 0, 0, 0];
|
|
3051
|
+
console.log(packet);
|
|
3052
|
+
return this.config_send(sensor_mac, packet);
|
|
3053
|
+
}
|
|
3054
|
+
config_set_cal_validation_545(sensor_mac){
|
|
3055
|
+
console.log('config_set_cal_validation_545');
|
|
3056
|
+
var packet = [244, 39, 0, 0, 0];
|
|
3057
|
+
console.log(packet);
|
|
3058
|
+
return this.config_send(sensor_mac, packet);
|
|
3059
|
+
}
|
|
3060
|
+
config_set_boot_time_4(sensor_mac, value){
|
|
3061
|
+
console.log('config_set_boot_time_4');
|
|
3062
|
+
var packet = [244, 97, 0, 0, 23];
|
|
3063
|
+
let value_ = int2Bytes(value, 2);
|
|
3064
|
+
packet.push(...value_);
|
|
3065
|
+
console.log(packet);
|
|
3066
|
+
return this.config_send(sensor_mac, packet);
|
|
3067
|
+
}
|
|
3068
|
+
config_set_operation_mode_4(sensor_mac, value){
|
|
3069
|
+
console.log('config_set_operation_mode_4');
|
|
3070
|
+
var packet = [244, 93, 0, 0, 23, value];
|
|
3071
|
+
console.log(packet);
|
|
3072
|
+
return this.config_send(sensor_mac, packet);
|
|
3073
|
+
}
|
|
3074
|
+
config_set_lube_on_time_1_105(sensor_mac, value){
|
|
3075
|
+
console.log('config_set_lube_on_time_1_105');
|
|
3076
|
+
var packet = [244, 87, 0, 0, 88, 1, value];
|
|
3077
|
+
console.log(packet);
|
|
3078
|
+
return this.config_send(sensor_mac, packet);
|
|
3079
|
+
}
|
|
3080
|
+
config_set_lube_on_time_2_105(sensor_mac, value){
|
|
3081
|
+
console.log('config_set_lube_on_time_2_105');
|
|
3082
|
+
var packet = [244, 87, 0, 0, 88, 2, value];
|
|
3083
|
+
console.log(packet);
|
|
3084
|
+
return this.config_send(sensor_mac, packet);
|
|
3085
|
+
}
|
|
3086
|
+
config_set_faulty_level_105(sensor_mac, value){
|
|
3087
|
+
console.log('config_set_faulty_level_105');
|
|
3088
|
+
var packet = [244, 83, 0, 0, 88, value];
|
|
3089
|
+
console.log(packet);
|
|
3090
|
+
return this.config_send(sensor_mac, packet);
|
|
3091
|
+
}
|
|
3092
|
+
config_set_friction_level_105(sensor_mac, value){
|
|
3093
|
+
console.log('config_set_friction_level_105');
|
|
3094
|
+
var packet = [244, 85, 0, 0, 88, value];
|
|
3095
|
+
console.log(packet);
|
|
3096
|
+
return this.config_send(sensor_mac, packet);
|
|
3097
|
+
}
|
|
3098
|
+
config_set_vibration_mode_115(sensor_mac, value){
|
|
3099
|
+
console.log('config_set_vibration_mode_115');
|
|
3100
|
+
var packet = [244, 32, 0, 0, 0, value];
|
|
3101
|
+
console.log(packet);
|
|
3102
|
+
return this.config_send(sensor_mac, packet);
|
|
3103
|
+
}
|
|
3104
|
+
config_set_offset_mode_115(sensor_mac, value){
|
|
3105
|
+
console.log('config_set_offset_mode_115');
|
|
3106
|
+
var packet = [244, 34, 0, 0, 0, value];
|
|
3107
|
+
console.log(packet);
|
|
3108
|
+
return this.config_send(sensor_mac, packet);
|
|
3109
|
+
}
|
|
3110
|
+
config_set_flow_sensor_baud_rate_536(sensor_mac, value){
|
|
3111
|
+
console.log('config_set_flow_sensor_baud_rate_536');
|
|
3112
|
+
var packet = [244, 55, 0, 0, 0];
|
|
3113
|
+
let baudrate = int2Bytes((value), 4);
|
|
3114
|
+
packet.push(...baudrate);
|
|
3115
|
+
console.log(packet);
|
|
3116
|
+
return this.config_send(sensor_mac, packet);
|
|
3117
|
+
}
|
|
3118
|
+
config_set_oxygen_sensor_baud_rate_536(sensor_mac, value){
|
|
3119
|
+
console.log('config_set_oxygen_sensor_baud_rate_536');
|
|
3120
|
+
var packet = [244, 61, 0, 0, 0];
|
|
3121
|
+
let baudrate = int2Bytes((value), 4);
|
|
3122
|
+
packet.push(...baudrate);
|
|
3123
|
+
console.log(packet);
|
|
3124
|
+
return this.config_send(sensor_mac, packet);
|
|
3125
|
+
}
|
|
3126
|
+
config_set_flow_sensor_parity_bits_536(sensor_mac, value){
|
|
3127
|
+
console.log('config_set_flow_sensor_parity_bits_536');
|
|
3128
|
+
var packet = [244, 57, 0, 0, 0, value];
|
|
3129
|
+
console.log(packet);
|
|
3130
|
+
return this.config_send(sensor_mac, packet);
|
|
3131
|
+
}
|
|
3132
|
+
config_set_oxygen_sensor_parity_bits_536(sensor_mac, value){
|
|
3133
|
+
console.log('config_set_oxygen_sensor_parity_bits_536');
|
|
3134
|
+
var packet = [244, 63, 0, 0, 0, value];
|
|
3135
|
+
console.log(packet);
|
|
3136
|
+
return this.config_send(sensor_mac, packet);
|
|
3137
|
+
}
|
|
3138
|
+
config_set_flow_sensor_stop_bits_536(sensor_mac, value){
|
|
3139
|
+
console.log('config_set_flow_sensor_stop_bits_536');
|
|
3140
|
+
var packet = [244, 59, 0, 0, 0, value];
|
|
3141
|
+
console.log(packet);
|
|
3142
|
+
return this.config_send(sensor_mac, packet);
|
|
3143
|
+
}
|
|
3144
|
+
config_set_oxygen_sensor_stop_bits_536(sensor_mac, value){
|
|
3145
|
+
console.log('config_set_oxygen_sensor_stop_bits_536');
|
|
3146
|
+
var packet = [244, 65, 0, 0, 0, value];
|
|
3147
|
+
console.log(packet);
|
|
3148
|
+
return this.config_send(sensor_mac, packet);
|
|
3149
|
+
}
|
|
3150
|
+
config_set_tilt_mode_47(sensor_mac, value){
|
|
3151
|
+
console.log('config_set_tilt_mode_47');
|
|
3152
|
+
var packet = [244, 34, 0, 0 ,0, value];
|
|
3153
|
+
console.log(packet);
|
|
3154
|
+
return this.config_send(sensor_mac, packet);
|
|
3155
|
+
}
|
|
3156
|
+
config_set_tilt_angle_47(sensor_mac, value){
|
|
3157
|
+
console.log('config_set_tilt_angle_47');
|
|
3158
|
+
var packet = [244, 32, 0, 0, 0, value];
|
|
3159
|
+
console.log(packet);
|
|
3160
|
+
return this.config_send(sensor_mac, packet);
|
|
3161
|
+
}
|
|
3162
|
+
config_set_tilt_timer_47(sensor_mac, value){
|
|
3163
|
+
console.log('config_set_tilt_timer_47');
|
|
3164
|
+
var packet = [244, 36, 0, 0, 0, value];
|
|
3165
|
+
console.log(packet);
|
|
3166
|
+
return this.config_send(sensor_mac, packet);
|
|
3167
|
+
}
|
|
3043
3168
|
config_get_delay(sensor_mac){
|
|
3044
3169
|
return new Promise((fulfill, reject) => {
|
|
3045
3170
|
this.config_send(sensor_mac, [247, 21, 0, 0, 0]).then((res) => {
|
|
@@ -4039,14 +4164,6 @@ function sensor_types(parent){
|
|
|
4039
4164
|
};
|
|
4040
4165
|
}
|
|
4041
4166
|
},
|
|
4042
|
-
'4': {
|
|
4043
|
-
name: 'Thermocouple',
|
|
4044
|
-
parse: (d) => {
|
|
4045
|
-
return {
|
|
4046
|
-
temperature: signInt(d.slice(0, 4).reduce(msbLsb), 32)/100,
|
|
4047
|
-
};
|
|
4048
|
-
}
|
|
4049
|
-
},
|
|
4050
4167
|
'5': {
|
|
4051
4168
|
name: 'Gyro/Magneto/Temperature',
|
|
4052
4169
|
parse: (d) => {
|
|
@@ -4126,16 +4243,6 @@ function sensor_types(parent){
|
|
|
4126
4243
|
};
|
|
4127
4244
|
}
|
|
4128
4245
|
},
|
|
4129
|
-
'12': {
|
|
4130
|
-
name: '3-Channel Thermocouple',
|
|
4131
|
-
parse: (d) => {
|
|
4132
|
-
return {
|
|
4133
|
-
channel_1: signInt(d.slice(0, 4).reduce(msbLsb), 32) / 100,
|
|
4134
|
-
channel_2: signInt(d.slice(4, 8).reduce(msbLsb), 32) / 100,
|
|
4135
|
-
channel_3: signInt(d.slice(8, 12).reduce(msbLsb), 32) / 100
|
|
4136
|
-
};
|
|
4137
|
-
}
|
|
4138
|
-
},
|
|
4139
4246
|
'13': {
|
|
4140
4247
|
name: 'Current Monitor',
|
|
4141
4248
|
parse: (d) => {
|
|
@@ -4154,79 +4261,6 @@ function sensor_types(parent){
|
|
|
4154
4261
|
};
|
|
4155
4262
|
}
|
|
4156
4263
|
},
|
|
4157
|
-
'15': {
|
|
4158
|
-
name: '10-Bit 1-Channel ADC',
|
|
4159
|
-
parse: (d) => {
|
|
4160
|
-
var adc = d.slice(0, 2).reduce(msbLsb);
|
|
4161
|
-
return {
|
|
4162
|
-
adc: adc,
|
|
4163
|
-
voltage: adc * 0.00322265625
|
|
4164
|
-
};
|
|
4165
|
-
},
|
|
4166
|
-
'parse_fly': (frame) => {
|
|
4167
|
-
let firmware = frame[2];
|
|
4168
|
-
if(firmware > 13){ // firmware 14 and above
|
|
4169
|
-
let frame_data = {};
|
|
4170
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
4171
|
-
if(!auto_check_interval){
|
|
4172
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
4173
|
-
}else{
|
|
4174
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
4175
|
-
}
|
|
4176
|
-
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
4177
|
-
switch(frame[16]){
|
|
4178
|
-
case 0:
|
|
4179
|
-
frame_data.fsr = "+-6.114 V";
|
|
4180
|
-
break;
|
|
4181
|
-
case 1:
|
|
4182
|
-
frame_data.fsr = "+-4.096 V";
|
|
4183
|
-
break;
|
|
4184
|
-
case 2:
|
|
4185
|
-
frame_data.fsr = "+-2.048 V";
|
|
4186
|
-
break;
|
|
4187
|
-
case 3:
|
|
4188
|
-
frame_data.fsr = "+-1.024 V";
|
|
4189
|
-
break;
|
|
4190
|
-
case 4:
|
|
4191
|
-
frame_data.fsr = "+-0.512 V";
|
|
4192
|
-
break;
|
|
4193
|
-
case 5:
|
|
4194
|
-
frame_data.fsr = "+-0.256 V";
|
|
4195
|
-
break;
|
|
4196
|
-
}
|
|
4197
|
-
return {
|
|
4198
|
-
'firmware': frame[2],
|
|
4199
|
-
'fsr': frame_data.fsr,
|
|
4200
|
-
'boot_up_time': frame[17] + " sec",
|
|
4201
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
4202
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
4203
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
4204
|
-
'always_on': frame_data.always_on,
|
|
4205
|
-
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
4206
|
-
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
4207
|
-
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
4208
|
-
'hardware_id': frame.slice(37, 40),
|
|
4209
|
-
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
4210
|
-
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
4211
|
-
'machine_values': {
|
|
4212
|
-
'firmware': frame[2],
|
|
4213
|
-
'fsr': frame[16],
|
|
4214
|
-
'boot_up_time': frame[17],
|
|
4215
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
4216
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
4217
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
4218
|
-
'always_on': frame[24],
|
|
4219
|
-
'calibration_one': frame.slice(25, 29),
|
|
4220
|
-
'calibration_two':frame.slice(29, 33),
|
|
4221
|
-
'calibration_three':frame.slice(33, 37),
|
|
4222
|
-
'hardware_id': frame.slice(37, 40),
|
|
4223
|
-
'report_rate': frame.slice(40, 44),
|
|
4224
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
4225
|
-
}
|
|
4226
|
-
}
|
|
4227
|
-
}
|
|
4228
|
-
}
|
|
4229
|
-
},
|
|
4230
4264
|
'16': {
|
|
4231
4265
|
name: 'Soil Moisture Sensor',
|
|
4232
4266
|
parse: (d, payload) => {
|
|
@@ -4294,265 +4328,54 @@ function sensor_types(parent){
|
|
|
4294
4328
|
};
|
|
4295
4329
|
}
|
|
4296
4330
|
},
|
|
4297
|
-
'
|
|
4298
|
-
name: '
|
|
4299
|
-
parse: (
|
|
4300
|
-
|
|
4301
|
-
|
|
4302
|
-
|
|
4303
|
-
|
|
4304
|
-
|
|
4305
|
-
|
|
4306
|
-
|
|
4307
|
-
|
|
4308
|
-
|
|
4309
|
-
|
|
4310
|
-
|
|
4311
|
-
|
|
4312
|
-
|
|
4313
|
-
|
|
4314
|
-
|
|
4315
|
-
|
|
4316
|
-
|
|
4317
|
-
|
|
4318
|
-
|
|
4319
|
-
|
|
4320
|
-
|
|
4321
|
-
|
|
4322
|
-
|
|
4323
|
-
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4329
|
-
|
|
4330
|
-
|
|
4331
|
-
|
|
4332
|
-
|
|
4333
|
-
|
|
4334
|
-
|
|
4335
|
-
|
|
4336
|
-
|
|
4337
|
-
|
|
4338
|
-
|
|
4339
|
-
|
|
4340
|
-
|
|
4341
|
-
|
|
4342
|
-
|
|
4343
|
-
|
|
4344
|
-
|
|
4345
|
-
break;
|
|
4346
|
-
case 4:
|
|
4347
|
-
sensor_range = '0010_D_B';
|
|
4348
|
-
break;
|
|
4349
|
-
case 5:
|
|
4350
|
-
sensor_range = '0020_D';
|
|
4351
|
-
break;
|
|
4352
|
-
case 6:
|
|
4353
|
-
sensor_range = '0035_D';
|
|
4354
|
-
break;
|
|
4355
|
-
case 7:
|
|
4356
|
-
sensor_range = '0050_D';
|
|
4357
|
-
break;
|
|
4358
|
-
case 8:
|
|
4359
|
-
sensor_range = '0100_D';
|
|
4360
|
-
break;
|
|
4361
|
-
case 9:
|
|
4362
|
-
sensor_range = '0020_D_B';
|
|
4363
|
-
break;
|
|
4364
|
-
case 10:
|
|
4365
|
-
sensor_range = '0035_D_B';
|
|
4366
|
-
break;
|
|
4367
|
-
case 11:
|
|
4368
|
-
sensor_range = '0050_D_B';
|
|
4369
|
-
break;
|
|
4370
|
-
case 12:
|
|
4371
|
-
sensor_range = '0100_D_B';
|
|
4372
|
-
break;
|
|
4373
|
-
case 13:
|
|
4374
|
-
sensor_range = '0200_D';
|
|
4375
|
-
break;
|
|
4376
|
-
case 14:
|
|
4377
|
-
sensor_range = '0350_D';
|
|
4378
|
-
break;
|
|
4379
|
-
case 15:
|
|
4380
|
-
sensor_range = '0500_D';
|
|
4381
|
-
break;
|
|
4382
|
-
case 16:
|
|
4383
|
-
sensor_range = '1000_D';
|
|
4384
|
-
break;
|
|
4385
|
-
case 17:
|
|
4386
|
-
sensor_range = '2000_D';
|
|
4387
|
-
break;
|
|
4388
|
-
case 18:
|
|
4389
|
-
sensor_range = '4000_D';
|
|
4390
|
-
break;
|
|
4391
|
-
case 19:
|
|
4392
|
-
sensor_range = '7000_D';
|
|
4393
|
-
break;
|
|
4394
|
-
case 20:
|
|
4395
|
-
sensor_range = '10000_D';
|
|
4396
|
-
break;
|
|
4397
|
-
case 21:
|
|
4398
|
-
sensor_range = '0200_D_B';
|
|
4399
|
-
break;
|
|
4400
|
-
case 22:
|
|
4401
|
-
sensor_range = '0350_D_B';
|
|
4402
|
-
break;
|
|
4403
|
-
case 23:
|
|
4404
|
-
sensor_range = '0500_D_B';
|
|
4405
|
-
break;
|
|
4406
|
-
case 24:
|
|
4407
|
-
sensor_range = '1000_D_B';
|
|
4408
|
-
break;
|
|
4409
|
-
}
|
|
4410
|
-
}
|
|
4411
|
-
else{ // sensor type is 5812
|
|
4412
|
-
switch(frame[12]){
|
|
4413
|
-
case 0:
|
|
4414
|
-
sensor_range = '0000_D';
|
|
4415
|
-
break;
|
|
4416
|
-
case 1:
|
|
4417
|
-
sensor_range = '0001_D';
|
|
4418
|
-
break;
|
|
4419
|
-
case 2:
|
|
4420
|
-
sensor_range = '0000_D_B';
|
|
4421
|
-
break;
|
|
4422
|
-
case 3:
|
|
4423
|
-
sensor_range = '0001_D_B';
|
|
4424
|
-
break;
|
|
4425
|
-
case 4:
|
|
4426
|
-
sensor_range = '0003_D';
|
|
4427
|
-
break;
|
|
4428
|
-
case 5:
|
|
4429
|
-
sensor_range = '0008_D';
|
|
4430
|
-
break;
|
|
4431
|
-
case 6:
|
|
4432
|
-
sensor_range = '0015_D';
|
|
4433
|
-
break;
|
|
4434
|
-
case 7:
|
|
4435
|
-
sensor_range = '0003_D_B';
|
|
4436
|
-
break;
|
|
4437
|
-
case 8:
|
|
4438
|
-
sensor_range = '0008_D_B';
|
|
4439
|
-
break;
|
|
4440
|
-
case 9:
|
|
4441
|
-
sensor_range = '0015_D_B';
|
|
4442
|
-
break;
|
|
4443
|
-
case 10:
|
|
4444
|
-
sensor_range = '0030_D';
|
|
4445
|
-
break;
|
|
4446
|
-
case 11:
|
|
4447
|
-
sensor_range = '0050_D';
|
|
4448
|
-
break;
|
|
4449
|
-
case 12:
|
|
4450
|
-
sensor_range = '0150_D';
|
|
4451
|
-
break;
|
|
4452
|
-
case 13:
|
|
4453
|
-
sensor_range = '0300_D';
|
|
4454
|
-
break;
|
|
4455
|
-
case 14:
|
|
4456
|
-
sensor_range = '0600_D';
|
|
4457
|
-
break;
|
|
4458
|
-
case 15:
|
|
4459
|
-
sensor_range = '1000_D';
|
|
4460
|
-
break;
|
|
4461
|
-
case 16:
|
|
4462
|
-
sensor_range = '0030_D_B';
|
|
4463
|
-
break;
|
|
4464
|
-
case 17:
|
|
4465
|
-
sensor_range = '0050_D_B';
|
|
4466
|
-
break;
|
|
4467
|
-
case 18:
|
|
4468
|
-
sensor_range = '0150_D_B';
|
|
4469
|
-
break;
|
|
4470
|
-
case 19:
|
|
4471
|
-
sensor_range = '0150_B';
|
|
4472
|
-
break;
|
|
4473
|
-
case 20:
|
|
4474
|
-
sensor_range = '0150_A';
|
|
4475
|
-
break;
|
|
4476
|
-
case 21:
|
|
4477
|
-
sensor_range = '0300_A';
|
|
4478
|
-
break;
|
|
4479
|
-
}
|
|
4480
|
-
}
|
|
4481
|
-
return {
|
|
4482
|
-
'firmware': frame[2],
|
|
4483
|
-
'sensor_range': sensor_range,
|
|
4484
|
-
'sensor_type': sensor_type,
|
|
4485
|
-
'hardware_id': frame.slice(14, 17),
|
|
4486
|
-
'report_rate': frame.slice(17, 21).reduce(msbLsb) + ' sec',
|
|
4487
|
-
'tx_counter': frame.slice(21, 25).reduce(msbLsb),
|
|
4488
|
-
'machine_values': {
|
|
4489
|
-
'firmware': frame[2],
|
|
4490
|
-
'sensor_range': frame[12],
|
|
4491
|
-
'sensor_type': frame[13],
|
|
4492
|
-
'hardware_id': frame.slice(14, 17),
|
|
4493
|
-
'report_rate': frame.slice(17, 21),
|
|
4494
|
-
'tx_counter': frame.slice(21, 25)
|
|
4495
|
-
}
|
|
4496
|
-
}
|
|
4497
|
-
}
|
|
4498
|
-
},
|
|
4499
|
-
'22': {
|
|
4500
|
-
name: 'Voltage Detection Input',
|
|
4501
|
-
parse: (d) => {
|
|
4502
|
-
return {
|
|
4503
|
-
input: d[0]
|
|
4504
|
-
};
|
|
4505
|
-
}
|
|
4506
|
-
},
|
|
4507
|
-
'23': {
|
|
4508
|
-
name: '2-Channel Thermocouple',
|
|
4509
|
-
parse: (d) => {
|
|
4510
|
-
return {
|
|
4511
|
-
channel_1: signInt(d.slice(0, 4).reduce(msbLsb), 32) / 100,
|
|
4512
|
-
channel_2: signInt(d.slice(4, 8).reduce(msbLsb), 32) / 100,
|
|
4513
|
-
};
|
|
4514
|
-
}
|
|
4515
|
-
},
|
|
4516
|
-
'24': {
|
|
4517
|
-
name: 'Activity Detection',
|
|
4518
|
-
parse: (d) => {
|
|
4519
|
-
return {
|
|
4520
|
-
acc_x: signInt(d.slice(0, 2).reduce(msbLsb), 16),
|
|
4521
|
-
acc_y: signInt(d.slice(2, 4).reduce(msbLsb), 16),
|
|
4522
|
-
acc_z: signInt(d.slice(4, 6).reduce(msbLsb), 16),
|
|
4523
|
-
temp_change: signInt(d.slice(6, 8).reduce(msbLsb), 16),
|
|
4524
|
-
};
|
|
4525
|
-
}
|
|
4526
|
-
},
|
|
4527
|
-
'25': {
|
|
4528
|
-
name: 'Asset Monitor',
|
|
4529
|
-
parse: (d) => {
|
|
4530
|
-
return {
|
|
4531
|
-
acc_x: signInt(d.slice(0, 2).reduce(msbLsb), 16),
|
|
4532
|
-
acc_y: signInt(d.slice(2, 4).reduce(msbLsb), 16),
|
|
4533
|
-
acc_z: signInt(d.slice(4, 6).reduce(msbLsb), 16),
|
|
4534
|
-
temp_change: signInt(d.slice(6, 8).reduce(msbLsb), 16),
|
|
4535
|
-
};
|
|
4536
|
-
}
|
|
4537
|
-
},
|
|
4538
|
-
'26': {
|
|
4539
|
-
name: 'Pressure & Temperature Sensor (PSI)',
|
|
4540
|
-
parse: (d) => {
|
|
4541
|
-
return {
|
|
4542
|
-
pressure: signInt(d.slice(0, 4).reduce(msbLsb), 32) / 100,
|
|
4543
|
-
temperature: signInt(d.slice(4, 6).reduce(msbLsb), 16) / 100
|
|
4544
|
-
};
|
|
4545
|
-
}
|
|
4546
|
-
},
|
|
4547
|
-
'27': {
|
|
4548
|
-
name: 'Environmental',
|
|
4549
|
-
parse: (d) => {
|
|
4550
|
-
return {
|
|
4551
|
-
temperature: signInt(d.slice(0, 2).reduce(msbLsb), 16) / 100,
|
|
4552
|
-
pressure: d.slice(2, 6).reduce(msbLsb) / 100,
|
|
4553
|
-
humidity: d.slice(6, 10).reduce(msbLsb) / 1000,
|
|
4554
|
-
gas_resistance: d.slice(10, 14).reduce(msbLsb),
|
|
4555
|
-
iaq: d.slice(14, 16).reduce(msbLsb)
|
|
4331
|
+
'22': {
|
|
4332
|
+
name: 'Voltage Detection Input',
|
|
4333
|
+
parse: (d) => {
|
|
4334
|
+
return {
|
|
4335
|
+
input: d[0]
|
|
4336
|
+
};
|
|
4337
|
+
}
|
|
4338
|
+
},
|
|
4339
|
+
'24': {
|
|
4340
|
+
name: 'Activity Detection',
|
|
4341
|
+
parse: (d) => {
|
|
4342
|
+
return {
|
|
4343
|
+
acc_x: signInt(d.slice(0, 2).reduce(msbLsb), 16),
|
|
4344
|
+
acc_y: signInt(d.slice(2, 4).reduce(msbLsb), 16),
|
|
4345
|
+
acc_z: signInt(d.slice(4, 6).reduce(msbLsb), 16),
|
|
4346
|
+
temp_change: signInt(d.slice(6, 8).reduce(msbLsb), 16),
|
|
4347
|
+
};
|
|
4348
|
+
}
|
|
4349
|
+
},
|
|
4350
|
+
'25': {
|
|
4351
|
+
name: 'Asset Monitor',
|
|
4352
|
+
parse: (d) => {
|
|
4353
|
+
return {
|
|
4354
|
+
acc_x: signInt(d.slice(0, 2).reduce(msbLsb), 16),
|
|
4355
|
+
acc_y: signInt(d.slice(2, 4).reduce(msbLsb), 16),
|
|
4356
|
+
acc_z: signInt(d.slice(4, 6).reduce(msbLsb), 16),
|
|
4357
|
+
temp_change: signInt(d.slice(6, 8).reduce(msbLsb), 16),
|
|
4358
|
+
};
|
|
4359
|
+
}
|
|
4360
|
+
},
|
|
4361
|
+
'26': {
|
|
4362
|
+
name: 'Pressure & Temperature Sensor (PSI)',
|
|
4363
|
+
parse: (d) => {
|
|
4364
|
+
return {
|
|
4365
|
+
pressure: signInt(d.slice(0, 4).reduce(msbLsb), 32) / 100,
|
|
4366
|
+
temperature: signInt(d.slice(4, 6).reduce(msbLsb), 16) / 100
|
|
4367
|
+
};
|
|
4368
|
+
}
|
|
4369
|
+
},
|
|
4370
|
+
'27': {
|
|
4371
|
+
name: 'Environmental',
|
|
4372
|
+
parse: (d) => {
|
|
4373
|
+
return {
|
|
4374
|
+
temperature: signInt(d.slice(0, 2).reduce(msbLsb), 16) / 100,
|
|
4375
|
+
pressure: d.slice(2, 6).reduce(msbLsb) / 100,
|
|
4376
|
+
humidity: d.slice(6, 10).reduce(msbLsb) / 1000,
|
|
4377
|
+
gas_resistance: d.slice(10, 14).reduce(msbLsb),
|
|
4378
|
+
iaq: d.slice(14, 16).reduce(msbLsb)
|
|
4556
4379
|
|
|
4557
4380
|
};
|
|
4558
4381
|
}
|
|
@@ -4717,67 +4540,6 @@ function sensor_types(parent){
|
|
|
4717
4540
|
};
|
|
4718
4541
|
}
|
|
4719
4542
|
},
|
|
4720
|
-
'39': {
|
|
4721
|
-
name: 'RTD Temperature Sensor',
|
|
4722
|
-
parse: (payload, parsed, mac) => {
|
|
4723
|
-
if(parsed.firmware > 5){
|
|
4724
|
-
let reserved = payload[7] >> 1; // Fault status (1-bit left shifted)
|
|
4725
|
-
let fault_status = '';
|
|
4726
|
-
if (reserved === 0) {
|
|
4727
|
-
fault_status = 'data_valid';
|
|
4728
|
-
} else if (reserved === 15) {
|
|
4729
|
-
fault_status = 'data_invalid';
|
|
4730
|
-
} else {
|
|
4731
|
-
const faultTypeBits = reserved & 0b00111100;
|
|
4732
|
-
switch (faultTypeBits) {
|
|
4733
|
-
case 32:
|
|
4734
|
-
fault_status = 'ref_in_vbias';
|
|
4735
|
-
break;
|
|
4736
|
-
case 16:
|
|
4737
|
-
fault_status = 'ref_in_force_close';
|
|
4738
|
-
break;
|
|
4739
|
-
case 8:
|
|
4740
|
-
fault_status = 'rtd_in_force_open';
|
|
4741
|
-
break;
|
|
4742
|
-
case 4:
|
|
4743
|
-
fault_status = 'over_under_voltage';
|
|
4744
|
-
break;
|
|
4745
|
-
}
|
|
4746
|
-
}
|
|
4747
|
-
return {
|
|
4748
|
-
fault_status: fault_status,
|
|
4749
|
-
temperature: signInt(payload.slice(8, 12).reduce(msbLsb), 32) / 100
|
|
4750
|
-
};
|
|
4751
|
-
} else {
|
|
4752
|
-
return {
|
|
4753
|
-
temperature: signInt(payload.slice(8, 12).reduce(msbLsb), 32) / 100
|
|
4754
|
-
};
|
|
4755
|
-
}
|
|
4756
|
-
},
|
|
4757
|
-
'parse_fly': (frame) => {
|
|
4758
|
-
let firmware = frame[2];
|
|
4759
|
-
if(firmware > 5){
|
|
4760
|
-
const interface_types = ["rtd_2_wire", "rtd_3_wire", "rtd_4_wire"];
|
|
4761
|
-
const rtd_types = ["rtd_pt_100", "rtd_pt_1000"];
|
|
4762
|
-
return {
|
|
4763
|
-
'firmware': frame[2],
|
|
4764
|
-
'sensor_interface': interface_types[frame[12]],
|
|
4765
|
-
'sensor_type': rtd_types[frame[13]],
|
|
4766
|
-
'hardware_id': frame.slice(14, 17),
|
|
4767
|
-
'report_rate': frame.slice(17, 21).reduce(msbLsb) + " sec",
|
|
4768
|
-
'tx_life_counter': frame.slice(21, 25).reduce(msbLsb),
|
|
4769
|
-
'machine_values': {
|
|
4770
|
-
'firmware': frame[2],
|
|
4771
|
-
'sensor_interface': frame[12],
|
|
4772
|
-
'sensor_type': frame[13],
|
|
4773
|
-
'hardware_id': frame.slice(14, 17),
|
|
4774
|
-
'report_rate': frame.slice(17, 21),
|
|
4775
|
-
'tx_life_counter': frame.slice(21, 25)
|
|
4776
|
-
}
|
|
4777
|
-
}
|
|
4778
|
-
}
|
|
4779
|
-
}
|
|
4780
|
-
},
|
|
4781
4543
|
'40': {
|
|
4782
4544
|
name: 'Vibration w/Time Domain (partial support)',
|
|
4783
4545
|
parse: (d, full) => {
|
|
@@ -4837,80 +4599,8 @@ function sensor_types(parent){
|
|
|
4837
4599
|
};
|
|
4838
4600
|
}
|
|
4839
4601
|
},
|
|
4840
|
-
'
|
|
4841
|
-
name: '
|
|
4842
|
-
parse: (d) => {
|
|
4843
|
-
return {
|
|
4844
|
-
adc: signInt(d.slice(0, 2).reduce(msbLsb), 16),
|
|
4845
|
-
mA: signInt(d.slice(2, 4).reduce(msbLsb), 16)/100
|
|
4846
|
-
};
|
|
4847
|
-
},
|
|
4848
|
-
'parse_fly': (frame) => {
|
|
4849
|
-
let firmware = frame[2];
|
|
4850
|
-
if(firmware > 13){ // firmware 14 and above
|
|
4851
|
-
let frame_data = {};
|
|
4852
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
4853
|
-
if(!auto_check_interval){
|
|
4854
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
4855
|
-
}else{
|
|
4856
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
4857
|
-
}
|
|
4858
|
-
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
4859
|
-
switch(frame[16]){
|
|
4860
|
-
case 0:
|
|
4861
|
-
frame_data.fsr = "+-6.114 V";
|
|
4862
|
-
break;
|
|
4863
|
-
case 1:
|
|
4864
|
-
frame_data.fsr = "+-4.096 V";
|
|
4865
|
-
break;
|
|
4866
|
-
case 2:
|
|
4867
|
-
frame_data.fsr = "+-2.048 V";
|
|
4868
|
-
break;
|
|
4869
|
-
case 3:
|
|
4870
|
-
frame_data.fsr = "+-1.024 V";
|
|
4871
|
-
break;
|
|
4872
|
-
case 4:
|
|
4873
|
-
frame_data.fsr = "+-0.512 V";
|
|
4874
|
-
break;
|
|
4875
|
-
case 5:
|
|
4876
|
-
frame_data.fsr = "+-0.256 V";
|
|
4877
|
-
break;
|
|
4878
|
-
}
|
|
4879
|
-
return {
|
|
4880
|
-
'firmware': frame[2],
|
|
4881
|
-
'fsr': frame_data.fsr,
|
|
4882
|
-
'boot_up_time': frame[17] + " sec",
|
|
4883
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
4884
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
4885
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
4886
|
-
'always_on': frame_data.always_on,
|
|
4887
|
-
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
4888
|
-
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
4889
|
-
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
4890
|
-
'hardware_id': frame.slice(37, 40),
|
|
4891
|
-
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
4892
|
-
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
4893
|
-
'machine_values': {
|
|
4894
|
-
'firmware': frame[2],
|
|
4895
|
-
'fsr': frame[16],
|
|
4896
|
-
'boot_up_time': frame[17],
|
|
4897
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
4898
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
4899
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
4900
|
-
'always_on': frame[24],
|
|
4901
|
-
'calibration_one': frame.slice(25, 29),
|
|
4902
|
-
'calibration_two':frame.slice(29, 33),
|
|
4903
|
-
'calibration_three':frame.slice(33, 37),
|
|
4904
|
-
'hardware_id': frame.slice(37, 40),
|
|
4905
|
-
'report_rate': frame.slice(40, 44),
|
|
4906
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
4907
|
-
}
|
|
4908
|
-
}
|
|
4909
|
-
}
|
|
4910
|
-
}
|
|
4911
|
-
},
|
|
4912
|
-
'46': {
|
|
4913
|
-
name: 'Motion Detection Sensor',
|
|
4602
|
+
'46': {
|
|
4603
|
+
name: 'Motion Detection Sensor',
|
|
4914
4604
|
parse: (d) => {
|
|
4915
4605
|
return {
|
|
4916
4606
|
input_1: d[0]
|
|
@@ -4926,78 +4616,6 @@ function sensor_types(parent){
|
|
|
4926
4616
|
};
|
|
4927
4617
|
}
|
|
4928
4618
|
},
|
|
4929
|
-
'48': {
|
|
4930
|
-
name: '16-Bit 1-Channel Active 4-20mA Current Loop Receiver',
|
|
4931
|
-
parse: (d) => {
|
|
4932
|
-
return {
|
|
4933
|
-
adc: signInt(d.slice(0, 2).reduce(msbLsb), 16),
|
|
4934
|
-
mA: signInt(d.slice(2, 4).reduce(msbLsb), 16)/100
|
|
4935
|
-
};
|
|
4936
|
-
},
|
|
4937
|
-
'parse_fly': (frame) => {
|
|
4938
|
-
let firmware = frame[2];
|
|
4939
|
-
if(firmware > 13){ // firmware 14 and above
|
|
4940
|
-
let frame_data = {};
|
|
4941
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
4942
|
-
if(!auto_check_interval){
|
|
4943
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
4944
|
-
}else{
|
|
4945
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
4946
|
-
}
|
|
4947
|
-
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
4948
|
-
switch(frame[16]){
|
|
4949
|
-
case 0:
|
|
4950
|
-
frame_data.fsr = "+-6.114 V";
|
|
4951
|
-
break;
|
|
4952
|
-
case 1:
|
|
4953
|
-
frame_data.fsr = "+-4.096 V";
|
|
4954
|
-
break;
|
|
4955
|
-
case 2:
|
|
4956
|
-
frame_data.fsr = "+-2.048 V";
|
|
4957
|
-
break;
|
|
4958
|
-
case 3:
|
|
4959
|
-
frame_data.fsr = "+-1.024 V";
|
|
4960
|
-
break;
|
|
4961
|
-
case 4:
|
|
4962
|
-
frame_data.fsr = "+-0.512 V";
|
|
4963
|
-
break;
|
|
4964
|
-
case 5:
|
|
4965
|
-
frame_data.fsr = "+-0.256 V";
|
|
4966
|
-
break;
|
|
4967
|
-
}
|
|
4968
|
-
return {
|
|
4969
|
-
'firmware': frame[2],
|
|
4970
|
-
'fsr': frame_data.fsr,
|
|
4971
|
-
'boot_up_time': frame[17] + " sec",
|
|
4972
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
4973
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
4974
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
4975
|
-
'always_on': frame_data.always_on,
|
|
4976
|
-
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
4977
|
-
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
4978
|
-
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
4979
|
-
'hardware_id': frame.slice(37, 40),
|
|
4980
|
-
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
4981
|
-
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
4982
|
-
'machine_values': {
|
|
4983
|
-
'firmware': frame[2],
|
|
4984
|
-
'fsr': frame[16],
|
|
4985
|
-
'boot_up_time': frame[17],
|
|
4986
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
4987
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
4988
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
4989
|
-
'always_on': frame[24],
|
|
4990
|
-
'calibration_one': frame.slice(25, 29),
|
|
4991
|
-
'calibration_two':frame.slice(29, 33),
|
|
4992
|
-
'calibration_three':frame.slice(33, 37),
|
|
4993
|
-
'hardware_id': frame.slice(37, 40),
|
|
4994
|
-
'report_rate': frame.slice(40, 44),
|
|
4995
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
4996
|
-
}
|
|
4997
|
-
}
|
|
4998
|
-
}
|
|
4999
|
-
}
|
|
5000
|
-
},
|
|
5001
4619
|
'49': {
|
|
5002
4620
|
name: '6-Channel Thermocouple',
|
|
5003
4621
|
parse: (d) => {
|
|
@@ -5061,149 +4679,6 @@ function sensor_types(parent){
|
|
|
5061
4679
|
};
|
|
5062
4680
|
}
|
|
5063
4681
|
},
|
|
5064
|
-
'52': {
|
|
5065
|
-
name: '16-Bit 2-Channel 4-20mA',
|
|
5066
|
-
parse: (d) => {
|
|
5067
|
-
// This parser may be outdated if a customer has an issue check with Engineering
|
|
5068
|
-
var adc1 = signInt(d.slice(0, 2).reduce(msbLsb));
|
|
5069
|
-
var adc2 = signInt(d.slice(2, 4).reduce(msbLsb));
|
|
5070
|
-
return {
|
|
5071
|
-
adc1: adc1,
|
|
5072
|
-
adc2: adc2,
|
|
5073
|
-
mA1: signInt(d.slice(4, 6).reduce(msbLsb))/100,
|
|
5074
|
-
mA2: signInt(d.slice(6, 8).reduce(msbLsb))/100
|
|
5075
|
-
};
|
|
5076
|
-
},
|
|
5077
|
-
'parse_fly': (frame) => {
|
|
5078
|
-
let firmware = frame[2];
|
|
5079
|
-
let frame_data = {};
|
|
5080
|
-
switch(frame[16]){
|
|
5081
|
-
case 0:
|
|
5082
|
-
frame_data.fsr = "+-6.114 V";
|
|
5083
|
-
break;
|
|
5084
|
-
case 1:
|
|
5085
|
-
frame_data.fsr = "+-4.096 V";
|
|
5086
|
-
break;
|
|
5087
|
-
case 2:
|
|
5088
|
-
frame_data.fsr = "+-2.048 V";
|
|
5089
|
-
break;
|
|
5090
|
-
case 3:
|
|
5091
|
-
frame_data.fsr = "+-1.024 V";
|
|
5092
|
-
break;
|
|
5093
|
-
case 4:
|
|
5094
|
-
frame_data.fsr = "+-0.512 V";
|
|
5095
|
-
break;
|
|
5096
|
-
case 5:
|
|
5097
|
-
frame_data.fsr = "+-0.256 V";
|
|
5098
|
-
break;
|
|
5099
|
-
}
|
|
5100
|
-
if(firmware > 18){ // firmware 14 and above
|
|
5101
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
5102
|
-
if(!auto_check_interval){
|
|
5103
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
5104
|
-
}else{
|
|
5105
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
5106
|
-
}
|
|
5107
|
-
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
5108
|
-
return {
|
|
5109
|
-
'firmware': frame[2],
|
|
5110
|
-
'fsr': frame_data.fsr,
|
|
5111
|
-
'boot_up_time': frame[17] + " sec",
|
|
5112
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
5113
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
5114
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
5115
|
-
'always_on': frame_data.always_on,
|
|
5116
|
-
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
5117
|
-
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
5118
|
-
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
5119
|
-
'hardware_id': frame.slice(37, 40),
|
|
5120
|
-
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
5121
|
-
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
5122
|
-
'machine_values': {
|
|
5123
|
-
'firmware': frame[2],
|
|
5124
|
-
'fsr': frame[16],
|
|
5125
|
-
'boot_up_time': frame[17],
|
|
5126
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
5127
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
5128
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
5129
|
-
'always_on': frame[24],
|
|
5130
|
-
'calibration_one': frame.slice(25, 29),
|
|
5131
|
-
'calibration_two':frame.slice(29, 33),
|
|
5132
|
-
'calibration_three':frame.slice(33, 37),
|
|
5133
|
-
'hardware_id': frame.slice(37, 40),
|
|
5134
|
-
'report_rate': frame.slice(40, 44),
|
|
5135
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
5136
|
-
}
|
|
5137
|
-
}
|
|
5138
|
-
}else if(firmware > 13){ // firmware 14 and above
|
|
5139
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
5140
|
-
if(!auto_check_interval){
|
|
5141
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
5142
|
-
}else{
|
|
5143
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
5144
|
-
}
|
|
5145
|
-
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
5146
|
-
return {
|
|
5147
|
-
'firmware': frame[2],
|
|
5148
|
-
'fsr': frame_data.fsr,
|
|
5149
|
-
'boot_up_time': frame[17] + " sec",
|
|
5150
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
5151
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
5152
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
5153
|
-
'always_on': frame_data.always_on,
|
|
5154
|
-
'hardware_id': frame.slice(25, 28),
|
|
5155
|
-
'report_rate': frame.slice(28, 32).reduce(msbLsb) + " sec",
|
|
5156
|
-
'tx_life_counter': frame.slice(32, 36).reduce(msbLsb),
|
|
5157
|
-
'machine_values': {
|
|
5158
|
-
'firmware': frame[2],
|
|
5159
|
-
'fsr': frame[16],
|
|
5160
|
-
'boot_up_time': frame[17],
|
|
5161
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
5162
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
5163
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
5164
|
-
'always_on': frame[24],
|
|
5165
|
-
'calibration_one': frame.slice(25, 29),
|
|
5166
|
-
'calibration_two':frame.slice(29, 33),
|
|
5167
|
-
'calibration_three':frame.slice(33, 37),
|
|
5168
|
-
'hardware_id': frame.slice(37, 40),
|
|
5169
|
-
'report_rate': frame.slice(40, 44),
|
|
5170
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
5171
|
-
}
|
|
5172
|
-
}
|
|
5173
|
-
}
|
|
5174
|
-
else if(firmware > 12){
|
|
5175
|
-
return {
|
|
5176
|
-
'firmware': frame[2],
|
|
5177
|
-
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
5178
|
-
'fsr':frame_data.fsr,
|
|
5179
|
-
'boot_up_time': frame[17],
|
|
5180
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
5181
|
-
'machine_values': {
|
|
5182
|
-
'firmware': frame[2],
|
|
5183
|
-
'report_rate': frame.slice(12, 16),
|
|
5184
|
-
'fsr':frame[16],
|
|
5185
|
-
'boot_up_time': frame[17],
|
|
5186
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
5187
|
-
'frame': frame
|
|
5188
|
-
}
|
|
5189
|
-
}
|
|
5190
|
-
}else{
|
|
5191
|
-
return {
|
|
5192
|
-
'firmware': frame[2],
|
|
5193
|
-
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
5194
|
-
'fsr':frame_data.fsr,
|
|
5195
|
-
'boot_up_time': frame[17],
|
|
5196
|
-
'machine_values': {
|
|
5197
|
-
'firmware': frame[2],
|
|
5198
|
-
'report_rate': frame.slice(12, 16),
|
|
5199
|
-
'fsr':frame[16],
|
|
5200
|
-
'boot_up_time': frame[17],
|
|
5201
|
-
'frame': frame
|
|
5202
|
-
}
|
|
5203
|
-
}
|
|
5204
|
-
}
|
|
5205
|
-
}
|
|
5206
|
-
},
|
|
5207
4682
|
'53': {
|
|
5208
4683
|
'name': 'Air Quality CO2 and Particulate Matter Sensor',
|
|
5209
4684
|
parse: (d) => {
|
|
@@ -5225,256 +4700,30 @@ function sensor_types(parent){
|
|
|
5225
4700
|
};
|
|
5226
4701
|
}
|
|
5227
4702
|
},
|
|
5228
|
-
'
|
|
5229
|
-
name: '
|
|
5230
|
-
parse: (
|
|
5231
|
-
|
|
5232
|
-
|
|
5233
|
-
|
|
5234
|
-
|
|
5235
|
-
|
|
5236
|
-
|
|
5237
|
-
|
|
5238
|
-
|
|
5239
|
-
|
|
5240
|
-
|
|
5241
|
-
|
|
5242
|
-
|
|
5243
|
-
break;
|
|
5244
|
-
case 4:
|
|
5245
|
-
fault_status = 'ref_in_force_close';
|
|
5246
|
-
break;
|
|
5247
|
-
case 2:
|
|
5248
|
-
fault_status = 'rtd_in_force_open';
|
|
5249
|
-
break;
|
|
5250
|
-
case 1:
|
|
5251
|
-
fault_status = 'over_under_voltage';
|
|
5252
|
-
break;
|
|
5253
|
-
}
|
|
5254
|
-
const channel_bits = reserved & 0b00000011;
|
|
5255
|
-
switch (channel_bits) {
|
|
5256
|
-
case 1:
|
|
5257
|
-
fault_status = fault_status + '_ch1';
|
|
5258
|
-
break;
|
|
5259
|
-
case 2:
|
|
5260
|
-
fault_status = fault_status + '_ch2';
|
|
5261
|
-
break;
|
|
5262
|
-
}
|
|
5263
|
-
}
|
|
5264
|
-
return {
|
|
5265
|
-
fault_status: fault_status,
|
|
5266
|
-
temperature_1: signInt(payload.slice(8, 12).reduce(msbLsb), 32) / 100,
|
|
5267
|
-
temperature_2: signInt(payload.slice(12, 16).reduce(msbLsb), 32) / 100
|
|
5268
|
-
};
|
|
5269
|
-
} else {
|
|
5270
|
-
return {
|
|
5271
|
-
temperature_1: signInt(payload.slice(8, 12).reduce(msbLsb), 32) / 100,
|
|
5272
|
-
temperature_2: signInt(payload.slice(12, 16).reduce(msbLsb), 32) / 100
|
|
5273
|
-
};
|
|
5274
|
-
}
|
|
5275
|
-
},
|
|
5276
|
-
'parse_fly': (frame) => {
|
|
5277
|
-
let firmware = frame[2];
|
|
5278
|
-
if(firmware > 5){
|
|
5279
|
-
const interface_types = ["rtd_2_wire", "rtd_3_wire", "rtd_4_wire"];
|
|
5280
|
-
const rtd_types = ["rtd_pt_100", "rtd_pt_1000"];
|
|
5281
|
-
return {
|
|
5282
|
-
'firmware': frame[2],
|
|
5283
|
-
'sensor_interface_ch1': interface_types[frame[12]],
|
|
5284
|
-
'sensor_type_ch1': rtd_types[frame[13]],
|
|
5285
|
-
'sensor_interface_ch2': interface_types[frame[14]],
|
|
5286
|
-
'sensor_type_ch2': rtd_types[frame[15]],
|
|
5287
|
-
'hardware_id': frame.slice(16, 19),
|
|
5288
|
-
'report_rate': frame.slice(19, 23).reduce(msbLsb) + " sec",
|
|
5289
|
-
'tx_life_counter': frame.slice(23, 27).reduce(msbLsb),
|
|
5290
|
-
'machine_values': {
|
|
5291
|
-
'firmware': frame[2],
|
|
5292
|
-
'sensor_interface_ch1': frame[12],
|
|
5293
|
-
'sensor_type_ch1': frame[13],
|
|
5294
|
-
'sensor_interface_ch2': frame[14],
|
|
5295
|
-
'sensor_type_ch2': frame[15],
|
|
5296
|
-
'hardware_id': frame.slice(16, 19),
|
|
5297
|
-
'report_rate': frame.slice(19, 23),
|
|
5298
|
-
'tx_life_counter': frame.slice(23, 27)
|
|
5299
|
-
}
|
|
5300
|
-
}
|
|
5301
|
-
}
|
|
4703
|
+
'58': {
|
|
4704
|
+
name: 'Tank Level v3',
|
|
4705
|
+
parse: (d) => {
|
|
4706
|
+
return {
|
|
4707
|
+
filtered_range: d.slice(0, 2).reduce(msbLsb),
|
|
4708
|
+
long_range_algorithm: d.slice(2, 4).reduce(msbLsb),
|
|
4709
|
+
second_chance: d.slice(4, 6).reduce(msbLsb),
|
|
4710
|
+
second_reading: d.slice(6, 8).reduce(msbLsb),
|
|
4711
|
+
compare_reading: d.slice(8, 10).reduce(msbLsb),
|
|
4712
|
+
short_range_algorithm: d.slice(10, 12).reduce(msbLsb),
|
|
4713
|
+
trusted_reading: d.slice(12, 14).reduce(msbLsb),
|
|
4714
|
+
final_filter: d.slice(14, 16).reduce(msbLsb),
|
|
4715
|
+
raw_final: d.slice(16, 18).reduce(msbLsb),
|
|
4716
|
+
final_index: d.slice(18, 20).reduce(msbLsb),
|
|
4717
|
+
};
|
|
5302
4718
|
}
|
|
5303
4719
|
},
|
|
5304
|
-
'
|
|
5305
|
-
name: '
|
|
5306
|
-
parse: (
|
|
5307
|
-
let reserved = payload[7] >> 1; // Fault status (1-bit left shifted)
|
|
5308
|
-
let fault_status = '';
|
|
5309
|
-
if (reserved === 0) {
|
|
5310
|
-
fault_status = 'data_valid';
|
|
5311
|
-
} else if (reserved === 15) {
|
|
5312
|
-
fault_status = 'data_invalid';
|
|
5313
|
-
} else {
|
|
5314
|
-
const fault_bits = (reserved >> 2) & 0b00001111;
|
|
5315
|
-
switch (fault_bits) {
|
|
5316
|
-
case 8:
|
|
5317
|
-
fault_status = 'ref_in_vbias';
|
|
5318
|
-
break;
|
|
5319
|
-
case 4:
|
|
5320
|
-
fault_status = 'ref_in_force_close';
|
|
5321
|
-
break;
|
|
5322
|
-
case 2:
|
|
5323
|
-
fault_status = 'rtd_in_force_open';
|
|
5324
|
-
break;
|
|
5325
|
-
case 1:
|
|
5326
|
-
fault_status = 'over_under_voltage';
|
|
5327
|
-
break;
|
|
5328
|
-
}
|
|
5329
|
-
const channel_bits = reserved & 0b00000011;
|
|
5330
|
-
switch (channel_bits) {
|
|
5331
|
-
case 1:
|
|
5332
|
-
fault_status = fault_status + '_ch1';
|
|
5333
|
-
break;
|
|
5334
|
-
case 2:
|
|
5335
|
-
fault_status = fault_status + '_ch2';
|
|
5336
|
-
break;
|
|
5337
|
-
case 3:
|
|
5338
|
-
fault_status = fault_status + '_ch3';
|
|
5339
|
-
break;
|
|
5340
|
-
}
|
|
5341
|
-
}
|
|
4720
|
+
'60': {
|
|
4721
|
+
name: 'Air Velocity and Precision Pressure & Temperature Sensor',
|
|
4722
|
+
parse: (d) => {
|
|
5342
4723
|
return {
|
|
5343
|
-
|
|
5344
|
-
|
|
5345
|
-
|
|
5346
|
-
temperature_3: signInt(payload.slice(16, 20).reduce(msbLsb), 32) / 100
|
|
5347
|
-
};
|
|
5348
|
-
},
|
|
5349
|
-
'parse_fly': (frame) => {
|
|
5350
|
-
const interface_types = ["rtd_2_wire", "rtd_3_wire", "rtd_4_wire"];
|
|
5351
|
-
const rtd_types = ["rtd_pt_100", "rtd_pt_1000"];
|
|
5352
|
-
return {
|
|
5353
|
-
'firmware': frame[2],
|
|
5354
|
-
'sensor_interface_ch1': interface_types[frame[12]],
|
|
5355
|
-
'sensor_type_ch1': rtd_types[frame[13]],
|
|
5356
|
-
'sensor_interface_ch2': interface_types[frame[14]],
|
|
5357
|
-
'sensor_type_ch2': rtd_types[frame[15]],
|
|
5358
|
-
'sensor_interface_ch3': interface_types[frame[16]],
|
|
5359
|
-
'sensor_type_ch3': rtd_types[frame[17]],
|
|
5360
|
-
'hardware_id': frame.slice(18, 21),
|
|
5361
|
-
'report_rate': frame.slice(21, 25).reduce(msbLsb) + " sec",
|
|
5362
|
-
'tx_life_counter': frame.slice(25, 29).reduce(msbLsb),
|
|
5363
|
-
'machine_values': {
|
|
5364
|
-
'firmware': frame[2],
|
|
5365
|
-
'sensor_interface_ch1': frame[12],
|
|
5366
|
-
'sensor_type_ch1': frame[13],
|
|
5367
|
-
'sensor_interface_ch2': frame[14],
|
|
5368
|
-
'sensor_type_ch2': frame[15],
|
|
5369
|
-
'sensor_interface_ch3': frame[16],
|
|
5370
|
-
'sensor_type_ch3': frame[17],
|
|
5371
|
-
'hardware_id': frame.slice(18, 21),
|
|
5372
|
-
'report_rate': frame.slice(21, 25),
|
|
5373
|
-
'tx_life_counter': frame.slice(25, 29)
|
|
5374
|
-
}
|
|
5375
|
-
}
|
|
5376
|
-
}
|
|
5377
|
-
},
|
|
5378
|
-
'56': {
|
|
5379
|
-
name: '2 Channel 0-10VDC Receiver',
|
|
5380
|
-
parse: (d) => {
|
|
5381
|
-
var adc1 = signInt(d.slice(0, 2).reduce(msbLsb));
|
|
5382
|
-
var adc2 = signInt(d.slice(2, 4).reduce(msbLsb));
|
|
5383
|
-
return {
|
|
5384
|
-
adc1: adc1,
|
|
5385
|
-
adc2: adc2,
|
|
5386
|
-
VDC1: parseFloat((adc1 * 0.00034122).toFixed(2)),
|
|
5387
|
-
VDC2: parseFloat((adc2 * 0.00034122).toFixed(2))
|
|
5388
|
-
};
|
|
5389
|
-
},
|
|
5390
|
-
'parse_fly': (frame) => {
|
|
5391
|
-
let firmware = frame[2];
|
|
5392
|
-
if(firmware > 13){ // firmware 14 and above
|
|
5393
|
-
let frame_data = {};
|
|
5394
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
5395
|
-
if(!auto_check_interval){
|
|
5396
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
5397
|
-
}else{
|
|
5398
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
5399
|
-
}
|
|
5400
|
-
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
5401
|
-
switch(frame[16]){
|
|
5402
|
-
case 0:
|
|
5403
|
-
frame_data.fsr = "+-6.114 V";
|
|
5404
|
-
break;
|
|
5405
|
-
case 1:
|
|
5406
|
-
frame_data.fsr = "+-4.096 V";
|
|
5407
|
-
break;
|
|
5408
|
-
case 2:
|
|
5409
|
-
frame_data.fsr = "+-2.048 V";
|
|
5410
|
-
break;
|
|
5411
|
-
case 3:
|
|
5412
|
-
frame_data.fsr = "+-1.024 V";
|
|
5413
|
-
break;
|
|
5414
|
-
case 4:
|
|
5415
|
-
frame_data.fsr = "+-0.512 V";
|
|
5416
|
-
break;
|
|
5417
|
-
case 5:
|
|
5418
|
-
frame_data.fsr = "+-0.256 V";
|
|
5419
|
-
break;
|
|
5420
|
-
}
|
|
5421
|
-
return {
|
|
5422
|
-
'firmware': frame[2],
|
|
5423
|
-
'fsr': frame_data.fsr,
|
|
5424
|
-
'boot_up_time': frame[17] + " sec",
|
|
5425
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
5426
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
5427
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
5428
|
-
'always_on': frame_data.always_on,
|
|
5429
|
-
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
5430
|
-
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
5431
|
-
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
5432
|
-
'hardware_id': frame.slice(37, 40),
|
|
5433
|
-
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
5434
|
-
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
5435
|
-
'machine_values': {
|
|
5436
|
-
'firmware': frame[2],
|
|
5437
|
-
'fsr': frame[16],
|
|
5438
|
-
'boot_up_time': frame[17],
|
|
5439
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
5440
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
5441
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
5442
|
-
'always_on': frame[24],
|
|
5443
|
-
'calibration_one': frame.slice(25, 29),
|
|
5444
|
-
'calibration_two':frame.slice(29, 33),
|
|
5445
|
-
'calibration_three':frame.slice(33, 37),
|
|
5446
|
-
'hardware_id': frame.slice(37, 40),
|
|
5447
|
-
'report_rate': frame.slice(40, 44),
|
|
5448
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
5449
|
-
}
|
|
5450
|
-
}
|
|
5451
|
-
}
|
|
5452
|
-
}
|
|
5453
|
-
},
|
|
5454
|
-
'58': {
|
|
5455
|
-
name: 'Tank Level v3',
|
|
5456
|
-
parse: (d) => {
|
|
5457
|
-
return {
|
|
5458
|
-
filtered_range: d.slice(0, 2).reduce(msbLsb),
|
|
5459
|
-
long_range_algorithm: d.slice(2, 4).reduce(msbLsb),
|
|
5460
|
-
second_chance: d.slice(4, 6).reduce(msbLsb),
|
|
5461
|
-
second_reading: d.slice(6, 8).reduce(msbLsb),
|
|
5462
|
-
compare_reading: d.slice(8, 10).reduce(msbLsb),
|
|
5463
|
-
short_range_algorithm: d.slice(10, 12).reduce(msbLsb),
|
|
5464
|
-
trusted_reading: d.slice(12, 14).reduce(msbLsb),
|
|
5465
|
-
final_filter: d.slice(14, 16).reduce(msbLsb),
|
|
5466
|
-
raw_final: d.slice(16, 18).reduce(msbLsb),
|
|
5467
|
-
final_index: d.slice(18, 20).reduce(msbLsb),
|
|
5468
|
-
};
|
|
5469
|
-
}
|
|
5470
|
-
},
|
|
5471
|
-
'60': {
|
|
5472
|
-
name: 'Air Velocity and Precision Pressure & Temperature Sensor',
|
|
5473
|
-
parse: (d) => {
|
|
5474
|
-
return {
|
|
5475
|
-
pressure: signInt(d.slice(0, 4).reduce(msbLsb), 32) / 1000,
|
|
5476
|
-
temperature: signInt(d.slice(4, 6).reduce(msbLsb), 16) / 100,
|
|
5477
|
-
Air_Velocity: signInt(d.slice(6, 8).reduce(msbLsb), 16) / 1000
|
|
4724
|
+
pressure: signInt(d.slice(0, 4).reduce(msbLsb), 32) / 1000,
|
|
4725
|
+
temperature: signInt(d.slice(4, 6).reduce(msbLsb), 16) / 100,
|
|
4726
|
+
Air_Velocity: signInt(d.slice(6, 8).reduce(msbLsb), 16) / 1000
|
|
5478
4727
|
};
|
|
5479
4728
|
}
|
|
5480
4729
|
},
|
|
@@ -5674,79 +4923,6 @@ function sensor_types(parent){
|
|
|
5674
4923
|
}
|
|
5675
4924
|
}
|
|
5676
4925
|
},
|
|
5677
|
-
'75': {
|
|
5678
|
-
name: 'Siemens Air Velocity Probe',
|
|
5679
|
-
parse: (d) => {
|
|
5680
|
-
return {
|
|
5681
|
-
adc: signInt(d.slice(0, 2).reduce(msbLsb), 16),
|
|
5682
|
-
mA: signInt(d.slice(2, 4).reduce(msbLsb), 16)/100,
|
|
5683
|
-
Velocity: signInt(d.slice(4, 8).reduce(msbLsb), 32) / 100
|
|
5684
|
-
};
|
|
5685
|
-
},
|
|
5686
|
-
'parse_fly': (frame) => {
|
|
5687
|
-
let firmware = frame[2];
|
|
5688
|
-
if(firmware > 13){ // firmware 14 and above
|
|
5689
|
-
let frame_data = {};
|
|
5690
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
5691
|
-
if(!auto_check_interval){
|
|
5692
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
5693
|
-
}else{
|
|
5694
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
5695
|
-
}
|
|
5696
|
-
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
5697
|
-
switch(frame[16]){
|
|
5698
|
-
case 0:
|
|
5699
|
-
frame_data.fsr = "+-6.114 V";
|
|
5700
|
-
break;
|
|
5701
|
-
case 1:
|
|
5702
|
-
frame_data.fsr = "+-4.096 V";
|
|
5703
|
-
break;
|
|
5704
|
-
case 2:
|
|
5705
|
-
frame_data.fsr = "+-2.048 V";
|
|
5706
|
-
break;
|
|
5707
|
-
case 3:
|
|
5708
|
-
frame_data.fsr = "+-1.024 V";
|
|
5709
|
-
break;
|
|
5710
|
-
case 4:
|
|
5711
|
-
frame_data.fsr = "+-0.512 V";
|
|
5712
|
-
break;
|
|
5713
|
-
case 5:
|
|
5714
|
-
frame_data.fsr = "+-0.256 V";
|
|
5715
|
-
break;
|
|
5716
|
-
}
|
|
5717
|
-
return {
|
|
5718
|
-
'firmware': frame[2],
|
|
5719
|
-
'fsr': frame_data.fsr,
|
|
5720
|
-
'boot_up_time': frame[17] + " sec",
|
|
5721
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
5722
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
5723
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
5724
|
-
'always_on': frame_data.always_on,
|
|
5725
|
-
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
5726
|
-
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
5727
|
-
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
5728
|
-
'hardware_id': frame.slice(37, 40),
|
|
5729
|
-
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
5730
|
-
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
5731
|
-
'machine_values': {
|
|
5732
|
-
'firmware': frame[2],
|
|
5733
|
-
'fsr': frame[16],
|
|
5734
|
-
'boot_up_time': frame[17],
|
|
5735
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
5736
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
5737
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
5738
|
-
'always_on': frame[24],
|
|
5739
|
-
'calibration_one': frame.slice(25, 29),
|
|
5740
|
-
'calibration_two':frame.slice(29, 33),
|
|
5741
|
-
'calibration_three':frame.slice(33, 37),
|
|
5742
|
-
'hardware_id': frame.slice(37, 40),
|
|
5743
|
-
'report_rate': frame.slice(40, 44),
|
|
5744
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
5745
|
-
}
|
|
5746
|
-
}
|
|
5747
|
-
}
|
|
5748
|
-
}
|
|
5749
|
-
},
|
|
5750
4926
|
'76': {
|
|
5751
4927
|
name: 'Wireless CO Sensor',
|
|
5752
4928
|
parse: (d) => {
|
|
@@ -8245,38 +7421,16 @@ function sensor_types(parent){
|
|
|
8245
7421
|
}
|
|
8246
7422
|
}
|
|
8247
7423
|
},
|
|
8248
|
-
'
|
|
8249
|
-
name: '
|
|
7424
|
+
'90': {
|
|
7425
|
+
name: 'DC Current Sensor',
|
|
8250
7426
|
parse: (d) => {
|
|
8251
7427
|
return {
|
|
8252
7428
|
raw_adc: d.slice(0, 2).reduce(msbLsb),
|
|
8253
|
-
|
|
8254
|
-
db: d.slice(4, 6).reduce(msbLsb) / 100
|
|
7429
|
+
amps: d.slice(2, 6).reduce(msbLsb) / 10,
|
|
8255
7430
|
};
|
|
8256
7431
|
},
|
|
8257
7432
|
'parse_fly': (frame) => {
|
|
8258
7433
|
let firmware = frame[2];
|
|
8259
|
-
let frame_data = {};
|
|
8260
|
-
switch(frame[16]){
|
|
8261
|
-
case 0:
|
|
8262
|
-
frame_data.fsr = "+-6.114 V";
|
|
8263
|
-
break;
|
|
8264
|
-
case 1:
|
|
8265
|
-
frame_data.fsr = "+-4.096 V";
|
|
8266
|
-
break;
|
|
8267
|
-
case 2:
|
|
8268
|
-
frame_data.fsr = "+-2.048 V";
|
|
8269
|
-
break;
|
|
8270
|
-
case 3:
|
|
8271
|
-
frame_data.fsr = "+-1.024 V";
|
|
8272
|
-
break;
|
|
8273
|
-
case 4:
|
|
8274
|
-
frame_data.fsr = "+-0.512 V";
|
|
8275
|
-
break;
|
|
8276
|
-
case 5:
|
|
8277
|
-
frame_data.fsr = "+-0.256 V";
|
|
8278
|
-
break;
|
|
8279
|
-
}
|
|
8280
7434
|
if(firmware > 13){ // firmware 14 and above
|
|
8281
7435
|
let frame_data = {};
|
|
8282
7436
|
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
@@ -8285,7 +7439,27 @@ function sensor_types(parent){
|
|
|
8285
7439
|
}else{
|
|
8286
7440
|
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
8287
7441
|
}
|
|
8288
|
-
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
7442
|
+
frame_data.always_on = frame[24] ? "Enabled" : "Disabled";
|
|
7443
|
+
switch(frame[16]){
|
|
7444
|
+
case 0:
|
|
7445
|
+
frame_data.fsr = "+-6.114 V";
|
|
7446
|
+
break;
|
|
7447
|
+
case 1:
|
|
7448
|
+
frame_data.fsr = "+-4.096 V";
|
|
7449
|
+
break;
|
|
7450
|
+
case 2:
|
|
7451
|
+
frame_data.fsr = "+-2.048 V";
|
|
7452
|
+
break;
|
|
7453
|
+
case 3:
|
|
7454
|
+
frame_data.fsr = "+-1.024 V";
|
|
7455
|
+
break;
|
|
7456
|
+
case 4:
|
|
7457
|
+
frame_data.fsr = "+-0.512 V";
|
|
7458
|
+
break;
|
|
7459
|
+
case 5:
|
|
7460
|
+
frame_data.fsr = "+-0.256 V";
|
|
7461
|
+
break;
|
|
7462
|
+
}
|
|
8289
7463
|
return {
|
|
8290
7464
|
'firmware': frame[2],
|
|
8291
7465
|
'fsr': frame_data.fsr,
|
|
@@ -8295,212 +7469,31 @@ function sensor_types(parent){
|
|
|
8295
7469
|
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
8296
7470
|
'always_on': frame_data.always_on,
|
|
8297
7471
|
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
8298
|
-
'
|
|
8299
|
-
'
|
|
8300
|
-
'
|
|
8301
|
-
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
8302
|
-
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
7472
|
+
'hardware_id': frame.slice(29, 32),
|
|
7473
|
+
'report_rate': frame.slice(32, 36).reduce(msbLsb) + " sec",
|
|
7474
|
+
'tx_life_counter': frame.slice(36, 40).reduce(msbLsb),
|
|
8303
7475
|
'machine_values': {
|
|
8304
7476
|
'firmware': frame[2],
|
|
8305
7477
|
'fsr': frame[16],
|
|
8306
7478
|
'boot_up_time': frame[17],
|
|
8307
7479
|
'adc_pin_reading': frame.slice(18, 20),
|
|
8308
7480
|
'auto_check_interval': frame.slice(20, 22),
|
|
8309
|
-
'
|
|
7481
|
+
'auto_check_threshold': frame.slice(22, 24),
|
|
8310
7482
|
'always_on': frame[24],
|
|
8311
7483
|
'calibration_one': frame.slice(25, 29),
|
|
8312
|
-
'
|
|
8313
|
-
'
|
|
8314
|
-
'
|
|
8315
|
-
'report_rate': frame.slice(40, 44),
|
|
8316
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
8317
|
-
}
|
|
8318
|
-
}
|
|
8319
|
-
}else{
|
|
8320
|
-
return {
|
|
8321
|
-
'firmware': frame[2],
|
|
8322
|
-
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
8323
|
-
'fsr':frame_data.fsr,
|
|
8324
|
-
'boot_up_time': frame[17],
|
|
8325
|
-
// 'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
8326
|
-
'machine_values': {
|
|
8327
|
-
'firmware': frame[2],
|
|
8328
|
-
'report_rate': frame.slice(12, 16),
|
|
8329
|
-
'fsr':frame[16],
|
|
8330
|
-
'boot_up_time': frame[17],
|
|
8331
|
-
// 'adc_pin_reading': frame.slice(18, 20),
|
|
8332
|
-
'frame': frame
|
|
7484
|
+
'hardware_id': frame.slice(29, 32),
|
|
7485
|
+
'report_rate': frame.slice(32, 36),
|
|
7486
|
+
'tx_life_counter': frame.slice(36, 40)
|
|
8333
7487
|
}
|
|
8334
7488
|
}
|
|
8335
7489
|
}
|
|
8336
7490
|
}
|
|
8337
7491
|
},
|
|
8338
|
-
'
|
|
8339
|
-
name: '
|
|
7492
|
+
'91': {
|
|
7493
|
+
name: 'Wireless Air Velocity Sensor HVAC',
|
|
8340
7494
|
parse: (d) => {
|
|
8341
7495
|
return {
|
|
8342
|
-
|
|
8343
|
-
c1_ma: d.slice(2, 4).reduce(msbLsb) / 100,
|
|
8344
|
-
c1_db: d.slice(4, 6).reduce(msbLsb) / 100,
|
|
8345
|
-
c2_raw_adc: d.slice(6, 8).reduce(msbLsb),
|
|
8346
|
-
c2_ma: d.slice(8, 10).reduce(msbLsb) / 100,
|
|
8347
|
-
c2_db: d.slice(10, 12).reduce(msbLsb) / 100
|
|
8348
|
-
};
|
|
8349
|
-
},
|
|
8350
|
-
'parse_fly': (frame) => {
|
|
8351
|
-
let firmware = frame[2];
|
|
8352
|
-
let frame_data = {};
|
|
8353
|
-
switch(frame[16]){
|
|
8354
|
-
case 0:
|
|
8355
|
-
frame_data.fsr = "+-6.114 V";
|
|
8356
|
-
break;
|
|
8357
|
-
case 1:
|
|
8358
|
-
frame_data.fsr = "+-4.096 V";
|
|
8359
|
-
break;
|
|
8360
|
-
case 2:
|
|
8361
|
-
frame_data.fsr = "+-2.048 V";
|
|
8362
|
-
break;
|
|
8363
|
-
case 3:
|
|
8364
|
-
frame_data.fsr = "+-1.024 V";
|
|
8365
|
-
break;
|
|
8366
|
-
case 4:
|
|
8367
|
-
frame_data.fsr = "+-0.512 V";
|
|
8368
|
-
break;
|
|
8369
|
-
case 5:
|
|
8370
|
-
frame_data.fsr = "+-0.256 V";
|
|
8371
|
-
break;
|
|
8372
|
-
}
|
|
8373
|
-
if(firmware > 13){ // firmware 14 and above
|
|
8374
|
-
let frame_data = {};
|
|
8375
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
8376
|
-
if(!auto_check_interval){
|
|
8377
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
8378
|
-
}else{
|
|
8379
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
8380
|
-
}
|
|
8381
|
-
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
8382
|
-
return {
|
|
8383
|
-
'firmware': frame[2],
|
|
8384
|
-
'fsr': frame_data.fsr,
|
|
8385
|
-
'boot_up_time': frame[17] + " sec",
|
|
8386
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
8387
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
8388
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
8389
|
-
'always_on': frame_data.always_on,
|
|
8390
|
-
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
8391
|
-
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
8392
|
-
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
8393
|
-
'hardware_id': frame.slice(37, 40),
|
|
8394
|
-
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
8395
|
-
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
8396
|
-
'machine_values': {
|
|
8397
|
-
'firmware': frame[2],
|
|
8398
|
-
'fsr': frame[16],
|
|
8399
|
-
'boot_up_time': frame[17],
|
|
8400
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
8401
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
8402
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
8403
|
-
'always_on': frame[24],
|
|
8404
|
-
'calibration_one': frame.slice(25, 29),
|
|
8405
|
-
'calibration_two':frame.slice(29, 33),
|
|
8406
|
-
'calibration_three':frame.slice(33, 37),
|
|
8407
|
-
'hardware_id': frame.slice(37, 40),
|
|
8408
|
-
'report_rate': frame.slice(40, 44),
|
|
8409
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
8410
|
-
}
|
|
8411
|
-
}
|
|
8412
|
-
}else{
|
|
8413
|
-
return {
|
|
8414
|
-
'firmware': frame[2],
|
|
8415
|
-
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
8416
|
-
'fsr':frame_data.fsr,
|
|
8417
|
-
'boot_up_time': frame[17],
|
|
8418
|
-
// 'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
8419
|
-
'machine_values': {
|
|
8420
|
-
'firmware': frame[2],
|
|
8421
|
-
'report_rate': frame.slice(12, 16),
|
|
8422
|
-
'fsr':frame[16],
|
|
8423
|
-
'boot_up_time': frame[17],
|
|
8424
|
-
// 'adc_pin_reading': frame.slice(18, 20),
|
|
8425
|
-
'frame': frame
|
|
8426
|
-
}
|
|
8427
|
-
}
|
|
8428
|
-
}
|
|
8429
|
-
}
|
|
8430
|
-
},
|
|
8431
|
-
'90': {
|
|
8432
|
-
name: 'DC Current Sensor',
|
|
8433
|
-
parse: (d) => {
|
|
8434
|
-
return {
|
|
8435
|
-
raw_adc: d.slice(0, 2).reduce(msbLsb),
|
|
8436
|
-
amps: d.slice(2, 6).reduce(msbLsb) / 10,
|
|
8437
|
-
};
|
|
8438
|
-
},
|
|
8439
|
-
'parse_fly': (frame) => {
|
|
8440
|
-
let firmware = frame[2];
|
|
8441
|
-
if(firmware > 13){ // firmware 14 and above
|
|
8442
|
-
let frame_data = {};
|
|
8443
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
8444
|
-
if(!auto_check_interval){
|
|
8445
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
8446
|
-
}else{
|
|
8447
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
8448
|
-
}
|
|
8449
|
-
frame_data.always_on = frame[24] ? "Enabled" : "Disabled";
|
|
8450
|
-
switch(frame[16]){
|
|
8451
|
-
case 0:
|
|
8452
|
-
frame_data.fsr = "+-6.114 V";
|
|
8453
|
-
break;
|
|
8454
|
-
case 1:
|
|
8455
|
-
frame_data.fsr = "+-4.096 V";
|
|
8456
|
-
break;
|
|
8457
|
-
case 2:
|
|
8458
|
-
frame_data.fsr = "+-2.048 V";
|
|
8459
|
-
break;
|
|
8460
|
-
case 3:
|
|
8461
|
-
frame_data.fsr = "+-1.024 V";
|
|
8462
|
-
break;
|
|
8463
|
-
case 4:
|
|
8464
|
-
frame_data.fsr = "+-0.512 V";
|
|
8465
|
-
break;
|
|
8466
|
-
case 5:
|
|
8467
|
-
frame_data.fsr = "+-0.256 V";
|
|
8468
|
-
break;
|
|
8469
|
-
}
|
|
8470
|
-
return {
|
|
8471
|
-
'firmware': frame[2],
|
|
8472
|
-
'fsr': frame_data.fsr,
|
|
8473
|
-
'boot_up_time': frame[17] + " sec",
|
|
8474
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
8475
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
8476
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
8477
|
-
'always_on': frame_data.always_on,
|
|
8478
|
-
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
8479
|
-
'hardware_id': frame.slice(29, 32),
|
|
8480
|
-
'report_rate': frame.slice(32, 36).reduce(msbLsb) + " sec",
|
|
8481
|
-
'tx_life_counter': frame.slice(36, 40).reduce(msbLsb),
|
|
8482
|
-
'machine_values': {
|
|
8483
|
-
'firmware': frame[2],
|
|
8484
|
-
'fsr': frame[16],
|
|
8485
|
-
'boot_up_time': frame[17],
|
|
8486
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
8487
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
8488
|
-
'auto_check_threshold': frame.slice(22, 24),
|
|
8489
|
-
'always_on': frame[24],
|
|
8490
|
-
'calibration_one': frame.slice(25, 29),
|
|
8491
|
-
'hardware_id': frame.slice(29, 32),
|
|
8492
|
-
'report_rate': frame.slice(32, 36),
|
|
8493
|
-
'tx_life_counter': frame.slice(36, 40)
|
|
8494
|
-
}
|
|
8495
|
-
}
|
|
8496
|
-
}
|
|
8497
|
-
}
|
|
8498
|
-
},
|
|
8499
|
-
'91': {
|
|
8500
|
-
name: 'Wireless Air Velocity Sensor HVAC',
|
|
8501
|
-
parse: (d) => {
|
|
8502
|
-
return {
|
|
8503
|
-
velocity_mps: signInt(msbLsb(d[0], d[1]), 16) / 1000
|
|
7496
|
+
velocity_mps: signInt(msbLsb(d[0], d[1]), 16) / 1000
|
|
8504
7497
|
};
|
|
8505
7498
|
}
|
|
8506
7499
|
},
|
|
@@ -8512,206 +7505,62 @@ function sensor_types(parent){
|
|
|
8512
7505
|
};
|
|
8513
7506
|
}
|
|
8514
7507
|
},
|
|
8515
|
-
'
|
|
8516
|
-
name: '
|
|
8517
|
-
parse: (
|
|
8518
|
-
|
|
8519
|
-
|
|
8520
|
-
|
|
8521
|
-
|
|
8522
|
-
|
|
8523
|
-
|
|
8524
|
-
|
|
8525
|
-
|
|
8526
|
-
|
|
8527
|
-
|
|
8528
|
-
if(
|
|
8529
|
-
|
|
8530
|
-
|
|
8531
|
-
|
|
8532
|
-
|
|
8533
|
-
|
|
8534
|
-
|
|
8535
|
-
|
|
8536
|
-
|
|
8537
|
-
|
|
8538
|
-
|
|
8539
|
-
|
|
8540
|
-
|
|
8541
|
-
|
|
8542
|
-
|
|
8543
|
-
|
|
8544
|
-
|
|
8545
|
-
|
|
8546
|
-
|
|
8547
|
-
|
|
8548
|
-
|
|
8549
|
-
|
|
8550
|
-
|
|
8551
|
-
|
|
8552
|
-
|
|
8553
|
-
|
|
8554
|
-
|
|
8555
|
-
|
|
8556
|
-
|
|
8557
|
-
|
|
8558
|
-
|
|
8559
|
-
|
|
8560
|
-
|
|
8561
|
-
|
|
8562
|
-
|
|
8563
|
-
|
|
8564
|
-
|
|
8565
|
-
|
|
8566
|
-
|
|
8567
|
-
|
|
8568
|
-
|
|
8569
|
-
|
|
8570
|
-
|
|
8571
|
-
'boot_up_time': frame[17],
|
|
8572
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
8573
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
8574
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
8575
|
-
'always_on': frame[24],
|
|
8576
|
-
'calibration_one': frame.slice(25, 29),
|
|
8577
|
-
'calibration_two':frame.slice(29, 33),
|
|
8578
|
-
'calibration_three':frame.slice(33, 37),
|
|
8579
|
-
'hardware_id': frame.slice(37, 40),
|
|
8580
|
-
'report_rate': frame.slice(40, 44),
|
|
8581
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
8582
|
-
}
|
|
8583
|
-
}
|
|
8584
|
-
}
|
|
8585
|
-
}
|
|
8586
|
-
},
|
|
8587
|
-
'96': {
|
|
8588
|
-
name: '16-Bit 1-Channel 0-48VDC Receiver',
|
|
8589
|
-
parse: (d) => {
|
|
8590
|
-
return {
|
|
8591
|
-
adc: signInt(d.slice(0, 2).reduce(msbLsb), 16),
|
|
8592
|
-
vdc: signInt(d.slice(2, 4).reduce(msbLsb), 16)/100
|
|
8593
|
-
};
|
|
8594
|
-
},
|
|
8595
|
-
'parse_fly': (frame) => {
|
|
8596
|
-
let firmware = frame[2];
|
|
8597
|
-
if(firmware > 13){ // firmware 14 and above
|
|
8598
|
-
let frame_data = {};
|
|
8599
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
8600
|
-
if(!auto_check_interval){
|
|
8601
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
8602
|
-
}else{
|
|
8603
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
8604
|
-
}
|
|
8605
|
-
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
8606
|
-
switch(frame[16]){
|
|
8607
|
-
case 0:
|
|
8608
|
-
frame_data.fsr = "+-6.114 V";
|
|
8609
|
-
break;
|
|
8610
|
-
case 1:
|
|
8611
|
-
frame_data.fsr = "+-4.096 V";
|
|
8612
|
-
break;
|
|
8613
|
-
case 2:
|
|
8614
|
-
frame_data.fsr = "+-2.048 V";
|
|
8615
|
-
break;
|
|
8616
|
-
case 3:
|
|
8617
|
-
frame_data.fsr = "+-1.024 V";
|
|
8618
|
-
break;
|
|
8619
|
-
case 4:
|
|
8620
|
-
frame_data.fsr = "+-0.512 V";
|
|
8621
|
-
break;
|
|
8622
|
-
case 5:
|
|
8623
|
-
frame_data.fsr = "+-0.256 V";
|
|
8624
|
-
break;
|
|
8625
|
-
}
|
|
8626
|
-
return {
|
|
8627
|
-
'firmware': frame[2],
|
|
8628
|
-
'fsr': frame_data.fsr,
|
|
8629
|
-
'boot_up_time': frame[17] + " sec",
|
|
8630
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
8631
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
8632
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
8633
|
-
'always_on': frame_data.always_on,
|
|
8634
|
-
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
8635
|
-
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
8636
|
-
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
8637
|
-
'hardware_id': frame.slice(37, 40),
|
|
8638
|
-
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
8639
|
-
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
8640
|
-
'machine_values': {
|
|
8641
|
-
'firmware': frame[2],
|
|
8642
|
-
'fsr': frame[16],
|
|
8643
|
-
'boot_up_time': frame[17],
|
|
8644
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
8645
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
8646
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
8647
|
-
'always_on': frame[24],
|
|
8648
|
-
'calibration_one': frame.slice(25, 29),
|
|
8649
|
-
'calibration_two':frame.slice(29, 33),
|
|
8650
|
-
'calibration_three':frame.slice(33, 37),
|
|
8651
|
-
'hardware_id': frame.slice(37, 40),
|
|
8652
|
-
'report_rate': frame.slice(40, 44),
|
|
8653
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
8654
|
-
}
|
|
8655
|
-
}
|
|
8656
|
-
}
|
|
8657
|
-
}
|
|
8658
|
-
},
|
|
8659
|
-
'97': {
|
|
8660
|
-
name: 'One channel Dynamic Ultrasound vibration Sensor',
|
|
8661
|
-
parse: (payload, parsed, mac) => {
|
|
8662
|
-
if (payload[8] === 1) { // raw
|
|
8663
|
-
var mode = payload[8];
|
|
8664
|
-
var sampling_frequency = payload.slice(9, 13).reduce(msbLsb);
|
|
8665
|
-
var sensor_index = payload[13];
|
|
8666
|
-
var gain_db = payload[14];
|
|
8667
|
-
var deviceAddr = mac;
|
|
8668
|
-
var expected_packets = payload.slice(15, 17).reduce(msbLsb);
|
|
8669
|
-
var current_packet = payload.slice(17, 19).reduce(msbLsb);
|
|
8670
|
-
var sdata_start = 19;
|
|
8671
|
-
|
|
8672
|
-
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
8673
|
-
// if(expected_packets == 1){
|
|
8674
|
-
// this.build_102_data(payload, deviceAddr, hour, minute, sdata_start, current_packet, firmware);
|
|
8675
|
-
// }
|
|
8676
|
-
|
|
8677
|
-
// if a packet is already stored with the same packet ID,
|
|
8678
|
-
// or if packet ID is 1,
|
|
8679
|
-
// or if current packet ID is not one more than last packet ID
|
|
8680
|
-
if(current_packet == 1 && expected_packets != 1) {
|
|
8681
|
-
if(current_packet in globalDevices[deviceAddr].data || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
|
|
8682
|
-
console.log('bad packet breakdown, deleting stream. Current packet:');
|
|
8683
|
-
console.log(current_packet);
|
|
8684
|
-
console.log('Total Expected Packets:');
|
|
8685
|
-
console.log(expected_packets);
|
|
8686
|
-
// console.log(current_packet in globalDevices[deviceAddr].data && current_packet == 1 && expected_packets != 1);
|
|
8687
|
-
// console.log(current_packet == 1);
|
|
8688
|
-
// console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
|
|
8689
|
-
if(this.hasOwnProperty('failure_no')){
|
|
8690
|
-
this.failure_no = this.failure_no + 1;
|
|
8691
|
-
}
|
|
8692
|
-
else{
|
|
8693
|
-
this.failure_no = 1;
|
|
8694
|
-
}
|
|
8695
|
-
if(this.hasOwnProperty('failure_no')){
|
|
8696
|
-
console.log('####falure no');
|
|
8697
|
-
console.log(this.failure_no);
|
|
8698
|
-
}
|
|
8699
|
-
delete globalDevices[deviceAddr];
|
|
8700
|
-
if(current_packet != 1){
|
|
8701
|
-
return;
|
|
8702
|
-
} else{
|
|
8703
|
-
if(current_packet != 1){
|
|
8704
|
-
console.log('bad packet cleanup');
|
|
8705
|
-
return;
|
|
8706
|
-
}
|
|
8707
|
-
globalDevices[deviceAddr] = {
|
|
8708
|
-
// stream_size: expected_packets,
|
|
8709
|
-
data: {},
|
|
8710
|
-
}
|
|
8711
|
-
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
8712
|
-
return;
|
|
8713
|
-
}
|
|
8714
|
-
}
|
|
7508
|
+
'97': {
|
|
7509
|
+
name: 'One channel Dynamic Ultrasound vibration Sensor',
|
|
7510
|
+
parse: (payload, parsed, mac) => {
|
|
7511
|
+
if (payload[8] === 1) { // raw
|
|
7512
|
+
var mode = payload[8];
|
|
7513
|
+
var sampling_frequency = payload.slice(9, 13).reduce(msbLsb);
|
|
7514
|
+
var sensor_index = payload[13];
|
|
7515
|
+
var gain_db = payload[14];
|
|
7516
|
+
var deviceAddr = mac;
|
|
7517
|
+
var expected_packets = payload.slice(15, 17).reduce(msbLsb);
|
|
7518
|
+
var current_packet = payload.slice(17, 19).reduce(msbLsb);
|
|
7519
|
+
var sdata_start = 19;
|
|
7520
|
+
|
|
7521
|
+
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
7522
|
+
// if(expected_packets == 1){
|
|
7523
|
+
// this.build_102_data(payload, deviceAddr, hour, minute, sdata_start, current_packet, firmware);
|
|
7524
|
+
// }
|
|
7525
|
+
|
|
7526
|
+
// if a packet is already stored with the same packet ID,
|
|
7527
|
+
// or if packet ID is 1,
|
|
7528
|
+
// or if current packet ID is not one more than last packet ID
|
|
7529
|
+
if(current_packet == 1 && expected_packets != 1) {
|
|
7530
|
+
if(current_packet in globalDevices[deviceAddr].data || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
|
|
7531
|
+
console.log('bad packet breakdown, deleting stream. Current packet:');
|
|
7532
|
+
console.log(current_packet);
|
|
7533
|
+
console.log('Total Expected Packets:');
|
|
7534
|
+
console.log(expected_packets);
|
|
7535
|
+
// console.log(current_packet in globalDevices[deviceAddr].data && current_packet == 1 && expected_packets != 1);
|
|
7536
|
+
// console.log(current_packet == 1);
|
|
7537
|
+
// console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
|
|
7538
|
+
if(this.hasOwnProperty('failure_no')){
|
|
7539
|
+
this.failure_no = this.failure_no + 1;
|
|
7540
|
+
}
|
|
7541
|
+
else{
|
|
7542
|
+
this.failure_no = 1;
|
|
7543
|
+
}
|
|
7544
|
+
if(this.hasOwnProperty('failure_no')){
|
|
7545
|
+
console.log('####falure no');
|
|
7546
|
+
console.log(this.failure_no);
|
|
7547
|
+
}
|
|
7548
|
+
delete globalDevices[deviceAddr];
|
|
7549
|
+
if(current_packet != 1){
|
|
7550
|
+
return;
|
|
7551
|
+
} else{
|
|
7552
|
+
if(current_packet != 1){
|
|
7553
|
+
console.log('bad packet cleanup');
|
|
7554
|
+
return;
|
|
7555
|
+
}
|
|
7556
|
+
globalDevices[deviceAddr] = {
|
|
7557
|
+
// stream_size: expected_packets,
|
|
7558
|
+
data: {},
|
|
7559
|
+
}
|
|
7560
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
7561
|
+
return;
|
|
7562
|
+
}
|
|
7563
|
+
}
|
|
8715
7564
|
}
|
|
8716
7565
|
if(expected_packets == 1){
|
|
8717
7566
|
if(current_packet != 1){
|
|
@@ -9110,377 +7959,298 @@ function sensor_types(parent){
|
|
|
9110
7959
|
};
|
|
9111
7960
|
}
|
|
9112
7961
|
},
|
|
9113
|
-
'
|
|
9114
|
-
name: '
|
|
9115
|
-
parse: (d) => {
|
|
9116
|
-
|
|
9117
|
-
|
|
9118
|
-
|
|
9119
|
-
|
|
9120
|
-
};
|
|
7962
|
+
'108': {
|
|
7963
|
+
name: 'Machine Uptime Monitoring Sensor',
|
|
7964
|
+
parse: (d, payload) => {
|
|
7965
|
+
let firmware = payload[1];
|
|
7966
|
+
// if((payload[7] & 2) != 0){
|
|
7967
|
+
// console.log('Error found');
|
|
7968
|
+
// // parsed.data = {error: 'Error found, Accelerometer Probe may be unattached'};
|
|
7969
|
+
// let error = {error: 'Error found, Accelerometer Probe may be unattached'};
|
|
7970
|
+
// return error;
|
|
7971
|
+
// }
|
|
7972
|
+
if(firmware > 4){
|
|
7973
|
+
let report_type = "Regular";
|
|
7974
|
+
switch(d[41]){
|
|
7975
|
+
case 0:
|
|
7976
|
+
report_type = "Regular";
|
|
7977
|
+
break;
|
|
7978
|
+
case 1:
|
|
7979
|
+
report_type = "Shift end";
|
|
7980
|
+
break;
|
|
7981
|
+
case 2:
|
|
7982
|
+
report_type = "Interrupt";
|
|
7983
|
+
break;
|
|
7984
|
+
case 3:
|
|
7985
|
+
report_type = "Threshold";
|
|
7986
|
+
break;
|
|
7987
|
+
}
|
|
7988
|
+
let res = {
|
|
7989
|
+
digital_input_counter: d.slice(0, 4).reduce(msbLsb),
|
|
7990
|
+
digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
7991
|
+
ct_input_counter: d.slice(8, 12).reduce(msbLsb),
|
|
7992
|
+
ct_input_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
7993
|
+
opto_input_counter: d.slice(16, 20).reduce(msbLsb),
|
|
7994
|
+
opto_input_uptime: d.slice(20, 24).reduce(msbLsb),
|
|
7995
|
+
accelerometer_counter: d.slice(24, 28).reduce(msbLsb),
|
|
7996
|
+
accelerometer_uptime: d.slice(28, 32).reduce(msbLsb),
|
|
7997
|
+
magnetometer_counter: d.slice(32, 36).reduce(msbLsb),
|
|
7998
|
+
magnetometer_uptime: d.slice(36, 40).reduce(msbLsb),
|
|
7999
|
+
input_di: d[40] & 1 ? 1 : 0,
|
|
8000
|
+
input_ct: d[40] & 2 ? 1 : 0,
|
|
8001
|
+
input_opto: d[40] & 4 ? 1 : 0,
|
|
8002
|
+
input_acc: d[40] & 8 ? 1 : 0,
|
|
8003
|
+
input_mag: d[40] & 16 ? 1 : 0,
|
|
8004
|
+
report_type: report_type,
|
|
8005
|
+
rtc: [
|
|
8006
|
+
String(d[42]).padStart(2, '0'),
|
|
8007
|
+
String(d[43]).padStart(2, '0'),
|
|
8008
|
+
String(d[44]).padStart(2, '0')
|
|
8009
|
+
].join(':')
|
|
8010
|
+
};
|
|
8011
|
+
if((payload[7] & 2) != 0){
|
|
8012
|
+
res.error = {
|
|
8013
|
+
accelerometer_counter: "Error found, Accelerometer Probe may be unattached",
|
|
8014
|
+
accelerometer_uptime: "Error found, Accelerometer Probe may be unattached",
|
|
8015
|
+
input_acc: "Error found, Accelerometer Probe may be unattached"
|
|
8016
|
+
}
|
|
8017
|
+
// res.accelerometer_counter = "No probe detected";
|
|
8018
|
+
// res.accelerometer_uptime = "No probe detected";
|
|
8019
|
+
// res.input_acc = "No probe detected";
|
|
8020
|
+
};
|
|
8021
|
+
return res;
|
|
8022
|
+
}else{
|
|
8023
|
+
let res = {
|
|
8024
|
+
digital_input_counter: d.slice(0, 4).reduce(msbLsb),
|
|
8025
|
+
digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
8026
|
+
ct_input_counter: d.slice(8, 12).reduce(msbLsb),
|
|
8027
|
+
ct_input_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
8028
|
+
opto_input_counter: d.slice(16, 20).reduce(msbLsb),
|
|
8029
|
+
opto_input_uptime: d.slice(20, 24).reduce(msbLsb),
|
|
8030
|
+
accelerometer_counter: d.slice(24, 28).reduce(msbLsb),
|
|
8031
|
+
accelerometer_uptime: d.slice(28, 32).reduce(msbLsb),
|
|
8032
|
+
magnetometer_counter: d.slice(32, 36).reduce(msbLsb),
|
|
8033
|
+
magnetometer_uptime: d.slice(36, 40).reduce(msbLsb),
|
|
8034
|
+
input_di: d[40] & 1 ? 1 : 0,
|
|
8035
|
+
input_ct: d[40] & 2 ? 1 : 0,
|
|
8036
|
+
input_opto: d[40] & 4 ? 1 : 0,
|
|
8037
|
+
input_acc: d[40] & 8 ? 1 : 0,
|
|
8038
|
+
input_mag: d[40] & 16 ? 1 : 0
|
|
8039
|
+
};
|
|
8040
|
+
if((payload[7] & 2) != 0){
|
|
8041
|
+
res.error = {
|
|
8042
|
+
accelerometer_counter: "Error found, Accelerometer Probe may be unattached",
|
|
8043
|
+
accelerometer_uptime: "Error found, Accelerometer Probe may be unattached",
|
|
8044
|
+
input_acc: "Error found, Accelerometer Probe may be unattached"
|
|
8045
|
+
}
|
|
8046
|
+
};
|
|
8047
|
+
return res;
|
|
8048
|
+
}
|
|
9121
8049
|
},
|
|
9122
8050
|
'parse_fly': (frame) => {
|
|
9123
|
-
|
|
9124
|
-
|
|
9125
|
-
|
|
9126
|
-
|
|
9127
|
-
|
|
9128
|
-
|
|
9129
|
-
|
|
9130
|
-
|
|
8051
|
+
if(frame[2] > 18){
|
|
8052
|
+
let reset_mode = "Disabled";
|
|
8053
|
+
switch(frame[38]){
|
|
8054
|
+
case 0:
|
|
8055
|
+
reset_mode = "Disabled";
|
|
8056
|
+
break;
|
|
8057
|
+
case 1:
|
|
8058
|
+
reset_mode = "Shift Ends";
|
|
8059
|
+
break;
|
|
8060
|
+
case 2:
|
|
8061
|
+
reset_mode = "Timeout";
|
|
8062
|
+
break;
|
|
9131
8063
|
}
|
|
9132
|
-
|
|
9133
|
-
switch(frame[
|
|
8064
|
+
let acc_odr = "10 Hz";
|
|
8065
|
+
switch(frame[40]){
|
|
9134
8066
|
case 0:
|
|
9135
|
-
|
|
9136
|
-
|
|
8067
|
+
acc_odr = "10 Hz";
|
|
8068
|
+
break;
|
|
9137
8069
|
case 1:
|
|
9138
|
-
|
|
9139
|
-
|
|
8070
|
+
acc_odr = "20 Hz";
|
|
8071
|
+
break;
|
|
9140
8072
|
case 2:
|
|
9141
|
-
|
|
9142
|
-
|
|
8073
|
+
acc_odr = "50 Hz";
|
|
8074
|
+
break;
|
|
9143
8075
|
case 3:
|
|
9144
|
-
|
|
9145
|
-
|
|
9146
|
-
case 4:
|
|
9147
|
-
|
|
9148
|
-
|
|
8076
|
+
acc_odr = "100 Hz";
|
|
8077
|
+
break;
|
|
8078
|
+
case 4:
|
|
8079
|
+
acc_odr = "200 Hz";
|
|
8080
|
+
break;
|
|
9149
8081
|
case 5:
|
|
9150
|
-
|
|
9151
|
-
|
|
9152
|
-
}
|
|
9153
|
-
return {
|
|
9154
|
-
'firmware': frame[2],
|
|
9155
|
-
'fsr': frame_data.fsr,
|
|
9156
|
-
'boot_up_time': frame[17] + " sec",
|
|
9157
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
9158
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
9159
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
9160
|
-
'always_on': frame_data.always_on,
|
|
9161
|
-
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
9162
|
-
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
9163
|
-
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
9164
|
-
'hardware_id': frame.slice(37, 40),
|
|
9165
|
-
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
9166
|
-
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
9167
|
-
'machine_values': {
|
|
9168
|
-
'firmware': frame[2],
|
|
9169
|
-
'fsr': frame[16],
|
|
9170
|
-
'boot_up_time': frame[17],
|
|
9171
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
9172
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
9173
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
9174
|
-
'always_on': frame[24],
|
|
9175
|
-
'calibration_one': frame.slice(25, 29),
|
|
9176
|
-
'calibration_two':frame.slice(29, 33),
|
|
9177
|
-
'calibration_three':frame.slice(33, 37),
|
|
9178
|
-
'hardware_id': frame.slice(37, 40),
|
|
9179
|
-
'report_rate': frame.slice(40, 44),
|
|
9180
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
9181
|
-
}
|
|
9182
|
-
}
|
|
9183
|
-
}
|
|
9184
|
-
}
|
|
9185
|
-
},
|
|
9186
|
-
'106': {
|
|
9187
|
-
name: '2 Channel Automatic Luber With Ultrasound Vibration Sensor',
|
|
9188
|
-
parse: (d) => {
|
|
9189
|
-
return {
|
|
9190
|
-
c1_raw_adc: d.slice(0, 2).reduce(msbLsb),
|
|
9191
|
-
c1_ma: d.slice(2, 4).reduce(msbLsb) / 100,
|
|
9192
|
-
c1_db: d.slice(4, 6).reduce(msbLsb) / 100,
|
|
9193
|
-
c2_raw_adc: d.slice(6, 8).reduce(msbLsb),
|
|
9194
|
-
c2_ma: d.slice(8, 10).reduce(msbLsb) / 100,
|
|
9195
|
-
c2_db: d.slice(10, 12).reduce(msbLsb) / 100
|
|
9196
|
-
};
|
|
9197
|
-
},
|
|
9198
|
-
'parse_fly': (frame) => {
|
|
9199
|
-
let firmware = frame[2];
|
|
9200
|
-
if(firmware > 13){ // firmware 14 and above
|
|
9201
|
-
let frame_data = {};
|
|
9202
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
9203
|
-
if(!auto_check_interval){
|
|
9204
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
9205
|
-
}else{
|
|
9206
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
8082
|
+
acc_odr = "400 Hz";
|
|
8083
|
+
break;
|
|
9207
8084
|
}
|
|
9208
|
-
|
|
9209
|
-
switch(frame[
|
|
8085
|
+
let rtc_sampling_interval = "5 sec";
|
|
8086
|
+
switch(frame[39]){
|
|
9210
8087
|
case 0:
|
|
9211
|
-
|
|
9212
|
-
|
|
8088
|
+
rtc_sampling_interval = "1 min";
|
|
8089
|
+
break;
|
|
9213
8090
|
case 1:
|
|
9214
|
-
|
|
9215
|
-
|
|
8091
|
+
rtc_sampling_interval = "5 min";
|
|
8092
|
+
break;
|
|
9216
8093
|
case 2:
|
|
9217
|
-
|
|
9218
|
-
|
|
8094
|
+
rtc_sampling_interval = "15 min";
|
|
8095
|
+
break;
|
|
9219
8096
|
case 3:
|
|
9220
|
-
|
|
9221
|
-
|
|
8097
|
+
rtc_sampling_interval = "30 min";
|
|
8098
|
+
break;
|
|
9222
8099
|
case 4:
|
|
9223
|
-
|
|
9224
|
-
|
|
8100
|
+
rtc_sampling_interval = "1 hour";
|
|
8101
|
+
break;
|
|
9225
8102
|
case 5:
|
|
9226
|
-
|
|
9227
|
-
|
|
8103
|
+
rtc_sampling_interval = "2 hours";
|
|
8104
|
+
break;
|
|
8105
|
+
case 6:
|
|
8106
|
+
rtc_sampling_interval = "3 hours";
|
|
8107
|
+
break;
|
|
8108
|
+
case 7:
|
|
8109
|
+
rtc_sampling_interval = "6 hours";
|
|
8110
|
+
break;
|
|
8111
|
+
case 8:
|
|
8112
|
+
rtc_sampling_interval = "12 hours";
|
|
8113
|
+
break;
|
|
8114
|
+
case 9:
|
|
8115
|
+
rtc_sampling_interval = "5 sec";
|
|
8116
|
+
break;
|
|
8117
|
+
case 10:
|
|
8118
|
+
rtc_sampling_interval = "10 sec";
|
|
8119
|
+
break;
|
|
8120
|
+
case 11:
|
|
8121
|
+
rtc_sampling_interval = "15 sec";
|
|
8122
|
+
break;
|
|
8123
|
+
case 12:
|
|
8124
|
+
rtc_sampling_interval = "30 sec";
|
|
8125
|
+
break;
|
|
8126
|
+
}
|
|
8127
|
+
let screen_control = 0;
|
|
8128
|
+
switch(frame[41]){
|
|
8129
|
+
case 0:
|
|
8130
|
+
screen_control = "IO1";
|
|
8131
|
+
break;
|
|
8132
|
+
case 1:
|
|
8133
|
+
screen_control = "IO2";
|
|
8134
|
+
break;
|
|
8135
|
+
case 2:
|
|
8136
|
+
screen_control = "IO3";
|
|
8137
|
+
break;
|
|
8138
|
+
case 3:
|
|
8139
|
+
screen_control = "Accelero";
|
|
8140
|
+
break;
|
|
8141
|
+
case 4:
|
|
8142
|
+
screen_control = "Magneto";
|
|
8143
|
+
break;
|
|
9228
8144
|
}
|
|
9229
8145
|
return {
|
|
9230
8146
|
'firmware': frame[2],
|
|
9231
|
-
'
|
|
9232
|
-
'
|
|
9233
|
-
'
|
|
9234
|
-
'
|
|
9235
|
-
'
|
|
9236
|
-
'
|
|
9237
|
-
'
|
|
9238
|
-
'
|
|
9239
|
-
'
|
|
9240
|
-
|
|
9241
|
-
|
|
9242
|
-
'
|
|
8147
|
+
'accelerometer_threshold': (frame[16]* 32) + " mg",
|
|
8148
|
+
'debouncing_timeout': frame.slice(17, 19).reduce(msbLsb) + " msec",
|
|
8149
|
+
'accelero_state': frame[19]? "Enabled": "Disabled",
|
|
8150
|
+
'input_1_active_edge': frame[20]? "Rising": "Falling",
|
|
8151
|
+
'input_2_active_edge': frame[21]? "Rising": "Falling",
|
|
8152
|
+
'input_3_active_edge': frame[22]? "Rising": "Falling",
|
|
8153
|
+
'counter_threshold': frame.slice(23, 27).reduce(msbLsb),
|
|
8154
|
+
'trasnmit_on_change_status': frame[27]? "Enabled": "Disabled",
|
|
8155
|
+
'Shift_end_1': [
|
|
8156
|
+
String(frame[28]).padStart(2, '0'),
|
|
8157
|
+
String(frame[29]).padStart(2, '0')
|
|
8158
|
+
].join(':'),
|
|
8159
|
+
'Shift_end_2': [
|
|
8160
|
+
String(frame[30]).padStart(2, '0'),
|
|
8161
|
+
String(frame[31]).padStart(2, '0')
|
|
8162
|
+
].join(':'),
|
|
8163
|
+
'Shift_end_3': [
|
|
8164
|
+
String(frame[32]).padStart(2, '0'),
|
|
8165
|
+
String(frame[33]).padStart(2, '0')
|
|
8166
|
+
].join(':'),
|
|
8167
|
+
'Shift_end_4': [
|
|
8168
|
+
String(frame[34]).padStart(2, '0'),
|
|
8169
|
+
String(frame[35]).padStart(2, '0')
|
|
8170
|
+
].join(':'),
|
|
8171
|
+
'reset_timeout': frame.slice(36, 38).reduce(msbLsb) + " min",
|
|
8172
|
+
'counter_reset_mode': reset_mode,
|
|
8173
|
+
'sampling_interval': rtc_sampling_interval,
|
|
8174
|
+
'acc_odr': acc_odr,
|
|
8175
|
+
'screen_control': screen_control,
|
|
8176
|
+
'screen_on_time': frame[42] + ' sec',
|
|
8177
|
+
'interrupt_timeout': frame.slice(43, 45).reduce(msbLsb) + ' msec',
|
|
8178
|
+
'hardware_id': frame.slice(45, 48),
|
|
8179
|
+
'report_rate': frame.slice(48, 52).reduce(msbLsb) + " sec",
|
|
8180
|
+
'tx_life_counter': frame.slice(52, 56).reduce(msbLsb),
|
|
9243
8181
|
'machine_values': {
|
|
9244
8182
|
'firmware': frame[2],
|
|
9245
|
-
'
|
|
9246
|
-
'
|
|
9247
|
-
'
|
|
9248
|
-
'
|
|
9249
|
-
'
|
|
9250
|
-
'
|
|
9251
|
-
'
|
|
9252
|
-
'
|
|
9253
|
-
'
|
|
9254
|
-
'
|
|
9255
|
-
'
|
|
9256
|
-
'
|
|
8183
|
+
'accelerometer_threshold': frame[16],
|
|
8184
|
+
'debouncing_timeout': frame.slice(17, 19),
|
|
8185
|
+
'accelero_state': frame[19],
|
|
8186
|
+
'input_1_active_edge': frame[20],
|
|
8187
|
+
'input_2_active_edge': frame[21],
|
|
8188
|
+
'input_3_active_edge': frame[22],
|
|
8189
|
+
'counter_threshold': frame.slice(23, 27),
|
|
8190
|
+
'trasnmit_on_change_status': frame[27],
|
|
8191
|
+
'Shift_end_1': frame.slice(28, 30),
|
|
8192
|
+
'Shift_end_2': frame.slice(30, 32),
|
|
8193
|
+
'Shift_end_3': frame.slice(32, 34),
|
|
8194
|
+
'Shift_end_4': frame.slice(34, 36),
|
|
8195
|
+
'reset_timeout': frame.slice(36, 38),
|
|
8196
|
+
'counter_reset_mode': frame[38],
|
|
8197
|
+
'sampling_interval': frame[39],
|
|
8198
|
+
'acc_odr': frame[40],
|
|
8199
|
+
'screen_control': frame[41],
|
|
8200
|
+
'screen_on_time': frame[42],
|
|
8201
|
+
'interrupt_timeout': frame.slice(43, 45),
|
|
8202
|
+
'hardware_id': frame.slice(45, 48),
|
|
8203
|
+
'report_rate': frame.slice(48, 52),
|
|
8204
|
+
'tx_life_counter': frame.slice(52, 56)
|
|
9257
8205
|
}
|
|
9258
8206
|
}
|
|
9259
|
-
}
|
|
9260
|
-
|
|
9261
|
-
|
|
9262
|
-
|
|
9263
|
-
|
|
9264
|
-
|
|
9265
|
-
|
|
9266
|
-
|
|
9267
|
-
|
|
9268
|
-
|
|
9269
|
-
|
|
9270
|
-
|
|
9271
|
-
var ma3 = (signInt(d.slice(12, 14).reduce(msbLsb)))/100.0;
|
|
9272
|
-
var ma4 = (signInt(d.slice(14, 16).reduce(msbLsb)))/100.0;
|
|
9273
|
-
return {
|
|
9274
|
-
adc1: adc1,
|
|
9275
|
-
adc2: adc2,
|
|
9276
|
-
adc3: adc3,
|
|
9277
|
-
adc4: adc4,
|
|
9278
|
-
ma1: ma1,
|
|
9279
|
-
ma2: ma2,
|
|
9280
|
-
ma3: ma3,
|
|
9281
|
-
ma4: ma4
|
|
9282
|
-
};
|
|
9283
|
-
},
|
|
9284
|
-
'parse_fly': (frame) => {
|
|
9285
|
-
let firmware = frame[2];
|
|
9286
|
-
if(firmware > 13){ // firmware 14 and above
|
|
9287
|
-
let frame_data = {};
|
|
9288
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
9289
|
-
if(!auto_check_interval){
|
|
9290
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
9291
|
-
}else{
|
|
9292
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
8207
|
+
}else if(frame[2] > 13){
|
|
8208
|
+
let reset_mode = "Disabled";
|
|
8209
|
+
switch(frame[38]){
|
|
8210
|
+
case 0:
|
|
8211
|
+
reset_mode = "Disabled";
|
|
8212
|
+
break;
|
|
8213
|
+
case 1:
|
|
8214
|
+
reset_mode = "Shift Ends";
|
|
8215
|
+
break;
|
|
8216
|
+
case 2:
|
|
8217
|
+
reset_mode = "Timeout";
|
|
8218
|
+
break;
|
|
9293
8219
|
}
|
|
9294
|
-
|
|
9295
|
-
switch(frame[
|
|
8220
|
+
let acc_odr = "10Hz";
|
|
8221
|
+
switch(frame[40]){
|
|
9296
8222
|
case 0:
|
|
9297
|
-
|
|
9298
|
-
|
|
8223
|
+
acc_odr = "10Hz";
|
|
8224
|
+
break;
|
|
9299
8225
|
case 1:
|
|
9300
|
-
|
|
9301
|
-
|
|
8226
|
+
acc_odr = "20Hz";
|
|
8227
|
+
break;
|
|
9302
8228
|
case 2:
|
|
9303
|
-
|
|
9304
|
-
|
|
8229
|
+
acc_odr = "50Hz";
|
|
8230
|
+
break;
|
|
9305
8231
|
case 3:
|
|
9306
|
-
|
|
9307
|
-
break;
|
|
9308
|
-
case 4:
|
|
9309
|
-
frame_data.fsr = "+-0.512 V";
|
|
9310
|
-
break;
|
|
9311
|
-
case 5:
|
|
9312
|
-
frame_data.fsr = "+-0.256 V";
|
|
9313
|
-
break;
|
|
9314
|
-
}
|
|
9315
|
-
return {
|
|
9316
|
-
'firmware': frame[2],
|
|
9317
|
-
'fsr': frame_data.fsr,
|
|
9318
|
-
'boot_up_time': frame[17] + " sec",
|
|
9319
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
9320
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
9321
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
9322
|
-
'always_on': frame_data.always_on,
|
|
9323
|
-
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
9324
|
-
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
9325
|
-
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
9326
|
-
'hardware_id': frame.slice(37, 40),
|
|
9327
|
-
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
9328
|
-
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
9329
|
-
'machine_values': {
|
|
9330
|
-
'firmware': frame[2],
|
|
9331
|
-
'fsr': frame[16],
|
|
9332
|
-
'boot_up_time': frame[17],
|
|
9333
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
9334
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
9335
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
9336
|
-
'always_on': frame[24],
|
|
9337
|
-
'calibration_one': frame.slice(25, 29),
|
|
9338
|
-
'calibration_two':frame.slice(29, 33),
|
|
9339
|
-
'calibration_three':frame.slice(33, 37),
|
|
9340
|
-
'hardware_id': frame.slice(37, 40),
|
|
9341
|
-
'report_rate': frame.slice(40, 44),
|
|
9342
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
9343
|
-
}
|
|
9344
|
-
}
|
|
9345
|
-
}
|
|
9346
|
-
}
|
|
9347
|
-
},
|
|
9348
|
-
'108': {
|
|
9349
|
-
name: 'Machine Uptime Monitoring Sensor',
|
|
9350
|
-
parse: (d, payload) => {
|
|
9351
|
-
let firmware = payload[1];
|
|
9352
|
-
// if((payload[7] & 2) != 0){
|
|
9353
|
-
// console.log('Error found');
|
|
9354
|
-
// // parsed.data = {error: 'Error found, Accelerometer Probe may be unattached'};
|
|
9355
|
-
// let error = {error: 'Error found, Accelerometer Probe may be unattached'};
|
|
9356
|
-
// return error;
|
|
9357
|
-
// }
|
|
9358
|
-
if(firmware > 4){
|
|
9359
|
-
let report_type = "Regular";
|
|
9360
|
-
switch(d[41]){
|
|
9361
|
-
case 0:
|
|
9362
|
-
report_type = "Regular";
|
|
9363
|
-
break;
|
|
9364
|
-
case 1:
|
|
9365
|
-
report_type = "Shift end";
|
|
9366
|
-
break;
|
|
9367
|
-
case 2:
|
|
9368
|
-
report_type = "Interrupt";
|
|
9369
|
-
break;
|
|
9370
|
-
case 3:
|
|
9371
|
-
report_type = "Threshold";
|
|
9372
|
-
break;
|
|
9373
|
-
}
|
|
9374
|
-
let res = {
|
|
9375
|
-
digital_input_counter: d.slice(0, 4).reduce(msbLsb),
|
|
9376
|
-
digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
9377
|
-
ct_input_counter: d.slice(8, 12).reduce(msbLsb),
|
|
9378
|
-
ct_input_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
9379
|
-
opto_input_counter: d.slice(16, 20).reduce(msbLsb),
|
|
9380
|
-
opto_input_uptime: d.slice(20, 24).reduce(msbLsb),
|
|
9381
|
-
accelerometer_counter: d.slice(24, 28).reduce(msbLsb),
|
|
9382
|
-
accelerometer_uptime: d.slice(28, 32).reduce(msbLsb),
|
|
9383
|
-
magnetometer_counter: d.slice(32, 36).reduce(msbLsb),
|
|
9384
|
-
magnetometer_uptime: d.slice(36, 40).reduce(msbLsb),
|
|
9385
|
-
input_di: d[40] & 1 ? 1 : 0,
|
|
9386
|
-
input_ct: d[40] & 2 ? 1 : 0,
|
|
9387
|
-
input_opto: d[40] & 4 ? 1 : 0,
|
|
9388
|
-
input_acc: d[40] & 8 ? 1 : 0,
|
|
9389
|
-
input_mag: d[40] & 16 ? 1 : 0,
|
|
9390
|
-
report_type: report_type,
|
|
9391
|
-
rtc: [
|
|
9392
|
-
String(d[42]).padStart(2, '0'),
|
|
9393
|
-
String(d[43]).padStart(2, '0'),
|
|
9394
|
-
String(d[44]).padStart(2, '0')
|
|
9395
|
-
].join(':')
|
|
9396
|
-
};
|
|
9397
|
-
if((payload[7] & 2) != 0){
|
|
9398
|
-
res.error = {
|
|
9399
|
-
accelerometer_counter: "Error found, Accelerometer Probe may be unattached",
|
|
9400
|
-
accelerometer_uptime: "Error found, Accelerometer Probe may be unattached",
|
|
9401
|
-
input_acc: "Error found, Accelerometer Probe may be unattached"
|
|
9402
|
-
}
|
|
9403
|
-
// res.accelerometer_counter = "No probe detected";
|
|
9404
|
-
// res.accelerometer_uptime = "No probe detected";
|
|
9405
|
-
// res.input_acc = "No probe detected";
|
|
9406
|
-
};
|
|
9407
|
-
return res;
|
|
9408
|
-
}else{
|
|
9409
|
-
let res = {
|
|
9410
|
-
digital_input_counter: d.slice(0, 4).reduce(msbLsb),
|
|
9411
|
-
digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
9412
|
-
ct_input_counter: d.slice(8, 12).reduce(msbLsb),
|
|
9413
|
-
ct_input_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
9414
|
-
opto_input_counter: d.slice(16, 20).reduce(msbLsb),
|
|
9415
|
-
opto_input_uptime: d.slice(20, 24).reduce(msbLsb),
|
|
9416
|
-
accelerometer_counter: d.slice(24, 28).reduce(msbLsb),
|
|
9417
|
-
accelerometer_uptime: d.slice(28, 32).reduce(msbLsb),
|
|
9418
|
-
magnetometer_counter: d.slice(32, 36).reduce(msbLsb),
|
|
9419
|
-
magnetometer_uptime: d.slice(36, 40).reduce(msbLsb),
|
|
9420
|
-
input_di: d[40] & 1 ? 1 : 0,
|
|
9421
|
-
input_ct: d[40] & 2 ? 1 : 0,
|
|
9422
|
-
input_opto: d[40] & 4 ? 1 : 0,
|
|
9423
|
-
input_acc: d[40] & 8 ? 1 : 0,
|
|
9424
|
-
input_mag: d[40] & 16 ? 1 : 0
|
|
9425
|
-
};
|
|
9426
|
-
if((payload[7] & 2) != 0){
|
|
9427
|
-
res.error = {
|
|
9428
|
-
accelerometer_counter: "Error found, Accelerometer Probe may be unattached",
|
|
9429
|
-
accelerometer_uptime: "Error found, Accelerometer Probe may be unattached",
|
|
9430
|
-
input_acc: "Error found, Accelerometer Probe may be unattached"
|
|
9431
|
-
}
|
|
9432
|
-
};
|
|
9433
|
-
return res;
|
|
9434
|
-
}
|
|
9435
|
-
},
|
|
9436
|
-
'parse_fly': (frame) => {
|
|
9437
|
-
if(frame[2] > 18){
|
|
9438
|
-
let reset_mode = "Disabled";
|
|
9439
|
-
switch(frame[38]){
|
|
9440
|
-
case 0:
|
|
9441
|
-
reset_mode = "Disabled";
|
|
9442
|
-
break;
|
|
9443
|
-
case 1:
|
|
9444
|
-
reset_mode = "Shift Ends";
|
|
9445
|
-
break;
|
|
9446
|
-
case 2:
|
|
9447
|
-
reset_mode = "Timeout";
|
|
9448
|
-
break;
|
|
9449
|
-
}
|
|
9450
|
-
let acc_odr = "10 Hz";
|
|
9451
|
-
switch(frame[40]){
|
|
9452
|
-
case 0:
|
|
9453
|
-
acc_odr = "10 Hz";
|
|
9454
|
-
break;
|
|
9455
|
-
case 1:
|
|
9456
|
-
acc_odr = "20 Hz";
|
|
9457
|
-
break;
|
|
9458
|
-
case 2:
|
|
9459
|
-
acc_odr = "50 Hz";
|
|
9460
|
-
break;
|
|
9461
|
-
case 3:
|
|
9462
|
-
acc_odr = "100 Hz";
|
|
8232
|
+
acc_odr = "100Hz";
|
|
9463
8233
|
break;
|
|
9464
8234
|
case 4:
|
|
9465
|
-
acc_odr = "
|
|
8235
|
+
acc_odr = "200Hz";
|
|
9466
8236
|
break;
|
|
9467
8237
|
case 5:
|
|
9468
|
-
acc_odr = "
|
|
8238
|
+
acc_odr = "400Hz";
|
|
9469
8239
|
break;
|
|
9470
8240
|
}
|
|
9471
|
-
let rtc_sampling_interval = "5
|
|
8241
|
+
let rtc_sampling_interval = "5 seconds";
|
|
9472
8242
|
switch(frame[39]){
|
|
9473
8243
|
case 0:
|
|
9474
|
-
rtc_sampling_interval = "1
|
|
8244
|
+
rtc_sampling_interval = "1 minute";
|
|
9475
8245
|
break;
|
|
9476
8246
|
case 1:
|
|
9477
|
-
rtc_sampling_interval = "5
|
|
8247
|
+
rtc_sampling_interval = "5 minutes";
|
|
9478
8248
|
break;
|
|
9479
8249
|
case 2:
|
|
9480
|
-
rtc_sampling_interval = "15
|
|
8250
|
+
rtc_sampling_interval = "15 minutes";
|
|
9481
8251
|
break;
|
|
9482
8252
|
case 3:
|
|
9483
|
-
rtc_sampling_interval = "30
|
|
8253
|
+
rtc_sampling_interval = "30 minutes";
|
|
9484
8254
|
break;
|
|
9485
8255
|
case 4:
|
|
9486
8256
|
rtc_sampling_interval = "1 hour";
|
|
@@ -9498,40 +8268,22 @@ function sensor_types(parent){
|
|
|
9498
8268
|
rtc_sampling_interval = "12 hours";
|
|
9499
8269
|
break;
|
|
9500
8270
|
case 9:
|
|
9501
|
-
rtc_sampling_interval = "5
|
|
8271
|
+
rtc_sampling_interval = "5 seconds";
|
|
9502
8272
|
break;
|
|
9503
8273
|
case 10:
|
|
9504
|
-
rtc_sampling_interval = "10
|
|
8274
|
+
rtc_sampling_interval = "10 seconds";
|
|
9505
8275
|
break;
|
|
9506
8276
|
case 11:
|
|
9507
|
-
rtc_sampling_interval = "15
|
|
8277
|
+
rtc_sampling_interval = "15 seconds";
|
|
9508
8278
|
break;
|
|
9509
8279
|
case 12:
|
|
9510
|
-
rtc_sampling_interval = "30
|
|
9511
|
-
break;
|
|
9512
|
-
}
|
|
9513
|
-
let screen_control = 0;
|
|
9514
|
-
switch(frame[41]){
|
|
9515
|
-
case 0:
|
|
9516
|
-
screen_control = "IO1";
|
|
9517
|
-
break;
|
|
9518
|
-
case 1:
|
|
9519
|
-
screen_control = "IO2";
|
|
9520
|
-
break;
|
|
9521
|
-
case 2:
|
|
9522
|
-
screen_control = "IO3";
|
|
9523
|
-
break;
|
|
9524
|
-
case 3:
|
|
9525
|
-
screen_control = "Accelero";
|
|
9526
|
-
break;
|
|
9527
|
-
case 4:
|
|
9528
|
-
screen_control = "Magneto";
|
|
8280
|
+
rtc_sampling_interval = "30 seconds";
|
|
9529
8281
|
break;
|
|
9530
8282
|
}
|
|
9531
8283
|
return {
|
|
9532
8284
|
'firmware': frame[2],
|
|
9533
|
-
'accelerometer_threshold': (frame[16]* 32) + "
|
|
9534
|
-
'debouncing_timeout': frame.slice(17, 19).reduce(msbLsb) + "
|
|
8285
|
+
'accelerometer_threshold': (frame[16]* 32) + "mg",
|
|
8286
|
+
'debouncing_timeout': frame.slice(17, 19).reduce(msbLsb) + "msec",
|
|
9535
8287
|
'accelero_state': frame[19]? "Enabled": "Disabled",
|
|
9536
8288
|
'input_1_active_edge': frame[20]? "Rising": "Falling",
|
|
9537
8289
|
'input_2_active_edge': frame[21]? "Rising": "Falling",
|
|
@@ -9554,16 +8306,14 @@ function sensor_types(parent){
|
|
|
9554
8306
|
String(frame[34]).padStart(2, '0'),
|
|
9555
8307
|
String(frame[35]).padStart(2, '0')
|
|
9556
8308
|
].join(':'),
|
|
9557
|
-
'reset_timeout': frame.slice(36, 38).reduce(msbLsb) + "
|
|
8309
|
+
'reset_timeout': frame.slice(36, 38).reduce(msbLsb) + "min",
|
|
9558
8310
|
'counter_reset_mode': reset_mode,
|
|
9559
8311
|
'sampling_interval': rtc_sampling_interval,
|
|
9560
8312
|
'acc_odr': acc_odr,
|
|
9561
|
-
'
|
|
9562
|
-
'
|
|
9563
|
-
'
|
|
9564
|
-
'
|
|
9565
|
-
'report_rate': frame.slice(48, 52).reduce(msbLsb) + " sec",
|
|
9566
|
-
'tx_life_counter': frame.slice(52, 56).reduce(msbLsb),
|
|
8313
|
+
'counter_ignore_timeout': frame.slice(41, 43).reduce(msbLsb) + "sec",
|
|
8314
|
+
'hardware_id': frame.slice(43, 46),
|
|
8315
|
+
'report_rate': frame.slice(46, 50).reduce(msbLsb) + "sec",
|
|
8316
|
+
'tx_life_counter': frame.slice(50, 54).reduce(msbLsb),
|
|
9567
8317
|
'machine_values': {
|
|
9568
8318
|
'firmware': frame[2],
|
|
9569
8319
|
'accelerometer_threshold': frame[16],
|
|
@@ -9582,15 +8332,13 @@ function sensor_types(parent){
|
|
|
9582
8332
|
'counter_reset_mode': frame[38],
|
|
9583
8333
|
'sampling_interval': frame[39],
|
|
9584
8334
|
'acc_odr': frame[40],
|
|
9585
|
-
'
|
|
9586
|
-
'
|
|
9587
|
-
'
|
|
9588
|
-
'
|
|
9589
|
-
'report_rate': frame.slice(48, 52),
|
|
9590
|
-
'tx_life_counter': frame.slice(52, 56)
|
|
8335
|
+
'counter_ignore_timeout': frame.slice(41, 43),
|
|
8336
|
+
'hardware_id': frame.slice(43, 46),
|
|
8337
|
+
'report_rate': frame.slice(46, 50),
|
|
8338
|
+
'tx_life_counter': frame.slice(50, 54)
|
|
9591
8339
|
}
|
|
9592
8340
|
}
|
|
9593
|
-
}else if(frame[2] >
|
|
8341
|
+
} else if(frame[2] > 9){
|
|
9594
8342
|
let reset_mode = "Disabled";
|
|
9595
8343
|
switch(frame[38]){
|
|
9596
8344
|
case 0:
|
|
@@ -9696,10 +8444,9 @@ function sensor_types(parent){
|
|
|
9696
8444
|
'counter_reset_mode': reset_mode,
|
|
9697
8445
|
'sampling_interval': rtc_sampling_interval,
|
|
9698
8446
|
'acc_odr': acc_odr,
|
|
9699
|
-
'
|
|
9700
|
-
'
|
|
9701
|
-
'
|
|
9702
|
-
'tx_life_counter': frame.slice(50, 54).reduce(msbLsb),
|
|
8447
|
+
'hardware_id': frame.slice(41, 44),
|
|
8448
|
+
'report_rate': frame.slice(44, 48).reduce(msbLsb) + "sec",
|
|
8449
|
+
'tx_life_counter': frame.slice(48, 52).reduce(msbLsb),
|
|
9703
8450
|
'machine_values': {
|
|
9704
8451
|
'firmware': frame[2],
|
|
9705
8452
|
'accelerometer_threshold': frame[16],
|
|
@@ -9718,15 +8465,14 @@ function sensor_types(parent){
|
|
|
9718
8465
|
'counter_reset_mode': frame[38],
|
|
9719
8466
|
'sampling_interval': frame[39],
|
|
9720
8467
|
'acc_odr': frame[40],
|
|
9721
|
-
'
|
|
9722
|
-
'
|
|
9723
|
-
'
|
|
9724
|
-
'tx_life_counter': frame.slice(50, 54)
|
|
8468
|
+
'hardware_id': frame.slice(41, 44),
|
|
8469
|
+
'report_rate': frame.slice(44, 48),
|
|
8470
|
+
'tx_life_counter': frame.slice(48, 52)
|
|
9725
8471
|
}
|
|
9726
8472
|
}
|
|
9727
|
-
} else if(frame[2] >
|
|
8473
|
+
} else if(frame[2] > 8){
|
|
9728
8474
|
let reset_mode = "Disabled";
|
|
9729
|
-
switch(frame[
|
|
8475
|
+
switch(frame[37]){
|
|
9730
8476
|
case 0:
|
|
9731
8477
|
reset_mode = "Disabled";
|
|
9732
8478
|
break;
|
|
@@ -9738,7 +8484,7 @@ function sensor_types(parent){
|
|
|
9738
8484
|
break;
|
|
9739
8485
|
}
|
|
9740
8486
|
let acc_odr = "10Hz";
|
|
9741
|
-
switch(frame[
|
|
8487
|
+
switch(frame[39]){
|
|
9742
8488
|
case 0:
|
|
9743
8489
|
acc_odr = "10Hz";
|
|
9744
8490
|
break;
|
|
@@ -9759,139 +8505,7 @@ function sensor_types(parent){
|
|
|
9759
8505
|
break;
|
|
9760
8506
|
}
|
|
9761
8507
|
let rtc_sampling_interval = "5 seconds";
|
|
9762
|
-
switch(frame[
|
|
9763
|
-
case 0:
|
|
9764
|
-
rtc_sampling_interval = "1 minute";
|
|
9765
|
-
break;
|
|
9766
|
-
case 1:
|
|
9767
|
-
rtc_sampling_interval = "5 minutes";
|
|
9768
|
-
break;
|
|
9769
|
-
case 2:
|
|
9770
|
-
rtc_sampling_interval = "15 minutes";
|
|
9771
|
-
break;
|
|
9772
|
-
case 3:
|
|
9773
|
-
rtc_sampling_interval = "30 minutes";
|
|
9774
|
-
break;
|
|
9775
|
-
case 4:
|
|
9776
|
-
rtc_sampling_interval = "1 hour";
|
|
9777
|
-
break;
|
|
9778
|
-
case 5:
|
|
9779
|
-
rtc_sampling_interval = "2 hours";
|
|
9780
|
-
break;
|
|
9781
|
-
case 6:
|
|
9782
|
-
rtc_sampling_interval = "3 hours";
|
|
9783
|
-
break;
|
|
9784
|
-
case 7:
|
|
9785
|
-
rtc_sampling_interval = "6 hours";
|
|
9786
|
-
break;
|
|
9787
|
-
case 8:
|
|
9788
|
-
rtc_sampling_interval = "12 hours";
|
|
9789
|
-
break;
|
|
9790
|
-
case 9:
|
|
9791
|
-
rtc_sampling_interval = "5 seconds";
|
|
9792
|
-
break;
|
|
9793
|
-
case 10:
|
|
9794
|
-
rtc_sampling_interval = "10 seconds";
|
|
9795
|
-
break;
|
|
9796
|
-
case 11:
|
|
9797
|
-
rtc_sampling_interval = "15 seconds";
|
|
9798
|
-
break;
|
|
9799
|
-
case 12:
|
|
9800
|
-
rtc_sampling_interval = "30 seconds";
|
|
9801
|
-
break;
|
|
9802
|
-
}
|
|
9803
|
-
return {
|
|
9804
|
-
'firmware': frame[2],
|
|
9805
|
-
'accelerometer_threshold': (frame[16]* 32) + "mg",
|
|
9806
|
-
'debouncing_timeout': frame.slice(17, 19).reduce(msbLsb) + "msec",
|
|
9807
|
-
'accelero_state': frame[19]? "Enabled": "Disabled",
|
|
9808
|
-
'input_1_active_edge': frame[20]? "Rising": "Falling",
|
|
9809
|
-
'input_2_active_edge': frame[21]? "Rising": "Falling",
|
|
9810
|
-
'input_3_active_edge': frame[22]? "Rising": "Falling",
|
|
9811
|
-
'counter_threshold': frame.slice(23, 27).reduce(msbLsb),
|
|
9812
|
-
'trasnmit_on_change_status': frame[27]? "Enabled": "Disabled",
|
|
9813
|
-
'Shift_end_1': [
|
|
9814
|
-
String(frame[28]).padStart(2, '0'),
|
|
9815
|
-
String(frame[29]).padStart(2, '0')
|
|
9816
|
-
].join(':'),
|
|
9817
|
-
'Shift_end_2': [
|
|
9818
|
-
String(frame[30]).padStart(2, '0'),
|
|
9819
|
-
String(frame[31]).padStart(2, '0')
|
|
9820
|
-
].join(':'),
|
|
9821
|
-
'Shift_end_3': [
|
|
9822
|
-
String(frame[32]).padStart(2, '0'),
|
|
9823
|
-
String(frame[33]).padStart(2, '0')
|
|
9824
|
-
].join(':'),
|
|
9825
|
-
'Shift_end_4': [
|
|
9826
|
-
String(frame[34]).padStart(2, '0'),
|
|
9827
|
-
String(frame[35]).padStart(2, '0')
|
|
9828
|
-
].join(':'),
|
|
9829
|
-
'reset_timeout': frame.slice(36, 38).reduce(msbLsb) + "min",
|
|
9830
|
-
'counter_reset_mode': reset_mode,
|
|
9831
|
-
'sampling_interval': rtc_sampling_interval,
|
|
9832
|
-
'acc_odr': acc_odr,
|
|
9833
|
-
'hardware_id': frame.slice(41, 44),
|
|
9834
|
-
'report_rate': frame.slice(44, 48).reduce(msbLsb) + "sec",
|
|
9835
|
-
'tx_life_counter': frame.slice(48, 52).reduce(msbLsb),
|
|
9836
|
-
'machine_values': {
|
|
9837
|
-
'firmware': frame[2],
|
|
9838
|
-
'accelerometer_threshold': frame[16],
|
|
9839
|
-
'debouncing_timeout': frame.slice(17, 19),
|
|
9840
|
-
'accelero_state': frame[19],
|
|
9841
|
-
'input_1_active_edge': frame[20],
|
|
9842
|
-
'input_2_active_edge': frame[21],
|
|
9843
|
-
'input_3_active_edge': frame[22],
|
|
9844
|
-
'counter_threshold': frame.slice(23, 27),
|
|
9845
|
-
'trasnmit_on_change_status': frame[27],
|
|
9846
|
-
'Shift_end_1': frame.slice(28, 30),
|
|
9847
|
-
'Shift_end_2': frame.slice(30, 32),
|
|
9848
|
-
'Shift_end_3': frame.slice(32, 34),
|
|
9849
|
-
'Shift_end_4': frame.slice(34, 36),
|
|
9850
|
-
'reset_timeout': frame.slice(36, 38),
|
|
9851
|
-
'counter_reset_mode': frame[38],
|
|
9852
|
-
'sampling_interval': frame[39],
|
|
9853
|
-
'acc_odr': frame[40],
|
|
9854
|
-
'hardware_id': frame.slice(41, 44),
|
|
9855
|
-
'report_rate': frame.slice(44, 48),
|
|
9856
|
-
'tx_life_counter': frame.slice(48, 52)
|
|
9857
|
-
}
|
|
9858
|
-
}
|
|
9859
|
-
} else if(frame[2] > 8){
|
|
9860
|
-
let reset_mode = "Disabled";
|
|
9861
|
-
switch(frame[37]){
|
|
9862
|
-
case 0:
|
|
9863
|
-
reset_mode = "Disabled";
|
|
9864
|
-
break;
|
|
9865
|
-
case 1:
|
|
9866
|
-
reset_mode = "Shift Ends";
|
|
9867
|
-
break;
|
|
9868
|
-
case 2:
|
|
9869
|
-
reset_mode = "Timeout";
|
|
9870
|
-
break;
|
|
9871
|
-
}
|
|
9872
|
-
let acc_odr = "10Hz";
|
|
9873
|
-
switch(frame[39]){
|
|
9874
|
-
case 0:
|
|
9875
|
-
acc_odr = "10Hz";
|
|
9876
|
-
break;
|
|
9877
|
-
case 1:
|
|
9878
|
-
acc_odr = "20Hz";
|
|
9879
|
-
break;
|
|
9880
|
-
case 2:
|
|
9881
|
-
acc_odr = "50Hz";
|
|
9882
|
-
break;
|
|
9883
|
-
case 3:
|
|
9884
|
-
acc_odr = "100Hz";
|
|
9885
|
-
break;
|
|
9886
|
-
case 4:
|
|
9887
|
-
acc_odr = "200Hz";
|
|
9888
|
-
break;
|
|
9889
|
-
case 5:
|
|
9890
|
-
acc_odr = "400Hz";
|
|
9891
|
-
break;
|
|
9892
|
-
}
|
|
9893
|
-
let rtc_sampling_interval = "5 seconds";
|
|
9894
|
-
switch(frame[38]){
|
|
8508
|
+
switch(frame[38]){
|
|
9895
8509
|
case 0:
|
|
9896
8510
|
rtc_sampling_interval = "1 minute";
|
|
9897
8511
|
break;
|
|
@@ -10031,795 +8645,173 @@ function sensor_types(parent){
|
|
|
10031
8645
|
case 1:
|
|
10032
8646
|
reset_mode = "Shift Ends";
|
|
10033
8647
|
break;
|
|
10034
|
-
case 2:
|
|
10035
|
-
reset_mode = "Timeout";
|
|
10036
|
-
break;
|
|
10037
|
-
}
|
|
10038
|
-
let acc_odr = "10Hz";
|
|
10039
|
-
switch(frame[39]){
|
|
10040
|
-
case 0:
|
|
10041
|
-
acc_odr = "10Hz";
|
|
10042
|
-
break;
|
|
10043
|
-
case 1:
|
|
10044
|
-
acc_odr = "20Hz";
|
|
10045
|
-
break;
|
|
10046
|
-
case 2:
|
|
10047
|
-
acc_odr = "50Hz";
|
|
10048
|
-
break;
|
|
10049
|
-
case 3:
|
|
10050
|
-
acc_odr = "100Hz";
|
|
10051
|
-
break;
|
|
10052
|
-
case 4:
|
|
10053
|
-
acc_odr = "200Hz";
|
|
10054
|
-
break;
|
|
10055
|
-
case 5:
|
|
10056
|
-
acc_odr = "400Hz";
|
|
10057
|
-
break;
|
|
10058
|
-
}
|
|
10059
|
-
let rtc_sampling_interval = "5 seconds";
|
|
10060
|
-
switch(frame[38]){
|
|
10061
|
-
case 0:
|
|
10062
|
-
rtc_sampling_interval = "1 minute";
|
|
10063
|
-
break;
|
|
10064
|
-
case 1:
|
|
10065
|
-
rtc_sampling_interval = "5 minutes";
|
|
10066
|
-
break;
|
|
10067
|
-
case 2:
|
|
10068
|
-
rtc_sampling_interval = "15 minutes";
|
|
10069
|
-
break;
|
|
10070
|
-
case 3:
|
|
10071
|
-
rtc_sampling_interval = "30 minutes";
|
|
10072
|
-
break;
|
|
10073
|
-
case 4:
|
|
10074
|
-
rtc_sampling_interval = "1 hour";
|
|
10075
|
-
break;
|
|
10076
|
-
case 5:
|
|
10077
|
-
rtc_sampling_interval = "2 hours";
|
|
10078
|
-
break;
|
|
10079
|
-
case 6:
|
|
10080
|
-
rtc_sampling_interval = "3 hours";
|
|
10081
|
-
break;
|
|
10082
|
-
case 7:
|
|
10083
|
-
rtc_sampling_interval = "6 hours";
|
|
10084
|
-
break;
|
|
10085
|
-
case 8:
|
|
10086
|
-
rtc_sampling_interval = "12 hours";
|
|
10087
|
-
break;
|
|
10088
|
-
case 9:
|
|
10089
|
-
rtc_sampling_interval = "5 seconds";
|
|
10090
|
-
break;
|
|
10091
|
-
case 10:
|
|
10092
|
-
rtc_sampling_interval = "10 seconds";
|
|
10093
|
-
break;
|
|
10094
|
-
case 11:
|
|
10095
|
-
rtc_sampling_interval = "15 seconds";
|
|
10096
|
-
break;
|
|
10097
|
-
case 12:
|
|
10098
|
-
rtc_sampling_interval = "30 seconds";
|
|
10099
|
-
break;
|
|
10100
|
-
}
|
|
10101
|
-
return {
|
|
10102
|
-
'firmware': frame[2],
|
|
10103
|
-
'accelerometer_threshold': (frame[16]* 32) + "mg",
|
|
10104
|
-
'debouncing_timeout': frame[17] + "sec",
|
|
10105
|
-
'accelero_state': frame[18]? "Enabled": "Disabled",
|
|
10106
|
-
'input_1_active_edge': frame[19]? "Rising": "Falling",
|
|
10107
|
-
'input_2_active_edge': frame[20]? "Rising": "Falling",
|
|
10108
|
-
'input_3_active_edge': frame[21]? "Rising": "Falling",
|
|
10109
|
-
'counter_threshold': frame.slice(22, 26).reduce(msbLsb) + "sec",
|
|
10110
|
-
'trasnmit_on_change_status': frame[26]? "Enabled": "Disabled",
|
|
10111
|
-
'Shift_end_1': [
|
|
10112
|
-
String(frame[27]).padStart(2, '0'),
|
|
10113
|
-
String(frame[28]).padStart(2, '0')
|
|
10114
|
-
].join(':'),
|
|
10115
|
-
'Shift_end_2': [
|
|
10116
|
-
String(frame[29]).padStart(2, '0'),
|
|
10117
|
-
String(frame[30]).padStart(2, '0')
|
|
10118
|
-
].join(':'),
|
|
10119
|
-
'Shift_end_3': [
|
|
10120
|
-
String(frame[31]).padStart(2, '0'),
|
|
10121
|
-
String(frame[32]).padStart(2, '0')
|
|
10122
|
-
].join(':'),
|
|
10123
|
-
'Shift_end_4': [
|
|
10124
|
-
String(frame[33]).padStart(2, '0'),
|
|
10125
|
-
String(frame[34]).padStart(2, '0')
|
|
10126
|
-
].join(':'),
|
|
10127
|
-
'reset_timeout': frame.slice(35, 37).reduce(msbLsb) + "min",
|
|
10128
|
-
'counter_reset_mode': reset_mode,
|
|
10129
|
-
'sampling_interval': rtc_sampling_interval,
|
|
10130
|
-
'acc_odr': acc_odr,
|
|
10131
|
-
'hardware_id': frame.slice(40, 43),
|
|
10132
|
-
'report_rate': frame.slice(43, 47).reduce(msbLsb) + "sec",
|
|
10133
|
-
'tx_life_counter': frame.slice(47, 51).reduce(msbLsb),
|
|
10134
|
-
'machine_values': {
|
|
10135
|
-
'firmware': frame[2],
|
|
10136
|
-
'accelerometer_threshold': frame[16],
|
|
10137
|
-
'debouncing_timeout': frame[17],
|
|
10138
|
-
'accelero_state': frame[18],
|
|
10139
|
-
'input_1_active_edge': frame[19],
|
|
10140
|
-
'input_2_active_edge': frame[20],
|
|
10141
|
-
'input_3_active_edge': frame[21],
|
|
10142
|
-
'counter_threshold': frame.slice(22, 26),
|
|
10143
|
-
'trasnmit_on_change_status': frame[26],
|
|
10144
|
-
'Shift_end_1': frame.slice(27, 29),
|
|
10145
|
-
'Shift_end_2': frame.slice(29, 31),
|
|
10146
|
-
'Shift_end_3': frame.slice(31, 33),
|
|
10147
|
-
'Shift_end_4': frame.slice(33, 35),
|
|
10148
|
-
'reset_timeout': frame.slice(35, 37),
|
|
10149
|
-
'counter_reset_mode': frame[37],
|
|
10150
|
-
'sampling_interval': frame[38],
|
|
10151
|
-
'acc_odr': frame[39],
|
|
10152
|
-
'hardware_id': frame.slice(40, 43),
|
|
10153
|
-
'report_rate': frame.slice(43, 47),
|
|
10154
|
-
'tx_life_counter': frame.slice(47, 51)
|
|
10155
|
-
}
|
|
10156
|
-
}
|
|
10157
|
-
} else{
|
|
10158
|
-
return {
|
|
10159
|
-
'firmware': frame[2],
|
|
10160
|
-
'report_rate': frame.slice(12, 16).reduce(msbLsb).toString() + "sec.",
|
|
10161
|
-
'accelerometer_threshold': (frame[16]* 32).toString() + "mg.",
|
|
10162
|
-
'debouncing_timeout': frame[17].toString() + "sec.",
|
|
10163
|
-
'accelero_state': frame[18],
|
|
10164
|
-
'digital_inputs_active_edge': frame.slice(19, 22),
|
|
10165
|
-
'counter_threshold': frame.slice(22, 26).reduce(msbLsb).toString() + "sec.",
|
|
10166
|
-
'trasnmit_on_change_status': frame[26],
|
|
10167
|
-
'machine_values': {
|
|
10168
|
-
'firmware': frame[2],
|
|
10169
|
-
'report_rate': frame.slice(12, 16),
|
|
10170
|
-
'accelerometer_threshold': frame[16],
|
|
10171
|
-
'debouncing_timeout': frame[17],
|
|
10172
|
-
'accelero_active_state': frame[18],
|
|
10173
|
-
'digital_inputs_active_edge': frame.slice(19, 22),
|
|
10174
|
-
'counter_threshold': frame.slice(22, 26),
|
|
10175
|
-
'trasnmit_on_change_status': frame[26]
|
|
10176
|
-
}
|
|
10177
|
-
}
|
|
10178
|
-
}
|
|
10179
|
-
}
|
|
10180
|
-
},
|
|
10181
|
-
'109': {
|
|
10182
|
-
name: 'Wireless Custom Solar Sensor',
|
|
10183
|
-
parse: (d) => {
|
|
10184
|
-
return {
|
|
10185
|
-
illuminance: d.slice(0, 4).reduce(msbLsb),
|
|
10186
|
-
total_solar_radiation: d.slice(4, 6).reduce(msbLsb),
|
|
10187
|
-
ultraviolet_radiation: d.slice(6, 8).reduce(msbLsb)
|
|
10188
|
-
};
|
|
10189
|
-
},
|
|
10190
|
-
'parse_fly': (frame) => {
|
|
10191
|
-
return {
|
|
10192
|
-
'firmware': frame[2],
|
|
10193
|
-
'hardware_id': frame.slice(12, 15),
|
|
10194
|
-
'sample_rate': frame.slice(15, 19).reduce(msbLsb) + " Sec.",
|
|
10195
|
-
'tx_life_counter': frame.slice(19, 23).reduce(msbLsb),
|
|
10196
|
-
'machine_values': {
|
|
10197
|
-
'firmware': frame[2],
|
|
10198
|
-
'hardware_id': frame.slice(12, 15),
|
|
10199
|
-
'sample_rate': frame.slice(15, 19).reduce(msbLsb),
|
|
10200
|
-
'tx_life_counter': frame.slice(19, 23).reduce(msbLsb)
|
|
10201
|
-
}
|
|
10202
|
-
}
|
|
10203
|
-
}
|
|
10204
|
-
},
|
|
10205
|
-
'112': {
|
|
10206
|
-
name: 'Condition Based/Predictive Maintenance Sensor v4',
|
|
10207
|
-
parse: (payload, parsed, mac) => {
|
|
10208
|
-
if(payload[7] & 2){
|
|
10209
|
-
console.log('Error found');
|
|
10210
|
-
console.log(payload[7]);
|
|
10211
|
-
parsed.data = {error: 'Error found, Sensor Probe may be unattached'};
|
|
10212
|
-
return parsed;
|
|
10213
|
-
}
|
|
10214
|
-
let msg_type = (payload[7] & 16)? 'motion' : 'regular';
|
|
10215
|
-
if (payload[8] === 1) {
|
|
10216
|
-
var deviceAddr = mac;
|
|
10217
|
-
// var firmware = payload[1];
|
|
10218
|
-
// var hour = payload[12];
|
|
10219
|
-
// var minute = payload[13];
|
|
10220
|
-
var expected_packets = msbLsb(payload[16], payload[17]);
|
|
10221
|
-
var current_packet = msbLsb(payload[18], payload[19]);
|
|
10222
|
-
var sdata_start = 20;
|
|
10223
|
-
|
|
10224
|
-
|
|
10225
|
-
if (globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1) {
|
|
10226
|
-
if (expected_packets != 1) {
|
|
10227
|
-
// if current packet is equal to last one (duplicated data). This does not apply to the last package
|
|
10228
|
-
if (globalDevices[deviceAddr].last_packet_counter == current_packet) {
|
|
10229
|
-
console.log('Duplicated message')
|
|
10230
|
-
return;
|
|
10231
|
-
}
|
|
10232
|
-
// if current packet is equal to 1 or last packet counter is higher thant current packet
|
|
10233
|
-
if (current_packet == 1 || (globalDevices[deviceAddr].last_packet_counter > current_packet)) {
|
|
10234
|
-
console.log('Recovering bad packet');
|
|
10235
|
-
// clear stream object & timeout
|
|
10236
|
-
parent.sensor_types[112].utils.clear_globalDevices_stream(deviceAddr);
|
|
10237
|
-
|
|
10238
|
-
// init new stream
|
|
10239
|
-
parent.sensor_types[112].utils.init_globalDevices_stream(deviceAddr, payload, expected_packets, parsed, msg_type);
|
|
10240
|
-
|
|
10241
|
-
globalDevices[deviceAddr].last_packet_counter = current_packet;
|
|
10242
|
-
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
10243
|
-
return;
|
|
10244
|
-
} else {
|
|
10245
|
-
globalDevices[deviceAddr].last_packet_counter = current_packet;
|
|
10246
|
-
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
10247
|
-
}
|
|
10248
|
-
} else {
|
|
10249
|
-
// clear stream object & timeout
|
|
10250
|
-
parent.sensor_types[112].utils.clear_globalDevices_stream(deviceAddr);
|
|
10251
|
-
|
|
10252
|
-
// init new stream
|
|
10253
|
-
parent.sensor_types[112].utils.init_globalDevices_stream(deviceAddr, payload, expected_packets, parsed, msg_type);
|
|
10254
|
-
|
|
10255
|
-
globalDevices[deviceAddr].last_packet_counter = current_packet;
|
|
10256
|
-
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
10257
|
-
}
|
|
10258
|
-
} else {
|
|
10259
|
-
// clear stream object & timeout
|
|
10260
|
-
parent.sensor_types[112].utils.clear_globalDevices_stream(deviceAddr);
|
|
10261
|
-
|
|
10262
|
-
// init new stream
|
|
10263
|
-
parent.sensor_types[112].utils.init_globalDevices_stream(deviceAddr, payload, expected_packets, parsed, msg_type);
|
|
10264
|
-
|
|
10265
|
-
globalDevices[deviceAddr].last_packet_counter = current_packet;
|
|
10266
|
-
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
10267
|
-
}
|
|
10268
|
-
if (current_packet == expected_packets) {
|
|
10269
|
-
// concatenate stream
|
|
10270
|
-
sensor_data = parent.sensor_types[112].utils.concat_fft_data(deviceAddr, payload[8], msg_type);
|
|
10271
|
-
// clear stream object & timeout
|
|
10272
|
-
parent.sensor_types[112].utils.clear_globalDevices_stream(deviceAddr);
|
|
10273
|
-
return sensor_data;
|
|
10274
|
-
} else {
|
|
10275
|
-
return;
|
|
10276
|
-
}
|
|
10277
|
-
}
|
|
10278
|
-
else if(payload[8] === 0 || payload[8] === 2 || payload[8] === 3){
|
|
10279
|
-
// mode byte most significant bit will indicate fft data.
|
|
10280
|
-
// console.log(d);
|
|
10281
|
-
var odr;
|
|
10282
|
-
switch(payload[9]){
|
|
10283
|
-
case 6:
|
|
10284
|
-
odr = "50Hz"
|
|
10285
|
-
break;
|
|
10286
|
-
case 7:
|
|
10287
|
-
odr = "100Hz";
|
|
10288
|
-
break;
|
|
10289
|
-
case 8:
|
|
10290
|
-
odr = "200Hz";
|
|
10291
|
-
break;
|
|
10292
|
-
case 9:
|
|
10293
|
-
odr = "400Hz";
|
|
10294
|
-
break;
|
|
10295
|
-
case 10:
|
|
10296
|
-
odr = "800Hz";
|
|
10297
|
-
break;
|
|
10298
|
-
case 11:
|
|
10299
|
-
odr = "1600Hz";
|
|
10300
|
-
break;
|
|
10301
|
-
case 12:
|
|
10302
|
-
odr = "3200Hz";
|
|
10303
|
-
break;
|
|
10304
|
-
case 13:
|
|
10305
|
-
odr = "6400Hz";
|
|
10306
|
-
break;
|
|
10307
|
-
case 14:
|
|
10308
|
-
odr = "12800Hz";
|
|
10309
|
-
break;
|
|
10310
|
-
case 15:
|
|
10311
|
-
odr = "25600Hz";
|
|
10312
|
-
break;
|
|
10313
|
-
}
|
|
10314
|
-
return {
|
|
10315
|
-
mode: payload[8],
|
|
10316
|
-
msg_type: msg_type,
|
|
10317
|
-
|
|
10318
|
-
odr: odr,
|
|
10319
|
-
temperature: signInt(payload.slice(10, 12).reduce(msbLsb), 16) / 100,
|
|
10320
|
-
ext_temperature: signInt(payload.slice(12, 16).reduce(msbLsb), 32) / 100,
|
|
10321
|
-
current: signInt(payload.slice(16, 20).reduce(msbLsb), 32) / 1000,
|
|
10322
|
-
x_rms_ACC_G: payload.slice(20, 22).reduce(msbLsb)/1000,
|
|
10323
|
-
x_max_ACC_G: payload.slice(22, 24).reduce(msbLsb)/1000,
|
|
10324
|
-
x_velocity_mm_sec: payload.slice(24, 26).reduce(msbLsb) / 100,
|
|
10325
|
-
x_displacement_mm: payload.slice(26, 28).reduce(msbLsb) / 100,
|
|
10326
|
-
x_peak_one_Hz: payload.slice(28, 30).reduce(msbLsb),
|
|
10327
|
-
x_peak_two_Hz: payload.slice(30, 32).reduce(msbLsb),
|
|
10328
|
-
x_peak_three_Hz: payload.slice(32, 34).reduce(msbLsb),
|
|
10329
|
-
|
|
10330
|
-
y_rms_ACC_G: payload.slice(34, 36).reduce(msbLsb)/1000,
|
|
10331
|
-
y_max_ACC_G: payload.slice(36, 38).reduce(msbLsb)/1000,
|
|
10332
|
-
y_velocity_mm_sec: payload.slice(38, 40).reduce(msbLsb) / 100,
|
|
10333
|
-
y_displacement_mm: payload.slice(40, 42).reduce(msbLsb) / 100,
|
|
10334
|
-
y_peak_one_Hz: payload.slice(42, 44).reduce(msbLsb),
|
|
10335
|
-
y_peak_two_Hz: payload.slice(44, 46).reduce(msbLsb),
|
|
10336
|
-
y_peak_three_Hz: payload.slice(46, 48).reduce(msbLsb),
|
|
10337
|
-
|
|
10338
|
-
z_rms_ACC_G: payload.slice(48, 50).reduce(msbLsb)/1000,
|
|
10339
|
-
z_max_ACC_G: payload.slice(50, 52).reduce(msbLsb)/1000,
|
|
10340
|
-
z_velocity_mm_sec: payload.slice(52, 54).reduce(msbLsb) / 100,
|
|
10341
|
-
z_displacement_mm: payload.slice(54, 56).reduce(msbLsb) / 100,
|
|
10342
|
-
z_peak_one_Hz: payload.slice(56, 58).reduce(msbLsb),
|
|
10343
|
-
z_peak_two_Hz: payload.slice(58, 60).reduce(msbLsb),
|
|
10344
|
-
z_peak_three_Hz: payload.slice(60, 62).reduce(msbLsb),
|
|
10345
|
-
rpm: payload.slice(62, 64).reduce(msbLsb)
|
|
10346
|
-
};
|
|
10347
|
-
}
|
|
10348
|
-
// else{
|
|
10349
|
-
// parsed.data = {'error': 'Vibration mode error'}
|
|
10350
|
-
// return parsed;
|
|
10351
|
-
// }
|
|
10352
|
-
},
|
|
10353
|
-
'utils': {
|
|
10354
|
-
'clear_globalDevices_stream': (deviceAddr) => {
|
|
10355
|
-
if(Object.hasOwn(globalDevices, deviceAddr)){
|
|
10356
|
-
if(Object.hasOwn(globalDevices[deviceAddr], 'packet_stream_timeout')){
|
|
10357
|
-
clearTimeout(globalDevices[deviceAddr].packet_stream_timeout);
|
|
10358
|
-
}
|
|
10359
|
-
delete globalDevices[deviceAddr];
|
|
10360
|
-
}
|
|
10361
|
-
},
|
|
10362
|
-
'init_globalDevices_stream'(deviceAddr, payload, expected_packets, parsed, msg_type){
|
|
10363
|
-
globalDevices[deviceAddr] = {
|
|
10364
|
-
data: {},
|
|
10365
|
-
odr: msbLsb(payload[9], payload[10]),
|
|
10366
|
-
mo: payload[8],
|
|
10367
|
-
fsr: payload[11] >> 5,
|
|
10368
|
-
hour: payload[12],
|
|
10369
|
-
minute: payload[13],
|
|
10370
|
-
temperature: msbLsb(payload[14], payload[15]) / 100,
|
|
10371
|
-
expected_packets: expected_packets
|
|
10372
|
-
}
|
|
10373
|
-
globalDevices[deviceAddr].packet_stream_timeout = setTimeout(() => {
|
|
10374
|
-
parsed.sensor_data = parent.sensor_types[112].utils.concat_fft_data(deviceAddr, payload[8], msg_type);
|
|
10375
|
-
parsed.sensor_data.error = 'Time Series Data Stream Timeout - incomplete data received';
|
|
10376
|
-
|
|
10377
|
-
parsed.sensor_name = parent.sensor_types[112].name;
|
|
10378
|
-
parsed.type = 'sensor_data';
|
|
10379
|
-
parsed.addr = deviceAddr;
|
|
10380
|
-
parsed.received = Date.now();
|
|
10381
|
-
|
|
10382
|
-
parent._emitter.emit('sensor_data', parsed);
|
|
10383
|
-
parent._emitter.emit('sensor_data-112', parsed);
|
|
10384
|
-
parent._emitter.emit('sensor_data'+'-'+deviceAddr, parsed);
|
|
10385
|
-
}, 60000);
|
|
10386
|
-
},
|
|
10387
|
-
'concat_fft_data': (deviceAddr, mode, msg_type) => {
|
|
10388
|
-
var raw_data = new Array();
|
|
10389
|
-
for(const packet in globalDevices[deviceAddr].data){
|
|
10390
|
-
raw_data = raw_data.concat(globalDevices[deviceAddr].data[packet]);
|
|
10391
|
-
}
|
|
10392
|
-
var label = 0;
|
|
10393
|
-
|
|
10394
|
-
var fft_concat = {};
|
|
10395
|
-
|
|
10396
|
-
var en_axis_data = {};
|
|
10397
|
-
en_axis_data.x_offset = 0;
|
|
10398
|
-
en_axis_data.y_offset = 2;
|
|
10399
|
-
en_axis_data.z_offset = 4;
|
|
10400
|
-
en_axis_data.increment = 6;
|
|
10401
|
-
fft_concat = {x: [], y: [], z: []};
|
|
10402
|
-
|
|
10403
|
-
var fsr_mult = .00006;
|
|
10404
|
-
var fsr_text = "";
|
|
10405
|
-
|
|
10406
|
-
switch(globalDevices[deviceAddr].fsr){
|
|
10407
|
-
case 0:
|
|
10408
|
-
fsr_mult = 0.00006;
|
|
10409
|
-
break;
|
|
10410
|
-
case 1:
|
|
10411
|
-
fsr_mult = 0.00012;
|
|
10412
|
-
break;
|
|
10413
|
-
case 2:
|
|
10414
|
-
fsr_mult = 0.00024;
|
|
10415
|
-
break;
|
|
10416
|
-
case 3:
|
|
10417
|
-
fsr_mult = 0.00049;
|
|
10418
|
-
break;
|
|
10419
|
-
}
|
|
10420
|
-
switch(globalDevices[deviceAddr].fsr){
|
|
10421
|
-
case 0:
|
|
10422
|
-
fsr_text = "2g";
|
|
10423
|
-
break;
|
|
10424
|
-
case 1:
|
|
10425
|
-
fsr_text = "4g";
|
|
10426
|
-
break;
|
|
10427
|
-
case 2:
|
|
10428
|
-
fsr_text = "8g";
|
|
10429
|
-
break;
|
|
10430
|
-
case 3:
|
|
10431
|
-
fsr_text = "16g";
|
|
10432
|
-
break;
|
|
10433
|
-
}
|
|
10434
|
-
|
|
10435
|
-
for(var i = 0; i < raw_data.length; i+=en_axis_data.increment){
|
|
10436
|
-
label++;
|
|
10437
|
-
|
|
10438
|
-
if('x_offset' in en_axis_data){
|
|
10439
|
-
fft_concat.x.push(parseFloat((signInt(((raw_data[i+en_axis_data.x_offset]<<8)+(raw_data[i+en_axis_data.x_offset+1])), 16)*fsr_mult).toFixed(3)));
|
|
10440
|
-
}
|
|
10441
|
-
if('y_offset' in en_axis_data){
|
|
10442
|
-
fft_concat.y.push(parseFloat((signInt(((raw_data[i+en_axis_data.y_offset]<<8)+(raw_data[i+en_axis_data.y_offset+1])), 16)*fsr_mult).toFixed(3)));
|
|
10443
|
-
}
|
|
10444
|
-
if('z_offset' in en_axis_data){
|
|
10445
|
-
fft_concat.z.push(parseFloat((signInt(((raw_data[i+en_axis_data.z_offset]<<8)+(raw_data[i+en_axis_data.z_offset+1])), 16)*fsr_mult).toFixed(3)));
|
|
10446
|
-
}
|
|
10447
|
-
}
|
|
10448
|
-
var fft_concat_obj = {
|
|
10449
|
-
mode: mode,
|
|
10450
|
-
msg_type: msg_type,
|
|
10451
|
-
time_id: [
|
|
10452
|
-
String(globalDevices[deviceAddr].hour).padStart(2, '0'),
|
|
10453
|
-
String(globalDevices[deviceAddr].minute).padStart(2, '0'),
|
|
10454
|
-
].join(':'),
|
|
10455
|
-
mac_address: deviceAddr,
|
|
10456
|
-
fsr: fsr_text,
|
|
10457
|
-
odr: globalDevices[deviceAddr].odr,
|
|
10458
|
-
temperature: globalDevices[deviceAddr].temperature,
|
|
10459
|
-
total_samples: label,
|
|
10460
|
-
fft_confidence : ((Object.keys(globalDevices[deviceAddr].data).length / globalDevices[deviceAddr].expected_packets) * 100).toFixed(2) + '%',
|
|
10461
|
-
data: fft_concat
|
|
10462
|
-
};
|
|
10463
|
-
return fft_concat_obj;
|
|
10464
|
-
}
|
|
10465
|
-
},
|
|
10466
|
-
'parse_fly': (frame) => {
|
|
10467
|
-
let frame_data = {};
|
|
10468
|
-
switch(frame[16]){
|
|
10469
|
-
case 0:
|
|
10470
|
-
frame_data.mode = "Processed";
|
|
10471
|
-
break;
|
|
10472
|
-
case 1:
|
|
10473
|
-
frame_data.mode = "Raw";
|
|
10474
|
-
break;
|
|
10475
|
-
case 2:
|
|
10476
|
-
frame_data.mode = "Processed + Raw on demand";
|
|
10477
|
-
break;
|
|
10478
|
-
case 3:
|
|
10479
|
-
frame_data.mode = "Smart";
|
|
10480
|
-
break;
|
|
10481
|
-
}
|
|
10482
|
-
switch(frame[17]){
|
|
10483
|
-
case 6:
|
|
10484
|
-
frame_data.odr_1 = 50;
|
|
10485
|
-
break;
|
|
10486
|
-
case 7:
|
|
10487
|
-
frame_data.odr_1 = 100;
|
|
10488
|
-
break;
|
|
10489
|
-
case 8:
|
|
10490
|
-
frame_data.odr_1 = 200;
|
|
10491
|
-
break;
|
|
10492
|
-
case 9:
|
|
10493
|
-
frame_data.odr_1 = 400;
|
|
10494
|
-
break;
|
|
10495
|
-
case 10:
|
|
10496
|
-
frame_data.odr_1 = 800;
|
|
10497
|
-
break;
|
|
10498
|
-
case 11:
|
|
10499
|
-
frame_data.odr_1 = 1600;
|
|
10500
|
-
break;
|
|
10501
|
-
case 12:
|
|
10502
|
-
frame_data.odr_1 = 3200;
|
|
10503
|
-
break;
|
|
10504
|
-
case 13:
|
|
10505
|
-
frame_data.odr_1 = 6400;
|
|
10506
|
-
break;
|
|
10507
|
-
case 14:
|
|
10508
|
-
frame_data.odr_1 = 12800;
|
|
10509
|
-
break;
|
|
10510
|
-
case 15:
|
|
10511
|
-
frame_data.odr_1 = 25600;
|
|
10512
|
-
break;
|
|
10513
|
-
}
|
|
10514
|
-
frame_data.sampling_duration_1 = frame[18]*50 + "ms";
|
|
10515
|
-
switch(frame[19]){
|
|
10516
|
-
case 0:
|
|
10517
|
-
frame_data.filter_status = "Disabled";
|
|
10518
|
-
break;
|
|
10519
|
-
case 1:
|
|
10520
|
-
frame_data.filter_status = "Enabled";
|
|
10521
|
-
break;
|
|
10522
|
-
}
|
|
10523
|
-
switch(frame[20]){
|
|
10524
|
-
case 0:
|
|
10525
|
-
frame_data.lpf_coeff_1 = 4;
|
|
10526
|
-
break;
|
|
10527
|
-
case 1:
|
|
10528
|
-
frame_data.lpf_coeff_1 = 8;
|
|
10529
|
-
break;
|
|
10530
|
-
case 2:
|
|
10531
|
-
frame_data.lpf_coeff_1 = 16;
|
|
10532
|
-
break;
|
|
10533
|
-
case 2:
|
|
10534
|
-
frame_data.lpf_coeff_1 = 32;
|
|
10535
|
-
break;
|
|
10536
|
-
case 4:
|
|
10537
|
-
frame_data.lpf_coeff_1 = 64;
|
|
10538
|
-
break;
|
|
10539
|
-
case 5:
|
|
10540
|
-
frame_data.lpf_coeff_1 = 128;
|
|
10541
|
-
break;
|
|
10542
|
-
case 6:
|
|
10543
|
-
frame_data.lpf_coeff_1 = 256;
|
|
10544
|
-
break;
|
|
10545
|
-
case 7:
|
|
10546
|
-
frame_data.lpf_coeff_1 = 512;
|
|
10547
|
-
break;
|
|
10548
|
-
case 8:
|
|
10549
|
-
frame_data.lpf_coeff_1 = 1024;
|
|
10550
|
-
break;
|
|
10551
|
-
case 9:
|
|
10552
|
-
frame_data.lpf_coeff_1 = 2048;
|
|
10553
|
-
break;
|
|
10554
|
-
}
|
|
10555
|
-
frame_data.lpf_freq_1 = frame_data.odr_1 / frame_data.lpf_coeff_1;
|
|
10556
|
-
switch(frame[21]){
|
|
10557
|
-
case 0:
|
|
10558
|
-
frame_data.hpf_coeff_1 = 4;
|
|
10559
|
-
break;
|
|
10560
|
-
case 1:
|
|
10561
|
-
frame_data.hpf_coeff_1 = 8;
|
|
10562
|
-
break;
|
|
10563
|
-
case 2:
|
|
10564
|
-
frame_data.hpf_coeff_1 = 16;
|
|
10565
|
-
break;
|
|
10566
|
-
case 2:
|
|
10567
|
-
frame_data.hpf_coeff_1 = 32;
|
|
10568
|
-
break;
|
|
10569
|
-
case 4:
|
|
10570
|
-
frame_data.hpf_coeff_1 = 64;
|
|
10571
|
-
break;
|
|
10572
|
-
case 5:
|
|
10573
|
-
frame_data.hpf_coeff_1 = 128;
|
|
10574
|
-
break;
|
|
10575
|
-
case 6:
|
|
10576
|
-
frame_data.hpf_coeff_1 = 256;
|
|
10577
|
-
break;
|
|
10578
|
-
case 7:
|
|
10579
|
-
frame_data.hpf_coeff_1 = 512;
|
|
10580
|
-
break;
|
|
10581
|
-
case 8:
|
|
10582
|
-
frame_data.hpf_coeff_1 = 1024;
|
|
10583
|
-
break;
|
|
10584
|
-
case 9:
|
|
10585
|
-
frame_data.hpf_coeff_1 = 2048;
|
|
10586
|
-
break;
|
|
10587
|
-
}
|
|
10588
|
-
frame_data.hpf_freq_1 = frame_data.odr_1 / frame_data.hpf_coeff_1;
|
|
10589
|
-
switch(frame[22]){
|
|
10590
|
-
case 0:
|
|
10591
|
-
frame_data.sampling_interval = "5 Minutes";
|
|
10592
|
-
frame_data.sampling_interval_number = 5;
|
|
10593
|
-
break;
|
|
10594
|
-
case 1:
|
|
10595
|
-
frame_data.sampling_interval = "10 Minutes";
|
|
10596
|
-
frame_data.sampling_interval_number = 10;
|
|
10597
|
-
break;
|
|
10598
|
-
case 2:
|
|
10599
|
-
frame_data.sampling_interval = "15 Minutes";
|
|
10600
|
-
frame_data.sampling_interval_number = 15;
|
|
10601
|
-
break;
|
|
10602
|
-
case 2:
|
|
10603
|
-
frame_data.sampling_interval = "20 Minutes";
|
|
10604
|
-
frame_data.sampling_interval_number = 20;
|
|
10605
|
-
break;
|
|
10606
|
-
case 4:
|
|
10607
|
-
frame_data.sampling_interval = "30 Minutes";
|
|
10608
|
-
frame_data.sampling_interval_number = 30;
|
|
10609
|
-
break;
|
|
10610
|
-
case 5:
|
|
10611
|
-
frame_data.sampling_interval = "60 Minutes";
|
|
10612
|
-
frame_data.sampling_interval_number = 60;
|
|
10613
|
-
break;
|
|
10614
|
-
case 6:
|
|
10615
|
-
frame_data.sampling_interval = "120 Minutes";
|
|
10616
|
-
frame_data.sampling_interval_number = 120;
|
|
10617
|
-
break;
|
|
10618
|
-
case 7:
|
|
10619
|
-
frame_data.sampling_interval = "180 Minutes";
|
|
10620
|
-
frame_data.sampling_interval_number = 180;
|
|
10621
|
-
break;
|
|
10622
|
-
case 8:
|
|
10623
|
-
frame_data.sampling_interval = "1 Minute";
|
|
10624
|
-
frame_data.sampling_interval_number = 1;
|
|
10625
|
-
break;
|
|
10626
|
-
}
|
|
10627
|
-
frame_data.on_request_timeout = frame[23] + " Seconds";
|
|
10628
|
-
frame_data.deadband = frame[24] + "mg";
|
|
10629
|
-
|
|
10630
|
-
switch(frame[25]){
|
|
10631
|
-
case 0:
|
|
10632
|
-
frame_data.payload_length = "50 Bytes";
|
|
10633
|
-
break;
|
|
10634
|
-
case 1:
|
|
10635
|
-
frame_data.payload_length = "100 Bytes";
|
|
10636
|
-
break;
|
|
10637
|
-
case 2:
|
|
10638
|
-
frame_data.payload_length = "150 Bytes";
|
|
10639
|
-
break;
|
|
10640
|
-
case 3:
|
|
10641
|
-
frame_data.payload_length = "180 Bytes";
|
|
10642
|
-
break;
|
|
10643
|
-
}
|
|
10644
|
-
switch(frame[26]){
|
|
10645
|
-
case 0:
|
|
10646
|
-
frame_data.fsr_text = "2g";
|
|
10647
|
-
break;
|
|
10648
|
-
case 1:
|
|
10649
|
-
frame_data.fsr_text = "4g";
|
|
10650
|
-
break;
|
|
10651
|
-
case 2:
|
|
10652
|
-
frame_data.fsr_text = "8g";
|
|
10653
|
-
break;
|
|
10654
|
-
case 3:
|
|
10655
|
-
frame_data.fsr_text = "16g";
|
|
10656
|
-
break;
|
|
10657
|
-
}
|
|
10658
|
-
frame_data.rpm_status = frame[27]? 'Enabled': 'Disabled';
|
|
10659
|
-
frame_data.auto_raw_interval = frame[32] * frame_data.sampling_interval_number || 'disabled';
|
|
10660
|
-
frame_data.auto_raw_interval = typeof frame_data.auto_raw_interval === 'number' ? frame_data.auto_raw_interval+'min' : frame_data.auto_raw_interval;
|
|
10661
|
-
frame_data.smart_mode_threshold = frame[34] * 50;
|
|
10662
|
-
if(frame[2] > 5){ // for Firmware v6 and above
|
|
10663
|
-
frame_data.motion_to_delay = frame[41] * 50;
|
|
8648
|
+
case 2:
|
|
8649
|
+
reset_mode = "Timeout";
|
|
8650
|
+
break;
|
|
8651
|
+
}
|
|
8652
|
+
let acc_odr = "10Hz";
|
|
8653
|
+
switch(frame[39]){
|
|
8654
|
+
case 0:
|
|
8655
|
+
acc_odr = "10Hz";
|
|
8656
|
+
break;
|
|
8657
|
+
case 1:
|
|
8658
|
+
acc_odr = "20Hz";
|
|
8659
|
+
break;
|
|
8660
|
+
case 2:
|
|
8661
|
+
acc_odr = "50Hz";
|
|
8662
|
+
break;
|
|
8663
|
+
case 3:
|
|
8664
|
+
acc_odr = "100Hz";
|
|
8665
|
+
break;
|
|
8666
|
+
case 4:
|
|
8667
|
+
acc_odr = "200Hz";
|
|
8668
|
+
break;
|
|
8669
|
+
case 5:
|
|
8670
|
+
acc_odr = "400Hz";
|
|
8671
|
+
break;
|
|
8672
|
+
}
|
|
8673
|
+
let rtc_sampling_interval = "5 seconds";
|
|
8674
|
+
switch(frame[38]){
|
|
8675
|
+
case 0:
|
|
8676
|
+
rtc_sampling_interval = "1 minute";
|
|
8677
|
+
break;
|
|
8678
|
+
case 1:
|
|
8679
|
+
rtc_sampling_interval = "5 minutes";
|
|
8680
|
+
break;
|
|
8681
|
+
case 2:
|
|
8682
|
+
rtc_sampling_interval = "15 minutes";
|
|
8683
|
+
break;
|
|
8684
|
+
case 3:
|
|
8685
|
+
rtc_sampling_interval = "30 minutes";
|
|
8686
|
+
break;
|
|
8687
|
+
case 4:
|
|
8688
|
+
rtc_sampling_interval = "1 hour";
|
|
8689
|
+
break;
|
|
8690
|
+
case 5:
|
|
8691
|
+
rtc_sampling_interval = "2 hours";
|
|
8692
|
+
break;
|
|
8693
|
+
case 6:
|
|
8694
|
+
rtc_sampling_interval = "3 hours";
|
|
8695
|
+
break;
|
|
8696
|
+
case 7:
|
|
8697
|
+
rtc_sampling_interval = "6 hours";
|
|
8698
|
+
break;
|
|
8699
|
+
case 8:
|
|
8700
|
+
rtc_sampling_interval = "12 hours";
|
|
8701
|
+
break;
|
|
8702
|
+
case 9:
|
|
8703
|
+
rtc_sampling_interval = "5 seconds";
|
|
8704
|
+
break;
|
|
8705
|
+
case 10:
|
|
8706
|
+
rtc_sampling_interval = "10 seconds";
|
|
8707
|
+
break;
|
|
8708
|
+
case 11:
|
|
8709
|
+
rtc_sampling_interval = "15 seconds";
|
|
8710
|
+
break;
|
|
8711
|
+
case 12:
|
|
8712
|
+
rtc_sampling_interval = "30 seconds";
|
|
8713
|
+
break;
|
|
8714
|
+
}
|
|
10664
8715
|
return {
|
|
10665
8716
|
'firmware': frame[2],
|
|
10666
|
-
'
|
|
10667
|
-
'
|
|
10668
|
-
'
|
|
10669
|
-
'
|
|
10670
|
-
'
|
|
10671
|
-
'
|
|
10672
|
-
'
|
|
10673
|
-
'
|
|
10674
|
-
'
|
|
10675
|
-
|
|
10676
|
-
|
|
10677
|
-
'
|
|
10678
|
-
'
|
|
10679
|
-
|
|
10680
|
-
|
|
10681
|
-
'
|
|
10682
|
-
'
|
|
10683
|
-
|
|
10684
|
-
|
|
10685
|
-
|
|
10686
|
-
'
|
|
10687
|
-
|
|
10688
|
-
|
|
10689
|
-
'
|
|
10690
|
-
'
|
|
10691
|
-
'
|
|
8717
|
+
'accelerometer_threshold': (frame[16]* 32) + "mg",
|
|
8718
|
+
'debouncing_timeout': frame[17] + "sec",
|
|
8719
|
+
'accelero_state': frame[18]? "Enabled": "Disabled",
|
|
8720
|
+
'input_1_active_edge': frame[19]? "Rising": "Falling",
|
|
8721
|
+
'input_2_active_edge': frame[20]? "Rising": "Falling",
|
|
8722
|
+
'input_3_active_edge': frame[21]? "Rising": "Falling",
|
|
8723
|
+
'counter_threshold': frame.slice(22, 26).reduce(msbLsb) + "sec",
|
|
8724
|
+
'trasnmit_on_change_status': frame[26]? "Enabled": "Disabled",
|
|
8725
|
+
'Shift_end_1': [
|
|
8726
|
+
String(frame[27]).padStart(2, '0'),
|
|
8727
|
+
String(frame[28]).padStart(2, '0')
|
|
8728
|
+
].join(':'),
|
|
8729
|
+
'Shift_end_2': [
|
|
8730
|
+
String(frame[29]).padStart(2, '0'),
|
|
8731
|
+
String(frame[30]).padStart(2, '0')
|
|
8732
|
+
].join(':'),
|
|
8733
|
+
'Shift_end_3': [
|
|
8734
|
+
String(frame[31]).padStart(2, '0'),
|
|
8735
|
+
String(frame[32]).padStart(2, '0')
|
|
8736
|
+
].join(':'),
|
|
8737
|
+
'Shift_end_4': [
|
|
8738
|
+
String(frame[33]).padStart(2, '0'),
|
|
8739
|
+
String(frame[34]).padStart(2, '0')
|
|
8740
|
+
].join(':'),
|
|
8741
|
+
'reset_timeout': frame.slice(35, 37).reduce(msbLsb) + "min",
|
|
8742
|
+
'counter_reset_mode': reset_mode,
|
|
8743
|
+
'sampling_interval': rtc_sampling_interval,
|
|
8744
|
+
'acc_odr': acc_odr,
|
|
8745
|
+
'hardware_id': frame.slice(40, 43),
|
|
8746
|
+
'report_rate': frame.slice(43, 47).reduce(msbLsb) + "sec",
|
|
8747
|
+
'tx_life_counter': frame.slice(47, 51).reduce(msbLsb),
|
|
10692
8748
|
'machine_values': {
|
|
10693
8749
|
'firmware': frame[2],
|
|
10694
|
-
'
|
|
10695
|
-
'
|
|
10696
|
-
'
|
|
10697
|
-
'
|
|
10698
|
-
'
|
|
10699
|
-
'
|
|
10700
|
-
'
|
|
10701
|
-
'
|
|
10702
|
-
'
|
|
10703
|
-
'
|
|
10704
|
-
'
|
|
10705
|
-
'
|
|
10706
|
-
'
|
|
10707
|
-
'
|
|
10708
|
-
'
|
|
10709
|
-
'
|
|
10710
|
-
'
|
|
10711
|
-
'
|
|
10712
|
-
'
|
|
10713
|
-
'motion_to_sampling_delay': frame[41],
|
|
10714
|
-
'max_num_of_motion_tx_per_interval': frame[42],
|
|
10715
|
-
'hardware_id': frame.slice(43, 46),
|
|
10716
|
-
'reserved': frame.slice(46, 50),
|
|
10717
|
-
'tx_lifetime_counter': frame.slice(50, 54)
|
|
8750
|
+
'accelerometer_threshold': frame[16],
|
|
8751
|
+
'debouncing_timeout': frame[17],
|
|
8752
|
+
'accelero_state': frame[18],
|
|
8753
|
+
'input_1_active_edge': frame[19],
|
|
8754
|
+
'input_2_active_edge': frame[20],
|
|
8755
|
+
'input_3_active_edge': frame[21],
|
|
8756
|
+
'counter_threshold': frame.slice(22, 26),
|
|
8757
|
+
'trasnmit_on_change_status': frame[26],
|
|
8758
|
+
'Shift_end_1': frame.slice(27, 29),
|
|
8759
|
+
'Shift_end_2': frame.slice(29, 31),
|
|
8760
|
+
'Shift_end_3': frame.slice(31, 33),
|
|
8761
|
+
'Shift_end_4': frame.slice(33, 35),
|
|
8762
|
+
'reset_timeout': frame.slice(35, 37),
|
|
8763
|
+
'counter_reset_mode': frame[37],
|
|
8764
|
+
'sampling_interval': frame[38],
|
|
8765
|
+
'acc_odr': frame[39],
|
|
8766
|
+
'hardware_id': frame.slice(40, 43),
|
|
8767
|
+
'report_rate': frame.slice(43, 47),
|
|
8768
|
+
'tx_life_counter': frame.slice(47, 51)
|
|
10718
8769
|
}
|
|
10719
8770
|
}
|
|
10720
|
-
} else
|
|
8771
|
+
} else{
|
|
10721
8772
|
return {
|
|
10722
8773
|
'firmware': frame[2],
|
|
10723
|
-
'
|
|
10724
|
-
'
|
|
10725
|
-
'
|
|
10726
|
-
'
|
|
10727
|
-
'
|
|
10728
|
-
'
|
|
10729
|
-
'
|
|
10730
|
-
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
10731
|
-
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
10732
|
-
'sampling_interval': frame_data.sampling_interval,
|
|
10733
|
-
'on_request_timeout': frame_data.on_request_timeout,
|
|
10734
|
-
'deadband': frame_data.deadband,
|
|
10735
|
-
'payload_length': frame_data.payload_length,
|
|
10736
|
-
'fsr': frame_data.fsr_text,
|
|
10737
|
-
'rpm_compute_status': frame_data.rpm_status,
|
|
10738
|
-
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
10739
|
-
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
10740
|
-
'smart_mode_skip_count': frame[33],
|
|
10741
|
-
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
10742
|
-
'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
|
|
10743
|
-
'max_tx_raw_samples': frame.slice(39, 41).reduce(msbLsb),
|
|
10744
|
-
'hardware_id': frame.slice(41, 44),
|
|
10745
|
-
'reserved': frame.slice(44, 48),
|
|
10746
|
-
'tx_lifetime_counter': frame.slice(48, 52).reduce(msbLsb),
|
|
8774
|
+
'report_rate': frame.slice(12, 16).reduce(msbLsb).toString() + "sec.",
|
|
8775
|
+
'accelerometer_threshold': (frame[16]* 32).toString() + "mg.",
|
|
8776
|
+
'debouncing_timeout': frame[17].toString() + "sec.",
|
|
8777
|
+
'accelero_state': frame[18],
|
|
8778
|
+
'digital_inputs_active_edge': frame.slice(19, 22),
|
|
8779
|
+
'counter_threshold': frame.slice(22, 26).reduce(msbLsb).toString() + "sec.",
|
|
8780
|
+
'trasnmit_on_change_status': frame[26],
|
|
10747
8781
|
'machine_values': {
|
|
10748
8782
|
'firmware': frame[2],
|
|
10749
|
-
'
|
|
10750
|
-
'
|
|
10751
|
-
'
|
|
10752
|
-
'
|
|
10753
|
-
'
|
|
10754
|
-
'
|
|
10755
|
-
'
|
|
10756
|
-
'sampling_interval': frame[22],
|
|
10757
|
-
'on_request_timeout': frame[23],
|
|
10758
|
-
'deadband': frame[24],
|
|
10759
|
-
'payload_length': frame[25],
|
|
10760
|
-
'fsr': frame[26],
|
|
10761
|
-
'rpm_compute_status': frame[27],
|
|
10762
|
-
'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
|
|
10763
|
-
'auto_raw_interval': frame[32],
|
|
10764
|
-
'smart_mode_skip_count': frame[33],
|
|
10765
|
-
'smart_mode_acc_threshold':frame[34],
|
|
10766
|
-
'uptime_counter': frame.slice(35, 39),
|
|
10767
|
-
'max_tx_raw_samples': frame.slice(39, 41),
|
|
10768
|
-
'hardware_id': frame.slice(41, 44),
|
|
10769
|
-
'reserved': frame.slice(44, 48),
|
|
10770
|
-
'tx_lifetime_counter': frame.slice(48, 52)
|
|
8783
|
+
'report_rate': frame.slice(12, 16),
|
|
8784
|
+
'accelerometer_threshold': frame[16],
|
|
8785
|
+
'debouncing_timeout': frame[17],
|
|
8786
|
+
'accelero_active_state': frame[18],
|
|
8787
|
+
'digital_inputs_active_edge': frame.slice(19, 22),
|
|
8788
|
+
'counter_threshold': frame.slice(22, 26),
|
|
8789
|
+
'trasnmit_on_change_status': frame[26]
|
|
10771
8790
|
}
|
|
10772
8791
|
}
|
|
10773
|
-
}
|
|
10774
|
-
|
|
8792
|
+
}
|
|
8793
|
+
}
|
|
8794
|
+
},
|
|
8795
|
+
'109': {
|
|
8796
|
+
name: 'Wireless Custom Solar Sensor',
|
|
8797
|
+
parse: (d) => {
|
|
8798
|
+
return {
|
|
8799
|
+
illuminance: d.slice(0, 4).reduce(msbLsb),
|
|
8800
|
+
total_solar_radiation: d.slice(4, 6).reduce(msbLsb),
|
|
8801
|
+
ultraviolet_radiation: d.slice(6, 8).reduce(msbLsb)
|
|
8802
|
+
};
|
|
8803
|
+
},
|
|
8804
|
+
'parse_fly': (frame) => {
|
|
8805
|
+
return {
|
|
8806
|
+
'firmware': frame[2],
|
|
8807
|
+
'hardware_id': frame.slice(12, 15),
|
|
8808
|
+
'sample_rate': frame.slice(15, 19).reduce(msbLsb) + " Sec.",
|
|
8809
|
+
'tx_life_counter': frame.slice(19, 23).reduce(msbLsb),
|
|
8810
|
+
'machine_values': {
|
|
10775
8811
|
'firmware': frame[2],
|
|
10776
|
-
'
|
|
10777
|
-
'
|
|
10778
|
-
'
|
|
10779
|
-
'sampling_duration': frame_data.sampling_duration_1,
|
|
10780
|
-
'filter_status': frame_data.filter_status,
|
|
10781
|
-
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
10782
|
-
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
10783
|
-
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
10784
|
-
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
10785
|
-
'sampling_interval': frame_data.sampling_interval,
|
|
10786
|
-
'on_request_timeout': frame_data.on_request_timeout,
|
|
10787
|
-
'deadband': frame_data.deadband,
|
|
10788
|
-
'payload_length': frame_data.payload_length,
|
|
10789
|
-
'fsr': frame_data.fsr_text,
|
|
10790
|
-
'rpm_compute_status': frame_data.rpm_status,
|
|
10791
|
-
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
10792
|
-
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
10793
|
-
'smart_mode_skip_count': frame[33],
|
|
10794
|
-
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
10795
|
-
'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
|
|
10796
|
-
'hardware_id': frame.slice(39, 42),
|
|
10797
|
-
'reserved': frame.slice(42, 46),
|
|
10798
|
-
'tx_lifetime_counter': frame.slice(46, 50).reduce(msbLsb),
|
|
10799
|
-
'machine_values': {
|
|
10800
|
-
'firmware': frame[2],
|
|
10801
|
-
'destination_address': toMac(frame.slice(12, 16), false),
|
|
10802
|
-
'mode': frame[16],
|
|
10803
|
-
'odr': frame[17],
|
|
10804
|
-
'sampling_duration': frame[18],
|
|
10805
|
-
'filter_status': frame[19],
|
|
10806
|
-
'lpf_coeff': frame[20],
|
|
10807
|
-
'hpf_coeff': frame[21],
|
|
10808
|
-
'sampling_interval': frame[22],
|
|
10809
|
-
'on_request_timeout': frame[23],
|
|
10810
|
-
'deadband': frame[24],
|
|
10811
|
-
'payload_length': frame[25],
|
|
10812
|
-
'fsr': frame[26],
|
|
10813
|
-
'rpm_compute_status': frame[27],
|
|
10814
|
-
'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
|
|
10815
|
-
'auto_raw_interval': frame[32],
|
|
10816
|
-
'smart_mode_skip_count': frame[33],
|
|
10817
|
-
'smart_mode_acc_threshold':frame[34],
|
|
10818
|
-
'uptime_counter': frame.slice(35, 39),
|
|
10819
|
-
'hardware_id': frame.slice(39, 42),
|
|
10820
|
-
'reserved': frame.slice(42, 46),
|
|
10821
|
-
'tx_lifetime_counter': frame.slice(46, 50)
|
|
10822
|
-
}
|
|
8812
|
+
'hardware_id': frame.slice(12, 15),
|
|
8813
|
+
'sample_rate': frame.slice(15, 19).reduce(msbLsb),
|
|
8814
|
+
'tx_life_counter': frame.slice(19, 23).reduce(msbLsb)
|
|
10823
8815
|
}
|
|
10824
8816
|
}
|
|
10825
8817
|
}
|
|
@@ -11072,21 +9064,21 @@ function sensor_types(parent){
|
|
|
11072
9064
|
'118': {
|
|
11073
9065
|
name: 'Dual Pressure and Temperature Sensor',
|
|
11074
9066
|
parse: (payload, parsed, mac) => {
|
|
11075
|
-
|
|
9067
|
+
let res = {};
|
|
11076
9068
|
|
|
11077
9069
|
res.pressure_s1 = signInt(payload.slice(8, 12).reduce(msbLsb),32)/100;
|
|
11078
9070
|
res.temperature_s1 = signInt(payload.slice(12, 14).reduce(msbLsb),16)/100;
|
|
11079
|
-
|
|
11080
|
-
|
|
9071
|
+
if((payload[7] & 2)){
|
|
9072
|
+
res.error_s1 = 'Error: Sensor Probe 1 communication error';
|
|
11081
9073
|
}
|
|
11082
9074
|
|
|
11083
9075
|
res.pressure_s2 = signInt(payload.slice(14, 18).reduce(msbLsb),32)/100;
|
|
11084
9076
|
res.temperature_s2 = signInt(payload.slice(18, 20).reduce(msbLsb),16)/100;
|
|
11085
|
-
|
|
9077
|
+
if((payload[7] & 4)){
|
|
11086
9078
|
res.error_s2 = 'Error: Sensor Probe 2 communication error';
|
|
11087
9079
|
}
|
|
11088
|
-
|
|
11089
|
-
|
|
9080
|
+
return res;
|
|
9081
|
+
},
|
|
11090
9082
|
'parse_fly': (frame) => {
|
|
11091
9083
|
let psi_1;
|
|
11092
9084
|
let psi_2;
|
|
@@ -11472,119 +9464,14 @@ function sensor_types(parent){
|
|
|
11472
9464
|
};
|
|
11473
9465
|
},
|
|
11474
9466
|
'parse_fly': (frame) => {
|
|
11475
|
-
return {
|
|
11476
|
-
'hardware_id': frame.slice(12, 15),
|
|
11477
|
-
'sample_rate': frame.slice(15, 19).reduce(msbLsb) + " Sec.",
|
|
11478
|
-
'tx_life_counter': frame.slice(19, 23).reduce(msbLsb),
|
|
11479
|
-
'machine_values': {
|
|
11480
|
-
'hardware_id': frame.slice(12, 15),
|
|
11481
|
-
'sample_rate': frame.slice(15, 19),
|
|
11482
|
-
'tx_life_counter': frame.slice(19, 23)
|
|
11483
|
-
}
|
|
11484
|
-
}
|
|
11485
|
-
}
|
|
11486
|
-
},
|
|
11487
|
-
'122': {
|
|
11488
|
-
name: 'Wireless 4-20mA Current Splitter',
|
|
11489
|
-
parse: (d) => {
|
|
11490
|
-
// This parser may be outdated if a customer has an issue check with Engineering
|
|
11491
|
-
var adc1 = signInt(d.slice(0, 2).reduce(msbLsb));
|
|
11492
|
-
var adc2 = signInt(d.slice(2, 4).reduce(msbLsb));
|
|
11493
|
-
return {
|
|
11494
|
-
adc1: adc1,
|
|
11495
|
-
adc2: adc2,
|
|
11496
|
-
mA1: signInt(d.slice(4, 6).reduce(msbLsb))/100,
|
|
11497
|
-
mA2: signInt(d.slice(6, 8).reduce(msbLsb))/100
|
|
11498
|
-
};
|
|
11499
|
-
},
|
|
11500
|
-
'parse_fly': (frame) => {
|
|
11501
|
-
let frame_data = {};
|
|
11502
|
-
switch(frame[16]){
|
|
11503
|
-
case 0:
|
|
11504
|
-
frame_data.fsr = "+-6.114 V";
|
|
11505
|
-
break;
|
|
11506
|
-
case 1:
|
|
11507
|
-
frame_data.fsr = "+-4.096 V";
|
|
11508
|
-
break;
|
|
11509
|
-
case 2:
|
|
11510
|
-
frame_data.fsr = "+-2.048 V";
|
|
11511
|
-
break;
|
|
11512
|
-
case 3:
|
|
11513
|
-
frame_data.fsr = "+-1.024 V";
|
|
11514
|
-
break;
|
|
11515
|
-
case 4:
|
|
11516
|
-
frame_data.fsr = "+-0.512 V";
|
|
11517
|
-
break;
|
|
11518
|
-
case 5:
|
|
11519
|
-
frame_data.fsr = "+-0.256 V";
|
|
11520
|
-
break;
|
|
11521
|
-
}
|
|
11522
|
-
if(frame[2]>13){ // firmware 14 and above
|
|
11523
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
11524
|
-
if(!auto_check_interval){
|
|
11525
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
11526
|
-
}else{
|
|
11527
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
11528
|
-
}
|
|
11529
|
-
return {
|
|
11530
|
-
'firmware': frame[2],
|
|
11531
|
-
'fsr': frame_data.fsr,
|
|
11532
|
-
'boot_up_time': frame[17] + " sec",
|
|
11533
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
11534
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
11535
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
11536
|
-
'always_on': frame_data[24] ? 'Enabled' : 'Disabled',
|
|
11537
|
-
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
11538
|
-
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
11539
|
-
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
11540
|
-
'hardware_id': frame.slice(37, 40),
|
|
11541
|
-
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
11542
|
-
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
11543
|
-
'machine_values': {
|
|
11544
|
-
'firmware': frame[2],
|
|
11545
|
-
'fsr': frame[16],
|
|
11546
|
-
'boot_up_time': frame[17],
|
|
11547
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
11548
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
11549
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
11550
|
-
'always_on': frame[24],
|
|
11551
|
-
'calibration_one': frame.slice(25, 29),
|
|
11552
|
-
'calibration_two':frame.slice(29, 33),
|
|
11553
|
-
'calibration_three':frame.slice(33, 37),
|
|
11554
|
-
'hardware_id': frame.slice(37, 40),
|
|
11555
|
-
'report_rate': frame.slice(40, 44),
|
|
11556
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
11557
|
-
}
|
|
11558
|
-
}
|
|
11559
|
-
}else if(frame[2]>12){
|
|
11560
|
-
return {
|
|
11561
|
-
'firmware': frame[2],
|
|
11562
|
-
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
11563
|
-
'fsr':frame_data.fsr,
|
|
11564
|
-
'boot_up_time': frame[17],
|
|
11565
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
11566
|
-
'machine_values': {
|
|
11567
|
-
'firmware': frame[2],
|
|
11568
|
-
'report_rate': frame.slice(12, 16),
|
|
11569
|
-
'fsr':frame[16],
|
|
11570
|
-
'boot_up_time': frame[17],
|
|
11571
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
11572
|
-
'frame': frame
|
|
11573
|
-
}
|
|
11574
|
-
}
|
|
11575
|
-
}else{
|
|
11576
|
-
return {
|
|
11577
|
-
'firmware': frame[2],
|
|
11578
|
-
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
11579
|
-
'fsr':frame_data.fsr,
|
|
11580
|
-
'boot_up_time': frame[17],
|
|
11581
|
-
'machine_values': {
|
|
11582
|
-
'firmware': frame[2],
|
|
11583
|
-
'report_rate': frame.slice(12, 16),
|
|
11584
|
-
'fsr':frame[16],
|
|
11585
|
-
'boot_up_time': frame[17],
|
|
11586
|
-
'frame': frame
|
|
11587
|
-
}
|
|
9467
|
+
return {
|
|
9468
|
+
'hardware_id': frame.slice(12, 15),
|
|
9469
|
+
'sample_rate': frame.slice(15, 19).reduce(msbLsb) + " Sec.",
|
|
9470
|
+
'tx_life_counter': frame.slice(19, 23).reduce(msbLsb),
|
|
9471
|
+
'machine_values': {
|
|
9472
|
+
'hardware_id': frame.slice(12, 15),
|
|
9473
|
+
'sample_rate': frame.slice(15, 19),
|
|
9474
|
+
'tx_life_counter': frame.slice(19, 23)
|
|
11588
9475
|
}
|
|
11589
9476
|
}
|
|
11590
9477
|
}
|
|
@@ -13660,72 +11547,6 @@ function sensor_types(parent){
|
|
|
13660
11547
|
};
|
|
13661
11548
|
}
|
|
13662
11549
|
},
|
|
13663
|
-
'536': {
|
|
13664
|
-
name: 'Wireless Oxygen Flow Meter',
|
|
13665
|
-
parse: (payload, parsed) => {
|
|
13666
|
-
return {
|
|
13667
|
-
error_status: payload[0],
|
|
13668
|
-
s1_oxygen_temp: payload.slice(1, 3).reduce(msbLsb)/100,
|
|
13669
|
-
s2_oxygen_temp: payload.slice(3, 5).reduce(msbLsb)/100,
|
|
13670
|
-
s3_oxygen_temp: payload.slice(5, 7).reduce(msbLsb)/100,
|
|
13671
|
-
s4_oxygen_temp: payload.slice(7, 9).reduce(msbLsb)/100,
|
|
13672
|
-
s1_saturation_percent: payload.slice(9, 13).reduce(msbLsb)/100,
|
|
13673
|
-
s2_saturation_percent: payload.slice(13, 17).reduce(msbLsb)/100,
|
|
13674
|
-
s3_saturation_percent: payload.slice(17, 21).reduce(msbLsb)/100,
|
|
13675
|
-
s4_saturation_percent: payload.slice(21, 25).reduce(msbLsb)/100,
|
|
13676
|
-
s1_oxigen_ppm: payload.slice(25, 29).reduce(msbLsb)/100,
|
|
13677
|
-
s2_oxigen_ppm: payload.slice(29, 33).reduce(msbLsb)/100,
|
|
13678
|
-
s3_oxigen_ppm: payload.slice(33, 37).reduce(msbLsb)/100,
|
|
13679
|
-
s4_oxigen_ppm: payload.slice(37, 41).reduce(msbLsb)/100,
|
|
13680
|
-
s1_oxigen_mg_l: payload.slice(41, 45).reduce(msbLsb)/100,
|
|
13681
|
-
s2_oxigen_mg_l: payload.slice(45, 49).reduce(msbLsb)/100,
|
|
13682
|
-
s3_oxigen_mg_l: payload.slice(49, 53).reduce(msbLsb)/100,
|
|
13683
|
-
s4_oxigen_mg_l: payload.slice(53, 57).reduce(msbLsb)/100,
|
|
13684
|
-
s1_flow_rate: payload.slice(57, 61).reduce(msbLsb)/100,
|
|
13685
|
-
s2_flow_rate: payload.slice(61, 65).reduce(msbLsb)/100,
|
|
13686
|
-
s3_flow_rate: payload.slice(65, 69).reduce(msbLsb)/100,
|
|
13687
|
-
s4_flow_rate: payload.slice(69, 73).reduce(msbLsb)/100,
|
|
13688
|
-
s1_solenoid_status: payload[73],
|
|
13689
|
-
s2_solenoid_status: payload[74],
|
|
13690
|
-
s3_solenoid_status: payload[75],
|
|
13691
|
-
s4_solenoid_status: payload[76]
|
|
13692
|
-
}
|
|
13693
|
-
},
|
|
13694
|
-
'parse_fly': (frame) => {
|
|
13695
|
-
return {
|
|
13696
|
-
'firmware': frame[2],
|
|
13697
|
-
'oxygen_bootup_time': frame[12] + 'sec',
|
|
13698
|
-
'flow_bootup_time': frame[13]+ 'sec',
|
|
13699
|
-
's1_oxygen_addr': frame[14],
|
|
13700
|
-
's2_oxygen_addr': frame[15],
|
|
13701
|
-
's3_oxygen_addr': frame[16],
|
|
13702
|
-
's4_oxygen_addr': frame[17],
|
|
13703
|
-
's1_flow_addr': frame[18],
|
|
13704
|
-
's2_flow_addr': frame[19],
|
|
13705
|
-
's3_flow_addr': frame[20],
|
|
13706
|
-
's4_flow_addr': frame[21],
|
|
13707
|
-
'hardware_id': frame.slice(22, 25),
|
|
13708
|
-
'report_rate': frame.slice(25, 29).reduce(msbLsb) + 'sec',
|
|
13709
|
-
'tx_life_counter': frame.slice(29, 33).reduce(msbLsb),
|
|
13710
|
-
'machine_values': {
|
|
13711
|
-
'firmware': frame[2],
|
|
13712
|
-
'oxygen_bootup_time': frame[12],
|
|
13713
|
-
'flow_bootup_time': frame[13],
|
|
13714
|
-
's1_oxygen_addr': frame[14],
|
|
13715
|
-
's2_oxygen_addr': frame[15],
|
|
13716
|
-
's3_oxygen_addr': frame[16],
|
|
13717
|
-
's4_oxygen_addr': frame[17],
|
|
13718
|
-
's1_flow_addr': frame[18],
|
|
13719
|
-
's2_flow_addr': frame[19],
|
|
13720
|
-
's3_flow_addr': frame[20],
|
|
13721
|
-
's4_flow_addr': frame[21],
|
|
13722
|
-
'hardware_id': frame.slice(22, 25),
|
|
13723
|
-
'report_rate': frame.slice(25, 29),
|
|
13724
|
-
'tx_life_counter': frame.slice(29, 33)
|
|
13725
|
-
}
|
|
13726
|
-
}
|
|
13727
|
-
}
|
|
13728
|
-
},
|
|
13729
11550
|
'537': {
|
|
13730
11551
|
name: 'Type 537 - Custom Standalone Smart Vibration Sensor',
|
|
13731
11552
|
parse: (payload, parsed, mac) => {
|
|
@@ -14943,178 +12764,6 @@ function sensor_types(parent){
|
|
|
14943
12764
|
}
|
|
14944
12765
|
}
|
|
14945
12766
|
},
|
|
14946
|
-
'539': {
|
|
14947
|
-
name: 'RS485 Modbus Wireless Converter',
|
|
14948
|
-
parse: (d) => {
|
|
14949
|
-
return {
|
|
14950
|
-
subdevice_type: d[0],
|
|
14951
|
-
number_of_registers: d[1],
|
|
14952
|
-
status_24_31: d[2],
|
|
14953
|
-
status_16_23: d[3],
|
|
14954
|
-
status_8_15: d[4],
|
|
14955
|
-
status_0_7: d[5],
|
|
14956
|
-
// TODO we can automatically determine how many registers are here based on the number_of_registers and create data objects appropriately
|
|
14957
|
-
// r1: d.slice(2,4),
|
|
14958
|
-
// r2: d.slice(4,6),
|
|
14959
|
-
// r3: d.slice(6,8),
|
|
14960
|
-
// r4: d.slice(8,10),
|
|
14961
|
-
data: d.slice(6)
|
|
14962
|
-
};
|
|
14963
|
-
},
|
|
14964
|
-
},
|
|
14965
|
-
'540': {
|
|
14966
|
-
name: 'Wireless Ultrasonic Flow Meter FD-Q32C',
|
|
14967
|
-
parse: (d) => {
|
|
14968
|
-
return {
|
|
14969
|
-
raw_adc: d.slice(0, 2).reduce(msbLsb),
|
|
14970
|
-
ma: d.slice(2, 4).reduce(msbLsb) / 100,
|
|
14971
|
-
flow_ltr_min: d.slice(4, 8).reduce(msbLsb) / 100
|
|
14972
|
-
};
|
|
14973
|
-
},
|
|
14974
|
-
'parse_fly': (frame) => {
|
|
14975
|
-
let firmware = frame[2];
|
|
14976
|
-
if(firmware > 13){ // firmware 14 and above
|
|
14977
|
-
let frame_data = {};
|
|
14978
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
14979
|
-
if(!auto_check_interval){
|
|
14980
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
14981
|
-
}else{
|
|
14982
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
14983
|
-
}
|
|
14984
|
-
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
14985
|
-
switch(frame[16]){
|
|
14986
|
-
case 0:
|
|
14987
|
-
frame_data.fsr = "+-6.114 V";
|
|
14988
|
-
break;
|
|
14989
|
-
case 1:
|
|
14990
|
-
frame_data.fsr = "+-4.096 V";
|
|
14991
|
-
break;
|
|
14992
|
-
case 2:
|
|
14993
|
-
frame_data.fsr = "+-2.048 V";
|
|
14994
|
-
break;
|
|
14995
|
-
case 3:
|
|
14996
|
-
frame_data.fsr = "+-1.024 V";
|
|
14997
|
-
break;
|
|
14998
|
-
case 4:
|
|
14999
|
-
frame_data.fsr = "+-0.512 V";
|
|
15000
|
-
break;
|
|
15001
|
-
case 5:
|
|
15002
|
-
frame_data.fsr = "+-0.256 V";
|
|
15003
|
-
break;
|
|
15004
|
-
}
|
|
15005
|
-
return {
|
|
15006
|
-
'firmware': frame[2],
|
|
15007
|
-
'fsr': frame_data.fsr,
|
|
15008
|
-
'boot_up_time': frame[17] + " sec",
|
|
15009
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
15010
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
15011
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
15012
|
-
'always_on': frame_data.always_on,
|
|
15013
|
-
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
15014
|
-
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
15015
|
-
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
15016
|
-
'hardware_id': frame.slice(37, 40),
|
|
15017
|
-
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
15018
|
-
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
15019
|
-
'machine_values': {
|
|
15020
|
-
'firmware': frame[2],
|
|
15021
|
-
'fsr': frame[16],
|
|
15022
|
-
'boot_up_time': frame[17],
|
|
15023
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
15024
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
15025
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
15026
|
-
'always_on': frame[24],
|
|
15027
|
-
'calibration_one': frame.slice(25, 29),
|
|
15028
|
-
'calibration_two':frame.slice(29, 33),
|
|
15029
|
-
'calibration_three':frame.slice(33, 37),
|
|
15030
|
-
'hardware_id': frame.slice(37, 40),
|
|
15031
|
-
'report_rate': frame.slice(40, 44),
|
|
15032
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
15033
|
-
}
|
|
15034
|
-
}
|
|
15035
|
-
}
|
|
15036
|
-
}
|
|
15037
|
-
},
|
|
15038
|
-
'541': {
|
|
15039
|
-
name: 'Custom Inline Flow Sensor',
|
|
15040
|
-
parse: (d) => {
|
|
15041
|
-
return {
|
|
15042
|
-
adc1: signInt(d.slice(0, 2).reduce(msbLsb), 16),
|
|
15043
|
-
adc2: signInt(d.slice(2, 4).reduce(msbLsb), 16),
|
|
15044
|
-
mA1: signInt(d.slice(4, 6).reduce(msbLsb), 16)/100,
|
|
15045
|
-
mA2: signInt(d.slice(6, 8).reduce(msbLsb), 16)/100,
|
|
15046
|
-
flow_1: signInt(d.slice(8, 12).reduce(msbLsb), 32)/100,
|
|
15047
|
-
flow_2:signInt(d.slice(12, 16).reduce(msbLsb), 32)/100
|
|
15048
|
-
};
|
|
15049
|
-
},
|
|
15050
|
-
'parse_fly': (frame) => {
|
|
15051
|
-
let firmware = frame[2];
|
|
15052
|
-
if(firmware > 13){ // firmware 14 and above
|
|
15053
|
-
let frame_data = {};
|
|
15054
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
15055
|
-
if(!auto_check_interval){
|
|
15056
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
15057
|
-
}else{
|
|
15058
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
15059
|
-
}
|
|
15060
|
-
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
15061
|
-
switch(frame[16]){
|
|
15062
|
-
case 0:
|
|
15063
|
-
frame_data.fsr = "+-6.114 V";
|
|
15064
|
-
break;
|
|
15065
|
-
case 1:
|
|
15066
|
-
frame_data.fsr = "+-4.096 V";
|
|
15067
|
-
break;
|
|
15068
|
-
case 2:
|
|
15069
|
-
frame_data.fsr = "+-2.048 V";
|
|
15070
|
-
break;
|
|
15071
|
-
case 3:
|
|
15072
|
-
frame_data.fsr = "+-1.024 V";
|
|
15073
|
-
break;
|
|
15074
|
-
case 4:
|
|
15075
|
-
frame_data.fsr = "+-0.512 V";
|
|
15076
|
-
break;
|
|
15077
|
-
case 5:
|
|
15078
|
-
frame_data.fsr = "+-0.256 V";
|
|
15079
|
-
break;
|
|
15080
|
-
}
|
|
15081
|
-
return {
|
|
15082
|
-
'firmware': frame[2],
|
|
15083
|
-
'fsr': frame_data.fsr,
|
|
15084
|
-
'boot_up_time': frame[17] + " sec",
|
|
15085
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
15086
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
15087
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
15088
|
-
'always_on': frame_data.always_on,
|
|
15089
|
-
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
15090
|
-
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
15091
|
-
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
15092
|
-
'min_flow_rate':frame.slice(37, 39).reduce(msbLsb),
|
|
15093
|
-
'max_flow_rate':frame.slice(39, 41).reduce(msbLsb),
|
|
15094
|
-
'hardware_id': frame.slice(41, 44),
|
|
15095
|
-
'report_rate': frame.slice(44, 48).reduce(msbLsb) + " sec",
|
|
15096
|
-
'tx_life_counter': frame.slice(48, 52).reduce(msbLsb),
|
|
15097
|
-
'machine_values': {
|
|
15098
|
-
'firmware': frame[2],
|
|
15099
|
-
'fsr': frame[16],
|
|
15100
|
-
'boot_up_time': frame[17],
|
|
15101
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
15102
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
15103
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
15104
|
-
'always_on': frame[24],
|
|
15105
|
-
'calibration_one': frame.slice(25, 29),
|
|
15106
|
-
'calibration_two':frame.slice(29, 33),
|
|
15107
|
-
'calibration_three':frame.slice(33, 37),
|
|
15108
|
-
'min_flow_rate':frame.slice(37, 39),
|
|
15109
|
-
'max_flow_rate':frame.slice(39, 41),
|
|
15110
|
-
'hardware_id': frame.slice(41, 44),
|
|
15111
|
-
'report_rate': frame.slice(44, 48),
|
|
15112
|
-
'tx_life_counter': frame.slice(48, 52)
|
|
15113
|
-
}
|
|
15114
|
-
}
|
|
15115
|
-
}
|
|
15116
|
-
}
|
|
15117
|
-
},
|
|
15118
12767
|
'542': {
|
|
15119
12768
|
name: 'Custom LWGY Flow Sensor',
|
|
15120
12769
|
parse: (d) => {
|
|
@@ -15616,167 +13265,6 @@ function sensor_types(parent){
|
|
|
15616
13265
|
}
|
|
15617
13266
|
}
|
|
15618
13267
|
},
|
|
15619
|
-
'545': {
|
|
15620
|
-
name: 'Fox Thermal Flow Sensor',
|
|
15621
|
-
parse: (payload, parsed, mac) => {
|
|
15622
|
-
let sensor_status = '';
|
|
15623
|
-
const error_message = [];
|
|
15624
|
-
if(payload[8] & 1){
|
|
15625
|
-
error_message.push('pwr_up');
|
|
15626
|
-
}
|
|
15627
|
-
if(payload[8] & 2){
|
|
15628
|
-
error_message.push('flw_hi_lim');
|
|
15629
|
-
}
|
|
15630
|
-
if(payload[8] & 4){
|
|
15631
|
-
error_message.push('flw_lo_lim');
|
|
15632
|
-
}
|
|
15633
|
-
if(payload[8] & 8){
|
|
15634
|
-
error_message.push('tmp_hi_lim');
|
|
15635
|
-
}
|
|
15636
|
-
if(payload[8] & 16){
|
|
15637
|
-
error_message.push('tmp_lo_lim');
|
|
15638
|
-
}
|
|
15639
|
-
if(payload[8] & 32){
|
|
15640
|
-
error_message.push('sensor_oor');
|
|
15641
|
-
}
|
|
15642
|
-
if(payload[8] & 64){
|
|
15643
|
-
error_message.push('gas_mix_err');
|
|
15644
|
-
}
|
|
15645
|
-
if(payload[8] & 128){
|
|
15646
|
-
error_message.push('inc_set');
|
|
15647
|
-
}
|
|
15648
|
-
if(error_message.length === 0){
|
|
15649
|
-
sensor_status = 'ready';
|
|
15650
|
-
} else {
|
|
15651
|
-
sensor_status = error_message.join(', ');
|
|
15652
|
-
}
|
|
15653
|
-
|
|
15654
|
-
const calv_value = payload.slice(9, 11).reduce(msbLsb) / 100;
|
|
15655
|
-
let cal_val = '';
|
|
15656
|
-
if(calv_value < 0.80){
|
|
15657
|
-
cal_val = 'pass';
|
|
15658
|
-
} else if(calv_value <= 1.0){
|
|
15659
|
-
cal_val = 'warning';
|
|
15660
|
-
} else {
|
|
15661
|
-
cal_val = 'fail';
|
|
15662
|
-
}
|
|
15663
|
-
|
|
15664
|
-
return {
|
|
15665
|
-
sensor_status: sensor_status,
|
|
15666
|
-
calcv_value: payload.slice(9, 11).reduce(msbLsb) / 100,
|
|
15667
|
-
calcv_status: cal_val,
|
|
15668
|
-
flow: payload.slice(11, 15).reduce(msbLsb)/100,
|
|
15669
|
-
ghv: payload.slice(15, 19).reduce(msbLsb)/100,
|
|
15670
|
-
total_flow: payload.slice(19, 27).reduce(msbLsb)/100,
|
|
15671
|
-
temperature: payload.slice(27,29).reduce(msbLsb)/100,
|
|
15672
|
-
density: payload.slice(29, 31).reduce(msbLsb)/100
|
|
15673
|
-
};
|
|
15674
|
-
},
|
|
15675
|
-
'parse_fly': (frame) => {
|
|
15676
|
-
let frame_data = {};
|
|
15677
|
-
switch(frame[12]){
|
|
15678
|
-
case 0:
|
|
15679
|
-
frame_data.flow_unit = 'scf_m';
|
|
15680
|
-
break;
|
|
15681
|
-
case 1:
|
|
15682
|
-
frame_data.flow_unit = 'scf_h';
|
|
15683
|
-
break;
|
|
15684
|
-
case 2:
|
|
15685
|
-
frame_data.flow_unit = 'nm3_h';
|
|
15686
|
-
break;
|
|
15687
|
-
case 3:
|
|
15688
|
-
frame_data.flow_unit = 'nm3_m';
|
|
15689
|
-
break;
|
|
15690
|
-
case 4:
|
|
15691
|
-
frame_data.flow_unit = 'kg_h';
|
|
15692
|
-
break;
|
|
15693
|
-
case 5:
|
|
15694
|
-
frame_data.flow_unit = 'kg_m';
|
|
15695
|
-
break;
|
|
15696
|
-
case 6:
|
|
15697
|
-
frame_data.flow_unit = 'kg_s';
|
|
15698
|
-
break;
|
|
15699
|
-
case 7:
|
|
15700
|
-
frame_data.flow_unit = 'lbs_h';
|
|
15701
|
-
break;
|
|
15702
|
-
case 8:
|
|
15703
|
-
frame_data.flow_unit = 'lbs_m';
|
|
15704
|
-
break;
|
|
15705
|
-
case 9:
|
|
15706
|
-
frame_data.flow_unit = 'lbs_s';
|
|
15707
|
-
break;
|
|
15708
|
-
case 10:
|
|
15709
|
-
frame_data.flow_unit = 'nlp_h';
|
|
15710
|
-
break;
|
|
15711
|
-
case 11:
|
|
15712
|
-
frame_data.flow_unit = 'nlp_m';
|
|
15713
|
-
break;
|
|
15714
|
-
case 12:
|
|
15715
|
-
frame_data.flow_unit = 'mmscf_d';
|
|
15716
|
-
break;
|
|
15717
|
-
case 13:
|
|
15718
|
-
frame_data.flow_unit = 'lbs_d';
|
|
15719
|
-
break;
|
|
15720
|
-
case 14:
|
|
15721
|
-
frame_data.flow_unit = 'slp_m';
|
|
15722
|
-
break;
|
|
15723
|
-
case 15:
|
|
15724
|
-
frame_data.flow_unit = 'nlp_s';
|
|
15725
|
-
break;
|
|
15726
|
-
case 16:
|
|
15727
|
-
frame_data.flow_unit = 'mscf_d';
|
|
15728
|
-
break;
|
|
15729
|
-
case 17:
|
|
15730
|
-
frame_data.flow_unit = 'sm3_h';
|
|
15731
|
-
break;
|
|
15732
|
-
case 18:
|
|
15733
|
-
frame_data.flow_unit = 'mt_h';
|
|
15734
|
-
break;
|
|
15735
|
-
case 19:
|
|
15736
|
-
frame_data.flow_unit = 'nm3_d';
|
|
15737
|
-
break;
|
|
15738
|
-
case 20:
|
|
15739
|
-
frame_data.flow_unit = 'mmscf_m';
|
|
15740
|
-
break;
|
|
15741
|
-
case 21:
|
|
15742
|
-
frame_data.flow_unit = 'scf_d';
|
|
15743
|
-
break;
|
|
15744
|
-
case 22:
|
|
15745
|
-
frame_data.flow_unit = 'mcf_d';
|
|
15746
|
-
break;
|
|
15747
|
-
case 23:
|
|
15748
|
-
frame_data.flow_unit = 'sm3_m';
|
|
15749
|
-
break;
|
|
15750
|
-
case 24:
|
|
15751
|
-
frame_data.flow_unit = 'sm3_d';
|
|
15752
|
-
break;
|
|
15753
|
-
}
|
|
15754
|
-
switch(frame[13]){
|
|
15755
|
-
case 0:
|
|
15756
|
-
frame_data.temperature_unit = 'F';
|
|
15757
|
-
break;
|
|
15758
|
-
case 1:
|
|
15759
|
-
frame_data.temperature_unit = 'C';
|
|
15760
|
-
break;
|
|
15761
|
-
}
|
|
15762
|
-
return {
|
|
15763
|
-
'firmware': frame[2],
|
|
15764
|
-
'flow_unit': frame_data.flow_unit,
|
|
15765
|
-
'temperature_unit': frame_data.temperature_unit,
|
|
15766
|
-
'hardware_id': frame.slice(14, 17),
|
|
15767
|
-
'report_rate': frame.slice(17, 21).reduce(msbLsb),
|
|
15768
|
-
'tx_life_counter': frame.slice(21, 25).reduce(msbLsb),
|
|
15769
|
-
'machine_values': {
|
|
15770
|
-
'firmware': frame[2],
|
|
15771
|
-
'flow_unit': frame[12],
|
|
15772
|
-
'temperature_unit': frame[13],
|
|
15773
|
-
'hardware_id': frame.slice(14, 17),
|
|
15774
|
-
'report_rate': frame.slice(17, 21),
|
|
15775
|
-
'tx_life_counter': frame.slice(21, 25)
|
|
15776
|
-
}
|
|
15777
|
-
}
|
|
15778
|
-
}
|
|
15779
|
-
},
|
|
15780
13268
|
'1010': {
|
|
15781
13269
|
name: 'RS232 Wireless Converter',
|
|
15782
13270
|
parse: (d) => {
|
|
@@ -15890,22 +13378,22 @@ function int2Bytes(i, l){
|
|
|
15890
13378
|
return bytes;
|
|
15891
13379
|
}
|
|
15892
13380
|
function msbLsb_to_SignedInt(value, addition) {
|
|
15893
|
-
|
|
15894
|
-
|
|
13381
|
+
const bigValue = BigInt(value);
|
|
13382
|
+
const bigAddition = BigInt(addition);
|
|
15895
13383
|
|
|
15896
|
-
|
|
13384
|
+
let result = (bigValue << 8n) + bigAddition;
|
|
15897
13385
|
|
|
15898
|
-
|
|
15899
|
-
|
|
13386
|
+
// Always return the result as an unsigned 64-bit BigInt.
|
|
13387
|
+
return BigInt.asIntN(64, result);
|
|
15900
13388
|
};
|
|
15901
13389
|
function msbLsb_to_UnsignedInt(value, addition) {
|
|
15902
|
-
|
|
15903
|
-
|
|
13390
|
+
const bigValue = BigInt(value);
|
|
13391
|
+
const bigAddition = BigInt(addition);
|
|
15904
13392
|
|
|
15905
|
-
|
|
13393
|
+
let result = (bigValue << 8n) + bigAddition;
|
|
15906
13394
|
|
|
15907
|
-
|
|
15908
|
-
|
|
13395
|
+
// Always return the result as a signed 64-bit BigInt.
|
|
13396
|
+
return BigInt.asUintN(64, result);
|
|
15909
13397
|
};
|
|
15910
13398
|
// TODO implement this function in future for decimal formatting on BigInt values
|
|
15911
13399
|
// Untested. Requires multiplication by scale factor to account for decimal value loss before passing in. Might handle that in this function as well.
|