@ncd-io/node-red-enterprise-sensors 1.2.3 → 1.4.0
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 +1962 -1087
- package/package.json +1 -1
- package/wireless.html +490 -208
- package/wireless.js +319 -34
package/lib/WirelessGateway.js
CHANGED
|
@@ -160,7 +160,7 @@ module.exports = class WirelessSensor{
|
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
// #OTF
|
|
163
|
-
var otf_devices = [4,12,21,23,26,32,33,39,44,45,48,52,53,56,58,74,76,78,79,80,81,82,84,88,89,90,91,97,98,101,102,105,106,107,108,110,111,112,114,118,120,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,180,181,202,217,519,520,521,531,535,537,538,539,540,1010,1011];
|
|
164
164
|
var device_type = msbLsb(frame.data[6], frame.data[7]);
|
|
165
165
|
// var device_type = frame.data[7];
|
|
166
166
|
|
|
@@ -214,12 +214,24 @@ module.exports = class WirelessSensor{
|
|
|
214
214
|
};
|
|
215
215
|
|
|
216
216
|
if(mode === 'FLY' && frame.data.length > 12 && typeof this.sensor_types[data.sensor_type].parse_fly == 'function'){
|
|
217
|
-
|
|
217
|
+
try{
|
|
218
|
+
this.sensor_pool[frame.mac].reported_config = this.sensor_types[data.sensor_type].parse_fly(frame.data);
|
|
219
|
+
} catch(error) {
|
|
220
|
+
console.log('Error detect in parse_fly initiated by FLY message');
|
|
221
|
+
console.log(error);
|
|
222
|
+
this.sensor_pool[frame.mac].reported_config = "Error parsing reported config. See log for details."
|
|
223
|
+
}
|
|
218
224
|
}else if(mode === 'OTF' && frame.data.length > 12 && typeof this.sensor_types[data.sensor_type].parse_fly == 'function'){
|
|
219
225
|
// restructure and add dead bytes to match FLY message so we only need one parser.
|
|
220
226
|
// If we ever need to add any of the additional information of this packet we will need to rebuild to match
|
|
221
|
-
|
|
222
|
-
|
|
227
|
+
try{
|
|
228
|
+
frame.data.splice(2,0,frame.data[5],0);
|
|
229
|
+
this.sensor_pool[frame.mac].reported_config = this.sensor_types[data.sensor_type].parse_fly(frame.data);
|
|
230
|
+
} catch(error){
|
|
231
|
+
console.log('Error detect in parse_fly initiated by OTF message');
|
|
232
|
+
console.log(error);
|
|
233
|
+
this.sensor_pool[frame.mac].reported_config = "Error parsing reported config. See log for details."
|
|
234
|
+
}
|
|
223
235
|
}else if(mode === 'ACK'){
|
|
224
236
|
this.sensor_pool[frame.mac].status = data.result;
|
|
225
237
|
if(data.data.length){
|
|
@@ -322,7 +334,7 @@ module.exports = class WirelessSensor{
|
|
|
322
334
|
};
|
|
323
335
|
|
|
324
336
|
// #OTF
|
|
325
|
-
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,105,106,107,108,110,111,112,114,118,120,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,180,181,202,217,519,520,521,531,535,537,538,539,540,1010,1011];
|
|
326
338
|
if(otf_devices.includes(parsed.sensor_type)){
|
|
327
339
|
// If the message says FLY and there is not FLY timer in progress.
|
|
328
340
|
if(payload[8] == 70 && payload[9] == 76 && payload[10] == 89) {
|
|
@@ -744,7 +756,7 @@ module.exports = class WirelessSensor{
|
|
|
744
756
|
data: payload.slice(8)
|
|
745
757
|
};
|
|
746
758
|
// #OTF
|
|
747
|
-
}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 == 110 || parsed.sensor_type == 111 || parsed.sensor_type == 112 || parsed.sensor_type == 114 || 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 == 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){
|
|
748
760
|
parsed.sensor_data = this.sensor_types[parsed.sensor_type].parse(payload, parsed, frame.mac);
|
|
749
761
|
if(!parsed.sensor_data){
|
|
750
762
|
return;
|
|
@@ -780,6 +792,12 @@ module.exports = class WirelessSensor{
|
|
|
780
792
|
let packet = [245, 58, 0, 0, 0].concat(Array.prototype.slice.call(manifest));
|
|
781
793
|
return this.config_send(sensor_mac, packet);
|
|
782
794
|
}
|
|
795
|
+
firmware_send_manifest_v13(sensor_mac, manifest){
|
|
796
|
+
console.log('firmware_send_manifest_v13');
|
|
797
|
+
// sensor_mac = "00:00:00:00:00:00:ff:ff";
|
|
798
|
+
let packet = [245, 58, 0, 0, 0].concat(Array.prototype.slice.call(manifest));
|
|
799
|
+
return this.firmware_send_v13(sensor_mac, packet, {}, 7000, 70, true);
|
|
800
|
+
}
|
|
783
801
|
firmware_send_chunk(sensor_mac, offset, chunk){
|
|
784
802
|
console.log('firmware_send_chunk');
|
|
785
803
|
// sensor_mac = "00:00:00:00:00:00:ff:ff";
|
|
@@ -1358,6 +1376,12 @@ module.exports = class WirelessSensor{
|
|
|
1358
1376
|
console.log(packet);
|
|
1359
1377
|
return this.config_send(sensor_mac, packet);
|
|
1360
1378
|
}
|
|
1379
|
+
config_set_sample_rate_108(sensor_mac, value){
|
|
1380
|
+
console.log('config_set_sample_rate_108');
|
|
1381
|
+
var packet = [244, 57, 0, 0, 0, value];
|
|
1382
|
+
console.log(packet);
|
|
1383
|
+
return this.config_send(sensor_mac, packet);
|
|
1384
|
+
}
|
|
1361
1385
|
config_set_sample_rate_108(sensor_mac, value){
|
|
1362
1386
|
console.log('config_set_sample_rate_108');
|
|
1363
1387
|
var packet = [244, 57, 0, 0, 0, value];
|
|
@@ -1975,6 +1999,12 @@ module.exports = class WirelessSensor{
|
|
|
1975
1999
|
console.log(packet);
|
|
1976
2000
|
return this.config_send(sensor_mac, packet);
|
|
1977
2001
|
}
|
|
2002
|
+
config_set_enable_filtering_110(sensor_mac, value){
|
|
2003
|
+
console.log('config_set_enable_filtering_110');
|
|
2004
|
+
let packet = [244, 79, 0, 0, 101, 13, value];
|
|
2005
|
+
console.log(packet);
|
|
2006
|
+
return this.config_send(sensor_mac, packet);
|
|
2007
|
+
}
|
|
1978
2008
|
config_set_to_always_on_120(sensor_mac){
|
|
1979
2009
|
console.log('config_set_to_always_on_120');
|
|
1980
2010
|
let packet = [244, 10, 0, 0, 0, 1];
|
|
@@ -1999,20 +2029,58 @@ module.exports = class WirelessSensor{
|
|
|
1999
2029
|
console.log(packet);
|
|
2000
2030
|
return this.config_send(sensor_mac, packet);
|
|
2001
2031
|
}
|
|
2032
|
+
config_set_wood_type_121(sensor_mac, value){
|
|
2033
|
+
console.log('config_set_wood_type_121');
|
|
2034
|
+
let packet = [244, 10, 0, 0, 121, value];
|
|
2035
|
+
console.log(packet);
|
|
2036
|
+
return this.config_send(sensor_mac, packet);
|
|
2037
|
+
}
|
|
2038
|
+
config_set_quality_of_service_121(sensor_mac, value){
|
|
2039
|
+
console.log('config_set_quality_of_service_121');
|
|
2040
|
+
var packet = [247, 52, 0, 0, 0, value];
|
|
2041
|
+
console.log(packet);
|
|
2042
|
+
return this.config_send(sensor_mac, packet);
|
|
2043
|
+
}
|
|
2002
2044
|
config_set_tare_the_scale_217(sensor_mac){
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2045
|
+
console.log('config_set_tare_the_scale_217');
|
|
2046
|
+
var packet = [244, 32, 0, 0, 26];
|
|
2047
|
+
console.log(packet);
|
|
2048
|
+
return this.config_send(sensor_mac, packet);
|
|
2049
|
+
}
|
|
2050
|
+
config_set_weight_calib_217(sensor_mac, value){
|
|
2051
|
+
console.log('config_set_weight_calib_217');
|
|
2052
|
+
var packet = [244, 33, 0, 0, 26];
|
|
2053
|
+
let value_ = int2Bytes((value*100), 4);
|
|
2054
|
+
packet.push(...value_);
|
|
2055
|
+
console.log(packet);
|
|
2056
|
+
return this.config_send(sensor_mac, packet);
|
|
2057
|
+
}
|
|
2058
|
+
config_set_pressure_limit_26(sensor_mac, value){
|
|
2059
|
+
console.log('config_set_pressure_limit_26');
|
|
2060
|
+
var packet = [244, 82, 0, 0, 26];
|
|
2061
|
+
let value_ = int2Bytes(value, 2);
|
|
2062
|
+
packet.push(...value_);
|
|
2063
|
+
console.log(packet);
|
|
2064
|
+
return this.config_send(sensor_mac, packet);
|
|
2065
|
+
}
|
|
2066
|
+
config_set_auto_pressure_check_26(sensor_mac, value){
|
|
2067
|
+
console.log('config_set_auto_pressure_check_26');
|
|
2068
|
+
var packet = [244, 80, 0, 0, 26, value];
|
|
2069
|
+
console.log(packet);
|
|
2070
|
+
return this.config_send(sensor_mac, packet);
|
|
2071
|
+
}
|
|
2072
|
+
config_set_fsr_420ma(sensor_mac, value){
|
|
2073
|
+
console.log('config_set_fsr_420ma');
|
|
2074
|
+
var packet = [244, 64, 0, 0, 45, value];
|
|
2075
|
+
console.log(packet);
|
|
2076
|
+
return this.config_send(sensor_mac, packet);
|
|
2077
|
+
}
|
|
2078
|
+
config_set_always_on_420ma(sensor_mac, value){
|
|
2079
|
+
console.log('config_set_always_on_420ma');
|
|
2080
|
+
var packet = [244, 81, 0, 0, 88, value];
|
|
2081
|
+
console.log(packet);
|
|
2082
|
+
return this.config_send(sensor_mac, packet);
|
|
2083
|
+
}
|
|
2016
2084
|
config_get_delay(sensor_mac){
|
|
2017
2085
|
return new Promise((fulfill, reject) => {
|
|
2018
2086
|
this.config_send(sensor_mac, [247, 21, 0, 0, 0]).then((res) => {
|
|
@@ -2217,9 +2285,148 @@ module.exports = class WirelessSensor{
|
|
|
2217
2285
|
delete this.queue;
|
|
2218
2286
|
this.queue = new Queue(1);
|
|
2219
2287
|
}
|
|
2288
|
+
firmware_send_chunk_v13(sensor_mac, offset, chunk){
|
|
2289
|
+
console.log('firmware_send_chunk');
|
|
2290
|
+
// sensor_mac = "00:00:00:00:00:00:ff:ff";
|
|
2291
|
+
let packet = [245, 59, 0, 0, 0].concat(offset, Array.prototype.slice.call(chunk));
|
|
2292
|
+
// console.log(packet);
|
|
2293
|
+
return this.firmware_send_v13(sensor_mac, packet);
|
|
2294
|
+
}
|
|
2295
|
+
firmware_read_last_chunk_segment(sensor_mac){
|
|
2296
|
+
console.log('firmware_read_last_chunk_segment');
|
|
2297
|
+
let packet = [245, 61, 0, 0, 0];
|
|
2298
|
+
return this.config_send(sensor_mac, packet);
|
|
2299
|
+
}
|
|
2300
|
+
clear_queue_except_last(){
|
|
2301
|
+
const pending = this.queue.pendingPromises;
|
|
2302
|
+
const temp_queue = this.queue.queue;
|
|
2303
|
+
const last_promise = [temp_queue.pop()];
|
|
2304
|
+
|
|
2305
|
+
console.log('MARK 1');
|
|
2306
|
+
console.log(last_promise);
|
|
2307
|
+
|
|
2308
|
+
// this.queue.queue = last_promise;
|
|
2309
|
+
// this.queue.pendingPromises = [];
|
|
2310
|
+
// this.queue.activeCount = 0;
|
|
2311
|
+
|
|
2312
|
+
console.log('MARK 2');
|
|
2313
|
+
console.log(pending);
|
|
2314
|
+
|
|
2315
|
+
// console.log(temp_queue);
|
|
2316
|
+
// console.log(temp_queue[0]);
|
|
2317
|
+
// while(this.queue.queue.length > 1){
|
|
2318
|
+
// let clear_promise = this.queue.queue.shift();
|
|
2319
|
+
// clear_promise.reject({
|
|
2320
|
+
// res: 'Promise rejected by queue clearing',
|
|
2321
|
+
// error: 'Promise rejected by queue clearing'
|
|
2322
|
+
// });
|
|
2323
|
+
// };
|
|
2324
|
+
// temp_queue.forEach(promise => {
|
|
2325
|
+
// // promise.reject(new Error('Promise rejected by queue clearing'));
|
|
2326
|
+
// promise.reject({
|
|
2327
|
+
// res: 'Promise rejected by queue clearing',
|
|
2328
|
+
// error: 'Promise rejected by queue clearing'
|
|
2329
|
+
// });
|
|
2330
|
+
// });
|
|
2331
|
+
}
|
|
2332
|
+
firmware_send_v13(sensor_mac, data, opts, cmd_timeout = 7000, cmd_delay = 140, manifest = false){
|
|
2333
|
+
var that = this;
|
|
2334
|
+
return new Promise((fulfill, reject) => {
|
|
2335
|
+
if(manifest){
|
|
2336
|
+
that.queue.add(() => {
|
|
2337
|
+
return new Promise((f, r) => {
|
|
2338
|
+
setTimeout(f, 500);
|
|
2339
|
+
});
|
|
2340
|
+
});
|
|
2341
|
+
};
|
|
2342
|
+
that.queue.add(() => {
|
|
2343
|
+
return new Promise((f, r) => {
|
|
2344
|
+
var tout;
|
|
2345
|
+
function fail(error){
|
|
2346
|
+
console.log('In Fail');
|
|
2347
|
+
// that._emitter.removeListener('config_ack-'+sensor_mac, pass);
|
|
2348
|
+
clearTimeout(tout);
|
|
2349
|
+
reject({
|
|
2350
|
+
error: error,
|
|
2351
|
+
sent: [mac2bytes(sensor_mac), data, opts]
|
|
2352
|
+
});
|
|
2353
|
+
f();
|
|
2354
|
+
}
|
|
2355
|
+
function pass(packet){
|
|
2356
|
+
clearTimeout(tout);
|
|
2357
|
+
// that._emitter.removeListener('config_error-'+sensor_mac, fail);
|
|
2358
|
+
packet.sent = data;
|
|
2359
|
+
fulfill(packet);
|
|
2360
|
+
f();
|
|
2361
|
+
};
|
|
2362
|
+
let retry_count = 0;
|
|
2363
|
+
const max_retries = 3;
|
|
2364
|
+
function attempt_transmission(){
|
|
2365
|
+
that.send.transmit_request(mac2bytes(sensor_mac), data, opts).then(function(frame){
|
|
2366
|
+
if(frame.hasError){
|
|
2367
|
+
console.log('FRAME FAILED DUE TO FAIL FLAG');
|
|
2368
|
+
if(retry_count < max_retries) {
|
|
2369
|
+
retry_count++;
|
|
2370
|
+
console.log(`Retrying (attempt ${retry_count}) due to failed status`);
|
|
2371
|
+
clearTimeout(tout);
|
|
2372
|
+
startTimeout();
|
|
2373
|
+
attempt_transmission();
|
|
2374
|
+
}else{
|
|
2375
|
+
fail('Transmit Status indicated error');
|
|
2376
|
+
// reject({
|
|
2377
|
+
// error: 'Transmit Status indicated error',
|
|
2378
|
+
// sent: [mac2bytes(sensor_mac), data, opts]
|
|
2379
|
+
// });
|
|
2380
|
+
};
|
|
2381
|
+
}else{
|
|
2382
|
+
pass(frame);
|
|
2383
|
+
}
|
|
2384
|
+
}).catch((err) => {
|
|
2385
|
+
if(retry_count < max_retries) {
|
|
2386
|
+
retry_count++;
|
|
2387
|
+
console.log(`Retrying (attempt ${retry_count}) due to failed status`);
|
|
2388
|
+
attempt_transmission();
|
|
2389
|
+
}else{
|
|
2390
|
+
console.log('In CATCH');
|
|
2391
|
+
// reject({
|
|
2392
|
+
// error: err,
|
|
2393
|
+
// sent: [mac2bytes(sensor_mac), data, opts]
|
|
2394
|
+
// });
|
|
2395
|
+
fail(err);
|
|
2396
|
+
}
|
|
2397
|
+
}).then();
|
|
2398
|
+
}
|
|
2399
|
+
// that._emitter.once('config_ack-'+sensor_mac, pass);
|
|
2400
|
+
// that._emitter.once('config_error-'+sensor_mac, fail);
|
|
2401
|
+
function startTimeout(){
|
|
2402
|
+
tout = setTimeout(() => {
|
|
2403
|
+
console.log('In Timeout');
|
|
2404
|
+
fail('Transmit Request Timed Out');
|
|
2405
|
+
}, cmd_timeout);
|
|
2406
|
+
}
|
|
2407
|
+
attempt_transmission();
|
|
2408
|
+
startTimeout();
|
|
2409
|
+
});
|
|
2410
|
+
});
|
|
2411
|
+
this.queue.add(() => {
|
|
2412
|
+
return new Promise((f, r) => {
|
|
2413
|
+
// NOTE: This timeout is required to allow the sensor to process and write to memory before a new chunk is transmitted.
|
|
2414
|
+
setTimeout(f, cmd_delay);
|
|
2415
|
+
});
|
|
2416
|
+
});
|
|
2417
|
+
});
|
|
2418
|
+
};
|
|
2220
2419
|
config_send(sensor_mac, data, opts, cmd_timeout = 1500){
|
|
2221
2420
|
var that = this;
|
|
2222
2421
|
return new Promise((fulfill, reject) => {
|
|
2422
|
+
// Note: This code adds a delay before sending any communications. This is not generally required, but has shown increased reliability
|
|
2423
|
+
// 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
|
+
// consider adding a pre-time command parameter to allow this as in the v13 firmware send function.
|
|
2425
|
+
// that.queue.add(() => {
|
|
2426
|
+
// return new Promise((f, r) => {
|
|
2427
|
+
// setTimeout(f, 500);
|
|
2428
|
+
// });
|
|
2429
|
+
// });
|
|
2223
2430
|
that.queue.add(() => {
|
|
2224
2431
|
return new Promise((f, r) => {
|
|
2225
2432
|
var tout;
|
|
@@ -2271,12 +2478,107 @@ module.exports = class WirelessSensor{
|
|
|
2271
2478
|
}).then();
|
|
2272
2479
|
});
|
|
2273
2480
|
});
|
|
2481
|
+
this.queue.add(() => {
|
|
2482
|
+
return new Promise((f, r) => {
|
|
2483
|
+
setTimeout(f, 250);
|
|
2484
|
+
});
|
|
2485
|
+
});
|
|
2486
|
+
});
|
|
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
|
+
});
|
|
2274
2567
|
this.queue.add(() => {
|
|
2275
2568
|
return new Promise((f, r) => {
|
|
2276
2569
|
setTimeout(f, 500);
|
|
2277
2570
|
});
|
|
2278
2571
|
});
|
|
2279
2572
|
});
|
|
2573
|
+
};
|
|
2574
|
+
prepare_bridge_query(sensor_mac, commands){
|
|
2575
|
+
commands.forEach((command) => {
|
|
2576
|
+
if(command.hasOwnProperty('meta')){
|
|
2577
|
+
this.queue_bridge_query(sensor_mac, command.command, command.meta);
|
|
2578
|
+
}else{
|
|
2579
|
+
this.queue_bridge_query(sensor_mac, command.command);
|
|
2580
|
+
}
|
|
2581
|
+
});
|
|
2280
2582
|
}
|
|
2281
2583
|
queue_bridge_query(sensor_mac, data, meta = null, opts){
|
|
2282
2584
|
var that = this;
|
|
@@ -3312,8 +3614,8 @@ function sensor_types(parent){
|
|
|
3312
3614
|
return {
|
|
3313
3615
|
adc1: adc1,
|
|
3314
3616
|
adc2: adc2,
|
|
3315
|
-
mA1:
|
|
3316
|
-
mA2:
|
|
3617
|
+
mA1: signInt(d.slice(4, 6).reduce(msbLsb))/100,
|
|
3618
|
+
mA2: signInt(d.slice(6, 8).reduce(msbLsb))/100
|
|
3317
3619
|
};
|
|
3318
3620
|
},
|
|
3319
3621
|
'parse_fly': (frame) => {
|
|
@@ -3748,11 +4050,66 @@ function sensor_types(parent){
|
|
|
3748
4050
|
if(payload[8] === 1){
|
|
3749
4051
|
var deviceAddr = mac;
|
|
3750
4052
|
var firmware = payload[1];
|
|
3751
|
-
|
|
3752
|
-
|
|
3753
|
-
|
|
3754
|
-
|
|
3755
|
-
|
|
4053
|
+
|
|
4054
|
+
if(firmware > 25){
|
|
4055
|
+
var mode = payload[8];
|
|
4056
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
4057
|
+
var en_axis = payload[11] & 7;
|
|
4058
|
+
var fsr = payload[11] >> 5;
|
|
4059
|
+
var hour = payload[12];
|
|
4060
|
+
var minute = payload[13];
|
|
4061
|
+
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
4062
|
+
var expected_packets = payload[16];
|
|
4063
|
+
var current_packet = payload[17];
|
|
4064
|
+
var sdata_start = 18;
|
|
4065
|
+
|
|
4066
|
+
} else{
|
|
4067
|
+
var mode = payload[8];
|
|
4068
|
+
var odr = payload[9];
|
|
4069
|
+
var en_axis = payload[10] & 7;
|
|
4070
|
+
var fsr = payload[10] >> 5;
|
|
4071
|
+
var hour = payload[11];
|
|
4072
|
+
var minute = payload[12];
|
|
4073
|
+
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
4074
|
+
var expected_packets = payload[15];
|
|
4075
|
+
var current_packet = payload[16];
|
|
4076
|
+
var sdata_start = 17;
|
|
4077
|
+
|
|
4078
|
+
switch(odr){
|
|
4079
|
+
case 6:
|
|
4080
|
+
odr = 50;
|
|
4081
|
+
break;
|
|
4082
|
+
case 7:
|
|
4083
|
+
odr = 100;
|
|
4084
|
+
break;
|
|
4085
|
+
case 8:
|
|
4086
|
+
odr = 200;
|
|
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
|
+
}
|
|
4112
|
+
}
|
|
3756
4113
|
|
|
3757
4114
|
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
3758
4115
|
if(expected_packets != 1){
|
|
@@ -3781,109 +4138,26 @@ function sensor_types(parent){
|
|
|
3781
4138
|
return;
|
|
3782
4139
|
} else{
|
|
3783
4140
|
|
|
3784
|
-
|
|
3785
|
-
|
|
3786
|
-
|
|
3787
|
-
|
|
3788
|
-
|
|
3789
|
-
|
|
3790
|
-
|
|
3791
|
-
|
|
3792
|
-
|
|
3793
|
-
|
|
3794
|
-
|
|
3795
|
-
|
|
3796
|
-
|
|
3797
|
-
|
|
3798
|
-
|
|
3799
|
-
|
|
3800
|
-
|
|
3801
|
-
|
|
3802
|
-
|
|
3803
|
-
|
|
3804
|
-
case 10:
|
|
3805
|
-
odr = 800;
|
|
3806
|
-
break;
|
|
3807
|
-
case 11:
|
|
3808
|
-
odr = 1600;
|
|
3809
|
-
break;
|
|
3810
|
-
case 12:
|
|
3811
|
-
odr = 3200;
|
|
3812
|
-
break;
|
|
3813
|
-
case 13:
|
|
3814
|
-
odr = 6400;
|
|
3815
|
-
break;
|
|
3816
|
-
case 14:
|
|
3817
|
-
odr = 12800;
|
|
3818
|
-
break;
|
|
3819
|
-
case 15:
|
|
3820
|
-
odr = 25600;
|
|
3821
|
-
break;
|
|
3822
|
-
default:
|
|
3823
|
-
odr = 0;
|
|
3824
|
-
}
|
|
3825
|
-
|
|
3826
|
-
globalDevices[deviceAddr] = {
|
|
3827
|
-
// stream_size: expected_packets,
|
|
3828
|
-
data: {},
|
|
3829
|
-
odr: odr,
|
|
3830
|
-
mo: mode,
|
|
3831
|
-
en_axis: en_axis,
|
|
3832
|
-
fsr: fsr,
|
|
3833
|
-
hour: hour,
|
|
3834
|
-
minute: minute,
|
|
3835
|
-
device_temp: device_temp,
|
|
3836
|
-
}
|
|
3837
|
-
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
3838
|
-
return;
|
|
3839
|
-
}
|
|
3840
|
-
}
|
|
3841
|
-
else{
|
|
3842
|
-
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
3843
|
-
}
|
|
3844
|
-
}
|
|
3845
|
-
else{
|
|
3846
|
-
var mode = payload[8];
|
|
3847
|
-
var odr = payload[9];
|
|
3848
|
-
var en_axis = payload[10] & 7;
|
|
3849
|
-
var fsr = payload[10] >> 5;
|
|
3850
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
3851
|
-
|
|
3852
|
-
|
|
3853
|
-
switch(odr){
|
|
3854
|
-
case 6:
|
|
3855
|
-
odr = 50;
|
|
3856
|
-
break;
|
|
3857
|
-
case 7:
|
|
3858
|
-
odr = 100;
|
|
3859
|
-
break;
|
|
3860
|
-
case 8:
|
|
3861
|
-
odr = 200;
|
|
3862
|
-
break;
|
|
3863
|
-
case 9:
|
|
3864
|
-
odr = 400;
|
|
3865
|
-
break;
|
|
3866
|
-
case 10:
|
|
3867
|
-
odr = 800;
|
|
3868
|
-
break;
|
|
3869
|
-
case 11:
|
|
3870
|
-
odr = 1600;
|
|
3871
|
-
break;
|
|
3872
|
-
case 12:
|
|
3873
|
-
odr = 3200;
|
|
3874
|
-
break;
|
|
3875
|
-
case 13:
|
|
3876
|
-
odr = 6400;
|
|
3877
|
-
break;
|
|
3878
|
-
case 14:
|
|
3879
|
-
odr = 12800;
|
|
3880
|
-
break;
|
|
3881
|
-
case 15:
|
|
3882
|
-
odr = 25600;
|
|
3883
|
-
break;
|
|
3884
|
-
default:
|
|
3885
|
-
odr = 0;
|
|
3886
|
-
}
|
|
4141
|
+
globalDevices[deviceAddr] = {
|
|
4142
|
+
// stream_size: expected_packets,
|
|
4143
|
+
data: {},
|
|
4144
|
+
odr: odr,
|
|
4145
|
+
mo: mode,
|
|
4146
|
+
en_axis: en_axis,
|
|
4147
|
+
fsr: fsr,
|
|
4148
|
+
hour: hour,
|
|
4149
|
+
minute: minute,
|
|
4150
|
+
device_temp: device_temp,
|
|
4151
|
+
}
|
|
4152
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
4153
|
+
return;
|
|
4154
|
+
}
|
|
4155
|
+
}
|
|
4156
|
+
else{
|
|
4157
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
4158
|
+
}
|
|
4159
|
+
}
|
|
4160
|
+
else{
|
|
3887
4161
|
|
|
3888
4162
|
globalDevices[deviceAddr] = {
|
|
3889
4163
|
// stream_size: expected_packets,
|
|
@@ -4017,48 +4291,6 @@ function sensor_types(parent){
|
|
|
4017
4291
|
}
|
|
4018
4292
|
}else{
|
|
4019
4293
|
|
|
4020
|
-
var mode = payload[8];
|
|
4021
|
-
var odr = payload[9];
|
|
4022
|
-
var en_axis = payload[10] & 7;
|
|
4023
|
-
var fsr = payload[10] >> 5;
|
|
4024
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
4025
|
-
|
|
4026
|
-
|
|
4027
|
-
switch(odr){
|
|
4028
|
-
case 6:
|
|
4029
|
-
odr = 50;
|
|
4030
|
-
break;
|
|
4031
|
-
case 7:
|
|
4032
|
-
odr = 100;
|
|
4033
|
-
break;
|
|
4034
|
-
case 8:
|
|
4035
|
-
odr = 200;
|
|
4036
|
-
break;
|
|
4037
|
-
case 9:
|
|
4038
|
-
odr = 400;
|
|
4039
|
-
break;
|
|
4040
|
-
case 10:
|
|
4041
|
-
odr = 800;
|
|
4042
|
-
break;
|
|
4043
|
-
case 11:
|
|
4044
|
-
odr = 1600;
|
|
4045
|
-
break;
|
|
4046
|
-
case 12:
|
|
4047
|
-
odr = 3200;
|
|
4048
|
-
break;
|
|
4049
|
-
case 13:
|
|
4050
|
-
odr = 6400;
|
|
4051
|
-
break;
|
|
4052
|
-
case 14:
|
|
4053
|
-
odr = 12800;
|
|
4054
|
-
break;
|
|
4055
|
-
case 15:
|
|
4056
|
-
odr = 25600;
|
|
4057
|
-
break;
|
|
4058
|
-
default:
|
|
4059
|
-
odr = 0;
|
|
4060
|
-
}
|
|
4061
|
-
|
|
4062
4294
|
globalDevices[deviceAddr] = {
|
|
4063
4295
|
// stream_size: expected_packets,
|
|
4064
4296
|
data: {},
|
|
@@ -4369,11 +4601,66 @@ function sensor_types(parent){
|
|
|
4369
4601
|
if(payload[8] === 1){
|
|
4370
4602
|
var deviceAddr = mac;
|
|
4371
4603
|
var firmware = payload[1];
|
|
4372
|
-
|
|
4373
|
-
|
|
4374
|
-
|
|
4375
|
-
|
|
4376
|
-
|
|
4604
|
+
|
|
4605
|
+
if(firmware > 25){
|
|
4606
|
+
var mode = payload[8];
|
|
4607
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
4608
|
+
var en_axis = payload[11] & 7;
|
|
4609
|
+
var fsr = payload[11] >> 5;
|
|
4610
|
+
var hour = payload[12];
|
|
4611
|
+
var minute = payload[13];
|
|
4612
|
+
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
4613
|
+
var expected_packets = payload[16];
|
|
4614
|
+
var current_packet = payload[17];
|
|
4615
|
+
var sdata_start = 18;
|
|
4616
|
+
|
|
4617
|
+
}else{
|
|
4618
|
+
var mode = payload[8];
|
|
4619
|
+
var odr = payload[9];
|
|
4620
|
+
var en_axis = payload[10] & 7;
|
|
4621
|
+
var fsr = payload[10] >> 5;
|
|
4622
|
+
var hour = payload[11];
|
|
4623
|
+
var minute = payload[12];
|
|
4624
|
+
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
4625
|
+
var expected_packets = payload[15];
|
|
4626
|
+
var current_packet = payload[16];
|
|
4627
|
+
var sdata_start = 17;
|
|
4628
|
+
|
|
4629
|
+
switch(odr){
|
|
4630
|
+
case 6:
|
|
4631
|
+
odr = 50;
|
|
4632
|
+
break;
|
|
4633
|
+
case 7:
|
|
4634
|
+
odr = 100;
|
|
4635
|
+
break;
|
|
4636
|
+
case 8:
|
|
4637
|
+
odr = 200;
|
|
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
|
+
}
|
|
4663
|
+
}
|
|
4377
4664
|
|
|
4378
4665
|
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
4379
4666
|
if(expected_packets != 1){
|
|
@@ -4401,46 +4688,6 @@ function sensor_types(parent){
|
|
|
4401
4688
|
if(current_packet != 1){
|
|
4402
4689
|
return;
|
|
4403
4690
|
} else{
|
|
4404
|
-
var mode = payload[8];
|
|
4405
|
-
var odr = payload[9];
|
|
4406
|
-
var en_axis = payload[10] & 7;
|
|
4407
|
-
var fsr = payload[10] >> 5;
|
|
4408
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
4409
|
-
|
|
4410
|
-
switch(odr){
|
|
4411
|
-
case 6:
|
|
4412
|
-
odr = 50;
|
|
4413
|
-
break;
|
|
4414
|
-
case 7:
|
|
4415
|
-
odr = 100;
|
|
4416
|
-
break;
|
|
4417
|
-
case 8:
|
|
4418
|
-
odr = 200;
|
|
4419
|
-
break;
|
|
4420
|
-
case 9:
|
|
4421
|
-
odr = 400;
|
|
4422
|
-
break;
|
|
4423
|
-
case 10:
|
|
4424
|
-
odr = 800;
|
|
4425
|
-
break;
|
|
4426
|
-
case 11:
|
|
4427
|
-
odr = 1600;
|
|
4428
|
-
break;
|
|
4429
|
-
case 12:
|
|
4430
|
-
odr = 3200;
|
|
4431
|
-
break;
|
|
4432
|
-
case 13:
|
|
4433
|
-
odr = 6400;
|
|
4434
|
-
break;
|
|
4435
|
-
case 14:
|
|
4436
|
-
odr = 12800;
|
|
4437
|
-
break;
|
|
4438
|
-
case 15:
|
|
4439
|
-
odr = 25600;
|
|
4440
|
-
break;
|
|
4441
|
-
default:
|
|
4442
|
-
odr = 0;
|
|
4443
|
-
}
|
|
4444
4691
|
|
|
4445
4692
|
globalDevices[deviceAddr] = {
|
|
4446
4693
|
// stream_size: expected_packets,
|
|
@@ -4462,63 +4709,22 @@ function sensor_types(parent){
|
|
|
4462
4709
|
}
|
|
4463
4710
|
}
|
|
4464
4711
|
else{
|
|
4465
|
-
var mode = payload[8];
|
|
4466
|
-
var odr = payload[9];
|
|
4467
|
-
var en_axis = payload[10] & 7;
|
|
4468
|
-
var fsr = payload[10] >> 5;
|
|
4469
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
4470
4712
|
|
|
4471
|
-
|
|
4472
|
-
|
|
4473
|
-
|
|
4474
|
-
|
|
4475
|
-
|
|
4476
|
-
|
|
4477
|
-
|
|
4478
|
-
|
|
4479
|
-
|
|
4480
|
-
|
|
4481
|
-
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
odr = 800;
|
|
4487
|
-
break;
|
|
4488
|
-
case 11:
|
|
4489
|
-
odr = 1600;
|
|
4490
|
-
break;
|
|
4491
|
-
case 12:
|
|
4492
|
-
odr = 3200;
|
|
4493
|
-
break;
|
|
4494
|
-
case 13:
|
|
4495
|
-
odr = 6400;
|
|
4496
|
-
break;
|
|
4497
|
-
case 14:
|
|
4498
|
-
odr = 12800;
|
|
4499
|
-
break;
|
|
4500
|
-
case 15:
|
|
4501
|
-
odr = 25600;
|
|
4502
|
-
break;
|
|
4503
|
-
default:
|
|
4504
|
-
odr = 0;
|
|
4505
|
-
}
|
|
4506
|
-
|
|
4507
|
-
globalDevices[deviceAddr] = {
|
|
4508
|
-
// stream_size: expected_packets,
|
|
4509
|
-
data: {},
|
|
4510
|
-
odr: odr,
|
|
4511
|
-
mo: mode,
|
|
4512
|
-
en_axis: en_axis,
|
|
4513
|
-
fsr: fsr,
|
|
4514
|
-
hour: hour,
|
|
4515
|
-
minute: minute,
|
|
4516
|
-
device_temp: device_temp,
|
|
4517
|
-
}
|
|
4518
|
-
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
4519
|
-
}
|
|
4520
|
-
if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
|
|
4521
|
-
var raw_data = new Array();
|
|
4713
|
+
globalDevices[deviceAddr] = {
|
|
4714
|
+
// stream_size: expected_packets,
|
|
4715
|
+
data: {},
|
|
4716
|
+
odr: odr,
|
|
4717
|
+
mo: mode,
|
|
4718
|
+
en_axis: en_axis,
|
|
4719
|
+
fsr: fsr,
|
|
4720
|
+
hour: hour,
|
|
4721
|
+
minute: minute,
|
|
4722
|
+
device_temp: device_temp,
|
|
4723
|
+
}
|
|
4724
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
4725
|
+
}
|
|
4726
|
+
if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
|
|
4727
|
+
var raw_data = new Array();
|
|
4522
4728
|
|
|
4523
4729
|
for(const packet in globalDevices[deviceAddr].data){
|
|
4524
4730
|
raw_data = raw_data.concat(globalDevices[deviceAddr].data[packet]);
|
|
@@ -4626,7 +4832,6 @@ function sensor_types(parent){
|
|
|
4626
4832
|
var fft_concat_obj = {
|
|
4627
4833
|
probe: probe,
|
|
4628
4834
|
time_id: globalDevices[deviceAddr].hour +':'+ globalDevices[deviceAddr].minute,
|
|
4629
|
-
probe: probe,
|
|
4630
4835
|
mac_address: deviceAddr,
|
|
4631
4836
|
en_axis: globalDevices[deviceAddr].en_axis,
|
|
4632
4837
|
fsr: fsr_text,
|
|
@@ -4647,47 +4852,6 @@ function sensor_types(parent){
|
|
|
4647
4852
|
return;
|
|
4648
4853
|
}
|
|
4649
4854
|
}else{
|
|
4650
|
-
var mode = payload[8];
|
|
4651
|
-
var odr = payload[9];
|
|
4652
|
-
var en_axis = payload[10] & 7;
|
|
4653
|
-
var fsr = payload[10] >> 5;
|
|
4654
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
4655
|
-
|
|
4656
|
-
|
|
4657
|
-
switch(odr){
|
|
4658
|
-
case 6:
|
|
4659
|
-
odr = 50;
|
|
4660
|
-
break;
|
|
4661
|
-
case 7:
|
|
4662
|
-
odr = 100;
|
|
4663
|
-
break;
|
|
4664
|
-
case 8:
|
|
4665
|
-
odr = 200;
|
|
4666
|
-
break;
|
|
4667
|
-
case 9:
|
|
4668
|
-
odr = 400;
|
|
4669
|
-
break;
|
|
4670
|
-
case 10:
|
|
4671
|
-
odr = 800;
|
|
4672
|
-
break;
|
|
4673
|
-
case 11:
|
|
4674
|
-
odr = 1600;
|
|
4675
|
-
break;
|
|
4676
|
-
case 12:
|
|
4677
|
-
odr = 3200;
|
|
4678
|
-
break;
|
|
4679
|
-
case 13:
|
|
4680
|
-
odr = 6400;
|
|
4681
|
-
break;
|
|
4682
|
-
case 14:
|
|
4683
|
-
odr = 12800;
|
|
4684
|
-
break;
|
|
4685
|
-
case 15:
|
|
4686
|
-
odr = 25600;
|
|
4687
|
-
break;
|
|
4688
|
-
default:
|
|
4689
|
-
odr = 0;
|
|
4690
|
-
}
|
|
4691
4855
|
|
|
4692
4856
|
globalDevices[deviceAddr] = {
|
|
4693
4857
|
// stream_size: expected_packets,
|
|
@@ -5175,11 +5339,66 @@ function sensor_types(parent){
|
|
|
5175
5339
|
if(payload[8] === 1){
|
|
5176
5340
|
var deviceAddr = mac;
|
|
5177
5341
|
var firmware = payload[1];
|
|
5178
|
-
|
|
5179
|
-
|
|
5180
|
-
|
|
5181
|
-
|
|
5182
|
-
|
|
5342
|
+
|
|
5343
|
+
if(firmware > 25){
|
|
5344
|
+
var mode = payload[8];
|
|
5345
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
5346
|
+
var en_axis = payload[11] & 7;
|
|
5347
|
+
var fsr = payload[11] >> 5;
|
|
5348
|
+
var hour = payload[12];
|
|
5349
|
+
var minute = payload[13];
|
|
5350
|
+
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
5351
|
+
var expected_packets = payload[16];
|
|
5352
|
+
var current_packet = payload[17];
|
|
5353
|
+
var sdata_start = 18;
|
|
5354
|
+
|
|
5355
|
+
} else{
|
|
5356
|
+
var mode = payload[8];
|
|
5357
|
+
var odr = payload[9];
|
|
5358
|
+
var en_axis = payload[10] & 7;
|
|
5359
|
+
var fsr = payload[10] >> 5;
|
|
5360
|
+
var hour = payload[11];
|
|
5361
|
+
var minute = payload[12];
|
|
5362
|
+
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
5363
|
+
var expected_packets = payload[15];
|
|
5364
|
+
var current_packet = payload[16];
|
|
5365
|
+
var sdata_start = 17;
|
|
5366
|
+
|
|
5367
|
+
switch(odr){
|
|
5368
|
+
case 6:
|
|
5369
|
+
odr = 50;
|
|
5370
|
+
break;
|
|
5371
|
+
case 7:
|
|
5372
|
+
odr = 100;
|
|
5373
|
+
break;
|
|
5374
|
+
case 8:
|
|
5375
|
+
odr = 200;
|
|
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
|
+
}
|
|
5401
|
+
}
|
|
5183
5402
|
|
|
5184
5403
|
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
5185
5404
|
if(expected_packets != 1){
|
|
@@ -5208,48 +5427,6 @@ function sensor_types(parent){
|
|
|
5208
5427
|
return;
|
|
5209
5428
|
} else{
|
|
5210
5429
|
|
|
5211
|
-
var mode = payload[8];
|
|
5212
|
-
var odr = payload[9];
|
|
5213
|
-
var en_axis = payload[10] & 7;
|
|
5214
|
-
var fsr = payload[10] >> 5;
|
|
5215
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
5216
|
-
|
|
5217
|
-
|
|
5218
|
-
switch(odr){
|
|
5219
|
-
case 6:
|
|
5220
|
-
odr = 50;
|
|
5221
|
-
break;
|
|
5222
|
-
case 7:
|
|
5223
|
-
odr = 100;
|
|
5224
|
-
break;
|
|
5225
|
-
case 8:
|
|
5226
|
-
odr = 200;
|
|
5227
|
-
break;
|
|
5228
|
-
case 9:
|
|
5229
|
-
odr = 400;
|
|
5230
|
-
break;
|
|
5231
|
-
case 10:
|
|
5232
|
-
odr = 800;
|
|
5233
|
-
break;
|
|
5234
|
-
case 11:
|
|
5235
|
-
odr = 1600;
|
|
5236
|
-
break;
|
|
5237
|
-
case 12:
|
|
5238
|
-
odr = 3200;
|
|
5239
|
-
break;
|
|
5240
|
-
case 13:
|
|
5241
|
-
odr = 6400;
|
|
5242
|
-
break;
|
|
5243
|
-
case 14:
|
|
5244
|
-
odr = 12800;
|
|
5245
|
-
break;
|
|
5246
|
-
case 15:
|
|
5247
|
-
odr = 25600;
|
|
5248
|
-
break;
|
|
5249
|
-
default:
|
|
5250
|
-
odr = 0;
|
|
5251
|
-
}
|
|
5252
|
-
|
|
5253
5430
|
globalDevices[deviceAddr] = {
|
|
5254
5431
|
// stream_size: expected_packets,
|
|
5255
5432
|
data: {},
|
|
@@ -5270,47 +5447,6 @@ function sensor_types(parent){
|
|
|
5270
5447
|
}
|
|
5271
5448
|
}
|
|
5272
5449
|
else{
|
|
5273
|
-
var mode = payload[8];
|
|
5274
|
-
var odr = payload[9];
|
|
5275
|
-
var en_axis = payload[10] & 7;
|
|
5276
|
-
var fsr = payload[10] >> 5;
|
|
5277
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
5278
|
-
|
|
5279
|
-
|
|
5280
|
-
switch(odr){
|
|
5281
|
-
case 6:
|
|
5282
|
-
odr = 50;
|
|
5283
|
-
break;
|
|
5284
|
-
case 7:
|
|
5285
|
-
odr = 100;
|
|
5286
|
-
break;
|
|
5287
|
-
case 8:
|
|
5288
|
-
odr = 200;
|
|
5289
|
-
break;
|
|
5290
|
-
case 9:
|
|
5291
|
-
odr = 400;
|
|
5292
|
-
break;
|
|
5293
|
-
case 10:
|
|
5294
|
-
odr = 800;
|
|
5295
|
-
break;
|
|
5296
|
-
case 11:
|
|
5297
|
-
odr = 1600;
|
|
5298
|
-
break;
|
|
5299
|
-
case 12:
|
|
5300
|
-
odr = 3200;
|
|
5301
|
-
break;
|
|
5302
|
-
case 13:
|
|
5303
|
-
odr = 6400;
|
|
5304
|
-
break;
|
|
5305
|
-
case 14:
|
|
5306
|
-
odr = 12800;
|
|
5307
|
-
break;
|
|
5308
|
-
case 15:
|
|
5309
|
-
odr = 25600;
|
|
5310
|
-
break;
|
|
5311
|
-
default:
|
|
5312
|
-
odr = 0;
|
|
5313
|
-
}
|
|
5314
5450
|
|
|
5315
5451
|
globalDevices[deviceAddr] = {
|
|
5316
5452
|
// stream_size: expected_packets,
|
|
@@ -5447,48 +5583,6 @@ function sensor_types(parent){
|
|
|
5447
5583
|
}
|
|
5448
5584
|
}else{
|
|
5449
5585
|
|
|
5450
|
-
var mode = payload[8];
|
|
5451
|
-
var odr = payload[9];
|
|
5452
|
-
var en_axis = payload[10] & 7;
|
|
5453
|
-
var fsr = payload[10] >> 5;
|
|
5454
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
5455
|
-
|
|
5456
|
-
|
|
5457
|
-
switch(odr){
|
|
5458
|
-
case 6:
|
|
5459
|
-
odr = 50;
|
|
5460
|
-
break;
|
|
5461
|
-
case 7:
|
|
5462
|
-
odr = 100;
|
|
5463
|
-
break;
|
|
5464
|
-
case 8:
|
|
5465
|
-
odr = 200;
|
|
5466
|
-
break;
|
|
5467
|
-
case 9:
|
|
5468
|
-
odr = 400;
|
|
5469
|
-
break;
|
|
5470
|
-
case 10:
|
|
5471
|
-
odr = 800;
|
|
5472
|
-
break;
|
|
5473
|
-
case 11:
|
|
5474
|
-
odr = 1600;
|
|
5475
|
-
break;
|
|
5476
|
-
case 12:
|
|
5477
|
-
odr = 3200;
|
|
5478
|
-
break;
|
|
5479
|
-
case 13:
|
|
5480
|
-
odr = 6400;
|
|
5481
|
-
break;
|
|
5482
|
-
case 14:
|
|
5483
|
-
odr = 12800;
|
|
5484
|
-
break;
|
|
5485
|
-
case 15:
|
|
5486
|
-
odr = 25600;
|
|
5487
|
-
break;
|
|
5488
|
-
default:
|
|
5489
|
-
odr = 0;
|
|
5490
|
-
}
|
|
5491
|
-
|
|
5492
5586
|
globalDevices[deviceAddr] = {
|
|
5493
5587
|
// stream_size: expected_packets,
|
|
5494
5588
|
data: {},
|
|
@@ -5789,11 +5883,66 @@ function sensor_types(parent){
|
|
|
5789
5883
|
if(payload[8] === 1){
|
|
5790
5884
|
var deviceAddr = mac;
|
|
5791
5885
|
var firmware = payload[1];
|
|
5792
|
-
|
|
5793
|
-
|
|
5794
|
-
|
|
5795
|
-
|
|
5796
|
-
|
|
5886
|
+
|
|
5887
|
+
if(firmware > 25){
|
|
5888
|
+
var mode = payload[8];
|
|
5889
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
5890
|
+
var en_axis = payload[11] & 7;
|
|
5891
|
+
var fsr = payload[11] >> 5;
|
|
5892
|
+
var hour = payload[12];
|
|
5893
|
+
var minute = payload[13];
|
|
5894
|
+
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
5895
|
+
var expected_packets = payload[16];
|
|
5896
|
+
var current_packet = payload[17];
|
|
5897
|
+
var sdata_start = 18;
|
|
5898
|
+
|
|
5899
|
+
} else{
|
|
5900
|
+
var mode = payload[8];
|
|
5901
|
+
var odr = payload[9];
|
|
5902
|
+
var en_axis = payload[10] & 7;
|
|
5903
|
+
var fsr = payload[10] >> 5;
|
|
5904
|
+
var hour = payload[11];
|
|
5905
|
+
var minute = payload[12];
|
|
5906
|
+
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
5907
|
+
var expected_packets = payload[15];
|
|
5908
|
+
var current_packet = payload[16];
|
|
5909
|
+
var sdata_start = 17;
|
|
5910
|
+
|
|
5911
|
+
switch(odr){
|
|
5912
|
+
case 6:
|
|
5913
|
+
odr = 50;
|
|
5914
|
+
break;
|
|
5915
|
+
case 7:
|
|
5916
|
+
odr = 100;
|
|
5917
|
+
break;
|
|
5918
|
+
case 8:
|
|
5919
|
+
odr = 200;
|
|
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
|
+
}
|
|
5945
|
+
}
|
|
5797
5946
|
|
|
5798
5947
|
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
5799
5948
|
if(expected_packets != 1){
|
|
@@ -5818,113 +5967,30 @@ function sensor_types(parent){
|
|
|
5818
5967
|
}
|
|
5819
5968
|
// console.log(globalDevices[deviceAddr].data);
|
|
5820
5969
|
delete globalDevices[deviceAddr];
|
|
5821
|
-
if(current_packet != 1){
|
|
5822
|
-
return;
|
|
5823
|
-
} else{
|
|
5824
|
-
|
|
5825
|
-
|
|
5826
|
-
|
|
5827
|
-
|
|
5828
|
-
|
|
5829
|
-
|
|
5830
|
-
|
|
5831
|
-
|
|
5832
|
-
|
|
5833
|
-
|
|
5834
|
-
|
|
5835
|
-
|
|
5836
|
-
|
|
5837
|
-
|
|
5838
|
-
|
|
5839
|
-
|
|
5840
|
-
|
|
5841
|
-
|
|
5842
|
-
case 9:
|
|
5843
|
-
odr = 400;
|
|
5844
|
-
break;
|
|
5845
|
-
case 10:
|
|
5846
|
-
odr = 800;
|
|
5847
|
-
break;
|
|
5848
|
-
case 11:
|
|
5849
|
-
odr = 1600;
|
|
5850
|
-
break;
|
|
5851
|
-
case 12:
|
|
5852
|
-
odr = 3200;
|
|
5853
|
-
break;
|
|
5854
|
-
case 13:
|
|
5855
|
-
odr = 6400;
|
|
5856
|
-
break;
|
|
5857
|
-
case 14:
|
|
5858
|
-
odr = 12800;
|
|
5859
|
-
break;
|
|
5860
|
-
case 15:
|
|
5861
|
-
odr = 25600;
|
|
5862
|
-
break;
|
|
5863
|
-
default:
|
|
5864
|
-
odr = 0;
|
|
5865
|
-
}
|
|
5866
|
-
|
|
5867
|
-
globalDevices[deviceAddr] = {
|
|
5868
|
-
// stream_size: expected_packets,
|
|
5869
|
-
data: {},
|
|
5870
|
-
odr: odr,
|
|
5871
|
-
mo: mode,
|
|
5872
|
-
en_axis: en_axis,
|
|
5873
|
-
fsr: fsr,
|
|
5874
|
-
hour: hour,
|
|
5875
|
-
minute: minute,
|
|
5876
|
-
device_temp: device_temp,
|
|
5877
|
-
}
|
|
5878
|
-
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
5879
|
-
return;
|
|
5880
|
-
}
|
|
5881
|
-
}
|
|
5882
|
-
else{
|
|
5883
|
-
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
5884
|
-
}
|
|
5885
|
-
}
|
|
5886
|
-
else{
|
|
5887
|
-
var mode = payload[8];
|
|
5888
|
-
var odr = payload[9];
|
|
5889
|
-
var en_axis = payload[10] & 7;
|
|
5890
|
-
var fsr = payload[10] >> 5;
|
|
5891
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
5892
|
-
|
|
5893
|
-
|
|
5894
|
-
switch(odr){
|
|
5895
|
-
case 6:
|
|
5896
|
-
odr = 50;
|
|
5897
|
-
break;
|
|
5898
|
-
case 7:
|
|
5899
|
-
odr = 100;
|
|
5900
|
-
break;
|
|
5901
|
-
case 8:
|
|
5902
|
-
odr = 200;
|
|
5903
|
-
break;
|
|
5904
|
-
case 9:
|
|
5905
|
-
odr = 400;
|
|
5906
|
-
break;
|
|
5907
|
-
case 10:
|
|
5908
|
-
odr = 800;
|
|
5909
|
-
break;
|
|
5910
|
-
case 11:
|
|
5911
|
-
odr = 1600;
|
|
5912
|
-
break;
|
|
5913
|
-
case 12:
|
|
5914
|
-
odr = 3200;
|
|
5915
|
-
break;
|
|
5916
|
-
case 13:
|
|
5917
|
-
odr = 6400;
|
|
5918
|
-
break;
|
|
5919
|
-
case 14:
|
|
5920
|
-
odr = 12800;
|
|
5921
|
-
break;
|
|
5922
|
-
case 15:
|
|
5923
|
-
odr = 25600;
|
|
5924
|
-
break;
|
|
5925
|
-
default:
|
|
5926
|
-
odr = 0;
|
|
5970
|
+
if(current_packet != 1){
|
|
5971
|
+
return;
|
|
5972
|
+
} else{
|
|
5973
|
+
|
|
5974
|
+
globalDevices[deviceAddr] = {
|
|
5975
|
+
// stream_size: expected_packets,
|
|
5976
|
+
data: {},
|
|
5977
|
+
odr: odr,
|
|
5978
|
+
mo: mode,
|
|
5979
|
+
en_axis: en_axis,
|
|
5980
|
+
fsr: fsr,
|
|
5981
|
+
hour: hour,
|
|
5982
|
+
minute: minute,
|
|
5983
|
+
device_temp: device_temp,
|
|
5984
|
+
}
|
|
5985
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
5986
|
+
return;
|
|
5987
|
+
}
|
|
5988
|
+
}
|
|
5989
|
+
else{
|
|
5990
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
5927
5991
|
}
|
|
5992
|
+
}
|
|
5993
|
+
else{
|
|
5928
5994
|
|
|
5929
5995
|
globalDevices[deviceAddr] = {
|
|
5930
5996
|
// stream_size: expected_packets,
|
|
@@ -6057,48 +6123,6 @@ function sensor_types(parent){
|
|
|
6057
6123
|
}
|
|
6058
6124
|
}else{
|
|
6059
6125
|
|
|
6060
|
-
var mode = payload[8];
|
|
6061
|
-
var odr = payload[9];
|
|
6062
|
-
var en_axis = payload[10] & 7;
|
|
6063
|
-
var fsr = payload[10] >> 5;
|
|
6064
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
6065
|
-
|
|
6066
|
-
|
|
6067
|
-
switch(odr){
|
|
6068
|
-
case 6:
|
|
6069
|
-
odr = 50;
|
|
6070
|
-
break;
|
|
6071
|
-
case 7:
|
|
6072
|
-
odr = 100;
|
|
6073
|
-
break;
|
|
6074
|
-
case 8:
|
|
6075
|
-
odr = 200;
|
|
6076
|
-
break;
|
|
6077
|
-
case 9:
|
|
6078
|
-
odr = 400;
|
|
6079
|
-
break;
|
|
6080
|
-
case 10:
|
|
6081
|
-
odr = 800;
|
|
6082
|
-
break;
|
|
6083
|
-
case 11:
|
|
6084
|
-
odr = 1600;
|
|
6085
|
-
break;
|
|
6086
|
-
case 12:
|
|
6087
|
-
odr = 3200;
|
|
6088
|
-
break;
|
|
6089
|
-
case 13:
|
|
6090
|
-
odr = 6400;
|
|
6091
|
-
break;
|
|
6092
|
-
case 14:
|
|
6093
|
-
odr = 12800;
|
|
6094
|
-
break;
|
|
6095
|
-
case 15:
|
|
6096
|
-
odr = 25600;
|
|
6097
|
-
break;
|
|
6098
|
-
default:
|
|
6099
|
-
odr = 0;
|
|
6100
|
-
}
|
|
6101
|
-
|
|
6102
6126
|
globalDevices[deviceAddr] = {
|
|
6103
6127
|
// stream_size: expected_packets,
|
|
6104
6128
|
data: {},
|
|
@@ -6906,14 +6930,297 @@ function sensor_types(parent){
|
|
|
6906
6930
|
}
|
|
6907
6931
|
}
|
|
6908
6932
|
},
|
|
6909
|
-
'101':{
|
|
6910
|
-
name: 'Pro Vibration',
|
|
6911
|
-
parse: (d, full)=>{
|
|
6912
|
-
return{
|
|
6913
|
-
mode: full[7] == 1? "raw" : "normal"
|
|
6914
|
-
};
|
|
6915
|
-
}
|
|
6916
|
-
},
|
|
6933
|
+
'101':{
|
|
6934
|
+
name: 'Pro Vibration',
|
|
6935
|
+
parse: (d, full)=>{
|
|
6936
|
+
return{
|
|
6937
|
+
mode: full[7] == 1? "raw" : "normal"
|
|
6938
|
+
};
|
|
6939
|
+
}
|
|
6940
|
+
},
|
|
6941
|
+
'103': {
|
|
6942
|
+
name: 'Custom Wireless Accelerometer Sensor',
|
|
6943
|
+
parse: (payload, parsed, mac) => {
|
|
6944
|
+
if(payload[9] === 0){ // mode raw
|
|
6945
|
+
var deviceAddr = mac;
|
|
6946
|
+
var data = {};
|
|
6947
|
+
switch(payload[8]){
|
|
6948
|
+
case 1:
|
|
6949
|
+
data.sensor_type = 'adxl';
|
|
6950
|
+
break;
|
|
6951
|
+
case 2:
|
|
6952
|
+
data.sensor_type = 'gyro';
|
|
6953
|
+
break;
|
|
6954
|
+
}
|
|
6955
|
+
switch(payload[10]){
|
|
6956
|
+
case 1:
|
|
6957
|
+
data.event_type = 'report';
|
|
6958
|
+
break;
|
|
6959
|
+
case 2:
|
|
6960
|
+
data.event_type = 'motion';
|
|
6961
|
+
break;
|
|
6962
|
+
}
|
|
6963
|
+
var hour = payload[13];
|
|
6964
|
+
var minute = payload[14];
|
|
6965
|
+
var expected_packets = payload.slice(19, 21).reduce(msbLsb);
|
|
6966
|
+
var current_packet = payload.slice(21, 23).reduce(msbLsb);
|
|
6967
|
+
var data_start = 23;
|
|
6968
|
+
|
|
6969
|
+
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
6970
|
+
if(expected_packets != 1){
|
|
6971
|
+
// if a packet is already stored with the same packet ID, or if packet ID is 1, or if current packet ID is not one more than last packet ID
|
|
6972
|
+
if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !((current_packet-1) in globalDevices[deviceAddr].data)) {
|
|
6973
|
+
console.log('-----');
|
|
6974
|
+
console.log('bad packet breakdown deleting stream');
|
|
6975
|
+
console.log(current_packet);
|
|
6976
|
+
console.log(expected_packets);
|
|
6977
|
+
console.log(current_packet in globalDevices[deviceAddr].data);
|
|
6978
|
+
console.log(current_packet == 1);
|
|
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);
|
|
6991
|
+
delete globalDevices[deviceAddr];
|
|
6992
|
+
if(current_packet != 1){
|
|
6993
|
+
return;
|
|
6994
|
+
} else{
|
|
6995
|
+
|
|
6996
|
+
var mode = payload[9];
|
|
6997
|
+
var odr = payload[11];
|
|
6998
|
+
var en_axis = payload[12] & 7;
|
|
6999
|
+
var fsr = payload[12] >> 5;
|
|
7000
|
+
var device_temp = payload.slice(15, 17).reduce(msbLsb) / 100;
|
|
7001
|
+
var external_temperature = payload.slice(17, 19).reduce(msbLsb) / 100;
|
|
7002
|
+
|
|
7003
|
+
globalDevices[deviceAddr] = {
|
|
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;
|
|
7017
|
+
}
|
|
7018
|
+
}
|
|
7019
|
+
else{
|
|
7020
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(data_start);
|
|
7021
|
+
}
|
|
7022
|
+
}
|
|
7023
|
+
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
|
+
globalDevices[deviceAddr] = {
|
|
7032
|
+
// stream_size: expected_packets,
|
|
7033
|
+
data: {},
|
|
7034
|
+
odr: odr,
|
|
7035
|
+
mo: mode,
|
|
7036
|
+
en_axis: en_axis,
|
|
7037
|
+
fsr: fsr,
|
|
7038
|
+
hour: hour,
|
|
7039
|
+
minute: minute,
|
|
7040
|
+
device_temp: device_temp,
|
|
7041
|
+
external_temp: external_temperature
|
|
7042
|
+
}
|
|
7043
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(data_start);
|
|
7044
|
+
}
|
|
7045
|
+
if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
|
|
7046
|
+
var raw_data = new Array();
|
|
7047
|
+
for(const packet in globalDevices[deviceAddr].data){
|
|
7048
|
+
raw_data = raw_data.concat(globalDevices[deviceAddr].data[packet]);
|
|
7049
|
+
}
|
|
7050
|
+
var label = 0;
|
|
7051
|
+
|
|
7052
|
+
var fft = new Array();
|
|
7053
|
+
var fft_concat = {};
|
|
7054
|
+
|
|
7055
|
+
var en_axis_data = {};
|
|
7056
|
+
switch (globalDevices[deviceAddr].en_axis){
|
|
7057
|
+
case 1:
|
|
7058
|
+
en_axis_data.x_offset = 0;
|
|
7059
|
+
en_axis_data.increment = 2;
|
|
7060
|
+
break;
|
|
7061
|
+
case 2:
|
|
7062
|
+
en_axis_data.y_offset = 0;
|
|
7063
|
+
en_axis_data.increment = 2;
|
|
7064
|
+
break;
|
|
7065
|
+
case 3:
|
|
7066
|
+
en_axis_data.x_offset = 0;
|
|
7067
|
+
en_axis_data.y_offset = 2;
|
|
7068
|
+
en_axis_data.increment = 4;
|
|
7069
|
+
break;
|
|
7070
|
+
case 4:
|
|
7071
|
+
en_axis_data.z_offset = 0;
|
|
7072
|
+
en_axis_data.increment = 2;
|
|
7073
|
+
break;
|
|
7074
|
+
case 5:
|
|
7075
|
+
en_axis_data.x_offset = 0;
|
|
7076
|
+
en_axis_data.z_offset = 2;
|
|
7077
|
+
en_axis_data.increment = 4;
|
|
7078
|
+
break;
|
|
7079
|
+
case 6:
|
|
7080
|
+
en_axis_data.y_offset = 0;
|
|
7081
|
+
en_axis_data.z_offset = 2;
|
|
7082
|
+
en_axis_data.increment = 4;
|
|
7083
|
+
break;
|
|
7084
|
+
case 7:
|
|
7085
|
+
en_axis_data.x_offset = 0;
|
|
7086
|
+
en_axis_data.y_offset = 2;
|
|
7087
|
+
en_axis_data.z_offset = 4;
|
|
7088
|
+
en_axis_data.increment = 6;
|
|
7089
|
+
break;
|
|
7090
|
+
default:
|
|
7091
|
+
en_axis_data.increment = 0;
|
|
7092
|
+
}
|
|
7093
|
+
/* Evaluate sensor type */
|
|
7094
|
+
if(payload[0] == 1){ // adxl
|
|
7095
|
+
var fsr_mult = .00030;
|
|
7096
|
+
var fsr_text = "";
|
|
7097
|
+
switch(globalDevices[deviceAddr].fsr){
|
|
7098
|
+
case 0:
|
|
7099
|
+
fsr_mult = 0.00030;
|
|
7100
|
+
break;
|
|
7101
|
+
case 1:
|
|
7102
|
+
fsr_mult = 0.00061;
|
|
7103
|
+
break;
|
|
7104
|
+
case 2:
|
|
7105
|
+
fsr_mult = 0.00122;
|
|
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
|
+
}
|
|
7150
|
+
}
|
|
7151
|
+
|
|
7152
|
+
for(var i = 0; i < raw_data.length; i+=en_axis_data.increment){
|
|
7153
|
+
label++;
|
|
7154
|
+
|
|
7155
|
+
fft_concat[label] = {};
|
|
7156
|
+
|
|
7157
|
+
if('x_offset' in en_axis_data){
|
|
7158
|
+
fft_concat[label].x = 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));
|
|
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
|
+
}
|
|
7166
|
+
}
|
|
7167
|
+
var fft_concat_obj = {
|
|
7168
|
+
mode: payload[9],
|
|
7169
|
+
sensor_type: data.sensor_type,
|
|
7170
|
+
msg_type: data.event_type,
|
|
7171
|
+
time_id: globalDevices[deviceAddr].hour +':'+ globalDevices[deviceAddr].minute,
|
|
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);
|
|
7190
|
+
}
|
|
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
|
+
}
|
|
7218
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(data_start);
|
|
7219
|
+
return;
|
|
7220
|
+
}
|
|
7221
|
+
}
|
|
7222
|
+
}
|
|
7223
|
+
},
|
|
6917
7224
|
'105': {
|
|
6918
7225
|
name: '1 Channel Automatic Luber With Ultrasound Vibration Sensor',
|
|
6919
7226
|
parse: (d) => {
|
|
@@ -6971,7 +7278,21 @@ function sensor_types(parent){
|
|
|
6971
7278
|
return error;
|
|
6972
7279
|
}
|
|
6973
7280
|
if(firmware > 4){
|
|
6974
|
-
let report_type =
|
|
7281
|
+
let report_type = "Regular";
|
|
7282
|
+
switch(d[41]){
|
|
7283
|
+
case 0:
|
|
7284
|
+
report_type = "Regular";
|
|
7285
|
+
break;
|
|
7286
|
+
case 1:
|
|
7287
|
+
report_type = "Shift end";
|
|
7288
|
+
break;
|
|
7289
|
+
case 2:
|
|
7290
|
+
report_type = "Interrupt";
|
|
7291
|
+
break;
|
|
7292
|
+
case 3:
|
|
7293
|
+
report_type = "Threshold";
|
|
7294
|
+
break;
|
|
7295
|
+
}
|
|
6975
7296
|
return {
|
|
6976
7297
|
digital_input_counter: d.slice(0, 4).reduce(msbLsb),
|
|
6977
7298
|
digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
@@ -7015,25 +7336,183 @@ function sensor_types(parent){
|
|
|
7015
7336
|
};
|
|
7016
7337
|
}
|
|
7017
7338
|
},
|
|
7339
|
+
'parse_fly': (frame) => {
|
|
7340
|
+
if(frame[2] > 8){
|
|
7341
|
+
let reset_mode = "Disabled";
|
|
7342
|
+
switch(frame[37]){
|
|
7343
|
+
case 0:
|
|
7344
|
+
reset_mode = "Disabled";
|
|
7345
|
+
break;
|
|
7346
|
+
case 1:
|
|
7347
|
+
reset_mode = "Shift Ends";
|
|
7348
|
+
break;
|
|
7349
|
+
case 2:
|
|
7350
|
+
reset_mode = "Timeout";
|
|
7351
|
+
break;
|
|
7352
|
+
}
|
|
7353
|
+
let acc_odr = "10Hz";
|
|
7354
|
+
switch(frame[39]){
|
|
7355
|
+
case 0:
|
|
7356
|
+
acc_odr = "10Hz";
|
|
7357
|
+
break;
|
|
7358
|
+
case 1:
|
|
7359
|
+
acc_odr = "20Hz";
|
|
7360
|
+
break;
|
|
7361
|
+
case 2:
|
|
7362
|
+
acc_odr = "50Hz";
|
|
7363
|
+
break;
|
|
7364
|
+
case 3:
|
|
7365
|
+
acc_odr = "100Hz";
|
|
7366
|
+
break;
|
|
7367
|
+
case 4:
|
|
7368
|
+
acc_odr = "200Hz";
|
|
7369
|
+
break;
|
|
7370
|
+
case 5:
|
|
7371
|
+
acc_odr = "400Hz";
|
|
7372
|
+
break;
|
|
7373
|
+
}
|
|
7374
|
+
let rtc_sampling_interval = "5 seconds";
|
|
7375
|
+
switch(frame[38]){
|
|
7376
|
+
case 0:
|
|
7377
|
+
rtc_sampling_interval = "1 minute";
|
|
7378
|
+
break;
|
|
7379
|
+
case 1:
|
|
7380
|
+
rtc_sampling_interval = "5 minutes";
|
|
7381
|
+
break;
|
|
7382
|
+
case 2:
|
|
7383
|
+
rtc_sampling_interval = "15 minutes";
|
|
7384
|
+
break;
|
|
7385
|
+
case 3:
|
|
7386
|
+
rtc_sampling_interval = "30 minutes";
|
|
7387
|
+
break;
|
|
7388
|
+
case 4:
|
|
7389
|
+
rtc_sampling_interval = "1 hour";
|
|
7390
|
+
break;
|
|
7391
|
+
case 5:
|
|
7392
|
+
rtc_sampling_interval = "2 hours";
|
|
7393
|
+
break;
|
|
7394
|
+
case 6:
|
|
7395
|
+
rtc_sampling_interval = "3 hours";
|
|
7396
|
+
break;
|
|
7397
|
+
case 7:
|
|
7398
|
+
rtc_sampling_interval = "6 hours";
|
|
7399
|
+
break;
|
|
7400
|
+
case 8:
|
|
7401
|
+
rtc_sampling_interval = "12 hours";
|
|
7402
|
+
break;
|
|
7403
|
+
case 9:
|
|
7404
|
+
rtc_sampling_interval = "5 seconds";
|
|
7405
|
+
break;
|
|
7406
|
+
case 10:
|
|
7407
|
+
rtc_sampling_interval = "10 seconds";
|
|
7408
|
+
break;
|
|
7409
|
+
case 11:
|
|
7410
|
+
rtc_sampling_interval = "15 seconds";
|
|
7411
|
+
break;
|
|
7412
|
+
case 12:
|
|
7413
|
+
rtc_sampling_interval = "30 seconds";
|
|
7414
|
+
break;
|
|
7415
|
+
}
|
|
7416
|
+
return {
|
|
7417
|
+
'firmware': frame[2],
|
|
7418
|
+
'accelerometer_threshold': (frame[16]* 32) + "mg",
|
|
7419
|
+
'debouncing_timeout': frame[17] + "sec",
|
|
7420
|
+
'accelero_state': frame[18]? "Enabled": "Disabled",
|
|
7421
|
+
'input_1_active_edge': frame[19]? "Rising": "Falling",
|
|
7422
|
+
'input_2_active_edge': frame[20]? "Rising": "Falling",
|
|
7423
|
+
'input_3_active_edge': frame[21]? "Rising": "Falling",
|
|
7424
|
+
'counter_threshold': frame.slice(22, 26).reduce(msbLsb) + "sec",
|
|
7425
|
+
'trasnmit_on_change_status': frame[26]? "Enabled": "Disabled",
|
|
7426
|
+
'Shift_end_1': [
|
|
7427
|
+
String(frame[27]).padStart(2, '0'),
|
|
7428
|
+
String(frame[28]).padStart(2, '0')
|
|
7429
|
+
].join(':'),
|
|
7430
|
+
'Shift_end_2': [
|
|
7431
|
+
String(frame[29]).padStart(2, '0'),
|
|
7432
|
+
String(frame[30]).padStart(2, '0')
|
|
7433
|
+
].join(':'),
|
|
7434
|
+
'Shift_end_3': [
|
|
7435
|
+
String(frame[31]).padStart(2, '0'),
|
|
7436
|
+
String(frame[32]).padStart(2, '0')
|
|
7437
|
+
].join(':'),
|
|
7438
|
+
'Shift_end_4': [
|
|
7439
|
+
String(frame[33]).padStart(2, '0'),
|
|
7440
|
+
String(frame[34]).padStart(2, '0')
|
|
7441
|
+
].join(':'),
|
|
7442
|
+
'reset_timeout': frame.slice(35, 37).reduce(msbLsb) + "min",
|
|
7443
|
+
'counter_reset_mode': reset_mode,
|
|
7444
|
+
'sampling_interval': rtc_sampling_interval,
|
|
7445
|
+
'acc_odr': acc_odr,
|
|
7446
|
+
'hardware_id': frame.slice(40, 43),
|
|
7447
|
+
'report_rate': frame.slice(43, 47).reduce(msbLsb) + "sec",
|
|
7448
|
+
'tx_life_counter': frame.slice(47, 51).reduce(msbLsb),
|
|
7449
|
+
'machine_values': {
|
|
7450
|
+
'firmware': frame[2],
|
|
7451
|
+
'accelerometer_threshold': frame[16],
|
|
7452
|
+
'debouncing_timeout': frame[17],
|
|
7453
|
+
'accelero_state': frame[18],
|
|
7454
|
+
'input_1_active_edge': frame[19],
|
|
7455
|
+
'input_2_active_edge': frame[20],
|
|
7456
|
+
'input_3_active_edge': frame[21],
|
|
7457
|
+
'counter_threshold': frame.slice(22, 26),
|
|
7458
|
+
'trasnmit_on_change_status': frame[26],
|
|
7459
|
+
'Shift_end_1': frame.slice(27, 29),
|
|
7460
|
+
'Shift_end_2': frame.slice(29, 31),
|
|
7461
|
+
'Shift_end_3': frame.slice(31, 33),
|
|
7462
|
+
'Shift_end_4': frame.slice(33, 35),
|
|
7463
|
+
'reset_timeout': frame.slice(35, 37),
|
|
7464
|
+
'counter_reset_mode': frame[37],
|
|
7465
|
+
'sampling_interval': frame[38],
|
|
7466
|
+
'acc_odr': frame[39],
|
|
7467
|
+
'hardware_id': frame.slice(40, 43),
|
|
7468
|
+
'report_rate': frame.slice(43, 47),
|
|
7469
|
+
'tx_life_counter': frame.slice(47, 51)
|
|
7470
|
+
}
|
|
7471
|
+
}
|
|
7472
|
+
} else{
|
|
7473
|
+
return {
|
|
7474
|
+
'firmware': frame[2],
|
|
7475
|
+
'report_rate': frame.slice(12, 16).reduce(msbLsb).toString() + "sec.",
|
|
7476
|
+
'accelerometer_threshold': (frame[16]* 32).toString() + "mg.",
|
|
7477
|
+
'debouncing_timeout': frame[17].toString() + "sec.",
|
|
7478
|
+
'accelero_state': frame[18],
|
|
7479
|
+
'digital_inputs_active_edge': frame.slice(19, 22).reduce(msbLsb),
|
|
7480
|
+
'counter_threshold': frame.slice(22, 26).reduce(msbLsb).toString() + "sec.",
|
|
7481
|
+
'trasnmit_on_change_status': frame[26],
|
|
7482
|
+
'machine_values': {
|
|
7483
|
+
'firmware': frame[2],
|
|
7484
|
+
'report_rate': frame.slice(12, 16),
|
|
7485
|
+
'accelerometer_threshold': frame[16],
|
|
7486
|
+
'debouncing_timeout': frame[17],
|
|
7487
|
+
'accelero_active_state': frame[18],
|
|
7488
|
+
'digital_inputs_active_edge': frame.slice(19, 22),
|
|
7489
|
+
'counter_threshold': frame.slice(22, 26),
|
|
7490
|
+
'trasnmit_on_change_status': frame[26]
|
|
7491
|
+
}
|
|
7492
|
+
}
|
|
7493
|
+
}
|
|
7494
|
+
}
|
|
7495
|
+
},
|
|
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
|
+
},
|
|
7018
7505
|
'parse_fly': (frame) => {
|
|
7019
7506
|
return {
|
|
7020
7507
|
'firmware': frame[2],
|
|
7021
|
-
'
|
|
7022
|
-
'
|
|
7023
|
-
'
|
|
7024
|
-
'accelero_active_state': frame[18],
|
|
7025
|
-
'digital_inputs_active_edge': frame.slice(19, 22).reduce(msbLsb),
|
|
7026
|
-
'counter_threshold': frame.slice(22, 26).reduce(msbLsb).toString() + "sec.",
|
|
7027
|
-
'trasnmit_on_change_status': frame[26],
|
|
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),
|
|
7028
7511
|
'machine_values': {
|
|
7029
7512
|
'firmware': frame[2],
|
|
7030
|
-
'
|
|
7031
|
-
'
|
|
7032
|
-
'
|
|
7033
|
-
'accelero_active_state': frame[18],
|
|
7034
|
-
'digital_inputs_active_edge': frame.slice(19, 22),
|
|
7035
|
-
'counter_threshold': frame.slice(22, 26),
|
|
7036
|
-
'trasnmit_on_change_status': frame[26]
|
|
7513
|
+
'hardware_id': frame.slice(12, 15),
|
|
7514
|
+
'sample_rate': frame.slice(15, 19),
|
|
7515
|
+
'tx_life_counter': frame.slice(19, 23)
|
|
7037
7516
|
}
|
|
7038
7517
|
}
|
|
7039
7518
|
}
|
|
@@ -7083,7 +7562,7 @@ function sensor_types(parent){
|
|
|
7083
7562
|
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
7084
7563
|
if(expected_packets != 1){
|
|
7085
7564
|
// if a packet is already stored with the same packet ID, or if packet ID is 1, or if current packet ID is not one more than last packet ID
|
|
7086
|
-
if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !(((current_packet
|
|
7565
|
+
if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !(((current_packet)-1) in globalDevices[deviceAddr].data)) {
|
|
7087
7566
|
console.log('-----');
|
|
7088
7567
|
console.log('bad packet breakdown deleting stream');
|
|
7089
7568
|
console.log(current_packet);
|
|
@@ -7108,8 +7587,7 @@ function sensor_types(parent){
|
|
|
7108
7587
|
} else{
|
|
7109
7588
|
|
|
7110
7589
|
var mode = payload[8];
|
|
7111
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
7112
|
-
var en_axis = payload[11] & 7;
|
|
7590
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
7113
7591
|
var fsr = payload[11] >> 5;
|
|
7114
7592
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
7115
7593
|
|
|
@@ -7118,7 +7596,6 @@ function sensor_types(parent){
|
|
|
7118
7596
|
data: {},
|
|
7119
7597
|
odr: odr,
|
|
7120
7598
|
mo: mode,
|
|
7121
|
-
en_axis: en_axis,
|
|
7122
7599
|
fsr: fsr,
|
|
7123
7600
|
hour: hour,
|
|
7124
7601
|
minute: minute,
|
|
@@ -7134,8 +7611,7 @@ function sensor_types(parent){
|
|
|
7134
7611
|
}
|
|
7135
7612
|
else{
|
|
7136
7613
|
var mode = payload[8];
|
|
7137
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
7138
|
-
var en_axis = payload[11] & 7;
|
|
7614
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
7139
7615
|
var fsr = payload[11] >> 5;
|
|
7140
7616
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
7141
7617
|
|
|
@@ -7144,7 +7620,6 @@ function sensor_types(parent){
|
|
|
7144
7620
|
data: {},
|
|
7145
7621
|
odr: odr,
|
|
7146
7622
|
mo: mode,
|
|
7147
|
-
en_axis: en_axis,
|
|
7148
7623
|
fsr: fsr,
|
|
7149
7624
|
hour: hour,
|
|
7150
7625
|
minute: minute,
|
|
@@ -7164,43 +7639,11 @@ function sensor_types(parent){
|
|
|
7164
7639
|
var fft_concat = {};
|
|
7165
7640
|
|
|
7166
7641
|
var en_axis_data = {};
|
|
7167
|
-
|
|
7168
|
-
|
|
7169
|
-
|
|
7170
|
-
|
|
7171
|
-
|
|
7172
|
-
case 2:
|
|
7173
|
-
en_axis_data.y_offset = 0;
|
|
7174
|
-
en_axis_data.increment = 2;
|
|
7175
|
-
break;
|
|
7176
|
-
case 3:
|
|
7177
|
-
en_axis_data.x_offset = 0;
|
|
7178
|
-
en_axis_data.y_offset = 2;
|
|
7179
|
-
en_axis_data.increment = 4;
|
|
7180
|
-
break;
|
|
7181
|
-
case 4:
|
|
7182
|
-
en_axis_data.z_offset = 0;
|
|
7183
|
-
en_axis_data.increment = 2;
|
|
7184
|
-
break;
|
|
7185
|
-
case 5:
|
|
7186
|
-
en_axis_data.x_offset = 0;
|
|
7187
|
-
en_axis_data.z_offset = 2;
|
|
7188
|
-
en_axis_data.increment = 4;
|
|
7189
|
-
break;
|
|
7190
|
-
case 6:
|
|
7191
|
-
en_axis_data.y_offset = 0;
|
|
7192
|
-
en_axis_data.z_offset = 2;
|
|
7193
|
-
en_axis_data.increment = 4;
|
|
7194
|
-
break;
|
|
7195
|
-
case 7:
|
|
7196
|
-
en_axis_data.x_offset = 0;
|
|
7197
|
-
en_axis_data.y_offset = 2;
|
|
7198
|
-
en_axis_data.z_offset = 4;
|
|
7199
|
-
en_axis_data.increment = 6;
|
|
7200
|
-
break;
|
|
7201
|
-
default:
|
|
7202
|
-
en_axis_data.increment = 0;
|
|
7203
|
-
}
|
|
7642
|
+
en_axis_data.x_offset = 0;
|
|
7643
|
+
en_axis_data.y_offset = 2;
|
|
7644
|
+
en_axis_data.z_offset = 4;
|
|
7645
|
+
en_axis_data.increment = 6;
|
|
7646
|
+
fft_concat = {x: [], y: [], z: []};
|
|
7204
7647
|
|
|
7205
7648
|
var fsr_mult = .00006;
|
|
7206
7649
|
var fsr_text = "";
|
|
@@ -7233,19 +7676,18 @@ function sensor_types(parent){
|
|
|
7233
7676
|
break;
|
|
7234
7677
|
}
|
|
7235
7678
|
|
|
7679
|
+
|
|
7236
7680
|
for(var i = 0; i < raw_data.length; i+=en_axis_data.increment){
|
|
7237
7681
|
label++;
|
|
7238
7682
|
|
|
7239
|
-
fft_concat[label] = {};
|
|
7240
|
-
|
|
7241
7683
|
if('x_offset' in en_axis_data){
|
|
7242
|
-
fft_concat
|
|
7684
|
+
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)));
|
|
7243
7685
|
}
|
|
7244
7686
|
if('y_offset' in en_axis_data){
|
|
7245
|
-
fft_concat
|
|
7687
|
+
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)));
|
|
7246
7688
|
}
|
|
7247
7689
|
if('z_offset' in en_axis_data){
|
|
7248
|
-
fft_concat
|
|
7690
|
+
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)));
|
|
7249
7691
|
}
|
|
7250
7692
|
}
|
|
7251
7693
|
var fft_concat_obj = {
|
|
@@ -7253,7 +7695,6 @@ function sensor_types(parent){
|
|
|
7253
7695
|
msg_type: msg_type,
|
|
7254
7696
|
time_id: globalDevices[deviceAddr].hour +':'+ globalDevices[deviceAddr].minute,
|
|
7255
7697
|
mac_address: deviceAddr,
|
|
7256
|
-
en_axis: globalDevices[deviceAddr].en_axis,
|
|
7257
7698
|
fsr: fsr_text,
|
|
7258
7699
|
odr: globalDevices[deviceAddr].odr,
|
|
7259
7700
|
device_temp: globalDevices[deviceAddr].device_temp,
|
|
@@ -7275,8 +7716,7 @@ function sensor_types(parent){
|
|
|
7275
7716
|
}else{
|
|
7276
7717
|
|
|
7277
7718
|
var mode = payload[8];
|
|
7278
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
7279
|
-
var en_axis = payload[11] & 7;
|
|
7719
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
7280
7720
|
var fsr = payload[11] >> 5;
|
|
7281
7721
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
7282
7722
|
|
|
@@ -7285,7 +7725,6 @@ function sensor_types(parent){
|
|
|
7285
7725
|
data: {},
|
|
7286
7726
|
odr: odr,
|
|
7287
7727
|
mo: mode,
|
|
7288
|
-
en_axis: en_axis,
|
|
7289
7728
|
fsr: fsr,
|
|
7290
7729
|
hour: hour,
|
|
7291
7730
|
minute: minute,
|
|
@@ -7565,54 +8004,109 @@ function sensor_types(parent){
|
|
|
7565
8004
|
frame_data.auto_raw_interval = frame[32] * frame_data.sampling_interval_number || 'disabled';
|
|
7566
8005
|
frame_data.auto_raw_interval = typeof frame_data.auto_raw_interval === 'number' ? frame_data.auto_raw_interval+'min' : frame_data.auto_raw_interval;
|
|
7567
8006
|
frame_data.smart_mode_threshold = frame[34] * 50;
|
|
7568
|
-
|
|
7569
|
-
|
|
7570
|
-
'destination_address': toMac(frame.slice(12, 16)),
|
|
7571
|
-
'mode': frame_data.mode,
|
|
7572
|
-
'odr': frame_data.odr_1+'Hz',
|
|
7573
|
-
'sampling_duration': frame_data.sampling_duration_1,
|
|
7574
|
-
'filter_status': frame_data.filter_status,
|
|
7575
|
-
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
7576
|
-
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
7577
|
-
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
7578
|
-
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
7579
|
-
'sampling_interval': frame_data.sampling_interval,
|
|
7580
|
-
'on_request_timeout': frame_data.on_request_timeout,
|
|
7581
|
-
'deadband': frame_data.deadband,
|
|
7582
|
-
'payload_length': frame_data.payload_length,
|
|
7583
|
-
'fsr': frame_data.fsr_text,
|
|
7584
|
-
'rpm_compute_status': frame_data.rpm_status,
|
|
7585
|
-
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
7586
|
-
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
7587
|
-
'smart_mode_skip_count': frame[33],
|
|
7588
|
-
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
7589
|
-
'uptime_counter': frame.slice(35, 39).reduce(msbLsb),
|
|
7590
|
-
'hardware_id': frame.slice(39, 42),
|
|
7591
|
-
'reserved': frame.slice(42, 46),
|
|
7592
|
-
'tx_lifetime_counter': frame.slice(46, 50).reduce(msbLsb),
|
|
7593
|
-
'machine_values': {
|
|
8007
|
+
if(frame[2] > 4){ // for Firmware v5 and above
|
|
8008
|
+
return {
|
|
7594
8009
|
'firmware': frame[2],
|
|
7595
|
-
'destination_address': toMac(frame.slice(12, 16)
|
|
7596
|
-
'mode':
|
|
7597
|
-
'odr':
|
|
7598
|
-
'sampling_duration':
|
|
7599
|
-
'filter_status':
|
|
7600
|
-
'lpf_coeff':
|
|
7601
|
-
'
|
|
7602
|
-
'
|
|
7603
|
-
'
|
|
7604
|
-
'
|
|
7605
|
-
'
|
|
7606
|
-
'
|
|
7607
|
-
'
|
|
8010
|
+
'destination_address': toMac(frame.slice(12, 16)),
|
|
8011
|
+
'mode': frame_data.mode,
|
|
8012
|
+
'odr': frame_data.odr_1+'Hz',
|
|
8013
|
+
'sampling_duration': frame_data.sampling_duration_1,
|
|
8014
|
+
'filter_status': frame_data.filter_status,
|
|
8015
|
+
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
8016
|
+
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
8017
|
+
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
8018
|
+
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
8019
|
+
'sampling_interval': frame_data.sampling_interval,
|
|
8020
|
+
'on_request_timeout': frame_data.on_request_timeout,
|
|
8021
|
+
'deadband': frame_data.deadband,
|
|
8022
|
+
'payload_length': frame_data.payload_length,
|
|
8023
|
+
'fsr': frame_data.fsr_text,
|
|
8024
|
+
'rpm_compute_status': frame_data.rpm_status,
|
|
8025
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
8026
|
+
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
8027
|
+
'smart_mode_skip_count': frame[33],
|
|
8028
|
+
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
8029
|
+
'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
|
|
8030
|
+
'max_tx_raw_samples': frame.slice(39, 41).reduce(msbLsb),
|
|
8031
|
+
'hardware_id': frame.slice(41, 44),
|
|
8032
|
+
'reserved': frame.slice(44, 48),
|
|
8033
|
+
'tx_lifetime_counter': frame.slice(48, 52).reduce(msbLsb),
|
|
8034
|
+
'machine_values': {
|
|
8035
|
+
'firmware': frame[2],
|
|
8036
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
8037
|
+
'mode': frame[16],
|
|
8038
|
+
'odr': frame[17],
|
|
8039
|
+
'sampling_duration': frame[18],
|
|
8040
|
+
'filter_status': frame[19],
|
|
8041
|
+
'lpf_coeff': frame[20],
|
|
8042
|
+
'hpf_coeff': frame[21],
|
|
8043
|
+
'sampling_interval': frame[22],
|
|
8044
|
+
'on_request_timeout': frame[23],
|
|
8045
|
+
'deadband': frame[24],
|
|
8046
|
+
'payload_length': frame[25],
|
|
8047
|
+
'fsr': frame[26],
|
|
8048
|
+
'rpm_compute_status': frame[27],
|
|
8049
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
|
|
8050
|
+
'auto_raw_interval': frame[32],
|
|
8051
|
+
'smart_mode_skip_count': frame[33],
|
|
8052
|
+
'smart_mode_acc_threshold':frame[34],
|
|
8053
|
+
'uptime_counter': frame.slice(35, 39),
|
|
8054
|
+
'max_tx_raw_samples': frame.slice(39, 41),
|
|
8055
|
+
'hardware_id': frame.slice(41, 44),
|
|
8056
|
+
'reserved': frame.slice(44, 48),
|
|
8057
|
+
'tx_lifetime_counter': frame.slice(48, 52)
|
|
8058
|
+
}
|
|
8059
|
+
}
|
|
8060
|
+
}else{
|
|
8061
|
+
return {
|
|
8062
|
+
'firmware': frame[2],
|
|
8063
|
+
'destination_address': toMac(frame.slice(12, 16)),
|
|
8064
|
+
'mode': frame_data.mode,
|
|
8065
|
+
'odr': frame_data.odr_1+'Hz',
|
|
8066
|
+
'sampling_duration': frame_data.sampling_duration_1,
|
|
8067
|
+
'filter_status': frame_data.filter_status,
|
|
8068
|
+
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
8069
|
+
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
8070
|
+
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
8071
|
+
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
8072
|
+
'sampling_interval': frame_data.sampling_interval,
|
|
8073
|
+
'on_request_timeout': frame_data.on_request_timeout,
|
|
8074
|
+
'deadband': frame_data.deadband,
|
|
8075
|
+
'payload_length': frame_data.payload_length,
|
|
8076
|
+
'fsr': frame_data.fsr_text,
|
|
8077
|
+
'rpm_compute_status': frame_data.rpm_status,
|
|
7608
8078
|
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
7609
|
-
'auto_raw_interval':
|
|
8079
|
+
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
7610
8080
|
'smart_mode_skip_count': frame[33],
|
|
7611
|
-
'smart_mode_acc_threshold':
|
|
7612
|
-
'uptime_counter': frame.slice(35, 39),
|
|
8081
|
+
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
8082
|
+
'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
|
|
7613
8083
|
'hardware_id': frame.slice(39, 42),
|
|
7614
8084
|
'reserved': frame.slice(42, 46),
|
|
7615
|
-
'tx_lifetime_counter': frame.slice(46, 50)
|
|
8085
|
+
'tx_lifetime_counter': frame.slice(46, 50).reduce(msbLsb),
|
|
8086
|
+
'machine_values': {
|
|
8087
|
+
'firmware': frame[2],
|
|
8088
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
8089
|
+
'mode': frame[16],
|
|
8090
|
+
'odr': frame[17],
|
|
8091
|
+
'sampling_duration': frame[18],
|
|
8092
|
+
'filter_status': frame[19],
|
|
8093
|
+
'lpf_coeff': frame[20],
|
|
8094
|
+
'hpf_coeff': frame[21],
|
|
8095
|
+
'sampling_interval': frame[22],
|
|
8096
|
+
'on_request_timeout': frame[23],
|
|
8097
|
+
'deadband': frame[24],
|
|
8098
|
+
'payload_length': frame[25],
|
|
8099
|
+
'fsr': frame[26],
|
|
8100
|
+
'rpm_compute_status': frame[27],
|
|
8101
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
|
|
8102
|
+
'auto_raw_interval': frame[32],
|
|
8103
|
+
'smart_mode_skip_count': frame[33],
|
|
8104
|
+
'smart_mode_acc_threshold':frame[34],
|
|
8105
|
+
'uptime_counter': frame.slice(35, 39),
|
|
8106
|
+
'hardware_id': frame.slice(39, 42),
|
|
8107
|
+
'reserved': frame.slice(42, 46),
|
|
8108
|
+
'tx_lifetime_counter': frame.slice(46, 50)
|
|
8109
|
+
}
|
|
7616
8110
|
}
|
|
7617
8111
|
}
|
|
7618
8112
|
}
|
|
@@ -7667,8 +8161,7 @@ function sensor_types(parent){
|
|
|
7667
8161
|
return;
|
|
7668
8162
|
} else{
|
|
7669
8163
|
var mode = payload[8];
|
|
7670
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
7671
|
-
var en_axis = payload[11] & 7;
|
|
8164
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
7672
8165
|
var fsr = payload[11] >> 5;
|
|
7673
8166
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
7674
8167
|
|
|
@@ -7677,7 +8170,6 @@ function sensor_types(parent){
|
|
|
7677
8170
|
data: {},
|
|
7678
8171
|
odr: odr,
|
|
7679
8172
|
mo: mode,
|
|
7680
|
-
en_axis: en_axis,
|
|
7681
8173
|
fsr: fsr,
|
|
7682
8174
|
hour: hour,
|
|
7683
8175
|
minute: minute,
|
|
@@ -7693,8 +8185,7 @@ function sensor_types(parent){
|
|
|
7693
8185
|
}
|
|
7694
8186
|
else{
|
|
7695
8187
|
var mode = payload[8];
|
|
7696
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
7697
|
-
var en_axis = payload[11] & 7;
|
|
8188
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
7698
8189
|
var fsr = payload[11] >> 5;
|
|
7699
8190
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
7700
8191
|
|
|
@@ -7703,7 +8194,6 @@ function sensor_types(parent){
|
|
|
7703
8194
|
data: {},
|
|
7704
8195
|
odr: odr,
|
|
7705
8196
|
mo: mode,
|
|
7706
|
-
en_axis: en_axis,
|
|
7707
8197
|
fsr: fsr,
|
|
7708
8198
|
hour: hour,
|
|
7709
8199
|
minute: minute,
|
|
@@ -7723,43 +8213,11 @@ function sensor_types(parent){
|
|
|
7723
8213
|
var fft_concat = {};
|
|
7724
8214
|
|
|
7725
8215
|
var en_axis_data = {};
|
|
7726
|
-
|
|
7727
|
-
|
|
7728
|
-
|
|
7729
|
-
|
|
7730
|
-
|
|
7731
|
-
case 2:
|
|
7732
|
-
en_axis_data.y_offset = 0;
|
|
7733
|
-
en_axis_data.increment = 2;
|
|
7734
|
-
break;
|
|
7735
|
-
case 3:
|
|
7736
|
-
en_axis_data.x_offset = 0;
|
|
7737
|
-
en_axis_data.y_offset = 2;
|
|
7738
|
-
en_axis_data.increment = 4;
|
|
7739
|
-
break;
|
|
7740
|
-
case 4:
|
|
7741
|
-
en_axis_data.z_offset = 0;
|
|
7742
|
-
en_axis_data.increment = 2;
|
|
7743
|
-
break;
|
|
7744
|
-
case 5:
|
|
7745
|
-
en_axis_data.x_offset = 0;
|
|
7746
|
-
en_axis_data.z_offset = 2;
|
|
7747
|
-
en_axis_data.increment = 4;
|
|
7748
|
-
break;
|
|
7749
|
-
case 6:
|
|
7750
|
-
en_axis_data.y_offset = 0;
|
|
7751
|
-
en_axis_data.z_offset = 2;
|
|
7752
|
-
en_axis_data.increment = 4;
|
|
7753
|
-
break;
|
|
7754
|
-
case 7:
|
|
7755
|
-
en_axis_data.x_offset = 0;
|
|
7756
|
-
en_axis_data.y_offset = 2;
|
|
7757
|
-
en_axis_data.z_offset = 4;
|
|
7758
|
-
en_axis_data.increment = 6;
|
|
7759
|
-
break;
|
|
7760
|
-
default:
|
|
7761
|
-
en_axis_data.increment = 0;
|
|
7762
|
-
}
|
|
8216
|
+
en_axis_data.x_offset = 0;
|
|
8217
|
+
en_axis_data.y_offset = 2;
|
|
8218
|
+
en_axis_data.z_offset = 4;
|
|
8219
|
+
en_axis_data.increment = 6;
|
|
8220
|
+
fft_concat = {x: [], y: [], z: []};
|
|
7763
8221
|
|
|
7764
8222
|
var fsr_mult = .00006;
|
|
7765
8223
|
var fsr_text = "";
|
|
@@ -7795,16 +8253,14 @@ function sensor_types(parent){
|
|
|
7795
8253
|
for(var i = 0; i < raw_data.length; i+=en_axis_data.increment){
|
|
7796
8254
|
label++;
|
|
7797
8255
|
|
|
7798
|
-
fft_concat[label] = {};
|
|
7799
|
-
|
|
7800
8256
|
if('x_offset' in en_axis_data){
|
|
7801
|
-
fft_concat
|
|
8257
|
+
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)));
|
|
7802
8258
|
}
|
|
7803
8259
|
if('y_offset' in en_axis_data){
|
|
7804
|
-
fft_concat
|
|
8260
|
+
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)));
|
|
7805
8261
|
}
|
|
7806
8262
|
if('z_offset' in en_axis_data){
|
|
7807
|
-
fft_concat
|
|
8263
|
+
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)));
|
|
7808
8264
|
}
|
|
7809
8265
|
}
|
|
7810
8266
|
|
|
@@ -7824,7 +8280,6 @@ function sensor_types(parent){
|
|
|
7824
8280
|
time_id: globalDevices[deviceAddr].hour +':'+ globalDevices[deviceAddr].minute,
|
|
7825
8281
|
probe: probe,
|
|
7826
8282
|
mac_address: deviceAddr,
|
|
7827
|
-
en_axis: globalDevices[deviceAddr].en_axis,
|
|
7828
8283
|
fsr: fsr_text,
|
|
7829
8284
|
odr: globalDevices[deviceAddr].odr,
|
|
7830
8285
|
device_temp: globalDevices[deviceAddr].device_temp,
|
|
@@ -7845,8 +8300,7 @@ function sensor_types(parent){
|
|
|
7845
8300
|
}
|
|
7846
8301
|
}else{
|
|
7847
8302
|
var mode = payload[8];
|
|
7848
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
7849
|
-
var en_axis = payload[11] & 7;
|
|
8303
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
7850
8304
|
var fsr = payload[11] >> 5;
|
|
7851
8305
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
7852
8306
|
|
|
@@ -7855,7 +8309,6 @@ function sensor_types(parent){
|
|
|
7855
8309
|
data: {},
|
|
7856
8310
|
odr: odr,
|
|
7857
8311
|
mo: mode,
|
|
7858
|
-
en_axis: en_axis,
|
|
7859
8312
|
fsr: fsr,
|
|
7860
8313
|
hour: hour,
|
|
7861
8314
|
minute: minute,
|
|
@@ -7902,7 +8355,7 @@ function sensor_types(parent){
|
|
|
7902
8355
|
break;
|
|
7903
8356
|
}
|
|
7904
8357
|
var odr2;
|
|
7905
|
-
switch(payload[
|
|
8358
|
+
switch(payload[56]){
|
|
7906
8359
|
case 6:
|
|
7907
8360
|
odr2 = "50Hz"
|
|
7908
8361
|
break;
|
|
@@ -7966,42 +8419,42 @@ function sensor_types(parent){
|
|
|
7966
8419
|
y1_peak_two_Hz: payload.slice(36, 38).reduce(msbLsb),
|
|
7967
8420
|
y1_peak_three_Hz: payload.slice(38, 40).reduce(msbLsb),
|
|
7968
8421
|
|
|
7969
|
-
z1_rms_ACC_G: payload.slice(40, 42).reduce(msbLsb)/1000,
|
|
7970
|
-
z1_max_ACC_G: payload.slice(42, 44).reduce(msbLsb)/1000,
|
|
7971
|
-
z1_velocity_mm_sec: payload.slice(44, 46).reduce(msbLsb) / 100,
|
|
7972
|
-
z1_displacement_mm: payload.slice(46, 48).reduce(msbLsb) / 100,
|
|
7973
|
-
z1_peak_one_Hz: payload.slice(48, 50).reduce(msbLsb),
|
|
7974
|
-
z1_peak_two_Hz: payload.slice(50, 52).reduce(msbLsb),
|
|
7975
|
-
z1_peak_three_Hz: payload.slice(52, 54).reduce(msbLsb),
|
|
7976
|
-
rpm_1: payload.slice(54, 56).reduce(msbLsb),
|
|
7977
|
-
|
|
7978
|
-
s2_odr: odr2,
|
|
7979
|
-
s2_temperature: signInt(payload.slice(55, 57).reduce(msbLsb), 16) / 100,
|
|
7980
|
-
|
|
7981
|
-
x2_rms_ACC_G: payload.slice(57, 59).reduce(msbLsb)/1000,
|
|
7982
|
-
x2_max_ACC_G: payload.slice(59, 61).reduce(msbLsb)/1000,
|
|
7983
|
-
x2_velocity_mm_sec: payload.slice(61, 63).reduce(msbLsb) / 100,
|
|
7984
|
-
x2_displacement_mm: payload.slice(63, 65).reduce(msbLsb) / 100,
|
|
7985
|
-
x2_peak_one_Hz: payload.slice(65, 67).reduce(msbLsb),
|
|
7986
|
-
x2_peak_two_Hz: payload.slice(67, 69).reduce(msbLsb),
|
|
7987
|
-
x2_peak_three_Hz: payload.slice(69, 71).reduce(msbLsb),
|
|
7988
|
-
|
|
7989
|
-
y2_rms_ACC_G: payload.slice(71, 73).reduce(msbLsb)/1000,
|
|
7990
|
-
y2_max_ACC_G: payload.slice(73, 75).reduce(msbLsb)/1000,
|
|
7991
|
-
y2_velocity_mm_sec: payload.slice(75, 77).reduce(msbLsb) / 100,
|
|
7992
|
-
y2_displacement_mm: payload.slice(77, 79).reduce(msbLsb) / 100,
|
|
7993
|
-
y2_peak_one_Hz: payload.slice(79, 81).reduce(msbLsb),
|
|
7994
|
-
y2_peak_two_Hz: payload.slice(81, 83).reduce(msbLsb),
|
|
7995
|
-
y2_peak_three_Hz: payload.slice(83, 85).reduce(msbLsb),
|
|
8422
|
+
z1_rms_ACC_G: payload.slice(40, 42).reduce(msbLsb)/1000,
|
|
8423
|
+
z1_max_ACC_G: payload.slice(42, 44).reduce(msbLsb)/1000,
|
|
8424
|
+
z1_velocity_mm_sec: payload.slice(44, 46).reduce(msbLsb) / 100,
|
|
8425
|
+
z1_displacement_mm: payload.slice(46, 48).reduce(msbLsb) / 100,
|
|
8426
|
+
z1_peak_one_Hz: payload.slice(48, 50).reduce(msbLsb),
|
|
8427
|
+
z1_peak_two_Hz: payload.slice(50, 52).reduce(msbLsb),
|
|
8428
|
+
z1_peak_three_Hz: payload.slice(52, 54).reduce(msbLsb),
|
|
8429
|
+
rpm_1: payload.slice(54, 56).reduce(msbLsb),
|
|
7996
8430
|
|
|
7997
|
-
|
|
7998
|
-
|
|
7999
|
-
|
|
8000
|
-
|
|
8001
|
-
|
|
8002
|
-
|
|
8003
|
-
|
|
8004
|
-
|
|
8431
|
+
s2_odr: odr2,
|
|
8432
|
+
s2_temperature: signInt(payload.slice(57, 59).reduce(msbLsb), 16) / 100,
|
|
8433
|
+
|
|
8434
|
+
x2_rms_ACC_G: payload.slice(59, 61).reduce(msbLsb)/1000,
|
|
8435
|
+
x2_max_ACC_G: payload.slice(61, 63).reduce(msbLsb)/1000,
|
|
8436
|
+
x2_velocity_mm_sec: payload.slice(63, 65).reduce(msbLsb) / 100,
|
|
8437
|
+
x2_displacement_mm: payload.slice(65, 67).reduce(msbLsb) / 100,
|
|
8438
|
+
x2_peak_one_Hz: payload.slice(67, 69).reduce(msbLsb),
|
|
8439
|
+
x2_peak_two_Hz: payload.slice(69, 71).reduce(msbLsb),
|
|
8440
|
+
x2_peak_three_Hz: payload.slice(71, 73).reduce(msbLsb),
|
|
8441
|
+
|
|
8442
|
+
y2_rms_ACC_G: payload.slice(73, 75).reduce(msbLsb)/1000,
|
|
8443
|
+
y2_max_ACC_G: payload.slice(75, 77).reduce(msbLsb)/1000,
|
|
8444
|
+
y2_velocity_mm_sec: payload.slice(77, 79).reduce(msbLsb) / 100,
|
|
8445
|
+
y2_displacement_mm: payload.slice(79, 81).reduce(msbLsb) / 100,
|
|
8446
|
+
y2_peak_one_Hz: payload.slice(81, 83).reduce(msbLsb),
|
|
8447
|
+
y2_peak_two_Hz: payload.slice(83, 85).reduce(msbLsb),
|
|
8448
|
+
y2_peak_three_Hz: payload.slice(85, 87).reduce(msbLsb),
|
|
8449
|
+
|
|
8450
|
+
z2_rms_ACC_G: payload.slice(87, 89).reduce(msbLsb)/1000,
|
|
8451
|
+
z2_max_ACC_G: payload.slice(89, 91).reduce(msbLsb)/1000,
|
|
8452
|
+
z2_velocity_mm_sec: payload.slice(91, 93).reduce(msbLsb) / 100,
|
|
8453
|
+
z2_displacement_mm: payload.slice(93, 95).reduce(msbLsb) / 100,
|
|
8454
|
+
z2_peak_one_Hz: payload.slice(95, 97).reduce(msbLsb),
|
|
8455
|
+
z2_peak_two_Hz: payload.slice(97, 99).reduce(msbLsb),
|
|
8456
|
+
z2_peak_three_Hz: payload.slice(99, 101).reduce(msbLsb),
|
|
8457
|
+
rpm_2: payload.slice(101, 103).reduce(msbLsb)
|
|
8005
8458
|
};
|
|
8006
8459
|
}
|
|
8007
8460
|
// else{
|
|
@@ -8305,68 +8758,137 @@ function sensor_types(parent){
|
|
|
8305
8758
|
frame_data.auto_raw_interval = typeof frame_data.auto_raw_interval === 'number' ? frame_data.auto_raw_interval+'min' : frame_data.auto_raw_interval;
|
|
8306
8759
|
frame_data.p1_smart_mode_threshold = frame[38] * 50;
|
|
8307
8760
|
frame_data.p2_smart_mode_threshold = frame[39] * 50;
|
|
8308
|
-
|
|
8309
|
-
|
|
8310
|
-
'destination_address': toMac(frame.slice(12, 16)),
|
|
8311
|
-
'mode': frame_data.mode,
|
|
8312
|
-
'odr_1': frame_data.odr_1+'Hz',
|
|
8313
|
-
'odr_2': frame_data.odr_2+'Hz',
|
|
8314
|
-
'sampling_duration_1': frame_data.sampling_duration_1,
|
|
8315
|
-
'sampling_duration_2': frame_data.sampling_duration_2,
|
|
8316
|
-
'filter_status': frame_data.filter_status,
|
|
8317
|
-
'lpf_coeff_1': frame_data.lpf_coeff_1,
|
|
8318
|
-
'lpf_freq_1': frame_data.lpf_freq_1+'Hz',
|
|
8319
|
-
'lpf_coeff_2': frame_data.lpf_coeff_2,
|
|
8320
|
-
'lpf_freq_2': frame_data.lpf_freq_2+'Hz',
|
|
8321
|
-
'hpf_coeff_1': frame_data.hpf_coeff_1,
|
|
8322
|
-
'hpf_freq_1': frame_data.hpf_freq_1+'Hz',
|
|
8323
|
-
'hpf_coeff_2': frame_data.hpf_coeff_2,
|
|
8324
|
-
'hpf_freq_2': frame_data.hpf_freq_2+'Hz',
|
|
8325
|
-
'sampling_interval': frame_data.sampling_interval,
|
|
8326
|
-
'on_request_timeout': frame_data.on_request_timeout,
|
|
8327
|
-
'deadband': frame_data.deadband,
|
|
8328
|
-
'payload_length': frame_data.payload_length,
|
|
8329
|
-
'fsr': frame_data.fsr_text,
|
|
8330
|
-
'rpm_compute_status': frame_data.rpm_status,
|
|
8331
|
-
'auto_raw_destination_address': toMac(frame.slice(32 , 36)),
|
|
8332
|
-
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
8333
|
-
'smart_mode_skip_count': frame[37],
|
|
8334
|
-
'smart_mode_acc_threshold_probe_1': frame_data.p1_smart_mode_threshold+'mg',
|
|
8335
|
-
'smart_mode_acc_threshold_probe_2': frame_data.p2_smart_mode_threshold+'mg',
|
|
8336
|
-
'uptime_counter_probe_1': frame.slice(40, 44).reduce(msbLsb),
|
|
8337
|
-
'uptime_counter_probe_2': frame.slice(44, 48).reduce(msbLsb),
|
|
8338
|
-
'hardware_id': frame.slice(48, 51),
|
|
8339
|
-
'reserved': frame.slice(51, 55),
|
|
8340
|
-
'tx_lifetime_counter': frame.slice(55, 59).reduce(msbLsb),
|
|
8341
|
-
'machine_values': {
|
|
8761
|
+
if(frame[2] > 4){ // for Firmware v5 and above
|
|
8762
|
+
return {
|
|
8342
8763
|
'firmware': frame[2],
|
|
8343
|
-
'destination_address': toMac(frame.slice(12, 16)
|
|
8344
|
-
'mode':
|
|
8345
|
-
'odr_1':
|
|
8346
|
-
'odr_2':
|
|
8347
|
-
'sampling_duration_1':
|
|
8348
|
-
'sampling_duration_2':
|
|
8349
|
-
'filter_status':
|
|
8350
|
-
'lpf_coeff_1':
|
|
8351
|
-
'
|
|
8352
|
-
'
|
|
8353
|
-
'
|
|
8354
|
-
'
|
|
8355
|
-
'
|
|
8356
|
-
'
|
|
8357
|
-
'
|
|
8358
|
-
'
|
|
8359
|
-
'
|
|
8764
|
+
'destination_address': toMac(frame.slice(12, 16)),
|
|
8765
|
+
'mode': frame_data.mode,
|
|
8766
|
+
'odr_1': frame_data.odr_1+'Hz',
|
|
8767
|
+
'odr_2': frame_data.odr_2+'Hz',
|
|
8768
|
+
'sampling_duration_1': frame_data.sampling_duration_1,
|
|
8769
|
+
'sampling_duration_2': frame_data.sampling_duration_2,
|
|
8770
|
+
'filter_status': frame_data.filter_status,
|
|
8771
|
+
'lpf_coeff_1': frame_data.lpf_coeff_1,
|
|
8772
|
+
'lpf_freq_1': frame_data.lpf_freq_1+'Hz',
|
|
8773
|
+
'lpf_coeff_2': frame_data.lpf_coeff_2,
|
|
8774
|
+
'lpf_freq_2': frame_data.lpf_freq_2+'Hz',
|
|
8775
|
+
'hpf_coeff_1': frame_data.hpf_coeff_1,
|
|
8776
|
+
'hpf_freq_1': frame_data.hpf_freq_1+'Hz',
|
|
8777
|
+
'hpf_coeff_2': frame_data.hpf_coeff_2,
|
|
8778
|
+
'hpf_freq_2': frame_data.hpf_freq_2+'Hz',
|
|
8779
|
+
'sampling_interval': frame_data.sampling_interval,
|
|
8780
|
+
'on_request_timeout': frame_data.on_request_timeout,
|
|
8781
|
+
'deadband': frame_data.deadband,
|
|
8782
|
+
'payload_length': frame_data.payload_length,
|
|
8783
|
+
'fsr': frame_data.fsr_text,
|
|
8784
|
+
'rpm_compute_status': frame_data.rpm_status,
|
|
8360
8785
|
'auto_raw_destination_address': toMac(frame.slice(32 , 36)),
|
|
8361
|
-
'auto_raw_interval':
|
|
8786
|
+
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
8362
8787
|
'smart_mode_skip_count': frame[37],
|
|
8363
|
-
'smart_mode_acc_threshold_probe_1':
|
|
8364
|
-
'smart_mode_acc_threshold_probe_2':
|
|
8365
|
-
'uptime_counter_probe_1': frame.slice(40, 44),
|
|
8366
|
-
'uptime_counter_probe_2': frame.slice(44, 48),
|
|
8788
|
+
'smart_mode_acc_threshold_probe_1': frame_data.p1_smart_mode_threshold+'mg',
|
|
8789
|
+
'smart_mode_acc_threshold_probe_2': frame_data.p2_smart_mode_threshold+'mg',
|
|
8790
|
+
'uptime_counter_probe_1': frame.slice(40, 44).reduce(msbLsb)+'sec',
|
|
8791
|
+
'uptime_counter_probe_2': frame.slice(44, 48).reduce(msbLsb)+'sec',
|
|
8792
|
+
'max_tx_raw_samples': frame.slice(48, 50).reduce(msbLsb),
|
|
8793
|
+
'hardware_id': frame.slice(50, 53),
|
|
8794
|
+
'reserved': frame.slice(53, 57),
|
|
8795
|
+
'tx_lifetime_counter': frame.slice(57, 61).reduce(msbLsb),
|
|
8796
|
+
'machine_values': {
|
|
8797
|
+
'firmware': frame[2],
|
|
8798
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
8799
|
+
'mode': frame[16],
|
|
8800
|
+
'odr_1': frame[17],
|
|
8801
|
+
'odr_2': frame[18],
|
|
8802
|
+
'sampling_duration_1': frame[19],
|
|
8803
|
+
'sampling_duration_2': frame[20],
|
|
8804
|
+
'filter_status': frame[21],
|
|
8805
|
+
'lpf_coeff_1': frame[22],
|
|
8806
|
+
'lpf_coeff_2': frame[23],
|
|
8807
|
+
'hpf_coeff_1': frame[24],
|
|
8808
|
+
'hpf_coeff_2': frame[25],
|
|
8809
|
+
'sampling_interval': frame[26],
|
|
8810
|
+
'on_request_timeout': frame[27],
|
|
8811
|
+
'deadband': frame[28],
|
|
8812
|
+
'payload_length': frame[29],
|
|
8813
|
+
'fsm': frame[30],
|
|
8814
|
+
'rpm_compute_status': frame[31],
|
|
8815
|
+
'auto_raw_destination_address': toMac(frame.slice(32 , 36), false),
|
|
8816
|
+
'auto_raw_interval': frame[36],
|
|
8817
|
+
'smart_mode_skip_count': frame[37],
|
|
8818
|
+
'smart_mode_acc_threshold_probe_1':frame[38],
|
|
8819
|
+
'smart_mode_acc_threshold_probe_2':frame[39],
|
|
8820
|
+
'uptime_counter_probe_1': frame.slice(40, 44),
|
|
8821
|
+
'uptime_counter_probe_2': frame.slice(44, 48),
|
|
8822
|
+
'max_tx_raw_samples': frame.slice(48, 50),
|
|
8823
|
+
'hardware_id': frame.slice(50, 53),
|
|
8824
|
+
'reserved': frame.slice(53, 57),
|
|
8825
|
+
'tx_lifetime_counter': frame.slice(57, 61)
|
|
8826
|
+
}
|
|
8827
|
+
}
|
|
8828
|
+
}else{
|
|
8829
|
+
return {
|
|
8830
|
+
'firmware': frame[2],
|
|
8831
|
+
'destination_address': toMac(frame.slice(12, 16)),
|
|
8832
|
+
'mode': frame_data.mode,
|
|
8833
|
+
'odr_1': frame_data.odr_1+'Hz',
|
|
8834
|
+
'odr_2': frame_data.odr_2+'Hz',
|
|
8835
|
+
'sampling_duration_1': frame_data.sampling_duration_1,
|
|
8836
|
+
'sampling_duration_2': frame_data.sampling_duration_2,
|
|
8837
|
+
'filter_status': frame_data.filter_status,
|
|
8838
|
+
'lpf_coeff_1': frame_data.lpf_coeff_1,
|
|
8839
|
+
'lpf_freq_1': frame_data.lpf_freq_1+'Hz',
|
|
8840
|
+
'lpf_coeff_2': frame_data.lpf_coeff_2,
|
|
8841
|
+
'lpf_freq_2': frame_data.lpf_freq_2+'Hz',
|
|
8842
|
+
'hpf_coeff_1': frame_data.hpf_coeff_1,
|
|
8843
|
+
'hpf_freq_1': frame_data.hpf_freq_1+'Hz',
|
|
8844
|
+
'hpf_coeff_2': frame_data.hpf_coeff_2,
|
|
8845
|
+
'hpf_freq_2': frame_data.hpf_freq_2+'Hz',
|
|
8846
|
+
'sampling_interval': frame_data.sampling_interval,
|
|
8847
|
+
'on_request_timeout': frame_data.on_request_timeout,
|
|
8848
|
+
'deadband': frame_data.deadband,
|
|
8849
|
+
'payload_length': frame_data.payload_length,
|
|
8850
|
+
'fsr': frame_data.fsr_text,
|
|
8851
|
+
'rpm_compute_status': frame_data.rpm_status,
|
|
8852
|
+
'auto_raw_destination_address': toMac(frame.slice(32 , 36)),
|
|
8853
|
+
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
8854
|
+
'smart_mode_skip_count': frame[37],
|
|
8855
|
+
'smart_mode_acc_threshold_probe_1': frame_data.p1_smart_mode_threshold+'mg',
|
|
8856
|
+
'smart_mode_acc_threshold_probe_2': frame_data.p2_smart_mode_threshold+'mg',
|
|
8857
|
+
'uptime_counter_probe_1': frame.slice(40, 44).reduce(msbLsb)+'sec',
|
|
8858
|
+
'uptime_counter_probe_2': frame.slice(44, 48).reduce(msbLsb)+'sec',
|
|
8367
8859
|
'hardware_id': frame.slice(48, 51),
|
|
8368
8860
|
'reserved': frame.slice(51, 55),
|
|
8369
|
-
'tx_lifetime_counter': frame.slice(55, 59).reduce(msbLsb)
|
|
8861
|
+
'tx_lifetime_counter': frame.slice(55, 59).reduce(msbLsb),
|
|
8862
|
+
'machine_values': {
|
|
8863
|
+
'firmware': frame[2],
|
|
8864
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
8865
|
+
'mode': frame[16],
|
|
8866
|
+
'odr_1': frame[17],
|
|
8867
|
+
'odr_2': frame[18],
|
|
8868
|
+
'sampling_duration_1': frame[19],
|
|
8869
|
+
'sampling_duration_2': frame[20],
|
|
8870
|
+
'filter_status': frame[21],
|
|
8871
|
+
'lpf_coeff_1': frame[22],
|
|
8872
|
+
'lpf_coeff_2': frame[23],
|
|
8873
|
+
'hpf_coeff_1': frame[24],
|
|
8874
|
+
'hpf_coeff_2': frame[25],
|
|
8875
|
+
'sampling_interval': frame[26],
|
|
8876
|
+
'on_request_timeout': frame[27],
|
|
8877
|
+
'deadband': frame[28],
|
|
8878
|
+
'payload_length': frame[29],
|
|
8879
|
+
'fsm': frame[30],
|
|
8880
|
+
'rpm_compute_status': frame[31],
|
|
8881
|
+
'auto_raw_destination_address': toMac(frame.slice(32 , 36), false),
|
|
8882
|
+
'auto_raw_interval': frame[36],
|
|
8883
|
+
'smart_mode_skip_count': frame[37],
|
|
8884
|
+
'smart_mode_acc_threshold_probe_1':frame[38],
|
|
8885
|
+
'smart_mode_acc_threshold_probe_2':frame[39],
|
|
8886
|
+
'uptime_counter_probe_1': frame.slice(40, 44),
|
|
8887
|
+
'uptime_counter_probe_2': frame.slice(44, 48),
|
|
8888
|
+
'hardware_id': frame.slice(48, 51),
|
|
8889
|
+
'reserved': frame.slice(51, 55),
|
|
8890
|
+
'tx_lifetime_counter': frame.slice(55, 59)
|
|
8891
|
+
}
|
|
8370
8892
|
}
|
|
8371
8893
|
}
|
|
8372
8894
|
}
|
|
@@ -8418,8 +8940,7 @@ function sensor_types(parent){
|
|
|
8418
8940
|
} else{
|
|
8419
8941
|
|
|
8420
8942
|
var mode = payload[8];
|
|
8421
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
8422
|
-
var en_axis = payload[11] & 7;
|
|
8943
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
8423
8944
|
var fsr = payload[11] >> 5;
|
|
8424
8945
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
8425
8946
|
|
|
@@ -8428,7 +8949,6 @@ function sensor_types(parent){
|
|
|
8428
8949
|
data: {},
|
|
8429
8950
|
odr: odr,
|
|
8430
8951
|
mo: mode,
|
|
8431
|
-
en_axis: en_axis,
|
|
8432
8952
|
fsr: fsr,
|
|
8433
8953
|
hour: hour,
|
|
8434
8954
|
minute: minute,
|
|
@@ -8444,8 +8964,7 @@ function sensor_types(parent){
|
|
|
8444
8964
|
}
|
|
8445
8965
|
else{
|
|
8446
8966
|
var mode = payload[8];
|
|
8447
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
8448
|
-
var en_axis = payload[11] & 7;
|
|
8967
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
8449
8968
|
var fsr = payload[11] >> 5;
|
|
8450
8969
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
8451
8970
|
|
|
@@ -8454,7 +8973,6 @@ function sensor_types(parent){
|
|
|
8454
8973
|
data: {},
|
|
8455
8974
|
odr: odr,
|
|
8456
8975
|
mo: mode,
|
|
8457
|
-
en_axis: en_axis,
|
|
8458
8976
|
fsr: fsr,
|
|
8459
8977
|
hour: hour,
|
|
8460
8978
|
minute: minute,
|
|
@@ -8473,43 +8991,11 @@ function sensor_types(parent){
|
|
|
8473
8991
|
var fft_concat = {};
|
|
8474
8992
|
|
|
8475
8993
|
var en_axis_data = {};
|
|
8476
|
-
|
|
8477
|
-
|
|
8478
|
-
|
|
8479
|
-
|
|
8480
|
-
|
|
8481
|
-
case 2:
|
|
8482
|
-
en_axis_data.y_offset = 0;
|
|
8483
|
-
en_axis_data.increment = 2;
|
|
8484
|
-
break;
|
|
8485
|
-
case 3:
|
|
8486
|
-
en_axis_data.x_offset = 0;
|
|
8487
|
-
en_axis_data.y_offset = 2;
|
|
8488
|
-
en_axis_data.increment = 4;
|
|
8489
|
-
break;
|
|
8490
|
-
case 4:
|
|
8491
|
-
en_axis_data.z_offset = 0;
|
|
8492
|
-
en_axis_data.increment = 2;
|
|
8493
|
-
break;
|
|
8494
|
-
case 5:
|
|
8495
|
-
en_axis_data.x_offset = 0;
|
|
8496
|
-
en_axis_data.z_offset = 2;
|
|
8497
|
-
en_axis_data.increment = 4;
|
|
8498
|
-
break;
|
|
8499
|
-
case 6:
|
|
8500
|
-
en_axis_data.y_offset = 0;
|
|
8501
|
-
en_axis_data.z_offset = 2;
|
|
8502
|
-
en_axis_data.increment = 4;
|
|
8503
|
-
break;
|
|
8504
|
-
case 7:
|
|
8505
|
-
en_axis_data.x_offset = 0;
|
|
8506
|
-
en_axis_data.y_offset = 2;
|
|
8507
|
-
en_axis_data.z_offset = 4;
|
|
8508
|
-
en_axis_data.increment = 6;
|
|
8509
|
-
break;
|
|
8510
|
-
default:
|
|
8511
|
-
en_axis_data.increment = 0;
|
|
8512
|
-
}
|
|
8994
|
+
en_axis_data.x_offset = 0;
|
|
8995
|
+
en_axis_data.y_offset = 2;
|
|
8996
|
+
en_axis_data.z_offset = 4;
|
|
8997
|
+
en_axis_data.increment = 6;
|
|
8998
|
+
fft_concat = {x: [], y: [], z: []};
|
|
8513
8999
|
|
|
8514
9000
|
var fsr_mult = .00006;
|
|
8515
9001
|
var fsr_text = "";
|
|
@@ -8545,16 +9031,14 @@ function sensor_types(parent){
|
|
|
8545
9031
|
for(var i = 0; i < raw_data.length; i+=en_axis_data.increment){
|
|
8546
9032
|
label++;
|
|
8547
9033
|
|
|
8548
|
-
fft_concat[label] = {};
|
|
8549
|
-
|
|
8550
9034
|
if('x_offset' in en_axis_data){
|
|
8551
|
-
fft_concat
|
|
9035
|
+
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)));
|
|
8552
9036
|
}
|
|
8553
9037
|
if('y_offset' in en_axis_data){
|
|
8554
|
-
fft_concat
|
|
9038
|
+
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)));
|
|
8555
9039
|
}
|
|
8556
9040
|
if('z_offset' in en_axis_data){
|
|
8557
|
-
fft_concat
|
|
9041
|
+
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)));
|
|
8558
9042
|
}
|
|
8559
9043
|
}
|
|
8560
9044
|
var fft_concat_obj = {
|
|
@@ -8562,7 +9046,6 @@ function sensor_types(parent){
|
|
|
8562
9046
|
msg_type: msg_type,
|
|
8563
9047
|
time_id: globalDevices[deviceAddr].hour +':'+ globalDevices[deviceAddr].minute,
|
|
8564
9048
|
mac_address: deviceAddr,
|
|
8565
|
-
en_axis: globalDevices[deviceAddr].en_axis,
|
|
8566
9049
|
fsr: fsr_text,
|
|
8567
9050
|
odr: globalDevices[deviceAddr].odr,
|
|
8568
9051
|
device_temp: globalDevices[deviceAddr].device_temp,
|
|
@@ -8588,8 +9071,7 @@ function sensor_types(parent){
|
|
|
8588
9071
|
}else{
|
|
8589
9072
|
|
|
8590
9073
|
var mode = payload[8];
|
|
8591
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
8592
|
-
var en_axis = payload[11] & 7;
|
|
9074
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
8593
9075
|
var fsr = payload[11] >> 5;
|
|
8594
9076
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
8595
9077
|
|
|
@@ -8598,7 +9080,6 @@ function sensor_types(parent){
|
|
|
8598
9080
|
data: {},
|
|
8599
9081
|
odr: odr,
|
|
8600
9082
|
mo: mode,
|
|
8601
|
-
en_axis: en_axis,
|
|
8602
9083
|
fsr: fsr,
|
|
8603
9084
|
hour: hour,
|
|
8604
9085
|
minute: minute,
|
|
@@ -8879,54 +9360,109 @@ function sensor_types(parent){
|
|
|
8879
9360
|
frame_data.auto_raw_interval = frame[32] * frame_data.sampling_interval_number || 'disabled';
|
|
8880
9361
|
frame_data.auto_raw_interval = typeof frame_data.auto_raw_interval === 'number' ? frame_data.auto_raw_interval+'min' : frame_data.auto_raw_interval;
|
|
8881
9362
|
frame_data.smart_mode_threshold = frame[34] * 50;
|
|
8882
|
-
|
|
8883
|
-
|
|
8884
|
-
'destination_address': toMac(frame.slice(12, 16)),
|
|
8885
|
-
'mode': frame_data.mode,
|
|
8886
|
-
'odr': frame_data.odr_1+'Hz',
|
|
8887
|
-
'sampling_duration': frame_data.sampling_duration_1,
|
|
8888
|
-
'filter_status': frame_data.filter_status,
|
|
8889
|
-
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
8890
|
-
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
8891
|
-
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
8892
|
-
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
8893
|
-
'sampling_interval': frame_data.sampling_interval,
|
|
8894
|
-
'on_request_timeout': frame_data.on_request_timeout,
|
|
8895
|
-
'deadband': frame_data.deadband,
|
|
8896
|
-
'payload_length': frame_data.payload_length,
|
|
8897
|
-
'fsr': frame_data.fsr_text,
|
|
8898
|
-
'rpm_compute_status': frame_data.rpm_status,
|
|
8899
|
-
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
8900
|
-
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
8901
|
-
'smart_mode_skip_count': frame[33],
|
|
8902
|
-
'smart_mode_acc_threshold': frame_data.smart_mode_threshold+'mg',
|
|
8903
|
-
'uptime_counter': frame.slice(35, 39).reduce(msbLsb),
|
|
8904
|
-
'hardware_id': frame.slice(39, 42),
|
|
8905
|
-
'reserved': frame.slice(42, 46),
|
|
8906
|
-
'tx_lifetime_counter': frame.slice(46, 50).reduce(msbLsb),
|
|
8907
|
-
'machine_values': {
|
|
9363
|
+
if(frame[2] > 4){ // for Firmware v5 and above
|
|
9364
|
+
return {
|
|
8908
9365
|
'firmware': frame[2],
|
|
8909
|
-
'destination_address': toMac(frame.slice(12, 16)
|
|
8910
|
-
'mode':
|
|
8911
|
-
'odr':
|
|
8912
|
-
'
|
|
8913
|
-
'filter_status':
|
|
8914
|
-
'lpf_coeff':
|
|
8915
|
-
'
|
|
8916
|
-
'
|
|
8917
|
-
'
|
|
8918
|
-
'
|
|
8919
|
-
'
|
|
8920
|
-
'
|
|
8921
|
-
|
|
9366
|
+
'destination_address': toMac(frame.slice(12, 16)),
|
|
9367
|
+
'mode': frame_data.mode,
|
|
9368
|
+
'odr': frame_data.odr_1+'Hz',
|
|
9369
|
+
'sampling_duration': frame_data.sampling_duration_1,
|
|
9370
|
+
'filter_status': frame_data.filter_status,
|
|
9371
|
+
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
9372
|
+
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
9373
|
+
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
9374
|
+
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
9375
|
+
'sampling_interval': frame_data.sampling_interval,
|
|
9376
|
+
'on_request_timeout': frame_data.on_request_timeout,
|
|
9377
|
+
'deadband': frame_data.deadband,
|
|
9378
|
+
'payload_length': frame_data.payload_length,
|
|
9379
|
+
'fsr': frame_data.fsr_text,
|
|
9380
|
+
'rpm_compute_status': frame_data.rpm_status,
|
|
9381
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
9382
|
+
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
9383
|
+
'smart_mode_skip_count': frame[33],
|
|
9384
|
+
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
9385
|
+
'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
|
|
9386
|
+
'max_tx_raw_samples': frame.slice(39, 41).reduce(msbLsb),
|
|
9387
|
+
'hardware_id': frame.slice(41, 44),
|
|
9388
|
+
'reserved': frame.slice(44, 48),
|
|
9389
|
+
'tx_lifetime_counter': frame.slice(48, 52).reduce(msbLsb),
|
|
9390
|
+
'machine_values': {
|
|
9391
|
+
'firmware': frame[2],
|
|
9392
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
9393
|
+
'mode': frame[16],
|
|
9394
|
+
'odr': frame[17],
|
|
9395
|
+
'sampling_duration': frame[18],
|
|
9396
|
+
'filter_status': frame[19],
|
|
9397
|
+
'lpf_coeff': frame[20],
|
|
9398
|
+
'hpf_coeff': frame[21],
|
|
9399
|
+
'sampling_interval': frame[22],
|
|
9400
|
+
'on_request_timeout': frame[23],
|
|
9401
|
+
'deadband': frame[24],
|
|
9402
|
+
'payload_length': frame[25],
|
|
9403
|
+
'fsr': frame[26],
|
|
9404
|
+
'rpm_compute_status': frame[27],
|
|
9405
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
|
|
9406
|
+
'auto_raw_interval': frame[32],
|
|
9407
|
+
'smart_mode_skip_count': frame[33],
|
|
9408
|
+
'smart_mode_acc_threshold':frame[34],
|
|
9409
|
+
'uptime_counter': frame.slice(35, 39),
|
|
9410
|
+
'max_tx_raw_samples': frame.slice(39, 41),
|
|
9411
|
+
'hardware_id': frame.slice(41, 44),
|
|
9412
|
+
'reserved': frame.slice(44, 48),
|
|
9413
|
+
'tx_lifetime_counter': frame.slice(48, 52)
|
|
9414
|
+
}
|
|
9415
|
+
}
|
|
9416
|
+
}else{
|
|
9417
|
+
return {
|
|
9418
|
+
'firmware': frame[2],
|
|
9419
|
+
'destination_address': toMac(frame.slice(12, 16)),
|
|
9420
|
+
'mode': frame_data.mode,
|
|
9421
|
+
'odr': frame_data.odr_1+'Hz',
|
|
9422
|
+
'sampling_duration': frame_data.sampling_duration_1,
|
|
9423
|
+
'filter_status': frame_data.filter_status,
|
|
9424
|
+
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
9425
|
+
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
9426
|
+
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
9427
|
+
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
9428
|
+
'sampling_interval': frame_data.sampling_interval,
|
|
9429
|
+
'on_request_timeout': frame_data.on_request_timeout,
|
|
9430
|
+
'deadband': frame_data.deadband,
|
|
9431
|
+
'payload_length': frame_data.payload_length,
|
|
9432
|
+
'fsr': frame_data.fsr_text,
|
|
9433
|
+
'rpm_compute_status': frame_data.rpm_status,
|
|
8922
9434
|
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
8923
|
-
'auto_raw_interval':
|
|
9435
|
+
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
8924
9436
|
'smart_mode_skip_count': frame[33],
|
|
8925
|
-
'smart_mode_acc_threshold':
|
|
8926
|
-
'uptime_counter': frame.slice(35, 39),
|
|
9437
|
+
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
9438
|
+
'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
|
|
8927
9439
|
'hardware_id': frame.slice(39, 42),
|
|
8928
9440
|
'reserved': frame.slice(42, 46),
|
|
8929
|
-
'tx_lifetime_counter': frame.slice(46, 50)
|
|
9441
|
+
'tx_lifetime_counter': frame.slice(46, 50).reduce(msbLsb),
|
|
9442
|
+
'machine_values': {
|
|
9443
|
+
'firmware': frame[2],
|
|
9444
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
9445
|
+
'mode': frame[16],
|
|
9446
|
+
'odr': frame[17],
|
|
9447
|
+
'sampling_duration': frame[18],
|
|
9448
|
+
'filter_status': frame[19],
|
|
9449
|
+
'lpf_coeff': frame[20],
|
|
9450
|
+
'hpf_coeff': frame[21],
|
|
9451
|
+
'sampling_interval': frame[22],
|
|
9452
|
+
'on_request_timeout': frame[23],
|
|
9453
|
+
'deadband': frame[24],
|
|
9454
|
+
'payload_length': frame[25],
|
|
9455
|
+
'fsr': frame[26],
|
|
9456
|
+
'rpm_compute_status': frame[27],
|
|
9457
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
|
|
9458
|
+
'auto_raw_interval': frame[32],
|
|
9459
|
+
'smart_mode_skip_count': frame[33],
|
|
9460
|
+
'smart_mode_acc_threshold':frame[34],
|
|
9461
|
+
'uptime_counter': frame.slice(35, 39),
|
|
9462
|
+
'hardware_id': frame.slice(39, 42),
|
|
9463
|
+
'reserved': frame.slice(42, 46),
|
|
9464
|
+
'tx_lifetime_counter': frame.slice(46, 50)
|
|
9465
|
+
}
|
|
8930
9466
|
}
|
|
8931
9467
|
}
|
|
8932
9468
|
}
|
|
@@ -8962,8 +9498,7 @@ function sensor_types(parent){
|
|
|
8962
9498
|
delete globalDevices[deviceAddr];
|
|
8963
9499
|
// create new stream
|
|
8964
9500
|
var mode = payload[8];
|
|
8965
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
8966
|
-
var en_axis = payload[11] & 7;
|
|
9501
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
8967
9502
|
var fsr = payload[11] >> 5;
|
|
8968
9503
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
8969
9504
|
|
|
@@ -8971,7 +9506,6 @@ function sensor_types(parent){
|
|
|
8971
9506
|
data: {},
|
|
8972
9507
|
odr: odr,
|
|
8973
9508
|
mo: mode,
|
|
8974
|
-
en_axis: en_axis,
|
|
8975
9509
|
fsr: fsr,
|
|
8976
9510
|
hour: hour,
|
|
8977
9511
|
minute: minute,
|
|
@@ -8988,8 +9522,7 @@ function sensor_types(parent){
|
|
|
8988
9522
|
}
|
|
8989
9523
|
else{
|
|
8990
9524
|
var mode = payload[8];
|
|
8991
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
8992
|
-
var en_axis = payload[11] & 7;
|
|
9525
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
8993
9526
|
var fsr = payload[11] >> 5;
|
|
8994
9527
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
8995
9528
|
|
|
@@ -8997,7 +9530,6 @@ function sensor_types(parent){
|
|
|
8997
9530
|
data: {},
|
|
8998
9531
|
odr: odr,
|
|
8999
9532
|
mo: mode,
|
|
9000
|
-
en_axis: en_axis,
|
|
9001
9533
|
fsr: fsr,
|
|
9002
9534
|
hour: hour,
|
|
9003
9535
|
minute: minute,
|
|
@@ -9009,8 +9541,7 @@ function sensor_types(parent){
|
|
|
9009
9541
|
}
|
|
9010
9542
|
else{
|
|
9011
9543
|
var mode = payload[8];
|
|
9012
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
9013
|
-
var en_axis = payload[11] & 7;
|
|
9544
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
9014
9545
|
var fsr = payload[11] >> 5;
|
|
9015
9546
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
9016
9547
|
|
|
@@ -9018,7 +9549,6 @@ function sensor_types(parent){
|
|
|
9018
9549
|
data: {},
|
|
9019
9550
|
odr: odr,
|
|
9020
9551
|
mo: mode,
|
|
9021
|
-
en_axis: en_axis,
|
|
9022
9552
|
fsr: fsr,
|
|
9023
9553
|
hour: hour,
|
|
9024
9554
|
minute: minute,
|
|
@@ -9038,44 +9568,12 @@ function sensor_types(parent){
|
|
|
9038
9568
|
var fft_concat = {};
|
|
9039
9569
|
|
|
9040
9570
|
var en_axis_data = {};
|
|
9041
|
-
|
|
9042
|
-
|
|
9043
|
-
|
|
9044
|
-
|
|
9045
|
-
|
|
9046
|
-
|
|
9047
|
-
en_axis_data.y_offset = 0;
|
|
9048
|
-
en_axis_data.increment = 2;
|
|
9049
|
-
break;
|
|
9050
|
-
case 3:
|
|
9051
|
-
en_axis_data.x_offset = 0;
|
|
9052
|
-
en_axis_data.y_offset = 2;
|
|
9053
|
-
en_axis_data.increment = 4;
|
|
9054
|
-
break;
|
|
9055
|
-
case 4:
|
|
9056
|
-
en_axis_data.z_offset = 0;
|
|
9057
|
-
en_axis_data.increment = 2;
|
|
9058
|
-
break;
|
|
9059
|
-
case 5:
|
|
9060
|
-
en_axis_data.x_offset = 0;
|
|
9061
|
-
en_axis_data.z_offset = 2;
|
|
9062
|
-
en_axis_data.increment = 4;
|
|
9063
|
-
break;
|
|
9064
|
-
case 6:
|
|
9065
|
-
en_axis_data.y_offset = 0;
|
|
9066
|
-
en_axis_data.z_offset = 2;
|
|
9067
|
-
en_axis_data.increment = 4;
|
|
9068
|
-
break;
|
|
9069
|
-
case 7:
|
|
9070
|
-
en_axis_data.x_offset = 0;
|
|
9071
|
-
en_axis_data.y_offset = 2;
|
|
9072
|
-
en_axis_data.z_offset = 4;
|
|
9073
|
-
en_axis_data.increment = 6;
|
|
9074
|
-
break;
|
|
9075
|
-
default:
|
|
9076
|
-
en_axis_data.increment = 0;
|
|
9077
|
-
}
|
|
9078
|
-
|
|
9571
|
+
en_axis_data.x_offset = 0;
|
|
9572
|
+
en_axis_data.y_offset = 2;
|
|
9573
|
+
en_axis_data.z_offset = 4;
|
|
9574
|
+
en_axis_data.increment = 6;
|
|
9575
|
+
fft_concat = {x: [], y: [], z: []};
|
|
9576
|
+
|
|
9079
9577
|
var fsr_mult = .00006;
|
|
9080
9578
|
var fsr_text = "";
|
|
9081
9579
|
|
|
@@ -9111,16 +9609,14 @@ function sensor_types(parent){
|
|
|
9111
9609
|
for(var i = 0; i < raw_data.length; i+=en_axis_data.increment){
|
|
9112
9610
|
label++;
|
|
9113
9611
|
|
|
9114
|
-
fft_concat[label] = {};
|
|
9115
|
-
|
|
9116
9612
|
if('x_offset' in en_axis_data){
|
|
9117
|
-
fft_concat
|
|
9613
|
+
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)));
|
|
9118
9614
|
}
|
|
9119
9615
|
if('y_offset' in en_axis_data){
|
|
9120
|
-
fft_concat
|
|
9616
|
+
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)));
|
|
9121
9617
|
}
|
|
9122
9618
|
if('z_offset' in en_axis_data){
|
|
9123
|
-
fft_concat
|
|
9619
|
+
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)));
|
|
9124
9620
|
}
|
|
9125
9621
|
}
|
|
9126
9622
|
var fft_concat_obj = {
|
|
@@ -9128,12 +9624,11 @@ function sensor_types(parent){
|
|
|
9128
9624
|
msg_type: msg_type,
|
|
9129
9625
|
time_id: globalDevices[deviceAddr].hour +':'+ globalDevices[deviceAddr].minute,
|
|
9130
9626
|
mac_address: deviceAddr,
|
|
9131
|
-
en_axis: globalDevices[deviceAddr].en_axis,
|
|
9132
9627
|
fsr: fsr_text,
|
|
9133
9628
|
odr: globalDevices[deviceAddr].odr,
|
|
9134
9629
|
device_temp: globalDevices[deviceAddr].device_temp,
|
|
9135
9630
|
total_samples: label,
|
|
9136
|
-
|
|
9631
|
+
fft_confidence : ((Object.keys(globalDevices[deviceAddr].data).length / expected_packets) * 100).toFixed(2) + '%',
|
|
9137
9632
|
data: fft_concat
|
|
9138
9633
|
};
|
|
9139
9634
|
sensor_data = fft_concat_obj;
|
|
@@ -9382,86 +9877,375 @@ function sensor_types(parent){
|
|
|
9382
9877
|
frame_data.on_request_timeout = frame[23] + " Seconds";
|
|
9383
9878
|
frame_data.deadband = frame[24] + "mg";
|
|
9384
9879
|
|
|
9385
|
-
switch(frame[25]){
|
|
9386
|
-
case 0:
|
|
9387
|
-
frame_data.payload_length = "50 Bytes";
|
|
9388
|
-
break;
|
|
9389
|
-
case 1:
|
|
9390
|
-
frame_data.payload_length = "100 Bytes";
|
|
9391
|
-
break;
|
|
9392
|
-
case 2:
|
|
9393
|
-
frame_data.payload_length = "150 Bytes";
|
|
9394
|
-
break;
|
|
9395
|
-
case 3:
|
|
9396
|
-
frame_data.payload_length = "180 Bytes";
|
|
9397
|
-
break;
|
|
9880
|
+
switch(frame[25]){
|
|
9881
|
+
case 0:
|
|
9882
|
+
frame_data.payload_length = "50 Bytes";
|
|
9883
|
+
break;
|
|
9884
|
+
case 1:
|
|
9885
|
+
frame_data.payload_length = "100 Bytes";
|
|
9886
|
+
break;
|
|
9887
|
+
case 2:
|
|
9888
|
+
frame_data.payload_length = "150 Bytes";
|
|
9889
|
+
break;
|
|
9890
|
+
case 3:
|
|
9891
|
+
frame_data.payload_length = "180 Bytes";
|
|
9892
|
+
break;
|
|
9893
|
+
}
|
|
9894
|
+
switch(frame[26]){
|
|
9895
|
+
case 0:
|
|
9896
|
+
frame_data.fsr_text = "2g";
|
|
9897
|
+
break;
|
|
9898
|
+
case 1:
|
|
9899
|
+
frame_data.fsr_text = "4g";
|
|
9900
|
+
break;
|
|
9901
|
+
case 2:
|
|
9902
|
+
frame_data.fsr_text = "8g";
|
|
9903
|
+
break;
|
|
9904
|
+
case 3:
|
|
9905
|
+
frame_data.fsr_text = "16g";
|
|
9906
|
+
break;
|
|
9907
|
+
}
|
|
9908
|
+
frame_data.rpm_status = frame[27]? 'Enabled': 'Disabled';
|
|
9909
|
+
frame_data.auto_raw_interval = frame[32] * frame_data.sampling_interval_number || 'disabled';
|
|
9910
|
+
frame_data.auto_raw_interval = typeof frame_data.auto_raw_interval === 'number' ? frame_data.auto_raw_interval+'min' : frame_data.auto_raw_interval;
|
|
9911
|
+
frame_data.smart_mode_threshold = frame[34] * 50;
|
|
9912
|
+
if(frame[2] > 4){ // for Firmware v5 and above
|
|
9913
|
+
return {
|
|
9914
|
+
'firmware': frame[2],
|
|
9915
|
+
'destination_address': toMac(frame.slice(12, 16)),
|
|
9916
|
+
'mode': frame_data.mode,
|
|
9917
|
+
'odr': frame_data.odr_1+'Hz',
|
|
9918
|
+
'sampling_duration': frame_data.sampling_duration_1,
|
|
9919
|
+
'filter_status': frame_data.filter_status,
|
|
9920
|
+
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
9921
|
+
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
9922
|
+
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
9923
|
+
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
9924
|
+
'sampling_interval': frame_data.sampling_interval,
|
|
9925
|
+
'on_request_timeout': frame_data.on_request_timeout,
|
|
9926
|
+
'deadband': frame_data.deadband,
|
|
9927
|
+
'payload_length': frame_data.payload_length,
|
|
9928
|
+
'fsr': frame_data.fsr_text,
|
|
9929
|
+
'rpm_compute_status': frame_data.rpm_status,
|
|
9930
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
9931
|
+
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
9932
|
+
'smart_mode_skip_count': frame[33],
|
|
9933
|
+
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
9934
|
+
'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
|
|
9935
|
+
'max_tx_raw_samples': frame.slice(39, 41).reduce(msbLsb),
|
|
9936
|
+
'hardware_id': frame.slice(41, 44),
|
|
9937
|
+
'reserved': frame.slice(44, 48),
|
|
9938
|
+
'tx_lifetime_counter': frame.slice(48, 52).reduce(msbLsb),
|
|
9939
|
+
'machine_values': {
|
|
9940
|
+
'firmware': frame[2],
|
|
9941
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
9942
|
+
'mode': frame[16],
|
|
9943
|
+
'odr': frame[17],
|
|
9944
|
+
'sampling_duration': frame[18],
|
|
9945
|
+
'filter_status': frame[19],
|
|
9946
|
+
'lpf_coeff': frame[20],
|
|
9947
|
+
'hpf_coeff': frame[21],
|
|
9948
|
+
'sampling_interval': frame[22],
|
|
9949
|
+
'on_request_timeout': frame[23],
|
|
9950
|
+
'deadband': frame[24],
|
|
9951
|
+
'payload_length': frame[25],
|
|
9952
|
+
'fsr': frame[26],
|
|
9953
|
+
'rpm_compute_status': frame[27],
|
|
9954
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
|
|
9955
|
+
'auto_raw_interval': frame[32],
|
|
9956
|
+
'smart_mode_skip_count': frame[33],
|
|
9957
|
+
'smart_mode_acc_threshold':frame[34],
|
|
9958
|
+
'uptime_counter': frame.slice(35, 39),
|
|
9959
|
+
'max_tx_raw_samples': frame.slice(39, 41),
|
|
9960
|
+
'hardware_id': frame.slice(41, 44),
|
|
9961
|
+
'reserved': frame.slice(44, 48),
|
|
9962
|
+
'tx_lifetime_counter': frame.slice(48, 52)
|
|
9963
|
+
}
|
|
9964
|
+
}
|
|
9965
|
+
}else{
|
|
9966
|
+
return {
|
|
9967
|
+
'firmware': frame[2],
|
|
9968
|
+
'destination_address': toMac(frame.slice(12, 16)),
|
|
9969
|
+
'mode': frame_data.mode,
|
|
9970
|
+
'odr': frame_data.odr_1+'Hz',
|
|
9971
|
+
'sampling_duration': frame_data.sampling_duration_1,
|
|
9972
|
+
'filter_status': frame_data.filter_status,
|
|
9973
|
+
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
9974
|
+
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
9975
|
+
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
9976
|
+
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
9977
|
+
'sampling_interval': frame_data.sampling_interval,
|
|
9978
|
+
'on_request_timeout': frame_data.on_request_timeout,
|
|
9979
|
+
'deadband': frame_data.deadband,
|
|
9980
|
+
'payload_length': frame_data.payload_length,
|
|
9981
|
+
'fsr': frame_data.fsr_text,
|
|
9982
|
+
'rpm_compute_status': frame_data.rpm_status,
|
|
9983
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
9984
|
+
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
9985
|
+
'smart_mode_skip_count': frame[33],
|
|
9986
|
+
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
9987
|
+
'uptime_counter': frame.slice(35, 39).reduce(msbLsb)+'sec',
|
|
9988
|
+
'hardware_id': frame.slice(39, 42),
|
|
9989
|
+
'reserved': frame.slice(42, 46),
|
|
9990
|
+
'tx_lifetime_counter': frame.slice(46, 50).reduce(msbLsb),
|
|
9991
|
+
'machine_values': {
|
|
9992
|
+
'firmware': frame[2],
|
|
9993
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
9994
|
+
'mode': frame[16],
|
|
9995
|
+
'odr': frame[17],
|
|
9996
|
+
'sampling_duration': frame[18],
|
|
9997
|
+
'filter_status': frame[19],
|
|
9998
|
+
'lpf_coeff': frame[20],
|
|
9999
|
+
'hpf_coeff': frame[21],
|
|
10000
|
+
'sampling_interval': frame[22],
|
|
10001
|
+
'on_request_timeout': frame[23],
|
|
10002
|
+
'deadband': frame[24],
|
|
10003
|
+
'payload_length': frame[25],
|
|
10004
|
+
'fsr': frame[26],
|
|
10005
|
+
'rpm_compute_status': frame[27],
|
|
10006
|
+
'auto_raw_destination_address': toMac(frame.slice(28 , 32), false),
|
|
10007
|
+
'auto_raw_interval': frame[32],
|
|
10008
|
+
'smart_mode_skip_count': frame[33],
|
|
10009
|
+
'smart_mode_acc_threshold':frame[34],
|
|
10010
|
+
'uptime_counter': frame.slice(35, 39),
|
|
10011
|
+
'hardware_id': frame.slice(39, 42),
|
|
10012
|
+
'reserved': frame.slice(42, 46),
|
|
10013
|
+
'tx_lifetime_counter': frame.slice(46, 50)
|
|
10014
|
+
}
|
|
10015
|
+
}
|
|
10016
|
+
}
|
|
10017
|
+
}
|
|
10018
|
+
},
|
|
10019
|
+
'117': {
|
|
10020
|
+
name: 'Custom Vibration Sensor PPV',
|
|
10021
|
+
parse: (payload, parsed, mac) => {
|
|
10022
|
+
if(payload[7] & 2){
|
|
10023
|
+
console.log('Error found');
|
|
10024
|
+
parsed.data = {error: 'Error found, Sensor Probe may be unattached'};
|
|
10025
|
+
return parsed;
|
|
10026
|
+
}
|
|
10027
|
+
if(payload[8] === 1){
|
|
10028
|
+
let mode = payload[8];
|
|
10029
|
+
let msg_type = '';
|
|
10030
|
+
switch(payload[9]){
|
|
10031
|
+
case 0:
|
|
10032
|
+
msg_type = 'Regular';
|
|
10033
|
+
break;
|
|
10034
|
+
case 1:
|
|
10035
|
+
msg_type = 'Cautionay';
|
|
10036
|
+
break;
|
|
10037
|
+
case 2:
|
|
10038
|
+
msg_type = 'Artwork';
|
|
10039
|
+
break;
|
|
10040
|
+
case 3:
|
|
10041
|
+
msg_type = 'Transient';
|
|
10042
|
+
break;
|
|
10043
|
+
}
|
|
10044
|
+
var deviceAddr = mac;
|
|
10045
|
+
var firmware = payload[1];
|
|
10046
|
+
var odr = msbLsb(payload[10], payload[11]);
|
|
10047
|
+
var fsr = payload[12];
|
|
10048
|
+
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
10049
|
+
var expected_packets = msbLsb(payload[15], payload[16]);
|
|
10050
|
+
var current_packet = msbLsb(payload[17], payload[18]);
|
|
10051
|
+
var sdata_start = 19;
|
|
10052
|
+
|
|
10053
|
+
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
10054
|
+
if(expected_packets != 1){
|
|
10055
|
+
// if a packet is already stored with the same packet ID, or if packet ID is 1, or if current packet ID is not one more than last packet ID
|
|
10056
|
+
if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !(((current_packet)-1) in globalDevices[deviceAddr].data)) {
|
|
10057
|
+
console.log('-----');
|
|
10058
|
+
console.log('bad packet breakdown deleting stream');
|
|
10059
|
+
console.log(current_packet);
|
|
10060
|
+
console.log(expected_packets);
|
|
10061
|
+
console.log(current_packet in globalDevices[deviceAddr].data);
|
|
10062
|
+
console.log(current_packet == 1);
|
|
10063
|
+
console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
|
|
10064
|
+
if(this.hasOwnProperty('failure_no')){
|
|
10065
|
+
this.failure_no = this.failure_no + 1;
|
|
10066
|
+
}
|
|
10067
|
+
else{
|
|
10068
|
+
this.failure_no = 1;
|
|
10069
|
+
}
|
|
10070
|
+
if(this.hasOwnProperty('failure_no')){
|
|
10071
|
+
console.log('####falure no');
|
|
10072
|
+
console.log(this.failure_no);
|
|
10073
|
+
}
|
|
10074
|
+
// console.log(globalDevices[deviceAddr].data);
|
|
10075
|
+
delete globalDevices[deviceAddr];
|
|
10076
|
+
if(current_packet != 1){
|
|
10077
|
+
return;
|
|
10078
|
+
} else{
|
|
10079
|
+
|
|
10080
|
+
globalDevices[deviceAddr] = {
|
|
10081
|
+
// stream_size: expected_packets,
|
|
10082
|
+
data: {},
|
|
10083
|
+
odr: odr,
|
|
10084
|
+
mo: mode,
|
|
10085
|
+
fsr: fsr,
|
|
10086
|
+
device_temp: device_temp,
|
|
10087
|
+
}
|
|
10088
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
10089
|
+
return;
|
|
10090
|
+
}
|
|
10091
|
+
}
|
|
10092
|
+
else{
|
|
10093
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
10094
|
+
}
|
|
10095
|
+
}
|
|
10096
|
+
else{
|
|
10097
|
+
|
|
10098
|
+
globalDevices[deviceAddr] = {
|
|
10099
|
+
// stream_size: expected_packets,
|
|
10100
|
+
data: {},
|
|
10101
|
+
odr: odr,
|
|
10102
|
+
mo: mode,
|
|
10103
|
+
fsr: fsr,
|
|
10104
|
+
device_temp: device_temp,
|
|
10105
|
+
}
|
|
10106
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
10107
|
+
}
|
|
10108
|
+
|
|
10109
|
+
if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
|
|
10110
|
+
var raw_data = new Array();
|
|
10111
|
+
for(const packet in globalDevices[deviceAddr].data){
|
|
10112
|
+
raw_data = raw_data.concat(globalDevices[deviceAddr].data[packet]);
|
|
10113
|
+
}
|
|
10114
|
+
var label = 0;
|
|
10115
|
+
|
|
10116
|
+
var fft = new Array();
|
|
10117
|
+
var fft_concat = {};
|
|
10118
|
+
|
|
10119
|
+
var en_axis_data = {};
|
|
10120
|
+
en_axis_data.x_offset = 0;
|
|
10121
|
+
en_axis_data.y_offset = 2;
|
|
10122
|
+
en_axis_data.z_offset = 4;
|
|
10123
|
+
en_axis_data.increment = 6;
|
|
10124
|
+
fft_concat = {x: [], y: [], z: []};
|
|
10125
|
+
|
|
10126
|
+
switch(globalDevices[deviceAddr].fsr){
|
|
10127
|
+
case 0:
|
|
10128
|
+
fsr_text = "2g";
|
|
10129
|
+
break;
|
|
10130
|
+
case 1:
|
|
10131
|
+
fsr_text = "4g";
|
|
10132
|
+
break;
|
|
10133
|
+
case 2:
|
|
10134
|
+
fsr_text = "8g";
|
|
10135
|
+
break;
|
|
10136
|
+
case 3:
|
|
10137
|
+
fsr_text = "16g";
|
|
10138
|
+
break;
|
|
10139
|
+
}
|
|
10140
|
+
|
|
10141
|
+
for(var i = 0; i < raw_data.length; i+=en_axis_data.increment){
|
|
10142
|
+
label++;
|
|
10143
|
+
|
|
10144
|
+
if('x_offset' in en_axis_data){
|
|
10145
|
+
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) / 100).toFixed(2)));
|
|
10146
|
+
}
|
|
10147
|
+
if('y_offset' in en_axis_data){
|
|
10148
|
+
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) / 100).toFixed(2)));
|
|
10149
|
+
}
|
|
10150
|
+
if('z_offset' in en_axis_data){
|
|
10151
|
+
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) / 100).toFixed(2)));
|
|
10152
|
+
}
|
|
10153
|
+
}
|
|
10154
|
+
var fft_concat_obj = {
|
|
10155
|
+
mode: mode,
|
|
10156
|
+
msg_type: msg_type,
|
|
10157
|
+
mac_address: deviceAddr,
|
|
10158
|
+
fsr: fsr_text,
|
|
10159
|
+
odr: globalDevices[deviceAddr].odr,
|
|
10160
|
+
device_temp: globalDevices[deviceAddr].device_temp,
|
|
10161
|
+
total_samples: label,
|
|
10162
|
+
data: fft_concat
|
|
10163
|
+
};
|
|
10164
|
+
sensor_data = fft_concat_obj;
|
|
10165
|
+
delete globalDevices[deviceAddr];
|
|
10166
|
+
if(this.hasOwnProperty('failure_no')){
|
|
10167
|
+
console.log('####falure no');
|
|
10168
|
+
console.log(this.failure_no);
|
|
10169
|
+
}
|
|
10170
|
+
|
|
10171
|
+
return sensor_data;
|
|
10172
|
+
}
|
|
10173
|
+
else{
|
|
10174
|
+
return;
|
|
10175
|
+
}
|
|
10176
|
+
}else{
|
|
10177
|
+
|
|
10178
|
+
globalDevices[deviceAddr] = {
|
|
10179
|
+
// stream_size: expected_packets,
|
|
10180
|
+
data: {},
|
|
10181
|
+
odr: odr,
|
|
10182
|
+
mo: mode,
|
|
10183
|
+
fsr: fsr,
|
|
10184
|
+
device_temp: device_temp,
|
|
10185
|
+
}
|
|
10186
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
10187
|
+
return;
|
|
10188
|
+
}
|
|
9398
10189
|
}
|
|
9399
|
-
|
|
9400
|
-
|
|
9401
|
-
|
|
9402
|
-
|
|
9403
|
-
|
|
9404
|
-
|
|
9405
|
-
|
|
9406
|
-
|
|
9407
|
-
|
|
9408
|
-
|
|
9409
|
-
|
|
9410
|
-
|
|
9411
|
-
|
|
10190
|
+
else if(payload[8] === 0){
|
|
10191
|
+
// mode byte most significant bit will indicate fft data.
|
|
10192
|
+
// console.log(d);
|
|
10193
|
+
let msg_type = '';
|
|
10194
|
+
switch(payload[9]){
|
|
10195
|
+
case 0:
|
|
10196
|
+
msg_type = 'Regular'
|
|
10197
|
+
break;
|
|
10198
|
+
case 1:
|
|
10199
|
+
msg_type = 'Cautionay';
|
|
10200
|
+
break;
|
|
10201
|
+
case 2:
|
|
10202
|
+
msg_type = 'Artwork';
|
|
10203
|
+
break;
|
|
10204
|
+
case 3:
|
|
10205
|
+
msg_type = 'Transient';
|
|
10206
|
+
break;
|
|
10207
|
+
}
|
|
10208
|
+
return {
|
|
10209
|
+
mode: payload[8],
|
|
10210
|
+
msg_type: msg_type,
|
|
10211
|
+
|
|
10212
|
+
odr: payload.slice(10, 12).reduce(msbLsb),
|
|
10213
|
+
temperature: signInt(payload.slice(12, 14).reduce(msbLsb), 16) / 100,
|
|
10214
|
+
|
|
10215
|
+
x_ppv_velocity: payload.slice(14, 16).reduce(msbLsb) / 100,
|
|
10216
|
+
x_peak_one_Hz: payload.slice(16, 18).reduce(msbLsb),
|
|
10217
|
+
x_peak_two_Hz: payload.slice(18, 20).reduce(msbLsb),
|
|
10218
|
+
x_peak_three_Hz: payload.slice(20, 22).reduce(msbLsb),
|
|
10219
|
+
|
|
10220
|
+
y_ppv_velocity: payload.slice(22, 24).reduce(msbLsb) / 100,
|
|
10221
|
+
y_peak_one_Hz: payload.slice(24, 26).reduce(msbLsb),
|
|
10222
|
+
y_peak_two_Hz: payload.slice(26, 28).reduce(msbLsb),
|
|
10223
|
+
y_peak_three_Hz: payload.slice(28, 30).reduce(msbLsb),
|
|
10224
|
+
|
|
10225
|
+
z_ppv_velocity: payload.slice(30, 32).reduce(msbLsb) / 100,
|
|
10226
|
+
z_peak_one_Hz: payload.slice(32, 34).reduce(msbLsb),
|
|
10227
|
+
z_peak_two_Hz: payload.slice(34, 36).reduce(msbLsb),
|
|
10228
|
+
z_peak_three_Hz: payload.slice(36, 38).reduce(msbLsb)
|
|
10229
|
+
};
|
|
9412
10230
|
}
|
|
9413
|
-
|
|
9414
|
-
|
|
9415
|
-
|
|
9416
|
-
|
|
10231
|
+
// else{
|
|
10232
|
+
// parsed.data = {'error': 'Vibration mode error'}
|
|
10233
|
+
// return parsed;
|
|
10234
|
+
// }
|
|
10235
|
+
},
|
|
10236
|
+
'parse_fly': (frame) => {
|
|
9417
10237
|
return {
|
|
9418
|
-
'
|
|
9419
|
-
'
|
|
9420
|
-
'
|
|
9421
|
-
'
|
|
9422
|
-
'
|
|
9423
|
-
'filter_status': frame_data.filter_status,
|
|
9424
|
-
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
9425
|
-
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
9426
|
-
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
9427
|
-
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
9428
|
-
'sampling_interval': frame_data.sampling_interval,
|
|
9429
|
-
'on_request_timeout': frame_data.on_request_timeout,
|
|
9430
|
-
'deadband': frame_data.deadband,
|
|
9431
|
-
'payload_length': frame_data.payload_length,
|
|
9432
|
-
'fsr': frame_data.fsr_text,
|
|
9433
|
-
'rpm_compute_status': frame_data.rpm_status,
|
|
9434
|
-
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
9435
|
-
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
9436
|
-
'smart_mode_skip_count': frame[33],
|
|
9437
|
-
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
9438
|
-
'uptime_counter': frame.slice(35, 39).reduce(msbLsb),
|
|
9439
|
-
'hardware_id': frame.slice(39, 42),
|
|
9440
|
-
'reserved': frame.slice(42, 46),
|
|
9441
|
-
'tx_lifetime_counter': frame.slice(46, 50).reduce(msbLsb),
|
|
10238
|
+
'fly_rate': frame.slice(12, 13).reduce(msbLsb) + " Min.",
|
|
10239
|
+
'fsr': frame[14],
|
|
10240
|
+
'hardware_id': frame.slice(15, 18),
|
|
10241
|
+
'report_rate': frame.slice(18, 22).reduce(msbLsb) + " Sec.",
|
|
10242
|
+
'tx_lifetime_counter': frame.slice(22, 26).reduce(msbLsb),
|
|
9442
10243
|
'machine_values': {
|
|
9443
|
-
'
|
|
9444
|
-
'
|
|
9445
|
-
'
|
|
9446
|
-
'
|
|
9447
|
-
'
|
|
9448
|
-
'filter_status': frame[19],
|
|
9449
|
-
'lpf_coeff': frame[20],
|
|
9450
|
-
'hpf_coeff': frame[21],
|
|
9451
|
-
'sampling_interval': frame[22],
|
|
9452
|
-
'on_request_timeout': frame[23],
|
|
9453
|
-
'deadband': frame[24],
|
|
9454
|
-
'payload_length': frame[25],
|
|
9455
|
-
'fsr': frame[26],
|
|
9456
|
-
'rpm_compute_status': frame[27],
|
|
9457
|
-
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
9458
|
-
'auto_raw_interval': frame[32],
|
|
9459
|
-
'smart_mode_skip_count': frame[33],
|
|
9460
|
-
'smart_mode_acc_threshold':frame[34],
|
|
9461
|
-
'uptime_counter': frame.slice(35, 39),
|
|
9462
|
-
'hardware_id': frame.slice(39, 42),
|
|
9463
|
-
'reserved': frame.slice(42, 46),
|
|
9464
|
-
'tx_lifetime_counter': frame.slice(46, 50)
|
|
10244
|
+
'fly_rate': frame.slice(12, 13).reduce(msbLsb),
|
|
10245
|
+
'fsr':frame[14],
|
|
10246
|
+
'hardware_id': frame.slice(15, 18),
|
|
10247
|
+
'report_rate': frame.slice(18, 22),
|
|
10248
|
+
'tx_lifetime_counter': frame.slice(22, 26)
|
|
9465
10249
|
}
|
|
9466
10250
|
}
|
|
9467
10251
|
}
|
|
@@ -9577,6 +10361,98 @@ function sensor_types(parent){
|
|
|
9577
10361
|
}
|
|
9578
10362
|
}
|
|
9579
10363
|
},
|
|
10364
|
+
'121':{
|
|
10365
|
+
name: 'Wireless Wood Moisture Sensor',
|
|
10366
|
+
parse: (d) => {
|
|
10367
|
+
return {
|
|
10368
|
+
wood_type: d[0],
|
|
10369
|
+
temperature: signInt(d.slice(1, 3).reduce(msbLsb), 16) / 100,
|
|
10370
|
+
humidity: d.slice(3, 5).reduce(msbLsb) / 100,
|
|
10371
|
+
wood_moisture: d.slice(5, 7).reduce(msbLsb) / 100,
|
|
10372
|
+
wood_resistance: (d.slice(7, 15)).reduce(msbLsb) / 100
|
|
10373
|
+
};
|
|
10374
|
+
},
|
|
10375
|
+
'parse_fly': (frame) => {
|
|
10376
|
+
return {
|
|
10377
|
+
'hardware_id': frame.slice(12, 15),
|
|
10378
|
+
'sample_rate': frame.slice(15, 19).reduce(msbLsb) + " Sec.",
|
|
10379
|
+
'tx_life_counter': frame.slice(19, 23).reduce(msbLsb),
|
|
10380
|
+
'machine_values': {
|
|
10381
|
+
'hardware_id': frame.slice(12, 15),
|
|
10382
|
+
'sample_rate': frame.slice(15, 19),
|
|
10383
|
+
'tx_life_counter': frame.slice(19, 23)
|
|
10384
|
+
}
|
|
10385
|
+
}
|
|
10386
|
+
}
|
|
10387
|
+
},
|
|
10388
|
+
'122': {
|
|
10389
|
+
name: 'Wireless 4-20mA Current Splitter',
|
|
10390
|
+
parse: (d) => {
|
|
10391
|
+
// This parser may be outdated if a customer has an issue check with Engineering
|
|
10392
|
+
var adc1 = signInt(d.slice(0, 2).reduce(msbLsb));
|
|
10393
|
+
var adc2 = signInt(d.slice(2, 4).reduce(msbLsb));
|
|
10394
|
+
return {
|
|
10395
|
+
adc1: adc1,
|
|
10396
|
+
adc2: adc2,
|
|
10397
|
+
mA1: signInt(d.slice(4, 6).reduce(msbLsb))/100,
|
|
10398
|
+
mA2: signInt(d.slice(6, 8).reduce(msbLsb))/100
|
|
10399
|
+
};
|
|
10400
|
+
},
|
|
10401
|
+
'parse_fly': (frame) => {
|
|
10402
|
+
let frame_data = {};
|
|
10403
|
+
switch(frame[16]){
|
|
10404
|
+
case 0:
|
|
10405
|
+
frame_data.fsr = "+-0.256 V";
|
|
10406
|
+
break;
|
|
10407
|
+
case 1:
|
|
10408
|
+
frame_data.fsr = "+-0.512 V";
|
|
10409
|
+
break;
|
|
10410
|
+
case 2:
|
|
10411
|
+
frame_data.fsr = "+-1.024 V";
|
|
10412
|
+
break;
|
|
10413
|
+
case 3:
|
|
10414
|
+
frame_data.fsr = "+-2.048 V";
|
|
10415
|
+
break;
|
|
10416
|
+
case 4:
|
|
10417
|
+
frame_data.fsr = "+-4.096 V";
|
|
10418
|
+
break;
|
|
10419
|
+
case 5:
|
|
10420
|
+
frame_data.fsr = "+-6.144 V";
|
|
10421
|
+
break;
|
|
10422
|
+
}
|
|
10423
|
+
if(frame[2]>12){
|
|
10424
|
+
return {
|
|
10425
|
+
'firmware': frame[2],
|
|
10426
|
+
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
10427
|
+
'fsr':frame_data.fsr,
|
|
10428
|
+
'boot_up_time': frame[17],
|
|
10429
|
+
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
10430
|
+
'machine_values': {
|
|
10431
|
+
'firmware': frame[2],
|
|
10432
|
+
'report_rate': frame.slice(12, 16),
|
|
10433
|
+
'fsr':frame[16],
|
|
10434
|
+
'boot_up_time': frame[17],
|
|
10435
|
+
'adc_pin_reading': frame.slice(18, 20),
|
|
10436
|
+
'frame': frame
|
|
10437
|
+
}
|
|
10438
|
+
}
|
|
10439
|
+
}else{
|
|
10440
|
+
return {
|
|
10441
|
+
'firmware': frame[2],
|
|
10442
|
+
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
10443
|
+
'fsr':frame_data.fsr,
|
|
10444
|
+
'boot_up_time': frame[17],
|
|
10445
|
+
'machine_values': {
|
|
10446
|
+
'firmware': frame[2],
|
|
10447
|
+
'report_rate': frame.slice(12, 16),
|
|
10448
|
+
'fsr':frame[16],
|
|
10449
|
+
'boot_up_time': frame[17],
|
|
10450
|
+
'frame': frame
|
|
10451
|
+
}
|
|
10452
|
+
}
|
|
10453
|
+
}
|
|
10454
|
+
}
|
|
10455
|
+
},
|
|
9580
10456
|
'180': {
|
|
9581
10457
|
name: 'C1D2 One Channel Vibration Plus',
|
|
9582
10458
|
parse: (payload, parsed, mac) => {
|
|
@@ -10015,7 +10891,6 @@ function sensor_types(parent){
|
|
|
10015
10891
|
data: {},
|
|
10016
10892
|
odr: odr,
|
|
10017
10893
|
mo: mode,
|
|
10018
|
-
en_axis: en_axis,
|
|
10019
10894
|
fsr: fsr,
|
|
10020
10895
|
hour: hour,
|
|
10021
10896
|
minute: minute,
|