@ncd-io/node-red-enterprise-sensors 1.2.2 → 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 +2028 -1151
- 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";
|
|
@@ -1351,11 +1369,19 @@ module.exports = class WirelessSensor{
|
|
|
1351
1369
|
return this.config_send(sensor_mac, packet);
|
|
1352
1370
|
}
|
|
1353
1371
|
config_set_fly_interval_108(sensor_mac, value){
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1372
|
+
console.log('config_set_fly_interval_108');
|
|
1373
|
+
var packet = [247, 56, 0, 0, 0];
|
|
1374
|
+
let val = int2Bytes((value), 2);
|
|
1375
|
+
packet.push(...val);
|
|
1376
|
+
console.log(packet);
|
|
1377
|
+
return this.config_send(sensor_mac, packet);
|
|
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
|
+
}
|
|
1359
1385
|
config_set_sample_rate_108(sensor_mac, value){
|
|
1360
1386
|
console.log('config_set_sample_rate_108');
|
|
1361
1387
|
var packet = [244, 57, 0, 0, 0, value];
|
|
@@ -1973,6 +1999,12 @@ module.exports = class WirelessSensor{
|
|
|
1973
1999
|
console.log(packet);
|
|
1974
2000
|
return this.config_send(sensor_mac, packet);
|
|
1975
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
|
+
}
|
|
1976
2008
|
config_set_to_always_on_120(sensor_mac){
|
|
1977
2009
|
console.log('config_set_to_always_on_120');
|
|
1978
2010
|
let packet = [244, 10, 0, 0, 0, 1];
|
|
@@ -1997,20 +2029,58 @@ module.exports = class WirelessSensor{
|
|
|
1997
2029
|
console.log(packet);
|
|
1998
2030
|
return this.config_send(sensor_mac, packet);
|
|
1999
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
|
+
}
|
|
2000
2044
|
config_set_tare_the_scale_217(sensor_mac){
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
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
|
+
}
|
|
2014
2084
|
config_get_delay(sensor_mac){
|
|
2015
2085
|
return new Promise((fulfill, reject) => {
|
|
2016
2086
|
this.config_send(sensor_mac, [247, 21, 0, 0, 0]).then((res) => {
|
|
@@ -2215,9 +2285,148 @@ module.exports = class WirelessSensor{
|
|
|
2215
2285
|
delete this.queue;
|
|
2216
2286
|
this.queue = new Queue(1);
|
|
2217
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
|
+
};
|
|
2218
2419
|
config_send(sensor_mac, data, opts, cmd_timeout = 1500){
|
|
2219
2420
|
var that = this;
|
|
2220
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
|
+
// });
|
|
2221
2430
|
that.queue.add(() => {
|
|
2222
2431
|
return new Promise((f, r) => {
|
|
2223
2432
|
var tout;
|
|
@@ -2269,12 +2478,107 @@ module.exports = class WirelessSensor{
|
|
|
2269
2478
|
}).then();
|
|
2270
2479
|
});
|
|
2271
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
|
+
});
|
|
2272
2567
|
this.queue.add(() => {
|
|
2273
2568
|
return new Promise((f, r) => {
|
|
2274
2569
|
setTimeout(f, 500);
|
|
2275
2570
|
});
|
|
2276
2571
|
});
|
|
2277
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
|
+
});
|
|
2278
2582
|
}
|
|
2279
2583
|
queue_bridge_query(sensor_mac, data, meta = null, opts){
|
|
2280
2584
|
var that = this;
|
|
@@ -3310,8 +3614,8 @@ function sensor_types(parent){
|
|
|
3310
3614
|
return {
|
|
3311
3615
|
adc1: adc1,
|
|
3312
3616
|
adc2: adc2,
|
|
3313
|
-
mA1:
|
|
3314
|
-
mA2:
|
|
3617
|
+
mA1: signInt(d.slice(4, 6).reduce(msbLsb))/100,
|
|
3618
|
+
mA2: signInt(d.slice(6, 8).reduce(msbLsb))/100
|
|
3315
3619
|
};
|
|
3316
3620
|
},
|
|
3317
3621
|
'parse_fly': (frame) => {
|
|
@@ -3746,11 +4050,66 @@ function sensor_types(parent){
|
|
|
3746
4050
|
if(payload[8] === 1){
|
|
3747
4051
|
var deviceAddr = mac;
|
|
3748
4052
|
var firmware = payload[1];
|
|
3749
|
-
|
|
3750
|
-
|
|
3751
|
-
|
|
3752
|
-
|
|
3753
|
-
|
|
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
|
+
}
|
|
3754
4113
|
|
|
3755
4114
|
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
3756
4115
|
if(expected_packets != 1){
|
|
@@ -3779,48 +4138,6 @@ function sensor_types(parent){
|
|
|
3779
4138
|
return;
|
|
3780
4139
|
} else{
|
|
3781
4140
|
|
|
3782
|
-
var mode = payload[8];
|
|
3783
|
-
var odr = payload[9];
|
|
3784
|
-
var en_axis = payload[10] & 7;
|
|
3785
|
-
var fsr = payload[10] >> 5;
|
|
3786
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
3787
|
-
|
|
3788
|
-
|
|
3789
|
-
switch(odr){
|
|
3790
|
-
case 6:
|
|
3791
|
-
odr = 50;
|
|
3792
|
-
break;
|
|
3793
|
-
case 7:
|
|
3794
|
-
odr = 100;
|
|
3795
|
-
break;
|
|
3796
|
-
case 8:
|
|
3797
|
-
odr = 200;
|
|
3798
|
-
break;
|
|
3799
|
-
case 9:
|
|
3800
|
-
odr = 400;
|
|
3801
|
-
break;
|
|
3802
|
-
case 10:
|
|
3803
|
-
odr = 800;
|
|
3804
|
-
break;
|
|
3805
|
-
case 11:
|
|
3806
|
-
odr = 1600;
|
|
3807
|
-
break;
|
|
3808
|
-
case 12:
|
|
3809
|
-
odr = 3200;
|
|
3810
|
-
break;
|
|
3811
|
-
case 13:
|
|
3812
|
-
odr = 6400;
|
|
3813
|
-
break;
|
|
3814
|
-
case 14:
|
|
3815
|
-
odr = 12800;
|
|
3816
|
-
break;
|
|
3817
|
-
case 15:
|
|
3818
|
-
odr = 25600;
|
|
3819
|
-
break;
|
|
3820
|
-
default:
|
|
3821
|
-
odr = 0;
|
|
3822
|
-
}
|
|
3823
|
-
|
|
3824
4141
|
globalDevices[deviceAddr] = {
|
|
3825
4142
|
// stream_size: expected_packets,
|
|
3826
4143
|
data: {},
|
|
@@ -3841,47 +4158,6 @@ function sensor_types(parent){
|
|
|
3841
4158
|
}
|
|
3842
4159
|
}
|
|
3843
4160
|
else{
|
|
3844
|
-
var mode = payload[8];
|
|
3845
|
-
var odr = payload[9];
|
|
3846
|
-
var en_axis = payload[10] & 7;
|
|
3847
|
-
var fsr = payload[10] >> 5;
|
|
3848
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
3849
|
-
|
|
3850
|
-
|
|
3851
|
-
switch(odr){
|
|
3852
|
-
case 6:
|
|
3853
|
-
odr = 50;
|
|
3854
|
-
break;
|
|
3855
|
-
case 7:
|
|
3856
|
-
odr = 100;
|
|
3857
|
-
break;
|
|
3858
|
-
case 8:
|
|
3859
|
-
odr = 200;
|
|
3860
|
-
break;
|
|
3861
|
-
case 9:
|
|
3862
|
-
odr = 400;
|
|
3863
|
-
break;
|
|
3864
|
-
case 10:
|
|
3865
|
-
odr = 800;
|
|
3866
|
-
break;
|
|
3867
|
-
case 11:
|
|
3868
|
-
odr = 1600;
|
|
3869
|
-
break;
|
|
3870
|
-
case 12:
|
|
3871
|
-
odr = 3200;
|
|
3872
|
-
break;
|
|
3873
|
-
case 13:
|
|
3874
|
-
odr = 6400;
|
|
3875
|
-
break;
|
|
3876
|
-
case 14:
|
|
3877
|
-
odr = 12800;
|
|
3878
|
-
break;
|
|
3879
|
-
case 15:
|
|
3880
|
-
odr = 25600;
|
|
3881
|
-
break;
|
|
3882
|
-
default:
|
|
3883
|
-
odr = 0;
|
|
3884
|
-
}
|
|
3885
4161
|
|
|
3886
4162
|
globalDevices[deviceAddr] = {
|
|
3887
4163
|
// stream_size: expected_packets,
|
|
@@ -4015,48 +4291,6 @@ function sensor_types(parent){
|
|
|
4015
4291
|
}
|
|
4016
4292
|
}else{
|
|
4017
4293
|
|
|
4018
|
-
var mode = payload[8];
|
|
4019
|
-
var odr = payload[9];
|
|
4020
|
-
var en_axis = payload[10] & 7;
|
|
4021
|
-
var fsr = payload[10] >> 5;
|
|
4022
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
4023
|
-
|
|
4024
|
-
|
|
4025
|
-
switch(odr){
|
|
4026
|
-
case 6:
|
|
4027
|
-
odr = 50;
|
|
4028
|
-
break;
|
|
4029
|
-
case 7:
|
|
4030
|
-
odr = 100;
|
|
4031
|
-
break;
|
|
4032
|
-
case 8:
|
|
4033
|
-
odr = 200;
|
|
4034
|
-
break;
|
|
4035
|
-
case 9:
|
|
4036
|
-
odr = 400;
|
|
4037
|
-
break;
|
|
4038
|
-
case 10:
|
|
4039
|
-
odr = 800;
|
|
4040
|
-
break;
|
|
4041
|
-
case 11:
|
|
4042
|
-
odr = 1600;
|
|
4043
|
-
break;
|
|
4044
|
-
case 12:
|
|
4045
|
-
odr = 3200;
|
|
4046
|
-
break;
|
|
4047
|
-
case 13:
|
|
4048
|
-
odr = 6400;
|
|
4049
|
-
break;
|
|
4050
|
-
case 14:
|
|
4051
|
-
odr = 12800;
|
|
4052
|
-
break;
|
|
4053
|
-
case 15:
|
|
4054
|
-
odr = 25600;
|
|
4055
|
-
break;
|
|
4056
|
-
default:
|
|
4057
|
-
odr = 0;
|
|
4058
|
-
}
|
|
4059
|
-
|
|
4060
4294
|
globalDevices[deviceAddr] = {
|
|
4061
4295
|
// stream_size: expected_packets,
|
|
4062
4296
|
data: {},
|
|
@@ -4367,11 +4601,66 @@ function sensor_types(parent){
|
|
|
4367
4601
|
if(payload[8] === 1){
|
|
4368
4602
|
var deviceAddr = mac;
|
|
4369
4603
|
var firmware = payload[1];
|
|
4370
|
-
|
|
4371
|
-
|
|
4372
|
-
|
|
4373
|
-
|
|
4374
|
-
|
|
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
|
+
}
|
|
4375
4664
|
|
|
4376
4665
|
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
4377
4666
|
if(expected_packets != 1){
|
|
@@ -4399,46 +4688,6 @@ function sensor_types(parent){
|
|
|
4399
4688
|
if(current_packet != 1){
|
|
4400
4689
|
return;
|
|
4401
4690
|
} else{
|
|
4402
|
-
var mode = payload[8];
|
|
4403
|
-
var odr = payload[9];
|
|
4404
|
-
var en_axis = payload[10] & 7;
|
|
4405
|
-
var fsr = payload[10] >> 5;
|
|
4406
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
4407
|
-
|
|
4408
|
-
switch(odr){
|
|
4409
|
-
case 6:
|
|
4410
|
-
odr = 50;
|
|
4411
|
-
break;
|
|
4412
|
-
case 7:
|
|
4413
|
-
odr = 100;
|
|
4414
|
-
break;
|
|
4415
|
-
case 8:
|
|
4416
|
-
odr = 200;
|
|
4417
|
-
break;
|
|
4418
|
-
case 9:
|
|
4419
|
-
odr = 400;
|
|
4420
|
-
break;
|
|
4421
|
-
case 10:
|
|
4422
|
-
odr = 800;
|
|
4423
|
-
break;
|
|
4424
|
-
case 11:
|
|
4425
|
-
odr = 1600;
|
|
4426
|
-
break;
|
|
4427
|
-
case 12:
|
|
4428
|
-
odr = 3200;
|
|
4429
|
-
break;
|
|
4430
|
-
case 13:
|
|
4431
|
-
odr = 6400;
|
|
4432
|
-
break;
|
|
4433
|
-
case 14:
|
|
4434
|
-
odr = 12800;
|
|
4435
|
-
break;
|
|
4436
|
-
case 15:
|
|
4437
|
-
odr = 25600;
|
|
4438
|
-
break;
|
|
4439
|
-
default:
|
|
4440
|
-
odr = 0;
|
|
4441
|
-
}
|
|
4442
4691
|
|
|
4443
4692
|
globalDevices[deviceAddr] = {
|
|
4444
4693
|
// stream_size: expected_packets,
|
|
@@ -4460,47 +4709,6 @@ function sensor_types(parent){
|
|
|
4460
4709
|
}
|
|
4461
4710
|
}
|
|
4462
4711
|
else{
|
|
4463
|
-
var mode = payload[8];
|
|
4464
|
-
var odr = payload[9];
|
|
4465
|
-
var en_axis = payload[10] & 7;
|
|
4466
|
-
var fsr = payload[10] >> 5;
|
|
4467
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
4468
|
-
|
|
4469
|
-
|
|
4470
|
-
switch(odr){
|
|
4471
|
-
case 6:
|
|
4472
|
-
odr = 50;
|
|
4473
|
-
break;
|
|
4474
|
-
case 7:
|
|
4475
|
-
odr = 100;
|
|
4476
|
-
break;
|
|
4477
|
-
case 8:
|
|
4478
|
-
odr = 200;
|
|
4479
|
-
break;
|
|
4480
|
-
case 9:
|
|
4481
|
-
odr = 400;
|
|
4482
|
-
break;
|
|
4483
|
-
case 10:
|
|
4484
|
-
odr = 800;
|
|
4485
|
-
break;
|
|
4486
|
-
case 11:
|
|
4487
|
-
odr = 1600;
|
|
4488
|
-
break;
|
|
4489
|
-
case 12:
|
|
4490
|
-
odr = 3200;
|
|
4491
|
-
break;
|
|
4492
|
-
case 13:
|
|
4493
|
-
odr = 6400;
|
|
4494
|
-
break;
|
|
4495
|
-
case 14:
|
|
4496
|
-
odr = 12800;
|
|
4497
|
-
break;
|
|
4498
|
-
case 15:
|
|
4499
|
-
odr = 25600;
|
|
4500
|
-
break;
|
|
4501
|
-
default:
|
|
4502
|
-
odr = 0;
|
|
4503
|
-
}
|
|
4504
4712
|
|
|
4505
4713
|
globalDevices[deviceAddr] = {
|
|
4506
4714
|
// stream_size: expected_packets,
|
|
@@ -4624,7 +4832,6 @@ function sensor_types(parent){
|
|
|
4624
4832
|
var fft_concat_obj = {
|
|
4625
4833
|
probe: probe,
|
|
4626
4834
|
time_id: globalDevices[deviceAddr].hour +':'+ globalDevices[deviceAddr].minute,
|
|
4627
|
-
probe: probe,
|
|
4628
4835
|
mac_address: deviceAddr,
|
|
4629
4836
|
en_axis: globalDevices[deviceAddr].en_axis,
|
|
4630
4837
|
fsr: fsr_text,
|
|
@@ -4645,47 +4852,6 @@ function sensor_types(parent){
|
|
|
4645
4852
|
return;
|
|
4646
4853
|
}
|
|
4647
4854
|
}else{
|
|
4648
|
-
var mode = payload[8];
|
|
4649
|
-
var odr = payload[9];
|
|
4650
|
-
var en_axis = payload[10] & 7;
|
|
4651
|
-
var fsr = payload[10] >> 5;
|
|
4652
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
4653
|
-
|
|
4654
|
-
|
|
4655
|
-
switch(odr){
|
|
4656
|
-
case 6:
|
|
4657
|
-
odr = 50;
|
|
4658
|
-
break;
|
|
4659
|
-
case 7:
|
|
4660
|
-
odr = 100;
|
|
4661
|
-
break;
|
|
4662
|
-
case 8:
|
|
4663
|
-
odr = 200;
|
|
4664
|
-
break;
|
|
4665
|
-
case 9:
|
|
4666
|
-
odr = 400;
|
|
4667
|
-
break;
|
|
4668
|
-
case 10:
|
|
4669
|
-
odr = 800;
|
|
4670
|
-
break;
|
|
4671
|
-
case 11:
|
|
4672
|
-
odr = 1600;
|
|
4673
|
-
break;
|
|
4674
|
-
case 12:
|
|
4675
|
-
odr = 3200;
|
|
4676
|
-
break;
|
|
4677
|
-
case 13:
|
|
4678
|
-
odr = 6400;
|
|
4679
|
-
break;
|
|
4680
|
-
case 14:
|
|
4681
|
-
odr = 12800;
|
|
4682
|
-
break;
|
|
4683
|
-
case 15:
|
|
4684
|
-
odr = 25600;
|
|
4685
|
-
break;
|
|
4686
|
-
default:
|
|
4687
|
-
odr = 0;
|
|
4688
|
-
}
|
|
4689
4855
|
|
|
4690
4856
|
globalDevices[deviceAddr] = {
|
|
4691
4857
|
// stream_size: expected_packets,
|
|
@@ -5173,11 +5339,66 @@ function sensor_types(parent){
|
|
|
5173
5339
|
if(payload[8] === 1){
|
|
5174
5340
|
var deviceAddr = mac;
|
|
5175
5341
|
var firmware = payload[1];
|
|
5176
|
-
|
|
5177
|
-
|
|
5178
|
-
|
|
5179
|
-
|
|
5180
|
-
|
|
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
|
+
}
|
|
5181
5402
|
|
|
5182
5403
|
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
5183
5404
|
if(expected_packets != 1){
|
|
@@ -5206,48 +5427,6 @@ function sensor_types(parent){
|
|
|
5206
5427
|
return;
|
|
5207
5428
|
} else{
|
|
5208
5429
|
|
|
5209
|
-
var mode = payload[8];
|
|
5210
|
-
var odr = payload[9];
|
|
5211
|
-
var en_axis = payload[10] & 7;
|
|
5212
|
-
var fsr = payload[10] >> 5;
|
|
5213
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
5214
|
-
|
|
5215
|
-
|
|
5216
|
-
switch(odr){
|
|
5217
|
-
case 6:
|
|
5218
|
-
odr = 50;
|
|
5219
|
-
break;
|
|
5220
|
-
case 7:
|
|
5221
|
-
odr = 100;
|
|
5222
|
-
break;
|
|
5223
|
-
case 8:
|
|
5224
|
-
odr = 200;
|
|
5225
|
-
break;
|
|
5226
|
-
case 9:
|
|
5227
|
-
odr = 400;
|
|
5228
|
-
break;
|
|
5229
|
-
case 10:
|
|
5230
|
-
odr = 800;
|
|
5231
|
-
break;
|
|
5232
|
-
case 11:
|
|
5233
|
-
odr = 1600;
|
|
5234
|
-
break;
|
|
5235
|
-
case 12:
|
|
5236
|
-
odr = 3200;
|
|
5237
|
-
break;
|
|
5238
|
-
case 13:
|
|
5239
|
-
odr = 6400;
|
|
5240
|
-
break;
|
|
5241
|
-
case 14:
|
|
5242
|
-
odr = 12800;
|
|
5243
|
-
break;
|
|
5244
|
-
case 15:
|
|
5245
|
-
odr = 25600;
|
|
5246
|
-
break;
|
|
5247
|
-
default:
|
|
5248
|
-
odr = 0;
|
|
5249
|
-
}
|
|
5250
|
-
|
|
5251
5430
|
globalDevices[deviceAddr] = {
|
|
5252
5431
|
// stream_size: expected_packets,
|
|
5253
5432
|
data: {},
|
|
@@ -5268,47 +5447,6 @@ function sensor_types(parent){
|
|
|
5268
5447
|
}
|
|
5269
5448
|
}
|
|
5270
5449
|
else{
|
|
5271
|
-
var mode = payload[8];
|
|
5272
|
-
var odr = payload[9];
|
|
5273
|
-
var en_axis = payload[10] & 7;
|
|
5274
|
-
var fsr = payload[10] >> 5;
|
|
5275
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
5276
|
-
|
|
5277
|
-
|
|
5278
|
-
switch(odr){
|
|
5279
|
-
case 6:
|
|
5280
|
-
odr = 50;
|
|
5281
|
-
break;
|
|
5282
|
-
case 7:
|
|
5283
|
-
odr = 100;
|
|
5284
|
-
break;
|
|
5285
|
-
case 8:
|
|
5286
|
-
odr = 200;
|
|
5287
|
-
break;
|
|
5288
|
-
case 9:
|
|
5289
|
-
odr = 400;
|
|
5290
|
-
break;
|
|
5291
|
-
case 10:
|
|
5292
|
-
odr = 800;
|
|
5293
|
-
break;
|
|
5294
|
-
case 11:
|
|
5295
|
-
odr = 1600;
|
|
5296
|
-
break;
|
|
5297
|
-
case 12:
|
|
5298
|
-
odr = 3200;
|
|
5299
|
-
break;
|
|
5300
|
-
case 13:
|
|
5301
|
-
odr = 6400;
|
|
5302
|
-
break;
|
|
5303
|
-
case 14:
|
|
5304
|
-
odr = 12800;
|
|
5305
|
-
break;
|
|
5306
|
-
case 15:
|
|
5307
|
-
odr = 25600;
|
|
5308
|
-
break;
|
|
5309
|
-
default:
|
|
5310
|
-
odr = 0;
|
|
5311
|
-
}
|
|
5312
5450
|
|
|
5313
5451
|
globalDevices[deviceAddr] = {
|
|
5314
5452
|
// stream_size: expected_packets,
|
|
@@ -5445,48 +5583,6 @@ function sensor_types(parent){
|
|
|
5445
5583
|
}
|
|
5446
5584
|
}else{
|
|
5447
5585
|
|
|
5448
|
-
var mode = payload[8];
|
|
5449
|
-
var odr = payload[9];
|
|
5450
|
-
var en_axis = payload[10] & 7;
|
|
5451
|
-
var fsr = payload[10] >> 5;
|
|
5452
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
5453
|
-
|
|
5454
|
-
|
|
5455
|
-
switch(odr){
|
|
5456
|
-
case 6:
|
|
5457
|
-
odr = 50;
|
|
5458
|
-
break;
|
|
5459
|
-
case 7:
|
|
5460
|
-
odr = 100;
|
|
5461
|
-
break;
|
|
5462
|
-
case 8:
|
|
5463
|
-
odr = 200;
|
|
5464
|
-
break;
|
|
5465
|
-
case 9:
|
|
5466
|
-
odr = 400;
|
|
5467
|
-
break;
|
|
5468
|
-
case 10:
|
|
5469
|
-
odr = 800;
|
|
5470
|
-
break;
|
|
5471
|
-
case 11:
|
|
5472
|
-
odr = 1600;
|
|
5473
|
-
break;
|
|
5474
|
-
case 12:
|
|
5475
|
-
odr = 3200;
|
|
5476
|
-
break;
|
|
5477
|
-
case 13:
|
|
5478
|
-
odr = 6400;
|
|
5479
|
-
break;
|
|
5480
|
-
case 14:
|
|
5481
|
-
odr = 12800;
|
|
5482
|
-
break;
|
|
5483
|
-
case 15:
|
|
5484
|
-
odr = 25600;
|
|
5485
|
-
break;
|
|
5486
|
-
default:
|
|
5487
|
-
odr = 0;
|
|
5488
|
-
}
|
|
5489
|
-
|
|
5490
5586
|
globalDevices[deviceAddr] = {
|
|
5491
5587
|
// stream_size: expected_packets,
|
|
5492
5588
|
data: {},
|
|
@@ -5787,11 +5883,66 @@ function sensor_types(parent){
|
|
|
5787
5883
|
if(payload[8] === 1){
|
|
5788
5884
|
var deviceAddr = mac;
|
|
5789
5885
|
var firmware = payload[1];
|
|
5790
|
-
|
|
5791
|
-
|
|
5792
|
-
|
|
5793
|
-
|
|
5794
|
-
|
|
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
|
+
}
|
|
5795
5946
|
|
|
5796
5947
|
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
5797
5948
|
if(expected_packets != 1){
|
|
@@ -5820,48 +5971,6 @@ function sensor_types(parent){
|
|
|
5820
5971
|
return;
|
|
5821
5972
|
} else{
|
|
5822
5973
|
|
|
5823
|
-
var mode = payload[8];
|
|
5824
|
-
var odr = payload[9];
|
|
5825
|
-
var en_axis = payload[10] & 7;
|
|
5826
|
-
var fsr = payload[10] >> 5;
|
|
5827
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
5828
|
-
|
|
5829
|
-
|
|
5830
|
-
switch(odr){
|
|
5831
|
-
case 6:
|
|
5832
|
-
odr = 50;
|
|
5833
|
-
break;
|
|
5834
|
-
case 7:
|
|
5835
|
-
odr = 100;
|
|
5836
|
-
break;
|
|
5837
|
-
case 8:
|
|
5838
|
-
odr = 200;
|
|
5839
|
-
break;
|
|
5840
|
-
case 9:
|
|
5841
|
-
odr = 400;
|
|
5842
|
-
break;
|
|
5843
|
-
case 10:
|
|
5844
|
-
odr = 800;
|
|
5845
|
-
break;
|
|
5846
|
-
case 11:
|
|
5847
|
-
odr = 1600;
|
|
5848
|
-
break;
|
|
5849
|
-
case 12:
|
|
5850
|
-
odr = 3200;
|
|
5851
|
-
break;
|
|
5852
|
-
case 13:
|
|
5853
|
-
odr = 6400;
|
|
5854
|
-
break;
|
|
5855
|
-
case 14:
|
|
5856
|
-
odr = 12800;
|
|
5857
|
-
break;
|
|
5858
|
-
case 15:
|
|
5859
|
-
odr = 25600;
|
|
5860
|
-
break;
|
|
5861
|
-
default:
|
|
5862
|
-
odr = 0;
|
|
5863
|
-
}
|
|
5864
|
-
|
|
5865
5974
|
globalDevices[deviceAddr] = {
|
|
5866
5975
|
// stream_size: expected_packets,
|
|
5867
5976
|
data: {},
|
|
@@ -5882,47 +5991,6 @@ function sensor_types(parent){
|
|
|
5882
5991
|
}
|
|
5883
5992
|
}
|
|
5884
5993
|
else{
|
|
5885
|
-
var mode = payload[8];
|
|
5886
|
-
var odr = payload[9];
|
|
5887
|
-
var en_axis = payload[10] & 7;
|
|
5888
|
-
var fsr = payload[10] >> 5;
|
|
5889
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
5890
|
-
|
|
5891
|
-
|
|
5892
|
-
switch(odr){
|
|
5893
|
-
case 6:
|
|
5894
|
-
odr = 50;
|
|
5895
|
-
break;
|
|
5896
|
-
case 7:
|
|
5897
|
-
odr = 100;
|
|
5898
|
-
break;
|
|
5899
|
-
case 8:
|
|
5900
|
-
odr = 200;
|
|
5901
|
-
break;
|
|
5902
|
-
case 9:
|
|
5903
|
-
odr = 400;
|
|
5904
|
-
break;
|
|
5905
|
-
case 10:
|
|
5906
|
-
odr = 800;
|
|
5907
|
-
break;
|
|
5908
|
-
case 11:
|
|
5909
|
-
odr = 1600;
|
|
5910
|
-
break;
|
|
5911
|
-
case 12:
|
|
5912
|
-
odr = 3200;
|
|
5913
|
-
break;
|
|
5914
|
-
case 13:
|
|
5915
|
-
odr = 6400;
|
|
5916
|
-
break;
|
|
5917
|
-
case 14:
|
|
5918
|
-
odr = 12800;
|
|
5919
|
-
break;
|
|
5920
|
-
case 15:
|
|
5921
|
-
odr = 25600;
|
|
5922
|
-
break;
|
|
5923
|
-
default:
|
|
5924
|
-
odr = 0;
|
|
5925
|
-
}
|
|
5926
5994
|
|
|
5927
5995
|
globalDevices[deviceAddr] = {
|
|
5928
5996
|
// stream_size: expected_packets,
|
|
@@ -6055,48 +6123,6 @@ function sensor_types(parent){
|
|
|
6055
6123
|
}
|
|
6056
6124
|
}else{
|
|
6057
6125
|
|
|
6058
|
-
var mode = payload[8];
|
|
6059
|
-
var odr = payload[9];
|
|
6060
|
-
var en_axis = payload[10] & 7;
|
|
6061
|
-
var fsr = payload[10] >> 5;
|
|
6062
|
-
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
6063
|
-
|
|
6064
|
-
|
|
6065
|
-
switch(odr){
|
|
6066
|
-
case 6:
|
|
6067
|
-
odr = 50;
|
|
6068
|
-
break;
|
|
6069
|
-
case 7:
|
|
6070
|
-
odr = 100;
|
|
6071
|
-
break;
|
|
6072
|
-
case 8:
|
|
6073
|
-
odr = 200;
|
|
6074
|
-
break;
|
|
6075
|
-
case 9:
|
|
6076
|
-
odr = 400;
|
|
6077
|
-
break;
|
|
6078
|
-
case 10:
|
|
6079
|
-
odr = 800;
|
|
6080
|
-
break;
|
|
6081
|
-
case 11:
|
|
6082
|
-
odr = 1600;
|
|
6083
|
-
break;
|
|
6084
|
-
case 12:
|
|
6085
|
-
odr = 3200;
|
|
6086
|
-
break;
|
|
6087
|
-
case 13:
|
|
6088
|
-
odr = 6400;
|
|
6089
|
-
break;
|
|
6090
|
-
case 14:
|
|
6091
|
-
odr = 12800;
|
|
6092
|
-
break;
|
|
6093
|
-
case 15:
|
|
6094
|
-
odr = 25600;
|
|
6095
|
-
break;
|
|
6096
|
-
default:
|
|
6097
|
-
odr = 0;
|
|
6098
|
-
}
|
|
6099
|
-
|
|
6100
6126
|
globalDevices[deviceAddr] = {
|
|
6101
6127
|
// stream_size: expected_packets,
|
|
6102
6128
|
data: {},
|
|
@@ -6912,147 +6938,602 @@ function sensor_types(parent){
|
|
|
6912
6938
|
};
|
|
6913
6939
|
}
|
|
6914
6940
|
},
|
|
6915
|
-
'
|
|
6916
|
-
name: '
|
|
6917
|
-
parse: (
|
|
6918
|
-
|
|
6919
|
-
|
|
6920
|
-
|
|
6921
|
-
|
|
6922
|
-
|
|
6923
|
-
|
|
6924
|
-
|
|
6925
|
-
|
|
6926
|
-
|
|
6927
|
-
|
|
6928
|
-
return {
|
|
6929
|
-
c1_raw_adc: d.slice(0, 2).reduce(msbLsb),
|
|
6930
|
-
c1_ma: d.slice(2, 4).reduce(msbLsb) / 100,
|
|
6931
|
-
c1_db: d.slice(4, 6).reduce(msbLsb) / 100,
|
|
6932
|
-
c2_raw_adc: d.slice(6, 8).reduce(msbLsb),
|
|
6933
|
-
c2_ma: d.slice(8, 10).reduce(msbLsb) / 100,
|
|
6934
|
-
c2_db: d.slice(10, 12).reduce(msbLsb) / 100
|
|
6935
|
-
};
|
|
6936
|
-
}
|
|
6937
|
-
},
|
|
6938
|
-
'107': {
|
|
6939
|
-
name: '16-Bit 4-Channel 4-20mA',
|
|
6940
|
-
parse: (d) => {
|
|
6941
|
-
var adc1 = signInt(d.slice(0, 2).reduce(msbLsb));
|
|
6942
|
-
var adc2 = signInt(d.slice(2, 4).reduce(msbLsb));
|
|
6943
|
-
var adc3 = signInt(d.slice(4, 6).reduce(msbLsb));
|
|
6944
|
-
var adc4 = signInt(d.slice(6, 8).reduce(msbLsb));
|
|
6945
|
-
var ma1 = (signInt(d.slice(8, 10).reduce(msbLsb)))/100.0;
|
|
6946
|
-
var ma2 = (signInt(d.slice(10, 12).reduce(msbLsb)))/100.0;
|
|
6947
|
-
var ma3 = (signInt(d.slice(12, 14).reduce(msbLsb)))/100.0;
|
|
6948
|
-
var ma4 = (signInt(d.slice(14, 16).reduce(msbLsb)))/100.0;
|
|
6949
|
-
return {
|
|
6950
|
-
adc1: adc1,
|
|
6951
|
-
adc2: adc2,
|
|
6952
|
-
adc3: adc3,
|
|
6953
|
-
adc4: adc4,
|
|
6954
|
-
ma1: ma1,
|
|
6955
|
-
ma2: ma2,
|
|
6956
|
-
ma3: ma3,
|
|
6957
|
-
ma4: ma4
|
|
6958
|
-
};
|
|
6959
|
-
}
|
|
6960
|
-
},
|
|
6961
|
-
'108': {
|
|
6962
|
-
name: 'Machine Uptime Monitoring Sensor',
|
|
6963
|
-
parse: (d, payload) => {
|
|
6964
|
-
let firmware = payload[1];
|
|
6965
|
-
if(payload[7] & 2 != 0){
|
|
6966
|
-
console.log('Error found');
|
|
6967
|
-
// parsed.data = {error: 'Error found, Acclerometer Probe may be unattached'};
|
|
6968
|
-
let error = {error: 'Error found, Acclerometer Probe may be unattached'};
|
|
6969
|
-
return error;
|
|
6970
|
-
}
|
|
6971
|
-
if(firmware > 4){
|
|
6972
|
-
let report_type = d[41]? "Shift": "Regular";
|
|
6973
|
-
return {
|
|
6974
|
-
digital_input_counter: d.slice(0, 4).reduce(msbLsb),
|
|
6975
|
-
digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
6976
|
-
ct_input_counter: d.slice(8, 12).reduce(msbLsb),
|
|
6977
|
-
ct_input_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
6978
|
-
opto_input_counter: d.slice(16, 20).reduce(msbLsb),
|
|
6979
|
-
opto_input_uptime: d.slice(20, 24).reduce(msbLsb),
|
|
6980
|
-
accelerometer_counter: d.slice(24, 28).reduce(msbLsb),
|
|
6981
|
-
accelerometer_uptime: d.slice(28, 32).reduce(msbLsb),
|
|
6982
|
-
magnetometer_counter: d.slice(32, 36).reduce(msbLsb),
|
|
6983
|
-
magnetometer_uptime: d.slice(36, 40).reduce(msbLsb),
|
|
6984
|
-
input_di: d[40] & 1 ? 1 : 0,
|
|
6985
|
-
input_ct: d[40] & 2 ? 1 : 0,
|
|
6986
|
-
input_opto: d[40] & 4 ? 1 : 0,
|
|
6987
|
-
input_acc: d[40] & 8 ? 1 : 0,
|
|
6988
|
-
input_mag: d[40] & 16 ? 1 : 0,
|
|
6989
|
-
report_type: report_type,
|
|
6990
|
-
rtc: [
|
|
6991
|
-
String(d[42]).padStart(2, '0'),
|
|
6992
|
-
String(d[43]).padStart(2, '0'),
|
|
6993
|
-
String(d[44]).padStart(2, '0')
|
|
6994
|
-
].join(':')
|
|
6995
|
-
};
|
|
6996
|
-
}else{
|
|
6997
|
-
return {
|
|
6998
|
-
digital_input_counter: d.slice(0, 4).reduce(msbLsb),
|
|
6999
|
-
digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
7000
|
-
ct_input_counter: d.slice(8, 12).reduce(msbLsb),
|
|
7001
|
-
ct_input_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
7002
|
-
opto_input_counter: d.slice(16, 20).reduce(msbLsb),
|
|
7003
|
-
opto_input_uptime: d.slice(20, 24).reduce(msbLsb),
|
|
7004
|
-
accelerometer_counter: d.slice(24, 28).reduce(msbLsb),
|
|
7005
|
-
accelerometer_uptime: d.slice(28, 32).reduce(msbLsb),
|
|
7006
|
-
magnetometer_counter: d.slice(32, 36).reduce(msbLsb),
|
|
7007
|
-
magnetometer_uptime: d.slice(36, 40).reduce(msbLsb),
|
|
7008
|
-
input_di: d[40] & 1 ? 1 : 0,
|
|
7009
|
-
input_ct: d[40] & 2 ? 1 : 0,
|
|
7010
|
-
input_opto: d[40] & 4 ? 1 : 0,
|
|
7011
|
-
input_acc: d[40] & 8 ? 1 : 0,
|
|
7012
|
-
input_mag: d[40] & 16 ? 1 : 0
|
|
7013
|
-
};
|
|
7014
|
-
}
|
|
7015
|
-
},
|
|
7016
|
-
'parse_fly': (frame) => {
|
|
7017
|
-
return {
|
|
7018
|
-
'firmware': frame[2],
|
|
7019
|
-
'report_rate': frame.slice(12, 16).reduce(msbLsb).toString() + "sec.",
|
|
7020
|
-
'accelerometer_threshold': (frame[16]* 32).toString() + "mg.",
|
|
7021
|
-
'debouncing_timeout': frame[17].toString() + "sec.",
|
|
7022
|
-
'accelero_active_state': frame[18],
|
|
7023
|
-
'digital_inputs_active_edge': frame.slice(19, 22).reduce(msbLsb),
|
|
7024
|
-
'counter_threshold': frame.slice(22, 26).reduce(msbLsb).toString() + "sec.",
|
|
7025
|
-
'trasnmit_on_change_status': frame[26],
|
|
7026
|
-
'machine_values': {
|
|
7027
|
-
'firmware': frame[2],
|
|
7028
|
-
'report_rate': frame.slice(12, 16),
|
|
7029
|
-
'accelerometer_threshold': frame[16],
|
|
7030
|
-
'debouncing_timeout': frame[17],
|
|
7031
|
-
'accelero_active_state': frame[18],
|
|
7032
|
-
'digital_inputs_active_edge': frame.slice(19, 22),
|
|
7033
|
-
'counter_threshold': frame.slice(22, 26),
|
|
7034
|
-
'trasnmit_on_change_status': frame[26]
|
|
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;
|
|
7035
6954
|
}
|
|
7036
|
-
|
|
7037
|
-
|
|
7038
|
-
|
|
7039
|
-
|
|
7040
|
-
|
|
7041
|
-
|
|
7042
|
-
|
|
7043
|
-
|
|
7044
|
-
|
|
7045
|
-
|
|
7046
|
-
|
|
7047
|
-
|
|
7048
|
-
|
|
7049
|
-
|
|
7050
|
-
|
|
7051
|
-
|
|
7052
|
-
|
|
7053
|
-
|
|
7054
|
-
|
|
7055
|
-
|
|
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
|
+
},
|
|
7224
|
+
'105': {
|
|
7225
|
+
name: '1 Channel Automatic Luber With Ultrasound Vibration Sensor',
|
|
7226
|
+
parse: (d) => {
|
|
7227
|
+
return {
|
|
7228
|
+
raw_adc: d.slice(0, 2).reduce(msbLsb),
|
|
7229
|
+
ma: d.slice(2, 4).reduce(msbLsb) / 100,
|
|
7230
|
+
db: d.slice(4, 6).reduce(msbLsb) / 100
|
|
7231
|
+
};
|
|
7232
|
+
}
|
|
7233
|
+
},
|
|
7234
|
+
'106': {
|
|
7235
|
+
name: '2 Channel Automatic Luber With Ultrasound Vibration Sensor',
|
|
7236
|
+
parse: (d) => {
|
|
7237
|
+
return {
|
|
7238
|
+
c1_raw_adc: d.slice(0, 2).reduce(msbLsb),
|
|
7239
|
+
c1_ma: d.slice(2, 4).reduce(msbLsb) / 100,
|
|
7240
|
+
c1_db: d.slice(4, 6).reduce(msbLsb) / 100,
|
|
7241
|
+
c2_raw_adc: d.slice(6, 8).reduce(msbLsb),
|
|
7242
|
+
c2_ma: d.slice(8, 10).reduce(msbLsb) / 100,
|
|
7243
|
+
c2_db: d.slice(10, 12).reduce(msbLsb) / 100
|
|
7244
|
+
};
|
|
7245
|
+
}
|
|
7246
|
+
},
|
|
7247
|
+
'107': {
|
|
7248
|
+
name: '16-Bit 4-Channel 4-20mA',
|
|
7249
|
+
parse: (d) => {
|
|
7250
|
+
var adc1 = signInt(d.slice(0, 2).reduce(msbLsb));
|
|
7251
|
+
var adc2 = signInt(d.slice(2, 4).reduce(msbLsb));
|
|
7252
|
+
var adc3 = signInt(d.slice(4, 6).reduce(msbLsb));
|
|
7253
|
+
var adc4 = signInt(d.slice(6, 8).reduce(msbLsb));
|
|
7254
|
+
var ma1 = (signInt(d.slice(8, 10).reduce(msbLsb)))/100.0;
|
|
7255
|
+
var ma2 = (signInt(d.slice(10, 12).reduce(msbLsb)))/100.0;
|
|
7256
|
+
var ma3 = (signInt(d.slice(12, 14).reduce(msbLsb)))/100.0;
|
|
7257
|
+
var ma4 = (signInt(d.slice(14, 16).reduce(msbLsb)))/100.0;
|
|
7258
|
+
return {
|
|
7259
|
+
adc1: adc1,
|
|
7260
|
+
adc2: adc2,
|
|
7261
|
+
adc3: adc3,
|
|
7262
|
+
adc4: adc4,
|
|
7263
|
+
ma1: ma1,
|
|
7264
|
+
ma2: ma2,
|
|
7265
|
+
ma3: ma3,
|
|
7266
|
+
ma4: ma4
|
|
7267
|
+
};
|
|
7268
|
+
}
|
|
7269
|
+
},
|
|
7270
|
+
'108': {
|
|
7271
|
+
name: 'Machine Uptime Monitoring Sensor',
|
|
7272
|
+
parse: (d, payload) => {
|
|
7273
|
+
let firmware = payload[1];
|
|
7274
|
+
if(payload[7] & 2 != 0){
|
|
7275
|
+
console.log('Error found');
|
|
7276
|
+
// parsed.data = {error: 'Error found, Acclerometer Probe may be unattached'};
|
|
7277
|
+
let error = {error: 'Error found, Acclerometer Probe may be unattached'};
|
|
7278
|
+
return error;
|
|
7279
|
+
}
|
|
7280
|
+
if(firmware > 4){
|
|
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
|
+
}
|
|
7296
|
+
return {
|
|
7297
|
+
digital_input_counter: d.slice(0, 4).reduce(msbLsb),
|
|
7298
|
+
digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
7299
|
+
ct_input_counter: d.slice(8, 12).reduce(msbLsb),
|
|
7300
|
+
ct_input_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
7301
|
+
opto_input_counter: d.slice(16, 20).reduce(msbLsb),
|
|
7302
|
+
opto_input_uptime: d.slice(20, 24).reduce(msbLsb),
|
|
7303
|
+
accelerometer_counter: d.slice(24, 28).reduce(msbLsb),
|
|
7304
|
+
accelerometer_uptime: d.slice(28, 32).reduce(msbLsb),
|
|
7305
|
+
magnetometer_counter: d.slice(32, 36).reduce(msbLsb),
|
|
7306
|
+
magnetometer_uptime: d.slice(36, 40).reduce(msbLsb),
|
|
7307
|
+
input_di: d[40] & 1 ? 1 : 0,
|
|
7308
|
+
input_ct: d[40] & 2 ? 1 : 0,
|
|
7309
|
+
input_opto: d[40] & 4 ? 1 : 0,
|
|
7310
|
+
input_acc: d[40] & 8 ? 1 : 0,
|
|
7311
|
+
input_mag: d[40] & 16 ? 1 : 0,
|
|
7312
|
+
report_type: report_type,
|
|
7313
|
+
rtc: [
|
|
7314
|
+
String(d[42]).padStart(2, '0'),
|
|
7315
|
+
String(d[43]).padStart(2, '0'),
|
|
7316
|
+
String(d[44]).padStart(2, '0')
|
|
7317
|
+
].join(':')
|
|
7318
|
+
};
|
|
7319
|
+
}else{
|
|
7320
|
+
return {
|
|
7321
|
+
digital_input_counter: d.slice(0, 4).reduce(msbLsb),
|
|
7322
|
+
digital_input_uptime: d.slice(4, 8).reduce(msbLsb),
|
|
7323
|
+
ct_input_counter: d.slice(8, 12).reduce(msbLsb),
|
|
7324
|
+
ct_input_uptime: d.slice(12, 16).reduce(msbLsb),
|
|
7325
|
+
opto_input_counter: d.slice(16, 20).reduce(msbLsb),
|
|
7326
|
+
opto_input_uptime: d.slice(20, 24).reduce(msbLsb),
|
|
7327
|
+
accelerometer_counter: d.slice(24, 28).reduce(msbLsb),
|
|
7328
|
+
accelerometer_uptime: d.slice(28, 32).reduce(msbLsb),
|
|
7329
|
+
magnetometer_counter: d.slice(32, 36).reduce(msbLsb),
|
|
7330
|
+
magnetometer_uptime: d.slice(36, 40).reduce(msbLsb),
|
|
7331
|
+
input_di: d[40] & 1 ? 1 : 0,
|
|
7332
|
+
input_ct: d[40] & 2 ? 1 : 0,
|
|
7333
|
+
input_opto: d[40] & 4 ? 1 : 0,
|
|
7334
|
+
input_acc: d[40] & 8 ? 1 : 0,
|
|
7335
|
+
input_mag: d[40] & 16 ? 1 : 0
|
|
7336
|
+
};
|
|
7337
|
+
}
|
|
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
|
+
},
|
|
7505
|
+
'parse_fly': (frame) => {
|
|
7506
|
+
return {
|
|
7507
|
+
'firmware': frame[2],
|
|
7508
|
+
'hardware_id': frame.slice(12, 15),
|
|
7509
|
+
'sample_rate': frame.slice(15, 19).reduce(msbLsb) + " Sec.",
|
|
7510
|
+
'tx_life_counter': frame.slice(19, 23).reduce(msbLsb),
|
|
7511
|
+
'machine_values': {
|
|
7512
|
+
'firmware': frame[2],
|
|
7513
|
+
'hardware_id': frame.slice(12, 15),
|
|
7514
|
+
'sample_rate': frame.slice(15, 19),
|
|
7515
|
+
'tx_life_counter': frame.slice(19, 23)
|
|
7516
|
+
}
|
|
7517
|
+
}
|
|
7518
|
+
}
|
|
7519
|
+
},
|
|
7520
|
+
'109': {
|
|
7521
|
+
name: 'Wireless Custom Solar Sensor',
|
|
7522
|
+
parse: (d) => {
|
|
7523
|
+
return {
|
|
7524
|
+
illuminance: d.slice(0, 4).reduce(msbLsb),
|
|
7525
|
+
total_solar_radiation: d.slice(4, 6).reduce(msbLsb),
|
|
7526
|
+
ultraviolet_radiation: d.slice(6, 8).reduce(msbLsb)
|
|
7527
|
+
};
|
|
7528
|
+
},
|
|
7529
|
+
'parse_fly': (frame) => {
|
|
7530
|
+
return {
|
|
7531
|
+
'firmware': frame[2],
|
|
7532
|
+
'hardware_id': frame.slice(12, 15),
|
|
7533
|
+
'sample_rate': frame.slice(15, 19).reduce(msbLsb) + " Sec.",
|
|
7534
|
+
'tx_life_counter': frame.slice(19, 23).reduce(msbLsb),
|
|
7535
|
+
'machine_values': {
|
|
7536
|
+
'firmware': frame[2],
|
|
7056
7537
|
'hardware_id': frame.slice(12, 15),
|
|
7057
7538
|
'sample_rate': frame.slice(15, 19).reduce(msbLsb),
|
|
7058
7539
|
'tx_life_counter': frame.slice(19, 23).reduce(msbLsb)
|
|
@@ -7081,7 +7562,7 @@ function sensor_types(parent){
|
|
|
7081
7562
|
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
7082
7563
|
if(expected_packets != 1){
|
|
7083
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
|
|
7084
|
-
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)) {
|
|
7085
7566
|
console.log('-----');
|
|
7086
7567
|
console.log('bad packet breakdown deleting stream');
|
|
7087
7568
|
console.log(current_packet);
|
|
@@ -7106,8 +7587,7 @@ function sensor_types(parent){
|
|
|
7106
7587
|
} else{
|
|
7107
7588
|
|
|
7108
7589
|
var mode = payload[8];
|
|
7109
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
7110
|
-
var en_axis = payload[11] & 7;
|
|
7590
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
7111
7591
|
var fsr = payload[11] >> 5;
|
|
7112
7592
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
7113
7593
|
|
|
@@ -7116,7 +7596,6 @@ function sensor_types(parent){
|
|
|
7116
7596
|
data: {},
|
|
7117
7597
|
odr: odr,
|
|
7118
7598
|
mo: mode,
|
|
7119
|
-
en_axis: en_axis,
|
|
7120
7599
|
fsr: fsr,
|
|
7121
7600
|
hour: hour,
|
|
7122
7601
|
minute: minute,
|
|
@@ -7132,8 +7611,7 @@ function sensor_types(parent){
|
|
|
7132
7611
|
}
|
|
7133
7612
|
else{
|
|
7134
7613
|
var mode = payload[8];
|
|
7135
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
7136
|
-
var en_axis = payload[11] & 7;
|
|
7614
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
7137
7615
|
var fsr = payload[11] >> 5;
|
|
7138
7616
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
7139
7617
|
|
|
@@ -7142,7 +7620,6 @@ function sensor_types(parent){
|
|
|
7142
7620
|
data: {},
|
|
7143
7621
|
odr: odr,
|
|
7144
7622
|
mo: mode,
|
|
7145
|
-
en_axis: en_axis,
|
|
7146
7623
|
fsr: fsr,
|
|
7147
7624
|
hour: hour,
|
|
7148
7625
|
minute: minute,
|
|
@@ -7162,43 +7639,11 @@ function sensor_types(parent){
|
|
|
7162
7639
|
var fft_concat = {};
|
|
7163
7640
|
|
|
7164
7641
|
var en_axis_data = {};
|
|
7165
|
-
|
|
7166
|
-
|
|
7167
|
-
|
|
7168
|
-
|
|
7169
|
-
|
|
7170
|
-
case 2:
|
|
7171
|
-
en_axis_data.y_offset = 0;
|
|
7172
|
-
en_axis_data.increment = 2;
|
|
7173
|
-
break;
|
|
7174
|
-
case 3:
|
|
7175
|
-
en_axis_data.x_offset = 0;
|
|
7176
|
-
en_axis_data.y_offset = 2;
|
|
7177
|
-
en_axis_data.increment = 4;
|
|
7178
|
-
break;
|
|
7179
|
-
case 4:
|
|
7180
|
-
en_axis_data.z_offset = 0;
|
|
7181
|
-
en_axis_data.increment = 2;
|
|
7182
|
-
break;
|
|
7183
|
-
case 5:
|
|
7184
|
-
en_axis_data.x_offset = 0;
|
|
7185
|
-
en_axis_data.z_offset = 2;
|
|
7186
|
-
en_axis_data.increment = 4;
|
|
7187
|
-
break;
|
|
7188
|
-
case 6:
|
|
7189
|
-
en_axis_data.y_offset = 0;
|
|
7190
|
-
en_axis_data.z_offset = 2;
|
|
7191
|
-
en_axis_data.increment = 4;
|
|
7192
|
-
break;
|
|
7193
|
-
case 7:
|
|
7194
|
-
en_axis_data.x_offset = 0;
|
|
7195
|
-
en_axis_data.y_offset = 2;
|
|
7196
|
-
en_axis_data.z_offset = 4;
|
|
7197
|
-
en_axis_data.increment = 6;
|
|
7198
|
-
break;
|
|
7199
|
-
default:
|
|
7200
|
-
en_axis_data.increment = 0;
|
|
7201
|
-
}
|
|
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: []};
|
|
7202
7647
|
|
|
7203
7648
|
var fsr_mult = .00006;
|
|
7204
7649
|
var fsr_text = "";
|
|
@@ -7231,19 +7676,18 @@ function sensor_types(parent){
|
|
|
7231
7676
|
break;
|
|
7232
7677
|
}
|
|
7233
7678
|
|
|
7679
|
+
|
|
7234
7680
|
for(var i = 0; i < raw_data.length; i+=en_axis_data.increment){
|
|
7235
7681
|
label++;
|
|
7236
7682
|
|
|
7237
|
-
fft_concat[label] = {};
|
|
7238
|
-
|
|
7239
7683
|
if('x_offset' in en_axis_data){
|
|
7240
|
-
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)));
|
|
7241
7685
|
}
|
|
7242
7686
|
if('y_offset' in en_axis_data){
|
|
7243
|
-
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)));
|
|
7244
7688
|
}
|
|
7245
7689
|
if('z_offset' in en_axis_data){
|
|
7246
|
-
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)));
|
|
7247
7691
|
}
|
|
7248
7692
|
}
|
|
7249
7693
|
var fft_concat_obj = {
|
|
@@ -7251,7 +7695,6 @@ function sensor_types(parent){
|
|
|
7251
7695
|
msg_type: msg_type,
|
|
7252
7696
|
time_id: globalDevices[deviceAddr].hour +':'+ globalDevices[deviceAddr].minute,
|
|
7253
7697
|
mac_address: deviceAddr,
|
|
7254
|
-
en_axis: globalDevices[deviceAddr].en_axis,
|
|
7255
7698
|
fsr: fsr_text,
|
|
7256
7699
|
odr: globalDevices[deviceAddr].odr,
|
|
7257
7700
|
device_temp: globalDevices[deviceAddr].device_temp,
|
|
@@ -7273,8 +7716,7 @@ function sensor_types(parent){
|
|
|
7273
7716
|
}else{
|
|
7274
7717
|
|
|
7275
7718
|
var mode = payload[8];
|
|
7276
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
7277
|
-
var en_axis = payload[11] & 7;
|
|
7719
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
7278
7720
|
var fsr = payload[11] >> 5;
|
|
7279
7721
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
7280
7722
|
|
|
@@ -7283,7 +7725,6 @@ function sensor_types(parent){
|
|
|
7283
7725
|
data: {},
|
|
7284
7726
|
odr: odr,
|
|
7285
7727
|
mo: mode,
|
|
7286
|
-
en_axis: en_axis,
|
|
7287
7728
|
fsr: fsr,
|
|
7288
7729
|
hour: hour,
|
|
7289
7730
|
minute: minute,
|
|
@@ -7563,54 +8004,109 @@ function sensor_types(parent){
|
|
|
7563
8004
|
frame_data.auto_raw_interval = frame[32] * frame_data.sampling_interval_number || 'disabled';
|
|
7564
8005
|
frame_data.auto_raw_interval = typeof frame_data.auto_raw_interval === 'number' ? frame_data.auto_raw_interval+'min' : frame_data.auto_raw_interval;
|
|
7565
8006
|
frame_data.smart_mode_threshold = frame[34] * 50;
|
|
7566
|
-
|
|
7567
|
-
|
|
7568
|
-
'destination_address': toMac(frame.slice(12, 16)),
|
|
7569
|
-
'mode': frame_data.mode,
|
|
7570
|
-
'odr': frame_data.odr_1+'Hz',
|
|
7571
|
-
'sampling_duration': frame_data.sampling_duration_1,
|
|
7572
|
-
'filter_status': frame_data.filter_status,
|
|
7573
|
-
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
7574
|
-
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
7575
|
-
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
7576
|
-
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
7577
|
-
'sampling_interval': frame_data.sampling_interval,
|
|
7578
|
-
'on_request_timeout': frame_data.on_request_timeout,
|
|
7579
|
-
'deadband': frame_data.deadband,
|
|
7580
|
-
'payload_length': frame_data.payload_length,
|
|
7581
|
-
'fsr': frame_data.fsr_text,
|
|
7582
|
-
'rpm_compute_status': frame_data.rpm_status,
|
|
7583
|
-
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
7584
|
-
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
7585
|
-
'smart_mode_skip_count': frame[33],
|
|
7586
|
-
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
7587
|
-
'uptime_counter': frame.slice(35, 39).reduce(msbLsb),
|
|
7588
|
-
'hardware_id': frame.slice(39, 42),
|
|
7589
|
-
'reserved': frame.slice(42, 46),
|
|
7590
|
-
'tx_lifetime_counter': frame.slice(46, 50).reduce(msbLsb),
|
|
7591
|
-
'machine_values': {
|
|
8007
|
+
if(frame[2] > 4){ // for Firmware v5 and above
|
|
8008
|
+
return {
|
|
7592
8009
|
'firmware': frame[2],
|
|
7593
|
-
'destination_address': toMac(frame.slice(12, 16)
|
|
7594
|
-
'mode':
|
|
7595
|
-
'odr':
|
|
7596
|
-
'sampling_duration':
|
|
7597
|
-
'filter_status':
|
|
7598
|
-
'lpf_coeff':
|
|
7599
|
-
'
|
|
7600
|
-
'
|
|
7601
|
-
'
|
|
7602
|
-
'
|
|
7603
|
-
'
|
|
7604
|
-
'
|
|
7605
|
-
'
|
|
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,
|
|
7606
8078
|
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
7607
|
-
'auto_raw_interval':
|
|
8079
|
+
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
7608
8080
|
'smart_mode_skip_count': frame[33],
|
|
7609
|
-
'smart_mode_acc_threshold':
|
|
7610
|
-
'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',
|
|
7611
8083
|
'hardware_id': frame.slice(39, 42),
|
|
7612
8084
|
'reserved': frame.slice(42, 46),
|
|
7613
|
-
'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
|
+
}
|
|
7614
8110
|
}
|
|
7615
8111
|
}
|
|
7616
8112
|
}
|
|
@@ -7665,8 +8161,7 @@ function sensor_types(parent){
|
|
|
7665
8161
|
return;
|
|
7666
8162
|
} else{
|
|
7667
8163
|
var mode = payload[8];
|
|
7668
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
7669
|
-
var en_axis = payload[11] & 7;
|
|
8164
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
7670
8165
|
var fsr = payload[11] >> 5;
|
|
7671
8166
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
7672
8167
|
|
|
@@ -7675,7 +8170,6 @@ function sensor_types(parent){
|
|
|
7675
8170
|
data: {},
|
|
7676
8171
|
odr: odr,
|
|
7677
8172
|
mo: mode,
|
|
7678
|
-
en_axis: en_axis,
|
|
7679
8173
|
fsr: fsr,
|
|
7680
8174
|
hour: hour,
|
|
7681
8175
|
minute: minute,
|
|
@@ -7691,8 +8185,7 @@ function sensor_types(parent){
|
|
|
7691
8185
|
}
|
|
7692
8186
|
else{
|
|
7693
8187
|
var mode = payload[8];
|
|
7694
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
7695
|
-
var en_axis = payload[11] & 7;
|
|
8188
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
7696
8189
|
var fsr = payload[11] >> 5;
|
|
7697
8190
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
7698
8191
|
|
|
@@ -7701,7 +8194,6 @@ function sensor_types(parent){
|
|
|
7701
8194
|
data: {},
|
|
7702
8195
|
odr: odr,
|
|
7703
8196
|
mo: mode,
|
|
7704
|
-
en_axis: en_axis,
|
|
7705
8197
|
fsr: fsr,
|
|
7706
8198
|
hour: hour,
|
|
7707
8199
|
minute: minute,
|
|
@@ -7721,43 +8213,11 @@ function sensor_types(parent){
|
|
|
7721
8213
|
var fft_concat = {};
|
|
7722
8214
|
|
|
7723
8215
|
var en_axis_data = {};
|
|
7724
|
-
|
|
7725
|
-
|
|
7726
|
-
|
|
7727
|
-
|
|
7728
|
-
|
|
7729
|
-
case 2:
|
|
7730
|
-
en_axis_data.y_offset = 0;
|
|
7731
|
-
en_axis_data.increment = 2;
|
|
7732
|
-
break;
|
|
7733
|
-
case 3:
|
|
7734
|
-
en_axis_data.x_offset = 0;
|
|
7735
|
-
en_axis_data.y_offset = 2;
|
|
7736
|
-
en_axis_data.increment = 4;
|
|
7737
|
-
break;
|
|
7738
|
-
case 4:
|
|
7739
|
-
en_axis_data.z_offset = 0;
|
|
7740
|
-
en_axis_data.increment = 2;
|
|
7741
|
-
break;
|
|
7742
|
-
case 5:
|
|
7743
|
-
en_axis_data.x_offset = 0;
|
|
7744
|
-
en_axis_data.z_offset = 2;
|
|
7745
|
-
en_axis_data.increment = 4;
|
|
7746
|
-
break;
|
|
7747
|
-
case 6:
|
|
7748
|
-
en_axis_data.y_offset = 0;
|
|
7749
|
-
en_axis_data.z_offset = 2;
|
|
7750
|
-
en_axis_data.increment = 4;
|
|
7751
|
-
break;
|
|
7752
|
-
case 7:
|
|
7753
|
-
en_axis_data.x_offset = 0;
|
|
7754
|
-
en_axis_data.y_offset = 2;
|
|
7755
|
-
en_axis_data.z_offset = 4;
|
|
7756
|
-
en_axis_data.increment = 6;
|
|
7757
|
-
break;
|
|
7758
|
-
default:
|
|
7759
|
-
en_axis_data.increment = 0;
|
|
7760
|
-
}
|
|
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: []};
|
|
7761
8221
|
|
|
7762
8222
|
var fsr_mult = .00006;
|
|
7763
8223
|
var fsr_text = "";
|
|
@@ -7793,16 +8253,14 @@ function sensor_types(parent){
|
|
|
7793
8253
|
for(var i = 0; i < raw_data.length; i+=en_axis_data.increment){
|
|
7794
8254
|
label++;
|
|
7795
8255
|
|
|
7796
|
-
fft_concat[label] = {};
|
|
7797
|
-
|
|
7798
8256
|
if('x_offset' in en_axis_data){
|
|
7799
|
-
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)));
|
|
7800
8258
|
}
|
|
7801
8259
|
if('y_offset' in en_axis_data){
|
|
7802
|
-
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)));
|
|
7803
8261
|
}
|
|
7804
8262
|
if('z_offset' in en_axis_data){
|
|
7805
|
-
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)));
|
|
7806
8264
|
}
|
|
7807
8265
|
}
|
|
7808
8266
|
|
|
@@ -7822,7 +8280,6 @@ function sensor_types(parent){
|
|
|
7822
8280
|
time_id: globalDevices[deviceAddr].hour +':'+ globalDevices[deviceAddr].minute,
|
|
7823
8281
|
probe: probe,
|
|
7824
8282
|
mac_address: deviceAddr,
|
|
7825
|
-
en_axis: globalDevices[deviceAddr].en_axis,
|
|
7826
8283
|
fsr: fsr_text,
|
|
7827
8284
|
odr: globalDevices[deviceAddr].odr,
|
|
7828
8285
|
device_temp: globalDevices[deviceAddr].device_temp,
|
|
@@ -7843,8 +8300,7 @@ function sensor_types(parent){
|
|
|
7843
8300
|
}
|
|
7844
8301
|
}else{
|
|
7845
8302
|
var mode = payload[8];
|
|
7846
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
7847
|
-
var en_axis = payload[11] & 7;
|
|
8303
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
7848
8304
|
var fsr = payload[11] >> 5;
|
|
7849
8305
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
7850
8306
|
|
|
@@ -7853,7 +8309,6 @@ function sensor_types(parent){
|
|
|
7853
8309
|
data: {},
|
|
7854
8310
|
odr: odr,
|
|
7855
8311
|
mo: mode,
|
|
7856
|
-
en_axis: en_axis,
|
|
7857
8312
|
fsr: fsr,
|
|
7858
8313
|
hour: hour,
|
|
7859
8314
|
minute: minute,
|
|
@@ -7900,7 +8355,7 @@ function sensor_types(parent){
|
|
|
7900
8355
|
break;
|
|
7901
8356
|
}
|
|
7902
8357
|
var odr2;
|
|
7903
|
-
switch(payload[
|
|
8358
|
+
switch(payload[56]){
|
|
7904
8359
|
case 6:
|
|
7905
8360
|
odr2 = "50Hz"
|
|
7906
8361
|
break;
|
|
@@ -7964,42 +8419,42 @@ function sensor_types(parent){
|
|
|
7964
8419
|
y1_peak_two_Hz: payload.slice(36, 38).reduce(msbLsb),
|
|
7965
8420
|
y1_peak_three_Hz: payload.slice(38, 40).reduce(msbLsb),
|
|
7966
8421
|
|
|
7967
|
-
z1_rms_ACC_G: payload.slice(40, 42).reduce(msbLsb)/1000,
|
|
7968
|
-
z1_max_ACC_G: payload.slice(42, 44).reduce(msbLsb)/1000,
|
|
7969
|
-
z1_velocity_mm_sec: payload.slice(44, 46).reduce(msbLsb) / 100,
|
|
7970
|
-
z1_displacement_mm: payload.slice(46, 48).reduce(msbLsb) / 100,
|
|
7971
|
-
z1_peak_one_Hz: payload.slice(48, 50).reduce(msbLsb),
|
|
7972
|
-
z1_peak_two_Hz: payload.slice(50, 52).reduce(msbLsb),
|
|
7973
|
-
z1_peak_three_Hz: payload.slice(52, 54).reduce(msbLsb),
|
|
7974
|
-
rpm_1: payload.slice(54, 56).reduce(msbLsb),
|
|
7975
|
-
|
|
7976
|
-
s2_odr: odr2,
|
|
7977
|
-
s2_temperature: signInt(payload.slice(55, 57).reduce(msbLsb), 16) / 100,
|
|
7978
|
-
|
|
7979
|
-
x2_rms_ACC_G: payload.slice(57, 59).reduce(msbLsb)/1000,
|
|
7980
|
-
x2_max_ACC_G: payload.slice(59, 61).reduce(msbLsb)/1000,
|
|
7981
|
-
x2_velocity_mm_sec: payload.slice(61, 63).reduce(msbLsb) / 100,
|
|
7982
|
-
x2_displacement_mm: payload.slice(63, 65).reduce(msbLsb) / 100,
|
|
7983
|
-
x2_peak_one_Hz: payload.slice(65, 67).reduce(msbLsb),
|
|
7984
|
-
x2_peak_two_Hz: payload.slice(67, 69).reduce(msbLsb),
|
|
7985
|
-
x2_peak_three_Hz: payload.slice(69, 71).reduce(msbLsb),
|
|
7986
|
-
|
|
7987
|
-
y2_rms_ACC_G: payload.slice(71, 73).reduce(msbLsb)/1000,
|
|
7988
|
-
y2_max_ACC_G: payload.slice(73, 75).reduce(msbLsb)/1000,
|
|
7989
|
-
y2_velocity_mm_sec: payload.slice(75, 77).reduce(msbLsb) / 100,
|
|
7990
|
-
y2_displacement_mm: payload.slice(77, 79).reduce(msbLsb) / 100,
|
|
7991
|
-
y2_peak_one_Hz: payload.slice(79, 81).reduce(msbLsb),
|
|
7992
|
-
y2_peak_two_Hz: payload.slice(81, 83).reduce(msbLsb),
|
|
7993
|
-
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),
|
|
7994
8430
|
|
|
7995
|
-
|
|
7996
|
-
|
|
7997
|
-
|
|
7998
|
-
|
|
7999
|
-
|
|
8000
|
-
|
|
8001
|
-
|
|
8002
|
-
|
|
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)
|
|
8003
8458
|
};
|
|
8004
8459
|
}
|
|
8005
8460
|
// else{
|
|
@@ -8303,68 +8758,137 @@ function sensor_types(parent){
|
|
|
8303
8758
|
frame_data.auto_raw_interval = typeof frame_data.auto_raw_interval === 'number' ? frame_data.auto_raw_interval+'min' : frame_data.auto_raw_interval;
|
|
8304
8759
|
frame_data.p1_smart_mode_threshold = frame[38] * 50;
|
|
8305
8760
|
frame_data.p2_smart_mode_threshold = frame[39] * 50;
|
|
8306
|
-
|
|
8307
|
-
|
|
8308
|
-
'destination_address': toMac(frame.slice(12, 16)),
|
|
8309
|
-
'mode': frame_data.mode,
|
|
8310
|
-
'odr_1': frame_data.odr_1+'Hz',
|
|
8311
|
-
'odr_2': frame_data.odr_2+'Hz',
|
|
8312
|
-
'sampling_duration_1': frame_data.sampling_duration_1,
|
|
8313
|
-
'sampling_duration_2': frame_data.sampling_duration_2,
|
|
8314
|
-
'filter_status': frame_data.filter_status,
|
|
8315
|
-
'lpf_coeff_1': frame_data.lpf_coeff_1,
|
|
8316
|
-
'lpf_freq_1': frame_data.lpf_freq_1+'Hz',
|
|
8317
|
-
'lpf_coeff_2': frame_data.lpf_coeff_2,
|
|
8318
|
-
'lpf_freq_2': frame_data.lpf_freq_2+'Hz',
|
|
8319
|
-
'hpf_coeff_1': frame_data.hpf_coeff_1,
|
|
8320
|
-
'hpf_freq_1': frame_data.hpf_freq_1+'Hz',
|
|
8321
|
-
'hpf_coeff_2': frame_data.hpf_coeff_2,
|
|
8322
|
-
'hpf_freq_2': frame_data.hpf_freq_2+'Hz',
|
|
8323
|
-
'sampling_interval': frame_data.sampling_interval,
|
|
8324
|
-
'on_request_timeout': frame_data.on_request_timeout,
|
|
8325
|
-
'deadband': frame_data.deadband,
|
|
8326
|
-
'payload_length': frame_data.payload_length,
|
|
8327
|
-
'fsr': frame_data.fsr_text,
|
|
8328
|
-
'rpm_compute_status': frame_data.rpm_status,
|
|
8329
|
-
'auto_raw_destination_address': toMac(frame.slice(32 , 36)),
|
|
8330
|
-
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
8331
|
-
'smart_mode_skip_count': frame[37],
|
|
8332
|
-
'smart_mode_acc_threshold_probe_1': frame_data.p1_smart_mode_threshold+'mg',
|
|
8333
|
-
'smart_mode_acc_threshold_probe_2': frame_data.p2_smart_mode_threshold+'mg',
|
|
8334
|
-
'uptime_counter_probe_1': frame.slice(40, 44).reduce(msbLsb),
|
|
8335
|
-
'uptime_counter_probe_2': frame.slice(44, 48).reduce(msbLsb),
|
|
8336
|
-
'hardware_id': frame.slice(48, 51),
|
|
8337
|
-
'reserved': frame.slice(51, 55),
|
|
8338
|
-
'tx_lifetime_counter': frame.slice(55, 59).reduce(msbLsb),
|
|
8339
|
-
'machine_values': {
|
|
8761
|
+
if(frame[2] > 4){ // for Firmware v5 and above
|
|
8762
|
+
return {
|
|
8340
8763
|
'firmware': frame[2],
|
|
8341
|
-
'destination_address': toMac(frame.slice(12, 16)
|
|
8342
|
-
'mode':
|
|
8343
|
-
'odr_1':
|
|
8344
|
-
'odr_2':
|
|
8345
|
-
'sampling_duration_1':
|
|
8346
|
-
'sampling_duration_2':
|
|
8347
|
-
'filter_status':
|
|
8348
|
-
'lpf_coeff_1':
|
|
8349
|
-
'
|
|
8350
|
-
'
|
|
8351
|
-
'
|
|
8352
|
-
'
|
|
8353
|
-
'
|
|
8354
|
-
'
|
|
8355
|
-
'
|
|
8356
|
-
'
|
|
8357
|
-
'
|
|
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,
|
|
8358
8785
|
'auto_raw_destination_address': toMac(frame.slice(32 , 36)),
|
|
8359
|
-
'auto_raw_interval':
|
|
8786
|
+
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
8360
8787
|
'smart_mode_skip_count': frame[37],
|
|
8361
|
-
'smart_mode_acc_threshold_probe_1':
|
|
8362
|
-
'smart_mode_acc_threshold_probe_2':
|
|
8363
|
-
'uptime_counter_probe_1': frame.slice(40, 44),
|
|
8364
|
-
'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',
|
|
8365
8859
|
'hardware_id': frame.slice(48, 51),
|
|
8366
8860
|
'reserved': frame.slice(51, 55),
|
|
8367
|
-
'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
|
+
}
|
|
8368
8892
|
}
|
|
8369
8893
|
}
|
|
8370
8894
|
}
|
|
@@ -8416,8 +8940,7 @@ function sensor_types(parent){
|
|
|
8416
8940
|
} else{
|
|
8417
8941
|
|
|
8418
8942
|
var mode = payload[8];
|
|
8419
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
8420
|
-
var en_axis = payload[11] & 7;
|
|
8943
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
8421
8944
|
var fsr = payload[11] >> 5;
|
|
8422
8945
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
8423
8946
|
|
|
@@ -8426,7 +8949,6 @@ function sensor_types(parent){
|
|
|
8426
8949
|
data: {},
|
|
8427
8950
|
odr: odr,
|
|
8428
8951
|
mo: mode,
|
|
8429
|
-
en_axis: en_axis,
|
|
8430
8952
|
fsr: fsr,
|
|
8431
8953
|
hour: hour,
|
|
8432
8954
|
minute: minute,
|
|
@@ -8442,8 +8964,7 @@ function sensor_types(parent){
|
|
|
8442
8964
|
}
|
|
8443
8965
|
else{
|
|
8444
8966
|
var mode = payload[8];
|
|
8445
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
8446
|
-
var en_axis = payload[11] & 7;
|
|
8967
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
8447
8968
|
var fsr = payload[11] >> 5;
|
|
8448
8969
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
8449
8970
|
|
|
@@ -8452,7 +8973,6 @@ function sensor_types(parent){
|
|
|
8452
8973
|
data: {},
|
|
8453
8974
|
odr: odr,
|
|
8454
8975
|
mo: mode,
|
|
8455
|
-
en_axis: en_axis,
|
|
8456
8976
|
fsr: fsr,
|
|
8457
8977
|
hour: hour,
|
|
8458
8978
|
minute: minute,
|
|
@@ -8471,43 +8991,11 @@ function sensor_types(parent){
|
|
|
8471
8991
|
var fft_concat = {};
|
|
8472
8992
|
|
|
8473
8993
|
var en_axis_data = {};
|
|
8474
|
-
|
|
8475
|
-
|
|
8476
|
-
|
|
8477
|
-
|
|
8478
|
-
|
|
8479
|
-
case 2:
|
|
8480
|
-
en_axis_data.y_offset = 0;
|
|
8481
|
-
en_axis_data.increment = 2;
|
|
8482
|
-
break;
|
|
8483
|
-
case 3:
|
|
8484
|
-
en_axis_data.x_offset = 0;
|
|
8485
|
-
en_axis_data.y_offset = 2;
|
|
8486
|
-
en_axis_data.increment = 4;
|
|
8487
|
-
break;
|
|
8488
|
-
case 4:
|
|
8489
|
-
en_axis_data.z_offset = 0;
|
|
8490
|
-
en_axis_data.increment = 2;
|
|
8491
|
-
break;
|
|
8492
|
-
case 5:
|
|
8493
|
-
en_axis_data.x_offset = 0;
|
|
8494
|
-
en_axis_data.z_offset = 2;
|
|
8495
|
-
en_axis_data.increment = 4;
|
|
8496
|
-
break;
|
|
8497
|
-
case 6:
|
|
8498
|
-
en_axis_data.y_offset = 0;
|
|
8499
|
-
en_axis_data.z_offset = 2;
|
|
8500
|
-
en_axis_data.increment = 4;
|
|
8501
|
-
break;
|
|
8502
|
-
case 7:
|
|
8503
|
-
en_axis_data.x_offset = 0;
|
|
8504
|
-
en_axis_data.y_offset = 2;
|
|
8505
|
-
en_axis_data.z_offset = 4;
|
|
8506
|
-
en_axis_data.increment = 6;
|
|
8507
|
-
break;
|
|
8508
|
-
default:
|
|
8509
|
-
en_axis_data.increment = 0;
|
|
8510
|
-
}
|
|
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: []};
|
|
8511
8999
|
|
|
8512
9000
|
var fsr_mult = .00006;
|
|
8513
9001
|
var fsr_text = "";
|
|
@@ -8543,16 +9031,14 @@ function sensor_types(parent){
|
|
|
8543
9031
|
for(var i = 0; i < raw_data.length; i+=en_axis_data.increment){
|
|
8544
9032
|
label++;
|
|
8545
9033
|
|
|
8546
|
-
fft_concat[label] = {};
|
|
8547
|
-
|
|
8548
9034
|
if('x_offset' in en_axis_data){
|
|
8549
|
-
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)));
|
|
8550
9036
|
}
|
|
8551
9037
|
if('y_offset' in en_axis_data){
|
|
8552
|
-
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)));
|
|
8553
9039
|
}
|
|
8554
9040
|
if('z_offset' in en_axis_data){
|
|
8555
|
-
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)));
|
|
8556
9042
|
}
|
|
8557
9043
|
}
|
|
8558
9044
|
var fft_concat_obj = {
|
|
@@ -8560,7 +9046,6 @@ function sensor_types(parent){
|
|
|
8560
9046
|
msg_type: msg_type,
|
|
8561
9047
|
time_id: globalDevices[deviceAddr].hour +':'+ globalDevices[deviceAddr].minute,
|
|
8562
9048
|
mac_address: deviceAddr,
|
|
8563
|
-
en_axis: globalDevices[deviceAddr].en_axis,
|
|
8564
9049
|
fsr: fsr_text,
|
|
8565
9050
|
odr: globalDevices[deviceAddr].odr,
|
|
8566
9051
|
device_temp: globalDevices[deviceAddr].device_temp,
|
|
@@ -8586,8 +9071,7 @@ function sensor_types(parent){
|
|
|
8586
9071
|
}else{
|
|
8587
9072
|
|
|
8588
9073
|
var mode = payload[8];
|
|
8589
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
8590
|
-
var en_axis = payload[11] & 7;
|
|
9074
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
8591
9075
|
var fsr = payload[11] >> 5;
|
|
8592
9076
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
8593
9077
|
|
|
@@ -8596,7 +9080,6 @@ function sensor_types(parent){
|
|
|
8596
9080
|
data: {},
|
|
8597
9081
|
odr: odr,
|
|
8598
9082
|
mo: mode,
|
|
8599
|
-
en_axis: en_axis,
|
|
8600
9083
|
fsr: fsr,
|
|
8601
9084
|
hour: hour,
|
|
8602
9085
|
minute: minute,
|
|
@@ -8877,54 +9360,109 @@ function sensor_types(parent){
|
|
|
8877
9360
|
frame_data.auto_raw_interval = frame[32] * frame_data.sampling_interval_number || 'disabled';
|
|
8878
9361
|
frame_data.auto_raw_interval = typeof frame_data.auto_raw_interval === 'number' ? frame_data.auto_raw_interval+'min' : frame_data.auto_raw_interval;
|
|
8879
9362
|
frame_data.smart_mode_threshold = frame[34] * 50;
|
|
8880
|
-
|
|
8881
|
-
|
|
8882
|
-
'destination_address': toMac(frame.slice(12, 16)),
|
|
8883
|
-
'mode': frame_data.mode,
|
|
8884
|
-
'odr': frame_data.odr_1+'Hz',
|
|
8885
|
-
'sampling_duration': frame_data.sampling_duration_1,
|
|
8886
|
-
'filter_status': frame_data.filter_status,
|
|
8887
|
-
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
8888
|
-
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
8889
|
-
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
8890
|
-
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
8891
|
-
'sampling_interval': frame_data.sampling_interval,
|
|
8892
|
-
'on_request_timeout': frame_data.on_request_timeout,
|
|
8893
|
-
'deadband': frame_data.deadband,
|
|
8894
|
-
'payload_length': frame_data.payload_length,
|
|
8895
|
-
'fsr': frame_data.fsr_text,
|
|
8896
|
-
'rpm_compute_status': frame_data.rpm_status,
|
|
8897
|
-
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
8898
|
-
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
8899
|
-
'smart_mode_skip_count': frame[33],
|
|
8900
|
-
'smart_mode_acc_threshold': frame_data.smart_mode_threshold+'mg',
|
|
8901
|
-
'uptime_counter': frame.slice(35, 39).reduce(msbLsb),
|
|
8902
|
-
'hardware_id': frame.slice(39, 42),
|
|
8903
|
-
'reserved': frame.slice(42, 46),
|
|
8904
|
-
'tx_lifetime_counter': frame.slice(46, 50).reduce(msbLsb),
|
|
8905
|
-
'machine_values': {
|
|
9363
|
+
if(frame[2] > 4){ // for Firmware v5 and above
|
|
9364
|
+
return {
|
|
8906
9365
|
'firmware': frame[2],
|
|
8907
|
-
'destination_address': toMac(frame.slice(12, 16)
|
|
8908
|
-
'mode':
|
|
8909
|
-
'odr':
|
|
8910
|
-
'
|
|
8911
|
-
'filter_status':
|
|
8912
|
-
'lpf_coeff':
|
|
8913
|
-
'
|
|
8914
|
-
'
|
|
8915
|
-
'
|
|
8916
|
-
'
|
|
8917
|
-
'
|
|
8918
|
-
'
|
|
8919
|
-
|
|
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,
|
|
8920
9434
|
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
8921
|
-
'auto_raw_interval':
|
|
9435
|
+
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
8922
9436
|
'smart_mode_skip_count': frame[33],
|
|
8923
|
-
'smart_mode_acc_threshold':
|
|
8924
|
-
'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',
|
|
8925
9439
|
'hardware_id': frame.slice(39, 42),
|
|
8926
9440
|
'reserved': frame.slice(42, 46),
|
|
8927
|
-
'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
|
+
}
|
|
8928
9466
|
}
|
|
8929
9467
|
}
|
|
8930
9468
|
}
|
|
@@ -8960,8 +9498,7 @@ function sensor_types(parent){
|
|
|
8960
9498
|
delete globalDevices[deviceAddr];
|
|
8961
9499
|
// create new stream
|
|
8962
9500
|
var mode = payload[8];
|
|
8963
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
8964
|
-
var en_axis = payload[11] & 7;
|
|
9501
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
8965
9502
|
var fsr = payload[11] >> 5;
|
|
8966
9503
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
8967
9504
|
|
|
@@ -8969,7 +9506,6 @@ function sensor_types(parent){
|
|
|
8969
9506
|
data: {},
|
|
8970
9507
|
odr: odr,
|
|
8971
9508
|
mo: mode,
|
|
8972
|
-
en_axis: en_axis,
|
|
8973
9509
|
fsr: fsr,
|
|
8974
9510
|
hour: hour,
|
|
8975
9511
|
minute: minute,
|
|
@@ -8986,8 +9522,7 @@ function sensor_types(parent){
|
|
|
8986
9522
|
}
|
|
8987
9523
|
else{
|
|
8988
9524
|
var mode = payload[8];
|
|
8989
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
8990
|
-
var en_axis = payload[11] & 7;
|
|
9525
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
8991
9526
|
var fsr = payload[11] >> 5;
|
|
8992
9527
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
8993
9528
|
|
|
@@ -8995,7 +9530,6 @@ function sensor_types(parent){
|
|
|
8995
9530
|
data: {},
|
|
8996
9531
|
odr: odr,
|
|
8997
9532
|
mo: mode,
|
|
8998
|
-
en_axis: en_axis,
|
|
8999
9533
|
fsr: fsr,
|
|
9000
9534
|
hour: hour,
|
|
9001
9535
|
minute: minute,
|
|
@@ -9007,8 +9541,7 @@ function sensor_types(parent){
|
|
|
9007
9541
|
}
|
|
9008
9542
|
else{
|
|
9009
9543
|
var mode = payload[8];
|
|
9010
|
-
var odr = msbLsb(payload[9], payload[10])
|
|
9011
|
-
var en_axis = payload[11] & 7;
|
|
9544
|
+
var odr = msbLsb(payload[9], payload[10]);
|
|
9012
9545
|
var fsr = payload[11] >> 5;
|
|
9013
9546
|
var device_temp = msbLsb(payload[14], payload[15])/100;
|
|
9014
9547
|
|
|
@@ -9016,7 +9549,6 @@ function sensor_types(parent){
|
|
|
9016
9549
|
data: {},
|
|
9017
9550
|
odr: odr,
|
|
9018
9551
|
mo: mode,
|
|
9019
|
-
en_axis: en_axis,
|
|
9020
9552
|
fsr: fsr,
|
|
9021
9553
|
hour: hour,
|
|
9022
9554
|
minute: minute,
|
|
@@ -9036,44 +9568,12 @@ function sensor_types(parent){
|
|
|
9036
9568
|
var fft_concat = {};
|
|
9037
9569
|
|
|
9038
9570
|
var en_axis_data = {};
|
|
9039
|
-
|
|
9040
|
-
|
|
9041
|
-
|
|
9042
|
-
|
|
9043
|
-
|
|
9044
|
-
|
|
9045
|
-
en_axis_data.y_offset = 0;
|
|
9046
|
-
en_axis_data.increment = 2;
|
|
9047
|
-
break;
|
|
9048
|
-
case 3:
|
|
9049
|
-
en_axis_data.x_offset = 0;
|
|
9050
|
-
en_axis_data.y_offset = 2;
|
|
9051
|
-
en_axis_data.increment = 4;
|
|
9052
|
-
break;
|
|
9053
|
-
case 4:
|
|
9054
|
-
en_axis_data.z_offset = 0;
|
|
9055
|
-
en_axis_data.increment = 2;
|
|
9056
|
-
break;
|
|
9057
|
-
case 5:
|
|
9058
|
-
en_axis_data.x_offset = 0;
|
|
9059
|
-
en_axis_data.z_offset = 2;
|
|
9060
|
-
en_axis_data.increment = 4;
|
|
9061
|
-
break;
|
|
9062
|
-
case 6:
|
|
9063
|
-
en_axis_data.y_offset = 0;
|
|
9064
|
-
en_axis_data.z_offset = 2;
|
|
9065
|
-
en_axis_data.increment = 4;
|
|
9066
|
-
break;
|
|
9067
|
-
case 7:
|
|
9068
|
-
en_axis_data.x_offset = 0;
|
|
9069
|
-
en_axis_data.y_offset = 2;
|
|
9070
|
-
en_axis_data.z_offset = 4;
|
|
9071
|
-
en_axis_data.increment = 6;
|
|
9072
|
-
break;
|
|
9073
|
-
default:
|
|
9074
|
-
en_axis_data.increment = 0;
|
|
9075
|
-
}
|
|
9076
|
-
|
|
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
|
+
|
|
9077
9577
|
var fsr_mult = .00006;
|
|
9078
9578
|
var fsr_text = "";
|
|
9079
9579
|
|
|
@@ -9109,16 +9609,14 @@ function sensor_types(parent){
|
|
|
9109
9609
|
for(var i = 0; i < raw_data.length; i+=en_axis_data.increment){
|
|
9110
9610
|
label++;
|
|
9111
9611
|
|
|
9112
|
-
fft_concat[label] = {};
|
|
9113
|
-
|
|
9114
9612
|
if('x_offset' in en_axis_data){
|
|
9115
|
-
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)));
|
|
9116
9614
|
}
|
|
9117
9615
|
if('y_offset' in en_axis_data){
|
|
9118
|
-
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)));
|
|
9119
9617
|
}
|
|
9120
9618
|
if('z_offset' in en_axis_data){
|
|
9121
|
-
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)));
|
|
9122
9620
|
}
|
|
9123
9621
|
}
|
|
9124
9622
|
var fft_concat_obj = {
|
|
@@ -9126,12 +9624,11 @@ function sensor_types(parent){
|
|
|
9126
9624
|
msg_type: msg_type,
|
|
9127
9625
|
time_id: globalDevices[deviceAddr].hour +':'+ globalDevices[deviceAddr].minute,
|
|
9128
9626
|
mac_address: deviceAddr,
|
|
9129
|
-
en_axis: globalDevices[deviceAddr].en_axis,
|
|
9130
9627
|
fsr: fsr_text,
|
|
9131
9628
|
odr: globalDevices[deviceAddr].odr,
|
|
9132
9629
|
device_temp: globalDevices[deviceAddr].device_temp,
|
|
9133
9630
|
total_samples: label,
|
|
9134
|
-
|
|
9631
|
+
fft_confidence : ((Object.keys(globalDevices[deviceAddr].data).length / expected_packets) * 100).toFixed(2) + '%',
|
|
9135
9632
|
data: fft_concat
|
|
9136
9633
|
};
|
|
9137
9634
|
sensor_data = fft_concat_obj;
|
|
@@ -9380,86 +9877,375 @@ function sensor_types(parent){
|
|
|
9380
9877
|
frame_data.on_request_timeout = frame[23] + " Seconds";
|
|
9381
9878
|
frame_data.deadband = frame[24] + "mg";
|
|
9382
9879
|
|
|
9383
|
-
switch(frame[25]){
|
|
9384
|
-
case 0:
|
|
9385
|
-
frame_data.payload_length = "50 Bytes";
|
|
9386
|
-
break;
|
|
9387
|
-
case 1:
|
|
9388
|
-
frame_data.payload_length = "100 Bytes";
|
|
9389
|
-
break;
|
|
9390
|
-
case 2:
|
|
9391
|
-
frame_data.payload_length = "150 Bytes";
|
|
9392
|
-
break;
|
|
9393
|
-
case 3:
|
|
9394
|
-
frame_data.payload_length = "180 Bytes";
|
|
9395
|
-
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
|
+
}
|
|
9396
10189
|
}
|
|
9397
|
-
|
|
9398
|
-
|
|
9399
|
-
|
|
9400
|
-
|
|
9401
|
-
|
|
9402
|
-
|
|
9403
|
-
|
|
9404
|
-
|
|
9405
|
-
|
|
9406
|
-
|
|
9407
|
-
|
|
9408
|
-
|
|
9409
|
-
|
|
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
|
+
};
|
|
9410
10230
|
}
|
|
9411
|
-
|
|
9412
|
-
|
|
9413
|
-
|
|
9414
|
-
|
|
10231
|
+
// else{
|
|
10232
|
+
// parsed.data = {'error': 'Vibration mode error'}
|
|
10233
|
+
// return parsed;
|
|
10234
|
+
// }
|
|
10235
|
+
},
|
|
10236
|
+
'parse_fly': (frame) => {
|
|
9415
10237
|
return {
|
|
9416
|
-
'
|
|
9417
|
-
'
|
|
9418
|
-
'
|
|
9419
|
-
'
|
|
9420
|
-
'
|
|
9421
|
-
'filter_status': frame_data.filter_status,
|
|
9422
|
-
'lpf_coeff': frame_data.lpf_coeff_1,
|
|
9423
|
-
'lpf_freq': frame_data.lpf_freq_1+'Hz',
|
|
9424
|
-
'hpf_coeff': frame_data.hpf_coeff_1,
|
|
9425
|
-
'hpf_freq': frame_data.hpf_freq_1+'Hz',
|
|
9426
|
-
'sampling_interval': frame_data.sampling_interval,
|
|
9427
|
-
'on_request_timeout': frame_data.on_request_timeout,
|
|
9428
|
-
'deadband': frame_data.deadband,
|
|
9429
|
-
'payload_length': frame_data.payload_length,
|
|
9430
|
-
'fsr': frame_data.fsr_text,
|
|
9431
|
-
'rpm_compute_status': frame_data.rpm_status,
|
|
9432
|
-
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
9433
|
-
'auto_raw_interval': frame_data.auto_raw_interval,
|
|
9434
|
-
'smart_mode_skip_count': frame[33],
|
|
9435
|
-
'smart_mode_acc_threshold':frame_data.smart_mode_threshold+'mg',
|
|
9436
|
-
'uptime_counter': frame.slice(35, 39).reduce(msbLsb),
|
|
9437
|
-
'hardware_id': frame.slice(39, 42),
|
|
9438
|
-
'reserved': frame.slice(42, 46),
|
|
9439
|
-
'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),
|
|
9440
10243
|
'machine_values': {
|
|
9441
|
-
'
|
|
9442
|
-
'
|
|
9443
|
-
'
|
|
9444
|
-
'
|
|
9445
|
-
'
|
|
9446
|
-
'filter_status': frame[19],
|
|
9447
|
-
'lpf_coeff': frame[20],
|
|
9448
|
-
'hpf_coeff': frame[21],
|
|
9449
|
-
'sampling_interval': frame[22],
|
|
9450
|
-
'on_request_timeout': frame[23],
|
|
9451
|
-
'deadband': frame[24],
|
|
9452
|
-
'payload_length': frame[25],
|
|
9453
|
-
'fsr': frame[26],
|
|
9454
|
-
'rpm_compute_status': frame[27],
|
|
9455
|
-
'auto_raw_destination_address': toMac(frame.slice(28 , 32)),
|
|
9456
|
-
'auto_raw_interval': frame[32],
|
|
9457
|
-
'smart_mode_skip_count': frame[33],
|
|
9458
|
-
'smart_mode_acc_threshold':frame[34],
|
|
9459
|
-
'uptime_counter': frame.slice(35, 39),
|
|
9460
|
-
'hardware_id': frame.slice(39, 42),
|
|
9461
|
-
'reserved': frame.slice(42, 46),
|
|
9462
|
-
'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)
|
|
9463
10249
|
}
|
|
9464
10250
|
}
|
|
9465
10251
|
}
|
|
@@ -9575,6 +10361,98 @@ function sensor_types(parent){
|
|
|
9575
10361
|
}
|
|
9576
10362
|
}
|
|
9577
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
|
+
},
|
|
9578
10456
|
'180': {
|
|
9579
10457
|
name: 'C1D2 One Channel Vibration Plus',
|
|
9580
10458
|
parse: (payload, parsed, mac) => {
|
|
@@ -10013,7 +10891,6 @@ function sensor_types(parent){
|
|
|
10013
10891
|
data: {},
|
|
10014
10892
|
odr: odr,
|
|
10015
10893
|
mo: mode,
|
|
10016
|
-
en_axis: en_axis,
|
|
10017
10894
|
fsr: fsr,
|
|
10018
10895
|
hour: hour,
|
|
10019
10896
|
minute: minute,
|