@ncd-io/node-red-enterprise-sensors 1.4.0 → 1.4.2
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 +3099 -830
- package/package.json +1 -1
- package/wireless.html +798 -38
- package/wireless.js +373 -30
package/lib/WirelessGateway.js
CHANGED
|
@@ -136,9 +136,9 @@ module.exports = class WirelessSensor{
|
|
|
136
136
|
if(globalDevices[frame.mac].command_queue[0].hasOwnProperty('meta')){
|
|
137
137
|
query_data.meta = globalDevices[frame.mac].command_queue[0].meta;
|
|
138
138
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
this._emitter.emit('converter_ack-'+frame.mac, query_data);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
142
|
// }
|
|
143
143
|
}
|
|
144
144
|
var type = this.payloadType[frame.data[0]];
|
|
@@ -160,7 +160,7 @@ module.exports = class WirelessSensor{
|
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
// #OTF
|
|
163
|
-
var otf_devices = [4,12,21,23,26,32,33,39,44,45,48,52,53,56,58,74,76,78,79,80,81,82,84,88,89,90,91,97,98,101,102,103,105,106,107,108,109,110,111,112,114,117,118,120,121,122,180,181,202,217,519,520,521,531,535,537,538,539,540,1010,1011];
|
|
163
|
+
var otf_devices = [4,12,21,23,26,32,33,39,44,45,48,52,53,56,58,74,76,78,79,80,81,82,84,88,89,90,91,97,98,101,102,103,105,106,107,108,109,110,111,112,114,117,118,120,121,122,123,180,181,202,217,211,270,519,520,521,531,535,537,538,539,540,541,1010,1011];
|
|
164
164
|
var device_type = msbLsb(frame.data[6], frame.data[7]);
|
|
165
165
|
// var device_type = frame.data[7];
|
|
166
166
|
|
|
@@ -334,7 +334,7 @@ module.exports = class WirelessSensor{
|
|
|
334
334
|
};
|
|
335
335
|
|
|
336
336
|
// #OTF
|
|
337
|
-
var otf_devices = [4,12,21,23,26,32,33,39,44,45,48,52,53,56,58,74,76,78,79,80,81,82,84,88,89,90,91,97,98,101,102,103,105,106,107,108,109,110,111,112,114,117,118,120,121,122,180,181,202,217,519,520,521,531,535,537,538,539,540,1010,1011];
|
|
337
|
+
var otf_devices = [4,12,21,23,26,32,33,39,44,45,48,52,53,56,58,74,76,78,79,80,81,82,84,88,89,90,91,97,98,101,102,103,105,106,107,108,109,110,111,112,114,117,118,120,121,122,123,180,181,202,211,217,270,519,520,521,531,535,537,538,539,540,541,1010,1011];
|
|
338
338
|
if(otf_devices.includes(parsed.sensor_type)){
|
|
339
339
|
// If the message says FLY and there is not FLY timer in progress.
|
|
340
340
|
if(payload[8] == 70 && payload[9] == 76 && payload[10] == 89) {
|
|
@@ -756,7 +756,7 @@ module.exports = class WirelessSensor{
|
|
|
756
756
|
data: payload.slice(8)
|
|
757
757
|
};
|
|
758
758
|
// #OTF
|
|
759
|
-
}else if(parsed.sensor_type == 33 || parsed.sensor_type == 80 || parsed.sensor_type == 81 || parsed.sensor_type == 82 || parsed.sensor_type == 84 || parsed.sensor_type == 97 || parsed.sensor_type == 98 || parsed.sensor_type == 103 || parsed.sensor_type == 110 || parsed.sensor_type == 111 || parsed.sensor_type == 112 || parsed.sensor_type == 114 || parsed.sensor_type == 117 || parsed.sensor_type == 180 || parsed.sensor_type == 181 || parsed.sensor_type == 202 || parsed.sensor_type == 515 || parsed.sensor_type == 519 || parsed.sensor_type == 531 || parsed.sensor_type == 537 || parsed.sensor_type == 538){
|
|
759
|
+
}else if(parsed.sensor_type == 21 || parsed.sensor_type == 33 || parsed.sensor_type == 80 || parsed.sensor_type == 81 || parsed.sensor_type == 82 || parsed.sensor_type == 84 || parsed.sensor_type == 97 || parsed.sensor_type == 98 || parsed.sensor_type == 103 || parsed.sensor_type == 110 || parsed.sensor_type == 111 || parsed.sensor_type == 112 || parsed.sensor_type == 114 || parsed.sensor_type == 117 || parsed.sensor_type == 180 || parsed.sensor_type == 181 || parsed.sensor_type == 202 || parsed.sensor_type == 515 || parsed.sensor_type == 519 || parsed.sensor_type == 531 || parsed.sensor_type == 537 || parsed.sensor_type == 538){
|
|
760
760
|
parsed.sensor_data = this.sensor_types[parsed.sensor_type].parse(payload, parsed, frame.mac);
|
|
761
761
|
if(!parsed.sensor_data){
|
|
762
762
|
return;
|
|
@@ -773,7 +773,8 @@ module.exports = class WirelessSensor{
|
|
|
773
773
|
firmware_set_to_ota_mode(sensor_mac){
|
|
774
774
|
console.log('firmware_set_to_ota_mode');
|
|
775
775
|
var packet = [245, 56, 0, 0, 0];
|
|
776
|
-
return this.config_send(sensor_mac, packet);
|
|
776
|
+
return this.config_send(sensor_mac, packet, {}, 5000);
|
|
777
|
+
// return this.config_send(sensor_mac, packet);
|
|
777
778
|
}
|
|
778
779
|
// TODO no code basis
|
|
779
780
|
firmware_exit_ota_mode(sensor_mac){
|
|
@@ -784,19 +785,19 @@ module.exports = class WirelessSensor{
|
|
|
784
785
|
firmware_request_manifest(sensor_mac){
|
|
785
786
|
console.log('firmware_request_manifest');
|
|
786
787
|
var packet = [245, 60, 0, 0, 0];
|
|
787
|
-
return this.config_send(sensor_mac, packet);
|
|
788
|
+
return this.config_send(sensor_mac, packet, {}, 1500, 500);
|
|
788
789
|
}
|
|
789
790
|
firmware_send_manifest(sensor_mac, manifest){
|
|
790
791
|
console.log('firmware_send_manifest');
|
|
791
792
|
// sensor_mac = "00:00:00:00:00:00:ff:ff";
|
|
792
793
|
let packet = [245, 58, 0, 0, 0].concat(Array.prototype.slice.call(manifest));
|
|
793
|
-
return this.config_send(sensor_mac, packet);
|
|
794
|
+
return this.config_send(sensor_mac, packet, {}, 1500, 500);
|
|
794
795
|
}
|
|
795
796
|
firmware_send_manifest_v13(sensor_mac, manifest){
|
|
796
797
|
console.log('firmware_send_manifest_v13');
|
|
797
798
|
// sensor_mac = "00:00:00:00:00:00:ff:ff";
|
|
798
799
|
let packet = [245, 58, 0, 0, 0].concat(Array.prototype.slice.call(manifest));
|
|
799
|
-
return this.firmware_send_v13(sensor_mac, packet, {}, 7000,
|
|
800
|
+
return this.firmware_send_v13(sensor_mac, packet, {}, 7000, 140, true);
|
|
800
801
|
}
|
|
801
802
|
firmware_send_chunk(sensor_mac, offset, chunk){
|
|
802
803
|
console.log('firmware_send_chunk');
|
|
@@ -1261,6 +1262,14 @@ module.exports = class WirelessSensor{
|
|
|
1261
1262
|
console.log(packet);
|
|
1262
1263
|
return this.config_send(sensor_mac, packet);
|
|
1263
1264
|
}
|
|
1265
|
+
config_set_debounce_time_v10_108(sensor_mac, value){
|
|
1266
|
+
console.log('config_set_debounce_time_v10_108');
|
|
1267
|
+
var packet = [244, 39, 0, 0, 0];
|
|
1268
|
+
let threshold = int2Bytes((value), 2);
|
|
1269
|
+
packet.push(...threshold);
|
|
1270
|
+
console.log(packet);
|
|
1271
|
+
return this.config_send(sensor_mac, packet);
|
|
1272
|
+
}
|
|
1264
1273
|
config_set_clear_timers_108(sensor_mac, value){
|
|
1265
1274
|
console.log('config_clear_timers_108');
|
|
1266
1275
|
var packet = [244, 36, 0, 0, 0, value];
|
|
@@ -1887,7 +1896,7 @@ module.exports = class WirelessSensor{
|
|
|
1887
1896
|
}
|
|
1888
1897
|
config_set_pressure_sensor_fs_ch2_118(sensor_mac, value){
|
|
1889
1898
|
console.log('config_set_pressure_sensor_fs_ch2_118');
|
|
1890
|
-
var packet = [244,
|
|
1899
|
+
var packet = [244, 72, 0, 0, 118, value];
|
|
1891
1900
|
console.log(packet);
|
|
1892
1901
|
return this.config_send(sensor_mac, packet);
|
|
1893
1902
|
}
|
|
@@ -1947,6 +1956,12 @@ module.exports = class WirelessSensor{
|
|
|
1947
1956
|
}
|
|
1948
1957
|
config_set_pressure_sensor_type_21(sensor_mac, value){
|
|
1949
1958
|
console.log('config_set_pressure_sensor_type_21');
|
|
1959
|
+
var packet = [244, 66, 0, 0, 21, value]
|
|
1960
|
+
console.log(packet);
|
|
1961
|
+
return this.config_send(sensor_mac, packet);
|
|
1962
|
+
}
|
|
1963
|
+
config_set_pressure_sensor_range_21(sensor_mac, value){
|
|
1964
|
+
console.log('config_set_pressure_sensor_range_21');
|
|
1950
1965
|
var packet = [244, 64, 0, 0, 21, value]
|
|
1951
1966
|
console.log(packet);
|
|
1952
1967
|
return this.config_send(sensor_mac, packet);
|
|
@@ -2081,6 +2096,155 @@ module.exports = class WirelessSensor{
|
|
|
2081
2096
|
console.log(packet);
|
|
2082
2097
|
return this.config_send(sensor_mac, packet);
|
|
2083
2098
|
}
|
|
2099
|
+
config_set_motion_to_sampling_delay_110(sensor_mac, value){
|
|
2100
|
+
console.log('config_set_motion_to_sampling_delay_110');
|
|
2101
|
+
var packet = [244, 79, 0, 0, 101, 89, value];
|
|
2102
|
+
console.log(packet);
|
|
2103
|
+
return this.config_send(sensor_mac, packet);
|
|
2104
|
+
}
|
|
2105
|
+
config_set_max_num_motion_tx_delay_110(sensor_mac, value){
|
|
2106
|
+
console.log('config_set_max_num_motion_tx_delay_110');
|
|
2107
|
+
var packet = [244, 79, 0, 0, 101, 91, value];
|
|
2108
|
+
console.log(packet);
|
|
2109
|
+
return this.config_send(sensor_mac, packet);
|
|
2110
|
+
}
|
|
2111
|
+
config_set_enable_sensor_103(sensor_mac, value){
|
|
2112
|
+
console.log('config_set_enable_sensor_103');
|
|
2113
|
+
var packet = [244, 79, 0, 0, 101, 19, value];
|
|
2114
|
+
console.log(packet);
|
|
2115
|
+
return this.config_send(sensor_mac, packet);
|
|
2116
|
+
}
|
|
2117
|
+
config_set_enable_hp_filter_cutoff_103(sensor_mac, value){
|
|
2118
|
+
console.log('config_set_enable_hp_filter_cutoff_103');
|
|
2119
|
+
var packet = [244, 79, 0, 0, 101, 17, value];
|
|
2120
|
+
console.log(packet);
|
|
2121
|
+
return this.config_send(sensor_mac, packet);
|
|
2122
|
+
}
|
|
2123
|
+
config_set_gyro_fsr_103(sensor_mac, value){
|
|
2124
|
+
console.log('config_set_gyro_fsr_103');
|
|
2125
|
+
var packet = [244, 79, 0, 0, 101, 21, value];
|
|
2126
|
+
console.log(packet);
|
|
2127
|
+
return this.config_send(sensor_mac, packet);
|
|
2128
|
+
}
|
|
2129
|
+
config_set_adxl_fsr_103(sensor_mac, value){
|
|
2130
|
+
console.log('config_set_adxl_fsr_103');
|
|
2131
|
+
var packet = [244, 79, 0, 0, 101, 11, value];
|
|
2132
|
+
console.log(packet);
|
|
2133
|
+
return this.config_send(sensor_mac, packet);
|
|
2134
|
+
}
|
|
2135
|
+
config_set_acc_threshold_103(sensor_mac, value){
|
|
2136
|
+
console.log('config_set_acc_threshold_103');
|
|
2137
|
+
var packet = [244, 79, 0, 0, 101, 23, value];
|
|
2138
|
+
console.log(packet);
|
|
2139
|
+
return this.config_send(sensor_mac, packet);
|
|
2140
|
+
}
|
|
2141
|
+
// config_set_do_read_rate_270(sensor_mac, value){
|
|
2142
|
+
// console.log('config_set_do_report_rate_270');
|
|
2143
|
+
// var packet = [244, 32, 0, 0, 0, value];
|
|
2144
|
+
// console.log(packet);
|
|
2145
|
+
// return this.config_send(sensor_mac, packet);
|
|
2146
|
+
// }
|
|
2147
|
+
config_set_do_boot_time_270(sensor_mac, value){
|
|
2148
|
+
console.log('config_set_do_boot_time_270');
|
|
2149
|
+
var packet = [244, 34, 0, 0, 0, value];
|
|
2150
|
+
console.log(packet);
|
|
2151
|
+
return this.config_send(sensor_mac, packet);
|
|
2152
|
+
}
|
|
2153
|
+
config_set_do_dev_id_270(sensor_mac, id_1, id_2, id_3, id_4){
|
|
2154
|
+
console.log('config_set_do_dev_id_270');
|
|
2155
|
+
var packet = [244, 38, 0, 0, 0, id_1, id_2, id_3, id_4];
|
|
2156
|
+
console.log(packet);
|
|
2157
|
+
return this.config_send(sensor_mac, packet);
|
|
2158
|
+
}
|
|
2159
|
+
config_set_ec_boot_time_270(sensor_mac, value){
|
|
2160
|
+
console.log('config_set_ec_boot_time_270');
|
|
2161
|
+
var packet = [244, 36, 0, 0, 0, value];
|
|
2162
|
+
console.log(packet);
|
|
2163
|
+
return this.config_send(sensor_mac, packet);
|
|
2164
|
+
}
|
|
2165
|
+
config_set_ec_dev_id_270(sensor_mac, id_1, id_2, id_3, id_4){
|
|
2166
|
+
console.log('config_set_ec_dev_id_270');
|
|
2167
|
+
var packet = [244, 40, 0, 0, 0, id_1, id_2, id_3, id_4];
|
|
2168
|
+
console.log(packet);
|
|
2169
|
+
return this.config_send(sensor_mac, packet);
|
|
2170
|
+
}
|
|
2171
|
+
config_set_oxygen_rate_211(sensor_mac, value){
|
|
2172
|
+
console.log('config_set_oxygen_rate_211');
|
|
2173
|
+
var packet = [244, 32, 0, 0, 0, value];
|
|
2174
|
+
console.log(packet);
|
|
2175
|
+
return this.config_send(sensor_mac, packet);
|
|
2176
|
+
}
|
|
2177
|
+
config_set_oxygen_timeout_211(sensor_mac, value){
|
|
2178
|
+
console.log('config_set_oxygen_timeout_211');
|
|
2179
|
+
var packet = [244, 37, 0, 0, 0];
|
|
2180
|
+
let value_ = int2Bytes(value, 2);
|
|
2181
|
+
packet.push(...value_);
|
|
2182
|
+
console.log(packet);
|
|
2183
|
+
return this.config_send(sensor_mac, packet);
|
|
2184
|
+
}
|
|
2185
|
+
config_set_oxygen_threshold_211(sensor_mac, value){
|
|
2186
|
+
console.log('config_set_oxygen_threshold_211');
|
|
2187
|
+
var packet = [244, 34, 0, 0, 0];
|
|
2188
|
+
let value_ = int2Bytes(value, 2);
|
|
2189
|
+
packet.push(...value_);
|
|
2190
|
+
console.log(packet);
|
|
2191
|
+
return this.config_send(sensor_mac, packet);
|
|
2192
|
+
}
|
|
2193
|
+
config_set_interrupt_timeout_108(sensor_mac, value){
|
|
2194
|
+
console.log('config_set_interrupt_timeout_108');
|
|
2195
|
+
var packet = [244, 65, 0, 0, 0];
|
|
2196
|
+
let value_ = int2Bytes(value, 2);
|
|
2197
|
+
packet.push(...value_);
|
|
2198
|
+
console.log(packet);
|
|
2199
|
+
return this.config_send(sensor_mac, packet);
|
|
2200
|
+
}
|
|
2201
|
+
config_set_start_sps30_fan_cleaning_53(sensor_mac){
|
|
2202
|
+
console.log('config_set_start_sps30_fan_cleaning_53');
|
|
2203
|
+
var packet = [244, 26, 0, 0, 53];
|
|
2204
|
+
console.log(packet);
|
|
2205
|
+
return this.config_send(sensor_mac, packet);
|
|
2206
|
+
}
|
|
2207
|
+
config_set_max_flow_541(sensor_mac, value){
|
|
2208
|
+
console.log('config_set_max_flow_541');
|
|
2209
|
+
var packet = [244, 85, 0, 0, 88, 0, value];
|
|
2210
|
+
console.log(packet);
|
|
2211
|
+
return this.config_send(sensor_mac, packet);
|
|
2212
|
+
}
|
|
2213
|
+
config_set_min_flow_541(sensor_mac, value){
|
|
2214
|
+
console.log('config_set_min_flow_541');
|
|
2215
|
+
var packet = [244, 83, 0, 0, 88, 0, value];
|
|
2216
|
+
console.log(packet);
|
|
2217
|
+
return this.config_send(sensor_mac, packet);
|
|
2218
|
+
}
|
|
2219
|
+
config_set_ct_constant_87(sensor_mac, value){
|
|
2220
|
+
console.log('config_set_ct_constant_87');
|
|
2221
|
+
var packet = [244, 80, 0, 0, 0, 1];
|
|
2222
|
+
let value_ = int2Bytes(value, 4);
|
|
2223
|
+
packet.push(...value_);
|
|
2224
|
+
console.log(packet);
|
|
2225
|
+
return this.config_send(sensor_mac, packet);
|
|
2226
|
+
}
|
|
2227
|
+
config_set_deadband_87(sensor_mac, value){
|
|
2228
|
+
console.log('config_set_deadband_87');
|
|
2229
|
+
var packet = [244, 82, 0, 0, 0, 1];
|
|
2230
|
+
let value_ = int2Bytes(value, 2);
|
|
2231
|
+
packet.push(...value_);
|
|
2232
|
+
console.log(packet);
|
|
2233
|
+
return this.config_send(sensor_mac, packet);
|
|
2234
|
+
}
|
|
2235
|
+
config_set_sampling_frequency_87(sensor_mac, value){
|
|
2236
|
+
console.log('config_set_sampling_frequency_87');
|
|
2237
|
+
var packet = [244, 78, 0, 0, 0, value];
|
|
2238
|
+
console.log(packet);
|
|
2239
|
+
return this.config_send(sensor_mac, packet);
|
|
2240
|
+
}
|
|
2241
|
+
config_set_raw_length_87(sensor_mac, value){
|
|
2242
|
+
console.log('config_set_raw_length_87');
|
|
2243
|
+
var packet = [244, 84, 0, 0, 0, value];
|
|
2244
|
+
console.log(packet);
|
|
2245
|
+
return this.config_send(sensor_mac, packet);
|
|
2246
|
+
}
|
|
2247
|
+
|
|
2084
2248
|
config_get_delay(sensor_mac){
|
|
2085
2249
|
return new Promise((fulfill, reject) => {
|
|
2086
2250
|
this.config_send(sensor_mac, [247, 21, 0, 0, 0]).then((res) => {
|
|
@@ -2286,14 +2450,14 @@ module.exports = class WirelessSensor{
|
|
|
2286
2450
|
this.queue = new Queue(1);
|
|
2287
2451
|
}
|
|
2288
2452
|
firmware_send_chunk_v13(sensor_mac, offset, chunk){
|
|
2289
|
-
console.log('firmware_send_chunk');
|
|
2453
|
+
// console.log('firmware_send_chunk');
|
|
2290
2454
|
// sensor_mac = "00:00:00:00:00:00:ff:ff";
|
|
2291
2455
|
let packet = [245, 59, 0, 0, 0].concat(offset, Array.prototype.slice.call(chunk));
|
|
2292
2456
|
// console.log(packet);
|
|
2293
2457
|
return this.firmware_send_v13(sensor_mac, packet);
|
|
2294
2458
|
}
|
|
2295
2459
|
firmware_read_last_chunk_segment(sensor_mac){
|
|
2296
|
-
console.log('firmware_read_last_chunk_segment');
|
|
2460
|
+
// console.log('firmware_read_last_chunk_segment');
|
|
2297
2461
|
let packet = [245, 61, 0, 0, 0];
|
|
2298
2462
|
return this.config_send(sensor_mac, packet);
|
|
2299
2463
|
}
|
|
@@ -2416,17 +2580,19 @@ module.exports = class WirelessSensor{
|
|
|
2416
2580
|
});
|
|
2417
2581
|
});
|
|
2418
2582
|
};
|
|
2419
|
-
config_send(sensor_mac, data, opts, cmd_timeout = 1500){
|
|
2583
|
+
config_send(sensor_mac, data, opts, cmd_timeout = 1500, cmd_pretimeout = 0){
|
|
2420
2584
|
var that = this;
|
|
2421
2585
|
return new Promise((fulfill, reject) => {
|
|
2422
2586
|
// Note: This code adds a delay before sending any communications. This is not generally required, but has shown increased reliability
|
|
2423
2587
|
// in some cases when used directly after changing modem module settings such as entering FON network ID. Leaving it here for future reference or quick add during support.
|
|
2424
2588
|
// consider adding a pre-time command parameter to allow this as in the v13 firmware send function.
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2589
|
+
if(cmd_pretimeout != 0){
|
|
2590
|
+
that.queue.add(() => {
|
|
2591
|
+
return new Promise((f, r) => {
|
|
2592
|
+
setTimeout(f, cmd_pretimeout);
|
|
2593
|
+
});
|
|
2594
|
+
});
|
|
2595
|
+
};
|
|
2430
2596
|
that.queue.add(() => {
|
|
2431
2597
|
return new Promise((f, r) => {
|
|
2432
2598
|
var tout;
|
|
@@ -2484,92 +2650,6 @@ module.exports = class WirelessSensor{
|
|
|
2484
2650
|
});
|
|
2485
2651
|
});
|
|
2486
2652
|
});
|
|
2487
|
-
}
|
|
2488
|
-
queue_bridge_query(sensor_mac, data, meta = null, opts){
|
|
2489
|
-
var that = this;
|
|
2490
|
-
if(!globalDevices.hasOwnProperty(sensor_mac)){
|
|
2491
|
-
globalDevices[sensor_mac] = {bridge: true, command_queue: []};
|
|
2492
|
-
}
|
|
2493
|
-
// if(!Object.hasOwn(node._gateway_node.sensor_list[msg.payload.address], 'command_queue')){
|
|
2494
|
-
// if(!globalDevices[sensor_mac].hasOwnProperty('command_queue')){
|
|
2495
|
-
// globalDevices[sensor_mac].command_queue = [{'command': data, 'meta': meta}];
|
|
2496
|
-
// }else{
|
|
2497
|
-
globalDevices[sensor_mac].command_queue.push({'command': data, 'meta': meta});
|
|
2498
|
-
// }
|
|
2499
|
-
|
|
2500
|
-
return new Promise((fulfill, reject) => {
|
|
2501
|
-
that.queue.add(() => {
|
|
2502
|
-
return new Promise((f, r) => {
|
|
2503
|
-
var tout;
|
|
2504
|
-
function fail(response){
|
|
2505
|
-
that._emitter.removeListener('converter_ack-'+sensor_mac, pass);
|
|
2506
|
-
clearTimeout(tout);
|
|
2507
|
-
|
|
2508
|
-
if(globalDevices[sensor_mac].hasOwnProperty('command_queue')){
|
|
2509
|
-
globalDevices[sensor_mac].command_queue.shift();
|
|
2510
|
-
}
|
|
2511
|
-
reject({
|
|
2512
|
-
err: response,
|
|
2513
|
-
sent: [mac2bytes(sensor_mac), data, opts]
|
|
2514
|
-
});
|
|
2515
|
-
f();
|
|
2516
|
-
}
|
|
2517
|
-
function pass(response){
|
|
2518
|
-
clearTimeout(tout);
|
|
2519
|
-
|
|
2520
|
-
that._emitter.emit('converter_response', response);
|
|
2521
|
-
that._emitter.emit('converter_response-'+sensor_mac, response);
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
if(globalDevices[sensor_mac].hasOwnProperty('command_queue')){
|
|
2525
|
-
globalDevices[sensor_mac].command_queue.shift();
|
|
2526
|
-
}
|
|
2527
|
-
that._emitter.removeListener('converter_error-'+sensor_mac, fail);
|
|
2528
|
-
fulfill(response);
|
|
2529
|
-
f();
|
|
2530
|
-
// that._emitter.
|
|
2531
|
-
};
|
|
2532
|
-
|
|
2533
|
-
that._emitter.once('converter_ack-'+sensor_mac, pass);
|
|
2534
|
-
that._emitter.once('converter_error-'+sensor_mac, fail);
|
|
2535
|
-
tout = setTimeout(() => {
|
|
2536
|
-
that._emitter.removeListener('converter_error-'+sensor_mac, fail);
|
|
2537
|
-
that._emitter.removeListener('converter_ack-'+sensor_mac, pass);
|
|
2538
|
-
|
|
2539
|
-
if(globalDevices[sensor_mac].hasOwnProperty('command_queue')){
|
|
2540
|
-
globalDevices[sensor_mac].command_queue.shift();
|
|
2541
|
-
};
|
|
2542
|
-
if(sensor_mac == '00:00:00:00:00:00:FF:FF'){
|
|
2543
|
-
reject({
|
|
2544
|
-
res: 'Broadcast mode, no target device',
|
|
2545
|
-
sent: [mac2bytes(sensor_mac), data, opts]
|
|
2546
|
-
});
|
|
2547
|
-
}else{
|
|
2548
|
-
reject({
|
|
2549
|
-
err: 'Wireless Converter did not respond',
|
|
2550
|
-
sent: [mac2bytes(sensor_mac), data, opts]
|
|
2551
|
-
});
|
|
2552
|
-
};
|
|
2553
|
-
|
|
2554
|
-
f();
|
|
2555
|
-
}, 1500);
|
|
2556
|
-
that.send.transmit_request(mac2bytes(sensor_mac), data, opts).then().catch((err) => {
|
|
2557
|
-
that._emitter.removeListener('converter_error-'+sensor_mac, fail);
|
|
2558
|
-
that._emitter.removeListener('converter_ack-'+sensor_mac, pass);
|
|
2559
|
-
reject({
|
|
2560
|
-
err: err,
|
|
2561
|
-
sent: [mac2bytes(sensor_mac), data, opts]
|
|
2562
|
-
});
|
|
2563
|
-
f();
|
|
2564
|
-
}).then();
|
|
2565
|
-
});
|
|
2566
|
-
});
|
|
2567
|
-
this.queue.add(() => {
|
|
2568
|
-
return new Promise((f, r) => {
|
|
2569
|
-
setTimeout(f, 500);
|
|
2570
|
-
});
|
|
2571
|
-
});
|
|
2572
|
-
});
|
|
2573
2653
|
};
|
|
2574
2654
|
prepare_bridge_query(sensor_mac, commands){
|
|
2575
2655
|
commands.forEach((command) => {
|
|
@@ -2580,7 +2660,9 @@ module.exports = class WirelessSensor{
|
|
|
2580
2660
|
}
|
|
2581
2661
|
});
|
|
2582
2662
|
}
|
|
2583
|
-
queue_bridge_query(sensor_mac, data, meta = null, opts){
|
|
2663
|
+
queue_bridge_query(sensor_mac, data, meta = null, command_timeout = 1500, opts){
|
|
2664
|
+
console.log('Command Timeout:');
|
|
2665
|
+
console.log(command_timeout);
|
|
2584
2666
|
var that = this;
|
|
2585
2667
|
if(!globalDevices.hasOwnProperty(sensor_mac)){
|
|
2586
2668
|
globalDevices[sensor_mac] = {bridge: true, command_queue: []};
|
|
@@ -2602,7 +2684,10 @@ module.exports = class WirelessSensor{
|
|
|
2602
2684
|
|
|
2603
2685
|
if(globalDevices[sensor_mac].hasOwnProperty('command_queue')){
|
|
2604
2686
|
globalDevices[sensor_mac].command_queue.shift();
|
|
2605
|
-
}
|
|
2687
|
+
};
|
|
2688
|
+
// if(globalDevices[sensor_mac].command_queue.length == 0 && globalDevices[sensor_mac].hasOwnProperty('bridge')){
|
|
2689
|
+
// delete globalDevices[sensor_mac].bridge;
|
|
2690
|
+
// }
|
|
2606
2691
|
reject({
|
|
2607
2692
|
err: response,
|
|
2608
2693
|
sent: [mac2bytes(sensor_mac), data, opts]
|
|
@@ -2619,6 +2704,9 @@ module.exports = class WirelessSensor{
|
|
|
2619
2704
|
if(globalDevices[sensor_mac].hasOwnProperty('command_queue')){
|
|
2620
2705
|
globalDevices[sensor_mac].command_queue.shift();
|
|
2621
2706
|
}
|
|
2707
|
+
// if(globalDevices[sensor_mac].command_queue.length == 0 && globalDevices[sensor_mac].hasOwnProperty('bridge')){
|
|
2708
|
+
// delete globalDevices[sensor_mac].bridge;
|
|
2709
|
+
// }
|
|
2622
2710
|
that._emitter.removeListener('converter_error-'+sensor_mac, fail);
|
|
2623
2711
|
fulfill(response);
|
|
2624
2712
|
f();
|
|
@@ -2647,7 +2735,7 @@ module.exports = class WirelessSensor{
|
|
|
2647
2735
|
};
|
|
2648
2736
|
|
|
2649
2737
|
f();
|
|
2650
|
-
},
|
|
2738
|
+
}, command_timeout);
|
|
2651
2739
|
that.send.transmit_request(mac2bytes(sensor_mac), data, opts).then().catch((err) => {
|
|
2652
2740
|
that._emitter.removeListener('converter_error-'+sensor_mac, fail);
|
|
2653
2741
|
that._emitter.removeListener('converter_ack-'+sensor_mac, pass);
|
|
@@ -2666,15 +2754,15 @@ module.exports = class WirelessSensor{
|
|
|
2666
2754
|
});
|
|
2667
2755
|
});
|
|
2668
2756
|
};
|
|
2669
|
-
prepare_bridge_query(sensor_mac, commands){
|
|
2757
|
+
prepare_bridge_query(sensor_mac, commands, timeout){
|
|
2670
2758
|
commands.forEach((command) => {
|
|
2671
2759
|
if(command.hasOwnProperty('meta')){
|
|
2672
|
-
this.queue_bridge_query(sensor_mac, command.command, command.meta);
|
|
2760
|
+
this.queue_bridge_query(sensor_mac, command.command, command.meta, timeout);
|
|
2673
2761
|
}else{
|
|
2674
|
-
this.queue_bridge_query(sensor_mac, command.command);
|
|
2675
|
-
}
|
|
2762
|
+
this.queue_bridge_query(sensor_mac, command.command, null, timeout);
|
|
2763
|
+
};
|
|
2676
2764
|
});
|
|
2677
|
-
}
|
|
2765
|
+
};
|
|
2678
2766
|
build_102_data(payload, deviceAddr, hour, minute, sdata_start, current_packet, firmware){
|
|
2679
2767
|
if(current_packet != 1){
|
|
2680
2768
|
console.log('bad packet cleanup');
|
|
@@ -3202,20 +3290,101 @@ function sensor_types(parent){
|
|
|
3202
3290
|
adc: adc,
|
|
3203
3291
|
voltage: adc * 0.00322265625
|
|
3204
3292
|
};
|
|
3293
|
+
},
|
|
3294
|
+
'parse_fly': (frame) => {
|
|
3295
|
+
let firmware = frame[2];
|
|
3296
|
+
if(firmware > 13){ // firmware 14 and above
|
|
3297
|
+
let frame_data = {};
|
|
3298
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
3299
|
+
if(!auto_check_interval){
|
|
3300
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
3301
|
+
}else{
|
|
3302
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
3303
|
+
}
|
|
3304
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
3305
|
+
switch(frame[16]){
|
|
3306
|
+
case 0:
|
|
3307
|
+
frame_data.fsr = "+-6.114 V";
|
|
3308
|
+
break;
|
|
3309
|
+
case 1:
|
|
3310
|
+
frame_data.fsr = "+-4.096 V";
|
|
3311
|
+
break;
|
|
3312
|
+
case 2:
|
|
3313
|
+
frame_data.fsr = "+-2.048 V";
|
|
3314
|
+
break;
|
|
3315
|
+
case 3:
|
|
3316
|
+
frame_data.fsr = "+-1.024 V";
|
|
3317
|
+
break;
|
|
3318
|
+
case 4:
|
|
3319
|
+
frame_data.fsr = "+-0.512 V";
|
|
3320
|
+
break;
|
|
3321
|
+
case 5:
|
|
3322
|
+
frame_data.fsr = "+-0.256 V";
|
|
3323
|
+
break;
|
|
3324
|
+
}
|
|
3325
|
+
return {
|
|
3326
|
+
'firmware': frame[2],
|
|
3327
|
+
'fsr': frame_data.fsr,
|
|
3328
|
+
'boot_time': frame[17] + " sec",
|
|
3329
|
+
'power_adc': frame.slice(18, 20).reduce(msbLsb),
|
|
3330
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
3331
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
3332
|
+
'always_on': frame_data.always_on,
|
|
3333
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
3334
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
3335
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
3336
|
+
'hardware_id': frame.slice(37, 40),
|
|
3337
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
3338
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
3339
|
+
'machine_values': {
|
|
3340
|
+
'firmware': frame[2],
|
|
3341
|
+
'fsr': frame[16],
|
|
3342
|
+
'boot_time': frame[17],
|
|
3343
|
+
'power_adc': frame.slice(18, 20),
|
|
3344
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
3345
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
3346
|
+
'always_on': frame[24],
|
|
3347
|
+
'calibration_one': frame.slice(25, 29),
|
|
3348
|
+
'calibration_two':frame.slice(29, 33),
|
|
3349
|
+
'calibration_three':frame.slice(33, 37),
|
|
3350
|
+
'hardware_id': frame.slice(37, 40),
|
|
3351
|
+
'report_rate': frame.slice(40, 44),
|
|
3352
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
3353
|
+
}
|
|
3354
|
+
}
|
|
3355
|
+
}
|
|
3205
3356
|
}
|
|
3206
3357
|
},
|
|
3207
3358
|
'16': {
|
|
3208
3359
|
name: 'Soil Moisture Sensor',
|
|
3209
|
-
parse: (d) => {
|
|
3210
|
-
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
|
|
3215
|
-
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
|
|
3360
|
+
parse: (d, payload) => {
|
|
3361
|
+
if(payload[1] > 5) // firmware v6+
|
|
3362
|
+
{
|
|
3363
|
+
var adc1 = d.slice(0, 2).reduce(msbLsb);
|
|
3364
|
+
var adc2 = d.slice(2, 4).reduce(msbLsb);
|
|
3365
|
+
var vwc1 = d.slice(4, 6).reduce(msbLsb);
|
|
3366
|
+
var vwc2 = d.slice(6, 8).reduce(msbLsb);
|
|
3367
|
+
return {
|
|
3368
|
+
adc1: adc1,
|
|
3369
|
+
adc2: adc2,
|
|
3370
|
+
vwc1: vwc1,
|
|
3371
|
+
vwc2: vwc2,
|
|
3372
|
+
voltage1: adc1 * 0.00322265625,
|
|
3373
|
+
voltage2: adc2 * 0.00322265625,
|
|
3374
|
+
percentage1: adc1 > 870 ? 100 : Math.round(adc1 / 870 * 100),
|
|
3375
|
+
percentage2: adc2 > 870 ? 100 : Math.round(adc2 / 870 * 100)
|
|
3376
|
+
};
|
|
3377
|
+
} else{
|
|
3378
|
+
var adc1 = d.slice(0, 2).reduce(msbLsb);
|
|
3379
|
+
var adc2 = d.slice(2, 4).reduce(msbLsb);
|
|
3380
|
+
return {
|
|
3381
|
+
adc1: adc1,
|
|
3382
|
+
adc2: adc2,
|
|
3383
|
+
voltage1: adc1 * 0.00322265625,
|
|
3384
|
+
voltage2: adc2 * 0.00322265625,
|
|
3385
|
+
percentage: adc1 > 870 ? 100 : Math.round(adc1 / 870 * 100)
|
|
3386
|
+
};
|
|
3387
|
+
}
|
|
3219
3388
|
}
|
|
3220
3389
|
},
|
|
3221
3390
|
'17': {
|
|
@@ -3255,32 +3424,225 @@ function sensor_types(parent){
|
|
|
3255
3424
|
},
|
|
3256
3425
|
'21': {
|
|
3257
3426
|
name: 'Differential Bidirectional Pressure Sensor',
|
|
3258
|
-
parse: (
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
|
|
3273
|
-
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3280
|
-
|
|
3281
|
-
|
|
3282
|
-
|
|
3283
|
-
|
|
3427
|
+
parse: (payload, parsed, mac) => {
|
|
3428
|
+
let pressure, temperature, raw_adc;
|
|
3429
|
+
|
|
3430
|
+
if (parsed.firmware <= 12) {
|
|
3431
|
+
pressure = signInt(payload.slice(8, 10).reduce(msbLsb), 16) / 100;
|
|
3432
|
+
temperature = signInt(payload.slice(10, 12).reduce(msbLsb), 16) / 100;
|
|
3433
|
+
// raw_adc not present in firmware ≤ 12
|
|
3434
|
+
return {
|
|
3435
|
+
pressure,
|
|
3436
|
+
temperature
|
|
3437
|
+
};
|
|
3438
|
+
} else {
|
|
3439
|
+
pressure = signInt(payload.slice(8, 10).reduce(msbLsb), 16) / 1000;
|
|
3440
|
+
temperature = signInt(payload.slice(10, 12).reduce(msbLsb), 16) / 100;
|
|
3441
|
+
raw_adc = signInt(payload.slice(12, 14).reduce(msbLsb), 16);
|
|
3442
|
+
return {
|
|
3443
|
+
pressure,
|
|
3444
|
+
temperature,
|
|
3445
|
+
raw_adc
|
|
3446
|
+
};
|
|
3447
|
+
}
|
|
3448
|
+
},
|
|
3449
|
+
'parse_fly': (frame) => {
|
|
3450
|
+
let sensor_type = '';
|
|
3451
|
+
switch(frame[13]){
|
|
3452
|
+
case 0:
|
|
3453
|
+
sensor_type = 'AMS5812';
|
|
3454
|
+
break;
|
|
3455
|
+
case 1:
|
|
3456
|
+
sensor_type = 'AMS5915';
|
|
3457
|
+
break;
|
|
3458
|
+
}
|
|
3459
|
+
let sensor_range = '';
|
|
3460
|
+
if(frame[13]){ // if sensor type is 5915
|
|
3461
|
+
switch(frame[12]){
|
|
3462
|
+
case 0:
|
|
3463
|
+
sensor_range = '0005_D';
|
|
3464
|
+
break;
|
|
3465
|
+
case 1:
|
|
3466
|
+
sensor_range = '0010_D';
|
|
3467
|
+
break;
|
|
3468
|
+
case 2:
|
|
3469
|
+
sensor_range = '0002_D_B';
|
|
3470
|
+
break;
|
|
3471
|
+
case 3:
|
|
3472
|
+
sensor_range = '0005_D_B';
|
|
3473
|
+
break;
|
|
3474
|
+
case 4:
|
|
3475
|
+
sensor_range = '0010_D_B';
|
|
3476
|
+
break;
|
|
3477
|
+
case 5:
|
|
3478
|
+
sensor_range = '0020_D';
|
|
3479
|
+
break;
|
|
3480
|
+
case 6:
|
|
3481
|
+
sensor_range = '0035_D';
|
|
3482
|
+
break;
|
|
3483
|
+
case 7:
|
|
3484
|
+
sensor_range = '0050_D';
|
|
3485
|
+
break;
|
|
3486
|
+
case 8:
|
|
3487
|
+
sensor_range = '0100_D';
|
|
3488
|
+
break;
|
|
3489
|
+
case 9:
|
|
3490
|
+
sensor_range = '0020_D_B';
|
|
3491
|
+
break;
|
|
3492
|
+
case 10:
|
|
3493
|
+
sensor_range = '0035_D_B';
|
|
3494
|
+
break;
|
|
3495
|
+
case 11:
|
|
3496
|
+
sensor_range = '0050_D_B';
|
|
3497
|
+
break;
|
|
3498
|
+
case 12:
|
|
3499
|
+
sensor_range = '0100_D_B';
|
|
3500
|
+
break;
|
|
3501
|
+
case 13:
|
|
3502
|
+
sensor_range = '0200_D';
|
|
3503
|
+
break;
|
|
3504
|
+
case 14:
|
|
3505
|
+
sensor_range = '0350_D';
|
|
3506
|
+
break;
|
|
3507
|
+
case 15:
|
|
3508
|
+
sensor_range = '0500_D';
|
|
3509
|
+
break;
|
|
3510
|
+
case 16:
|
|
3511
|
+
sensor_range = '1000_D';
|
|
3512
|
+
break;
|
|
3513
|
+
case 17:
|
|
3514
|
+
sensor_range = '2000_D';
|
|
3515
|
+
break;
|
|
3516
|
+
case 18:
|
|
3517
|
+
sensor_range = '4000_D';
|
|
3518
|
+
break;
|
|
3519
|
+
case 19:
|
|
3520
|
+
sensor_range = '7000_D';
|
|
3521
|
+
break;
|
|
3522
|
+
case 20:
|
|
3523
|
+
sensor_range = '10000_D';
|
|
3524
|
+
break;
|
|
3525
|
+
case 21:
|
|
3526
|
+
sensor_range = '0200_D_B';
|
|
3527
|
+
break;
|
|
3528
|
+
case 22:
|
|
3529
|
+
sensor_range = '0350_D_B';
|
|
3530
|
+
break;
|
|
3531
|
+
case 23:
|
|
3532
|
+
sensor_range = '0500_D_B';
|
|
3533
|
+
break;
|
|
3534
|
+
case 24:
|
|
3535
|
+
sensor_range = '1000_D_B';
|
|
3536
|
+
break;
|
|
3537
|
+
}
|
|
3538
|
+
}
|
|
3539
|
+
else{ // sensor type is 5812
|
|
3540
|
+
switch(frame[12]){
|
|
3541
|
+
case 0:
|
|
3542
|
+
sensor_range = '0000_D';
|
|
3543
|
+
break;
|
|
3544
|
+
case 1:
|
|
3545
|
+
sensor_range = '0001_D';
|
|
3546
|
+
break;
|
|
3547
|
+
case 2:
|
|
3548
|
+
sensor_range = '0000_D_B';
|
|
3549
|
+
break;
|
|
3550
|
+
case 3:
|
|
3551
|
+
sensor_range = '0001_D_B';
|
|
3552
|
+
break;
|
|
3553
|
+
case 4:
|
|
3554
|
+
sensor_range = '0003_D';
|
|
3555
|
+
break;
|
|
3556
|
+
case 5:
|
|
3557
|
+
sensor_range = '0008_D';
|
|
3558
|
+
break;
|
|
3559
|
+
case 6:
|
|
3560
|
+
sensor_range = '0015_D';
|
|
3561
|
+
break;
|
|
3562
|
+
case 7:
|
|
3563
|
+
sensor_range = '0003_D_B';
|
|
3564
|
+
break;
|
|
3565
|
+
case 8:
|
|
3566
|
+
sensor_range = '0008_D_B';
|
|
3567
|
+
break;
|
|
3568
|
+
case 9:
|
|
3569
|
+
sensor_range = '0015_D_B';
|
|
3570
|
+
break;
|
|
3571
|
+
case 10:
|
|
3572
|
+
sensor_range = '0030_D';
|
|
3573
|
+
break;
|
|
3574
|
+
case 11:
|
|
3575
|
+
sensor_range = '0050_D';
|
|
3576
|
+
break;
|
|
3577
|
+
case 12:
|
|
3578
|
+
sensor_range = '0150_D';
|
|
3579
|
+
break;
|
|
3580
|
+
case 13:
|
|
3581
|
+
sensor_range = '0300_D';
|
|
3582
|
+
break;
|
|
3583
|
+
case 14:
|
|
3584
|
+
sensor_range = '0600_D';
|
|
3585
|
+
break;
|
|
3586
|
+
case 15:
|
|
3587
|
+
sensor_range = '1000_D';
|
|
3588
|
+
break;
|
|
3589
|
+
case 16:
|
|
3590
|
+
sensor_range = '0030_D_B';
|
|
3591
|
+
break;
|
|
3592
|
+
case 17:
|
|
3593
|
+
sensor_range = '0050_D_B';
|
|
3594
|
+
break;
|
|
3595
|
+
case 18:
|
|
3596
|
+
sensor_range = '0150_D_B';
|
|
3597
|
+
break;
|
|
3598
|
+
case 19:
|
|
3599
|
+
sensor_range = '0150_B';
|
|
3600
|
+
break;
|
|
3601
|
+
case 20:
|
|
3602
|
+
sensor_range = '0150_A';
|
|
3603
|
+
break;
|
|
3604
|
+
case 21:
|
|
3605
|
+
sensor_range = '0300_A';
|
|
3606
|
+
break;
|
|
3607
|
+
}
|
|
3608
|
+
}
|
|
3609
|
+
return {
|
|
3610
|
+
'firmware': frame[2],
|
|
3611
|
+
'sensor_range': sensor_range,
|
|
3612
|
+
'sensor_type': sensor_type,
|
|
3613
|
+
'hardware_id': frame.slice(14, 17),
|
|
3614
|
+
'report_rate': frame.slice(17, 21).reduce(msbLsb) + ' sec',
|
|
3615
|
+
'tx_counter': frame.slice(21, 25).reduce(msbLsb),
|
|
3616
|
+
'machine_values': {
|
|
3617
|
+
'firmware': frame[2],
|
|
3618
|
+
'sensor_range': frame[12],
|
|
3619
|
+
'sensor_type': frame[13],
|
|
3620
|
+
'hardware_id': frame.slice(14, 17),
|
|
3621
|
+
'report_rate': frame.slice(17, 21),
|
|
3622
|
+
'tx_counter': frame.slice(21, 25)
|
|
3623
|
+
}
|
|
3624
|
+
}
|
|
3625
|
+
}
|
|
3626
|
+
},
|
|
3627
|
+
'22': {
|
|
3628
|
+
name: 'Voltage Detection Input',
|
|
3629
|
+
parse: (d) => {
|
|
3630
|
+
return {
|
|
3631
|
+
input: d[0]
|
|
3632
|
+
};
|
|
3633
|
+
}
|
|
3634
|
+
},
|
|
3635
|
+
'23': {
|
|
3636
|
+
name: '2-Channel Thermocouple',
|
|
3637
|
+
parse: (d) => {
|
|
3638
|
+
return {
|
|
3639
|
+
channel_1: signInt(d.slice(0, 4).reduce(msbLsb), 32) / 100,
|
|
3640
|
+
channel_2: signInt(d.slice(4, 8).reduce(msbLsb), 32) / 100,
|
|
3641
|
+
};
|
|
3642
|
+
}
|
|
3643
|
+
},
|
|
3644
|
+
'24': {
|
|
3645
|
+
name: 'Activity Detection',
|
|
3284
3646
|
parse: (d) => {
|
|
3285
3647
|
return {
|
|
3286
3648
|
acc_x: signInt(d.slice(0, 2).reduce(msbLsb), 16),
|
|
@@ -3514,6 +3876,69 @@ function sensor_types(parent){
|
|
|
3514
3876
|
adc: signInt(d.slice(0, 2).reduce(msbLsb), 16),
|
|
3515
3877
|
mA: signInt(d.slice(2, 4).reduce(msbLsb), 16)/100
|
|
3516
3878
|
};
|
|
3879
|
+
},
|
|
3880
|
+
'parse_fly': (frame) => {
|
|
3881
|
+
let firmware = frame[2];
|
|
3882
|
+
if(firmware > 13){ // firmware 14 and above
|
|
3883
|
+
let frame_data = {};
|
|
3884
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
3885
|
+
if(!auto_check_interval){
|
|
3886
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
3887
|
+
}else{
|
|
3888
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
3889
|
+
}
|
|
3890
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
3891
|
+
switch(frame[16]){
|
|
3892
|
+
case 0:
|
|
3893
|
+
frame_data.fsr = "+-6.114 V";
|
|
3894
|
+
break;
|
|
3895
|
+
case 1:
|
|
3896
|
+
frame_data.fsr = "+-4.096 V";
|
|
3897
|
+
break;
|
|
3898
|
+
case 2:
|
|
3899
|
+
frame_data.fsr = "+-2.048 V";
|
|
3900
|
+
break;
|
|
3901
|
+
case 3:
|
|
3902
|
+
frame_data.fsr = "+-1.024 V";
|
|
3903
|
+
break;
|
|
3904
|
+
case 4:
|
|
3905
|
+
frame_data.fsr = "+-0.512 V";
|
|
3906
|
+
break;
|
|
3907
|
+
case 5:
|
|
3908
|
+
frame_data.fsr = "+-0.256 V";
|
|
3909
|
+
break;
|
|
3910
|
+
}
|
|
3911
|
+
return {
|
|
3912
|
+
'firmware': frame[2],
|
|
3913
|
+
'fsr': frame_data.fsr,
|
|
3914
|
+
'boot_time': frame[17] + " sec",
|
|
3915
|
+
'power_adc': frame.slice(18, 20).reduce(msbLsb),
|
|
3916
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
3917
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
3918
|
+
'always_on': frame_data.always_on,
|
|
3919
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
3920
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
3921
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
3922
|
+
'hardware_id': frame.slice(37, 40),
|
|
3923
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
3924
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
3925
|
+
'machine_values': {
|
|
3926
|
+
'firmware': frame[2],
|
|
3927
|
+
'fsr': frame[16],
|
|
3928
|
+
'boot_time': frame[17],
|
|
3929
|
+
'power_adc': frame.slice(18, 20),
|
|
3930
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
3931
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
3932
|
+
'always_on': frame[24],
|
|
3933
|
+
'calibration_one': frame.slice(25, 29),
|
|
3934
|
+
'calibration_two':frame.slice(29, 33),
|
|
3935
|
+
'calibration_three':frame.slice(33, 37),
|
|
3936
|
+
'hardware_id': frame.slice(37, 40),
|
|
3937
|
+
'report_rate': frame.slice(40, 44),
|
|
3938
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
3939
|
+
}
|
|
3940
|
+
}
|
|
3941
|
+
}
|
|
3517
3942
|
}
|
|
3518
3943
|
},
|
|
3519
3944
|
'46': {
|
|
@@ -3540,6 +3965,69 @@ function sensor_types(parent){
|
|
|
3540
3965
|
adc: signInt(d.slice(0, 2).reduce(msbLsb), 16),
|
|
3541
3966
|
mA: signInt(d.slice(2, 4).reduce(msbLsb), 16)/100
|
|
3542
3967
|
};
|
|
3968
|
+
},
|
|
3969
|
+
'parse_fly': (frame) => {
|
|
3970
|
+
let firmware = frame[2];
|
|
3971
|
+
if(firmware > 13){ // firmware 14 and above
|
|
3972
|
+
let frame_data = {};
|
|
3973
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
3974
|
+
if(!auto_check_interval){
|
|
3975
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
3976
|
+
}else{
|
|
3977
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
3978
|
+
}
|
|
3979
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
3980
|
+
switch(frame[16]){
|
|
3981
|
+
case 0:
|
|
3982
|
+
frame_data.fsr = "+-6.114 V";
|
|
3983
|
+
break;
|
|
3984
|
+
case 1:
|
|
3985
|
+
frame_data.fsr = "+-4.096 V";
|
|
3986
|
+
break;
|
|
3987
|
+
case 2:
|
|
3988
|
+
frame_data.fsr = "+-2.048 V";
|
|
3989
|
+
break;
|
|
3990
|
+
case 3:
|
|
3991
|
+
frame_data.fsr = "+-1.024 V";
|
|
3992
|
+
break;
|
|
3993
|
+
case 4:
|
|
3994
|
+
frame_data.fsr = "+-0.512 V";
|
|
3995
|
+
break;
|
|
3996
|
+
case 5:
|
|
3997
|
+
frame_data.fsr = "+-0.256 V";
|
|
3998
|
+
break;
|
|
3999
|
+
}
|
|
4000
|
+
return {
|
|
4001
|
+
'firmware': frame[2],
|
|
4002
|
+
'fsr': frame_data.fsr,
|
|
4003
|
+
'boot_time': frame[17] + " sec",
|
|
4004
|
+
'power_adc': frame.slice(18, 20).reduce(msbLsb),
|
|
4005
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
4006
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
4007
|
+
'always_on': frame_data.always_on,
|
|
4008
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
4009
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
4010
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
4011
|
+
'hardware_id': frame.slice(37, 40),
|
|
4012
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
4013
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
4014
|
+
'machine_values': {
|
|
4015
|
+
'firmware': frame[2],
|
|
4016
|
+
'fsr': frame[16],
|
|
4017
|
+
'boot_time': frame[17],
|
|
4018
|
+
'power_adc': frame.slice(18, 20),
|
|
4019
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
4020
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
4021
|
+
'always_on': frame[24],
|
|
4022
|
+
'calibration_one': frame.slice(25, 29),
|
|
4023
|
+
'calibration_two':frame.slice(29, 33),
|
|
4024
|
+
'calibration_three':frame.slice(33, 37),
|
|
4025
|
+
'hardware_id': frame.slice(37, 40),
|
|
4026
|
+
'report_rate': frame.slice(40, 44),
|
|
4027
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
4028
|
+
}
|
|
4029
|
+
}
|
|
4030
|
+
}
|
|
3543
4031
|
}
|
|
3544
4032
|
},
|
|
3545
4033
|
'49': {
|
|
@@ -3619,28 +4107,69 @@ function sensor_types(parent){
|
|
|
3619
4107
|
};
|
|
3620
4108
|
},
|
|
3621
4109
|
'parse_fly': (frame) => {
|
|
4110
|
+
let firmware = frame[2];
|
|
3622
4111
|
let frame_data = {};
|
|
3623
4112
|
switch(frame[16]){
|
|
3624
4113
|
case 0:
|
|
3625
|
-
frame_data.fsr = "+-
|
|
4114
|
+
frame_data.fsr = "+-6.114 V";
|
|
3626
4115
|
break;
|
|
3627
4116
|
case 1:
|
|
3628
|
-
frame_data.fsr = "+-
|
|
4117
|
+
frame_data.fsr = "+-4.096 V";
|
|
3629
4118
|
break;
|
|
3630
4119
|
case 2:
|
|
3631
|
-
frame_data.fsr = "+-
|
|
4120
|
+
frame_data.fsr = "+-2.048 V";
|
|
3632
4121
|
break;
|
|
3633
4122
|
case 3:
|
|
3634
|
-
frame_data.fsr = "+-
|
|
4123
|
+
frame_data.fsr = "+-1.024 V";
|
|
3635
4124
|
break;
|
|
3636
4125
|
case 4:
|
|
3637
|
-
frame_data.fsr = "+-
|
|
4126
|
+
frame_data.fsr = "+-0.512 V";
|
|
3638
4127
|
break;
|
|
3639
4128
|
case 5:
|
|
3640
|
-
frame_data.fsr = "+-
|
|
4129
|
+
frame_data.fsr = "+-0.256 V";
|
|
3641
4130
|
break;
|
|
3642
4131
|
}
|
|
3643
|
-
if(
|
|
4132
|
+
if(firmware > 13){ // firmware 14 and above
|
|
4133
|
+
let frame_data = {};
|
|
4134
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
4135
|
+
if(!auto_check_interval){
|
|
4136
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
4137
|
+
}else{
|
|
4138
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
4139
|
+
}
|
|
4140
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
4141
|
+
return {
|
|
4142
|
+
'firmware': frame[2],
|
|
4143
|
+
'fsr': frame_data.fsr,
|
|
4144
|
+
'boot_up_time': frame[17] + " sec",
|
|
4145
|
+
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
4146
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
4147
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
4148
|
+
'always_on': frame_data.always_on,
|
|
4149
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
4150
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
4151
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
4152
|
+
'hardware_id': frame.slice(37, 40),
|
|
4153
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
4154
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
4155
|
+
'machine_values': {
|
|
4156
|
+
'firmware': frame[2],
|
|
4157
|
+
'fsr': frame[16],
|
|
4158
|
+
'boot_up_time': frame[17],
|
|
4159
|
+
'adc_pin_reading': frame.slice(18, 20),
|
|
4160
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
4161
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
4162
|
+
'always_on': frame[24],
|
|
4163
|
+
'calibration_one': frame.slice(25, 29),
|
|
4164
|
+
'calibration_two':frame.slice(29, 33),
|
|
4165
|
+
'calibration_three':frame.slice(33, 37),
|
|
4166
|
+
'hardware_id': frame.slice(37, 40),
|
|
4167
|
+
'report_rate': frame.slice(40, 44),
|
|
4168
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
4169
|
+
}
|
|
4170
|
+
}
|
|
4171
|
+
}
|
|
4172
|
+
else if(firmware > 12){
|
|
3644
4173
|
return {
|
|
3645
4174
|
'firmware': frame[2],
|
|
3646
4175
|
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
@@ -3715,6 +4244,69 @@ function sensor_types(parent){
|
|
|
3715
4244
|
VDC1: parseFloat((adc1 * 0.00034122).toFixed(2)),
|
|
3716
4245
|
VDC2: parseFloat((adc2 * 0.00034122).toFixed(2))
|
|
3717
4246
|
};
|
|
4247
|
+
},
|
|
4248
|
+
'parse_fly': (frame) => {
|
|
4249
|
+
let firmware = frame[2];
|
|
4250
|
+
if(firmware > 13){ // firmware 14 and above
|
|
4251
|
+
let frame_data = {};
|
|
4252
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
4253
|
+
if(!auto_check_interval){
|
|
4254
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
4255
|
+
}else{
|
|
4256
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
4257
|
+
}
|
|
4258
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
4259
|
+
switch(frame[16]){
|
|
4260
|
+
case 0:
|
|
4261
|
+
frame_data.fsr = "+-6.114 V";
|
|
4262
|
+
break;
|
|
4263
|
+
case 1:
|
|
4264
|
+
frame_data.fsr = "+-4.096 V";
|
|
4265
|
+
break;
|
|
4266
|
+
case 2:
|
|
4267
|
+
frame_data.fsr = "+-2.048 V";
|
|
4268
|
+
break;
|
|
4269
|
+
case 3:
|
|
4270
|
+
frame_data.fsr = "+-1.024 V";
|
|
4271
|
+
break;
|
|
4272
|
+
case 4:
|
|
4273
|
+
frame_data.fsr = "+-0.512 V";
|
|
4274
|
+
break;
|
|
4275
|
+
case 5:
|
|
4276
|
+
frame_data.fsr = "+-0.256 V";
|
|
4277
|
+
break;
|
|
4278
|
+
}
|
|
4279
|
+
return {
|
|
4280
|
+
'firmware': frame[2],
|
|
4281
|
+
'fsr': frame_data.fsr,
|
|
4282
|
+
'boot_time': frame[17] + " sec",
|
|
4283
|
+
'power_adc': frame.slice(18, 20).reduce(msbLsb),
|
|
4284
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
4285
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
4286
|
+
'always_on': frame_data.always_on,
|
|
4287
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
4288
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
4289
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
4290
|
+
'hardware_id': frame.slice(37, 40),
|
|
4291
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
4292
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
4293
|
+
'machine_values': {
|
|
4294
|
+
'firmware': frame[2],
|
|
4295
|
+
'fsr': frame[16],
|
|
4296
|
+
'boot_time': frame[17],
|
|
4297
|
+
'power_adc': frame.slice(18, 20),
|
|
4298
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
4299
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
4300
|
+
'always_on': frame[24],
|
|
4301
|
+
'calibration_one': frame.slice(25, 29),
|
|
4302
|
+
'calibration_two':frame.slice(29, 33),
|
|
4303
|
+
'calibration_three':frame.slice(33, 37),
|
|
4304
|
+
'hardware_id': frame.slice(37, 40),
|
|
4305
|
+
'report_rate': frame.slice(40, 44),
|
|
4306
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
4307
|
+
}
|
|
4308
|
+
}
|
|
4309
|
+
}
|
|
3718
4310
|
}
|
|
3719
4311
|
},
|
|
3720
4312
|
'58': {
|
|
@@ -3948,6 +4540,69 @@ function sensor_types(parent){
|
|
|
3948
4540
|
mA: signInt(d.slice(2, 4).reduce(msbLsb), 16)/100,
|
|
3949
4541
|
Velocity: signInt(d.slice(4, 8).reduce(msbLsb), 32) / 100
|
|
3950
4542
|
};
|
|
4543
|
+
},
|
|
4544
|
+
'parse_fly': (frame) => {
|
|
4545
|
+
let firmware = frame[2];
|
|
4546
|
+
if(firmware > 13){ // firmware 14 and above
|
|
4547
|
+
let frame_data = {};
|
|
4548
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
4549
|
+
if(!auto_check_interval){
|
|
4550
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
4551
|
+
}else{
|
|
4552
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
4553
|
+
}
|
|
4554
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
4555
|
+
switch(frame[16]){
|
|
4556
|
+
case 0:
|
|
4557
|
+
frame_data.fsr = "+-6.114 V";
|
|
4558
|
+
break;
|
|
4559
|
+
case 1:
|
|
4560
|
+
frame_data.fsr = "+-4.096 V";
|
|
4561
|
+
break;
|
|
4562
|
+
case 2:
|
|
4563
|
+
frame_data.fsr = "+-2.048 V";
|
|
4564
|
+
break;
|
|
4565
|
+
case 3:
|
|
4566
|
+
frame_data.fsr = "+-1.024 V";
|
|
4567
|
+
break;
|
|
4568
|
+
case 4:
|
|
4569
|
+
frame_data.fsr = "+-0.512 V";
|
|
4570
|
+
break;
|
|
4571
|
+
case 5:
|
|
4572
|
+
frame_data.fsr = "+-0.256 V";
|
|
4573
|
+
break;
|
|
4574
|
+
}
|
|
4575
|
+
return {
|
|
4576
|
+
'firmware': frame[2],
|
|
4577
|
+
'fsr': frame_data.fsr,
|
|
4578
|
+
'boot_time': frame[17] + " sec",
|
|
4579
|
+
'power_adc': frame.slice(18, 20).reduce(msbLsb),
|
|
4580
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
4581
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
4582
|
+
'always_on': frame_data.always_on,
|
|
4583
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
4584
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
4585
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
4586
|
+
'hardware_id': frame.slice(37, 40),
|
|
4587
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
4588
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
4589
|
+
'machine_values': {
|
|
4590
|
+
'firmware': frame[2],
|
|
4591
|
+
'fsr': frame[16],
|
|
4592
|
+
'boot_time': frame[17],
|
|
4593
|
+
'power_adc': frame.slice(18, 20),
|
|
4594
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
4595
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
4596
|
+
'always_on': frame[24],
|
|
4597
|
+
'calibration_one': frame.slice(25, 29),
|
|
4598
|
+
'calibration_two':frame.slice(29, 33),
|
|
4599
|
+
'calibration_three':frame.slice(33, 37),
|
|
4600
|
+
'hardware_id': frame.slice(37, 40),
|
|
4601
|
+
'report_rate': frame.slice(40, 44),
|
|
4602
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
4603
|
+
}
|
|
4604
|
+
}
|
|
4605
|
+
}
|
|
3951
4606
|
}
|
|
3952
4607
|
},
|
|
3953
4608
|
'76': {
|
|
@@ -3958,17 +4613,80 @@ function sensor_types(parent){
|
|
|
3958
4613
|
temperature: signInt((msbLsb(d[2], d[3])), 16)/100,
|
|
3959
4614
|
co_ppm: msbLsb(d[4], d[5])
|
|
3960
4615
|
};
|
|
3961
|
-
}
|
|
3962
|
-
|
|
3963
|
-
|
|
3964
|
-
|
|
3965
|
-
|
|
3966
|
-
|
|
3967
|
-
|
|
3968
|
-
|
|
3969
|
-
|
|
3970
|
-
|
|
3971
|
-
|
|
4616
|
+
},
|
|
4617
|
+
'parse_fly': (frame) => {
|
|
4618
|
+
let firmware = frame[2];
|
|
4619
|
+
if(firmware > 13){ // firmware 14 and above
|
|
4620
|
+
let frame_data = {};
|
|
4621
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
4622
|
+
if(!auto_check_interval){
|
|
4623
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
4624
|
+
}else{
|
|
4625
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
4626
|
+
}
|
|
4627
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
4628
|
+
switch(frame[16]){
|
|
4629
|
+
case 0:
|
|
4630
|
+
frame_data.fsr = "+-6.114 V";
|
|
4631
|
+
break;
|
|
4632
|
+
case 1:
|
|
4633
|
+
frame_data.fsr = "+-4.096 V";
|
|
4634
|
+
break;
|
|
4635
|
+
case 2:
|
|
4636
|
+
frame_data.fsr = "+-2.048 V";
|
|
4637
|
+
break;
|
|
4638
|
+
case 3:
|
|
4639
|
+
frame_data.fsr = "+-1.024 V";
|
|
4640
|
+
break;
|
|
4641
|
+
case 4:
|
|
4642
|
+
frame_data.fsr = "+-0.512 V";
|
|
4643
|
+
break;
|
|
4644
|
+
case 5:
|
|
4645
|
+
frame_data.fsr = "+-0.256 V";
|
|
4646
|
+
break;
|
|
4647
|
+
}
|
|
4648
|
+
return {
|
|
4649
|
+
'firmware': frame[2],
|
|
4650
|
+
'fsr': frame_data.fsr,
|
|
4651
|
+
'boot_time': frame[17] + " sec",
|
|
4652
|
+
'power_adc': frame.slice(18, 20).reduce(msbLsb),
|
|
4653
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
4654
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
4655
|
+
'always_on': frame_data.always_on,
|
|
4656
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
4657
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
4658
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
4659
|
+
'hardware_id': frame.slice(37, 40),
|
|
4660
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
4661
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
4662
|
+
'machine_values': {
|
|
4663
|
+
'firmware': frame[2],
|
|
4664
|
+
'fsr': frame[16],
|
|
4665
|
+
'boot_time': frame[17],
|
|
4666
|
+
'power_adc': frame.slice(18, 20),
|
|
4667
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
4668
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
4669
|
+
'always_on': frame[24],
|
|
4670
|
+
'calibration_one': frame.slice(25, 29),
|
|
4671
|
+
'calibration_two':frame.slice(29, 33),
|
|
4672
|
+
'calibration_three':frame.slice(33, 37),
|
|
4673
|
+
'hardware_id': frame.slice(37, 40),
|
|
4674
|
+
'report_rate': frame.slice(40, 44),
|
|
4675
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
4676
|
+
}
|
|
4677
|
+
}
|
|
4678
|
+
}
|
|
4679
|
+
}
|
|
4680
|
+
},
|
|
4681
|
+
'77': {
|
|
4682
|
+
name: '3 Channel SDI-12 Wireelss',
|
|
4683
|
+
parse: (d) => {
|
|
4684
|
+
return {
|
|
4685
|
+
Temperature_1: signInt(d.slice(0, 2).reduce(msbLsb), 16)/100,
|
|
4686
|
+
Soil_Moisture_1: signInt(d.slice(2, 4).reduce(msbLsb), 16)/100,
|
|
4687
|
+
Bulk_EC_1: signInt(d.slice(4, 6).reduce(msbLsb), 16),
|
|
4688
|
+
Pore_EC_1: signInt(d.slice(6, 8).reduce(msbLsb), 16),
|
|
4689
|
+
Permittivity_1: signInt(d.slice(8, 10).reduce(msbLsb), 16)/100,
|
|
3972
4690
|
Temperature_2: signInt(d.slice(10, 12).reduce(msbLsb), 16)/100,
|
|
3973
4691
|
Soil_Moisture_2: signInt(d.slice(12, 14).reduce(msbLsb), 16)/100,
|
|
3974
4692
|
Bulk_EC_2: signInt(d.slice(14, 16).reduce(msbLsb), 16),
|
|
@@ -4050,65 +4768,50 @@ function sensor_types(parent){
|
|
|
4050
4768
|
if(payload[8] === 1){
|
|
4051
4769
|
var deviceAddr = mac;
|
|
4052
4770
|
var firmware = payload[1];
|
|
4771
|
+
var mode = payload[8];
|
|
4772
|
+
var odr = payload[9];
|
|
4773
|
+
var en_axis = payload[10] & 7;
|
|
4774
|
+
var fsr = payload[10] >> 5;
|
|
4775
|
+
var hour = payload[11];
|
|
4776
|
+
var minute = payload[12];
|
|
4777
|
+
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
4778
|
+
var expected_packets = payload[15];
|
|
4779
|
+
var current_packet = payload[16];
|
|
4780
|
+
var sdata_start = 17;
|
|
4053
4781
|
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
|
|
4058
|
-
|
|
4059
|
-
|
|
4060
|
-
|
|
4061
|
-
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
|
|
4072
|
-
|
|
4073
|
-
|
|
4074
|
-
|
|
4075
|
-
|
|
4076
|
-
|
|
4077
|
-
|
|
4078
|
-
|
|
4079
|
-
|
|
4080
|
-
|
|
4081
|
-
|
|
4082
|
-
|
|
4083
|
-
|
|
4084
|
-
|
|
4085
|
-
|
|
4086
|
-
|
|
4087
|
-
break;
|
|
4088
|
-
case 9:
|
|
4089
|
-
odr = 400;
|
|
4090
|
-
break;
|
|
4091
|
-
case 10:
|
|
4092
|
-
odr = 800;
|
|
4093
|
-
break;
|
|
4094
|
-
case 11:
|
|
4095
|
-
odr = 1600;
|
|
4096
|
-
break;
|
|
4097
|
-
case 12:
|
|
4098
|
-
odr = 3200;
|
|
4099
|
-
break;
|
|
4100
|
-
case 13:
|
|
4101
|
-
odr = 6400;
|
|
4102
|
-
break;
|
|
4103
|
-
case 14:
|
|
4104
|
-
odr = 12800;
|
|
4105
|
-
break;
|
|
4106
|
-
case 15:
|
|
4107
|
-
odr = 25600;
|
|
4108
|
-
break;
|
|
4109
|
-
default:
|
|
4110
|
-
odr = 0;
|
|
4111
|
-
}
|
|
4782
|
+
switch(odr){
|
|
4783
|
+
case 6:
|
|
4784
|
+
odr = 50;
|
|
4785
|
+
break;
|
|
4786
|
+
case 7:
|
|
4787
|
+
odr = 100;
|
|
4788
|
+
break;
|
|
4789
|
+
case 8:
|
|
4790
|
+
odr = 200;
|
|
4791
|
+
break;
|
|
4792
|
+
case 9:
|
|
4793
|
+
odr = 400;
|
|
4794
|
+
break;
|
|
4795
|
+
case 10:
|
|
4796
|
+
odr = 800;
|
|
4797
|
+
break;
|
|
4798
|
+
case 11:
|
|
4799
|
+
odr = 1600;
|
|
4800
|
+
break;
|
|
4801
|
+
case 12:
|
|
4802
|
+
odr = 3200;
|
|
4803
|
+
break;
|
|
4804
|
+
case 13:
|
|
4805
|
+
odr = 6400;
|
|
4806
|
+
break;
|
|
4807
|
+
case 14:
|
|
4808
|
+
odr = 12800;
|
|
4809
|
+
break;
|
|
4810
|
+
case 15:
|
|
4811
|
+
odr = 25600;
|
|
4812
|
+
break;
|
|
4813
|
+
default:
|
|
4814
|
+
odr = 0;
|
|
4112
4815
|
}
|
|
4113
4816
|
|
|
4114
4817
|
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
@@ -4601,65 +5304,50 @@ function sensor_types(parent){
|
|
|
4601
5304
|
if(payload[8] === 1){
|
|
4602
5305
|
var deviceAddr = mac;
|
|
4603
5306
|
var firmware = payload[1];
|
|
5307
|
+
var mode = payload[8];
|
|
5308
|
+
var odr = payload[9];
|
|
5309
|
+
var en_axis = payload[10] & 7;
|
|
5310
|
+
var fsr = payload[10] >> 5;
|
|
5311
|
+
var hour = payload[11];
|
|
5312
|
+
var minute = payload[12];
|
|
5313
|
+
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
5314
|
+
var expected_packets = payload[15];
|
|
5315
|
+
var current_packet = payload[16];
|
|
5316
|
+
var sdata_start = 17;
|
|
4604
5317
|
|
|
4605
|
-
|
|
4606
|
-
|
|
4607
|
-
|
|
4608
|
-
|
|
4609
|
-
|
|
4610
|
-
|
|
4611
|
-
|
|
4612
|
-
|
|
4613
|
-
|
|
4614
|
-
|
|
4615
|
-
|
|
4616
|
-
|
|
4617
|
-
|
|
4618
|
-
|
|
4619
|
-
|
|
4620
|
-
|
|
4621
|
-
|
|
4622
|
-
|
|
4623
|
-
|
|
4624
|
-
|
|
4625
|
-
|
|
4626
|
-
|
|
4627
|
-
|
|
4628
|
-
|
|
4629
|
-
|
|
4630
|
-
|
|
4631
|
-
|
|
4632
|
-
|
|
4633
|
-
|
|
4634
|
-
|
|
4635
|
-
|
|
4636
|
-
|
|
4637
|
-
|
|
4638
|
-
break;
|
|
4639
|
-
case 9:
|
|
4640
|
-
odr = 400;
|
|
4641
|
-
break;
|
|
4642
|
-
case 10:
|
|
4643
|
-
odr = 800;
|
|
4644
|
-
break;
|
|
4645
|
-
case 11:
|
|
4646
|
-
odr = 1600;
|
|
4647
|
-
break;
|
|
4648
|
-
case 12:
|
|
4649
|
-
odr = 3200;
|
|
4650
|
-
break;
|
|
4651
|
-
case 13:
|
|
4652
|
-
odr = 6400;
|
|
4653
|
-
break;
|
|
4654
|
-
case 14:
|
|
4655
|
-
odr = 12800;
|
|
4656
|
-
break;
|
|
4657
|
-
case 15:
|
|
4658
|
-
odr = 25600;
|
|
4659
|
-
break;
|
|
4660
|
-
default:
|
|
4661
|
-
odr = 0;
|
|
4662
|
-
}
|
|
5318
|
+
switch(odr){
|
|
5319
|
+
case 6:
|
|
5320
|
+
odr = 50;
|
|
5321
|
+
break;
|
|
5322
|
+
case 7:
|
|
5323
|
+
odr = 100;
|
|
5324
|
+
break;
|
|
5325
|
+
case 8:
|
|
5326
|
+
odr = 200;
|
|
5327
|
+
break;
|
|
5328
|
+
case 9:
|
|
5329
|
+
odr = 400;
|
|
5330
|
+
break;
|
|
5331
|
+
case 10:
|
|
5332
|
+
odr = 800;
|
|
5333
|
+
break;
|
|
5334
|
+
case 11:
|
|
5335
|
+
odr = 1600;
|
|
5336
|
+
break;
|
|
5337
|
+
case 12:
|
|
5338
|
+
odr = 3200;
|
|
5339
|
+
break;
|
|
5340
|
+
case 13:
|
|
5341
|
+
odr = 6400;
|
|
5342
|
+
break;
|
|
5343
|
+
case 14:
|
|
5344
|
+
odr = 12800;
|
|
5345
|
+
break;
|
|
5346
|
+
case 15:
|
|
5347
|
+
odr = 25600;
|
|
5348
|
+
break;
|
|
5349
|
+
default:
|
|
5350
|
+
odr = 0;
|
|
4663
5351
|
}
|
|
4664
5352
|
|
|
4665
5353
|
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
@@ -5339,65 +6027,50 @@ function sensor_types(parent){
|
|
|
5339
6027
|
if(payload[8] === 1){
|
|
5340
6028
|
var deviceAddr = mac;
|
|
5341
6029
|
var firmware = payload[1];
|
|
6030
|
+
var mode = payload[8];
|
|
6031
|
+
var odr = payload[9];
|
|
6032
|
+
var en_axis = payload[10] & 7;
|
|
6033
|
+
var fsr = payload[10] >> 5;
|
|
6034
|
+
var hour = payload[11];
|
|
6035
|
+
var minute = payload[12];
|
|
6036
|
+
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
6037
|
+
var expected_packets = payload[15];
|
|
6038
|
+
var current_packet = payload[16];
|
|
6039
|
+
var sdata_start = 17;
|
|
5342
6040
|
|
|
5343
|
-
|
|
5344
|
-
|
|
5345
|
-
|
|
5346
|
-
|
|
5347
|
-
|
|
5348
|
-
|
|
5349
|
-
|
|
5350
|
-
|
|
5351
|
-
|
|
5352
|
-
|
|
5353
|
-
|
|
5354
|
-
|
|
5355
|
-
|
|
5356
|
-
|
|
5357
|
-
|
|
5358
|
-
|
|
5359
|
-
|
|
5360
|
-
|
|
5361
|
-
|
|
5362
|
-
|
|
5363
|
-
|
|
5364
|
-
|
|
5365
|
-
|
|
5366
|
-
|
|
5367
|
-
|
|
5368
|
-
|
|
5369
|
-
|
|
5370
|
-
|
|
5371
|
-
|
|
5372
|
-
|
|
5373
|
-
|
|
5374
|
-
|
|
5375
|
-
|
|
5376
|
-
break;
|
|
5377
|
-
case 9:
|
|
5378
|
-
odr = 400;
|
|
5379
|
-
break;
|
|
5380
|
-
case 10:
|
|
5381
|
-
odr = 800;
|
|
5382
|
-
break;
|
|
5383
|
-
case 11:
|
|
5384
|
-
odr = 1600;
|
|
5385
|
-
break;
|
|
5386
|
-
case 12:
|
|
5387
|
-
odr = 3200;
|
|
5388
|
-
break;
|
|
5389
|
-
case 13:
|
|
5390
|
-
odr = 6400;
|
|
5391
|
-
break;
|
|
5392
|
-
case 14:
|
|
5393
|
-
odr = 12800;
|
|
5394
|
-
break;
|
|
5395
|
-
case 15:
|
|
5396
|
-
odr = 25600;
|
|
5397
|
-
break;
|
|
5398
|
-
default:
|
|
5399
|
-
odr = 0;
|
|
5400
|
-
}
|
|
6041
|
+
switch(odr){
|
|
6042
|
+
case 6:
|
|
6043
|
+
odr = 50;
|
|
6044
|
+
break;
|
|
6045
|
+
case 7:
|
|
6046
|
+
odr = 100;
|
|
6047
|
+
break;
|
|
6048
|
+
case 8:
|
|
6049
|
+
odr = 200;
|
|
6050
|
+
break;
|
|
6051
|
+
case 9:
|
|
6052
|
+
odr = 400;
|
|
6053
|
+
break;
|
|
6054
|
+
case 10:
|
|
6055
|
+
odr = 800;
|
|
6056
|
+
break;
|
|
6057
|
+
case 11:
|
|
6058
|
+
odr = 1600;
|
|
6059
|
+
break;
|
|
6060
|
+
case 12:
|
|
6061
|
+
odr = 3200;
|
|
6062
|
+
break;
|
|
6063
|
+
case 13:
|
|
6064
|
+
odr = 6400;
|
|
6065
|
+
break;
|
|
6066
|
+
case 14:
|
|
6067
|
+
odr = 12800;
|
|
6068
|
+
break;
|
|
6069
|
+
case 15:
|
|
6070
|
+
odr = 25600;
|
|
6071
|
+
break;
|
|
6072
|
+
default:
|
|
6073
|
+
odr = 0;
|
|
5401
6074
|
}
|
|
5402
6075
|
|
|
5403
6076
|
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
@@ -5883,65 +6556,50 @@ function sensor_types(parent){
|
|
|
5883
6556
|
if(payload[8] === 1){
|
|
5884
6557
|
var deviceAddr = mac;
|
|
5885
6558
|
var firmware = payload[1];
|
|
6559
|
+
var mode = payload[8];
|
|
6560
|
+
var odr = payload[9];
|
|
6561
|
+
var en_axis = payload[10] & 7;
|
|
6562
|
+
var fsr = payload[10] >> 5;
|
|
6563
|
+
var hour = payload[11];
|
|
6564
|
+
var minute = payload[12];
|
|
6565
|
+
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
6566
|
+
var expected_packets = payload[15];
|
|
6567
|
+
var current_packet = payload[16];
|
|
6568
|
+
var sdata_start = 17;
|
|
5886
6569
|
|
|
5887
|
-
|
|
5888
|
-
|
|
5889
|
-
|
|
5890
|
-
|
|
5891
|
-
|
|
5892
|
-
|
|
5893
|
-
|
|
5894
|
-
|
|
5895
|
-
|
|
5896
|
-
|
|
5897
|
-
|
|
5898
|
-
|
|
5899
|
-
|
|
5900
|
-
|
|
5901
|
-
|
|
5902
|
-
|
|
5903
|
-
|
|
5904
|
-
|
|
5905
|
-
|
|
5906
|
-
|
|
5907
|
-
|
|
5908
|
-
|
|
5909
|
-
|
|
5910
|
-
|
|
5911
|
-
|
|
5912
|
-
|
|
5913
|
-
|
|
5914
|
-
|
|
5915
|
-
|
|
5916
|
-
|
|
5917
|
-
|
|
5918
|
-
|
|
5919
|
-
|
|
5920
|
-
break;
|
|
5921
|
-
case 9:
|
|
5922
|
-
odr = 400;
|
|
5923
|
-
break;
|
|
5924
|
-
case 10:
|
|
5925
|
-
odr = 800;
|
|
5926
|
-
break;
|
|
5927
|
-
case 11:
|
|
5928
|
-
odr = 1600;
|
|
5929
|
-
break;
|
|
5930
|
-
case 12:
|
|
5931
|
-
odr = 3200;
|
|
5932
|
-
break;
|
|
5933
|
-
case 13:
|
|
5934
|
-
odr = 6400;
|
|
5935
|
-
break;
|
|
5936
|
-
case 14:
|
|
5937
|
-
odr = 12800;
|
|
5938
|
-
break;
|
|
5939
|
-
case 15:
|
|
5940
|
-
odr = 25600;
|
|
5941
|
-
break;
|
|
5942
|
-
default:
|
|
5943
|
-
odr = 0;
|
|
5944
|
-
}
|
|
6570
|
+
switch(odr){
|
|
6571
|
+
case 6:
|
|
6572
|
+
odr = 50;
|
|
6573
|
+
break;
|
|
6574
|
+
case 7:
|
|
6575
|
+
odr = 100;
|
|
6576
|
+
break;
|
|
6577
|
+
case 8:
|
|
6578
|
+
odr = 200;
|
|
6579
|
+
break;
|
|
6580
|
+
case 9:
|
|
6581
|
+
odr = 400;
|
|
6582
|
+
break;
|
|
6583
|
+
case 10:
|
|
6584
|
+
odr = 800;
|
|
6585
|
+
break;
|
|
6586
|
+
case 11:
|
|
6587
|
+
odr = 1600;
|
|
6588
|
+
break;
|
|
6589
|
+
case 12:
|
|
6590
|
+
odr = 3200;
|
|
6591
|
+
break;
|
|
6592
|
+
case 13:
|
|
6593
|
+
odr = 6400;
|
|
6594
|
+
break;
|
|
6595
|
+
case 14:
|
|
6596
|
+
odr = 12800;
|
|
6597
|
+
break;
|
|
6598
|
+
case 15:
|
|
6599
|
+
odr = 25600;
|
|
6600
|
+
break;
|
|
6601
|
+
default:
|
|
6602
|
+
odr = 0;
|
|
5945
6603
|
}
|
|
5946
6604
|
|
|
5947
6605
|
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
@@ -6417,7 +7075,7 @@ function sensor_types(parent){
|
|
|
6417
7075
|
}
|
|
6418
7076
|
},
|
|
6419
7077
|
'87': {
|
|
6420
|
-
'name': '
|
|
7078
|
+
'name': 'Gen 4 One Channel Wireless Current Sensor',
|
|
6421
7079
|
parse: (d) => {
|
|
6422
7080
|
return {
|
|
6423
7081
|
ct1_rms: d.slice(0, 4).reduce(msbLsb),
|
|
@@ -6425,6 +7083,28 @@ function sensor_types(parent){
|
|
|
6425
7083
|
ct1_peak_2_freq: d.slice(6, 8).reduce(msbLsb),
|
|
6426
7084
|
ct1_peak_3_freq: d.slice(8, 10).reduce(msbLsb),
|
|
6427
7085
|
}
|
|
7086
|
+
},
|
|
7087
|
+
'parse_fly': (frame) => {
|
|
7088
|
+
return {
|
|
7089
|
+
'firmware': frame[2],
|
|
7090
|
+
'sampling_rate': frame[16] + 'Hz',
|
|
7091
|
+
'current_calibration': (frame.slice(17, 21).reduce(msbLsb)) * 10,
|
|
7092
|
+
'deadband': frame.slice(21, 23).reduce(msbLsb) + 'mA',
|
|
7093
|
+
'max_supported_ct': frame.slice(23, 27).reduce(msbLsb),
|
|
7094
|
+
'hardware_id': frame.slice(27, 30),
|
|
7095
|
+
'report_rate': frame.slice(30, 34).reduce(msbLsb) + "sec",
|
|
7096
|
+
'tx_life_counter': frame.slice(34, 38).reduce(msbLsb),
|
|
7097
|
+
'machine_values': {
|
|
7098
|
+
'firmware': frame[2],
|
|
7099
|
+
'sampling_rate': frame[16],
|
|
7100
|
+
'current_calibration': frame.slice(17, 21),
|
|
7101
|
+
'deadband': frame.slice(21, 23),
|
|
7102
|
+
'max_supported_ct': frame.slice(23, 27),
|
|
7103
|
+
'hardware_id': frame.slice(27, 30),
|
|
7104
|
+
'report_rate': frame.slice(30, 34),
|
|
7105
|
+
'tx_life_counter': frame.slice(34, 38)
|
|
7106
|
+
}
|
|
7107
|
+
}
|
|
6428
7108
|
}
|
|
6429
7109
|
},
|
|
6430
7110
|
'88': {
|
|
@@ -6437,40 +7117,82 @@ function sensor_types(parent){
|
|
|
6437
7117
|
};
|
|
6438
7118
|
},
|
|
6439
7119
|
'parse_fly': (frame) => {
|
|
7120
|
+
let firmware = frame[2];
|
|
6440
7121
|
let frame_data = {};
|
|
6441
7122
|
switch(frame[16]){
|
|
6442
7123
|
case 0:
|
|
6443
|
-
frame_data.fsr = "+-
|
|
7124
|
+
frame_data.fsr = "+-6.114 V";
|
|
6444
7125
|
break;
|
|
6445
7126
|
case 1:
|
|
6446
|
-
frame_data.fsr = "+-
|
|
7127
|
+
frame_data.fsr = "+-4.096 V";
|
|
6447
7128
|
break;
|
|
6448
7129
|
case 2:
|
|
6449
|
-
frame_data.fsr = "+-
|
|
7130
|
+
frame_data.fsr = "+-2.048 V";
|
|
6450
7131
|
break;
|
|
6451
7132
|
case 3:
|
|
6452
|
-
frame_data.fsr = "+-
|
|
7133
|
+
frame_data.fsr = "+-1.024 V";
|
|
6453
7134
|
break;
|
|
6454
7135
|
case 4:
|
|
6455
|
-
frame_data.fsr = "+-
|
|
7136
|
+
frame_data.fsr = "+-0.512 V";
|
|
6456
7137
|
break;
|
|
6457
7138
|
case 5:
|
|
6458
|
-
frame_data.fsr = "+-
|
|
7139
|
+
frame_data.fsr = "+-0.256 V";
|
|
6459
7140
|
break;
|
|
6460
7141
|
}
|
|
6461
|
-
|
|
6462
|
-
|
|
6463
|
-
|
|
6464
|
-
|
|
6465
|
-
|
|
6466
|
-
|
|
6467
|
-
|
|
7142
|
+
if(firmware > 13){ // firmware 14 and above
|
|
7143
|
+
let frame_data = {};
|
|
7144
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
7145
|
+
if(!auto_check_interval){
|
|
7146
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
7147
|
+
}else{
|
|
7148
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
7149
|
+
}
|
|
7150
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
7151
|
+
return {
|
|
7152
|
+
'firmware': frame[2],
|
|
7153
|
+
'fsr': frame_data.fsr,
|
|
7154
|
+
'boot_up_time': frame[17] + " sec",
|
|
7155
|
+
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
7156
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
7157
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
7158
|
+
'always_on': frame_data.always_on,
|
|
7159
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
7160
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
7161
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
7162
|
+
'hardware_id': frame.slice(37, 40),
|
|
7163
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
7164
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
7165
|
+
'machine_values': {
|
|
7166
|
+
'firmware': frame[2],
|
|
7167
|
+
'fsr': frame[16],
|
|
7168
|
+
'boot_up_time': frame[17],
|
|
7169
|
+
'adc_pin_reading': frame.slice(18, 20),
|
|
7170
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
7171
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
7172
|
+
'always_on': frame[24],
|
|
7173
|
+
'calibration_one': frame.slice(25, 29),
|
|
7174
|
+
'calibration_two':frame.slice(29, 33),
|
|
7175
|
+
'calibration_three':frame.slice(33, 37),
|
|
7176
|
+
'hardware_id': frame.slice(37, 40),
|
|
7177
|
+
'report_rate': frame.slice(40, 44),
|
|
7178
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
7179
|
+
}
|
|
7180
|
+
}
|
|
7181
|
+
}else{
|
|
7182
|
+
return {
|
|
6468
7183
|
'firmware': frame[2],
|
|
6469
|
-
'report_rate': frame.slice(12, 16),
|
|
6470
|
-
'fsr':
|
|
7184
|
+
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
7185
|
+
'fsr':frame_data.fsr,
|
|
6471
7186
|
'boot_up_time': frame[17],
|
|
6472
|
-
// 'adc_pin_reading': frame.slice(18, 20),
|
|
6473
|
-
'
|
|
7187
|
+
// 'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
7188
|
+
'machine_values': {
|
|
7189
|
+
'firmware': frame[2],
|
|
7190
|
+
'report_rate': frame.slice(12, 16),
|
|
7191
|
+
'fsr':frame[16],
|
|
7192
|
+
'boot_up_time': frame[17],
|
|
7193
|
+
// 'adc_pin_reading': frame.slice(18, 20),
|
|
7194
|
+
'frame': frame
|
|
7195
|
+
}
|
|
6474
7196
|
}
|
|
6475
7197
|
}
|
|
6476
7198
|
}
|
|
@@ -6488,40 +7210,82 @@ function sensor_types(parent){
|
|
|
6488
7210
|
};
|
|
6489
7211
|
},
|
|
6490
7212
|
'parse_fly': (frame) => {
|
|
7213
|
+
let firmware = frame[2];
|
|
6491
7214
|
let frame_data = {};
|
|
6492
7215
|
switch(frame[16]){
|
|
6493
7216
|
case 0:
|
|
6494
|
-
frame_data.fsr = "+-
|
|
7217
|
+
frame_data.fsr = "+-6.114 V";
|
|
6495
7218
|
break;
|
|
6496
7219
|
case 1:
|
|
6497
|
-
frame_data.fsr = "+-
|
|
7220
|
+
frame_data.fsr = "+-4.096 V";
|
|
6498
7221
|
break;
|
|
6499
7222
|
case 2:
|
|
6500
|
-
frame_data.fsr = "+-
|
|
7223
|
+
frame_data.fsr = "+-2.048 V";
|
|
6501
7224
|
break;
|
|
6502
7225
|
case 3:
|
|
6503
|
-
frame_data.fsr = "+-
|
|
7226
|
+
frame_data.fsr = "+-1.024 V";
|
|
6504
7227
|
break;
|
|
6505
7228
|
case 4:
|
|
6506
|
-
frame_data.fsr = "+-
|
|
7229
|
+
frame_data.fsr = "+-0.512 V";
|
|
6507
7230
|
break;
|
|
6508
7231
|
case 5:
|
|
6509
|
-
frame_data.fsr = "+-
|
|
7232
|
+
frame_data.fsr = "+-0.256 V";
|
|
6510
7233
|
break;
|
|
6511
7234
|
}
|
|
6512
|
-
|
|
6513
|
-
|
|
6514
|
-
|
|
6515
|
-
|
|
6516
|
-
|
|
6517
|
-
|
|
6518
|
-
|
|
7235
|
+
if(firmware > 13){ // firmware 14 and above
|
|
7236
|
+
let frame_data = {};
|
|
7237
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
7238
|
+
if(!auto_check_interval){
|
|
7239
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
7240
|
+
}else{
|
|
7241
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
7242
|
+
}
|
|
7243
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
7244
|
+
return {
|
|
7245
|
+
'firmware': frame[2],
|
|
7246
|
+
'fsr': frame_data.fsr,
|
|
7247
|
+
'boot_up_time': frame[17] + " sec",
|
|
7248
|
+
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
7249
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
7250
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
7251
|
+
'always_on': frame_data.always_on,
|
|
7252
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
7253
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
7254
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
7255
|
+
'hardware_id': frame.slice(37, 40),
|
|
7256
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
7257
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
7258
|
+
'machine_values': {
|
|
7259
|
+
'firmware': frame[2],
|
|
7260
|
+
'fsr': frame[16],
|
|
7261
|
+
'boot_up_time': frame[17],
|
|
7262
|
+
'adc_pin_reading': frame.slice(18, 20),
|
|
7263
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
7264
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
7265
|
+
'always_on': frame[24],
|
|
7266
|
+
'calibration_one': frame.slice(25, 29),
|
|
7267
|
+
'calibration_two':frame.slice(29, 33),
|
|
7268
|
+
'calibration_three':frame.slice(33, 37),
|
|
7269
|
+
'hardware_id': frame.slice(37, 40),
|
|
7270
|
+
'report_rate': frame.slice(40, 44),
|
|
7271
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
7272
|
+
}
|
|
7273
|
+
}
|
|
7274
|
+
}else{
|
|
7275
|
+
return {
|
|
6519
7276
|
'firmware': frame[2],
|
|
6520
|
-
'report_rate': frame.slice(12, 16),
|
|
6521
|
-
'fsr':
|
|
7277
|
+
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
7278
|
+
'fsr':frame_data.fsr,
|
|
6522
7279
|
'boot_up_time': frame[17],
|
|
6523
|
-
// 'adc_pin_reading': frame.slice(18, 20),
|
|
6524
|
-
'
|
|
7280
|
+
// 'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
7281
|
+
'machine_values': {
|
|
7282
|
+
'firmware': frame[2],
|
|
7283
|
+
'report_rate': frame.slice(12, 16),
|
|
7284
|
+
'fsr':frame[16],
|
|
7285
|
+
'boot_up_time': frame[17],
|
|
7286
|
+
// 'adc_pin_reading': frame.slice(18, 20),
|
|
7287
|
+
'frame': frame
|
|
7288
|
+
}
|
|
6525
7289
|
}
|
|
6526
7290
|
}
|
|
6527
7291
|
}
|
|
@@ -6533,6 +7297,65 @@ function sensor_types(parent){
|
|
|
6533
7297
|
raw_adc: d.slice(0, 2).reduce(msbLsb),
|
|
6534
7298
|
amps: d.slice(2, 6).reduce(msbLsb) / 10,
|
|
6535
7299
|
};
|
|
7300
|
+
},
|
|
7301
|
+
'parse_fly': (frame) => {
|
|
7302
|
+
let firmware = frame[2];
|
|
7303
|
+
if(firmware > 13){ // firmware 14 and above
|
|
7304
|
+
let frame_data = {};
|
|
7305
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
7306
|
+
if(!auto_check_interval){
|
|
7307
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
7308
|
+
}else{
|
|
7309
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
7310
|
+
}
|
|
7311
|
+
frame_data.always_on = frame[24] ? "Enabled" : "Disabled";
|
|
7312
|
+
switch(frame[16]){
|
|
7313
|
+
case 0:
|
|
7314
|
+
frame_data.fsr = "+-6.114 V";
|
|
7315
|
+
break;
|
|
7316
|
+
case 1:
|
|
7317
|
+
frame_data.fsr = "+-4.096 V";
|
|
7318
|
+
break;
|
|
7319
|
+
case 2:
|
|
7320
|
+
frame_data.fsr = "+-2.048 V";
|
|
7321
|
+
break;
|
|
7322
|
+
case 3:
|
|
7323
|
+
frame_data.fsr = "+-1.024 V";
|
|
7324
|
+
break;
|
|
7325
|
+
case 4:
|
|
7326
|
+
frame_data.fsr = "+-0.512 V";
|
|
7327
|
+
break;
|
|
7328
|
+
case 5:
|
|
7329
|
+
frame_data.fsr = "+-0.256 V";
|
|
7330
|
+
break;
|
|
7331
|
+
}
|
|
7332
|
+
return {
|
|
7333
|
+
'firmware': frame[2],
|
|
7334
|
+
'fsr': frame_data.fsr,
|
|
7335
|
+
'boot_time': frame[17] + " sec",
|
|
7336
|
+
'power_adc': frame.slice(18, 20).reduce(msbLsb),
|
|
7337
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
7338
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
7339
|
+
'always_on': frame_data.always_on,
|
|
7340
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
7341
|
+
'hardware_id': frame.slice(29, 32),
|
|
7342
|
+
'report_rate': frame.slice(32, 36).reduce(msbLsb) + " sec",
|
|
7343
|
+
'tx_life_counter': frame.slice(36, 40).reduce(msbLsb),
|
|
7344
|
+
'machine_values': {
|
|
7345
|
+
'firmware': frame[2],
|
|
7346
|
+
'fsr': frame[16],
|
|
7347
|
+
'boot_time': frame[17],
|
|
7348
|
+
'power_adc': frame.slice(18, 20),
|
|
7349
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
7350
|
+
'auto_check_threshold': frame.slice(22, 24),
|
|
7351
|
+
'always_on': frame[24],
|
|
7352
|
+
'calibration_one': frame.slice(25, 29),
|
|
7353
|
+
'hardware_id': frame.slice(29, 32),
|
|
7354
|
+
'report_rate': frame.slice(32, 36),
|
|
7355
|
+
'tx_life_counter': frame.slice(36, 40)
|
|
7356
|
+
}
|
|
7357
|
+
}
|
|
7358
|
+
}
|
|
6536
7359
|
}
|
|
6537
7360
|
},
|
|
6538
7361
|
'91': {
|
|
@@ -6558,6 +7381,69 @@ function sensor_types(parent){
|
|
|
6558
7381
|
adc: signInt(d.slice(0, 2).reduce(msbLsb), 16),
|
|
6559
7382
|
vdc: signInt(d.slice(2, 4).reduce(msbLsb), 16)/100
|
|
6560
7383
|
};
|
|
7384
|
+
},
|
|
7385
|
+
'parse_fly': (frame) => {
|
|
7386
|
+
let firmware = frame[2];
|
|
7387
|
+
if(firmware > 13){ // firmware 14 and above
|
|
7388
|
+
let frame_data = {};
|
|
7389
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
7390
|
+
if(!auto_check_interval){
|
|
7391
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
7392
|
+
}else{
|
|
7393
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
7394
|
+
}
|
|
7395
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
7396
|
+
switch(frame[16]){
|
|
7397
|
+
case 0:
|
|
7398
|
+
frame_data.fsr = "+-6.114 V";
|
|
7399
|
+
break;
|
|
7400
|
+
case 1:
|
|
7401
|
+
frame_data.fsr = "+-4.096 V";
|
|
7402
|
+
break;
|
|
7403
|
+
case 2:
|
|
7404
|
+
frame_data.fsr = "+-2.048 V";
|
|
7405
|
+
break;
|
|
7406
|
+
case 3:
|
|
7407
|
+
frame_data.fsr = "+-1.024 V";
|
|
7408
|
+
break;
|
|
7409
|
+
case 4:
|
|
7410
|
+
frame_data.fsr = "+-0.512 V";
|
|
7411
|
+
break;
|
|
7412
|
+
case 5:
|
|
7413
|
+
frame_data.fsr = "+-0.256 V";
|
|
7414
|
+
break;
|
|
7415
|
+
}
|
|
7416
|
+
return {
|
|
7417
|
+
'firmware': frame[2],
|
|
7418
|
+
'fsr': frame_data.fsr,
|
|
7419
|
+
'boot_time': frame[17] + " sec",
|
|
7420
|
+
'power_adc': frame.slice(18, 20).reduce(msbLsb),
|
|
7421
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
7422
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
7423
|
+
'always_on': frame_data.always_on,
|
|
7424
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
7425
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
7426
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
7427
|
+
'hardware_id': frame.slice(37, 40),
|
|
7428
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
7429
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
7430
|
+
'machine_values': {
|
|
7431
|
+
'firmware': frame[2],
|
|
7432
|
+
'fsr': frame[16],
|
|
7433
|
+
'boot_time': frame[17],
|
|
7434
|
+
'power_adc': frame.slice(18, 20),
|
|
7435
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
7436
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
7437
|
+
'always_on': frame[24],
|
|
7438
|
+
'calibration_one': frame.slice(25, 29),
|
|
7439
|
+
'calibration_two':frame.slice(29, 33),
|
|
7440
|
+
'calibration_three':frame.slice(33, 37),
|
|
7441
|
+
'hardware_id': frame.slice(37, 40),
|
|
7442
|
+
'report_rate': frame.slice(40, 44),
|
|
7443
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
7444
|
+
}
|
|
7445
|
+
}
|
|
7446
|
+
}
|
|
6561
7447
|
}
|
|
6562
7448
|
},
|
|
6563
7449
|
'96': {
|
|
@@ -6567,6 +7453,69 @@ function sensor_types(parent){
|
|
|
6567
7453
|
adc: signInt(d.slice(0, 2).reduce(msbLsb), 16),
|
|
6568
7454
|
vdc: signInt(d.slice(2, 4).reduce(msbLsb), 16)/100
|
|
6569
7455
|
};
|
|
7456
|
+
},
|
|
7457
|
+
'parse_fly': (frame) => {
|
|
7458
|
+
let firmware = frame[2];
|
|
7459
|
+
if(firmware > 13){ // firmware 14 and above
|
|
7460
|
+
let frame_data = {};
|
|
7461
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
7462
|
+
if(!auto_check_interval){
|
|
7463
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
7464
|
+
}else{
|
|
7465
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
7466
|
+
}
|
|
7467
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
7468
|
+
switch(frame[16]){
|
|
7469
|
+
case 0:
|
|
7470
|
+
frame_data.fsr = "+-6.114 V";
|
|
7471
|
+
break;
|
|
7472
|
+
case 1:
|
|
7473
|
+
frame_data.fsr = "+-4.096 V";
|
|
7474
|
+
break;
|
|
7475
|
+
case 2:
|
|
7476
|
+
frame_data.fsr = "+-2.048 V";
|
|
7477
|
+
break;
|
|
7478
|
+
case 3:
|
|
7479
|
+
frame_data.fsr = "+-1.024 V";
|
|
7480
|
+
break;
|
|
7481
|
+
case 4:
|
|
7482
|
+
frame_data.fsr = "+-0.512 V";
|
|
7483
|
+
break;
|
|
7484
|
+
case 5:
|
|
7485
|
+
frame_data.fsr = "+-0.256 V";
|
|
7486
|
+
break;
|
|
7487
|
+
}
|
|
7488
|
+
return {
|
|
7489
|
+
'firmware': frame[2],
|
|
7490
|
+
'fsr': frame_data.fsr,
|
|
7491
|
+
'boot_time': frame[17] + " sec",
|
|
7492
|
+
'power_adc': frame.slice(18, 20).reduce(msbLsb),
|
|
7493
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
7494
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
7495
|
+
'always_on': frame_data.always_on,
|
|
7496
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
7497
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
7498
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
7499
|
+
'hardware_id': frame.slice(37, 40),
|
|
7500
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
7501
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
7502
|
+
'machine_values': {
|
|
7503
|
+
'firmware': frame[2],
|
|
7504
|
+
'fsr': frame[16],
|
|
7505
|
+
'boot_time': frame[17],
|
|
7506
|
+
'power_adc': frame.slice(18, 20),
|
|
7507
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
7508
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
7509
|
+
'always_on': frame[24],
|
|
7510
|
+
'calibration_one': frame.slice(25, 29),
|
|
7511
|
+
'calibration_two':frame.slice(29, 33),
|
|
7512
|
+
'calibration_three':frame.slice(33, 37),
|
|
7513
|
+
'hardware_id': frame.slice(37, 40),
|
|
7514
|
+
'report_rate': frame.slice(40, 44),
|
|
7515
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
7516
|
+
}
|
|
7517
|
+
}
|
|
7518
|
+
}
|
|
6570
7519
|
}
|
|
6571
7520
|
},
|
|
6572
7521
|
'97': {
|
|
@@ -6882,61 +7831,124 @@ function sensor_types(parent){
|
|
|
6882
7831
|
}
|
|
6883
7832
|
},
|
|
6884
7833
|
'parse_fly': (frame) => {
|
|
6885
|
-
let
|
|
6886
|
-
|
|
6887
|
-
|
|
6888
|
-
|
|
6889
|
-
|
|
6890
|
-
|
|
6891
|
-
|
|
6892
|
-
frame_data.
|
|
6893
|
-
break;
|
|
6894
|
-
case 2:
|
|
6895
|
-
frame_data.raw_lenght = 150;
|
|
6896
|
-
break;
|
|
6897
|
-
case 3:
|
|
6898
|
-
frame_data.raw_lenght = 180;
|
|
6899
|
-
break;
|
|
6900
|
-
}
|
|
6901
|
-
return {
|
|
6902
|
-
'firmware': frame[2],
|
|
6903
|
-
'mode': frame_data.mode,
|
|
6904
|
-
'raw_length': frame_data.raw_lenght + " Bytes",
|
|
6905
|
-
'raw_on_request_timeout': frame[14] + " sec",
|
|
6906
|
-
'fly_rate': frame.slice(15, 17).reduce(msbLsb) + " min",
|
|
6907
|
-
'c1_sensor_gain_db': frame[17] + " dB",
|
|
6908
|
-
'c1_sensor_boot_time': frame[18] + " sec",
|
|
6909
|
-
'c2_sensor_gain_db': frame[19] + " dB",
|
|
6910
|
-
'c2_sensor_boot_time': frame[20] + " sec",
|
|
6911
|
-
'sampling_frequency': frame.slice(21, 25).reduce(msbLsb) + " Hz",
|
|
6912
|
-
// 'hardware_id': frame.slice(25, 28),
|
|
6913
|
-
// 'report_rate': frame.slice(28, 32).reduce(msbLsb),
|
|
6914
|
-
// 'tx_life_count': frame.slice(32, 36).reduce(msbLsb),
|
|
6915
|
-
'machine_values': {
|
|
6916
|
-
'firmware': frame[2],
|
|
6917
|
-
'mode': frame[12],
|
|
6918
|
-
'raw_lenght': frame[13],
|
|
6919
|
-
'raw_on_request_timeout': frame[14],
|
|
6920
|
-
'fly_rate': frame.slice(15, 17),
|
|
6921
|
-
'c1_sensor_gain_db': frame[17],
|
|
6922
|
-
'c1_sensor_boot_time': frame[18],
|
|
6923
|
-
'c2_sensor_gain_db': frame[19],
|
|
6924
|
-
'c2_sensor_boot_time': frame[20],
|
|
6925
|
-
'sampling_frequency': frame.slice(21, 25)
|
|
6926
|
-
// 'hardware_id': frame.slice(25, 28),
|
|
6927
|
-
// 'report_rate': frame.slice(28, 32),
|
|
6928
|
-
// 'tx_life_count': frame.slice(32, 36)
|
|
7834
|
+
let firmware = frame[2];
|
|
7835
|
+
if(firmware > 13){ // firmware 14 and above
|
|
7836
|
+
let frame_data = {};
|
|
7837
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
7838
|
+
if(!auto_check_interval){
|
|
7839
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
7840
|
+
}else{
|
|
7841
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
6929
7842
|
}
|
|
6930
|
-
|
|
6931
|
-
|
|
6932
|
-
|
|
6933
|
-
|
|
6934
|
-
|
|
6935
|
-
|
|
6936
|
-
|
|
6937
|
-
|
|
6938
|
-
|
|
6939
|
-
|
|
7843
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
7844
|
+
switch(frame[16]){
|
|
7845
|
+
case 0:
|
|
7846
|
+
frame_data.fsr = "+-6.114 V";
|
|
7847
|
+
break;
|
|
7848
|
+
case 1:
|
|
7849
|
+
frame_data.fsr = "+-4.096 V";
|
|
7850
|
+
break;
|
|
7851
|
+
case 2:
|
|
7852
|
+
frame_data.fsr = "+-2.048 V";
|
|
7853
|
+
break;
|
|
7854
|
+
case 3:
|
|
7855
|
+
frame_data.fsr = "+-1.024 V";
|
|
7856
|
+
break;
|
|
7857
|
+
case 4:
|
|
7858
|
+
frame_data.fsr = "+-0.512 V";
|
|
7859
|
+
break;
|
|
7860
|
+
case 5:
|
|
7861
|
+
frame_data.fsr = "+-0.256 V";
|
|
7862
|
+
break;
|
|
7863
|
+
}
|
|
7864
|
+
return {
|
|
7865
|
+
'firmware': frame[2],
|
|
7866
|
+
'fsr': frame_data.fsr,
|
|
7867
|
+
'boot_time': frame[17] + " sec",
|
|
7868
|
+
'power_adc': frame.slice(18, 20).reduce(msbLsb),
|
|
7869
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
7870
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
7871
|
+
'always_on': frame_data.always_on,
|
|
7872
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
7873
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
7874
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
7875
|
+
'hardware_id': frame.slice(37, 40),
|
|
7876
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
7877
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
7878
|
+
'machine_values': {
|
|
7879
|
+
'firmware': frame[2],
|
|
7880
|
+
'fsr': frame[16],
|
|
7881
|
+
'boot_time': frame[17],
|
|
7882
|
+
'power_adc': frame.slice(18, 20),
|
|
7883
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
7884
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
7885
|
+
'always_on': frame[24],
|
|
7886
|
+
'calibration_one': frame.slice(25, 29),
|
|
7887
|
+
'calibration_two':frame.slice(29, 33),
|
|
7888
|
+
'calibration_three':frame.slice(33, 37),
|
|
7889
|
+
'hardware_id': frame.slice(37, 40),
|
|
7890
|
+
'report_rate': frame.slice(40, 44),
|
|
7891
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
7892
|
+
}
|
|
7893
|
+
}
|
|
7894
|
+
}
|
|
7895
|
+
else{
|
|
7896
|
+
let frame_data = {};
|
|
7897
|
+
frame_data.mode = frame[12] ? 'Raw':'Processed';
|
|
7898
|
+
switch(frame[13]){
|
|
7899
|
+
case 0:
|
|
7900
|
+
frame_data.raw_lenght = 55;
|
|
7901
|
+
break;
|
|
7902
|
+
case 1:
|
|
7903
|
+
frame_data.raw_lenght = 100;
|
|
7904
|
+
break;
|
|
7905
|
+
case 2:
|
|
7906
|
+
frame_data.raw_lenght = 150;
|
|
7907
|
+
break;
|
|
7908
|
+
case 3:
|
|
7909
|
+
frame_data.raw_lenght = 180;
|
|
7910
|
+
break;
|
|
7911
|
+
}
|
|
7912
|
+
return {
|
|
7913
|
+
'firmware': frame[2],
|
|
7914
|
+
'mode': frame_data.mode,
|
|
7915
|
+
'raw_length': frame_data.raw_lenght + " Bytes",
|
|
7916
|
+
'raw_on_request_timeout': frame[14] + " sec",
|
|
7917
|
+
'fly_rate': frame.slice(15, 17).reduce(msbLsb) + " min",
|
|
7918
|
+
'c1_sensor_gain_db': frame[17] + " dB",
|
|
7919
|
+
'c1_sensor_boot_time': frame[18] + " sec",
|
|
7920
|
+
'c2_sensor_gain_db': frame[19] + " dB",
|
|
7921
|
+
'c2_sensor_boot_time': frame[20] + " sec",
|
|
7922
|
+
'sampling_frequency': frame.slice(21, 25).reduce(msbLsb) + " Hz",
|
|
7923
|
+
// 'hardware_id': frame.slice(25, 28),
|
|
7924
|
+
// 'report_rate': frame.slice(28, 32).reduce(msbLsb),
|
|
7925
|
+
// 'tx_life_count': frame.slice(32, 36).reduce(msbLsb),
|
|
7926
|
+
'machine_values': {
|
|
7927
|
+
'firmware': frame[2],
|
|
7928
|
+
'mode': frame[12],
|
|
7929
|
+
'raw_lenght': frame[13],
|
|
7930
|
+
'raw_on_request_timeout': frame[14],
|
|
7931
|
+
'fly_rate': frame.slice(15, 17),
|
|
7932
|
+
'c1_sensor_gain_db': frame[17],
|
|
7933
|
+
'c1_sensor_boot_time': frame[18],
|
|
7934
|
+
'c2_sensor_gain_db': frame[19],
|
|
7935
|
+
'c2_sensor_boot_time': frame[20],
|
|
7936
|
+
'sampling_frequency': frame.slice(21, 25)
|
|
7937
|
+
// 'hardware_id': frame.slice(25, 28),
|
|
7938
|
+
// 'report_rate': frame.slice(28, 32),
|
|
7939
|
+
// 'tx_life_count': frame.slice(32, 36)
|
|
7940
|
+
}
|
|
7941
|
+
}
|
|
7942
|
+
}
|
|
7943
|
+
}
|
|
7944
|
+
},
|
|
7945
|
+
'101':{
|
|
7946
|
+
name: 'Pro Vibration',
|
|
7947
|
+
parse: (d, full)=>{
|
|
7948
|
+
return{
|
|
7949
|
+
mode: full[7] == 1? "raw" : "normal"
|
|
7950
|
+
};
|
|
7951
|
+
}
|
|
6940
7952
|
},
|
|
6941
7953
|
'103': {
|
|
6942
7954
|
name: 'Custom Wireless Accelerometer Sensor',
|
|
@@ -6946,7 +7958,7 @@ function sensor_types(parent){
|
|
|
6946
7958
|
var data = {};
|
|
6947
7959
|
switch(payload[8]){
|
|
6948
7960
|
case 1:
|
|
6949
|
-
data.sensor_type = '
|
|
7961
|
+
data.sensor_type = 'Accel';
|
|
6950
7962
|
break;
|
|
6951
7963
|
case 2:
|
|
6952
7964
|
data.sensor_type = 'gyro';
|
|
@@ -6960,74 +7972,70 @@ function sensor_types(parent){
|
|
|
6960
7972
|
data.event_type = 'motion';
|
|
6961
7973
|
break;
|
|
6962
7974
|
}
|
|
7975
|
+
|
|
7976
|
+
var mode = payload[9];
|
|
7977
|
+
var odr = payload[11];
|
|
7978
|
+
var en_axis = payload[12] & 7;
|
|
7979
|
+
var fsr = payload[12] >> 5;
|
|
6963
7980
|
var hour = payload[13];
|
|
6964
7981
|
var minute = payload[14];
|
|
7982
|
+
var device_temp = payload.slice(15, 17).reduce(msbLsb) / 100;
|
|
7983
|
+
var external_temperature = payload.slice(17, 19).reduce(msbLsb) / 100;
|
|
6965
7984
|
var expected_packets = payload.slice(19, 21).reduce(msbLsb);
|
|
6966
7985
|
var current_packet = payload.slice(21, 23).reduce(msbLsb);
|
|
6967
7986
|
var data_start = 23;
|
|
6968
7987
|
|
|
7988
|
+
switch(odr){
|
|
7989
|
+
case 0:
|
|
7990
|
+
odr = '125Hz';
|
|
7991
|
+
break;
|
|
7992
|
+
case 1:
|
|
7993
|
+
odr = '250Hz';
|
|
7994
|
+
break;
|
|
7995
|
+
case 2:
|
|
7996
|
+
odr = '500Hz';
|
|
7997
|
+
break;
|
|
7998
|
+
case 3:
|
|
7999
|
+
odr = '1000Hz';
|
|
8000
|
+
break;
|
|
8001
|
+
default:
|
|
8002
|
+
odr = 0;
|
|
8003
|
+
}
|
|
8004
|
+
|
|
6969
8005
|
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
6970
8006
|
if(expected_packets != 1){
|
|
6971
|
-
// if
|
|
6972
|
-
if(
|
|
6973
|
-
console.log('
|
|
6974
|
-
|
|
6975
|
-
|
|
6976
|
-
|
|
6977
|
-
|
|
6978
|
-
|
|
6979
|
-
console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
|
|
6980
|
-
if(this.hasOwnProperty('failure_no')){
|
|
6981
|
-
this.failure_no = this.failure_no + 1;
|
|
6982
|
-
}
|
|
6983
|
-
else{
|
|
6984
|
-
this.failure_no = 1;
|
|
6985
|
-
}
|
|
6986
|
-
if(this.hasOwnProperty('failure_no')){
|
|
6987
|
-
console.log('####falure no');
|
|
6988
|
-
console.log(this.failure_no);
|
|
6989
|
-
}
|
|
6990
|
-
// console.log(globalDevices[deviceAddr].data);
|
|
8007
|
+
// if current packet is equal to last one (duplicated data). This does not apply to the last package
|
|
8008
|
+
if (globalDevices[deviceAddr].last_packet_counter == current_packet){
|
|
8009
|
+
console.log('Duplicated message')
|
|
8010
|
+
return;
|
|
8011
|
+
}
|
|
8012
|
+
// if current packet is equal to 1 or last packet counter is higher thant current packet
|
|
8013
|
+
if(current_packet == 1 || (globalDevices[deviceAddr].last_packet_counter > current_packet)){
|
|
8014
|
+
// clear stream
|
|
6991
8015
|
delete globalDevices[deviceAddr];
|
|
6992
|
-
|
|
6993
|
-
|
|
6994
|
-
|
|
6995
|
-
|
|
6996
|
-
|
|
6997
|
-
|
|
6998
|
-
|
|
6999
|
-
|
|
7000
|
-
|
|
7001
|
-
|
|
7002
|
-
|
|
7003
|
-
|
|
7004
|
-
// stream_size: expected_packets,
|
|
7005
|
-
data: {},
|
|
7006
|
-
odr: odr,
|
|
7007
|
-
mo: mode,
|
|
7008
|
-
en_axis: en_axis,
|
|
7009
|
-
fsr: fsr,
|
|
7010
|
-
hour: hour,
|
|
7011
|
-
minute: minute,
|
|
7012
|
-
device_temp: device_temp,
|
|
7013
|
-
external_temp: external_temperature
|
|
7014
|
-
}
|
|
7015
|
-
globalDevices[deviceAddr].data[current_packet] = payload.slice(data_start);
|
|
7016
|
-
return;
|
|
8016
|
+
// create new stream
|
|
8017
|
+
globalDevices[deviceAddr] = {
|
|
8018
|
+
// stream_size: expected_packets,
|
|
8019
|
+
data: {},
|
|
8020
|
+
odr: odr,
|
|
8021
|
+
mo: mode,
|
|
8022
|
+
en_axis: en_axis,
|
|
8023
|
+
fsr: fsr,
|
|
8024
|
+
hour: hour,
|
|
8025
|
+
minute: minute,
|
|
8026
|
+
device_temp: device_temp,
|
|
8027
|
+
external_temp: external_temperature
|
|
7017
8028
|
}
|
|
8029
|
+
globalDevices[deviceAddr].last_packet_counter = current_packet;
|
|
8030
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(data_start);
|
|
8031
|
+
return;
|
|
7018
8032
|
}
|
|
7019
8033
|
else{
|
|
8034
|
+
globalDevices[deviceAddr].last_packet_counter = current_packet;
|
|
7020
8035
|
globalDevices[deviceAddr].data[current_packet] = payload.slice(data_start);
|
|
7021
8036
|
}
|
|
7022
8037
|
}
|
|
7023
8038
|
else{
|
|
7024
|
-
var mode = payload[9];
|
|
7025
|
-
var odr = payload[11];
|
|
7026
|
-
var en_axis = payload[12] & 7;
|
|
7027
|
-
var fsr = payload[12] >> 5;
|
|
7028
|
-
var device_temp = payload.slice(15, 17).reduce(msbLsb) / 100;
|
|
7029
|
-
var external_temperature = payload.slice(17, 19).reduce(msbLsb) / 100;
|
|
7030
|
-
|
|
7031
8039
|
globalDevices[deviceAddr] = {
|
|
7032
8040
|
// stream_size: expected_packets,
|
|
7033
8041
|
data: {},
|
|
@@ -7040,185 +8048,282 @@ function sensor_types(parent){
|
|
|
7040
8048
|
device_temp: device_temp,
|
|
7041
8049
|
external_temp: external_temperature
|
|
7042
8050
|
}
|
|
8051
|
+
globalDevices[deviceAddr].last_packet_counter = current_packet;
|
|
7043
8052
|
globalDevices[deviceAddr].data[current_packet] = payload.slice(data_start);
|
|
7044
8053
|
}
|
|
7045
|
-
|
|
7046
|
-
|
|
7047
|
-
for(const packet in globalDevices[deviceAddr].data){
|
|
7048
|
-
raw_data = raw_data.concat(globalDevices[deviceAddr].data[packet]);
|
|
7049
|
-
}
|
|
7050
|
-
var label = 0;
|
|
8054
|
+
}
|
|
8055
|
+
else{
|
|
7051
8056
|
|
|
7052
|
-
|
|
7053
|
-
|
|
8057
|
+
globalDevices[deviceAddr] = {
|
|
8058
|
+
data: {},
|
|
8059
|
+
odr: odr,
|
|
8060
|
+
mo: mode,
|
|
8061
|
+
en_axis: en_axis,
|
|
8062
|
+
fsr: fsr,
|
|
8063
|
+
hour: hour,
|
|
8064
|
+
minute: minute,
|
|
8065
|
+
device_temp: device_temp,
|
|
8066
|
+
external_temp: external_temperature
|
|
8067
|
+
}
|
|
8068
|
+
globalDevices[deviceAddr].last_packet_counter = current_packet;
|
|
8069
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(data_start);
|
|
8070
|
+
}
|
|
8071
|
+
if(current_packet == expected_packets){
|
|
8072
|
+
var raw_data = new Array();
|
|
8073
|
+
for(const packet in globalDevices[deviceAddr].data){
|
|
8074
|
+
raw_data = raw_data.concat(globalDevices[deviceAddr].data[packet]);
|
|
8075
|
+
}
|
|
8076
|
+
var label = 0;
|
|
7054
8077
|
|
|
7055
|
-
|
|
7056
|
-
|
|
8078
|
+
var fft = new Array();
|
|
8079
|
+
var fft_concat = {};
|
|
8080
|
+
|
|
8081
|
+
var en_axis_data = {};
|
|
8082
|
+
en_axis_data.x_offset = 0;
|
|
8083
|
+
en_axis_data.y_offset = 2;
|
|
8084
|
+
en_axis_data.z_offset = 4;
|
|
8085
|
+
en_axis_data.increment = 6;
|
|
8086
|
+
fft_concat = {x: [], y: [], z: []};
|
|
8087
|
+
|
|
8088
|
+
/* Evaluate sensor type */
|
|
8089
|
+
if(payload[8] == 1){ // accelerometer
|
|
8090
|
+
var fsr_mult = 0.000019;
|
|
8091
|
+
var fsr_text = "";
|
|
8092
|
+
switch(globalDevices[deviceAddr].fsr){
|
|
8093
|
+
case 0:
|
|
8094
|
+
fsr_mult = 0.000019;
|
|
8095
|
+
break;
|
|
7057
8096
|
case 1:
|
|
7058
|
-
|
|
7059
|
-
en_axis_data.increment = 2;
|
|
8097
|
+
fsr_mult = 0.000038;
|
|
7060
8098
|
break;
|
|
7061
8099
|
case 2:
|
|
7062
|
-
|
|
7063
|
-
en_axis_data.increment = 2;
|
|
8100
|
+
fsr_mult = 0.000076;
|
|
7064
8101
|
break;
|
|
7065
|
-
|
|
7066
|
-
|
|
7067
|
-
|
|
7068
|
-
|
|
8102
|
+
}
|
|
8103
|
+
switch(globalDevices[deviceAddr].fsr){
|
|
8104
|
+
case 0:
|
|
8105
|
+
fsr_text = "10g";
|
|
7069
8106
|
break;
|
|
7070
|
-
case
|
|
7071
|
-
|
|
7072
|
-
en_axis_data.increment = 2;
|
|
8107
|
+
case 1:
|
|
8108
|
+
fsr_text = "20g";
|
|
7073
8109
|
break;
|
|
7074
|
-
case
|
|
7075
|
-
|
|
7076
|
-
en_axis_data.z_offset = 2;
|
|
7077
|
-
en_axis_data.increment = 4;
|
|
8110
|
+
case 2:
|
|
8111
|
+
fsr_text = "40g";
|
|
7078
8112
|
break;
|
|
7079
|
-
|
|
7080
|
-
|
|
7081
|
-
|
|
7082
|
-
|
|
8113
|
+
}
|
|
8114
|
+
}else{ // gyro
|
|
8115
|
+
var fsr_mult = 0.0305;
|
|
8116
|
+
var fsr_text = "";
|
|
8117
|
+
switch(globalDevices[deviceAddr].fsr){
|
|
8118
|
+
case 0:
|
|
8119
|
+
fsr_mult = 0.0305;
|
|
7083
8120
|
break;
|
|
7084
|
-
case
|
|
7085
|
-
|
|
7086
|
-
|
|
7087
|
-
|
|
7088
|
-
|
|
8121
|
+
case 1:
|
|
8122
|
+
fsr_mult = 0.061;
|
|
8123
|
+
break;
|
|
8124
|
+
case 2:
|
|
8125
|
+
fsr_mult = 0.122;
|
|
8126
|
+
break;
|
|
8127
|
+
case 3:
|
|
8128
|
+
fsr_mult = 0.244;
|
|
7089
8129
|
break;
|
|
7090
|
-
default:
|
|
7091
|
-
en_axis_data.increment = 0;
|
|
7092
8130
|
}
|
|
7093
|
-
|
|
7094
|
-
|
|
7095
|
-
|
|
7096
|
-
|
|
7097
|
-
|
|
7098
|
-
|
|
7099
|
-
|
|
7100
|
-
|
|
7101
|
-
|
|
7102
|
-
|
|
7103
|
-
|
|
7104
|
-
|
|
7105
|
-
|
|
7106
|
-
break;
|
|
7107
|
-
}
|
|
7108
|
-
switch(globalDevices[deviceAddr].fsr){
|
|
7109
|
-
case 0:
|
|
7110
|
-
fsr_text = "10g";
|
|
7111
|
-
break;
|
|
7112
|
-
case 1:
|
|
7113
|
-
fsr_text = "20g";
|
|
7114
|
-
break;
|
|
7115
|
-
case 2:
|
|
7116
|
-
fsr_text = "40g";
|
|
7117
|
-
break;
|
|
7118
|
-
}
|
|
7119
|
-
}else{ // gyro
|
|
7120
|
-
var fsr_mult = 0.00047;
|
|
7121
|
-
var fsr_text = "";
|
|
7122
|
-
switch(globalDevices[deviceAddr].fsr){
|
|
7123
|
-
case 0:
|
|
7124
|
-
fsr_mult = 0.00047;
|
|
7125
|
-
break;
|
|
7126
|
-
case 1:
|
|
7127
|
-
fsr_mult = 0.00095;
|
|
7128
|
-
break;
|
|
7129
|
-
case 2:
|
|
7130
|
-
fsr_mult = 0.00190;
|
|
7131
|
-
break;
|
|
7132
|
-
case 3:
|
|
7133
|
-
fsr_mult = 0.00381;
|
|
7134
|
-
break;
|
|
7135
|
-
}
|
|
7136
|
-
switch(globalDevices[deviceAddr].fsr){
|
|
7137
|
-
case 0:
|
|
7138
|
-
fsr_text = "250dps";
|
|
7139
|
-
break;
|
|
7140
|
-
case 1:
|
|
7141
|
-
fsr_text = "500dps";
|
|
7142
|
-
break;
|
|
7143
|
-
case 2:
|
|
7144
|
-
fsr_text = "1000dps";
|
|
7145
|
-
break;
|
|
7146
|
-
case 3:
|
|
7147
|
-
fsr_text = "2000dps";
|
|
7148
|
-
break;
|
|
7149
|
-
}
|
|
8131
|
+
switch(globalDevices[deviceAddr].fsr){
|
|
8132
|
+
case 0:
|
|
8133
|
+
fsr_text = "250dps";
|
|
8134
|
+
break;
|
|
8135
|
+
case 1:
|
|
8136
|
+
fsr_text = "500dps";
|
|
8137
|
+
break;
|
|
8138
|
+
case 2:
|
|
8139
|
+
fsr_text = "1000dps";
|
|
8140
|
+
break;
|
|
8141
|
+
case 3:
|
|
8142
|
+
fsr_text = "2000dps";
|
|
8143
|
+
break;
|
|
7150
8144
|
}
|
|
8145
|
+
}
|
|
7151
8146
|
|
|
7152
|
-
|
|
7153
|
-
|
|
7154
|
-
|
|
7155
|
-
fft_concat[label] = {};
|
|
8147
|
+
for(var i = 0; i < raw_data.length; i+=en_axis_data.increment){
|
|
8148
|
+
label++;
|
|
7156
8149
|
|
|
7157
|
-
|
|
7158
|
-
|
|
7159
|
-
}
|
|
7160
|
-
if('y_offset' in en_axis_data){
|
|
7161
|
-
fft_concat[label].y = parseFloat((signInt(((raw_data[i+en_axis_data.y_offset]<<8)+(raw_data[i+en_axis_data.y_offset+1])), 16)*fsr_mult).toFixed(2));
|
|
7162
|
-
}
|
|
7163
|
-
if('z_offset' in en_axis_data){
|
|
7164
|
-
fft_concat[label].z = parseFloat((signInt(((raw_data[i+en_axis_data.z_offset]<<8)+(raw_data[i+en_axis_data.z_offset+1])), 16)*fsr_mult).toFixed(2));
|
|
7165
|
-
}
|
|
8150
|
+
if('x_offset' in en_axis_data){
|
|
8151
|
+
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(2)));
|
|
7166
8152
|
}
|
|
7167
|
-
|
|
7168
|
-
|
|
7169
|
-
|
|
7170
|
-
|
|
7171
|
-
|
|
7172
|
-
mac_address: deviceAddr,
|
|
7173
|
-
en_axis: globalDevices[deviceAddr].en_axis,
|
|
7174
|
-
fsr: fsr_text,
|
|
7175
|
-
odr: globalDevices[deviceAddr].odr,
|
|
7176
|
-
device_temp: globalDevices[deviceAddr].device_temp,
|
|
7177
|
-
external_temp: globalDevices[deviceAddr].external_temp,
|
|
7178
|
-
total_samples: label,
|
|
7179
|
-
data: fft_concat
|
|
7180
|
-
};
|
|
7181
|
-
// console.log(globalDevices[deviceAddr].data);
|
|
7182
|
-
// console.log(raw_data);
|
|
7183
|
-
sensor_data = fft_concat_obj;
|
|
7184
|
-
// parsed.raw_packets = globalDevices[deviceAddr].data;
|
|
7185
|
-
// parsed.raw_data = raw_data;
|
|
7186
|
-
delete globalDevices[deviceAddr];
|
|
7187
|
-
if(this.hasOwnProperty('failure_no')){
|
|
7188
|
-
console.log('####falure no');
|
|
7189
|
-
console.log(this.failure_no);
|
|
8153
|
+
if('y_offset' in en_axis_data){
|
|
8154
|
+
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(2)));
|
|
8155
|
+
}
|
|
8156
|
+
if('z_offset' in en_axis_data){
|
|
8157
|
+
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(2)));
|
|
7190
8158
|
}
|
|
7191
|
-
|
|
7192
|
-
return sensor_data;
|
|
7193
|
-
}
|
|
7194
|
-
else{
|
|
7195
|
-
return;
|
|
7196
|
-
}
|
|
7197
|
-
}else{
|
|
7198
|
-
|
|
7199
|
-
var mode = payload[9];
|
|
7200
|
-
var odr = payload[11];
|
|
7201
|
-
var en_axis = payload[12] & 7;
|
|
7202
|
-
var fsr = payload[12] >> 5;
|
|
7203
|
-
var device_temp = payload.slice(15, 17).reduce(msbLsb) / 100;
|
|
7204
|
-
var external_temperature = payload.slice(17, 19).reduce(msbLsb) / 100;
|
|
7205
|
-
|
|
7206
|
-
globalDevices[deviceAddr] = {
|
|
7207
|
-
// stream_size: expected_packets,
|
|
7208
|
-
data: {},
|
|
7209
|
-
odr: odr,
|
|
7210
|
-
mo: mode,
|
|
7211
|
-
en_axis: en_axis,
|
|
7212
|
-
fsr: fsr,
|
|
7213
|
-
hour: hour,
|
|
7214
|
-
minute: minute,
|
|
7215
|
-
device_temp: device_temp,
|
|
7216
|
-
external_temp: external_temperature
|
|
7217
8159
|
}
|
|
7218
|
-
|
|
8160
|
+
var fft_concat_obj = {
|
|
8161
|
+
mode: mode,
|
|
8162
|
+
sensor_type: data.sensor_type,
|
|
8163
|
+
msg_type: data.event_type,
|
|
8164
|
+
time_id: globalDevices[deviceAddr].hour +':'+ globalDevices[deviceAddr].minute,
|
|
8165
|
+
mac_address: deviceAddr,
|
|
8166
|
+
en_axis: globalDevices[deviceAddr].en_axis,
|
|
8167
|
+
fsr: fsr_text,
|
|
8168
|
+
odr: globalDevices[deviceAddr].odr,
|
|
8169
|
+
device_temp: globalDevices[deviceAddr].device_temp,
|
|
8170
|
+
external_temp: globalDevices[deviceAddr].external_temp,
|
|
8171
|
+
total_samples: label,
|
|
8172
|
+
fft_confidence : ((Object.keys(globalDevices[deviceAddr].data).length / expected_packets) * 100).toFixed(2) + '%',
|
|
8173
|
+
data: fft_concat
|
|
8174
|
+
};
|
|
8175
|
+
sensor_data = fft_concat_obj;
|
|
8176
|
+
delete globalDevices[deviceAddr];
|
|
8177
|
+
return sensor_data;
|
|
8178
|
+
}
|
|
8179
|
+
else{
|
|
7219
8180
|
return;
|
|
7220
8181
|
}
|
|
7221
8182
|
}
|
|
8183
|
+
},
|
|
8184
|
+
'parse_fly': (frame) => {
|
|
8185
|
+
let frame_data = {};
|
|
8186
|
+
switch(frame[12]){
|
|
8187
|
+
case 0:
|
|
8188
|
+
frame_data.odr = 125;
|
|
8189
|
+
break;
|
|
8190
|
+
case 1:
|
|
8191
|
+
frame_data.odr = 250;
|
|
8192
|
+
break;
|
|
8193
|
+
case 2:
|
|
8194
|
+
frame_data.odr = 500;
|
|
8195
|
+
break;
|
|
8196
|
+
case 3:
|
|
8197
|
+
frame_data.odr = 1000;
|
|
8198
|
+
break;
|
|
8199
|
+
default:
|
|
8200
|
+
frame_data.odr = 0;
|
|
8201
|
+
}
|
|
8202
|
+
switch(frame[15]){
|
|
8203
|
+
case 0:
|
|
8204
|
+
frame_data.fsr_acc = "10g";
|
|
8205
|
+
break;
|
|
8206
|
+
case 1:
|
|
8207
|
+
frame_data.fsr_acc = "20g";
|
|
8208
|
+
break;
|
|
8209
|
+
case 2:
|
|
8210
|
+
frame_data.fsr_acc = "40g";
|
|
8211
|
+
break;
|
|
8212
|
+
}
|
|
8213
|
+
switch(frame[16]){
|
|
8214
|
+
case 0:
|
|
8215
|
+
frame_data.fsr_gyro = "250dps";
|
|
8216
|
+
break;
|
|
8217
|
+
case 1:
|
|
8218
|
+
frame_data.fsr_gyro = "500dps";
|
|
8219
|
+
break;
|
|
8220
|
+
case 2:
|
|
8221
|
+
frame_data.fsr_gyro = "1000dps";
|
|
8222
|
+
break;
|
|
8223
|
+
case 3:
|
|
8224
|
+
frame_data.fsr_gyro = "2000dps";
|
|
8225
|
+
break;
|
|
8226
|
+
}
|
|
8227
|
+
switch(frame[17]){
|
|
8228
|
+
case 7:
|
|
8229
|
+
frame_data.en_axis = "all";
|
|
8230
|
+
break;
|
|
8231
|
+
}
|
|
8232
|
+
switch(frame[20]){
|
|
8233
|
+
case 1:
|
|
8234
|
+
frame_data.en_sensors = "gyro_only";
|
|
8235
|
+
break;
|
|
8236
|
+
case 2:
|
|
8237
|
+
frame_data.en_sensors = "accel_only";
|
|
8238
|
+
break;
|
|
8239
|
+
case 3:
|
|
8240
|
+
frame_data.en_sensors = "all_enabled";
|
|
8241
|
+
break;
|
|
8242
|
+
}
|
|
8243
|
+
switch(frame[18]){
|
|
8244
|
+
case 0:
|
|
8245
|
+
frame_data.sampling_interval = 5;
|
|
8246
|
+
break;
|
|
8247
|
+
case 1:
|
|
8248
|
+
frame_data.sampling_interval = 10;
|
|
8249
|
+
break;
|
|
8250
|
+
case 2:
|
|
8251
|
+
frame_data.sampling_interval = 15;
|
|
8252
|
+
break;
|
|
8253
|
+
case 3:
|
|
8254
|
+
frame_data.sampling_interval = 20;
|
|
8255
|
+
break;
|
|
8256
|
+
case 4:
|
|
8257
|
+
frame_data.sampling_interval = 30;
|
|
8258
|
+
break;
|
|
8259
|
+
case 5:
|
|
8260
|
+
frame_data.sampling_interval = 60;
|
|
8261
|
+
break;
|
|
8262
|
+
case 6:
|
|
8263
|
+
frame_data.sampling_interval = 120;
|
|
8264
|
+
break;
|
|
8265
|
+
case 7:
|
|
8266
|
+
frame_data.sampling_interval = 180;
|
|
8267
|
+
break;
|
|
8268
|
+
}
|
|
8269
|
+
switch(frame[14]){
|
|
8270
|
+
case 0:
|
|
8271
|
+
frame_data.hpf_cutoff = 0.00247;
|
|
8272
|
+
break;
|
|
8273
|
+
case 1:
|
|
8274
|
+
frame_data.hpf_cutoff = 0.00062084;
|
|
8275
|
+
break;
|
|
8276
|
+
case 2:
|
|
8277
|
+
frame_data.hpf_cutoff = 0.00015545;
|
|
8278
|
+
break;
|
|
8279
|
+
case 3:
|
|
8280
|
+
frame_data.hpf_cutoff = 0.00003862;
|
|
8281
|
+
break;
|
|
8282
|
+
case 4:
|
|
8283
|
+
frame_data.hpf_cutoff = 0.00000954;
|
|
8284
|
+
break;
|
|
8285
|
+
case 5:
|
|
8286
|
+
frame_data.hpf_cutoff = 0.00000238;
|
|
8287
|
+
break;
|
|
8288
|
+
}
|
|
8289
|
+
return {
|
|
8290
|
+
'firmware': frame[2],
|
|
8291
|
+
'sample_rate': frame_data.odr + 'Hz',
|
|
8292
|
+
'sampling_duration': (frame[13]* 50) + 'msec',
|
|
8293
|
+
'hpf_cutoff': (frame_data.hpf_cutoff * frame_data.odr).toFixed(2) + 'Hz',
|
|
8294
|
+
'acc_fsr': frame_data.fsr_acc,
|
|
8295
|
+
'gyro_fsr': frame_data.fsr_gyro,
|
|
8296
|
+
'axis_enabled': frame_data.en_axis,
|
|
8297
|
+
'sampling_interval': frame_data.sampling_interval + 'min',
|
|
8298
|
+
'accelerometer_threshold': (frame[19]* 32) + "mg",
|
|
8299
|
+
'enabled_sensors': frame_data.en_sensors,
|
|
8300
|
+
'rtc': [
|
|
8301
|
+
String(frame[21]).padStart(2, '0'),
|
|
8302
|
+
String(frame[22]).padStart(2, '0'),
|
|
8303
|
+
String(frame[23]).padStart(2, '0')
|
|
8304
|
+
].join(':'),
|
|
8305
|
+
'hardware_id': frame.slice(24, 27),
|
|
8306
|
+
'report_rate': frame.slice(27, 31).reduce(msbLsb),
|
|
8307
|
+
'tx_life_counter': frame.slice(31, 35).reduce(msbLsb),
|
|
8308
|
+
'machine_values': {
|
|
8309
|
+
'firmware': frame[2],
|
|
8310
|
+
'odr': frame[12],
|
|
8311
|
+
'sampling_duration': frame[13],
|
|
8312
|
+
'hpf_cutoff': frame[14],
|
|
8313
|
+
'acc_fsr': frame[15],
|
|
8314
|
+
'gyro_fsr': frame[16],
|
|
8315
|
+
'axis_enabled': frame[17],
|
|
8316
|
+
'sampling_interval': frame[18],
|
|
8317
|
+
'accelerometer_threshold': frame[19],
|
|
8318
|
+
'enabled_sensors': frame[20],
|
|
8319
|
+
'hour': frame[21],
|
|
8320
|
+
'minute': frame[22],
|
|
8321
|
+
'second': frame[23],
|
|
8322
|
+
'hardware_id': frame.slice(24, 27),
|
|
8323
|
+
'report_rate': frame.slice(27, 31),
|
|
8324
|
+
'tx_life_counter': frame.slice(31, 35)
|
|
8325
|
+
}
|
|
8326
|
+
}
|
|
7222
8327
|
}
|
|
7223
8328
|
},
|
|
7224
8329
|
'105': {
|
|
@@ -7229,6 +8334,69 @@ function sensor_types(parent){
|
|
|
7229
8334
|
ma: d.slice(2, 4).reduce(msbLsb) / 100,
|
|
7230
8335
|
db: d.slice(4, 6).reduce(msbLsb) / 100
|
|
7231
8336
|
};
|
|
8337
|
+
},
|
|
8338
|
+
'parse_fly': (frame) => {
|
|
8339
|
+
let firmware = frame[2];
|
|
8340
|
+
if(firmware > 13){ // firmware 14 and above
|
|
8341
|
+
let frame_data = {};
|
|
8342
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
8343
|
+
if(!auto_check_interval){
|
|
8344
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
8345
|
+
}else{
|
|
8346
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
8347
|
+
}
|
|
8348
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
8349
|
+
switch(frame[16]){
|
|
8350
|
+
case 0:
|
|
8351
|
+
frame_data.fsr = "+-6.114 V";
|
|
8352
|
+
break;
|
|
8353
|
+
case 1:
|
|
8354
|
+
frame_data.fsr = "+-4.096 V";
|
|
8355
|
+
break;
|
|
8356
|
+
case 2:
|
|
8357
|
+
frame_data.fsr = "+-2.048 V";
|
|
8358
|
+
break;
|
|
8359
|
+
case 3:
|
|
8360
|
+
frame_data.fsr = "+-1.024 V";
|
|
8361
|
+
break;
|
|
8362
|
+
case 4:
|
|
8363
|
+
frame_data.fsr = "+-0.512 V";
|
|
8364
|
+
break;
|
|
8365
|
+
case 5:
|
|
8366
|
+
frame_data.fsr = "+-0.256 V";
|
|
8367
|
+
break;
|
|
8368
|
+
}
|
|
8369
|
+
return {
|
|
8370
|
+
'firmware': frame[2],
|
|
8371
|
+
'fsr': frame_data.fsr,
|
|
8372
|
+
'boot_time': frame[17] + " sec",
|
|
8373
|
+
'power_adc': frame.slice(18, 20).reduce(msbLsb),
|
|
8374
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
8375
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
8376
|
+
'always_on': frame_data.always_on,
|
|
8377
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
8378
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
8379
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
8380
|
+
'hardware_id': frame.slice(37, 40),
|
|
8381
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
8382
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
8383
|
+
'machine_values': {
|
|
8384
|
+
'firmware': frame[2],
|
|
8385
|
+
'fsr': frame[16],
|
|
8386
|
+
'boot_time': frame[17],
|
|
8387
|
+
'power_adc': frame.slice(18, 20),
|
|
8388
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
8389
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
8390
|
+
'always_on': frame[24],
|
|
8391
|
+
'calibration_one': frame.slice(25, 29),
|
|
8392
|
+
'calibration_two':frame.slice(29, 33),
|
|
8393
|
+
'calibration_three':frame.slice(33, 37),
|
|
8394
|
+
'hardware_id': frame.slice(37, 40),
|
|
8395
|
+
'report_rate': frame.slice(40, 44),
|
|
8396
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
8397
|
+
}
|
|
8398
|
+
}
|
|
8399
|
+
}
|
|
7232
8400
|
}
|
|
7233
8401
|
},
|
|
7234
8402
|
'106': {
|
|
@@ -7242,6 +8410,69 @@ function sensor_types(parent){
|
|
|
7242
8410
|
c2_ma: d.slice(8, 10).reduce(msbLsb) / 100,
|
|
7243
8411
|
c2_db: d.slice(10, 12).reduce(msbLsb) / 100
|
|
7244
8412
|
};
|
|
8413
|
+
},
|
|
8414
|
+
'parse_fly': (frame) => {
|
|
8415
|
+
let firmware = frame[2];
|
|
8416
|
+
if(firmware > 13){ // firmware 14 and above
|
|
8417
|
+
let frame_data = {};
|
|
8418
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
8419
|
+
if(!auto_check_interval){
|
|
8420
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
8421
|
+
}else{
|
|
8422
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
8423
|
+
}
|
|
8424
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
8425
|
+
switch(frame[16]){
|
|
8426
|
+
case 0:
|
|
8427
|
+
frame_data.fsr = "+-6.114 V";
|
|
8428
|
+
break;
|
|
8429
|
+
case 1:
|
|
8430
|
+
frame_data.fsr = "+-4.096 V";
|
|
8431
|
+
break;
|
|
8432
|
+
case 2:
|
|
8433
|
+
frame_data.fsr = "+-2.048 V";
|
|
8434
|
+
break;
|
|
8435
|
+
case 3:
|
|
8436
|
+
frame_data.fsr = "+-1.024 V";
|
|
8437
|
+
break;
|
|
8438
|
+
case 4:
|
|
8439
|
+
frame_data.fsr = "+-0.512 V";
|
|
8440
|
+
break;
|
|
8441
|
+
case 5:
|
|
8442
|
+
frame_data.fsr = "+-0.256 V";
|
|
8443
|
+
break;
|
|
8444
|
+
}
|
|
8445
|
+
return {
|
|
8446
|
+
'firmware': frame[2],
|
|
8447
|
+
'fsr': frame_data.fsr,
|
|
8448
|
+
'boot_time': frame[17] + " sec",
|
|
8449
|
+
'power_adc': frame.slice(18, 20).reduce(msbLsb),
|
|
8450
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
8451
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
8452
|
+
'always_on': frame_data.always_on,
|
|
8453
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
8454
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
8455
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
8456
|
+
'hardware_id': frame.slice(37, 40),
|
|
8457
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
8458
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
8459
|
+
'machine_values': {
|
|
8460
|
+
'firmware': frame[2],
|
|
8461
|
+
'fsr': frame[16],
|
|
8462
|
+
'boot_time': frame[17],
|
|
8463
|
+
'power_adc': frame.slice(18, 20),
|
|
8464
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
8465
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
8466
|
+
'always_on': frame[24],
|
|
8467
|
+
'calibration_one': frame.slice(25, 29),
|
|
8468
|
+
'calibration_two':frame.slice(29, 33),
|
|
8469
|
+
'calibration_three':frame.slice(33, 37),
|
|
8470
|
+
'hardware_id': frame.slice(37, 40),
|
|
8471
|
+
'report_rate': frame.slice(40, 44),
|
|
8472
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
8473
|
+
}
|
|
8474
|
+
}
|
|
8475
|
+
}
|
|
7245
8476
|
}
|
|
7246
8477
|
},
|
|
7247
8478
|
'107': {
|
|
@@ -7265,6 +8496,69 @@ function sensor_types(parent){
|
|
|
7265
8496
|
ma3: ma3,
|
|
7266
8497
|
ma4: ma4
|
|
7267
8498
|
};
|
|
8499
|
+
},
|
|
8500
|
+
'parse_fly': (frame) => {
|
|
8501
|
+
let firmware = frame[2];
|
|
8502
|
+
if(firmware > 13){ // firmware 14 and above
|
|
8503
|
+
let frame_data = {};
|
|
8504
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
8505
|
+
if(!auto_check_interval){
|
|
8506
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
8507
|
+
}else{
|
|
8508
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
8509
|
+
}
|
|
8510
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
8511
|
+
switch(frame[16]){
|
|
8512
|
+
case 0:
|
|
8513
|
+
frame_data.fsr = "+-6.114 V";
|
|
8514
|
+
break;
|
|
8515
|
+
case 1:
|
|
8516
|
+
frame_data.fsr = "+-4.096 V";
|
|
8517
|
+
break;
|
|
8518
|
+
case 2:
|
|
8519
|
+
frame_data.fsr = "+-2.048 V";
|
|
8520
|
+
break;
|
|
8521
|
+
case 3:
|
|
8522
|
+
frame_data.fsr = "+-1.024 V";
|
|
8523
|
+
break;
|
|
8524
|
+
case 4:
|
|
8525
|
+
frame_data.fsr = "+-0.512 V";
|
|
8526
|
+
break;
|
|
8527
|
+
case 5:
|
|
8528
|
+
frame_data.fsr = "+-0.256 V";
|
|
8529
|
+
break;
|
|
8530
|
+
}
|
|
8531
|
+
return {
|
|
8532
|
+
'firmware': frame[2],
|
|
8533
|
+
'fsr': frame_data.fsr,
|
|
8534
|
+
'boot_time': frame[17] + " sec",
|
|
8535
|
+
'power_adc': frame.slice(18, 20).reduce(msbLsb),
|
|
8536
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
8537
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
8538
|
+
'always_on': frame_data.always_on,
|
|
8539
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
8540
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
8541
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
8542
|
+
'hardware_id': frame.slice(37, 40),
|
|
8543
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
8544
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
8545
|
+
'machine_values': {
|
|
8546
|
+
'firmware': frame[2],
|
|
8547
|
+
'fsr': frame[16],
|
|
8548
|
+
'boot_time': frame[17],
|
|
8549
|
+
'power_adc': frame.slice(18, 20),
|
|
8550
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
8551
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
8552
|
+
'always_on': frame[24],
|
|
8553
|
+
'calibration_one': frame.slice(25, 29),
|
|
8554
|
+
'calibration_two':frame.slice(29, 33),
|
|
8555
|
+
'calibration_three':frame.slice(33, 37),
|
|
8556
|
+
'hardware_id': frame.slice(37, 40),
|
|
8557
|
+
'report_rate': frame.slice(40, 44),
|
|
8558
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
8559
|
+
}
|
|
8560
|
+
}
|
|
8561
|
+
}
|
|
7268
8562
|
}
|
|
7269
8563
|
},
|
|
7270
8564
|
'108': {
|
|
@@ -7294,47 +8588,345 @@ function sensor_types(parent){
|
|
|
7294
8588
|
break;
|
|
7295
8589
|
}
|
|
7296
8590
|
return {
|
|
7297
|
-
digital_input_counter: d.slice(0, 4).reduce(msbLsb),
|
|
7298
|
-
digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
7299
|
-
ct_input_counter: d.slice(8, 12).reduce(msbLsb),
|
|
7300
|
-
ct_input_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
7301
|
-
opto_input_counter: d.slice(16, 20).reduce(msbLsb),
|
|
7302
|
-
opto_input_uptime: d.slice(20, 24).reduce(msbLsb),
|
|
7303
|
-
accelerometer_counter: d.slice(24, 28).reduce(msbLsb),
|
|
7304
|
-
accelerometer_uptime: d.slice(28, 32).reduce(msbLsb),
|
|
7305
|
-
magnetometer_counter: d.slice(32, 36).reduce(msbLsb),
|
|
7306
|
-
magnetometer_uptime: d.slice(36, 40).reduce(msbLsb),
|
|
7307
|
-
input_di: d[40] & 1 ? 1 : 0,
|
|
7308
|
-
input_ct: d[40] & 2 ? 1 : 0,
|
|
7309
|
-
input_opto: d[40] & 4 ? 1 : 0,
|
|
7310
|
-
input_acc: d[40] & 8 ? 1 : 0,
|
|
7311
|
-
input_mag: d[40] & 16 ? 1 : 0,
|
|
7312
|
-
report_type: report_type,
|
|
7313
|
-
rtc: [
|
|
7314
|
-
String(d[42]).padStart(2, '0'),
|
|
7315
|
-
String(d[43]).padStart(2, '0'),
|
|
7316
|
-
String(d[44]).padStart(2, '0')
|
|
7317
|
-
].join(':')
|
|
7318
|
-
};
|
|
7319
|
-
}else{
|
|
7320
|
-
return {
|
|
7321
|
-
digital_input_counter: d.slice(0, 4).reduce(msbLsb),
|
|
7322
|
-
digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
7323
|
-
ct_input_counter: d.slice(8, 12).reduce(msbLsb),
|
|
7324
|
-
ct_input_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
7325
|
-
opto_input_counter: d.slice(16, 20).reduce(msbLsb),
|
|
7326
|
-
opto_input_uptime: d.slice(20, 24).reduce(msbLsb),
|
|
7327
|
-
accelerometer_counter: d.slice(24, 28).reduce(msbLsb),
|
|
7328
|
-
accelerometer_uptime: d.slice(28, 32).reduce(msbLsb),
|
|
7329
|
-
magnetometer_counter: d.slice(32, 36).reduce(msbLsb),
|
|
7330
|
-
magnetometer_uptime: d.slice(36, 40).reduce(msbLsb),
|
|
7331
|
-
input_di: d[40] & 1 ? 1 : 0,
|
|
7332
|
-
input_ct: d[40] & 2 ? 1 : 0,
|
|
7333
|
-
input_opto: d[40] & 4 ? 1 : 0,
|
|
7334
|
-
input_acc: d[40] & 8 ? 1 : 0,
|
|
7335
|
-
input_mag: d[40] & 16 ? 1 : 0
|
|
7336
|
-
};
|
|
8591
|
+
digital_input_counter: d.slice(0, 4).reduce(msbLsb),
|
|
8592
|
+
digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
8593
|
+
ct_input_counter: d.slice(8, 12).reduce(msbLsb),
|
|
8594
|
+
ct_input_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
8595
|
+
opto_input_counter: d.slice(16, 20).reduce(msbLsb),
|
|
8596
|
+
opto_input_uptime: d.slice(20, 24).reduce(msbLsb),
|
|
8597
|
+
accelerometer_counter: d.slice(24, 28).reduce(msbLsb),
|
|
8598
|
+
accelerometer_uptime: d.slice(28, 32).reduce(msbLsb),
|
|
8599
|
+
magnetometer_counter: d.slice(32, 36).reduce(msbLsb),
|
|
8600
|
+
magnetometer_uptime: d.slice(36, 40).reduce(msbLsb),
|
|
8601
|
+
input_di: d[40] & 1 ? 1 : 0,
|
|
8602
|
+
input_ct: d[40] & 2 ? 1 : 0,
|
|
8603
|
+
input_opto: d[40] & 4 ? 1 : 0,
|
|
8604
|
+
input_acc: d[40] & 8 ? 1 : 0,
|
|
8605
|
+
input_mag: d[40] & 16 ? 1 : 0,
|
|
8606
|
+
report_type: report_type,
|
|
8607
|
+
rtc: [
|
|
8608
|
+
String(d[42]).padStart(2, '0'),
|
|
8609
|
+
String(d[43]).padStart(2, '0'),
|
|
8610
|
+
String(d[44]).padStart(2, '0')
|
|
8611
|
+
].join(':')
|
|
8612
|
+
};
|
|
8613
|
+
}else{
|
|
8614
|
+
return {
|
|
8615
|
+
digital_input_counter: d.slice(0, 4).reduce(msbLsb),
|
|
8616
|
+
digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
8617
|
+
ct_input_counter: d.slice(8, 12).reduce(msbLsb),
|
|
8618
|
+
ct_input_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
8619
|
+
opto_input_counter: d.slice(16, 20).reduce(msbLsb),
|
|
8620
|
+
opto_input_uptime: d.slice(20, 24).reduce(msbLsb),
|
|
8621
|
+
accelerometer_counter: d.slice(24, 28).reduce(msbLsb),
|
|
8622
|
+
accelerometer_uptime: d.slice(28, 32).reduce(msbLsb),
|
|
8623
|
+
magnetometer_counter: d.slice(32, 36).reduce(msbLsb),
|
|
8624
|
+
magnetometer_uptime: d.slice(36, 40).reduce(msbLsb),
|
|
8625
|
+
input_di: d[40] & 1 ? 1 : 0,
|
|
8626
|
+
input_ct: d[40] & 2 ? 1 : 0,
|
|
8627
|
+
input_opto: d[40] & 4 ? 1 : 0,
|
|
8628
|
+
input_acc: d[40] & 8 ? 1 : 0,
|
|
8629
|
+
input_mag: d[40] & 16 ? 1 : 0
|
|
8630
|
+
};
|
|
8631
|
+
}
|
|
8632
|
+
},
|
|
8633
|
+
'parse_fly': (frame) => {
|
|
8634
|
+
if(frame[2] > 9){ // firmware 10 and above
|
|
8635
|
+
let reset_mode = "Disabled";
|
|
8636
|
+
switch(frame[38]){
|
|
8637
|
+
case 0:
|
|
8638
|
+
reset_mode = "Disabled";
|
|
8639
|
+
break;
|
|
8640
|
+
case 1:
|
|
8641
|
+
reset_mode = "Shift Ends";
|
|
8642
|
+
break;
|
|
8643
|
+
case 2:
|
|
8644
|
+
reset_mode = "Timeout";
|
|
8645
|
+
break;
|
|
8646
|
+
}
|
|
8647
|
+
let acc_odr = "10Hz";
|
|
8648
|
+
switch(frame[40]){
|
|
8649
|
+
case 0:
|
|
8650
|
+
acc_odr = "10Hz";
|
|
8651
|
+
break;
|
|
8652
|
+
case 1:
|
|
8653
|
+
acc_odr = "20Hz";
|
|
8654
|
+
break;
|
|
8655
|
+
case 2:
|
|
8656
|
+
acc_odr = "50Hz";
|
|
8657
|
+
break;
|
|
8658
|
+
case 3:
|
|
8659
|
+
acc_odr = "100Hz";
|
|
8660
|
+
break;
|
|
8661
|
+
case 4:
|
|
8662
|
+
acc_odr = "200Hz";
|
|
8663
|
+
break;
|
|
8664
|
+
case 5:
|
|
8665
|
+
acc_odr = "400Hz";
|
|
8666
|
+
break;
|
|
8667
|
+
}
|
|
8668
|
+
let rtc_sampling_interval = "5 seconds";
|
|
8669
|
+
switch(frame[39]){
|
|
8670
|
+
case 0:
|
|
8671
|
+
rtc_sampling_interval = "1 minute";
|
|
8672
|
+
break;
|
|
8673
|
+
case 1:
|
|
8674
|
+
rtc_sampling_interval = "5 minutes";
|
|
8675
|
+
break;
|
|
8676
|
+
case 2:
|
|
8677
|
+
rtc_sampling_interval = "15 minutes";
|
|
8678
|
+
break;
|
|
8679
|
+
case 3:
|
|
8680
|
+
rtc_sampling_interval = "30 minutes";
|
|
8681
|
+
break;
|
|
8682
|
+
case 4:
|
|
8683
|
+
rtc_sampling_interval = "1 hour";
|
|
8684
|
+
break;
|
|
8685
|
+
case 5:
|
|
8686
|
+
rtc_sampling_interval = "2 hours";
|
|
8687
|
+
break;
|
|
8688
|
+
case 6:
|
|
8689
|
+
rtc_sampling_interval = "3 hours";
|
|
8690
|
+
break;
|
|
8691
|
+
case 7:
|
|
8692
|
+
rtc_sampling_interval = "6 hours";
|
|
8693
|
+
break;
|
|
8694
|
+
case 8:
|
|
8695
|
+
rtc_sampling_interval = "12 hours";
|
|
8696
|
+
break;
|
|
8697
|
+
case 9:
|
|
8698
|
+
rtc_sampling_interval = "5 seconds";
|
|
8699
|
+
break;
|
|
8700
|
+
case 10:
|
|
8701
|
+
rtc_sampling_interval = "10 seconds";
|
|
8702
|
+
break;
|
|
8703
|
+
case 11:
|
|
8704
|
+
rtc_sampling_interval = "15 seconds";
|
|
8705
|
+
break;
|
|
8706
|
+
case 12:
|
|
8707
|
+
rtc_sampling_interval = "30 seconds";
|
|
8708
|
+
break;
|
|
8709
|
+
}
|
|
8710
|
+
return {
|
|
8711
|
+
'firmware': frame[2],
|
|
8712
|
+
'accelerometer_threshold': (frame[16]* 32) + "mg",
|
|
8713
|
+
'debouncing_timeout': frame.slice(17, 19).reduce(msbLsb) + "msec",
|
|
8714
|
+
'accelero_state': frame[19]? "Enabled": "Disabled",
|
|
8715
|
+
'input_1_active_edge': frame[20]? "Rising": "Falling",
|
|
8716
|
+
'input_2_active_edge': frame[21]? "Rising": "Falling",
|
|
8717
|
+
'input_3_active_edge': frame[22]? "Rising": "Falling",
|
|
8718
|
+
'counter_threshold': frame.slice(23, 27).reduce(msbLsb),
|
|
8719
|
+
'trasnmit_on_change_status': frame[27]? "Enabled": "Disabled",
|
|
8720
|
+
'Shift_end_1': [
|
|
8721
|
+
String(frame[28]).padStart(2, '0'),
|
|
8722
|
+
String(frame[29]).padStart(2, '0')
|
|
8723
|
+
].join(':'),
|
|
8724
|
+
'Shift_end_2': [
|
|
8725
|
+
String(frame[30]).padStart(2, '0'),
|
|
8726
|
+
String(frame[31]).padStart(2, '0')
|
|
8727
|
+
].join(':'),
|
|
8728
|
+
'Shift_end_3': [
|
|
8729
|
+
String(frame[32]).padStart(2, '0'),
|
|
8730
|
+
String(frame[33]).padStart(2, '0')
|
|
8731
|
+
].join(':'),
|
|
8732
|
+
'Shift_end_4': [
|
|
8733
|
+
String(frame[34]).padStart(2, '0'),
|
|
8734
|
+
String(frame[35]).padStart(2, '0')
|
|
8735
|
+
].join(':'),
|
|
8736
|
+
'reset_timeout': frame.slice(36, 38).reduce(msbLsb) + "min",
|
|
8737
|
+
'counter_reset_mode': reset_mode,
|
|
8738
|
+
'sampling_interval': rtc_sampling_interval,
|
|
8739
|
+
'acc_odr': acc_odr,
|
|
8740
|
+
'hardware_id': frame.slice(41, 44),
|
|
8741
|
+
'report_rate': frame.slice(44, 48).reduce(msbLsb) + "sec",
|
|
8742
|
+
'tx_life_counter': frame.slice(48, 52).reduce(msbLsb),
|
|
8743
|
+
'machine_values': {
|
|
8744
|
+
'firmware': frame[2],
|
|
8745
|
+
'accelerometer_threshold': frame[16],
|
|
8746
|
+
'debouncing_timeout': frame.slice(17, 19),
|
|
8747
|
+
'accelero_state': frame[19],
|
|
8748
|
+
'input_1_active_edge': frame[20],
|
|
8749
|
+
'input_2_active_edge': frame[21],
|
|
8750
|
+
'input_3_active_edge': frame[22],
|
|
8751
|
+
'counter_threshold': frame.slice(23, 27),
|
|
8752
|
+
'trasnmit_on_change_status': frame[27],
|
|
8753
|
+
'Shift_end_1': frame.slice(28, 30),
|
|
8754
|
+
'Shift_end_2': frame.slice(30, 32),
|
|
8755
|
+
'Shift_end_3': frame.slice(32, 34),
|
|
8756
|
+
'Shift_end_4': frame.slice(34, 36),
|
|
8757
|
+
'reset_timeout': frame.slice(36, 38),
|
|
8758
|
+
'counter_reset_mode': frame[38],
|
|
8759
|
+
'sampling_interval': frame[39],
|
|
8760
|
+
'acc_odr': frame[40],
|
|
8761
|
+
'hardware_id': frame.slice(41, 44),
|
|
8762
|
+
'report_rate': frame.slice(44, 48),
|
|
8763
|
+
'tx_life_counter': frame.slice(48, 52)
|
|
8764
|
+
}
|
|
8765
|
+
}
|
|
8766
|
+
} else if(frame[2] > 8){
|
|
8767
|
+
let reset_mode = "Disabled";
|
|
8768
|
+
switch(frame[37]){
|
|
8769
|
+
case 0:
|
|
8770
|
+
reset_mode = "Disabled";
|
|
8771
|
+
break;
|
|
8772
|
+
case 1:
|
|
8773
|
+
reset_mode = "Shift Ends";
|
|
8774
|
+
break;
|
|
8775
|
+
case 2:
|
|
8776
|
+
reset_mode = "Timeout";
|
|
8777
|
+
break;
|
|
8778
|
+
}
|
|
8779
|
+
let acc_odr = "10Hz";
|
|
8780
|
+
switch(frame[39]){
|
|
8781
|
+
case 0:
|
|
8782
|
+
acc_odr = "10Hz";
|
|
8783
|
+
break;
|
|
8784
|
+
case 1:
|
|
8785
|
+
acc_odr = "20Hz";
|
|
8786
|
+
break;
|
|
8787
|
+
case 2:
|
|
8788
|
+
acc_odr = "50Hz";
|
|
8789
|
+
break;
|
|
8790
|
+
case 3:
|
|
8791
|
+
acc_odr = "100Hz";
|
|
8792
|
+
break;
|
|
8793
|
+
case 4:
|
|
8794
|
+
acc_odr = "200Hz";
|
|
8795
|
+
break;
|
|
8796
|
+
case 5:
|
|
8797
|
+
acc_odr = "400Hz";
|
|
8798
|
+
break;
|
|
8799
|
+
}
|
|
8800
|
+
let rtc_sampling_interval = "5 seconds";
|
|
8801
|
+
switch(frame[38]){
|
|
8802
|
+
case 0:
|
|
8803
|
+
rtc_sampling_interval = "1 minute";
|
|
8804
|
+
break;
|
|
8805
|
+
case 1:
|
|
8806
|
+
rtc_sampling_interval = "5 minutes";
|
|
8807
|
+
break;
|
|
8808
|
+
case 2:
|
|
8809
|
+
rtc_sampling_interval = "15 minutes";
|
|
8810
|
+
break;
|
|
8811
|
+
case 3:
|
|
8812
|
+
rtc_sampling_interval = "30 minutes";
|
|
8813
|
+
break;
|
|
8814
|
+
case 4:
|
|
8815
|
+
rtc_sampling_interval = "1 hour";
|
|
8816
|
+
break;
|
|
8817
|
+
case 5:
|
|
8818
|
+
rtc_sampling_interval = "2 hours";
|
|
8819
|
+
break;
|
|
8820
|
+
case 6:
|
|
8821
|
+
rtc_sampling_interval = "3 hours";
|
|
8822
|
+
break;
|
|
8823
|
+
case 7:
|
|
8824
|
+
rtc_sampling_interval = "6 hours";
|
|
8825
|
+
break;
|
|
8826
|
+
case 8:
|
|
8827
|
+
rtc_sampling_interval = "12 hours";
|
|
8828
|
+
break;
|
|
8829
|
+
case 9:
|
|
8830
|
+
rtc_sampling_interval = "5 seconds";
|
|
8831
|
+
break;
|
|
8832
|
+
case 10:
|
|
8833
|
+
rtc_sampling_interval = "10 seconds";
|
|
8834
|
+
break;
|
|
8835
|
+
case 11:
|
|
8836
|
+
rtc_sampling_interval = "15 seconds";
|
|
8837
|
+
break;
|
|
8838
|
+
case 12:
|
|
8839
|
+
rtc_sampling_interval = "30 seconds";
|
|
8840
|
+
break;
|
|
8841
|
+
}
|
|
8842
|
+
return {
|
|
8843
|
+
'firmware': frame[2],
|
|
8844
|
+
'accelerometer_threshold': (frame[16]* 32) + "mg",
|
|
8845
|
+
'debouncing_timeout': frame[17] + "msec",
|
|
8846
|
+
'accelero_state': frame[18]? "Enabled": "Disabled",
|
|
8847
|
+
'input_1_active_edge': frame[19]? "Rising": "Falling",
|
|
8848
|
+
'input_2_active_edge': frame[20]? "Rising": "Falling",
|
|
8849
|
+
'input_3_active_edge': frame[21]? "Rising": "Falling",
|
|
8850
|
+
'counter_threshold': frame.slice(22, 26).reduce(msbLsb),
|
|
8851
|
+
'trasnmit_on_change_status': frame[26]? "Enabled": "Disabled",
|
|
8852
|
+
'Shift_end_1': [
|
|
8853
|
+
String(frame[27]).padStart(2, '0'),
|
|
8854
|
+
String(frame[28]).padStart(2, '0')
|
|
8855
|
+
].join(':'),
|
|
8856
|
+
'Shift_end_2': [
|
|
8857
|
+
String(frame[29]).padStart(2, '0'),
|
|
8858
|
+
String(frame[30]).padStart(2, '0')
|
|
8859
|
+
].join(':'),
|
|
8860
|
+
'Shift_end_3': [
|
|
8861
|
+
String(frame[31]).padStart(2, '0'),
|
|
8862
|
+
String(frame[32]).padStart(2, '0')
|
|
8863
|
+
].join(':'),
|
|
8864
|
+
'Shift_end_4': [
|
|
8865
|
+
String(frame[33]).padStart(2, '0'),
|
|
8866
|
+
String(frame[34]).padStart(2, '0')
|
|
8867
|
+
].join(':'),
|
|
8868
|
+
'reset_timeout': frame.slice(35, 37).reduce(msbLsb) + "min",
|
|
8869
|
+
'counter_reset_mode': reset_mode,
|
|
8870
|
+
'sampling_interval': rtc_sampling_interval,
|
|
8871
|
+
'acc_odr': acc_odr,
|
|
8872
|
+
'hardware_id': frame.slice(40, 43),
|
|
8873
|
+
'report_rate': frame.slice(43, 47).reduce(msbLsb) + "sec",
|
|
8874
|
+
'tx_life_counter': frame.slice(47, 51).reduce(msbLsb),
|
|
8875
|
+
'machine_values': {
|
|
8876
|
+
'firmware': frame[2],
|
|
8877
|
+
'accelerometer_threshold': frame[16],
|
|
8878
|
+
'debouncing_timeout': frame[17],
|
|
8879
|
+
'accelero_state': frame[18],
|
|
8880
|
+
'input_1_active_edge': frame[19],
|
|
8881
|
+
'input_2_active_edge': frame[20],
|
|
8882
|
+
'input_3_active_edge': frame[21],
|
|
8883
|
+
'counter_threshold': frame.slice(22, 26),
|
|
8884
|
+
'trasnmit_on_change_status': frame[26],
|
|
8885
|
+
'Shift_end_1': frame.slice(27, 29),
|
|
8886
|
+
'Shift_end_2': frame.slice(29, 31),
|
|
8887
|
+
'Shift_end_3': frame.slice(31, 33),
|
|
8888
|
+
'Shift_end_4': frame.slice(33, 35),
|
|
8889
|
+
'reset_timeout': frame.slice(35, 37),
|
|
8890
|
+
'counter_reset_mode': frame[37],
|
|
8891
|
+
'sampling_interval': frame[38],
|
|
8892
|
+
'acc_odr': frame[39],
|
|
8893
|
+
'hardware_id': frame.slice(40, 43),
|
|
8894
|
+
'report_rate': frame.slice(43, 47),
|
|
8895
|
+
'tx_life_counter': frame.slice(47, 51)
|
|
8896
|
+
}
|
|
8897
|
+
}
|
|
8898
|
+
} else{
|
|
8899
|
+
return {
|
|
8900
|
+
'firmware': frame[2],
|
|
8901
|
+
'report_rate': frame.slice(12, 16).reduce(msbLsb).toString() + "sec.",
|
|
8902
|
+
'accelerometer_threshold': (frame[16]* 32) + "mg.",
|
|
8903
|
+
'debouncing_timeout': frame[17].toString() + "msec.",
|
|
8904
|
+
'accelero_state': frame[18],
|
|
8905
|
+
'digital_inputs_active_edge': frame.slice(19, 22).reduce(msbLsb),
|
|
8906
|
+
'counter_threshold': frame.slice(22, 26).reduce(msbLsb),
|
|
8907
|
+
'trasnmit_on_change_status': frame[26],
|
|
8908
|
+
'machine_values': {
|
|
8909
|
+
'firmware': frame[2],
|
|
8910
|
+
'report_rate': frame.slice(12, 16),
|
|
8911
|
+
'accelerometer_threshold': frame[16],
|
|
8912
|
+
'debouncing_timeout': frame[17],
|
|
8913
|
+
'accelero_active_state': frame[18],
|
|
8914
|
+
'digital_inputs_active_edge': frame.slice(19, 22),
|
|
8915
|
+
'counter_threshold': frame.slice(22, 26),
|
|
8916
|
+
'trasnmit_on_change_status': frame[26]
|
|
8917
|
+
}
|
|
8918
|
+
}
|
|
7337
8919
|
}
|
|
8920
|
+
}
|
|
8921
|
+
},
|
|
8922
|
+
'109': {
|
|
8923
|
+
name: 'Wireless Custom Solar Sensor',
|
|
8924
|
+
parse: (d) => {
|
|
8925
|
+
return {
|
|
8926
|
+
illuminance: d.slice(0, 4).reduce(msbLsb),
|
|
8927
|
+
total_solar_radiation: d.slice(4, 6).reduce(msbLsb),
|
|
8928
|
+
ultraviolet_radiation: d.slice(6, 8).reduce(msbLsb)
|
|
8929
|
+
};
|
|
7338
8930
|
},
|
|
7339
8931
|
'parse_fly': (frame) => {
|
|
7340
8932
|
if(frame[2] > 8){
|
|
@@ -7493,30 +9085,6 @@ function sensor_types(parent){
|
|
|
7493
9085
|
}
|
|
7494
9086
|
}
|
|
7495
9087
|
},
|
|
7496
|
-
'109': {
|
|
7497
|
-
name: 'Wireless Custom Solar Sensor',
|
|
7498
|
-
parse: (d) => {
|
|
7499
|
-
return {
|
|
7500
|
-
illuminance: d.slice(0, 4).reduce(msbLsb),
|
|
7501
|
-
total_solar_radiation: d.slice(4, 6).reduce(msbLsb),
|
|
7502
|
-
ultraviolet_radiation: d.slice(6, 8).reduce(msbLsb)
|
|
7503
|
-
};
|
|
7504
|
-
},
|
|
7505
|
-
'parse_fly': (frame) => {
|
|
7506
|
-
return {
|
|
7507
|
-
'firmware': frame[2],
|
|
7508
|
-
'hardware_id': frame.slice(12, 15),
|
|
7509
|
-
'sample_rate': frame.slice(15, 19).reduce(msbLsb) + " Sec.",
|
|
7510
|
-
'tx_life_counter': frame.slice(19, 23).reduce(msbLsb),
|
|
7511
|
-
'machine_values': {
|
|
7512
|
-
'firmware': frame[2],
|
|
7513
|
-
'hardware_id': frame.slice(12, 15),
|
|
7514
|
-
'sample_rate': frame.slice(15, 19),
|
|
7515
|
-
'tx_life_counter': frame.slice(19, 23)
|
|
7516
|
-
}
|
|
7517
|
-
}
|
|
7518
|
-
}
|
|
7519
|
-
},
|
|
7520
9088
|
'109': {
|
|
7521
9089
|
name: 'Wireless Custom Solar Sensor',
|
|
7522
9090
|
parse: (d) => {
|
|
@@ -7589,7 +9157,7 @@ function sensor_types(parent){
|
|
|
7589
9157
|
var mode = payload[8];
|
|
7590
9158
|
var odr = msbLsb(payload[9], payload[10]);
|
|
7591
9159
|
var fsr = payload[11] >> 5;
|
|
7592
|
-
var
|
|
9160
|
+
var temperature = msbLsb(payload[14], payload[15])/100;
|
|
7593
9161
|
|
|
7594
9162
|
globalDevices[deviceAddr] = {
|
|
7595
9163
|
// stream_size: expected_packets,
|
|
@@ -7599,7 +9167,7 @@ function sensor_types(parent){
|
|
|
7599
9167
|
fsr: fsr,
|
|
7600
9168
|
hour: hour,
|
|
7601
9169
|
minute: minute,
|
|
7602
|
-
|
|
9170
|
+
temperature: temperature,
|
|
7603
9171
|
}
|
|
7604
9172
|
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
7605
9173
|
return;
|
|
@@ -7613,7 +9181,7 @@ function sensor_types(parent){
|
|
|
7613
9181
|
var mode = payload[8];
|
|
7614
9182
|
var odr = msbLsb(payload[9], payload[10]);
|
|
7615
9183
|
var fsr = payload[11] >> 5;
|
|
7616
|
-
var
|
|
9184
|
+
var temperature = msbLsb(payload[14], payload[15])/100;
|
|
7617
9185
|
|
|
7618
9186
|
globalDevices[deviceAddr] = {
|
|
7619
9187
|
// stream_size: expected_packets,
|
|
@@ -7623,7 +9191,7 @@ function sensor_types(parent){
|
|
|
7623
9191
|
fsr: fsr,
|
|
7624
9192
|
hour: hour,
|
|
7625
9193
|
minute: minute,
|
|
7626
|
-
|
|
9194
|
+
temperature: temperature,
|
|
7627
9195
|
}
|
|
7628
9196
|
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
7629
9197
|
}
|
|
@@ -7697,7 +9265,7 @@ function sensor_types(parent){
|
|
|
7697
9265
|
mac_address: deviceAddr,
|
|
7698
9266
|
fsr: fsr_text,
|
|
7699
9267
|
odr: globalDevices[deviceAddr].odr,
|
|
7700
|
-
|
|
9268
|
+
temperature: globalDevices[deviceAddr].temperature,
|
|
7701
9269
|
total_samples: label,
|
|
7702
9270
|
data: fft_concat
|
|
7703
9271
|
};
|
|
@@ -7718,7 +9286,7 @@ function sensor_types(parent){
|
|
|
7718
9286
|
var mode = payload[8];
|
|
7719
9287
|
var odr = msbLsb(payload[9], payload[10]);
|
|
7720
9288
|
var fsr = payload[11] >> 5;
|
|
7721
|
-
var
|
|
9289
|
+
var temperature = msbLsb(payload[14], payload[15])/100;
|
|
7722
9290
|
|
|
7723
9291
|
globalDevices[deviceAddr] = {
|
|
7724
9292
|
// stream_size: expected_packets,
|
|
@@ -7728,7 +9296,7 @@ function sensor_types(parent){
|
|
|
7728
9296
|
fsr: fsr,
|
|
7729
9297
|
hour: hour,
|
|
7730
9298
|
minute: minute,
|
|
7731
|
-
|
|
9299
|
+
temperature: temperature,
|
|
7732
9300
|
}
|
|
7733
9301
|
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
7734
9302
|
return;
|
|
@@ -8004,7 +9572,65 @@ function sensor_types(parent){
|
|
|
8004
9572
|
frame_data.auto_raw_interval = frame[32] * frame_data.sampling_interval_number || 'disabled';
|
|
8005
9573
|
frame_data.auto_raw_interval = typeof frame_data.auto_raw_interval === 'number' ? frame_data.auto_raw_interval+'min' : frame_data.auto_raw_interval;
|
|
8006
9574
|
frame_data.smart_mode_threshold = frame[34] * 50;
|
|
8007
|
-
if(frame[2] >
|
|
9575
|
+
if(frame[2] > 5){ // for Firmware v6 and above
|
|
9576
|
+
frame_data.motion_to_delay = frame[41] * 50;
|
|
9577
|
+
return {
|
|
9578
|
+
'firmware': frame[2],
|
|
9579
|
+
'destination_address': toMac(frame.slice(12, 16)),
|
|
9580
|
+
'mode': frame_data.mode,
|
|
9581
|
+
'odr': frame_data.odr_1+'Hz',
|
|
9582
|
+
'sampling_duration': frame_data.sampling_duration_1,
|
|
9583
|
+
'filter_status': frame_data.filter_status,
|
|
9584
|
+
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
9585
|
+
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
9586
|
+
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
9587
|
+
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
9588
|
+
'sampling_interval': frame_data.sampling_interval,
|
|
9589
|
+
'on_request_timeout': frame_data.on_request_timeout,
|
|
9590
|
+
'deadband': frame_data.deadband,
|
|
9591
|
+
'payload_length': frame_data.payload_length,
|
|
9592
|
+
'fsr': frame_data.fsr_text,
|
|
9593
|
+
'rpm_compute_status': frame_data.rpm_status,
|
|
9594
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
9595
|
+
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
9596
|
+
'smart_mode_skip_count': frame[33],
|
|
9597
|
+
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
9598
|
+
'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
|
|
9599
|
+
'max_tx_raw_samples': frame.slice(39, 41).reduce(msbLsb),
|
|
9600
|
+
'motion_to_sampling_delay': frame_data.motion_to_delay +'msec',
|
|
9601
|
+
'max_num_of_motion_tx_per_interval': frame[42],
|
|
9602
|
+
'hardware_id': frame.slice(43, 46),
|
|
9603
|
+
'reserved': frame.slice(46, 50),
|
|
9604
|
+
'tx_lifetime_counter': frame.slice(50, 54).reduce(msbLsb),
|
|
9605
|
+
'machine_values': {
|
|
9606
|
+
'firmware': frame[2],
|
|
9607
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
9608
|
+
'mode': frame[16],
|
|
9609
|
+
'odr': frame[17],
|
|
9610
|
+
'sampling_duration': frame[18],
|
|
9611
|
+
'filter_status': frame[19],
|
|
9612
|
+
'lpf_coeff': frame[20],
|
|
9613
|
+
'hpf_coeff': frame[21],
|
|
9614
|
+
'sampling_interval': frame[22],
|
|
9615
|
+
'on_request_timeout': frame[23],
|
|
9616
|
+
'deadband': frame[24],
|
|
9617
|
+
'payload_length': frame[25],
|
|
9618
|
+
'fsr': frame[26],
|
|
9619
|
+
'rpm_compute_status': frame[27],
|
|
9620
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
|
|
9621
|
+
'auto_raw_interval': frame[32],
|
|
9622
|
+
'smart_mode_skip_count': frame[33],
|
|
9623
|
+
'smart_mode_acc_threshold':frame[34],
|
|
9624
|
+
'uptime_counter': frame.slice(35, 39),
|
|
9625
|
+
'max_tx_raw_samples': frame.slice(39, 41),
|
|
9626
|
+
'motion_to_sampling_delay': frame[41],
|
|
9627
|
+
'max_num_of_motion_tx_per_interval': frame[42],
|
|
9628
|
+
'hardware_id': frame.slice(43, 46),
|
|
9629
|
+
'reserved': frame.slice(46, 50),
|
|
9630
|
+
'tx_lifetime_counter': frame.slice(50, 54)
|
|
9631
|
+
}
|
|
9632
|
+
}
|
|
9633
|
+
} else if(frame[2] > 4){ // for Firmware v5 and above
|
|
8008
9634
|
return {
|
|
8009
9635
|
'firmware': frame[2],
|
|
8010
9636
|
'destination_address': toMac(frame.slice(12, 16)),
|
|
@@ -8163,7 +9789,7 @@ function sensor_types(parent){
|
|
|
8163
9789
|
var mode = payload[8];
|
|
8164
9790
|
var odr = msbLsb(payload[9], payload[10]);
|
|
8165
9791
|
var fsr = payload[11] >> 5;
|
|
8166
|
-
var
|
|
9792
|
+
var temperature = msbLsb(payload[14], payload[15])/100;
|
|
8167
9793
|
|
|
8168
9794
|
globalDevices[deviceAddr] = {
|
|
8169
9795
|
// stream_size: expected_packets,
|
|
@@ -8173,7 +9799,7 @@ function sensor_types(parent){
|
|
|
8173
9799
|
fsr: fsr,
|
|
8174
9800
|
hour: hour,
|
|
8175
9801
|
minute: minute,
|
|
8176
|
-
|
|
9802
|
+
temperature: temperature,
|
|
8177
9803
|
}
|
|
8178
9804
|
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
8179
9805
|
return;
|
|
@@ -8187,7 +9813,7 @@ function sensor_types(parent){
|
|
|
8187
9813
|
var mode = payload[8];
|
|
8188
9814
|
var odr = msbLsb(payload[9], payload[10]);
|
|
8189
9815
|
var fsr = payload[11] >> 5;
|
|
8190
|
-
var
|
|
9816
|
+
var temperature = msbLsb(payload[14], payload[15])/100;
|
|
8191
9817
|
|
|
8192
9818
|
globalDevices[deviceAddr] = {
|
|
8193
9819
|
// stream_size: expected_packets,
|
|
@@ -8197,7 +9823,7 @@ function sensor_types(parent){
|
|
|
8197
9823
|
fsr: fsr,
|
|
8198
9824
|
hour: hour,
|
|
8199
9825
|
minute: minute,
|
|
8200
|
-
|
|
9826
|
+
temperature: temperature,
|
|
8201
9827
|
}
|
|
8202
9828
|
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
8203
9829
|
}
|
|
@@ -8282,7 +9908,7 @@ function sensor_types(parent){
|
|
|
8282
9908
|
mac_address: deviceAddr,
|
|
8283
9909
|
fsr: fsr_text,
|
|
8284
9910
|
odr: globalDevices[deviceAddr].odr,
|
|
8285
|
-
|
|
9911
|
+
temperature: globalDevices[deviceAddr].temperature,
|
|
8286
9912
|
total_samples: label,
|
|
8287
9913
|
data: fft_concat
|
|
8288
9914
|
};
|
|
@@ -8302,7 +9928,7 @@ function sensor_types(parent){
|
|
|
8302
9928
|
var mode = payload[8];
|
|
8303
9929
|
var odr = msbLsb(payload[9], payload[10]);
|
|
8304
9930
|
var fsr = payload[11] >> 5;
|
|
8305
|
-
var
|
|
9931
|
+
var temperature = msbLsb(payload[14], payload[15])/100;
|
|
8306
9932
|
|
|
8307
9933
|
globalDevices[deviceAddr] = {
|
|
8308
9934
|
// stream_size: expected_packets,
|
|
@@ -8312,7 +9938,7 @@ function sensor_types(parent){
|
|
|
8312
9938
|
fsr: fsr,
|
|
8313
9939
|
hour: hour,
|
|
8314
9940
|
minute: minute,
|
|
8315
|
-
|
|
9941
|
+
temperature: temperature,
|
|
8316
9942
|
}
|
|
8317
9943
|
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
8318
9944
|
return;
|
|
@@ -8758,7 +10384,79 @@ function sensor_types(parent){
|
|
|
8758
10384
|
frame_data.auto_raw_interval = typeof frame_data.auto_raw_interval === 'number' ? frame_data.auto_raw_interval+'min' : frame_data.auto_raw_interval;
|
|
8759
10385
|
frame_data.p1_smart_mode_threshold = frame[38] * 50;
|
|
8760
10386
|
frame_data.p2_smart_mode_threshold = frame[39] * 50;
|
|
8761
|
-
if(frame[2] >
|
|
10387
|
+
if(frame[2] > 5){ // for Firmware v6 and above
|
|
10388
|
+
frame_data.motion_to_delay = frame[50] * 50;
|
|
10389
|
+
return {
|
|
10390
|
+
'firmware': frame[2],
|
|
10391
|
+
'destination_address': toMac(frame.slice(12, 16)),
|
|
10392
|
+
'mode': frame_data.mode,
|
|
10393
|
+
'odr_1': frame_data.odr_1+'Hz',
|
|
10394
|
+
'odr_2': frame_data.odr_2+'Hz',
|
|
10395
|
+
'sampling_duration_1': frame_data.sampling_duration_1,
|
|
10396
|
+
'sampling_duration_2': frame_data.sampling_duration_2,
|
|
10397
|
+
'filter_status': frame_data.filter_status,
|
|
10398
|
+
'lpf_coeff_1': frame_data.lpf_coeff_1,
|
|
10399
|
+
'lpf_freq_1': frame_data.lpf_freq_1+'Hz',
|
|
10400
|
+
'lpf_coeff_2': frame_data.lpf_coeff_2,
|
|
10401
|
+
'lpf_freq_2': frame_data.lpf_freq_2+'Hz',
|
|
10402
|
+
'hpf_coeff_1': frame_data.hpf_coeff_1,
|
|
10403
|
+
'hpf_freq_1': frame_data.hpf_freq_1+'Hz',
|
|
10404
|
+
'hpf_coeff_2': frame_data.hpf_coeff_2,
|
|
10405
|
+
'hpf_freq_2': frame_data.hpf_freq_2+'Hz',
|
|
10406
|
+
'sampling_interval': frame_data.sampling_interval,
|
|
10407
|
+
'on_request_timeout': frame_data.on_request_timeout,
|
|
10408
|
+
'deadband': frame_data.deadband,
|
|
10409
|
+
'payload_length': frame_data.payload_length,
|
|
10410
|
+
'fsr': frame_data.fsr_text,
|
|
10411
|
+
'rpm_compute_status': frame_data.rpm_status,
|
|
10412
|
+
'auto_raw_destination_address': toMac(frame.slice(32 , 36)),
|
|
10413
|
+
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
10414
|
+
'smart_mode_skip_count': frame[37],
|
|
10415
|
+
'smart_mode_acc_threshold_probe_1': frame_data.p1_smart_mode_threshold+'mg',
|
|
10416
|
+
'smart_mode_acc_threshold_probe_2': frame_data.p2_smart_mode_threshold+'mg',
|
|
10417
|
+
'uptime_counter_probe_1': frame.slice(40, 44).reduce(msbLsb)+'sec',
|
|
10418
|
+
'uptime_counter_probe_2': frame.slice(44, 48).reduce(msbLsb)+'sec',
|
|
10419
|
+
'max_tx_raw_samples': frame.slice(48, 50).reduce(msbLsb),
|
|
10420
|
+
'motion_to_sampling_delay': frame_data.motion_to_delay +'msec',
|
|
10421
|
+
'max_num_of_motion_tx_per_interval': frame[51],
|
|
10422
|
+
'hardware_id': frame.slice(52, 55),
|
|
10423
|
+
'reserved': frame.slice(55, 59),
|
|
10424
|
+
'tx_lifetime_counter': frame.slice(59, 63).reduce(msbLsb),
|
|
10425
|
+
'machine_values': {
|
|
10426
|
+
'firmware': frame[2],
|
|
10427
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
10428
|
+
'mode': frame[16],
|
|
10429
|
+
'odr_1': frame[17],
|
|
10430
|
+
'odr_2': frame[18],
|
|
10431
|
+
'sampling_duration_1': frame[19],
|
|
10432
|
+
'sampling_duration_2': frame[20],
|
|
10433
|
+
'filter_status': frame[21],
|
|
10434
|
+
'lpf_coeff_1': frame[22],
|
|
10435
|
+
'lpf_coeff_2': frame[23],
|
|
10436
|
+
'hpf_coeff_1': frame[24],
|
|
10437
|
+
'hpf_coeff_2': frame[25],
|
|
10438
|
+
'sampling_interval': frame[26],
|
|
10439
|
+
'on_request_timeout': frame[27],
|
|
10440
|
+
'deadband': frame[28],
|
|
10441
|
+
'payload_length': frame[29],
|
|
10442
|
+
'fsm': frame[30],
|
|
10443
|
+
'rpm_compute_status': frame[31],
|
|
10444
|
+
'auto_raw_destination_address': toMac(frame.slice(32 , 36), false),
|
|
10445
|
+
'auto_raw_interval': frame[36],
|
|
10446
|
+
'smart_mode_skip_count': frame[37],
|
|
10447
|
+
'smart_mode_acc_threshold_probe_1':frame[38],
|
|
10448
|
+
'smart_mode_acc_threshold_probe_2':frame[39],
|
|
10449
|
+
'uptime_counter_probe_1': frame.slice(40, 44),
|
|
10450
|
+
'uptime_counter_probe_2': frame.slice(44, 48),
|
|
10451
|
+
'max_tx_raw_samples': frame.slice(48, 50),
|
|
10452
|
+
'motion_to_sampling_delay': frame[50],
|
|
10453
|
+
'max_num_of_motion_tx_per_interval': frame[51],
|
|
10454
|
+
'hardware_id': frame.slice(52, 55),
|
|
10455
|
+
'reserved': frame.slice(55, 59),
|
|
10456
|
+
'tx_lifetime_counter': frame.slice(59, 63)
|
|
10457
|
+
}
|
|
10458
|
+
}
|
|
10459
|
+
} else if (frame[2] > 4){ // for Firmware v5 and above
|
|
8762
10460
|
return {
|
|
8763
10461
|
'firmware': frame[2],
|
|
8764
10462
|
'destination_address': toMac(frame.slice(12, 16)),
|
|
@@ -8942,7 +10640,7 @@ function sensor_types(parent){
|
|
|
8942
10640
|
var mode = payload[8];
|
|
8943
10641
|
var odr = msbLsb(payload[9], payload[10]);
|
|
8944
10642
|
var fsr = payload[11] >> 5;
|
|
8945
|
-
var
|
|
10643
|
+
var temperature = msbLsb(payload[14], payload[15])/100;
|
|
8946
10644
|
|
|
8947
10645
|
globalDevices[deviceAddr] = {
|
|
8948
10646
|
// stream_size: expected_packets,
|
|
@@ -8952,7 +10650,7 @@ function sensor_types(parent){
|
|
|
8952
10650
|
fsr: fsr,
|
|
8953
10651
|
hour: hour,
|
|
8954
10652
|
minute: minute,
|
|
8955
|
-
|
|
10653
|
+
temperature: temperature,
|
|
8956
10654
|
}
|
|
8957
10655
|
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
8958
10656
|
return;
|
|
@@ -8966,7 +10664,7 @@ function sensor_types(parent){
|
|
|
8966
10664
|
var mode = payload[8];
|
|
8967
10665
|
var odr = msbLsb(payload[9], payload[10]);
|
|
8968
10666
|
var fsr = payload[11] >> 5;
|
|
8969
|
-
var
|
|
10667
|
+
var temperature = msbLsb(payload[14], payload[15])/100;
|
|
8970
10668
|
|
|
8971
10669
|
globalDevices[deviceAddr] = {
|
|
8972
10670
|
// stream_size: expected_packets,
|
|
@@ -8976,7 +10674,7 @@ function sensor_types(parent){
|
|
|
8976
10674
|
fsr: fsr,
|
|
8977
10675
|
hour: hour,
|
|
8978
10676
|
minute: minute,
|
|
8979
|
-
|
|
10677
|
+
temperature: temperature,
|
|
8980
10678
|
}
|
|
8981
10679
|
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
8982
10680
|
}
|
|
@@ -9048,7 +10746,7 @@ function sensor_types(parent){
|
|
|
9048
10746
|
mac_address: deviceAddr,
|
|
9049
10747
|
fsr: fsr_text,
|
|
9050
10748
|
odr: globalDevices[deviceAddr].odr,
|
|
9051
|
-
|
|
10749
|
+
temperature: globalDevices[deviceAddr].temperature,
|
|
9052
10750
|
total_samples: label,
|
|
9053
10751
|
data: fft_concat
|
|
9054
10752
|
};
|
|
@@ -9073,7 +10771,7 @@ function sensor_types(parent){
|
|
|
9073
10771
|
var mode = payload[8];
|
|
9074
10772
|
var odr = msbLsb(payload[9], payload[10]);
|
|
9075
10773
|
var fsr = payload[11] >> 5;
|
|
9076
|
-
var
|
|
10774
|
+
var temperature = msbLsb(payload[14], payload[15])/100;
|
|
9077
10775
|
|
|
9078
10776
|
globalDevices[deviceAddr] = {
|
|
9079
10777
|
// stream_size: expected_packets,
|
|
@@ -9083,7 +10781,7 @@ function sensor_types(parent){
|
|
|
9083
10781
|
fsr: fsr,
|
|
9084
10782
|
hour: hour,
|
|
9085
10783
|
minute: minute,
|
|
9086
|
-
|
|
10784
|
+
temperature: temperature,
|
|
9087
10785
|
}
|
|
9088
10786
|
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
9089
10787
|
return;
|
|
@@ -9360,7 +11058,65 @@ function sensor_types(parent){
|
|
|
9360
11058
|
frame_data.auto_raw_interval = frame[32] * frame_data.sampling_interval_number || 'disabled';
|
|
9361
11059
|
frame_data.auto_raw_interval = typeof frame_data.auto_raw_interval === 'number' ? frame_data.auto_raw_interval+'min' : frame_data.auto_raw_interval;
|
|
9362
11060
|
frame_data.smart_mode_threshold = frame[34] * 50;
|
|
9363
|
-
if(frame[2] >
|
|
11061
|
+
if(frame[2] > 5){ // for Firmware v6 and above
|
|
11062
|
+
frame_data.motion_to_delay = frame[41] * 50;
|
|
11063
|
+
return {
|
|
11064
|
+
'firmware': frame[2],
|
|
11065
|
+
'destination_address': toMac(frame.slice(12, 16)),
|
|
11066
|
+
'mode': frame_data.mode,
|
|
11067
|
+
'odr': frame_data.odr_1+'Hz',
|
|
11068
|
+
'sampling_duration': frame_data.sampling_duration_1,
|
|
11069
|
+
'filter_status': frame_data.filter_status,
|
|
11070
|
+
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
11071
|
+
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
11072
|
+
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
11073
|
+
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
11074
|
+
'sampling_interval': frame_data.sampling_interval,
|
|
11075
|
+
'on_request_timeout': frame_data.on_request_timeout,
|
|
11076
|
+
'deadband': frame_data.deadband,
|
|
11077
|
+
'payload_length': frame_data.payload_length,
|
|
11078
|
+
'fsr': frame_data.fsr_text,
|
|
11079
|
+
'rpm_compute_status': frame_data.rpm_status,
|
|
11080
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
11081
|
+
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
11082
|
+
'smart_mode_skip_count': frame[33],
|
|
11083
|
+
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
11084
|
+
'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
|
|
11085
|
+
'max_tx_raw_samples': frame.slice(39, 41).reduce(msbLsb),
|
|
11086
|
+
'motion_to_sampling_delay': frame_data.motion_to_delay +'msec',
|
|
11087
|
+
'max_num_of_motion_tx_per_interval': frame[42],
|
|
11088
|
+
'hardware_id': frame.slice(43, 46),
|
|
11089
|
+
'reserved': frame.slice(46, 50),
|
|
11090
|
+
'tx_lifetime_counter': frame.slice(50, 54).reduce(msbLsb),
|
|
11091
|
+
'machine_values': {
|
|
11092
|
+
'firmware': frame[2],
|
|
11093
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
11094
|
+
'mode': frame[16],
|
|
11095
|
+
'odr': frame[17],
|
|
11096
|
+
'sampling_duration': frame[18],
|
|
11097
|
+
'filter_status': frame[19],
|
|
11098
|
+
'lpf_coeff': frame[20],
|
|
11099
|
+
'hpf_coeff': frame[21],
|
|
11100
|
+
'sampling_interval': frame[22],
|
|
11101
|
+
'on_request_timeout': frame[23],
|
|
11102
|
+
'deadband': frame[24],
|
|
11103
|
+
'payload_length': frame[25],
|
|
11104
|
+
'fsr': frame[26],
|
|
11105
|
+
'rpm_compute_status': frame[27],
|
|
11106
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
|
|
11107
|
+
'auto_raw_interval': frame[32],
|
|
11108
|
+
'smart_mode_skip_count': frame[33],
|
|
11109
|
+
'smart_mode_acc_threshold':frame[34],
|
|
11110
|
+
'uptime_counter': frame.slice(35, 39),
|
|
11111
|
+
'max_tx_raw_samples': frame.slice(39, 41),
|
|
11112
|
+
'motion_to_sampling_delay': frame[41],
|
|
11113
|
+
'max_num_of_motion_tx_per_interval': frame[42],
|
|
11114
|
+
'hardware_id': frame.slice(43, 46),
|
|
11115
|
+
'reserved': frame.slice(46, 50),
|
|
11116
|
+
'tx_lifetime_counter': frame.slice(50, 54)
|
|
11117
|
+
}
|
|
11118
|
+
}
|
|
11119
|
+
} else if(frame[2] > 4){ // for Firmware v5 and above
|
|
9364
11120
|
return {
|
|
9365
11121
|
'firmware': frame[2],
|
|
9366
11122
|
'destination_address': toMac(frame.slice(12, 16)),
|
|
@@ -9500,7 +11256,7 @@ function sensor_types(parent){
|
|
|
9500
11256
|
var mode = payload[8];
|
|
9501
11257
|
var odr = msbLsb(payload[9], payload[10]);
|
|
9502
11258
|
var fsr = payload[11] >> 5;
|
|
9503
|
-
var
|
|
11259
|
+
var temperature = msbLsb(payload[14], payload[15])/100;
|
|
9504
11260
|
|
|
9505
11261
|
globalDevices[deviceAddr] = {
|
|
9506
11262
|
data: {},
|
|
@@ -9509,7 +11265,7 @@ function sensor_types(parent){
|
|
|
9509
11265
|
fsr: fsr,
|
|
9510
11266
|
hour: hour,
|
|
9511
11267
|
minute: minute,
|
|
9512
|
-
|
|
11268
|
+
temperature: temperature,
|
|
9513
11269
|
}
|
|
9514
11270
|
globalDevices[deviceAddr].last_packet_counter = current_packet;
|
|
9515
11271
|
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
@@ -9524,7 +11280,7 @@ function sensor_types(parent){
|
|
|
9524
11280
|
var mode = payload[8];
|
|
9525
11281
|
var odr = msbLsb(payload[9], payload[10]);
|
|
9526
11282
|
var fsr = payload[11] >> 5;
|
|
9527
|
-
var
|
|
11283
|
+
var temperature = msbLsb(payload[14], payload[15])/100;
|
|
9528
11284
|
|
|
9529
11285
|
globalDevices[deviceAddr] = {
|
|
9530
11286
|
data: {},
|
|
@@ -9533,7 +11289,7 @@ function sensor_types(parent){
|
|
|
9533
11289
|
fsr: fsr,
|
|
9534
11290
|
hour: hour,
|
|
9535
11291
|
minute: minute,
|
|
9536
|
-
|
|
11292
|
+
temperature: temperature,
|
|
9537
11293
|
}
|
|
9538
11294
|
globalDevices[deviceAddr].last_packet_counter = current_packet;
|
|
9539
11295
|
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
@@ -9543,7 +11299,7 @@ function sensor_types(parent){
|
|
|
9543
11299
|
var mode = payload[8];
|
|
9544
11300
|
var odr = msbLsb(payload[9], payload[10]);
|
|
9545
11301
|
var fsr = payload[11] >> 5;
|
|
9546
|
-
var
|
|
11302
|
+
var temperature = msbLsb(payload[14], payload[15])/100;
|
|
9547
11303
|
|
|
9548
11304
|
globalDevices[deviceAddr] = {
|
|
9549
11305
|
data: {},
|
|
@@ -9552,7 +11308,7 @@ function sensor_types(parent){
|
|
|
9552
11308
|
fsr: fsr,
|
|
9553
11309
|
hour: hour,
|
|
9554
11310
|
minute: minute,
|
|
9555
|
-
|
|
11311
|
+
temperature: temperature,
|
|
9556
11312
|
}
|
|
9557
11313
|
globalDevices[deviceAddr].last_packet_counter = current_packet;
|
|
9558
11314
|
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
@@ -9626,7 +11382,7 @@ function sensor_types(parent){
|
|
|
9626
11382
|
mac_address: deviceAddr,
|
|
9627
11383
|
fsr: fsr_text,
|
|
9628
11384
|
odr: globalDevices[deviceAddr].odr,
|
|
9629
|
-
|
|
11385
|
+
temperature: globalDevices[deviceAddr].temperature,
|
|
9630
11386
|
total_samples: label,
|
|
9631
11387
|
fft_confidence : ((Object.keys(globalDevices[deviceAddr].data).length / expected_packets) * 100).toFixed(2) + '%',
|
|
9632
11388
|
data: fft_concat
|
|
@@ -9909,7 +11665,65 @@ function sensor_types(parent){
|
|
|
9909
11665
|
frame_data.auto_raw_interval = frame[32] * frame_data.sampling_interval_number || 'disabled';
|
|
9910
11666
|
frame_data.auto_raw_interval = typeof frame_data.auto_raw_interval === 'number' ? frame_data.auto_raw_interval+'min' : frame_data.auto_raw_interval;
|
|
9911
11667
|
frame_data.smart_mode_threshold = frame[34] * 50;
|
|
9912
|
-
if(frame[2] >
|
|
11668
|
+
if(frame[2] > 5){ // for Firmware v6 and above
|
|
11669
|
+
frame_data.motion_to_delay = frame[41] * 50;
|
|
11670
|
+
return {
|
|
11671
|
+
'firmware': frame[2],
|
|
11672
|
+
'destination_address': toMac(frame.slice(12, 16)),
|
|
11673
|
+
'mode': frame_data.mode,
|
|
11674
|
+
'odr': frame_data.odr_1+'Hz',
|
|
11675
|
+
'sampling_duration': frame_data.sampling_duration_1,
|
|
11676
|
+
'filter_status': frame_data.filter_status,
|
|
11677
|
+
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
11678
|
+
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
11679
|
+
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
11680
|
+
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
11681
|
+
'sampling_interval': frame_data.sampling_interval,
|
|
11682
|
+
'on_request_timeout': frame_data.on_request_timeout,
|
|
11683
|
+
'deadband': frame_data.deadband,
|
|
11684
|
+
'payload_length': frame_data.payload_length,
|
|
11685
|
+
'fsr': frame_data.fsr_text,
|
|
11686
|
+
'rpm_compute_status': frame_data.rpm_status,
|
|
11687
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
11688
|
+
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
11689
|
+
'smart_mode_skip_count': frame[33],
|
|
11690
|
+
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
11691
|
+
'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
|
|
11692
|
+
'max_tx_raw_samples': frame.slice(39, 41).reduce(msbLsb),
|
|
11693
|
+
'motion_to_sampling_delay': frame_data.motion_to_delay +'msec',
|
|
11694
|
+
'max_num_of_motion_tx_per_interval': frame[42],
|
|
11695
|
+
'hardware_id': frame.slice(43, 46),
|
|
11696
|
+
'reserved': frame.slice(46, 50),
|
|
11697
|
+
'tx_lifetime_counter': frame.slice(50, 54).reduce(msbLsb),
|
|
11698
|
+
'machine_values': {
|
|
11699
|
+
'firmware': frame[2],
|
|
11700
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
11701
|
+
'mode': frame[16],
|
|
11702
|
+
'odr': frame[17],
|
|
11703
|
+
'sampling_duration': frame[18],
|
|
11704
|
+
'filter_status': frame[19],
|
|
11705
|
+
'lpf_coeff': frame[20],
|
|
11706
|
+
'hpf_coeff': frame[21],
|
|
11707
|
+
'sampling_interval': frame[22],
|
|
11708
|
+
'on_request_timeout': frame[23],
|
|
11709
|
+
'deadband': frame[24],
|
|
11710
|
+
'payload_length': frame[25],
|
|
11711
|
+
'fsr': frame[26],
|
|
11712
|
+
'rpm_compute_status': frame[27],
|
|
11713
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
|
|
11714
|
+
'auto_raw_interval': frame[32],
|
|
11715
|
+
'smart_mode_skip_count': frame[33],
|
|
11716
|
+
'smart_mode_acc_threshold':frame[34],
|
|
11717
|
+
'uptime_counter': frame.slice(35, 39),
|
|
11718
|
+
'max_tx_raw_samples': frame.slice(39, 41),
|
|
11719
|
+
'motion_to_sampling_delay': frame[41],
|
|
11720
|
+
'max_num_of_motion_tx_per_interval': frame[42],
|
|
11721
|
+
'hardware_id': frame.slice(43, 46),
|
|
11722
|
+
'reserved': frame.slice(46, 50),
|
|
11723
|
+
'tx_lifetime_counter': frame.slice(50, 54)
|
|
11724
|
+
}
|
|
11725
|
+
}
|
|
11726
|
+
} else if(frame[2] > 4){ // for Firmware v5 and above
|
|
9913
11727
|
return {
|
|
9914
11728
|
'firmware': frame[2],
|
|
9915
11729
|
'destination_address': toMac(frame.slice(12, 16)),
|
|
@@ -10045,7 +11859,7 @@ function sensor_types(parent){
|
|
|
10045
11859
|
var firmware = payload[1];
|
|
10046
11860
|
var odr = msbLsb(payload[10], payload[11]);
|
|
10047
11861
|
var fsr = payload[12];
|
|
10048
|
-
var
|
|
11862
|
+
var temperature = msbLsb(payload[13], payload[14])/100;
|
|
10049
11863
|
var expected_packets = msbLsb(payload[15], payload[16]);
|
|
10050
11864
|
var current_packet = msbLsb(payload[17], payload[18]);
|
|
10051
11865
|
var sdata_start = 19;
|
|
@@ -10211,21 +12025,30 @@ function sensor_types(parent){
|
|
|
10211
12025
|
|
|
10212
12026
|
odr: payload.slice(10, 12).reduce(msbLsb),
|
|
10213
12027
|
temperature: signInt(payload.slice(12, 14).reduce(msbLsb), 16) / 100,
|
|
10214
|
-
|
|
10215
|
-
|
|
10216
|
-
|
|
10217
|
-
|
|
10218
|
-
|
|
10219
|
-
|
|
10220
|
-
|
|
10221
|
-
|
|
10222
|
-
|
|
10223
|
-
|
|
10224
|
-
|
|
10225
|
-
|
|
10226
|
-
|
|
10227
|
-
|
|
10228
|
-
|
|
12028
|
+
|
|
12029
|
+
x_max_acceleration: payload.slice(14, 16).reduce(msbLsb),
|
|
12030
|
+
x_rms_acceleration: payload.slice(16, 18).reduce(msbLsb),
|
|
12031
|
+
x_max_velocity: payload.slice(18, 20).reduce(msbLsb) / 100,
|
|
12032
|
+
x_rms_velocity:payload.slice(20, 22).reduce(msbLsb) / 100,
|
|
12033
|
+
x_peak_one_Hz: payload.slice(22, 24).reduce(msbLsb),
|
|
12034
|
+
x_peak_two_Hz: payload.slice(24, 26).reduce(msbLsb),
|
|
12035
|
+
x_peak_three_Hz: payload.slice(26, 28).reduce(msbLsb),
|
|
12036
|
+
|
|
12037
|
+
y_max_acceleration: payload.slice(28, 30).reduce(msbLsb),
|
|
12038
|
+
y_rms_acceleration: payload.slice(30, 32).reduce(msbLsb),
|
|
12039
|
+
y_max_velocity: payload.slice(32, 34).reduce(msbLsb) / 100,
|
|
12040
|
+
y_rms_velocity:payload.slice(34, 36).reduce(msbLsb) / 100,
|
|
12041
|
+
y_peak_one_Hz: payload.slice(36, 38).reduce(msbLsb),
|
|
12042
|
+
y_peak_two_Hz: payload.slice(38, 40).reduce(msbLsb),
|
|
12043
|
+
y_peak_three_Hz: payload.slice(40, 42).reduce(msbLsb),
|
|
12044
|
+
|
|
12045
|
+
z_max_acceleration: payload.slice(42, 44).reduce(msbLsb),
|
|
12046
|
+
z_rms_acceleration: payload.slice(44, 46).reduce(msbLsb),
|
|
12047
|
+
z_max_velocity: payload.slice(46, 48).reduce(msbLsb) / 100,
|
|
12048
|
+
z_rms_velocity:payload.slice(48, 50).reduce(msbLsb) / 100,
|
|
12049
|
+
z_peak_one_Hz: payload.slice(50, 52).reduce(msbLsb),
|
|
12050
|
+
z_peak_two_Hz: payload.slice(52, 54).reduce(msbLsb),
|
|
12051
|
+
z_peak_three_Hz: payload.slice(54, 56).reduce(msbLsb),
|
|
10229
12052
|
};
|
|
10230
12053
|
}
|
|
10231
12054
|
// else{
|
|
@@ -10235,17 +12058,19 @@ function sensor_types(parent){
|
|
|
10235
12058
|
},
|
|
10236
12059
|
'parse_fly': (frame) => {
|
|
10237
12060
|
return {
|
|
10238
|
-
'fly_rate': frame.slice(12,
|
|
12061
|
+
'fly_rate': frame.slice(12, 14).reduce(msbLsb) + " Min.",
|
|
10239
12062
|
'fsr': frame[14],
|
|
10240
|
-
'
|
|
10241
|
-
'
|
|
10242
|
-
'
|
|
12063
|
+
'deadband': frame[15],
|
|
12064
|
+
'hardware_id': frame.slice(16, 19),
|
|
12065
|
+
'report_rate': frame.slice(19, 23).reduce(msbLsb) + " Sec.",
|
|
12066
|
+
'tx_lifetime_counter': frame.slice(23, 27).reduce(msbLsb),
|
|
10243
12067
|
'machine_values': {
|
|
10244
|
-
'fly_rate': frame.slice(12,
|
|
12068
|
+
'fly_rate': frame.slice(12, 14),
|
|
10245
12069
|
'fsr':frame[14],
|
|
10246
|
-
'
|
|
10247
|
-
'
|
|
10248
|
-
'
|
|
12070
|
+
'deadband': frame[15],
|
|
12071
|
+
'hardware_id': frame.slice(16, 19),
|
|
12072
|
+
'report_rate': frame.slice(19, 23),
|
|
12073
|
+
'tx_lifetime_counter': frame.slice(23, 27)
|
|
10249
12074
|
}
|
|
10250
12075
|
}
|
|
10251
12076
|
}
|
|
@@ -10402,25 +12227,62 @@ function sensor_types(parent){
|
|
|
10402
12227
|
let frame_data = {};
|
|
10403
12228
|
switch(frame[16]){
|
|
10404
12229
|
case 0:
|
|
10405
|
-
frame_data.fsr = "+-
|
|
10406
|
-
|
|
12230
|
+
frame_data.fsr = "+-6.114 V";
|
|
12231
|
+
break;
|
|
10407
12232
|
case 1:
|
|
10408
|
-
frame_data.fsr = "+-
|
|
10409
|
-
|
|
12233
|
+
frame_data.fsr = "+-4.096 V";
|
|
12234
|
+
break;
|
|
10410
12235
|
case 2:
|
|
10411
|
-
frame_data.fsr = "+-1.024 V";
|
|
10412
|
-
break;
|
|
10413
|
-
case 3:
|
|
10414
12236
|
frame_data.fsr = "+-2.048 V";
|
|
10415
|
-
|
|
12237
|
+
break;
|
|
12238
|
+
case 3:
|
|
12239
|
+
frame_data.fsr = "+-1.024 V";
|
|
12240
|
+
break;
|
|
10416
12241
|
case 4:
|
|
10417
|
-
frame_data.fsr = "+-
|
|
10418
|
-
|
|
12242
|
+
frame_data.fsr = "+-0.512 V";
|
|
12243
|
+
break;
|
|
10419
12244
|
case 5:
|
|
10420
|
-
frame_data.fsr = "+-
|
|
10421
|
-
|
|
12245
|
+
frame_data.fsr = "+-0.256 V";
|
|
12246
|
+
break;
|
|
10422
12247
|
}
|
|
10423
|
-
if(frame[2]>
|
|
12248
|
+
if(frame[2]>13){ // firmware 14 and above
|
|
12249
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
12250
|
+
if(!auto_check_interval){
|
|
12251
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
12252
|
+
}else{
|
|
12253
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
12254
|
+
}
|
|
12255
|
+
return {
|
|
12256
|
+
'firmware': frame[2],
|
|
12257
|
+
'fsr': frame_data.fsr,
|
|
12258
|
+
'boot_time': frame[17] + " sec",
|
|
12259
|
+
'power_adc': frame.slice(18, 20).reduce(msbLsb),
|
|
12260
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
12261
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
12262
|
+
'always_on': frame_data[24] ? 'Enabled' : 'Disabled',
|
|
12263
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
12264
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
12265
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
12266
|
+
'hardware_id': frame.slice(37, 40),
|
|
12267
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
12268
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
12269
|
+
'machine_values': {
|
|
12270
|
+
'firmware': frame[2],
|
|
12271
|
+
'fsr': frame[16],
|
|
12272
|
+
'boot_time': frame[17],
|
|
12273
|
+
'power_adc': frame.slice(18, 20),
|
|
12274
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
12275
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
12276
|
+
'always_on': frame[24],
|
|
12277
|
+
'calibration_one': frame.slice(25, 29),
|
|
12278
|
+
'calibration_two':frame.slice(29, 33),
|
|
12279
|
+
'calibration_three':frame.slice(33, 37),
|
|
12280
|
+
'hardware_id': frame.slice(37, 40),
|
|
12281
|
+
'report_rate': frame.slice(40, 44),
|
|
12282
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
12283
|
+
}
|
|
12284
|
+
}
|
|
12285
|
+
}else if(frame[2]>12){
|
|
10424
12286
|
return {
|
|
10425
12287
|
'firmware': frame[2],
|
|
10426
12288
|
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
@@ -10453,6 +12315,155 @@ function sensor_types(parent){
|
|
|
10453
12315
|
}
|
|
10454
12316
|
}
|
|
10455
12317
|
},
|
|
12318
|
+
'123': {
|
|
12319
|
+
name: '3 Channel Production Counter',
|
|
12320
|
+
parse: (d, payload) => {
|
|
12321
|
+
if(payload[7] & 2 != 0){
|
|
12322
|
+
console.log('Error found');
|
|
12323
|
+
// parsed.data = {error: 'Error found, Acclerometer Probe may be unattached'};
|
|
12324
|
+
let error = {error: 'Error found, Acclerometer Probe may be unattached'};
|
|
12325
|
+
return error;
|
|
12326
|
+
}
|
|
12327
|
+
let report_type = "Regular";
|
|
12328
|
+
switch(d[25]){
|
|
12329
|
+
case 0:
|
|
12330
|
+
report_type = "Regular";
|
|
12331
|
+
break;
|
|
12332
|
+
case 1:
|
|
12333
|
+
report_type = "Shift end";
|
|
12334
|
+
break;
|
|
12335
|
+
case 2:
|
|
12336
|
+
report_type = "Interrupt";
|
|
12337
|
+
break;
|
|
12338
|
+
case 3:
|
|
12339
|
+
report_type = "Threshold";
|
|
12340
|
+
break;
|
|
12341
|
+
}
|
|
12342
|
+
return {
|
|
12343
|
+
digital_input_1_counter: d.slice(0, 4).reduce(msbLsb),
|
|
12344
|
+
digital_input_1_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
12345
|
+
digital_input_2_counter: d.slice(8, 12).reduce(msbLsb),
|
|
12346
|
+
digital_input_2_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
12347
|
+
digital_input_3_counter: d.slice(16, 20).reduce(msbLsb),
|
|
12348
|
+
digital_input_3_uptime: d.slice(20, 24).reduce(msbLsb),
|
|
12349
|
+
input_1: d[24] & 1 ? 1 : 0,
|
|
12350
|
+
input_2: d[24] & 2 ? 1 : 0,
|
|
12351
|
+
input_3: d[24] & 4 ? 1 : 0,
|
|
12352
|
+
report_type: report_type,
|
|
12353
|
+
rtc: [
|
|
12354
|
+
String(d[26]).padStart(2, '0'),
|
|
12355
|
+
String(d[27]).padStart(2, '0'),
|
|
12356
|
+
String(d[28]).padStart(2, '0')
|
|
12357
|
+
].join(':')
|
|
12358
|
+
};
|
|
12359
|
+
},
|
|
12360
|
+
'parse_fly': (frame) => {
|
|
12361
|
+
let reset_mode = "Disabled";
|
|
12362
|
+
switch(frame[36]){
|
|
12363
|
+
case 0:
|
|
12364
|
+
reset_mode = "Disabled";
|
|
12365
|
+
break;
|
|
12366
|
+
case 1:
|
|
12367
|
+
reset_mode = "Shift Ends";
|
|
12368
|
+
break;
|
|
12369
|
+
case 2:
|
|
12370
|
+
reset_mode = "Timeout";
|
|
12371
|
+
break;
|
|
12372
|
+
}
|
|
12373
|
+
let rtc_sampling_interval = "5sec";
|
|
12374
|
+
switch(frame[37]){
|
|
12375
|
+
case 0:
|
|
12376
|
+
rtc_sampling_interval = "1min";
|
|
12377
|
+
break;
|
|
12378
|
+
case 1:
|
|
12379
|
+
rtc_sampling_interval = "5min";
|
|
12380
|
+
break;
|
|
12381
|
+
case 2:
|
|
12382
|
+
rtc_sampling_interval = "15min";
|
|
12383
|
+
break;
|
|
12384
|
+
case 3:
|
|
12385
|
+
rtc_sampling_interval = "30min";
|
|
12386
|
+
break;
|
|
12387
|
+
case 4:
|
|
12388
|
+
rtc_sampling_interval = "1h";
|
|
12389
|
+
break;
|
|
12390
|
+
case 5:
|
|
12391
|
+
rtc_sampling_interval = "2h";
|
|
12392
|
+
break;
|
|
12393
|
+
case 6:
|
|
12394
|
+
rtc_sampling_interval = "3h";
|
|
12395
|
+
break;
|
|
12396
|
+
case 7:
|
|
12397
|
+
rtc_sampling_interval = "6h";
|
|
12398
|
+
break;
|
|
12399
|
+
case 8:
|
|
12400
|
+
rtc_sampling_interval = "12h";
|
|
12401
|
+
break;
|
|
12402
|
+
case 9:
|
|
12403
|
+
rtc_sampling_interval = "5sec";
|
|
12404
|
+
break;
|
|
12405
|
+
case 10:
|
|
12406
|
+
rtc_sampling_interval = "10sec";
|
|
12407
|
+
break;
|
|
12408
|
+
case 11:
|
|
12409
|
+
rtc_sampling_interval = "15sec";
|
|
12410
|
+
break;
|
|
12411
|
+
case 12:
|
|
12412
|
+
rtc_sampling_interval = "30sec";
|
|
12413
|
+
break;
|
|
12414
|
+
}
|
|
12415
|
+
return {
|
|
12416
|
+
'firmware': frame[2],
|
|
12417
|
+
'debouncing_timeout': frame.slice(16, 18).reduce(msbLsb) + "msec",
|
|
12418
|
+
'input_1_active_edge': frame[18]? "Rising": "Falling",
|
|
12419
|
+
'input_2_active_edge': frame[19]? "Rising": "Falling",
|
|
12420
|
+
'input_3_active_edge': frame[20]? "Rising": "Falling",
|
|
12421
|
+
'counter_threshold': frame.slice(21, 25).reduce(msbLsb),
|
|
12422
|
+
'trasnmit_on_change_status': frame[25]? "Enabled": "Disabled",
|
|
12423
|
+
'Shift_end_1': [
|
|
12424
|
+
String(frame[26]).padStart(2, '0'),
|
|
12425
|
+
String(frame[27]).padStart(2, '0')
|
|
12426
|
+
].join(':'),
|
|
12427
|
+
'Shift_end_2': [
|
|
12428
|
+
String(frame[28]).padStart(2, '0'),
|
|
12429
|
+
String(frame[29]).padStart(2, '0')
|
|
12430
|
+
].join(':'),
|
|
12431
|
+
'Shift_end_3': [
|
|
12432
|
+
String(frame[30]).padStart(2, '0'),
|
|
12433
|
+
String(frame[31]).padStart(2, '0')
|
|
12434
|
+
].join(':'),
|
|
12435
|
+
'Shift_end_4': [
|
|
12436
|
+
String(frame[32]).padStart(2, '0'),
|
|
12437
|
+
String(frame[33]).padStart(2, '0')
|
|
12438
|
+
].join(':'),
|
|
12439
|
+
'reset_timeout': frame.slice(34, 36).reduce(msbLsb) + "min",
|
|
12440
|
+
'counter_reset_mode': reset_mode,
|
|
12441
|
+
'sampling_interval': rtc_sampling_interval,
|
|
12442
|
+
'hardware_id': frame.slice(38, 41),
|
|
12443
|
+
'report_rate': frame.slice(41, 45).reduce(msbLsb) + "sec",
|
|
12444
|
+
'tx_life_counter': frame.slice(45, 49).reduce(msbLsb),
|
|
12445
|
+
'machine_values': {
|
|
12446
|
+
'firmware': frame[2],
|
|
12447
|
+
'debouncing_timeout': frame.slice(16, 18),
|
|
12448
|
+
'input_1_active_edge': frame[18],
|
|
12449
|
+
'input_2_active_edge': frame[19],
|
|
12450
|
+
'input_3_active_edge': frame[20],
|
|
12451
|
+
'counter_threshold': frame.slice(21, 25),
|
|
12452
|
+
'trasnmit_on_change_status': frame[25],
|
|
12453
|
+
'Shift_end_1': frame.slice(26, 28),
|
|
12454
|
+
'Shift_end_2': frame.slice(28, 30),
|
|
12455
|
+
'Shift_end_3': frame.slice(30, 32),
|
|
12456
|
+
'Shift_end_4': frame.slice(32, 34),
|
|
12457
|
+
'reset_timeout': frame.slice(34, 36),
|
|
12458
|
+
'counter_reset_mode': frame[36],
|
|
12459
|
+
'sampling_interval': frame[37],
|
|
12460
|
+
'hardware_id': frame.slice(38, 41),
|
|
12461
|
+
'report_rate': frame.slice(41, 45),
|
|
12462
|
+
'tx_life_counter': frame.slice(45, 49)
|
|
12463
|
+
}
|
|
12464
|
+
}
|
|
12465
|
+
}
|
|
12466
|
+
},
|
|
10456
12467
|
'180': {
|
|
10457
12468
|
name: 'C1D2 One Channel Vibration Plus',
|
|
10458
12469
|
parse: (payload, parsed, mac) => {
|
|
@@ -10500,6 +12511,59 @@ function sensor_types(parent){
|
|
|
10500
12511
|
};
|
|
10501
12512
|
}
|
|
10502
12513
|
},
|
|
12514
|
+
'211': {
|
|
12515
|
+
name: 'D0 and Flow Sensor',
|
|
12516
|
+
parse: (payload, parsed, mac) => {
|
|
12517
|
+
if(payload[0] == 0){ // regular
|
|
12518
|
+
return {
|
|
12519
|
+
msg_type: 'regular',
|
|
12520
|
+
temperature: signInt(payload.slice(1, 3).reduce(msbLsb), 16),
|
|
12521
|
+
oxygen_saturation_percent: payload.slice(3, 7).reduce(msbLsb),
|
|
12522
|
+
oxygen_ppm: payload.slice(7, 11).reduce(msbLsb),
|
|
12523
|
+
oxygen_mg_l: payload.slice(11, 15).reduce(msbLsb)
|
|
12524
|
+
};
|
|
12525
|
+
}
|
|
12526
|
+
else{ // theshold
|
|
12527
|
+
let solenoid_status = payload[2];
|
|
12528
|
+
if(solenoid_status == 1){ // Solenoid On
|
|
12529
|
+
return {
|
|
12530
|
+
msg_type: 'threshold',
|
|
12531
|
+
solenoid_number: payload[1],
|
|
12532
|
+
solenoid_status: 'on',
|
|
12533
|
+
temperature: signInt(payload.slice(3, 5).reduce(msbLsb), 16),
|
|
12534
|
+
oxygen_saturation_percent: payload.slice(5, 9).reduce(msbLsb),
|
|
12535
|
+
oxygen_ppm: payload.slice(9, 13).reduce(msbLsb),
|
|
12536
|
+
oxygen_mg_l: payload.slice(13, 17).reduce(msbLsb),
|
|
12537
|
+
flow_rate: payload.slice(17, 21).reduce(msbLsb)
|
|
12538
|
+
};
|
|
12539
|
+
} else{ // Solenoid Off
|
|
12540
|
+
return {
|
|
12541
|
+
msg_type: 'threshold',
|
|
12542
|
+
solenoid_number: payload[1],
|
|
12543
|
+
solenoid_status: 'off',
|
|
12544
|
+
temperature: signInt(payload.slice(3, 5).reduce(msbLsb), 16),
|
|
12545
|
+
oxygen_saturation_percent: payload.slice(5, 9).reduce(msbLsb),
|
|
12546
|
+
oxygen_ppm: payload.slice(9, 13).reduce(msbLsb),
|
|
12547
|
+
oxygen_mg_l: payload.slice(13, 17).reduce(msbLsb)
|
|
12548
|
+
};
|
|
12549
|
+
}
|
|
12550
|
+
}
|
|
12551
|
+
},
|
|
12552
|
+
'parse_fly': (frame) => {
|
|
12553
|
+
return {
|
|
12554
|
+
'firmware': frame[2],
|
|
12555
|
+
'hardware_id': frame.slice(12, 15),
|
|
12556
|
+
'report_rate': frame.slice(15, 19).reduce(msbLsb) + "Sec",
|
|
12557
|
+
'tx_life_counter': frame.slice(19, 23).reduce(msbLsb),
|
|
12558
|
+
'machine_values': {
|
|
12559
|
+
'firmware': frame[2],
|
|
12560
|
+
'hardware_id': frame.slice(12, 15),
|
|
12561
|
+
'report_rate': frame.slice(15, 19),
|
|
12562
|
+
'tx_life_counter': frame.slice(19, 23)
|
|
12563
|
+
}
|
|
12564
|
+
}
|
|
12565
|
+
}
|
|
12566
|
+
},
|
|
10503
12567
|
'217': {
|
|
10504
12568
|
name: 'Wireless Weight Scale',
|
|
10505
12569
|
parse: (d) => {
|
|
@@ -10508,6 +12572,68 @@ function sensor_types(parent){
|
|
|
10508
12572
|
};
|
|
10509
12573
|
}
|
|
10510
12574
|
},
|
|
12575
|
+
'270': {
|
|
12576
|
+
name: 'Custom Salinity DO sensor',
|
|
12577
|
+
parse: (d) => {
|
|
12578
|
+
return {
|
|
12579
|
+
sensor_status: d[0],
|
|
12580
|
+
do_temperature_1: d.slice(1, 3).reduce(msbLsb) / 100,
|
|
12581
|
+
do_temperature_2: d.slice(3, 5).reduce(msbLsb) / 100,
|
|
12582
|
+
do_temperature_3: d.slice(5, 7).reduce(msbLsb) / 100,
|
|
12583
|
+
do_temperature_4: d.slice(7, 9).reduce(msbLsb) / 100,
|
|
12584
|
+
ec_temperature_1: d.slice(9, 11).reduce(msbLsb) / 100,
|
|
12585
|
+
ec_temperature_2: d.slice(11, 13).reduce(msbLsb) / 100,
|
|
12586
|
+
ec_temperature_3: d.slice(13, 15).reduce(msbLsb) / 100,
|
|
12587
|
+
ec_temperature_4: d.slice(15, 17).reduce(msbLsb) / 100,
|
|
12588
|
+
do_saturation_perc_1: d.slice(17, 19).reduce(msbLsb) / 100,
|
|
12589
|
+
do_saturation_perc_2: d.slice(19, 21).reduce(msbLsb) / 100,
|
|
12590
|
+
do_saturation_perc_3: d.slice(21, 23).reduce(msbLsb) / 100,
|
|
12591
|
+
do_saturation_perc_4: d.slice(23, 25).reduce(msbLsb) / 100,
|
|
12592
|
+
do_ppm_1: d.slice(25, 27).reduce(msbLsb) / 100,
|
|
12593
|
+
do_ppm_2: d.slice(27, 29).reduce(msbLsb) / 100,
|
|
12594
|
+
do_ppm_3: d.slice(29, 31).reduce(msbLsb) / 100,
|
|
12595
|
+
do_ppm_4: d.slice(31, 33).reduce(msbLsb) / 100,
|
|
12596
|
+
do_mgl_1: d.slice(33, 35).reduce(msbLsb) / 100,
|
|
12597
|
+
do_mgl_2: d.slice(35, 37).reduce(msbLsb) / 100,
|
|
12598
|
+
do_mgl_3: d.slice(37, 39).reduce(msbLsb) / 100,
|
|
12599
|
+
do_mgl_4: d.slice(39, 41).reduce(msbLsb) / 100,
|
|
12600
|
+
ec_conductivity_1: d.slice(41, 43).reduce(msbLsb) / 100,
|
|
12601
|
+
ec_conductivity_2: d.slice(43, 45).reduce(msbLsb) / 100,
|
|
12602
|
+
ec_conductivity_3: d.slice(45, 47).reduce(msbLsb) / 100,
|
|
12603
|
+
ec_conductivity_4: d.slice(47, 49).reduce(msbLsb) / 100,
|
|
12604
|
+
ec_salinity_ppt_1: d.slice(49, 57).reduce(msbLsb) / 100,
|
|
12605
|
+
ec_salinity_ppt_2: d.slice(57, 65).reduce(msbLsb) / 100,
|
|
12606
|
+
ec_salinity_ppt_3: d.slice(65, 73).reduce(msbLsb) / 100,
|
|
12607
|
+
ec_salinity_ppt_4: d.slice(73, 81).reduce(msbLsb) / 100,
|
|
12608
|
+
ec_tds_1: d.slice(81, 85).reduce(msbLsb) / 100,
|
|
12609
|
+
ec_tds_2: d.slice(85, 89).reduce(msbLsb) / 100,
|
|
12610
|
+
ec_tds_3: d.slice(89, 93).reduce(msbLsb) / 100,
|
|
12611
|
+
ec_tds_4: d.slice(93, 97).reduce(msbLsb) / 100
|
|
12612
|
+
};
|
|
12613
|
+
},
|
|
12614
|
+
'parse_fly': (frame) => {
|
|
12615
|
+
return {
|
|
12616
|
+
'firmware': frame[2],
|
|
12617
|
+
'do_bootup_time': frame[12] + "Sec",
|
|
12618
|
+
'ec_bootup_time': frame[13] + "Sec",
|
|
12619
|
+
'device_ids_do_sensors': frame.slice(14, 18),
|
|
12620
|
+
'device_ids_ec_sensors': frame.slice(18, 22),
|
|
12621
|
+
'hardware_id': frame.slice(22, 25),
|
|
12622
|
+
'report_rate': frame.slice(25, 29).reduce(msbLsb) + "Sec",
|
|
12623
|
+
'tx_life_counter': frame.slice(29, 33).reduce(msbLsb),
|
|
12624
|
+
'machine_values': {
|
|
12625
|
+
'firmware': frame[2],
|
|
12626
|
+
'do_bootup_time': frame[12],
|
|
12627
|
+
'ec_bootup_time': frame[13],
|
|
12628
|
+
'device_ids_do_sensors': frame.slice(14, 18),
|
|
12629
|
+
'device_ids_ec_sensors': frame.slice(18, 22),
|
|
12630
|
+
'hardware_id': frame.slice(22, 25),
|
|
12631
|
+
'report_rate': frame.slice(25, 29),
|
|
12632
|
+
'tx_life_counter': frame.slice(29, 33)
|
|
12633
|
+
}
|
|
12634
|
+
}
|
|
12635
|
+
}
|
|
12636
|
+
},
|
|
10511
12637
|
'502': {
|
|
10512
12638
|
name: 'Custom Environmental Sensor',
|
|
10513
12639
|
parse: (d, full) => {
|
|
@@ -12871,6 +14997,149 @@ function sensor_types(parent){
|
|
|
12871
14997
|
ma: d.slice(2, 4).reduce(msbLsb) / 100,
|
|
12872
14998
|
flow_ltr_min: d.slice(4, 8).reduce(msbLsb) / 100
|
|
12873
14999
|
};
|
|
15000
|
+
},
|
|
15001
|
+
'parse_fly': (frame) => {
|
|
15002
|
+
let firmware = frame[2];
|
|
15003
|
+
if(firmware > 13){ // firmware 14 and above
|
|
15004
|
+
let frame_data = {};
|
|
15005
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
15006
|
+
if(!auto_check_interval){
|
|
15007
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
15008
|
+
}else{
|
|
15009
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
15010
|
+
}
|
|
15011
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
15012
|
+
switch(frame[16]){
|
|
15013
|
+
case 0:
|
|
15014
|
+
frame_data.fsr = "+-6.114 V";
|
|
15015
|
+
break;
|
|
15016
|
+
case 1:
|
|
15017
|
+
frame_data.fsr = "+-4.096 V";
|
|
15018
|
+
break;
|
|
15019
|
+
case 2:
|
|
15020
|
+
frame_data.fsr = "+-2.048 V";
|
|
15021
|
+
break;
|
|
15022
|
+
case 3:
|
|
15023
|
+
frame_data.fsr = "+-1.024 V";
|
|
15024
|
+
break;
|
|
15025
|
+
case 4:
|
|
15026
|
+
frame_data.fsr = "+-0.512 V";
|
|
15027
|
+
break;
|
|
15028
|
+
case 5:
|
|
15029
|
+
frame_data.fsr = "+-0.256 V";
|
|
15030
|
+
break;
|
|
15031
|
+
}
|
|
15032
|
+
return {
|
|
15033
|
+
'firmware': frame[2],
|
|
15034
|
+
'fsr': frame_data.fsr,
|
|
15035
|
+
'boot_time': frame[17] + " sec",
|
|
15036
|
+
'power_adc': frame.slice(18, 20).reduce(msbLsb),
|
|
15037
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
15038
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
15039
|
+
'always_on': frame_data.always_on,
|
|
15040
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
15041
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
15042
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
15043
|
+
'hardware_id': frame.slice(37, 40),
|
|
15044
|
+
'report_rate': frame.slice(40, 44).reduce(msbLsb) + " sec",
|
|
15045
|
+
'tx_life_counter': frame.slice(44, 48).reduce(msbLsb),
|
|
15046
|
+
'machine_values': {
|
|
15047
|
+
'firmware': frame[2],
|
|
15048
|
+
'fsr': frame[16],
|
|
15049
|
+
'boot_time': frame[17],
|
|
15050
|
+
'power_adc': frame.slice(18, 20),
|
|
15051
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
15052
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
15053
|
+
'always_on': frame[24],
|
|
15054
|
+
'calibration_one': frame.slice(25, 29),
|
|
15055
|
+
'calibration_two':frame.slice(29, 33),
|
|
15056
|
+
'calibration_three':frame.slice(33, 37),
|
|
15057
|
+
'hardware_id': frame.slice(37, 40),
|
|
15058
|
+
'report_rate': frame.slice(40, 44),
|
|
15059
|
+
'tx_life_counter': frame.slice(44, 48)
|
|
15060
|
+
}
|
|
15061
|
+
}
|
|
15062
|
+
}
|
|
15063
|
+
}
|
|
15064
|
+
},
|
|
15065
|
+
'541': {
|
|
15066
|
+
name: 'Custom Inline Flow Sensor',
|
|
15067
|
+
parse: (d) => {
|
|
15068
|
+
return {
|
|
15069
|
+
adc1: signInt(d.slice(0, 2).reduce(msbLsb)),
|
|
15070
|
+
adc2: signInt(d.slice(2, 4).reduce(msbLsb)),
|
|
15071
|
+
mA1: signInt(d.slice(4, 6).reduce(msbLsb))/100,
|
|
15072
|
+
mA2: signInt(d.slice(6, 8).reduce(msbLsb))/100,
|
|
15073
|
+
flow_1: signInt(d.slice(8, 12).reduce(msbLsb))/100,
|
|
15074
|
+
flow_2:signInt(d.slice(12, 16).reduce(msbLsb))/100
|
|
15075
|
+
};
|
|
15076
|
+
},
|
|
15077
|
+
'parse_fly': (frame) => {
|
|
15078
|
+
let firmware = frame[2];
|
|
15079
|
+
if(firmware > 13){ // firmware 14 and above
|
|
15080
|
+
let frame_data = {};
|
|
15081
|
+
let auto_check_interval = frame.slice(20, 22).reduce(msbLsb);
|
|
15082
|
+
if(!auto_check_interval){
|
|
15083
|
+
frame_data.auto_check_interval = 'Disabled';
|
|
15084
|
+
}else{
|
|
15085
|
+
frame_data.auto_check_interval = auto_check_interval + " sec";
|
|
15086
|
+
}
|
|
15087
|
+
frame_data.always_on = frame[24]?"Enabled":"Disabled";
|
|
15088
|
+
switch(frame[16]){
|
|
15089
|
+
case 0:
|
|
15090
|
+
frame_data.fsr = "+-6.114 V";
|
|
15091
|
+
break;
|
|
15092
|
+
case 1:
|
|
15093
|
+
frame_data.fsr = "+-4.096 V";
|
|
15094
|
+
break;
|
|
15095
|
+
case 2:
|
|
15096
|
+
frame_data.fsr = "+-2.048 V";
|
|
15097
|
+
break;
|
|
15098
|
+
case 3:
|
|
15099
|
+
frame_data.fsr = "+-1.024 V";
|
|
15100
|
+
break;
|
|
15101
|
+
case 4:
|
|
15102
|
+
frame_data.fsr = "+-0.512 V";
|
|
15103
|
+
break;
|
|
15104
|
+
case 5:
|
|
15105
|
+
frame_data.fsr = "+-0.256 V";
|
|
15106
|
+
break;
|
|
15107
|
+
}
|
|
15108
|
+
return {
|
|
15109
|
+
'firmware': frame[2],
|
|
15110
|
+
'fsr': frame_data.fsr,
|
|
15111
|
+
'boot_up_time': frame[17] + " sec",
|
|
15112
|
+
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
15113
|
+
'auto_check_interval': frame_data.auto_check_interval,
|
|
15114
|
+
'auto_check_threshold': frame.slice(22, 24).reduce(msbLsb),
|
|
15115
|
+
'always_on': frame_data.always_on,
|
|
15116
|
+
'calibration_one': frame.slice(25, 29).reduce(msbLsb),
|
|
15117
|
+
'calibration_two':frame.slice(29, 33).reduce(msbLsb),
|
|
15118
|
+
'calibration_three':frame.slice(33, 37).reduce(msbLsb),
|
|
15119
|
+
'min_flow_rate':frame.slice(37, 39).reduce(msbLsb),
|
|
15120
|
+
'max_flow_rate':frame.slice(39, 41).reduce(msbLsb),
|
|
15121
|
+
'hardware_id': frame.slice(41, 44),
|
|
15122
|
+
'report_rate': frame.slice(44, 48).reduce(msbLsb) + " sec",
|
|
15123
|
+
'tx_life_counter': frame.slice(48, 52).reduce(msbLsb),
|
|
15124
|
+
'machine_values': {
|
|
15125
|
+
'firmware': frame[2],
|
|
15126
|
+
'fsr': frame[16],
|
|
15127
|
+
'boot_up_time': frame[17],
|
|
15128
|
+
'adc_pin_reading': frame.slice(18, 20),
|
|
15129
|
+
'auto_check_interval': frame.slice(20, 22),
|
|
15130
|
+
'auto_check_percentage': frame.slice(22, 24),
|
|
15131
|
+
'always_on': frame[24],
|
|
15132
|
+
'calibration_one': frame.slice(25, 29),
|
|
15133
|
+
'calibration_two':frame.slice(29, 33),
|
|
15134
|
+
'calibration_three':frame.slice(33, 37),
|
|
15135
|
+
'min_flow_rate':frame.slice(37, 39),
|
|
15136
|
+
'max_flow_rate':frame.slice(39, 41),
|
|
15137
|
+
'hardware_id': frame.slice(41, 44),
|
|
15138
|
+
'report_rate': frame.slice(44, 48),
|
|
15139
|
+
'tx_life_counter': frame.slice(48, 52),
|
|
15140
|
+
}
|
|
15141
|
+
}
|
|
15142
|
+
}
|
|
12874
15143
|
}
|
|
12875
15144
|
},
|
|
12876
15145
|
'1010': {
|