@ncd-io/node-red-enterprise-sensors 2.0.3 → 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 +408 -1348
- package/lib/sensors/105.js +454 -0
- package/lib/sensors/106.js +472 -0
- package/lib/sensors/110.js +55 -40
- package/lib/sensors/111.js +4 -2
- package/lib/sensors/112.js +1479 -0
- package/lib/sensors/115.js +292 -0
- package/lib/sensors/21.js +471 -0
- package/lib/sensors/47.js +295 -0
- package/lib/sensors/536.js +708 -0
- package/lib/sensors/539.js +64 -32
- package/package.json +1 -1
- package/wireless.html +499 -143
- package/wireless.js +86 -22
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);
|
|
@@ -3066,6 +3071,100 @@ module.exports = class WirelessSensor{
|
|
|
3066
3071
|
console.log(packet);
|
|
3067
3072
|
return this.config_send(sensor_mac, packet);
|
|
3068
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
|
+
}
|
|
3069
3168
|
config_get_delay(sensor_mac){
|
|
3070
3169
|
return new Promise((fulfill, reject) => {
|
|
3071
3170
|
this.config_send(sensor_mac, [247, 21, 0, 0, 0]).then((res) => {
|
|
@@ -4229,208 +4328,6 @@ function sensor_types(parent){
|
|
|
4229
4328
|
};
|
|
4230
4329
|
}
|
|
4231
4330
|
},
|
|
4232
|
-
'21': {
|
|
4233
|
-
name: 'Differential Bidirectional Pressure Sensor',
|
|
4234
|
-
parse: (payload, parsed, mac) => {
|
|
4235
|
-
let pressure, temperature, raw_adc;
|
|
4236
|
-
|
|
4237
|
-
if (parsed.firmware <= 12) {
|
|
4238
|
-
pressure = signInt(payload.slice(8, 10).reduce(msbLsb), 16) / 100;
|
|
4239
|
-
temperature = signInt(payload.slice(10, 12).reduce(msbLsb), 16) / 100;
|
|
4240
|
-
// raw_adc not present in firmware ≤ 12
|
|
4241
|
-
return {
|
|
4242
|
-
pressure,
|
|
4243
|
-
temperature
|
|
4244
|
-
};
|
|
4245
|
-
} else {
|
|
4246
|
-
pressure = signInt(payload.slice(8, 10).reduce(msbLsb), 16) / 1000;
|
|
4247
|
-
temperature = signInt(payload.slice(10, 12).reduce(msbLsb), 16) / 100;
|
|
4248
|
-
raw_adc = signInt(payload.slice(12, 14).reduce(msbLsb), 16);
|
|
4249
|
-
return {
|
|
4250
|
-
pressure,
|
|
4251
|
-
temperature,
|
|
4252
|
-
raw_adc
|
|
4253
|
-
};
|
|
4254
|
-
}
|
|
4255
|
-
},
|
|
4256
|
-
'parse_fly': (frame) => {
|
|
4257
|
-
let sensor_type = '';
|
|
4258
|
-
switch(frame[13]){
|
|
4259
|
-
case 0:
|
|
4260
|
-
sensor_type = 'AMS5812';
|
|
4261
|
-
break;
|
|
4262
|
-
case 1:
|
|
4263
|
-
sensor_type = 'AMS5915';
|
|
4264
|
-
break;
|
|
4265
|
-
}
|
|
4266
|
-
let sensor_range = '';
|
|
4267
|
-
if(frame[13]){ // if sensor type is 5915
|
|
4268
|
-
switch(frame[12]){
|
|
4269
|
-
case 0:
|
|
4270
|
-
sensor_range = '0005_D';
|
|
4271
|
-
break;
|
|
4272
|
-
case 1:
|
|
4273
|
-
sensor_range = '0010_D';
|
|
4274
|
-
break;
|
|
4275
|
-
case 2:
|
|
4276
|
-
sensor_range = '0002_D_B';
|
|
4277
|
-
break;
|
|
4278
|
-
case 3:
|
|
4279
|
-
sensor_range = '0005_D_B';
|
|
4280
|
-
break;
|
|
4281
|
-
case 4:
|
|
4282
|
-
sensor_range = '0010_D_B';
|
|
4283
|
-
break;
|
|
4284
|
-
case 5:
|
|
4285
|
-
sensor_range = '0020_D';
|
|
4286
|
-
break;
|
|
4287
|
-
case 6:
|
|
4288
|
-
sensor_range = '0035_D';
|
|
4289
|
-
break;
|
|
4290
|
-
case 7:
|
|
4291
|
-
sensor_range = '0050_D';
|
|
4292
|
-
break;
|
|
4293
|
-
case 8:
|
|
4294
|
-
sensor_range = '0100_D';
|
|
4295
|
-
break;
|
|
4296
|
-
case 9:
|
|
4297
|
-
sensor_range = '0020_D_B';
|
|
4298
|
-
break;
|
|
4299
|
-
case 10:
|
|
4300
|
-
sensor_range = '0035_D_B';
|
|
4301
|
-
break;
|
|
4302
|
-
case 11:
|
|
4303
|
-
sensor_range = '0050_D_B';
|
|
4304
|
-
break;
|
|
4305
|
-
case 12:
|
|
4306
|
-
sensor_range = '0100_D_B';
|
|
4307
|
-
break;
|
|
4308
|
-
case 13:
|
|
4309
|
-
sensor_range = '0200_D';
|
|
4310
|
-
break;
|
|
4311
|
-
case 14:
|
|
4312
|
-
sensor_range = '0350_D';
|
|
4313
|
-
break;
|
|
4314
|
-
case 15:
|
|
4315
|
-
sensor_range = '0500_D';
|
|
4316
|
-
break;
|
|
4317
|
-
case 16:
|
|
4318
|
-
sensor_range = '1000_D';
|
|
4319
|
-
break;
|
|
4320
|
-
case 17:
|
|
4321
|
-
sensor_range = '2000_D';
|
|
4322
|
-
break;
|
|
4323
|
-
case 18:
|
|
4324
|
-
sensor_range = '4000_D';
|
|
4325
|
-
break;
|
|
4326
|
-
case 19:
|
|
4327
|
-
sensor_range = '7000_D';
|
|
4328
|
-
break;
|
|
4329
|
-
case 20:
|
|
4330
|
-
sensor_range = '10000_D';
|
|
4331
|
-
break;
|
|
4332
|
-
case 21:
|
|
4333
|
-
sensor_range = '0200_D_B';
|
|
4334
|
-
break;
|
|
4335
|
-
case 22:
|
|
4336
|
-
sensor_range = '0350_D_B';
|
|
4337
|
-
break;
|
|
4338
|
-
case 23:
|
|
4339
|
-
sensor_range = '0500_D_B';
|
|
4340
|
-
break;
|
|
4341
|
-
case 24:
|
|
4342
|
-
sensor_range = '1000_D_B';
|
|
4343
|
-
break;
|
|
4344
|
-
}
|
|
4345
|
-
}
|
|
4346
|
-
else{ // sensor type is 5812
|
|
4347
|
-
switch(frame[12]){
|
|
4348
|
-
case 0:
|
|
4349
|
-
sensor_range = '0000_D';
|
|
4350
|
-
break;
|
|
4351
|
-
case 1:
|
|
4352
|
-
sensor_range = '0001_D';
|
|
4353
|
-
break;
|
|
4354
|
-
case 2:
|
|
4355
|
-
sensor_range = '0000_D_B';
|
|
4356
|
-
break;
|
|
4357
|
-
case 3:
|
|
4358
|
-
sensor_range = '0001_D_B';
|
|
4359
|
-
break;
|
|
4360
|
-
case 4:
|
|
4361
|
-
sensor_range = '0003_D';
|
|
4362
|
-
break;
|
|
4363
|
-
case 5:
|
|
4364
|
-
sensor_range = '0008_D';
|
|
4365
|
-
break;
|
|
4366
|
-
case 6:
|
|
4367
|
-
sensor_range = '0015_D';
|
|
4368
|
-
break;
|
|
4369
|
-
case 7:
|
|
4370
|
-
sensor_range = '0003_D_B';
|
|
4371
|
-
break;
|
|
4372
|
-
case 8:
|
|
4373
|
-
sensor_range = '0008_D_B';
|
|
4374
|
-
break;
|
|
4375
|
-
case 9:
|
|
4376
|
-
sensor_range = '0015_D_B';
|
|
4377
|
-
break;
|
|
4378
|
-
case 10:
|
|
4379
|
-
sensor_range = '0030_D';
|
|
4380
|
-
break;
|
|
4381
|
-
case 11:
|
|
4382
|
-
sensor_range = '0050_D';
|
|
4383
|
-
break;
|
|
4384
|
-
case 12:
|
|
4385
|
-
sensor_range = '0150_D';
|
|
4386
|
-
break;
|
|
4387
|
-
case 13:
|
|
4388
|
-
sensor_range = '0300_D';
|
|
4389
|
-
break;
|
|
4390
|
-
case 14:
|
|
4391
|
-
sensor_range = '0600_D';
|
|
4392
|
-
break;
|
|
4393
|
-
case 15:
|
|
4394
|
-
sensor_range = '1000_D';
|
|
4395
|
-
break;
|
|
4396
|
-
case 16:
|
|
4397
|
-
sensor_range = '0030_D_B';
|
|
4398
|
-
break;
|
|
4399
|
-
case 17:
|
|
4400
|
-
sensor_range = '0050_D_B';
|
|
4401
|
-
break;
|
|
4402
|
-
case 18:
|
|
4403
|
-
sensor_range = '0150_D_B';
|
|
4404
|
-
break;
|
|
4405
|
-
case 19:
|
|
4406
|
-
sensor_range = '0150_B';
|
|
4407
|
-
break;
|
|
4408
|
-
case 20:
|
|
4409
|
-
sensor_range = '0150_A';
|
|
4410
|
-
break;
|
|
4411
|
-
case 21:
|
|
4412
|
-
sensor_range = '0300_A';
|
|
4413
|
-
break;
|
|
4414
|
-
}
|
|
4415
|
-
}
|
|
4416
|
-
return {
|
|
4417
|
-
'firmware': frame[2],
|
|
4418
|
-
'sensor_range': sensor_range,
|
|
4419
|
-
'sensor_type': sensor_type,
|
|
4420
|
-
'hardware_id': frame.slice(14, 17),
|
|
4421
|
-
'report_rate': frame.slice(17, 21).reduce(msbLsb) + ' sec',
|
|
4422
|
-
'tx_counter': frame.slice(21, 25).reduce(msbLsb),
|
|
4423
|
-
'machine_values': {
|
|
4424
|
-
'firmware': frame[2],
|
|
4425
|
-
'sensor_range': frame[12],
|
|
4426
|
-
'sensor_type': frame[13],
|
|
4427
|
-
'hardware_id': frame.slice(14, 17),
|
|
4428
|
-
'report_rate': frame.slice(17, 21),
|
|
4429
|
-
'tx_counter': frame.slice(21, 25)
|
|
4430
|
-
}
|
|
4431
|
-
}
|
|
4432
|
-
}
|
|
4433
|
-
},
|
|
4434
4331
|
'22': {
|
|
4435
4332
|
name: 'Voltage Detection Input',
|
|
4436
4333
|
parse: (d) => {
|
|
@@ -8062,171 +7959,22 @@ function sensor_types(parent){
|
|
|
8062
7959
|
};
|
|
8063
7960
|
}
|
|
8064
7961
|
},
|
|
8065
|
-
'
|
|
8066
|
-
name: '
|
|
8067
|
-
parse: (d) => {
|
|
8068
|
-
|
|
8069
|
-
|
|
8070
|
-
|
|
8071
|
-
|
|
8072
|
-
};
|
|
8073
|
-
|
|
8074
|
-
|
|
8075
|
-
|
|
8076
|
-
|
|
8077
|
-
|
|
8078
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
8079
|
-
if(!auto_check_interval){
|
|
8080
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
8081
|
-
}else{
|
|
8082
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
8083
|
-
}
|
|
8084
|
-
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
8085
|
-
switch(frame[16]){
|
|
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]){
|
|
8086
7975
|
case 0:
|
|
8087
|
-
|
|
8088
|
-
|
|
8089
|
-
case 1:
|
|
8090
|
-
frame_data.fsr = "+-4.096 V";
|
|
8091
|
-
break;
|
|
8092
|
-
case 2:
|
|
8093
|
-
frame_data.fsr = "+-2.048 V";
|
|
8094
|
-
break;
|
|
8095
|
-
case 3:
|
|
8096
|
-
frame_data.fsr = "+-1.024 V";
|
|
8097
|
-
break;
|
|
8098
|
-
case 4:
|
|
8099
|
-
frame_data.fsr = "+-0.512 V";
|
|
8100
|
-
break;
|
|
8101
|
-
case 5:
|
|
8102
|
-
frame_data.fsr = "+-0.256 V";
|
|
8103
|
-
break;
|
|
8104
|
-
}
|
|
8105
|
-
return {
|
|
8106
|
-
'firmware': frame[2],
|
|
8107
|
-
'fsr': frame_data.fsr,
|
|
8108
|
-
'boot_up_time': frame[17] + " sec",
|
|
8109
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
8110
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
8111
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
8112
|
-
'always_on': frame_data.always_on,
|
|
8113
|
-
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
8114
|
-
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
8115
|
-
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
8116
|
-
'hardware_id': frame.slice(37, 40),
|
|
8117
|
-
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
8118
|
-
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
8119
|
-
'machine_values': {
|
|
8120
|
-
'firmware': frame[2],
|
|
8121
|
-
'fsr': frame[16],
|
|
8122
|
-
'boot_up_time': frame[17],
|
|
8123
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
8124
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
8125
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
8126
|
-
'always_on': frame[24],
|
|
8127
|
-
'calibration_one': frame.slice(25, 29),
|
|
8128
|
-
'calibration_two':frame.slice(29, 33),
|
|
8129
|
-
'calibration_three':frame.slice(33, 37),
|
|
8130
|
-
'hardware_id': frame.slice(37, 40),
|
|
8131
|
-
'report_rate': frame.slice(40, 44),
|
|
8132
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
8133
|
-
}
|
|
8134
|
-
}
|
|
8135
|
-
}
|
|
8136
|
-
}
|
|
8137
|
-
},
|
|
8138
|
-
'106': {
|
|
8139
|
-
name: '2 Channel Automatic Luber With Ultrasound Vibration Sensor',
|
|
8140
|
-
parse: (d) => {
|
|
8141
|
-
return {
|
|
8142
|
-
c1_raw_adc: d.slice(0, 2).reduce(msbLsb),
|
|
8143
|
-
c1_ma: d.slice(2, 4).reduce(msbLsb) / 100,
|
|
8144
|
-
c1_db: d.slice(4, 6).reduce(msbLsb) / 100,
|
|
8145
|
-
c2_raw_adc: d.slice(6, 8).reduce(msbLsb),
|
|
8146
|
-
c2_ma: d.slice(8, 10).reduce(msbLsb) / 100,
|
|
8147
|
-
c2_db: d.slice(10, 12).reduce(msbLsb) / 100
|
|
8148
|
-
};
|
|
8149
|
-
},
|
|
8150
|
-
'parse_fly': (frame) => {
|
|
8151
|
-
let firmware = frame[2];
|
|
8152
|
-
if(firmware > 13){ // firmware 14 and above
|
|
8153
|
-
let frame_data = {};
|
|
8154
|
-
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
8155
|
-
if(!auto_check_interval){
|
|
8156
|
-
frame_data.auto_check_interval = 'Disabled';
|
|
8157
|
-
}else{
|
|
8158
|
-
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
8159
|
-
}
|
|
8160
|
-
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
8161
|
-
switch(frame[16]){
|
|
8162
|
-
case 0:
|
|
8163
|
-
frame_data.fsr = "+-6.114 V";
|
|
8164
|
-
break;
|
|
8165
|
-
case 1:
|
|
8166
|
-
frame_data.fsr = "+-4.096 V";
|
|
8167
|
-
break;
|
|
8168
|
-
case 2:
|
|
8169
|
-
frame_data.fsr = "+-2.048 V";
|
|
8170
|
-
break;
|
|
8171
|
-
case 3:
|
|
8172
|
-
frame_data.fsr = "+-1.024 V";
|
|
8173
|
-
break;
|
|
8174
|
-
case 4:
|
|
8175
|
-
frame_data.fsr = "+-0.512 V";
|
|
8176
|
-
break;
|
|
8177
|
-
case 5:
|
|
8178
|
-
frame_data.fsr = "+-0.256 V";
|
|
8179
|
-
break;
|
|
8180
|
-
}
|
|
8181
|
-
return {
|
|
8182
|
-
'firmware': frame[2],
|
|
8183
|
-
'fsr': frame_data.fsr,
|
|
8184
|
-
'boot_up_time': frame[17] + " sec",
|
|
8185
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
8186
|
-
'auto_check_interval': frame_data.auto_check_interval,
|
|
8187
|
-
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
8188
|
-
'always_on': frame_data.always_on,
|
|
8189
|
-
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
8190
|
-
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
8191
|
-
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
8192
|
-
'hardware_id': frame.slice(37, 40),
|
|
8193
|
-
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
8194
|
-
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
8195
|
-
'machine_values': {
|
|
8196
|
-
'firmware': frame[2],
|
|
8197
|
-
'fsr': frame[16],
|
|
8198
|
-
'boot_up_time': frame[17],
|
|
8199
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
8200
|
-
'auto_check_interval': frame.slice(20, 22),
|
|
8201
|
-
'auto_check_percentage': frame.slice(22, 24),
|
|
8202
|
-
'always_on': frame[24],
|
|
8203
|
-
'calibration_one': frame.slice(25, 29),
|
|
8204
|
-
'calibration_two':frame.slice(29, 33),
|
|
8205
|
-
'calibration_three':frame.slice(33, 37),
|
|
8206
|
-
'hardware_id': frame.slice(37, 40),
|
|
8207
|
-
'report_rate': frame.slice(40, 44),
|
|
8208
|
-
'tx_life_counter': frame.slice(44, 48)
|
|
8209
|
-
}
|
|
8210
|
-
}
|
|
8211
|
-
}
|
|
8212
|
-
}
|
|
8213
|
-
},
|
|
8214
|
-
'108': {
|
|
8215
|
-
name: 'Machine Uptime Monitoring Sensor',
|
|
8216
|
-
parse: (d, payload) => {
|
|
8217
|
-
let firmware = payload[1];
|
|
8218
|
-
// if((payload[7] & 2) != 0){
|
|
8219
|
-
// console.log('Error found');
|
|
8220
|
-
// // parsed.data = {error: 'Error found, Accelerometer Probe may be unattached'};
|
|
8221
|
-
// let error = {error: 'Error found, Accelerometer Probe may be unattached'};
|
|
8222
|
-
// return error;
|
|
8223
|
-
// }
|
|
8224
|
-
if(firmware > 4){
|
|
8225
|
-
let report_type = "Regular";
|
|
8226
|
-
switch(d[41]){
|
|
8227
|
-
case 0:
|
|
8228
|
-
report_type = "Regular";
|
|
8229
|
-
break;
|
|
7976
|
+
report_type = "Regular";
|
|
7977
|
+
break;
|
|
8230
7978
|
case 1:
|
|
8231
7979
|
report_type = "Shift end";
|
|
8232
7980
|
break;
|
|
@@ -8818,878 +8566,256 @@ function sensor_types(parent){
|
|
|
8818
8566
|
].join(':'),
|
|
8819
8567
|
'Shift_end_3': [
|
|
8820
8568
|
String(frame[31]).padStart(2, '0'),
|
|
8821
|
-
String(frame[32]).padStart(2, '0')
|
|
8822
|
-
].join(':'),
|
|
8823
|
-
'Shift_end_4': [
|
|
8824
|
-
String(frame[33]).padStart(2, '0'),
|
|
8825
|
-
String(frame[34]).padStart(2, '0')
|
|
8826
|
-
].join(':'),
|
|
8827
|
-
'reset_timeout': frame.slice(35, 37).reduce(msbLsb) + "min",
|
|
8828
|
-
'counter_reset_mode': reset_mode,
|
|
8829
|
-
'sampling_interval': rtc_sampling_interval,
|
|
8830
|
-
'acc_odr': acc_odr,
|
|
8831
|
-
'hardware_id': frame.slice(40, 43),
|
|
8832
|
-
'report_rate': frame.slice(43, 47).reduce(msbLsb) + "sec",
|
|
8833
|
-
'tx_life_counter': frame.slice(47, 51).reduce(msbLsb),
|
|
8834
|
-
'machine_values': {
|
|
8835
|
-
'firmware': frame[2],
|
|
8836
|
-
'accelerometer_threshold': frame[16],
|
|
8837
|
-
'debouncing_timeout': frame[17],
|
|
8838
|
-
'accelero_state': frame[18],
|
|
8839
|
-
'input_1_active_edge': frame[19],
|
|
8840
|
-
'input_2_active_edge': frame[20],
|
|
8841
|
-
'input_3_active_edge': frame[21],
|
|
8842
|
-
'counter_threshold': frame.slice(22, 26),
|
|
8843
|
-
'trasnmit_on_change_status': frame[26],
|
|
8844
|
-
'Shift_end_1': frame.slice(27, 29),
|
|
8845
|
-
'Shift_end_2': frame.slice(29, 31),
|
|
8846
|
-
'Shift_end_3': frame.slice(31, 33),
|
|
8847
|
-
'Shift_end_4': frame.slice(33, 35),
|
|
8848
|
-
'reset_timeout': frame.slice(35, 37),
|
|
8849
|
-
'counter_reset_mode': frame[37],
|
|
8850
|
-
'sampling_interval': frame[38],
|
|
8851
|
-
'acc_odr': frame[39],
|
|
8852
|
-
'hardware_id': frame.slice(40, 43),
|
|
8853
|
-
'report_rate': frame.slice(43, 47),
|
|
8854
|
-
'tx_life_counter': frame.slice(47, 51)
|
|
8855
|
-
}
|
|
8856
|
-
}
|
|
8857
|
-
} else{
|
|
8858
|
-
return {
|
|
8859
|
-
'firmware': frame[2],
|
|
8860
|
-
'report_rate': frame.slice(12, 16).reduce(msbLsb).toString() + "sec.",
|
|
8861
|
-
'accelerometer_threshold': (frame[16]* 32) + "mg.",
|
|
8862
|
-
'debouncing_timeout': frame[17].toString() + "msec.",
|
|
8863
|
-
'accelero_state': frame[18],
|
|
8864
|
-
'digital_inputs_active_edge': frame.slice(19, 22).reduce(msbLsb),
|
|
8865
|
-
'counter_threshold': frame.slice(22, 26).reduce(msbLsb),
|
|
8866
|
-
'trasnmit_on_change_status': frame[26],
|
|
8867
|
-
'machine_values': {
|
|
8868
|
-
'firmware': frame[2],
|
|
8869
|
-
'report_rate': frame.slice(12, 16),
|
|
8870
|
-
'accelerometer_threshold': frame[16],
|
|
8871
|
-
'debouncing_timeout': frame[17],
|
|
8872
|
-
'accelero_active_state': frame[18],
|
|
8873
|
-
'digital_inputs_active_edge': frame.slice(19, 22),
|
|
8874
|
-
'counter_threshold': frame.slice(22, 26),
|
|
8875
|
-
'trasnmit_on_change_status': frame[26]
|
|
8876
|
-
}
|
|
8877
|
-
}
|
|
8878
|
-
}
|
|
8879
|
-
}
|
|
8880
|
-
},
|
|
8881
|
-
'109': {
|
|
8882
|
-
name: 'Wireless Custom Solar Sensor',
|
|
8883
|
-
parse: (d) => {
|
|
8884
|
-
return {
|
|
8885
|
-
illuminance: d.slice(0, 4).reduce(msbLsb),
|
|
8886
|
-
total_solar_radiation: d.slice(4, 6).reduce(msbLsb),
|
|
8887
|
-
ultraviolet_radiation: d.slice(6, 8).reduce(msbLsb)
|
|
8888
|
-
};
|
|
8889
|
-
},
|
|
8890
|
-
'parse_fly': (frame) => {
|
|
8891
|
-
if(frame[2] > 8){
|
|
8892
|
-
let reset_mode = "Disabled";
|
|
8893
|
-
switch(frame[37]){
|
|
8894
|
-
case 0:
|
|
8895
|
-
reset_mode = "Disabled";
|
|
8896
|
-
break;
|
|
8897
|
-
case 1:
|
|
8898
|
-
reset_mode = "Shift Ends";
|
|
8899
|
-
break;
|
|
8900
|
-
case 2:
|
|
8901
|
-
reset_mode = "Timeout";
|
|
8902
|
-
break;
|
|
8903
|
-
}
|
|
8904
|
-
let acc_odr = "10Hz";
|
|
8905
|
-
switch(frame[39]){
|
|
8906
|
-
case 0:
|
|
8907
|
-
acc_odr = "10Hz";
|
|
8908
|
-
break;
|
|
8909
|
-
case 1:
|
|
8910
|
-
acc_odr = "20Hz";
|
|
8911
|
-
break;
|
|
8912
|
-
case 2:
|
|
8913
|
-
acc_odr = "50Hz";
|
|
8914
|
-
break;
|
|
8915
|
-
case 3:
|
|
8916
|
-
acc_odr = "100Hz";
|
|
8917
|
-
break;
|
|
8918
|
-
case 4:
|
|
8919
|
-
acc_odr = "200Hz";
|
|
8920
|
-
break;
|
|
8921
|
-
case 5:
|
|
8922
|
-
acc_odr = "400Hz";
|
|
8923
|
-
break;
|
|
8924
|
-
}
|
|
8925
|
-
let rtc_sampling_interval = "5 seconds";
|
|
8926
|
-
switch(frame[38]){
|
|
8927
|
-
case 0:
|
|
8928
|
-
rtc_sampling_interval = "1 minute";
|
|
8929
|
-
break;
|
|
8930
|
-
case 1:
|
|
8931
|
-
rtc_sampling_interval = "5 minutes";
|
|
8932
|
-
break;
|
|
8933
|
-
case 2:
|
|
8934
|
-
rtc_sampling_interval = "15 minutes";
|
|
8935
|
-
break;
|
|
8936
|
-
case 3:
|
|
8937
|
-
rtc_sampling_interval = "30 minutes";
|
|
8938
|
-
break;
|
|
8939
|
-
case 4:
|
|
8940
|
-
rtc_sampling_interval = "1 hour";
|
|
8941
|
-
break;
|
|
8942
|
-
case 5:
|
|
8943
|
-
rtc_sampling_interval = "2 hours";
|
|
8944
|
-
break;
|
|
8945
|
-
case 6:
|
|
8946
|
-
rtc_sampling_interval = "3 hours";
|
|
8947
|
-
break;
|
|
8948
|
-
case 7:
|
|
8949
|
-
rtc_sampling_interval = "6 hours";
|
|
8950
|
-
break;
|
|
8951
|
-
case 8:
|
|
8952
|
-
rtc_sampling_interval = "12 hours";
|
|
8953
|
-
break;
|
|
8954
|
-
case 9:
|
|
8955
|
-
rtc_sampling_interval = "5 seconds";
|
|
8956
|
-
break;
|
|
8957
|
-
case 10:
|
|
8958
|
-
rtc_sampling_interval = "10 seconds";
|
|
8959
|
-
break;
|
|
8960
|
-
case 11:
|
|
8961
|
-
rtc_sampling_interval = "15 seconds";
|
|
8962
|
-
break;
|
|
8963
|
-
case 12:
|
|
8964
|
-
rtc_sampling_interval = "30 seconds";
|
|
8965
|
-
break;
|
|
8966
|
-
}
|
|
8967
|
-
return {
|
|
8968
|
-
'firmware': frame[2],
|
|
8969
|
-
'accelerometer_threshold': (frame[16]* 32) + "mg",
|
|
8970
|
-
'debouncing_timeout': frame[17] + "sec",
|
|
8971
|
-
'accelero_state': frame[18]? "Enabled": "Disabled",
|
|
8972
|
-
'input_1_active_edge': frame[19]? "Rising": "Falling",
|
|
8973
|
-
'input_2_active_edge': frame[20]? "Rising": "Falling",
|
|
8974
|
-
'input_3_active_edge': frame[21]? "Rising": "Falling",
|
|
8975
|
-
'counter_threshold': frame.slice(22, 26).reduce(msbLsb) + "sec",
|
|
8976
|
-
'trasnmit_on_change_status': frame[26]? "Enabled": "Disabled",
|
|
8977
|
-
'Shift_end_1': [
|
|
8978
|
-
String(frame[27]).padStart(2, '0'),
|
|
8979
|
-
String(frame[28]).padStart(2, '0')
|
|
8980
|
-
].join(':'),
|
|
8981
|
-
'Shift_end_2': [
|
|
8982
|
-
String(frame[29]).padStart(2, '0'),
|
|
8983
|
-
String(frame[30]).padStart(2, '0')
|
|
8984
|
-
].join(':'),
|
|
8985
|
-
'Shift_end_3': [
|
|
8986
|
-
String(frame[31]).padStart(2, '0'),
|
|
8987
|
-
String(frame[32]).padStart(2, '0')
|
|
8988
|
-
].join(':'),
|
|
8989
|
-
'Shift_end_4': [
|
|
8990
|
-
String(frame[33]).padStart(2, '0'),
|
|
8991
|
-
String(frame[34]).padStart(2, '0')
|
|
8992
|
-
].join(':'),
|
|
8993
|
-
'reset_timeout': frame.slice(35, 37).reduce(msbLsb) + "min",
|
|
8994
|
-
'counter_reset_mode': reset_mode,
|
|
8995
|
-
'sampling_interval': rtc_sampling_interval,
|
|
8996
|
-
'acc_odr': acc_odr,
|
|
8997
|
-
'hardware_id': frame.slice(40, 43),
|
|
8998
|
-
'report_rate': frame.slice(43, 47).reduce(msbLsb) + "sec",
|
|
8999
|
-
'tx_life_counter': frame.slice(47, 51).reduce(msbLsb),
|
|
9000
|
-
'machine_values': {
|
|
9001
|
-
'firmware': frame[2],
|
|
9002
|
-
'accelerometer_threshold': frame[16],
|
|
9003
|
-
'debouncing_timeout': frame[17],
|
|
9004
|
-
'accelero_state': frame[18],
|
|
9005
|
-
'input_1_active_edge': frame[19],
|
|
9006
|
-
'input_2_active_edge': frame[20],
|
|
9007
|
-
'input_3_active_edge': frame[21],
|
|
9008
|
-
'counter_threshold': frame.slice(22, 26),
|
|
9009
|
-
'trasnmit_on_change_status': frame[26],
|
|
9010
|
-
'Shift_end_1': frame.slice(27, 29),
|
|
9011
|
-
'Shift_end_2': frame.slice(29, 31),
|
|
9012
|
-
'Shift_end_3': frame.slice(31, 33),
|
|
9013
|
-
'Shift_end_4': frame.slice(33, 35),
|
|
9014
|
-
'reset_timeout': frame.slice(35, 37),
|
|
9015
|
-
'counter_reset_mode': frame[37],
|
|
9016
|
-
'sampling_interval': frame[38],
|
|
9017
|
-
'acc_odr': frame[39],
|
|
9018
|
-
'hardware_id': frame.slice(40, 43),
|
|
9019
|
-
'report_rate': frame.slice(43, 47),
|
|
9020
|
-
'tx_life_counter': frame.slice(47, 51)
|
|
9021
|
-
}
|
|
9022
|
-
}
|
|
9023
|
-
} else{
|
|
9024
|
-
return {
|
|
9025
|
-
'firmware': frame[2],
|
|
9026
|
-
'report_rate': frame.slice(12, 16).reduce(msbLsb).toString() + "sec.",
|
|
9027
|
-
'accelerometer_threshold': (frame[16]* 32).toString() + "mg.",
|
|
9028
|
-
'debouncing_timeout': frame[17].toString() + "sec.",
|
|
9029
|
-
'accelero_state': frame[18],
|
|
9030
|
-
'digital_inputs_active_edge': frame.slice(19, 22),
|
|
9031
|
-
'counter_threshold': frame.slice(22, 26).reduce(msbLsb).toString() + "sec.",
|
|
9032
|
-
'trasnmit_on_change_status': frame[26],
|
|
9033
|
-
'machine_values': {
|
|
9034
|
-
'firmware': frame[2],
|
|
9035
|
-
'report_rate': frame.slice(12, 16),
|
|
9036
|
-
'accelerometer_threshold': frame[16],
|
|
9037
|
-
'debouncing_timeout': frame[17],
|
|
9038
|
-
'accelero_active_state': frame[18],
|
|
9039
|
-
'digital_inputs_active_edge': frame.slice(19, 22),
|
|
9040
|
-
'counter_threshold': frame.slice(22, 26),
|
|
9041
|
-
'trasnmit_on_change_status': frame[26]
|
|
9042
|
-
}
|
|
9043
|
-
}
|
|
9044
|
-
}
|
|
9045
|
-
}
|
|
9046
|
-
},
|
|
9047
|
-
'109': {
|
|
9048
|
-
name: 'Wireless Custom Solar Sensor',
|
|
9049
|
-
parse: (d) => {
|
|
9050
|
-
return {
|
|
9051
|
-
illuminance: d.slice(0, 4).reduce(msbLsb),
|
|
9052
|
-
total_solar_radiation: d.slice(4, 6).reduce(msbLsb),
|
|
9053
|
-
ultraviolet_radiation: d.slice(6, 8).reduce(msbLsb)
|
|
9054
|
-
};
|
|
9055
|
-
},
|
|
9056
|
-
'parse_fly': (frame) => {
|
|
9057
|
-
return {
|
|
9058
|
-
'firmware': frame[2],
|
|
9059
|
-
'hardware_id': frame.slice(12, 15),
|
|
9060
|
-
'sample_rate': frame.slice(15, 19).reduce(msbLsb) + " Sec.",
|
|
9061
|
-
'tx_life_counter': frame.slice(19, 23).reduce(msbLsb),
|
|
9062
|
-
'machine_values': {
|
|
9063
|
-
'firmware': frame[2],
|
|
9064
|
-
'hardware_id': frame.slice(12, 15),
|
|
9065
|
-
'sample_rate': frame.slice(15, 19).reduce(msbLsb),
|
|
9066
|
-
'tx_life_counter': frame.slice(19, 23).reduce(msbLsb)
|
|
9067
|
-
}
|
|
9068
|
-
}
|
|
9069
|
-
}
|
|
9070
|
-
},
|
|
9071
|
-
'112': {
|
|
9072
|
-
name: 'Condition Based/Predictive Maintenance Sensor v4',
|
|
9073
|
-
parse: (payload, parsed, mac) => {
|
|
9074
|
-
if(payload[7] & 2){
|
|
9075
|
-
console.log('Error found');
|
|
9076
|
-
console.log(payload[7]);
|
|
9077
|
-
parsed.data = {error: 'Error found, Sensor Probe may be unattached'};
|
|
9078
|
-
return parsed;
|
|
9079
|
-
}
|
|
9080
|
-
let msg_type = (payload[7] & 16)? 'motion' : 'regular';
|
|
9081
|
-
if (payload[8] === 1) {
|
|
9082
|
-
var deviceAddr = mac;
|
|
9083
|
-
// var firmware = payload[1];
|
|
9084
|
-
// var hour = payload[12];
|
|
9085
|
-
// var minute = payload[13];
|
|
9086
|
-
var expected_packets = msbLsb(payload[16], payload[17]);
|
|
9087
|
-
var current_packet = msbLsb(payload[18], payload[19]);
|
|
9088
|
-
var sdata_start = 20;
|
|
9089
|
-
|
|
9090
|
-
|
|
9091
|
-
if (globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1) {
|
|
9092
|
-
if (expected_packets != 1) {
|
|
9093
|
-
// if current packet is equal to last one (duplicated data). This does not apply to the last package
|
|
9094
|
-
if (globalDevices[deviceAddr].last_packet_counter == current_packet) {
|
|
9095
|
-
console.log('Duplicated message')
|
|
9096
|
-
return;
|
|
9097
|
-
}
|
|
9098
|
-
// if current packet is equal to 1 or last packet counter is higher thant current packet
|
|
9099
|
-
if (current_packet == 1 || (globalDevices[deviceAddr].last_packet_counter > current_packet)) {
|
|
9100
|
-
console.log('Recovering bad packet');
|
|
9101
|
-
// clear stream object & timeout
|
|
9102
|
-
parent.sensor_types[112].utils.clear_globalDevices_stream(deviceAddr);
|
|
9103
|
-
|
|
9104
|
-
// init new stream
|
|
9105
|
-
parent.sensor_types[112].utils.init_globalDevices_stream(deviceAddr, payload, expected_packets, parsed, msg_type);
|
|
9106
|
-
|
|
9107
|
-
globalDevices[deviceAddr].last_packet_counter = current_packet;
|
|
9108
|
-
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
9109
|
-
return;
|
|
9110
|
-
} else {
|
|
9111
|
-
globalDevices[deviceAddr].last_packet_counter = current_packet;
|
|
9112
|
-
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
9113
|
-
}
|
|
9114
|
-
} else {
|
|
9115
|
-
// clear stream object & timeout
|
|
9116
|
-
parent.sensor_types[112].utils.clear_globalDevices_stream(deviceAddr);
|
|
9117
|
-
|
|
9118
|
-
// init new stream
|
|
9119
|
-
parent.sensor_types[112].utils.init_globalDevices_stream(deviceAddr, payload, expected_packets, parsed, msg_type);
|
|
9120
|
-
|
|
9121
|
-
globalDevices[deviceAddr].last_packet_counter = current_packet;
|
|
9122
|
-
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
9123
|
-
}
|
|
9124
|
-
} else {
|
|
9125
|
-
// clear stream object & timeout
|
|
9126
|
-
parent.sensor_types[112].utils.clear_globalDevices_stream(deviceAddr);
|
|
9127
|
-
|
|
9128
|
-
// init new stream
|
|
9129
|
-
parent.sensor_types[112].utils.init_globalDevices_stream(deviceAddr, payload, expected_packets, parsed, msg_type);
|
|
9130
|
-
|
|
9131
|
-
globalDevices[deviceAddr].last_packet_counter = current_packet;
|
|
9132
|
-
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
9133
|
-
}
|
|
9134
|
-
if (current_packet == expected_packets) {
|
|
9135
|
-
// concatenate stream
|
|
9136
|
-
sensor_data = parent.sensor_types[112].utils.concat_fft_data(deviceAddr, payload[8], msg_type);
|
|
9137
|
-
// clear stream object & timeout
|
|
9138
|
-
parent.sensor_types[112].utils.clear_globalDevices_stream(deviceAddr);
|
|
9139
|
-
return sensor_data;
|
|
9140
|
-
} else {
|
|
9141
|
-
return;
|
|
9142
|
-
}
|
|
9143
|
-
}
|
|
9144
|
-
else if(payload[8] === 0 || payload[8] === 2 || payload[8] === 3){
|
|
9145
|
-
// mode byte most significant bit will indicate fft data.
|
|
9146
|
-
// console.log(d);
|
|
9147
|
-
var odr;
|
|
9148
|
-
switch(payload[9]){
|
|
9149
|
-
case 6:
|
|
9150
|
-
odr = "50Hz"
|
|
9151
|
-
break;
|
|
9152
|
-
case 7:
|
|
9153
|
-
odr = "100Hz";
|
|
9154
|
-
break;
|
|
9155
|
-
case 8:
|
|
9156
|
-
odr = "200Hz";
|
|
9157
|
-
break;
|
|
9158
|
-
case 9:
|
|
9159
|
-
odr = "400Hz";
|
|
9160
|
-
break;
|
|
9161
|
-
case 10:
|
|
9162
|
-
odr = "800Hz";
|
|
9163
|
-
break;
|
|
9164
|
-
case 11:
|
|
9165
|
-
odr = "1600Hz";
|
|
9166
|
-
break;
|
|
9167
|
-
case 12:
|
|
9168
|
-
odr = "3200Hz";
|
|
9169
|
-
break;
|
|
9170
|
-
case 13:
|
|
9171
|
-
odr = "6400Hz";
|
|
9172
|
-
break;
|
|
9173
|
-
case 14:
|
|
9174
|
-
odr = "12800Hz";
|
|
9175
|
-
break;
|
|
9176
|
-
case 15:
|
|
9177
|
-
odr = "25600Hz";
|
|
9178
|
-
break;
|
|
9179
|
-
}
|
|
9180
|
-
return {
|
|
9181
|
-
mode: payload[8],
|
|
9182
|
-
msg_type: msg_type,
|
|
9183
|
-
|
|
9184
|
-
odr: odr,
|
|
9185
|
-
temperature: signInt(payload.slice(10, 12).reduce(msbLsb), 16) / 100,
|
|
9186
|
-
ext_temperature: signInt(payload.slice(12, 16).reduce(msbLsb), 32) / 100,
|
|
9187
|
-
current: signInt(payload.slice(16, 20).reduce(msbLsb), 32) / 1000,
|
|
9188
|
-
x_rms_ACC_G: payload.slice(20, 22).reduce(msbLsb)/1000,
|
|
9189
|
-
x_max_ACC_G: payload.slice(22, 24).reduce(msbLsb)/1000,
|
|
9190
|
-
x_velocity_mm_sec: payload.slice(24, 26).reduce(msbLsb) / 100,
|
|
9191
|
-
x_displacement_mm: payload.slice(26, 28).reduce(msbLsb) / 100,
|
|
9192
|
-
x_peak_one_Hz: payload.slice(28, 30).reduce(msbLsb),
|
|
9193
|
-
x_peak_two_Hz: payload.slice(30, 32).reduce(msbLsb),
|
|
9194
|
-
x_peak_three_Hz: payload.slice(32, 34).reduce(msbLsb),
|
|
9195
|
-
|
|
9196
|
-
y_rms_ACC_G: payload.slice(34, 36).reduce(msbLsb)/1000,
|
|
9197
|
-
y_max_ACC_G: payload.slice(36, 38).reduce(msbLsb)/1000,
|
|
9198
|
-
y_velocity_mm_sec: payload.slice(38, 40).reduce(msbLsb) / 100,
|
|
9199
|
-
y_displacement_mm: payload.slice(40, 42).reduce(msbLsb) / 100,
|
|
9200
|
-
y_peak_one_Hz: payload.slice(42, 44).reduce(msbLsb),
|
|
9201
|
-
y_peak_two_Hz: payload.slice(44, 46).reduce(msbLsb),
|
|
9202
|
-
y_peak_three_Hz: payload.slice(46, 48).reduce(msbLsb),
|
|
9203
|
-
|
|
9204
|
-
z_rms_ACC_G: payload.slice(48, 50).reduce(msbLsb)/1000,
|
|
9205
|
-
z_max_ACC_G: payload.slice(50, 52).reduce(msbLsb)/1000,
|
|
9206
|
-
z_velocity_mm_sec: payload.slice(52, 54).reduce(msbLsb) / 100,
|
|
9207
|
-
z_displacement_mm: payload.slice(54, 56).reduce(msbLsb) / 100,
|
|
9208
|
-
z_peak_one_Hz: payload.slice(56, 58).reduce(msbLsb),
|
|
9209
|
-
z_peak_two_Hz: payload.slice(58, 60).reduce(msbLsb),
|
|
9210
|
-
z_peak_three_Hz: payload.slice(60, 62).reduce(msbLsb),
|
|
9211
|
-
rpm: payload.slice(62, 64).reduce(msbLsb)
|
|
9212
|
-
};
|
|
9213
|
-
}
|
|
9214
|
-
// else{
|
|
9215
|
-
// parsed.data = {'error': 'Vibration mode error'}
|
|
9216
|
-
// return parsed;
|
|
9217
|
-
// }
|
|
9218
|
-
},
|
|
9219
|
-
'utils': {
|
|
9220
|
-
'clear_globalDevices_stream': (deviceAddr) => {
|
|
9221
|
-
if(Object.hasOwn(globalDevices, deviceAddr)){
|
|
9222
|
-
if(Object.hasOwn(globalDevices[deviceAddr], 'packet_stream_timeout')){
|
|
9223
|
-
clearTimeout(globalDevices[deviceAddr].packet_stream_timeout);
|
|
9224
|
-
}
|
|
9225
|
-
delete globalDevices[deviceAddr];
|
|
9226
|
-
}
|
|
9227
|
-
},
|
|
9228
|
-
'init_globalDevices_stream'(deviceAddr, payload, expected_packets, parsed, msg_type){
|
|
9229
|
-
globalDevices[deviceAddr] = {
|
|
9230
|
-
data: {},
|
|
9231
|
-
odr: msbLsb(payload[9], payload[10]),
|
|
9232
|
-
mo: payload[8],
|
|
9233
|
-
fsr: payload[11] >> 5,
|
|
9234
|
-
hour: payload[12],
|
|
9235
|
-
minute: payload[13],
|
|
9236
|
-
temperature: msbLsb(payload[14], payload[15]) / 100,
|
|
9237
|
-
expected_packets: expected_packets
|
|
9238
|
-
}
|
|
9239
|
-
globalDevices[deviceAddr].packet_stream_timeout = setTimeout(() => {
|
|
9240
|
-
parsed.sensor_data = parent.sensor_types[112].utils.concat_fft_data(deviceAddr, payload[8], msg_type);
|
|
9241
|
-
parsed.sensor_data.error = 'Time Series Data Stream Timeout - incomplete data received';
|
|
9242
|
-
|
|
9243
|
-
parsed.sensor_name = parent.sensor_types[112].name;
|
|
9244
|
-
parsed.type = 'sensor_data';
|
|
9245
|
-
parsed.addr = deviceAddr;
|
|
9246
|
-
parsed.received = Date.now();
|
|
9247
|
-
|
|
9248
|
-
parent._emitter.emit('sensor_data', parsed);
|
|
9249
|
-
parent._emitter.emit('sensor_data-112', parsed);
|
|
9250
|
-
parent._emitter.emit('sensor_data'+'-'+deviceAddr, parsed);
|
|
9251
|
-
}, 60000);
|
|
9252
|
-
},
|
|
9253
|
-
'concat_fft_data': (deviceAddr, mode, msg_type) => {
|
|
9254
|
-
var raw_data = new Array();
|
|
9255
|
-
for(const packet in globalDevices[deviceAddr].data){
|
|
9256
|
-
raw_data = raw_data.concat(globalDevices[deviceAddr].data[packet]);
|
|
9257
|
-
}
|
|
9258
|
-
var label = 0;
|
|
9259
|
-
|
|
9260
|
-
var fft_concat = {};
|
|
9261
|
-
|
|
9262
|
-
var en_axis_data = {};
|
|
9263
|
-
en_axis_data.x_offset = 0;
|
|
9264
|
-
en_axis_data.y_offset = 2;
|
|
9265
|
-
en_axis_data.z_offset = 4;
|
|
9266
|
-
en_axis_data.increment = 6;
|
|
9267
|
-
fft_concat = {x: [], y: [], z: []};
|
|
9268
|
-
|
|
9269
|
-
var fsr_mult = .00006;
|
|
9270
|
-
var fsr_text = "";
|
|
9271
|
-
|
|
9272
|
-
switch(globalDevices[deviceAddr].fsr){
|
|
9273
|
-
case 0:
|
|
9274
|
-
fsr_mult = 0.00006;
|
|
9275
|
-
break;
|
|
9276
|
-
case 1:
|
|
9277
|
-
fsr_mult = 0.00012;
|
|
9278
|
-
break;
|
|
9279
|
-
case 2:
|
|
9280
|
-
fsr_mult = 0.00024;
|
|
9281
|
-
break;
|
|
9282
|
-
case 3:
|
|
9283
|
-
fsr_mult = 0.00049;
|
|
9284
|
-
break;
|
|
9285
|
-
}
|
|
9286
|
-
switch(globalDevices[deviceAddr].fsr){
|
|
9287
|
-
case 0:
|
|
9288
|
-
fsr_text = "2g";
|
|
9289
|
-
break;
|
|
9290
|
-
case 1:
|
|
9291
|
-
fsr_text = "4g";
|
|
9292
|
-
break;
|
|
9293
|
-
case 2:
|
|
9294
|
-
fsr_text = "8g";
|
|
9295
|
-
break;
|
|
9296
|
-
case 3:
|
|
9297
|
-
fsr_text = "16g";
|
|
9298
|
-
break;
|
|
9299
|
-
}
|
|
9300
|
-
|
|
9301
|
-
for(var i = 0; i < raw_data.length; i+=en_axis_data.increment){
|
|
9302
|
-
label++;
|
|
9303
|
-
|
|
9304
|
-
if('x_offset' in en_axis_data){
|
|
9305
|
-
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)));
|
|
9306
|
-
}
|
|
9307
|
-
if('y_offset' in en_axis_data){
|
|
9308
|
-
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)));
|
|
9309
|
-
}
|
|
9310
|
-
if('z_offset' in en_axis_data){
|
|
9311
|
-
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)));
|
|
9312
|
-
}
|
|
9313
|
-
}
|
|
9314
|
-
var fft_concat_obj = {
|
|
9315
|
-
mode: mode,
|
|
9316
|
-
msg_type: msg_type,
|
|
9317
|
-
time_id: [
|
|
9318
|
-
String(globalDevices[deviceAddr].hour).padStart(2, '0'),
|
|
9319
|
-
String(globalDevices[deviceAddr].minute).padStart(2, '0'),
|
|
9320
|
-
].join(':'),
|
|
9321
|
-
mac_address: deviceAddr,
|
|
9322
|
-
fsr: fsr_text,
|
|
9323
|
-
odr: globalDevices[deviceAddr].odr,
|
|
9324
|
-
temperature: globalDevices[deviceAddr].temperature,
|
|
9325
|
-
total_samples: label,
|
|
9326
|
-
fft_confidence : ((Object.keys(globalDevices[deviceAddr].data).length / globalDevices[deviceAddr].expected_packets) * 100).toFixed(2) + '%',
|
|
9327
|
-
data: fft_concat
|
|
9328
|
-
};
|
|
9329
|
-
return fft_concat_obj;
|
|
9330
|
-
}
|
|
9331
|
-
},
|
|
9332
|
-
'parse_fly': (frame) => {
|
|
9333
|
-
let frame_data = {};
|
|
9334
|
-
switch(frame[16]){
|
|
9335
|
-
case 0:
|
|
9336
|
-
frame_data.mode = "Processed";
|
|
9337
|
-
break;
|
|
9338
|
-
case 1:
|
|
9339
|
-
frame_data.mode = "Raw";
|
|
9340
|
-
break;
|
|
9341
|
-
case 2:
|
|
9342
|
-
frame_data.mode = "Processed + Raw on demand";
|
|
9343
|
-
break;
|
|
9344
|
-
case 3:
|
|
9345
|
-
frame_data.mode = "Smart";
|
|
9346
|
-
break;
|
|
9347
|
-
}
|
|
9348
|
-
switch(frame[17]){
|
|
9349
|
-
case 6:
|
|
9350
|
-
frame_data.odr_1 = 50;
|
|
9351
|
-
break;
|
|
9352
|
-
case 7:
|
|
9353
|
-
frame_data.odr_1 = 100;
|
|
9354
|
-
break;
|
|
9355
|
-
case 8:
|
|
9356
|
-
frame_data.odr_1 = 200;
|
|
9357
|
-
break;
|
|
9358
|
-
case 9:
|
|
9359
|
-
frame_data.odr_1 = 400;
|
|
9360
|
-
break;
|
|
9361
|
-
case 10:
|
|
9362
|
-
frame_data.odr_1 = 800;
|
|
9363
|
-
break;
|
|
9364
|
-
case 11:
|
|
9365
|
-
frame_data.odr_1 = 1600;
|
|
9366
|
-
break;
|
|
9367
|
-
case 12:
|
|
9368
|
-
frame_data.odr_1 = 3200;
|
|
9369
|
-
break;
|
|
9370
|
-
case 13:
|
|
9371
|
-
frame_data.odr_1 = 6400;
|
|
9372
|
-
break;
|
|
9373
|
-
case 14:
|
|
9374
|
-
frame_data.odr_1 = 12800;
|
|
9375
|
-
break;
|
|
9376
|
-
case 15:
|
|
9377
|
-
frame_data.odr_1 = 25600;
|
|
9378
|
-
break;
|
|
9379
|
-
}
|
|
9380
|
-
frame_data.sampling_duration_1 = frame[18]*50 + "ms";
|
|
9381
|
-
switch(frame[19]){
|
|
9382
|
-
case 0:
|
|
9383
|
-
frame_data.filter_status = "Disabled";
|
|
9384
|
-
break;
|
|
9385
|
-
case 1:
|
|
9386
|
-
frame_data.filter_status = "Enabled";
|
|
9387
|
-
break;
|
|
9388
|
-
}
|
|
9389
|
-
switch(frame[20]){
|
|
9390
|
-
case 0:
|
|
9391
|
-
frame_data.lpf_coeff_1 = 4;
|
|
9392
|
-
break;
|
|
9393
|
-
case 1:
|
|
9394
|
-
frame_data.lpf_coeff_1 = 8;
|
|
9395
|
-
break;
|
|
9396
|
-
case 2:
|
|
9397
|
-
frame_data.lpf_coeff_1 = 16;
|
|
9398
|
-
break;
|
|
9399
|
-
case 2:
|
|
9400
|
-
frame_data.lpf_coeff_1 = 32;
|
|
9401
|
-
break;
|
|
9402
|
-
case 4:
|
|
9403
|
-
frame_data.lpf_coeff_1 = 64;
|
|
9404
|
-
break;
|
|
9405
|
-
case 5:
|
|
9406
|
-
frame_data.lpf_coeff_1 = 128;
|
|
9407
|
-
break;
|
|
9408
|
-
case 6:
|
|
9409
|
-
frame_data.lpf_coeff_1 = 256;
|
|
9410
|
-
break;
|
|
9411
|
-
case 7:
|
|
9412
|
-
frame_data.lpf_coeff_1 = 512;
|
|
9413
|
-
break;
|
|
9414
|
-
case 8:
|
|
9415
|
-
frame_data.lpf_coeff_1 = 1024;
|
|
9416
|
-
break;
|
|
9417
|
-
case 9:
|
|
9418
|
-
frame_data.lpf_coeff_1 = 2048;
|
|
9419
|
-
break;
|
|
9420
|
-
}
|
|
9421
|
-
frame_data.lpf_freq_1 = frame_data.odr_1 / frame_data.lpf_coeff_1;
|
|
9422
|
-
switch(frame[21]){
|
|
9423
|
-
case 0:
|
|
9424
|
-
frame_data.hpf_coeff_1 = 4;
|
|
9425
|
-
break;
|
|
9426
|
-
case 1:
|
|
9427
|
-
frame_data.hpf_coeff_1 = 8;
|
|
9428
|
-
break;
|
|
9429
|
-
case 2:
|
|
9430
|
-
frame_data.hpf_coeff_1 = 16;
|
|
9431
|
-
break;
|
|
9432
|
-
case 2:
|
|
9433
|
-
frame_data.hpf_coeff_1 = 32;
|
|
9434
|
-
break;
|
|
9435
|
-
case 4:
|
|
9436
|
-
frame_data.hpf_coeff_1 = 64;
|
|
9437
|
-
break;
|
|
9438
|
-
case 5:
|
|
9439
|
-
frame_data.hpf_coeff_1 = 128;
|
|
9440
|
-
break;
|
|
9441
|
-
case 6:
|
|
9442
|
-
frame_data.hpf_coeff_1 = 256;
|
|
9443
|
-
break;
|
|
9444
|
-
case 7:
|
|
9445
|
-
frame_data.hpf_coeff_1 = 512;
|
|
9446
|
-
break;
|
|
9447
|
-
case 8:
|
|
9448
|
-
frame_data.hpf_coeff_1 = 1024;
|
|
9449
|
-
break;
|
|
9450
|
-
case 9:
|
|
9451
|
-
frame_data.hpf_coeff_1 = 2048;
|
|
9452
|
-
break;
|
|
9453
|
-
}
|
|
9454
|
-
frame_data.hpf_freq_1 = frame_data.odr_1 / frame_data.hpf_coeff_1;
|
|
9455
|
-
switch(frame[22]){
|
|
9456
|
-
case 0:
|
|
9457
|
-
frame_data.sampling_interval = "5 Minutes";
|
|
9458
|
-
frame_data.sampling_interval_number = 5;
|
|
9459
|
-
break;
|
|
9460
|
-
case 1:
|
|
9461
|
-
frame_data.sampling_interval = "10 Minutes";
|
|
9462
|
-
frame_data.sampling_interval_number = 10;
|
|
9463
|
-
break;
|
|
9464
|
-
case 2:
|
|
9465
|
-
frame_data.sampling_interval = "15 Minutes";
|
|
9466
|
-
frame_data.sampling_interval_number = 15;
|
|
9467
|
-
break;
|
|
9468
|
-
case 2:
|
|
9469
|
-
frame_data.sampling_interval = "20 Minutes";
|
|
9470
|
-
frame_data.sampling_interval_number = 20;
|
|
9471
|
-
break;
|
|
9472
|
-
case 4:
|
|
9473
|
-
frame_data.sampling_interval = "30 Minutes";
|
|
9474
|
-
frame_data.sampling_interval_number = 30;
|
|
9475
|
-
break;
|
|
9476
|
-
case 5:
|
|
9477
|
-
frame_data.sampling_interval = "60 Minutes";
|
|
9478
|
-
frame_data.sampling_interval_number = 60;
|
|
9479
|
-
break;
|
|
9480
|
-
case 6:
|
|
9481
|
-
frame_data.sampling_interval = "120 Minutes";
|
|
9482
|
-
frame_data.sampling_interval_number = 120;
|
|
9483
|
-
break;
|
|
9484
|
-
case 7:
|
|
9485
|
-
frame_data.sampling_interval = "180 Minutes";
|
|
9486
|
-
frame_data.sampling_interval_number = 180;
|
|
9487
|
-
break;
|
|
9488
|
-
case 8:
|
|
9489
|
-
frame_data.sampling_interval = "1 Minute";
|
|
9490
|
-
frame_data.sampling_interval_number = 1;
|
|
9491
|
-
break;
|
|
9492
|
-
}
|
|
9493
|
-
frame_data.on_request_timeout = frame[23] + " Seconds";
|
|
9494
|
-
frame_data.deadband = frame[24] + "mg";
|
|
9495
|
-
|
|
9496
|
-
switch(frame[25]){
|
|
9497
|
-
case 0:
|
|
9498
|
-
frame_data.payload_length = "50 Bytes";
|
|
9499
|
-
break;
|
|
9500
|
-
case 1:
|
|
9501
|
-
frame_data.payload_length = "100 Bytes";
|
|
9502
|
-
break;
|
|
9503
|
-
case 2:
|
|
9504
|
-
frame_data.payload_length = "150 Bytes";
|
|
9505
|
-
break;
|
|
9506
|
-
case 3:
|
|
9507
|
-
frame_data.payload_length = "180 Bytes";
|
|
9508
|
-
break;
|
|
9509
|
-
}
|
|
9510
|
-
switch(frame[26]){
|
|
9511
|
-
case 0:
|
|
9512
|
-
frame_data.fsr_text = "2g";
|
|
9513
|
-
break;
|
|
9514
|
-
case 1:
|
|
9515
|
-
frame_data.fsr_text = "4g";
|
|
9516
|
-
break;
|
|
9517
|
-
case 2:
|
|
9518
|
-
frame_data.fsr_text = "8g";
|
|
9519
|
-
break;
|
|
9520
|
-
case 3:
|
|
9521
|
-
frame_data.fsr_text = "16g";
|
|
9522
|
-
break;
|
|
9523
|
-
}
|
|
9524
|
-
frame_data.rpm_status = frame[27]? 'Enabled': 'Disabled';
|
|
9525
|
-
frame_data.auto_raw_interval = frame[32] * frame_data.sampling_interval_number || 'disabled';
|
|
9526
|
-
frame_data.auto_raw_interval = typeof frame_data.auto_raw_interval === 'number' ? frame_data.auto_raw_interval+'min' : frame_data.auto_raw_interval;
|
|
9527
|
-
frame_data.smart_mode_threshold = frame[34] * 50;
|
|
9528
|
-
if(frame[2] > 5){ // for Firmware v6 and above
|
|
9529
|
-
frame_data.motion_to_delay = frame[41] * 50;
|
|
8569
|
+
String(frame[32]).padStart(2, '0')
|
|
8570
|
+
].join(':'),
|
|
8571
|
+
'Shift_end_4': [
|
|
8572
|
+
String(frame[33]).padStart(2, '0'),
|
|
8573
|
+
String(frame[34]).padStart(2, '0')
|
|
8574
|
+
].join(':'),
|
|
8575
|
+
'reset_timeout': frame.slice(35, 37).reduce(msbLsb) + "min",
|
|
8576
|
+
'counter_reset_mode': reset_mode,
|
|
8577
|
+
'sampling_interval': rtc_sampling_interval,
|
|
8578
|
+
'acc_odr': acc_odr,
|
|
8579
|
+
'hardware_id': frame.slice(40, 43),
|
|
8580
|
+
'report_rate': frame.slice(43, 47).reduce(msbLsb) + "sec",
|
|
8581
|
+
'tx_life_counter': frame.slice(47, 51).reduce(msbLsb),
|
|
8582
|
+
'machine_values': {
|
|
8583
|
+
'firmware': frame[2],
|
|
8584
|
+
'accelerometer_threshold': frame[16],
|
|
8585
|
+
'debouncing_timeout': frame[17],
|
|
8586
|
+
'accelero_state': frame[18],
|
|
8587
|
+
'input_1_active_edge': frame[19],
|
|
8588
|
+
'input_2_active_edge': frame[20],
|
|
8589
|
+
'input_3_active_edge': frame[21],
|
|
8590
|
+
'counter_threshold': frame.slice(22, 26),
|
|
8591
|
+
'trasnmit_on_change_status': frame[26],
|
|
8592
|
+
'Shift_end_1': frame.slice(27, 29),
|
|
8593
|
+
'Shift_end_2': frame.slice(29, 31),
|
|
8594
|
+
'Shift_end_3': frame.slice(31, 33),
|
|
8595
|
+
'Shift_end_4': frame.slice(33, 35),
|
|
8596
|
+
'reset_timeout': frame.slice(35, 37),
|
|
8597
|
+
'counter_reset_mode': frame[37],
|
|
8598
|
+
'sampling_interval': frame[38],
|
|
8599
|
+
'acc_odr': frame[39],
|
|
8600
|
+
'hardware_id': frame.slice(40, 43),
|
|
8601
|
+
'report_rate': frame.slice(43, 47),
|
|
8602
|
+
'tx_life_counter': frame.slice(47, 51)
|
|
8603
|
+
}
|
|
8604
|
+
}
|
|
8605
|
+
} else{
|
|
9530
8606
|
return {
|
|
9531
8607
|
'firmware': frame[2],
|
|
9532
|
-
'
|
|
9533
|
-
'
|
|
9534
|
-
'
|
|
9535
|
-
'
|
|
9536
|
-
'
|
|
9537
|
-
'
|
|
9538
|
-
'
|
|
9539
|
-
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
9540
|
-
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
9541
|
-
'sampling_interval': frame_data.sampling_interval,
|
|
9542
|
-
'on_request_timeout': frame_data.on_request_timeout,
|
|
9543
|
-
'deadband': frame_data.deadband,
|
|
9544
|
-
'payload_length': frame_data.payload_length,
|
|
9545
|
-
'fsr': frame_data.fsr_text,
|
|
9546
|
-
'rpm_compute_status': frame_data.rpm_status,
|
|
9547
|
-
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
9548
|
-
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
9549
|
-
'smart_mode_skip_count': frame[33],
|
|
9550
|
-
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
9551
|
-
'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
|
|
9552
|
-
'max_tx_raw_samples': frame.slice(39, 41).reduce(msbLsb),
|
|
9553
|
-
'motion_to_sampling_delay': frame_data.motion_to_delay +'msec',
|
|
9554
|
-
'max_num_of_motion_tx_per_interval': frame[42],
|
|
9555
|
-
'hardware_id': frame.slice(43, 46),
|
|
9556
|
-
'reserved': frame.slice(46, 50),
|
|
9557
|
-
'tx_lifetime_counter': frame.slice(50, 54).reduce(msbLsb),
|
|
8608
|
+
'report_rate': frame.slice(12, 16).reduce(msbLsb).toString() + "sec.",
|
|
8609
|
+
'accelerometer_threshold': (frame[16]* 32) + "mg.",
|
|
8610
|
+
'debouncing_timeout': frame[17].toString() + "msec.",
|
|
8611
|
+
'accelero_state': frame[18],
|
|
8612
|
+
'digital_inputs_active_edge': frame.slice(19, 22).reduce(msbLsb),
|
|
8613
|
+
'counter_threshold': frame.slice(22, 26).reduce(msbLsb),
|
|
8614
|
+
'trasnmit_on_change_status': frame[26],
|
|
9558
8615
|
'machine_values': {
|
|
9559
8616
|
'firmware': frame[2],
|
|
9560
|
-
'
|
|
9561
|
-
'
|
|
9562
|
-
'
|
|
9563
|
-
'
|
|
9564
|
-
'
|
|
9565
|
-
'
|
|
9566
|
-
'
|
|
9567
|
-
'sampling_interval': frame[22],
|
|
9568
|
-
'on_request_timeout': frame[23],
|
|
9569
|
-
'deadband': frame[24],
|
|
9570
|
-
'payload_length': frame[25],
|
|
9571
|
-
'fsr': frame[26],
|
|
9572
|
-
'rpm_compute_status': frame[27],
|
|
9573
|
-
'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
|
|
9574
|
-
'auto_raw_interval': frame[32],
|
|
9575
|
-
'smart_mode_skip_count': frame[33],
|
|
9576
|
-
'smart_mode_acc_threshold':frame[34],
|
|
9577
|
-
'uptime_counter': frame.slice(35, 39),
|
|
9578
|
-
'max_tx_raw_samples': frame.slice(39, 41),
|
|
9579
|
-
'motion_to_sampling_delay': frame[41],
|
|
9580
|
-
'max_num_of_motion_tx_per_interval': frame[42],
|
|
9581
|
-
'hardware_id': frame.slice(43, 46),
|
|
9582
|
-
'reserved': frame.slice(46, 50),
|
|
9583
|
-
'tx_lifetime_counter': frame.slice(50, 54)
|
|
8617
|
+
'report_rate': frame.slice(12, 16),
|
|
8618
|
+
'accelerometer_threshold': frame[16],
|
|
8619
|
+
'debouncing_timeout': frame[17],
|
|
8620
|
+
'accelero_active_state': frame[18],
|
|
8621
|
+
'digital_inputs_active_edge': frame.slice(19, 22),
|
|
8622
|
+
'counter_threshold': frame.slice(22, 26),
|
|
8623
|
+
'trasnmit_on_change_status': frame[26]
|
|
9584
8624
|
}
|
|
9585
8625
|
}
|
|
9586
|
-
}
|
|
8626
|
+
}
|
|
8627
|
+
}
|
|
8628
|
+
},
|
|
8629
|
+
'109': {
|
|
8630
|
+
name: 'Wireless Custom Solar Sensor',
|
|
8631
|
+
parse: (d) => {
|
|
8632
|
+
return {
|
|
8633
|
+
illuminance: d.slice(0, 4).reduce(msbLsb),
|
|
8634
|
+
total_solar_radiation: d.slice(4, 6).reduce(msbLsb),
|
|
8635
|
+
ultraviolet_radiation: d.slice(6, 8).reduce(msbLsb)
|
|
8636
|
+
};
|
|
8637
|
+
},
|
|
8638
|
+
'parse_fly': (frame) => {
|
|
8639
|
+
if(frame[2] > 8){
|
|
8640
|
+
let reset_mode = "Disabled";
|
|
8641
|
+
switch(frame[37]){
|
|
8642
|
+
case 0:
|
|
8643
|
+
reset_mode = "Disabled";
|
|
8644
|
+
break;
|
|
8645
|
+
case 1:
|
|
8646
|
+
reset_mode = "Shift Ends";
|
|
8647
|
+
break;
|
|
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
|
+
}
|
|
9587
8715
|
return {
|
|
9588
8716
|
'firmware': frame[2],
|
|
9589
|
-
'
|
|
9590
|
-
'
|
|
9591
|
-
'
|
|
9592
|
-
'
|
|
9593
|
-
'
|
|
9594
|
-
'
|
|
9595
|
-
'
|
|
9596
|
-
'
|
|
9597
|
-
'
|
|
9598
|
-
|
|
9599
|
-
|
|
9600
|
-
'
|
|
9601
|
-
'
|
|
9602
|
-
|
|
9603
|
-
|
|
9604
|
-
'
|
|
9605
|
-
'
|
|
9606
|
-
|
|
9607
|
-
|
|
9608
|
-
|
|
9609
|
-
'
|
|
9610
|
-
|
|
9611
|
-
|
|
9612
|
-
'
|
|
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),
|
|
9613
8748
|
'machine_values': {
|
|
9614
8749
|
'firmware': frame[2],
|
|
9615
|
-
'
|
|
9616
|
-
'
|
|
9617
|
-
'
|
|
9618
|
-
'
|
|
9619
|
-
'
|
|
9620
|
-
'
|
|
9621
|
-
'
|
|
9622
|
-
'
|
|
9623
|
-
'
|
|
9624
|
-
'
|
|
9625
|
-
'
|
|
9626
|
-
'
|
|
9627
|
-
'
|
|
9628
|
-
'
|
|
9629
|
-
'
|
|
9630
|
-
'
|
|
9631
|
-
'
|
|
9632
|
-
'
|
|
9633
|
-
'
|
|
9634
|
-
'hardware_id': frame.slice(41, 44),
|
|
9635
|
-
'reserved': frame.slice(44, 48),
|
|
9636
|
-
'tx_lifetime_counter': frame.slice(48, 52)
|
|
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)
|
|
9637
8769
|
}
|
|
9638
8770
|
}
|
|
9639
|
-
}else{
|
|
8771
|
+
} else{
|
|
9640
8772
|
return {
|
|
9641
8773
|
'firmware': frame[2],
|
|
9642
|
-
'
|
|
9643
|
-
'
|
|
9644
|
-
'
|
|
9645
|
-
'
|
|
9646
|
-
'
|
|
9647
|
-
'
|
|
9648
|
-
'
|
|
9649
|
-
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
9650
|
-
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
9651
|
-
'sampling_interval': frame_data.sampling_interval,
|
|
9652
|
-
'on_request_timeout': frame_data.on_request_timeout,
|
|
9653
|
-
'deadband': frame_data.deadband,
|
|
9654
|
-
'payload_length': frame_data.payload_length,
|
|
9655
|
-
'fsr': frame_data.fsr_text,
|
|
9656
|
-
'rpm_compute_status': frame_data.rpm_status,
|
|
9657
|
-
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
9658
|
-
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
9659
|
-
'smart_mode_skip_count': frame[33],
|
|
9660
|
-
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
9661
|
-
'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
|
|
9662
|
-
'hardware_id': frame.slice(39, 42),
|
|
9663
|
-
'reserved': frame.slice(42, 46),
|
|
9664
|
-
'tx_lifetime_counter': frame.slice(46, 50).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],
|
|
9665
8781
|
'machine_values': {
|
|
9666
8782
|
'firmware': frame[2],
|
|
9667
|
-
'
|
|
9668
|
-
'
|
|
9669
|
-
'
|
|
9670
|
-
'
|
|
9671
|
-
'
|
|
9672
|
-
'
|
|
9673
|
-
'
|
|
9674
|
-
'sampling_interval': frame[22],
|
|
9675
|
-
'on_request_timeout': frame[23],
|
|
9676
|
-
'deadband': frame[24],
|
|
9677
|
-
'payload_length': frame[25],
|
|
9678
|
-
'fsr': frame[26],
|
|
9679
|
-
'rpm_compute_status': frame[27],
|
|
9680
|
-
'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
|
|
9681
|
-
'auto_raw_interval': frame[32],
|
|
9682
|
-
'smart_mode_skip_count': frame[33],
|
|
9683
|
-
'smart_mode_acc_threshold':frame[34],
|
|
9684
|
-
'uptime_counter': frame.slice(35, 39),
|
|
9685
|
-
'hardware_id': frame.slice(39, 42),
|
|
9686
|
-
'reserved': frame.slice(42, 46),
|
|
9687
|
-
'tx_lifetime_counter': frame.slice(46, 50)
|
|
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]
|
|
9688
8790
|
}
|
|
9689
8791
|
}
|
|
9690
8792
|
}
|
|
9691
8793
|
}
|
|
9692
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': {
|
|
8811
|
+
'firmware': frame[2],
|
|
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)
|
|
8815
|
+
}
|
|
8816
|
+
}
|
|
8817
|
+
}
|
|
8818
|
+
},
|
|
9693
8819
|
'117': {
|
|
9694
8820
|
name: 'Custom Vibration Sensor PPV',
|
|
9695
8821
|
parse: (payload, parsed, mac) => {
|
|
@@ -9938,21 +9064,21 @@ function sensor_types(parent){
|
|
|
9938
9064
|
'118': {
|
|
9939
9065
|
name: 'Dual Pressure and Temperature Sensor',
|
|
9940
9066
|
parse: (payload, parsed, mac) => {
|
|
9941
|
-
|
|
9067
|
+
let res = {};
|
|
9942
9068
|
|
|
9943
9069
|
res.pressure_s1 = signInt(payload.slice(8, 12).reduce(msbLsb),32)/100;
|
|
9944
9070
|
res.temperature_s1 = signInt(payload.slice(12, 14).reduce(msbLsb),16)/100;
|
|
9945
|
-
|
|
9946
|
-
|
|
9071
|
+
if((payload[7] & 2)){
|
|
9072
|
+
res.error_s1 = 'Error: Sensor Probe 1 communication error';
|
|
9947
9073
|
}
|
|
9948
9074
|
|
|
9949
9075
|
res.pressure_s2 = signInt(payload.slice(14, 18).reduce(msbLsb),32)/100;
|
|
9950
9076
|
res.temperature_s2 = signInt(payload.slice(18, 20).reduce(msbLsb),16)/100;
|
|
9951
|
-
|
|
9077
|
+
if((payload[7] & 4)){
|
|
9952
9078
|
res.error_s2 = 'Error: Sensor Probe 2 communication error';
|
|
9953
9079
|
}
|
|
9954
|
-
|
|
9955
|
-
|
|
9080
|
+
return res;
|
|
9081
|
+
},
|
|
9956
9082
|
'parse_fly': (frame) => {
|
|
9957
9083
|
let psi_1;
|
|
9958
9084
|
let psi_2;
|
|
@@ -12421,72 +11547,6 @@ function sensor_types(parent){
|
|
|
12421
11547
|
};
|
|
12422
11548
|
}
|
|
12423
11549
|
},
|
|
12424
|
-
'536': {
|
|
12425
|
-
name: 'Wireless Oxygen Flow Meter',
|
|
12426
|
-
parse: (payload, parsed) => {
|
|
12427
|
-
return {
|
|
12428
|
-
error_status: payload[0],
|
|
12429
|
-
s1_oxygen_temp: payload.slice(1, 3).reduce(msbLsb)/100,
|
|
12430
|
-
s2_oxygen_temp: payload.slice(3, 5).reduce(msbLsb)/100,
|
|
12431
|
-
s3_oxygen_temp: payload.slice(5, 7).reduce(msbLsb)/100,
|
|
12432
|
-
s4_oxygen_temp: payload.slice(7, 9).reduce(msbLsb)/100,
|
|
12433
|
-
s1_saturation_percent: payload.slice(9, 13).reduce(msbLsb)/100,
|
|
12434
|
-
s2_saturation_percent: payload.slice(13, 17).reduce(msbLsb)/100,
|
|
12435
|
-
s3_saturation_percent: payload.slice(17, 21).reduce(msbLsb)/100,
|
|
12436
|
-
s4_saturation_percent: payload.slice(21, 25).reduce(msbLsb)/100,
|
|
12437
|
-
s1_oxigen_ppm: payload.slice(25, 29).reduce(msbLsb)/100,
|
|
12438
|
-
s2_oxigen_ppm: payload.slice(29, 33).reduce(msbLsb)/100,
|
|
12439
|
-
s3_oxigen_ppm: payload.slice(33, 37).reduce(msbLsb)/100,
|
|
12440
|
-
s4_oxigen_ppm: payload.slice(37, 41).reduce(msbLsb)/100,
|
|
12441
|
-
s1_oxigen_mg_l: payload.slice(41, 45).reduce(msbLsb)/100,
|
|
12442
|
-
s2_oxigen_mg_l: payload.slice(45, 49).reduce(msbLsb)/100,
|
|
12443
|
-
s3_oxigen_mg_l: payload.slice(49, 53).reduce(msbLsb)/100,
|
|
12444
|
-
s4_oxigen_mg_l: payload.slice(53, 57).reduce(msbLsb)/100,
|
|
12445
|
-
s1_flow_rate: payload.slice(57, 61).reduce(msbLsb)/100,
|
|
12446
|
-
s2_flow_rate: payload.slice(61, 65).reduce(msbLsb)/100,
|
|
12447
|
-
s3_flow_rate: payload.slice(65, 69).reduce(msbLsb)/100,
|
|
12448
|
-
s4_flow_rate: payload.slice(69, 73).reduce(msbLsb)/100,
|
|
12449
|
-
s1_solenoid_status: payload[73],
|
|
12450
|
-
s2_solenoid_status: payload[74],
|
|
12451
|
-
s3_solenoid_status: payload[75],
|
|
12452
|
-
s4_solenoid_status: payload[76]
|
|
12453
|
-
}
|
|
12454
|
-
},
|
|
12455
|
-
'parse_fly': (frame) => {
|
|
12456
|
-
return {
|
|
12457
|
-
'firmware': frame[2],
|
|
12458
|
-
'oxygen_bootup_time': frame[12] + 'sec',
|
|
12459
|
-
'flow_bootup_time': frame[13]+ 'sec',
|
|
12460
|
-
's1_oxygen_addr': frame[14],
|
|
12461
|
-
's2_oxygen_addr': frame[15],
|
|
12462
|
-
's3_oxygen_addr': frame[16],
|
|
12463
|
-
's4_oxygen_addr': frame[17],
|
|
12464
|
-
's1_flow_addr': frame[18],
|
|
12465
|
-
's2_flow_addr': frame[19],
|
|
12466
|
-
's3_flow_addr': frame[20],
|
|
12467
|
-
's4_flow_addr': frame[21],
|
|
12468
|
-
'hardware_id': frame.slice(22, 25),
|
|
12469
|
-
'report_rate': frame.slice(25, 29).reduce(msbLsb) + 'sec',
|
|
12470
|
-
'tx_life_counter': frame.slice(29, 33).reduce(msbLsb),
|
|
12471
|
-
'machine_values': {
|
|
12472
|
-
'firmware': frame[2],
|
|
12473
|
-
'oxygen_bootup_time': frame[12],
|
|
12474
|
-
'flow_bootup_time': frame[13],
|
|
12475
|
-
's1_oxygen_addr': frame[14],
|
|
12476
|
-
's2_oxygen_addr': frame[15],
|
|
12477
|
-
's3_oxygen_addr': frame[16],
|
|
12478
|
-
's4_oxygen_addr': frame[17],
|
|
12479
|
-
's1_flow_addr': frame[18],
|
|
12480
|
-
's2_flow_addr': frame[19],
|
|
12481
|
-
's3_flow_addr': frame[20],
|
|
12482
|
-
's4_flow_addr': frame[21],
|
|
12483
|
-
'hardware_id': frame.slice(22, 25),
|
|
12484
|
-
'report_rate': frame.slice(25, 29),
|
|
12485
|
-
'tx_life_counter': frame.slice(29, 33)
|
|
12486
|
-
}
|
|
12487
|
-
}
|
|
12488
|
-
}
|
|
12489
|
-
},
|
|
12490
11550
|
'537': {
|
|
12491
11551
|
name: 'Type 537 - Custom Standalone Smart Vibration Sensor',
|
|
12492
11552
|
parse: (payload, parsed, mac) => {
|
|
@@ -14318,22 +13378,22 @@ function int2Bytes(i, l){
|
|
|
14318
13378
|
return bytes;
|
|
14319
13379
|
}
|
|
14320
13380
|
function msbLsb_to_SignedInt(value, addition) {
|
|
14321
|
-
|
|
14322
|
-
|
|
13381
|
+
const bigValue = BigInt(value);
|
|
13382
|
+
const bigAddition = BigInt(addition);
|
|
14323
13383
|
|
|
14324
|
-
|
|
13384
|
+
let result = (bigValue << 8n) + bigAddition;
|
|
14325
13385
|
|
|
14326
|
-
|
|
14327
|
-
|
|
13386
|
+
// Always return the result as an unsigned 64-bit BigInt.
|
|
13387
|
+
return BigInt.asIntN(64, result);
|
|
14328
13388
|
};
|
|
14329
13389
|
function msbLsb_to_UnsignedInt(value, addition) {
|
|
14330
|
-
|
|
14331
|
-
|
|
13390
|
+
const bigValue = BigInt(value);
|
|
13391
|
+
const bigAddition = BigInt(addition);
|
|
14332
13392
|
|
|
14333
|
-
|
|
13393
|
+
let result = (bigValue << 8n) + bigAddition;
|
|
14334
13394
|
|
|
14335
|
-
|
|
14336
|
-
|
|
13395
|
+
// Always return the result as a signed 64-bit BigInt.
|
|
13396
|
+
return BigInt.asUintN(64, result);
|
|
14337
13397
|
};
|
|
14338
13398
|
// TODO implement this function in future for decimal formatting on BigInt values
|
|
14339
13399
|
// Untested. Requires multiplication by scale factor to account for decimal value loss before passing in. Might handle that in this function as well.
|