@ncd-io/node-red-enterprise-sensors 1.0.1 → 1.0.3
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
CHANGED
|
@@ -142,7 +142,7 @@ module.exports = class WirelessSensor{
|
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
144
|
// #OTF
|
|
145
|
-
var otf_devices = [23,26,39,45,48,52,76,78,79,80,81,82,84,88,89,90,91,101,102,105,107,108,110,111,112,114,180,181,519,520,521,531,535,537,540];
|
|
145
|
+
var otf_devices = [23,26,39,45,48,52,76,78,79,80,81,82,84,88,89,90,91,101,102,105,106,107,108,110,111,112,114,180,181,519,520,521,531,535,537,538,539,540];
|
|
146
146
|
var device_type = msbLsb(frame.data[6], frame.data[7]);
|
|
147
147
|
// var device_type = frame.data[7];
|
|
148
148
|
|
|
@@ -294,7 +294,7 @@ module.exports = class WirelessSensor{
|
|
|
294
294
|
};
|
|
295
295
|
|
|
296
296
|
// #OTF
|
|
297
|
-
var otf_devices = [23,26,39,45,48,52,76,78,79,80,81,82,84,88,89,90,91,101,102,107,108,180,181,519,520,521,531,535,537];
|
|
297
|
+
var otf_devices = [23,26,39,45,48,52,76,78,79,80,81,82,84,88,89,90,91,101,102,105,106,107,108,110,111,112,114,180,181,519,520,521,531,535,537,538,539,540];
|
|
298
298
|
if(otf_devices.includes(parsed.sensor_type)){
|
|
299
299
|
// If the message says FLY and there is not FLY timer in progress.
|
|
300
300
|
if(payload[8] == 70 && payload[9] == 76 && payload[10] == 89) {
|
|
@@ -712,7 +712,7 @@ module.exports = class WirelessSensor{
|
|
|
712
712
|
data: payload.slice(8)
|
|
713
713
|
};
|
|
714
714
|
// #OTF
|
|
715
|
-
}else if(parsed.sensor_type == 80 || parsed.sensor_type == 81 || parsed.sensor_type == 82 || parsed.sensor_type == 84 || parsed.sensor_type == 180 || parsed.sensor_type == 181 || parsed.sensor_type == 515 || parsed.sensor_type == 519 || parsed.sensor_type == 537){
|
|
715
|
+
}else if(parsed.sensor_type == 80 || parsed.sensor_type == 81 || parsed.sensor_type == 82 || parsed.sensor_type == 84 || parsed.sensor_type == 180 || parsed.sensor_type == 181 || parsed.sensor_type == 515 || parsed.sensor_type == 519 || parsed.sensor_type == 537 || parsed.sensor_type == 538){
|
|
716
716
|
parsed.sensor_data = this.sensor_types[parsed.sensor_type].parse(payload, parsed, frame.mac);
|
|
717
717
|
if(!parsed.sensor_data){
|
|
718
718
|
return;
|
|
@@ -800,11 +800,6 @@ module.exports = class WirelessSensor{
|
|
|
800
800
|
var packet = [247, 7, 0, 0, 0, enabled, perc, interval >> 16, (interval >> 8) & 255, interval & 255];
|
|
801
801
|
return this.config_send(sensor_mac, packet);
|
|
802
802
|
}
|
|
803
|
-
config_set_cm_calibration(sensor_mac, calib){
|
|
804
|
-
var cal = parseInt(calib * 100);
|
|
805
|
-
var packet = [244, 1, 0, 0, 0, cal >> 8, cal & 255];
|
|
806
|
-
return this.config_send(sensor_mac, packet);
|
|
807
|
-
}
|
|
808
803
|
config_set_bp_altitude(sensor_mac, alt){
|
|
809
804
|
var packet = [244, 1, 0, 0, 0, alt >> 8, alt & 255];
|
|
810
805
|
return this.config_send(sensor_mac, packet);
|
|
@@ -1198,6 +1193,32 @@ module.exports = class WirelessSensor{
|
|
|
1198
1193
|
console.log(packet);
|
|
1199
1194
|
return this.config_send(sensor_mac, packet);
|
|
1200
1195
|
}
|
|
1196
|
+
config_set_input_one_108(sensor_mac, value){
|
|
1197
|
+
console.log('config_set_input_one_108');
|
|
1198
|
+
var packet = [244, 41, 0, 0, 0, 1, value];
|
|
1199
|
+
console.log(packet);
|
|
1200
|
+
return this.config_send(sensor_mac, packet);
|
|
1201
|
+
}
|
|
1202
|
+
config_set_input_two_108(sensor_mac, value){
|
|
1203
|
+
console.log('config_set_input_two_108');
|
|
1204
|
+
var packet = [244, 41, 0, 0, 0, 2, value];
|
|
1205
|
+
console.log(packet);
|
|
1206
|
+
return this.config_send(sensor_mac, packet);
|
|
1207
|
+
}
|
|
1208
|
+
config_set_input_three_108(sensor_mac, value){
|
|
1209
|
+
console.log('config_set_input_three_108');
|
|
1210
|
+
var packet = [244, 41, 0, 0, 0, 3, value];
|
|
1211
|
+
console.log(packet);
|
|
1212
|
+
return this.config_send(sensor_mac, packet);
|
|
1213
|
+
}
|
|
1214
|
+
config_set_counter_threshold_108(sensor_mac, value){
|
|
1215
|
+
console.log('config_set_counter_threshold_108');
|
|
1216
|
+
var packet = [244, 43, 0, 0, 0, 0, 0];
|
|
1217
|
+
let threshold = int2Bytes((value), 2);
|
|
1218
|
+
packet.push(...threshold);
|
|
1219
|
+
console.log(packet);
|
|
1220
|
+
return this.config_send(sensor_mac, packet);
|
|
1221
|
+
}
|
|
1201
1222
|
config_set_sensor_boot_time_420ma(sensor_mac, value){
|
|
1202
1223
|
console.log('sensor_boot_time_420ma');
|
|
1203
1224
|
var packet = [244, 68, 0, 0, 45, value];
|
|
@@ -1280,6 +1301,12 @@ module.exports = class WirelessSensor{
|
|
|
1280
1301
|
console.log(packet);
|
|
1281
1302
|
return this.config_send(sensor_mac, packet);
|
|
1282
1303
|
}
|
|
1304
|
+
config_set_debounce_time_35(sensor_mac, value){
|
|
1305
|
+
console.log('config_set_debounce_time_35');
|
|
1306
|
+
var packet = [244, 3, 0, 0, 35, value];
|
|
1307
|
+
console.log(packet);
|
|
1308
|
+
return this.config_send(sensor_mac, packet);
|
|
1309
|
+
}
|
|
1283
1310
|
config_enable_stay_on_mode_539(sensor_mac, value){
|
|
1284
1311
|
console.log('config_enable_stay_on_mode_539');
|
|
1285
1312
|
var packet = [247, 50, 0, 0, 0, value];
|
|
@@ -1312,8 +1339,8 @@ module.exports = class WirelessSensor{
|
|
|
1312
1339
|
console.log(packet);
|
|
1313
1340
|
return this.config_send(sensor_mac, packet);
|
|
1314
1341
|
}
|
|
1315
|
-
|
|
1316
|
-
console.log('
|
|
1342
|
+
config_set_sub_device_type_539(sensor_mac, value){
|
|
1343
|
+
console.log('config_set_sub_device_type_539');
|
|
1317
1344
|
var packet = [244, 40, 0, 0, 23, value];
|
|
1318
1345
|
console.log(packet);
|
|
1319
1346
|
return this.config_send(sensor_mac, packet);
|
|
@@ -1326,12 +1353,24 @@ module.exports = class WirelessSensor{
|
|
|
1326
1353
|
}
|
|
1327
1354
|
config_set_reg_539(sensor_mac, value, register){
|
|
1328
1355
|
console.log('config_set_reg_539');
|
|
1356
|
+
// var packet = [244, 51, 0, 0, 23, ]
|
|
1329
1357
|
var packet = [244, 30 + register, 0, 0, 23];
|
|
1330
1358
|
let value_reg = int2Bytes((value), 2);
|
|
1331
1359
|
packet.push(...value_reg);
|
|
1332
1360
|
console.log(packet);
|
|
1333
1361
|
return this.config_send(sensor_mac, packet);
|
|
1334
1362
|
}
|
|
1363
|
+
config_set_all_register_data_539(sensor_mac, number_of_registers, registers){
|
|
1364
|
+
console.log('config_set_all_registers_539');
|
|
1365
|
+
// registers is an arbitrary number of 16 bit integers
|
|
1366
|
+
// var packet = [244, 53, 0, 0, 23, number_of_registers, registers.slice(0,2)...]
|
|
1367
|
+
var packet = [244, 53, 0, 0, 23, number_of_registers];
|
|
1368
|
+
for(let ind = 0; ind < number_of_registers; ind++){
|
|
1369
|
+
packet.push(...int2Bytes(registers[ind], 2));
|
|
1370
|
+
}
|
|
1371
|
+
console.log(packet);
|
|
1372
|
+
return this.config_send(sensor_mac, packet);
|
|
1373
|
+
}
|
|
1335
1374
|
config_set_auto_raw_interval_110(sensor_mac, value){
|
|
1336
1375
|
console.log('config_set_raw_interval_110');
|
|
1337
1376
|
var packet = [244, 79, 0, 0, 80, 76, value];
|
|
@@ -1366,6 +1405,30 @@ module.exports = class WirelessSensor{
|
|
|
1366
1405
|
console.log(packet);
|
|
1367
1406
|
return this.config_send(sensor_mac, packet);
|
|
1368
1407
|
}
|
|
1408
|
+
config_set_current_calibration_13(sensor_mac, calib){
|
|
1409
|
+
console.log('config_set_current_calibration_13');
|
|
1410
|
+
var packet = [244, 1, 0, 0, 0];
|
|
1411
|
+
var cal_val = int2Bytes(calib, 2);
|
|
1412
|
+
packet.push(...cal_val);
|
|
1413
|
+
console.log(packet);
|
|
1414
|
+
return this.config_send(sensor_mac, packet);
|
|
1415
|
+
}
|
|
1416
|
+
config_set_current_calibration_ch2_19(sensor_mac, calib){
|
|
1417
|
+
console.log('config_set_current_calibration_ch2_19');
|
|
1418
|
+
var packet = [244, 3, 0, 0, 0];
|
|
1419
|
+
var cal_val = int2Bytes(calib, 2);
|
|
1420
|
+
packet.push(...cal_val);
|
|
1421
|
+
console.log(packet);
|
|
1422
|
+
return this.config_send(sensor_mac, packet);
|
|
1423
|
+
}
|
|
1424
|
+
config_set_current_calibration_ch3_28(sensor_mac, calib){
|
|
1425
|
+
console.log('cconfig_set_current_calibration_ch3_28');
|
|
1426
|
+
var packet = [244, 5, 0, 0, 0];
|
|
1427
|
+
var cal_val = int2Bytes(calib, 2);
|
|
1428
|
+
packet.push(...cal_val);
|
|
1429
|
+
console.log(packet);
|
|
1430
|
+
return this.config_send(sensor_mac, packet);
|
|
1431
|
+
}
|
|
1369
1432
|
config_get_delay(sensor_mac){
|
|
1370
1433
|
return new Promise((fulfill, reject) => {
|
|
1371
1434
|
this.config_send(sensor_mac, [247, 21, 0, 0, 0]).then((res) => {
|
|
@@ -1547,6 +1610,13 @@ module.exports = class WirelessSensor{
|
|
|
1547
1610
|
packet.push(...key);
|
|
1548
1611
|
return this.config_send(sensor_mac, packet);
|
|
1549
1612
|
}
|
|
1613
|
+
control_start_luber(sensor_mac, luber = 1, duration){
|
|
1614
|
+
console.log('control_start_luber');
|
|
1615
|
+
let packet = [244, 78, 0, 0, 45, luber, duration];
|
|
1616
|
+
console.log(packet);
|
|
1617
|
+
let cmd_timeout = (duration * 1000) + 1000;
|
|
1618
|
+
return this.config_send(sensor_mac, packet, {}, cmd_timeout);
|
|
1619
|
+
}
|
|
1550
1620
|
config_powered_device(sensor_mac, param, ...data){
|
|
1551
1621
|
var params = {
|
|
1552
1622
|
destination: 0,
|
|
@@ -1563,7 +1633,7 @@ module.exports = class WirelessSensor{
|
|
|
1563
1633
|
delete this.queue;
|
|
1564
1634
|
this.queue = new Queue(1);
|
|
1565
1635
|
}
|
|
1566
|
-
config_send(sensor_mac, data, opts){
|
|
1636
|
+
config_send(sensor_mac, data, opts, cmd_timeout = 1500){
|
|
1567
1637
|
var that = this;
|
|
1568
1638
|
return new Promise((fulfill, reject) => {
|
|
1569
1639
|
that.queue.add(() => {
|
|
@@ -1604,7 +1674,7 @@ module.exports = class WirelessSensor{
|
|
|
1604
1674
|
}
|
|
1605
1675
|
|
|
1606
1676
|
f();
|
|
1607
|
-
},
|
|
1677
|
+
}, cmd_timeout);
|
|
1608
1678
|
that.send.transmit_request(mac2bytes(sensor_mac), data, opts).then().catch((err) => {
|
|
1609
1679
|
that._emitter.removeListener('config_error-'+sensor_mac, fail);
|
|
1610
1680
|
that._emitter.removeListener('config_ack-'+sensor_mac, pass);
|
|
@@ -1736,7 +1806,7 @@ module.exports = class WirelessSensor{
|
|
|
1736
1806
|
|
|
1737
1807
|
return;
|
|
1738
1808
|
}
|
|
1739
|
-
control_send(sensor_mac, data, opts){
|
|
1809
|
+
control_send(sensor_mac, data, opts, ctrl_timeout = 1000){
|
|
1740
1810
|
var that = this;
|
|
1741
1811
|
return new Promise((fulfill, reject) => {
|
|
1742
1812
|
that.queue.add(() => {
|
|
@@ -1774,7 +1844,7 @@ module.exports = class WirelessSensor{
|
|
|
1774
1844
|
}else{
|
|
1775
1845
|
fail('Control response timeout');
|
|
1776
1846
|
}
|
|
1777
|
-
},
|
|
1847
|
+
}, ctrl_timeout);
|
|
1778
1848
|
}
|
|
1779
1849
|
}).catch(fail);
|
|
1780
1850
|
}
|
|
@@ -3322,7 +3392,7 @@ function sensor_types(parent){
|
|
|
3322
3392
|
break;
|
|
3323
3393
|
}
|
|
3324
3394
|
|
|
3325
|
-
|
|
3395
|
+
let response = {
|
|
3326
3396
|
'firmware': frame[2],
|
|
3327
3397
|
'destination_address': toMac(frame.slice(12, 16)),
|
|
3328
3398
|
'mode': frame_data.mode,
|
|
@@ -3337,23 +3407,30 @@ function sensor_types(parent){
|
|
|
3337
3407
|
'sampling_interval': frame_data.sampling_interval,
|
|
3338
3408
|
'on_request_timeout': frame_data.on_request_timeout,
|
|
3339
3409
|
'deadband': frame_data.deadband,
|
|
3340
|
-
'payload_length': frame_data.payload_length
|
|
3341
|
-
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
'mode': frame[16],
|
|
3345
|
-
'odr_1': frame[17],
|
|
3346
|
-
'sampling_duration_1': frame[19],
|
|
3347
|
-
'sampling_duration_2': frame[20],
|
|
3348
|
-
'filter_status': frame[21],
|
|
3349
|
-
'lpf_coeff_1': frame[22],
|
|
3350
|
-
'hpf_coeff_1': frame[24],
|
|
3351
|
-
'sampling_interval': frame[26],
|
|
3352
|
-
'on_request_timeout': frame[27],
|
|
3353
|
-
'deadband': frame[28],
|
|
3354
|
-
'payload_length': frame[29]
|
|
3355
|
-
}
|
|
3410
|
+
'payload_length': frame_data.payload_length
|
|
3411
|
+
}
|
|
3412
|
+
if(response.firmware > 19){
|
|
3413
|
+
response.lifetime_transmissions = frame.slice(30, 34).reduce(msbLsb);
|
|
3356
3414
|
}
|
|
3415
|
+
response.machine_values = {
|
|
3416
|
+
'firmware': frame[2],
|
|
3417
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
3418
|
+
'mode': frame[16],
|
|
3419
|
+
'odr_1': frame[17],
|
|
3420
|
+
'sampling_duration_1': frame[19],
|
|
3421
|
+
'sampling_duration_2': frame[20],
|
|
3422
|
+
'filter_status': frame[21],
|
|
3423
|
+
'lpf_coeff_1': frame[22],
|
|
3424
|
+
'hpf_coeff_1': frame[24],
|
|
3425
|
+
'sampling_interval': frame[26],
|
|
3426
|
+
'on_request_timeout': frame[27],
|
|
3427
|
+
'deadband': frame[28],
|
|
3428
|
+
'payload_length': frame[29]
|
|
3429
|
+
}
|
|
3430
|
+
if(response.firmware > 19){
|
|
3431
|
+
response.machine_values.lifetime_transmissions = frame.slice(30, 34);
|
|
3432
|
+
}
|
|
3433
|
+
return response;
|
|
3357
3434
|
}
|
|
3358
3435
|
},
|
|
3359
3436
|
'81': {
|
|
@@ -4116,46 +4193,45 @@ function sensor_types(parent){
|
|
|
4116
4193
|
break;
|
|
4117
4194
|
}
|
|
4118
4195
|
|
|
4119
|
-
|
|
4196
|
+
let response = {
|
|
4120
4197
|
'firmware': frame[2],
|
|
4121
4198
|
'destination_address': toMac(frame.slice(12, 16)),
|
|
4122
4199
|
'mode': frame_data.mode,
|
|
4123
4200
|
'odr_1': frame_data.odr_1+'Hz',
|
|
4124
|
-
'odr_2': frame_data.odr_2+'Hz',
|
|
4125
4201
|
'sampling_duration_1': frame_data.sampling_duration_1,
|
|
4126
4202
|
'sampling_duration_2': frame_data.sampling_duration_2,
|
|
4127
4203
|
'filter_status': frame_data.filter_status,
|
|
4128
4204
|
'lpf_coeff_1': frame_data.lpf_coeff_1,
|
|
4129
4205
|
'lpf_freq_1': frame_data.lpf_freq_1+'Hz',
|
|
4130
|
-
'lpf_coeff_2': frame_data.lpf_coeff_2,
|
|
4131
|
-
'lpf_freq_2': frame_data.lpf_freq_2+'Hz',
|
|
4132
4206
|
'hpf_coeff_1': frame_data.hpf_coeff_1,
|
|
4133
4207
|
'hpf_freq_1': frame_data.hpf_freq_1+'Hz',
|
|
4134
|
-
'hpf_coeff_2': frame_data.hpf_coeff_2,
|
|
4135
|
-
'hpf_freq_2': frame_data.hpf_freq_2+'Hz',
|
|
4136
4208
|
'sampling_interval': frame_data.sampling_interval,
|
|
4137
4209
|
'on_request_timeout': frame_data.on_request_timeout,
|
|
4138
4210
|
'deadband': frame_data.deadband,
|
|
4139
|
-
'payload_length': frame_data.payload_length
|
|
4140
|
-
'machine_values': {
|
|
4141
|
-
'firmware': frame[2],
|
|
4142
|
-
'destination_address': toMac(frame.slice(12, 16), false),
|
|
4143
|
-
'mode': frame[16],
|
|
4144
|
-
'odr_1': frame[17],
|
|
4145
|
-
'odr_2': frame[18],
|
|
4146
|
-
'sampling_duration_1': frame[19],
|
|
4147
|
-
'sampling_duration_2': frame[20],
|
|
4148
|
-
'filter_status': frame[21],
|
|
4149
|
-
'lpf_coeff_1': frame[22],
|
|
4150
|
-
'lpf_coeff_2': frame[23],
|
|
4151
|
-
'hpf_coeff_1': frame[24],
|
|
4152
|
-
'hpf_coeff_2': frame[25],
|
|
4153
|
-
'sampling_interval': frame[26],
|
|
4154
|
-
'on_request_timeout': frame[27],
|
|
4155
|
-
'deadband': frame[28],
|
|
4156
|
-
'payload_length': frame[29]
|
|
4157
|
-
}
|
|
4211
|
+
'payload_length': frame_data.payload_length
|
|
4158
4212
|
}
|
|
4213
|
+
if(response.firmware > 19){
|
|
4214
|
+
response.lifetime_transmissions = frame.slice(30, 34).reduce(msbLsb);
|
|
4215
|
+
}
|
|
4216
|
+
response.machine_values = {
|
|
4217
|
+
'firmware': frame[2],
|
|
4218
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
4219
|
+
'mode': frame[16],
|
|
4220
|
+
'odr_1': frame[17],
|
|
4221
|
+
'sampling_duration_1': frame[19],
|
|
4222
|
+
'sampling_duration_2': frame[20],
|
|
4223
|
+
'filter_status': frame[21],
|
|
4224
|
+
'lpf_coeff_1': frame[22],
|
|
4225
|
+
'hpf_coeff_1': frame[24],
|
|
4226
|
+
'sampling_interval': frame[26],
|
|
4227
|
+
'on_request_timeout': frame[27],
|
|
4228
|
+
'deadband': frame[28],
|
|
4229
|
+
'payload_length': frame[29]
|
|
4230
|
+
}
|
|
4231
|
+
if(response.firmware > 19){
|
|
4232
|
+
response.machine_values.lifetime_transmissions = frame.slice(30, 34);
|
|
4233
|
+
}
|
|
4234
|
+
return response;
|
|
4159
4235
|
}
|
|
4160
4236
|
},
|
|
4161
4237
|
|
|
@@ -5352,7 +5428,7 @@ function sensor_types(parent){
|
|
|
5352
5428
|
break;
|
|
5353
5429
|
}
|
|
5354
5430
|
|
|
5355
|
-
|
|
5431
|
+
let response = {
|
|
5356
5432
|
'firmware': frame[2],
|
|
5357
5433
|
'destination_address': toMac(frame.slice(12, 16)),
|
|
5358
5434
|
'mode': frame_data.mode,
|
|
@@ -5367,23 +5443,30 @@ function sensor_types(parent){
|
|
|
5367
5443
|
'sampling_interval': frame_data.sampling_interval,
|
|
5368
5444
|
'on_request_timeout': frame_data.on_request_timeout,
|
|
5369
5445
|
'deadband': frame_data.deadband,
|
|
5370
|
-
'payload_length': frame_data.payload_length
|
|
5371
|
-
|
|
5372
|
-
|
|
5373
|
-
|
|
5374
|
-
'mode': frame[16],
|
|
5375
|
-
'odr_1': frame[17],
|
|
5376
|
-
'sampling_duration_1': frame[19],
|
|
5377
|
-
'sampling_duration_2': frame[20],
|
|
5378
|
-
'filter_status': frame[21],
|
|
5379
|
-
'lpf_coeff_1': frame[22],
|
|
5380
|
-
'hpf_coeff_1': frame[24],
|
|
5381
|
-
'sampling_interval': frame[26],
|
|
5382
|
-
'on_request_timeout': frame[27],
|
|
5383
|
-
'deadband': frame[28],
|
|
5384
|
-
'payload_length': frame[29]
|
|
5385
|
-
}
|
|
5446
|
+
'payload_length': frame_data.payload_length
|
|
5447
|
+
}
|
|
5448
|
+
if(response.firmware > 19){
|
|
5449
|
+
response.lifetime_transmissions = frame.slice(30, 34).reduce(msbLsb);
|
|
5386
5450
|
}
|
|
5451
|
+
response.machine_values = {
|
|
5452
|
+
'firmware': frame[2],
|
|
5453
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
5454
|
+
'mode': frame[16],
|
|
5455
|
+
'odr_1': frame[17],
|
|
5456
|
+
'sampling_duration_1': frame[19],
|
|
5457
|
+
'sampling_duration_2': frame[20],
|
|
5458
|
+
'filter_status': frame[21],
|
|
5459
|
+
'lpf_coeff_1': frame[22],
|
|
5460
|
+
'hpf_coeff_1': frame[24],
|
|
5461
|
+
'sampling_interval': frame[26],
|
|
5462
|
+
'on_request_timeout': frame[27],
|
|
5463
|
+
'deadband': frame[28],
|
|
5464
|
+
'payload_length': frame[29]
|
|
5465
|
+
}
|
|
5466
|
+
if(response.firmware > 19){
|
|
5467
|
+
response.machine_values.lifetime_transmissions = frame.slice(30, 34);
|
|
5468
|
+
}
|
|
5469
|
+
return response;
|
|
5387
5470
|
}
|
|
5388
5471
|
},
|
|
5389
5472
|
'88': {
|
|
@@ -5461,7 +5544,7 @@ function sensor_types(parent){
|
|
|
5461
5544
|
}
|
|
5462
5545
|
},
|
|
5463
5546
|
'105': {
|
|
5464
|
-
name: '1
|
|
5547
|
+
name: '1 Channel Automatic Luber With Ultrasound Vibration Sensor',
|
|
5465
5548
|
parse: (d) => {
|
|
5466
5549
|
return {
|
|
5467
5550
|
raw_adc: d.slice(0, 2).reduce(msbLsb),
|
|
@@ -5470,6 +5553,19 @@ function sensor_types(parent){
|
|
|
5470
5553
|
};
|
|
5471
5554
|
}
|
|
5472
5555
|
},
|
|
5556
|
+
'106': {
|
|
5557
|
+
name: '2 Channel Automatic Luber With Ultrasound Vibration Sensor',
|
|
5558
|
+
parse: (d) => {
|
|
5559
|
+
return {
|
|
5560
|
+
c1_raw_adc: d.slice(0, 2).reduce(msbLsb),
|
|
5561
|
+
c1_ma: d.slice(2, 4).reduce(msbLsb) / 100,
|
|
5562
|
+
c1_db: d.slice(4, 6).reduce(msbLsb) / 100,
|
|
5563
|
+
c2_raw_adc: d.slice(6, 8).reduce(msbLsb),
|
|
5564
|
+
c2_ma: d.slice(8, 10).reduce(msbLsb) / 100,
|
|
5565
|
+
c2_db: d.slice(10, 12).reduce(msbLsb) / 100
|
|
5566
|
+
};
|
|
5567
|
+
}
|
|
5568
|
+
},
|
|
5473
5569
|
'107': {
|
|
5474
5570
|
name: '16-Bit 4-Channel 4-20mA',
|
|
5475
5571
|
parse: (d) => {
|
|
@@ -9766,11 +9862,629 @@ function sensor_types(parent){
|
|
|
9766
9862
|
}
|
|
9767
9863
|
}
|
|
9768
9864
|
},
|
|
9865
|
+
'538': {
|
|
9866
|
+
name: 'One Channel Vibration Plus',
|
|
9867
|
+
parse: (payload, parsed, mac) => {
|
|
9868
|
+
if(payload[7] >> 1 != 0){
|
|
9869
|
+
console.log('Error found');
|
|
9870
|
+
parsed.data = {error: 'Error found, Sensor Probe may be unattached'};
|
|
9871
|
+
return parsed;
|
|
9872
|
+
}
|
|
9873
|
+
|
|
9874
|
+
if(payload[8] === 1){
|
|
9875
|
+
var deviceAddr = mac;
|
|
9876
|
+
var firmware = payload[1];
|
|
9877
|
+
var hour = payload[11];
|
|
9878
|
+
var minute = payload[12];
|
|
9879
|
+
var expected_packets = payload[15];
|
|
9880
|
+
var current_packet = payload[16];
|
|
9881
|
+
var sdata_start = 17;
|
|
9882
|
+
|
|
9883
|
+
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
9884
|
+
if(expected_packets != 1){
|
|
9885
|
+
// 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
|
|
9886
|
+
if(current_packet in globalDevices[deviceAddr].data || current_packet == 1 || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
|
|
9887
|
+
console.log('-----');
|
|
9888
|
+
console.log('bad packet breakdown deleting stream');
|
|
9889
|
+
console.log(current_packet);
|
|
9890
|
+
console.log(expected_packets);
|
|
9891
|
+
console.log(current_packet in globalDevices[deviceAddr].data);
|
|
9892
|
+
console.log(current_packet == 1);
|
|
9893
|
+
console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
|
|
9894
|
+
if(this.hasOwnProperty('failure_no')){
|
|
9895
|
+
this.failure_no = this.failure_no + 1;
|
|
9896
|
+
}
|
|
9897
|
+
else{
|
|
9898
|
+
this.failure_no = 1;
|
|
9899
|
+
}
|
|
9900
|
+
if(this.hasOwnProperty('failure_no')){
|
|
9901
|
+
console.log('####falure no');
|
|
9902
|
+
console.log(this.failure_no);
|
|
9903
|
+
}
|
|
9904
|
+
// console.log(globalDevices[deviceAddr].data);
|
|
9905
|
+
delete globalDevices[deviceAddr];
|
|
9906
|
+
if(current_packet != 1){
|
|
9907
|
+
return;
|
|
9908
|
+
} else{
|
|
9909
|
+
|
|
9910
|
+
var mode = payload[8];
|
|
9911
|
+
var odr = payload[9];
|
|
9912
|
+
var en_axis = payload[10] & 7;
|
|
9913
|
+
var fsr = payload[10] >> 5;
|
|
9914
|
+
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
9915
|
+
|
|
9916
|
+
|
|
9917
|
+
switch(odr){
|
|
9918
|
+
case 6:
|
|
9919
|
+
odr = 50;
|
|
9920
|
+
break;
|
|
9921
|
+
case 7:
|
|
9922
|
+
odr = 100;
|
|
9923
|
+
break;
|
|
9924
|
+
case 8:
|
|
9925
|
+
odr = 200;
|
|
9926
|
+
break;
|
|
9927
|
+
case 9:
|
|
9928
|
+
odr = 400;
|
|
9929
|
+
break;
|
|
9930
|
+
case 10:
|
|
9931
|
+
odr = 800;
|
|
9932
|
+
break;
|
|
9933
|
+
case 11:
|
|
9934
|
+
odr = 1600;
|
|
9935
|
+
break;
|
|
9936
|
+
case 12:
|
|
9937
|
+
odr = 3200;
|
|
9938
|
+
break;
|
|
9939
|
+
case 13:
|
|
9940
|
+
odr = 6400;
|
|
9941
|
+
break;
|
|
9942
|
+
case 14:
|
|
9943
|
+
odr = 12800;
|
|
9944
|
+
break;
|
|
9945
|
+
case 15:
|
|
9946
|
+
odr = 25600;
|
|
9947
|
+
break;
|
|
9948
|
+
default:
|
|
9949
|
+
odr = 0;
|
|
9950
|
+
}
|
|
9951
|
+
|
|
9952
|
+
globalDevices[deviceAddr] = {
|
|
9953
|
+
// stream_size: expected_packets,
|
|
9954
|
+
data: {},
|
|
9955
|
+
odr: odr,
|
|
9956
|
+
mo: mode,
|
|
9957
|
+
en_axis: en_axis,
|
|
9958
|
+
fsr: fsr,
|
|
9959
|
+
hour: hour,
|
|
9960
|
+
minute: minute,
|
|
9961
|
+
device_temp: device_temp,
|
|
9962
|
+
}
|
|
9963
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
9964
|
+
return;
|
|
9965
|
+
}
|
|
9966
|
+
}
|
|
9967
|
+
else{
|
|
9968
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
9969
|
+
}
|
|
9970
|
+
}
|
|
9971
|
+
else{
|
|
9972
|
+
var mode = payload[8];
|
|
9973
|
+
var odr = payload[9];
|
|
9974
|
+
var en_axis = payload[10] & 7;
|
|
9975
|
+
var fsr = payload[10] >> 5;
|
|
9976
|
+
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
9977
|
+
|
|
9978
|
+
|
|
9979
|
+
switch(odr){
|
|
9980
|
+
case 6:
|
|
9981
|
+
odr = 50;
|
|
9982
|
+
break;
|
|
9983
|
+
case 7:
|
|
9984
|
+
odr = 100;
|
|
9985
|
+
break;
|
|
9986
|
+
case 8:
|
|
9987
|
+
odr = 200;
|
|
9988
|
+
break;
|
|
9989
|
+
case 9:
|
|
9990
|
+
odr = 400;
|
|
9991
|
+
break;
|
|
9992
|
+
case 10:
|
|
9993
|
+
odr = 800;
|
|
9994
|
+
break;
|
|
9995
|
+
case 11:
|
|
9996
|
+
odr = 1600;
|
|
9997
|
+
break;
|
|
9998
|
+
case 12:
|
|
9999
|
+
odr = 3200;
|
|
10000
|
+
break;
|
|
10001
|
+
case 13:
|
|
10002
|
+
odr = 6400;
|
|
10003
|
+
break;
|
|
10004
|
+
case 14:
|
|
10005
|
+
odr = 12800;
|
|
10006
|
+
break;
|
|
10007
|
+
case 15:
|
|
10008
|
+
odr = 25600;
|
|
10009
|
+
break;
|
|
10010
|
+
default:
|
|
10011
|
+
odr = 0;
|
|
10012
|
+
}
|
|
10013
|
+
|
|
10014
|
+
globalDevices[deviceAddr] = {
|
|
10015
|
+
// stream_size: expected_packets,
|
|
10016
|
+
data: {},
|
|
10017
|
+
odr: odr,
|
|
10018
|
+
mo: mode,
|
|
10019
|
+
en_axis: en_axis,
|
|
10020
|
+
fsr: fsr,
|
|
10021
|
+
hour: hour,
|
|
10022
|
+
minute: minute,
|
|
10023
|
+
device_temp: device_temp,
|
|
10024
|
+
}
|
|
10025
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
10026
|
+
}
|
|
10027
|
+
|
|
10028
|
+
if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
|
|
10029
|
+
var raw_data = new Array();
|
|
10030
|
+
for(const packet in globalDevices[deviceAddr].data){
|
|
10031
|
+
raw_data = raw_data.concat(globalDevices[deviceAddr].data[packet]);
|
|
10032
|
+
}
|
|
10033
|
+
var label = 0;
|
|
10034
|
+
|
|
10035
|
+
var fft = new Array();
|
|
10036
|
+
var fft_concat = {};
|
|
10037
|
+
|
|
10038
|
+
var en_axis_data = {};
|
|
10039
|
+
switch (globalDevices[deviceAddr].en_axis){
|
|
10040
|
+
case 1:
|
|
10041
|
+
en_axis_data.x_offset = 0;
|
|
10042
|
+
en_axis_data.increment = 2;
|
|
10043
|
+
break;
|
|
10044
|
+
case 2:
|
|
10045
|
+
en_axis_data.y_offset = 0;
|
|
10046
|
+
en_axis_data.increment = 2;
|
|
10047
|
+
break;
|
|
10048
|
+
case 3:
|
|
10049
|
+
en_axis_data.x_offset = 0;
|
|
10050
|
+
en_axis_data.y_offset = 2;
|
|
10051
|
+
en_axis_data.increment = 4;
|
|
10052
|
+
break;
|
|
10053
|
+
case 4:
|
|
10054
|
+
en_axis_data.z_offset = 0;
|
|
10055
|
+
en_axis_data.increment = 2;
|
|
10056
|
+
break;
|
|
10057
|
+
case 5:
|
|
10058
|
+
en_axis_data.x_offset = 0;
|
|
10059
|
+
en_axis_data.z_offset = 2;
|
|
10060
|
+
en_axis_data.increment = 4;
|
|
10061
|
+
break;
|
|
10062
|
+
case 6:
|
|
10063
|
+
en_axis_data.y_offset = 0;
|
|
10064
|
+
en_axis_data.z_offset = 2;
|
|
10065
|
+
en_axis_data.increment = 4;
|
|
10066
|
+
break;
|
|
10067
|
+
case 7:
|
|
10068
|
+
en_axis_data.x_offset = 0;
|
|
10069
|
+
en_axis_data.y_offset = 2;
|
|
10070
|
+
en_axis_data.z_offset = 4;
|
|
10071
|
+
en_axis_data.increment = 6;
|
|
10072
|
+
break;
|
|
10073
|
+
default:
|
|
10074
|
+
en_axis_data.increment = 0;
|
|
10075
|
+
}
|
|
10076
|
+
|
|
10077
|
+
var fsr_mult = .00006;
|
|
10078
|
+
var fsr_text = "";
|
|
10079
|
+
switch(globalDevices[deviceAddr].fsr){
|
|
10080
|
+
case 0:
|
|
10081
|
+
fsr_mult = 0.00006;
|
|
10082
|
+
break;
|
|
10083
|
+
case 1:
|
|
10084
|
+
fsr_mult = 0.00012;
|
|
10085
|
+
break;
|
|
10086
|
+
case 2:
|
|
10087
|
+
fsr_mult = 0.00024;
|
|
10088
|
+
break;
|
|
10089
|
+
case 3:
|
|
10090
|
+
fsr_mult = 0.00049;
|
|
10091
|
+
break;
|
|
10092
|
+
}
|
|
10093
|
+
switch(globalDevices[deviceAddr].fsr){
|
|
10094
|
+
case 0:
|
|
10095
|
+
fsr_text = "2g";
|
|
10096
|
+
break;
|
|
10097
|
+
case 1:
|
|
10098
|
+
fsr_text = "4g";
|
|
10099
|
+
break;
|
|
10100
|
+
case 2:
|
|
10101
|
+
fsr_text = "8g";
|
|
10102
|
+
break;
|
|
10103
|
+
case 3:
|
|
10104
|
+
fsr_text = "16g";
|
|
10105
|
+
break;
|
|
10106
|
+
}
|
|
10107
|
+
|
|
10108
|
+
for(var i = 0; i < raw_data.length; i+=en_axis_data.increment){
|
|
10109
|
+
label++;
|
|
10110
|
+
|
|
10111
|
+
fft_concat[label] = {};
|
|
10112
|
+
|
|
10113
|
+
if('x_offset' in en_axis_data){
|
|
10114
|
+
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));
|
|
10115
|
+
}
|
|
10116
|
+
if('y_offset' in en_axis_data){
|
|
10117
|
+
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));
|
|
10118
|
+
}
|
|
10119
|
+
if('z_offset' in en_axis_data){
|
|
10120
|
+
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));
|
|
10121
|
+
}
|
|
10122
|
+
}
|
|
10123
|
+
var fft_concat_obj = {
|
|
10124
|
+
time_id: globalDevices[deviceAddr].hour +':'+ globalDevices[deviceAddr].minute,
|
|
10125
|
+
mac_address: deviceAddr,
|
|
10126
|
+
en_axis: globalDevices[deviceAddr].en_axis,
|
|
10127
|
+
fsr: fsr_text,
|
|
10128
|
+
odr: globalDevices[deviceAddr].odr,
|
|
10129
|
+
device_temp: globalDevices[deviceAddr].device_temp,
|
|
10130
|
+
data: fft_concat
|
|
10131
|
+
};
|
|
10132
|
+
sensor_data = fft_concat_obj;
|
|
10133
|
+
delete globalDevices[deviceAddr];
|
|
10134
|
+
if(this.hasOwnProperty('failure_no')){
|
|
10135
|
+
console.log('####falure no');
|
|
10136
|
+
console.log(this.failure_no);
|
|
10137
|
+
}
|
|
10138
|
+
|
|
10139
|
+
return sensor_data;
|
|
10140
|
+
}
|
|
10141
|
+
else{
|
|
10142
|
+
return;
|
|
10143
|
+
}
|
|
10144
|
+
}else{
|
|
10145
|
+
|
|
10146
|
+
var mode = payload[8];
|
|
10147
|
+
var odr = payload[9];
|
|
10148
|
+
var en_axis = payload[10] & 7;
|
|
10149
|
+
var fsr = payload[10] >> 5;
|
|
10150
|
+
var device_temp = msbLsb(payload[13], payload[14])/100;
|
|
10151
|
+
|
|
10152
|
+
|
|
10153
|
+
switch(odr){
|
|
10154
|
+
case 6:
|
|
10155
|
+
odr = 50;
|
|
10156
|
+
break;
|
|
10157
|
+
case 7:
|
|
10158
|
+
odr = 100;
|
|
10159
|
+
break;
|
|
10160
|
+
case 8:
|
|
10161
|
+
odr = 200;
|
|
10162
|
+
break;
|
|
10163
|
+
case 9:
|
|
10164
|
+
odr = 400;
|
|
10165
|
+
break;
|
|
10166
|
+
case 10:
|
|
10167
|
+
odr = 800;
|
|
10168
|
+
break;
|
|
10169
|
+
case 11:
|
|
10170
|
+
odr = 1600;
|
|
10171
|
+
break;
|
|
10172
|
+
case 12:
|
|
10173
|
+
odr = 3200;
|
|
10174
|
+
break;
|
|
10175
|
+
case 13:
|
|
10176
|
+
odr = 6400;
|
|
10177
|
+
break;
|
|
10178
|
+
case 14:
|
|
10179
|
+
odr = 12800;
|
|
10180
|
+
break;
|
|
10181
|
+
case 15:
|
|
10182
|
+
odr = 25600;
|
|
10183
|
+
break;
|
|
10184
|
+
default:
|
|
10185
|
+
odr = 0;
|
|
10186
|
+
}
|
|
10187
|
+
|
|
10188
|
+
globalDevices[deviceAddr] = {
|
|
10189
|
+
// stream_size: expected_packets,
|
|
10190
|
+
data: {},
|
|
10191
|
+
odr: odr,
|
|
10192
|
+
mo: mode,
|
|
10193
|
+
en_axis: en_axis,
|
|
10194
|
+
fsr: fsr,
|
|
10195
|
+
hour: hour,
|
|
10196
|
+
minute: minute,
|
|
10197
|
+
device_temp: device_temp,
|
|
10198
|
+
}
|
|
10199
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
10200
|
+
return;
|
|
10201
|
+
}
|
|
10202
|
+
}
|
|
10203
|
+
else if(payload[8] === 0 || payload[8] === 2){
|
|
10204
|
+
// mode byte most significant bit will indicate fft data.
|
|
10205
|
+
// console.log(d);
|
|
10206
|
+
var odr;
|
|
10207
|
+
switch(payload[9]){
|
|
10208
|
+
case 6:
|
|
10209
|
+
odr = "50Hz"
|
|
10210
|
+
break;
|
|
10211
|
+
case 7:
|
|
10212
|
+
odr = "100Hz";
|
|
10213
|
+
break;
|
|
10214
|
+
case 8:
|
|
10215
|
+
odr = "200Hz";
|
|
10216
|
+
break;
|
|
10217
|
+
case 9:
|
|
10218
|
+
odr = "400Hz";
|
|
10219
|
+
break;
|
|
10220
|
+
case 10:
|
|
10221
|
+
odr = "800Hz";
|
|
10222
|
+
break;
|
|
10223
|
+
case 11:
|
|
10224
|
+
odr = "1600Hz";
|
|
10225
|
+
break;
|
|
10226
|
+
case 12:
|
|
10227
|
+
odr = "3200Hz";
|
|
10228
|
+
break;
|
|
10229
|
+
case 13:
|
|
10230
|
+
odr = "6400Hz";
|
|
10231
|
+
break;
|
|
10232
|
+
case 14:
|
|
10233
|
+
odr = "12800Hz";
|
|
10234
|
+
break;
|
|
10235
|
+
case 15:
|
|
10236
|
+
odr = "25600Hz";
|
|
10237
|
+
break;
|
|
10238
|
+
}
|
|
10239
|
+
return {
|
|
10240
|
+
mode: payload[8],
|
|
10241
|
+
|
|
10242
|
+
odr: odr,
|
|
10243
|
+
temperature: signInt(payload.slice(10, 12).reduce(msbLsb), 16) / 100,
|
|
10244
|
+
|
|
10245
|
+
x_rms_ACC_G: payload.slice(12, 14).reduce(msbLsb)/1000,
|
|
10246
|
+
x_max_ACC_G: payload.slice(14, 16).reduce(msbLsb)/1000,
|
|
10247
|
+
x_velocity_mm_sec: payload.slice(16, 18).reduce(msbLsb) / 100,
|
|
10248
|
+
x_displacement_mm: payload.slice(18, 20).reduce(msbLsb) / 100,
|
|
10249
|
+
x_peak_one_Hz: payload.slice(20, 22).reduce(msbLsb),
|
|
10250
|
+
x_peak_two_Hz: payload.slice(22, 24).reduce(msbLsb),
|
|
10251
|
+
x_peak_three_Hz: payload.slice(24, 26).reduce(msbLsb),
|
|
10252
|
+
|
|
10253
|
+
y_rms_ACC_G: payload.slice(26, 28).reduce(msbLsb)/1000,
|
|
10254
|
+
y_max_ACC_G: payload.slice(28, 30).reduce(msbLsb)/1000,
|
|
10255
|
+
y_velocity_mm_sec: payload.slice(30, 32).reduce(msbLsb) / 100,
|
|
10256
|
+
y_displacement_mm: payload.slice(32, 34).reduce(msbLsb) / 100,
|
|
10257
|
+
y_peak_one_Hz: payload.slice(34, 36).reduce(msbLsb),
|
|
10258
|
+
y_peak_two_Hz: payload.slice(36, 38).reduce(msbLsb),
|
|
10259
|
+
y_peak_three_Hz: payload.slice(38, 40).reduce(msbLsb),
|
|
10260
|
+
|
|
10261
|
+
z_rms_ACC_G: payload.slice(40, 42).reduce(msbLsb)/1000,
|
|
10262
|
+
z_max_ACC_G: payload.slice(42, 44).reduce(msbLsb)/1000,
|
|
10263
|
+
z_velocity_mm_sec: payload.slice(44, 46).reduce(msbLsb) / 100,
|
|
10264
|
+
z_displacement_mm: payload.slice(46, 48).reduce(msbLsb) / 100,
|
|
10265
|
+
z_peak_one_Hz: payload.slice(48, 50).reduce(msbLsb),
|
|
10266
|
+
z_peak_two_Hz: payload.slice(50, 52).reduce(msbLsb),
|
|
10267
|
+
z_peak_three_Hz: payload.slice(52, 54).reduce(msbLsb),
|
|
10268
|
+
};
|
|
10269
|
+
}
|
|
10270
|
+
// else{
|
|
10271
|
+
// parsed.data = {'error': 'Vibration mode error'}
|
|
10272
|
+
// return parsed;
|
|
10273
|
+
// }
|
|
10274
|
+
},
|
|
10275
|
+
'parse_fly': (frame) => {
|
|
10276
|
+
let frame_data = {};
|
|
10277
|
+
switch(frame[16]){
|
|
10278
|
+
case 0:
|
|
10279
|
+
frame_data.mode = "Processed";
|
|
10280
|
+
break;
|
|
10281
|
+
case 1:
|
|
10282
|
+
frame_data.mode = "Raw";
|
|
10283
|
+
break;
|
|
10284
|
+
case 2:
|
|
10285
|
+
frame_data.mode = "Processed + Raw on demand";
|
|
10286
|
+
break;
|
|
10287
|
+
}
|
|
10288
|
+
switch(frame[17]){
|
|
10289
|
+
case 6:
|
|
10290
|
+
frame_data.odr_1 = 50;
|
|
10291
|
+
break;
|
|
10292
|
+
case 7:
|
|
10293
|
+
frame_data.odr_1 = 100;
|
|
10294
|
+
break;
|
|
10295
|
+
case 8:
|
|
10296
|
+
frame_data.odr_1 = 200;
|
|
10297
|
+
break;
|
|
10298
|
+
case 9:
|
|
10299
|
+
frame_data.odr_1 = 400;
|
|
10300
|
+
break;
|
|
10301
|
+
case 10:
|
|
10302
|
+
frame_data.odr_1 = 800;
|
|
10303
|
+
break;
|
|
10304
|
+
case 11:
|
|
10305
|
+
frame_data.odr_1 = 1600;
|
|
10306
|
+
break;
|
|
10307
|
+
case 12:
|
|
10308
|
+
frame_data.odr_1 = 3200;
|
|
10309
|
+
break;
|
|
10310
|
+
case 13:
|
|
10311
|
+
frame_data.odr_1 = 6400;
|
|
10312
|
+
break;
|
|
10313
|
+
case 14:
|
|
10314
|
+
frame_data.odr_1 = 12800;
|
|
10315
|
+
break;
|
|
10316
|
+
case 15:
|
|
10317
|
+
frame_data.odr_1 = 25600;
|
|
10318
|
+
break;
|
|
10319
|
+
}
|
|
10320
|
+
frame_data.sampling_duration_1 = frame[19]*50 + "ms";
|
|
10321
|
+
switch(frame[21]){
|
|
10322
|
+
case 0:
|
|
10323
|
+
frame_data.filter_status = "Disabled";
|
|
10324
|
+
break;
|
|
10325
|
+
case 1:
|
|
10326
|
+
frame_data.filter_status = "Enabled";
|
|
10327
|
+
break;
|
|
10328
|
+
}
|
|
10329
|
+
switch(frame[22]){
|
|
10330
|
+
case 0:
|
|
10331
|
+
frame_data.lpf_coeff_1 = 4;
|
|
10332
|
+
break;
|
|
10333
|
+
case 1:
|
|
10334
|
+
frame_data.lpf_coeff_1 = 8;
|
|
10335
|
+
break;
|
|
10336
|
+
case 2:
|
|
10337
|
+
frame_data.lpf_coeff_1 = 16;
|
|
10338
|
+
break;
|
|
10339
|
+
case 2:
|
|
10340
|
+
frame_data.lpf_coeff_1 = 32;
|
|
10341
|
+
break;
|
|
10342
|
+
case 4:
|
|
10343
|
+
frame_data.lpf_coeff_1 = 64;
|
|
10344
|
+
break;
|
|
10345
|
+
case 5:
|
|
10346
|
+
frame_data.lpf_coeff_1 = 128;
|
|
10347
|
+
break;
|
|
10348
|
+
case 6:
|
|
10349
|
+
frame_data.lpf_coeff_1 = 256;
|
|
10350
|
+
break;
|
|
10351
|
+
case 7:
|
|
10352
|
+
frame_data.lpf_coeff_1 = 512;
|
|
10353
|
+
break;
|
|
10354
|
+
case 8:
|
|
10355
|
+
frame_data.lpf_coeff_1 = 1024;
|
|
10356
|
+
break;
|
|
10357
|
+
case 9:
|
|
10358
|
+
frame_data.lpf_coeff_1 = 2048;
|
|
10359
|
+
break;
|
|
10360
|
+
}
|
|
10361
|
+
frame_data.lpf_freq_1 = frame_data.odr_1 / frame_data.lpf_coeff_1;
|
|
10362
|
+
switch(frame[24]){
|
|
10363
|
+
case 0:
|
|
10364
|
+
frame_data.hpf_coeff_1 = 4;
|
|
10365
|
+
break;
|
|
10366
|
+
case 1:
|
|
10367
|
+
frame_data.hpf_coeff_1 = 8;
|
|
10368
|
+
break;
|
|
10369
|
+
case 2:
|
|
10370
|
+
frame_data.hpf_coeff_1 = 16;
|
|
10371
|
+
break;
|
|
10372
|
+
case 2:
|
|
10373
|
+
frame_data.hpf_coeff_1 = 32;
|
|
10374
|
+
break;
|
|
10375
|
+
case 4:
|
|
10376
|
+
frame_data.hpf_coeff_1 = 64;
|
|
10377
|
+
break;
|
|
10378
|
+
case 5:
|
|
10379
|
+
frame_data.hpf_coeff_1 = 128;
|
|
10380
|
+
break;
|
|
10381
|
+
case 6:
|
|
10382
|
+
frame_data.hpf_coeff_1 = 256;
|
|
10383
|
+
break;
|
|
10384
|
+
case 7:
|
|
10385
|
+
frame_data.hpf_coeff_1 = 512;
|
|
10386
|
+
break;
|
|
10387
|
+
case 8:
|
|
10388
|
+
frame_data.hpf_coeff_1 = 1024;
|
|
10389
|
+
break;
|
|
10390
|
+
case 9:
|
|
10391
|
+
frame_data.hpf_coeff_1 = 2048;
|
|
10392
|
+
break;
|
|
10393
|
+
}
|
|
10394
|
+
frame_data.hpf_freq_1 = frame_data.odr_1 / frame_data.hpf_coeff_1;
|
|
10395
|
+
switch(frame[26]){
|
|
10396
|
+
case 0:
|
|
10397
|
+
frame_data.sampling_interval = "5 Minutes";
|
|
10398
|
+
break;
|
|
10399
|
+
case 1:
|
|
10400
|
+
frame_data.sampling_interval = "10 Minutes";
|
|
10401
|
+
break;
|
|
10402
|
+
case 2:
|
|
10403
|
+
frame_data.sampling_interval = "15 Minutes";
|
|
10404
|
+
break;
|
|
10405
|
+
case 2:
|
|
10406
|
+
frame_data.sampling_interval = "20 Minutes";
|
|
10407
|
+
break;
|
|
10408
|
+
case 4:
|
|
10409
|
+
frame_data.sampling_interval = "30 Minutes";
|
|
10410
|
+
break;
|
|
10411
|
+
case 5:
|
|
10412
|
+
frame_data.sampling_interval = "60 Minutes";
|
|
10413
|
+
break;
|
|
10414
|
+
case 6:
|
|
10415
|
+
frame_data.sampling_interval = "120 Minutes";
|
|
10416
|
+
break;
|
|
10417
|
+
case 7:
|
|
10418
|
+
frame_data.sampling_interval = "180 Minutes";
|
|
10419
|
+
break;
|
|
10420
|
+
case 8:
|
|
10421
|
+
frame_data.sampling_interval = "1 Minute";
|
|
10422
|
+
break;
|
|
10423
|
+
}
|
|
10424
|
+
frame_data.on_request_timeout = frame[27] + " Seconds";
|
|
10425
|
+
frame_data.deadband = frame[28] + "mg";
|
|
10426
|
+
|
|
10427
|
+
switch(frame[29]){
|
|
10428
|
+
case 0:
|
|
10429
|
+
frame_data.payload_length = "50 Bytes";
|
|
10430
|
+
break;
|
|
10431
|
+
case 1:
|
|
10432
|
+
frame_data.payload_length = "100 Bytes";
|
|
10433
|
+
break;
|
|
10434
|
+
case 2:
|
|
10435
|
+
frame_data.payload_length = "150 Bytes";
|
|
10436
|
+
break;
|
|
10437
|
+
case 3:
|
|
10438
|
+
frame_data.payload_length = "180 Bytes";
|
|
10439
|
+
break;
|
|
10440
|
+
}
|
|
10441
|
+
|
|
10442
|
+
return {
|
|
10443
|
+
'firmware': frame[2],
|
|
10444
|
+
'destination_address': toMac(frame.slice(12, 16)),
|
|
10445
|
+
'mode': frame_data.mode,
|
|
10446
|
+
'odr_1': frame_data.odr_1+'Hz',
|
|
10447
|
+
'sampling_duration_1': frame_data.sampling_duration_1,
|
|
10448
|
+
'sampling_duration_2': frame_data.sampling_duration_2,
|
|
10449
|
+
'filter_status': frame_data.filter_status,
|
|
10450
|
+
'lpf_coeff_1': frame_data.lpf_coeff_1,
|
|
10451
|
+
'lpf_freq_1': frame_data.lpf_freq_1+'Hz',
|
|
10452
|
+
'hpf_coeff_1': frame_data.hpf_coeff_1,
|
|
10453
|
+
'hpf_freq_1': frame_data.hpf_freq_1+'Hz',
|
|
10454
|
+
'sampling_interval': frame_data.sampling_interval,
|
|
10455
|
+
'on_request_timeout': frame_data.on_request_timeout,
|
|
10456
|
+
'deadband': frame_data.deadband,
|
|
10457
|
+
'payload_length': frame_data.payload_length,
|
|
10458
|
+
'machine_values': {
|
|
10459
|
+
'firmware': frame[2],
|
|
10460
|
+
'destination_address': toMac(frame.slice(12, 16), false),
|
|
10461
|
+
'mode': frame[16],
|
|
10462
|
+
'odr_1': frame[17],
|
|
10463
|
+
'sampling_duration_1': frame[19],
|
|
10464
|
+
'sampling_duration_2': frame[20],
|
|
10465
|
+
'filter_status': frame[21],
|
|
10466
|
+
'lpf_coeff_1': frame[22],
|
|
10467
|
+
'hpf_coeff_1': frame[24],
|
|
10468
|
+
'sampling_interval': frame[26],
|
|
10469
|
+
'on_request_timeout': frame[27],
|
|
10470
|
+
'deadband': frame[28],
|
|
10471
|
+
'payload_length': frame[29]
|
|
10472
|
+
}
|
|
10473
|
+
}
|
|
10474
|
+
}
|
|
10475
|
+
},
|
|
9769
10476
|
'539': {
|
|
9770
10477
|
name: 'RS-485 Modbus Wireless Converter',
|
|
9771
10478
|
parse: (d) => {
|
|
9772
10479
|
return {
|
|
9773
|
-
|
|
10480
|
+
subdevice_type: d[0],
|
|
10481
|
+
number_of_registers: d[1],
|
|
10482
|
+
// TODO we can automatically determine how many registers are here based on the number_of_registers and create data objects appropriately
|
|
10483
|
+
// r1: d.slice(2,4),
|
|
10484
|
+
// r2: d.slice(4,6),
|
|
10485
|
+
// r3: d.slice(6,8),
|
|
10486
|
+
// r4: d.slice(8,10),
|
|
10487
|
+
data: d.slice(2)
|
|
9774
10488
|
};
|
|
9775
10489
|
},
|
|
9776
10490
|
},
|