@ncd-io/node-red-enterprise-sensors 1.0.11 → 1.1.1
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 +717 -79
- package/package.json +2 -2
- package/wireless.html +393 -60
- package/wireless.js +401 -62
package/lib/WirelessGateway.js
CHANGED
|
@@ -121,7 +121,6 @@ module.exports = class WirelessSensor{
|
|
|
121
121
|
|
|
122
122
|
this._emitter.emit("link_info",msg_obj);
|
|
123
123
|
}
|
|
124
|
-
|
|
125
124
|
parse(frame){
|
|
126
125
|
var type = this.payloadType[frame.data[0]];
|
|
127
126
|
if(typeof this[type] == 'function'){
|
|
@@ -142,7 +141,7 @@ module.exports = class WirelessSensor{
|
|
|
142
141
|
}
|
|
143
142
|
}
|
|
144
143
|
// #OTF
|
|
145
|
-
var otf_devices = [23,26,32,33,39,44,45,48,52,53,58,74,76,78,79,80,81,82,84,88,89,90,91,101,102,105,106,107,108,110,111,112,114,180,181,202,519,520,521,531,535,537,538,539,540,1010,1011];
|
|
144
|
+
var otf_devices = [23,26,32,33,39,44,45,48,52,53,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,180,181,202,519,520,521,531,535,537,538,539,540,1010,1011];
|
|
146
145
|
var device_type = msbLsb(frame.data[6], frame.data[7]);
|
|
147
146
|
// var device_type = frame.data[7];
|
|
148
147
|
|
|
@@ -151,6 +150,9 @@ module.exports = class WirelessSensor{
|
|
|
151
150
|
var broadcast_otf_devices = [101,102,202];
|
|
152
151
|
mode = "FLY";
|
|
153
152
|
}
|
|
153
|
+
if(frame.data[9] == 85 && frame.data[10] == 80 && frame.data[11] == 84 && frame.data[12] == 72 && frame.data[13] == 87 && frame.data[14] == 82 && frame.data[15] == 78) {
|
|
154
|
+
mode = "UPTHWRN";
|
|
155
|
+
}
|
|
154
156
|
}
|
|
155
157
|
if(mode == 'ACK'){
|
|
156
158
|
data.firmware_version = frame.data[5];
|
|
@@ -188,6 +190,7 @@ module.exports = class WirelessSensor{
|
|
|
188
190
|
type: data.sensor_type,
|
|
189
191
|
nodeId: data.nodeId,
|
|
190
192
|
mode: mode,
|
|
193
|
+
// data: data,
|
|
191
194
|
lastHeard: data.received
|
|
192
195
|
};
|
|
193
196
|
|
|
@@ -198,6 +201,8 @@ module.exports = class WirelessSensor{
|
|
|
198
201
|
// If we ever need to add any of the additional information of this packet we will need to rebuild to match
|
|
199
202
|
frame.data.splice(2,0,frame.data[5],0);
|
|
200
203
|
this.sensor_pool[frame.mac].reported_config = this.sensor_types[data.sensor_type].parse_fly(frame.data);
|
|
204
|
+
}else if(mode === 'ACK'){
|
|
205
|
+
this.sensor_pool[frame.mac].result = data.result;
|
|
201
206
|
}
|
|
202
207
|
var that = this;
|
|
203
208
|
|
|
@@ -219,7 +224,7 @@ module.exports = class WirelessSensor{
|
|
|
219
224
|
}).catch(console.log);
|
|
220
225
|
}
|
|
221
226
|
}
|
|
222
|
-
if(mode != 'FLY'){
|
|
227
|
+
if(mode != 'FLY' && mode !='UPTHWRN'){
|
|
223
228
|
var send_events = function(){
|
|
224
229
|
that._emitter.emit(type, data);
|
|
225
230
|
that._emitter.emit(type+'-'+data.sensor_type, data);
|
|
@@ -252,9 +257,10 @@ module.exports = class WirelessSensor{
|
|
|
252
257
|
nodeId: payload[0],
|
|
253
258
|
counter: payload[1],
|
|
254
259
|
sensor_type: msbLsb(payload[2], payload[3]),
|
|
260
|
+
result: payload[5],
|
|
255
261
|
data: payload.slice(6)
|
|
256
262
|
};
|
|
257
|
-
}
|
|
263
|
+
};
|
|
258
264
|
config_error(payload){
|
|
259
265
|
var errors = [
|
|
260
266
|
'Unknown',
|
|
@@ -294,7 +300,7 @@ module.exports = class WirelessSensor{
|
|
|
294
300
|
};
|
|
295
301
|
|
|
296
302
|
// #OTF
|
|
297
|
-
var otf_devices = [23,26,32,33,39,44,45,48,52,53,58,74,76,78,79,80,81,82,84,88,89,90,91,101,102,105,106,107,108,110,111,112,114,180,181,202,519,520,521,531,535,537,538,539,540,1010,1011];
|
|
303
|
+
var otf_devices = [23,26,32,33,39,44,45,48,52,53,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,180,181,202,519,520,521,531,535,537,538,539,540,1010,1011];
|
|
298
304
|
if(otf_devices.includes(parsed.sensor_type)){
|
|
299
305
|
// If the message says FLY and there is not FLY timer in progress.
|
|
300
306
|
if(payload[8] == 70 && payload[9] == 76 && payload[10] == 89) {
|
|
@@ -302,6 +308,10 @@ module.exports = class WirelessSensor{
|
|
|
302
308
|
return parsed;
|
|
303
309
|
}
|
|
304
310
|
}
|
|
311
|
+
if(frame.data[9] == 85 && frame.data[10] == 80 && frame.data[11] == 84 && frame.data[12] == 72 && frame.data[13] == 87 && frame.data[14] == 82 && frame.data[15] == 78) {
|
|
312
|
+
parsed.payload = "Upthwrn command";
|
|
313
|
+
return parsed;
|
|
314
|
+
}
|
|
305
315
|
|
|
306
316
|
// Sensor type 515 has a unique OTF that is indicated by a reserve byte value with MSb of 1
|
|
307
317
|
if(parsed.sensor_type == 515){
|
|
@@ -712,7 +722,7 @@ module.exports = class WirelessSensor{
|
|
|
712
722
|
data: payload.slice(8)
|
|
713
723
|
};
|
|
714
724
|
// #OTF
|
|
715
|
-
}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 == 110 || parsed.sensor_type == 111 || parsed.sensor_type == 112 || parsed.sensor_type == 114 || parsed.sensor_type == 180 || parsed.sensor_type == 181 || parsed.sensor_type == 515 || parsed.sensor_type == 519 || parsed.sensor_type == 531 || parsed.sensor_type == 537 || parsed.sensor_type == 538){
|
|
725
|
+
}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){
|
|
716
726
|
parsed.sensor_data = this.sensor_types[parsed.sensor_type].parse(payload, parsed, frame.mac);
|
|
717
727
|
if(!parsed.sensor_data){
|
|
718
728
|
return;
|
|
@@ -1037,6 +1047,12 @@ module.exports = class WirelessSensor{
|
|
|
1037
1047
|
console.log(packet);
|
|
1038
1048
|
return this.config_send(sensor_mac, packet);
|
|
1039
1049
|
}
|
|
1050
|
+
config_set_probe_boot_time_202(sensor_mac, value){
|
|
1051
|
+
console.log('config_set_probe_boot_time_202');
|
|
1052
|
+
var packet = [244, 83, 0, 0, 0, value];
|
|
1053
|
+
console.log(packet);
|
|
1054
|
+
return this.config_send(sensor_mac, packet);
|
|
1055
|
+
}
|
|
1040
1056
|
config_get_sampling_interval_101(sensor_mac, sampling_interval){
|
|
1041
1057
|
console.log('config_get_sampling_interval_101');
|
|
1042
1058
|
var packet = [244, 79, 0, 0, 101, 7];
|
|
@@ -1255,12 +1271,6 @@ module.exports = class WirelessSensor{
|
|
|
1255
1271
|
console.log(packet);
|
|
1256
1272
|
return this.config_send(sensor_mac, packet);
|
|
1257
1273
|
}
|
|
1258
|
-
config_set_qos_108(sensor_mac, value){
|
|
1259
|
-
console.log('config_set_qos_108');
|
|
1260
|
-
var packet = [247, 52, 0, 0, 0, value];
|
|
1261
|
-
console.log(packet);
|
|
1262
|
-
return this.config_send(sensor_mac, packet);
|
|
1263
|
-
}
|
|
1264
1274
|
config_set_deactivate_activate_accelero_108(sensor_mac, value){
|
|
1265
1275
|
console.log('config_set_deactivate_activate_accelero_108');
|
|
1266
1276
|
var packet = [244, 37, 0, 0, 0, value];
|
|
@@ -1394,6 +1404,36 @@ module.exports = class WirelessSensor{
|
|
|
1394
1404
|
console.log(packet);
|
|
1395
1405
|
return this.config_send(sensor_mac, packet);
|
|
1396
1406
|
}
|
|
1407
|
+
config_set_filter_thermocouple(sensor_mac, value){
|
|
1408
|
+
console.log('config_set_filter_thermocouple');
|
|
1409
|
+
let packet = [244, 85, 0, 0, 23, value];
|
|
1410
|
+
console.log(packet);
|
|
1411
|
+
return this.config_send(sensor_mac, packet);
|
|
1412
|
+
}
|
|
1413
|
+
config_set_cold_junction_thermocouple(sensor_mac, value){
|
|
1414
|
+
console.log('config_set_cold_junction_thermocouple');
|
|
1415
|
+
let packet = [244, 87, 0, 0, 23, value];
|
|
1416
|
+
console.log(packet);
|
|
1417
|
+
return this.config_send(sensor_mac, packet);
|
|
1418
|
+
}
|
|
1419
|
+
config_set_sample_resolution_thermocouple(sensor_mac, value){
|
|
1420
|
+
console.log('config_set_sample_resolution_thermocouple');
|
|
1421
|
+
let packet = [244, 89, 0, 0, 23, value];
|
|
1422
|
+
console.log(packet);
|
|
1423
|
+
return this.config_send(sensor_mac, packet);
|
|
1424
|
+
}
|
|
1425
|
+
config_set_number_of_samples_thermocouple(sensor_mac, value){
|
|
1426
|
+
console.log('config_set_number_of_samples_thermocouple');
|
|
1427
|
+
let packet = [244, 91, 0, 0, 23, value];
|
|
1428
|
+
console.log(packet);
|
|
1429
|
+
return this.config_send(sensor_mac, packet);
|
|
1430
|
+
}
|
|
1431
|
+
config_set_measurement_type_thermocouple(sensor_mac, value){
|
|
1432
|
+
console.log('config_set_number_of_samples_thermocouple');
|
|
1433
|
+
let packet = [244, 95, 0, 0, 23, value];
|
|
1434
|
+
console.log(packet);
|
|
1435
|
+
return this.config_send(sensor_mac, packet);
|
|
1436
|
+
}
|
|
1397
1437
|
config_set_debounce_time_2(sensor_mac, value){
|
|
1398
1438
|
console.log('config_set_debounce_time_2');
|
|
1399
1439
|
var packet = [244, 66, 0, 0, 2, value];
|
|
@@ -1406,14 +1446,20 @@ module.exports = class WirelessSensor{
|
|
|
1406
1446
|
console.log(packet);
|
|
1407
1447
|
return this.config_send(sensor_mac, packet);
|
|
1408
1448
|
}
|
|
1409
|
-
|
|
1410
|
-
console.log('
|
|
1449
|
+
config_set_auto_check_interval_88(sensor_mac, value){
|
|
1450
|
+
console.log('config_set_auto_check_interval_88');
|
|
1411
1451
|
let packet = [244, 70, 0, 0, 88];
|
|
1412
1452
|
let interval = int2Bytes((value), 2);
|
|
1413
1453
|
packet.push(...interval);
|
|
1414
1454
|
console.log(packet);
|
|
1415
1455
|
return this.config_send(sensor_mac, packet);
|
|
1416
1456
|
}
|
|
1457
|
+
config_set_auto_check_threshold_88(sensor_mac, value){
|
|
1458
|
+
console.log('config_set_auto_check_threshold_88');
|
|
1459
|
+
let packet = [244, 72, 0, 0, 88, 0, value];
|
|
1460
|
+
console.log(packet);
|
|
1461
|
+
return this.config_send(sensor_mac, packet);
|
|
1462
|
+
}
|
|
1417
1463
|
config_set_stay_on_mode_539(sensor_mac, value){
|
|
1418
1464
|
console.log('config_set_stay_on_mode_539');
|
|
1419
1465
|
var packet = [247, 50, 0, 0, 0, value];
|
|
@@ -1492,7 +1538,7 @@ module.exports = class WirelessSensor{
|
|
|
1492
1538
|
}
|
|
1493
1539
|
config_set_auto_raw_interval_110(sensor_mac, value){
|
|
1494
1540
|
console.log('config_set_raw_interval_110');
|
|
1495
|
-
var packet = [244, 79, 0, 0, 80,
|
|
1541
|
+
var packet = [244, 79, 0, 0, 80, 70, value];
|
|
1496
1542
|
console.log(packet);
|
|
1497
1543
|
return this.config_send(sensor_mac, packet);
|
|
1498
1544
|
}
|
|
@@ -1504,9 +1550,9 @@ module.exports = class WirelessSensor{
|
|
|
1504
1550
|
console.log(packet);
|
|
1505
1551
|
return this.config_send(sensor_mac, packet);
|
|
1506
1552
|
}
|
|
1507
|
-
config_set_clear_probe_uptimers_110(sensor_mac
|
|
1553
|
+
config_set_clear_probe_uptimers_110(sensor_mac){
|
|
1508
1554
|
console.log('config_set_clear_probe_uptimers_110');
|
|
1509
|
-
var packet = [244, 79, 0, 0, 80,
|
|
1555
|
+
var packet = [244, 79, 0, 0, 80, 75];
|
|
1510
1556
|
console.log(packet);
|
|
1511
1557
|
return this.config_send(sensor_mac, packet);
|
|
1512
1558
|
}
|
|
@@ -1518,9 +1564,13 @@ module.exports = class WirelessSensor{
|
|
|
1518
1564
|
}
|
|
1519
1565
|
config_set_smart_threshold_110(sensor_mac, value){
|
|
1520
1566
|
console.log('config_set_smart_threshold_110');
|
|
1521
|
-
var packet = [244, 79, 0, 0, 101];
|
|
1522
|
-
|
|
1523
|
-
|
|
1567
|
+
var packet = [244, 79, 0, 0, 101, 78, 1, value];
|
|
1568
|
+
console.log(packet);
|
|
1569
|
+
return this.config_send(sensor_mac, packet);
|
|
1570
|
+
}
|
|
1571
|
+
config_set_smart_threshold_p2_110(sensor_mac, value){
|
|
1572
|
+
console.log('config_set_smart_threshold_p2_110');
|
|
1573
|
+
var packet = [244, 79, 0, 0, 101, 78, 2, value];
|
|
1524
1574
|
console.log(packet);
|
|
1525
1575
|
return this.config_send(sensor_mac, packet);
|
|
1526
1576
|
}
|
|
@@ -1649,24 +1699,6 @@ module.exports = class WirelessSensor{
|
|
|
1649
1699
|
console.log(packet);
|
|
1650
1700
|
return this.config_send(sensor_mac, packet);
|
|
1651
1701
|
}
|
|
1652
|
-
config_set_stop_sampling(sensor_mac){
|
|
1653
|
-
console.log('config_set_stop_sampling');
|
|
1654
|
-
var packet = [244, 37, 0, 2, 5];
|
|
1655
|
-
console.log(packet);
|
|
1656
|
-
return this.config_send(sensor_mac, packet);
|
|
1657
|
-
}
|
|
1658
|
-
config_set_extend_otf_timeout(sensor_mac){
|
|
1659
|
-
console.log('config_set_extend_otf_timeout');
|
|
1660
|
-
var packet = [244, 38, 0, 2, 5];
|
|
1661
|
-
console.log(packet);
|
|
1662
|
-
return this.config_send(sensor_mac, packet);
|
|
1663
|
-
}
|
|
1664
|
-
config_set_end_cfg(sensor_mac){
|
|
1665
|
-
console.log('config_set_end_cfg');
|
|
1666
|
-
var packet = [244, 39, 0, 2, 5];
|
|
1667
|
-
console.log(packet);
|
|
1668
|
-
return this.config_send(sensor_mac, packet);
|
|
1669
|
-
}
|
|
1670
1702
|
config_set_change_otf_interval(sensor_mac, value){
|
|
1671
1703
|
console.log('config_set_change_otf_interval');
|
|
1672
1704
|
var packet = [244, 40, 0, 2, 5];
|
|
@@ -1701,6 +1733,78 @@ module.exports = class WirelessSensor{
|
|
|
1701
1733
|
console.log(packet);
|
|
1702
1734
|
return this.config_send(sensor_mac, packet);
|
|
1703
1735
|
}
|
|
1736
|
+
config_set_rtd_type_39(sensor_mac, value){
|
|
1737
|
+
console.log('config_set_rtd_type_39');
|
|
1738
|
+
var packet = [244, 64, 0, 0, 39, value];
|
|
1739
|
+
console.log(packet);
|
|
1740
|
+
return this.config_send(sensor_mac, packet);
|
|
1741
|
+
}
|
|
1742
|
+
config_set_rtd_range_39(sensor_mac, value){
|
|
1743
|
+
console.log('config_set_rtd_range_39');
|
|
1744
|
+
var packet = [244, 66, 0, 0, 39, value];
|
|
1745
|
+
console.log(packet);
|
|
1746
|
+
return this.config_send(sensor_mac, packet);
|
|
1747
|
+
}
|
|
1748
|
+
config_set_pressure_sensor_fs_ch1_118(sensor_mac, value){
|
|
1749
|
+
console.log('config_set_pressure_sensor_fs_ch1_118');
|
|
1750
|
+
var packet = [244, 64, 0, 0, 26, value];
|
|
1751
|
+
console.log(packet);
|
|
1752
|
+
return this.config_send(sensor_mac, packet);
|
|
1753
|
+
}
|
|
1754
|
+
config_set_pressure_sensor_fs_ch2_118(sensor_mac, value){
|
|
1755
|
+
console.log('config_set_pressure_sensor_fs_ch2_118');
|
|
1756
|
+
var packet = [244, 64, 0, 0, 118, value];
|
|
1757
|
+
console.log(packet);
|
|
1758
|
+
return this.config_send(sensor_mac, packet);
|
|
1759
|
+
}
|
|
1760
|
+
config_set_auto_check_interval_118(sensor_mac, value){
|
|
1761
|
+
console.log('config_set_auto_check_interval_118');
|
|
1762
|
+
var packet = [244, 66, 0, 0, 26];
|
|
1763
|
+
let value_ = int2Bytes((value), 2);
|
|
1764
|
+
packet.push(...value_);
|
|
1765
|
+
console.log(packet);
|
|
1766
|
+
return this.config_send(sensor_mac, packet);
|
|
1767
|
+
}
|
|
1768
|
+
config_set_press_auto_check_percent_118(sensor_mac, value){
|
|
1769
|
+
console.log('config_set_press_auto_check_percent_118');
|
|
1770
|
+
var packet = [244, 68, 0, 0, 26, value];
|
|
1771
|
+
console.log(packet);
|
|
1772
|
+
return this.config_send(sensor_mac, packet);
|
|
1773
|
+
}
|
|
1774
|
+
config_set_temp_auto_check_percent_118(sensor_mac, value){
|
|
1775
|
+
console.log('config_set_temp_auto_check_percent_118');
|
|
1776
|
+
var packet = [244, 70, 0, 0, 26, value];
|
|
1777
|
+
console.log(packet);
|
|
1778
|
+
return this.config_send(sensor_mac, packet);
|
|
1779
|
+
}
|
|
1780
|
+
config_set_raw_length_97(sensor_mac, value){
|
|
1781
|
+
console.log('config_set_raw_length_97');
|
|
1782
|
+
var packet = [244, 67, 0, 0, 0, value];
|
|
1783
|
+
console.log(packet);
|
|
1784
|
+
return this.config_send(sensor_mac, packet);
|
|
1785
|
+
}
|
|
1786
|
+
config_set_raw_timeout_97(sensor_mac, value){
|
|
1787
|
+
console.log('config_set_raw_timeout_97');
|
|
1788
|
+
var packet = [244, 71, 0, 0, 0, value];
|
|
1789
|
+
console.log(packet);
|
|
1790
|
+
return this.config_send(sensor_mac, packet);
|
|
1791
|
+
}
|
|
1792
|
+
config_set_fly_rate_97(sensor_mac, value){
|
|
1793
|
+
console.log('config_set_fly_rate_97');
|
|
1794
|
+
var packet = [244, 73, 0, 0, 0];
|
|
1795
|
+
let value_ = int2Bytes((value), 2);
|
|
1796
|
+
packet.push(...value_);
|
|
1797
|
+
console.log(packet);
|
|
1798
|
+
return this.config_send(sensor_mac, packet);
|
|
1799
|
+
}
|
|
1800
|
+
config_set_boot_up_time_97(sensor_mac, value){
|
|
1801
|
+
console.log('config_set_boot_up_time_97');
|
|
1802
|
+
var packet = [244, 51, 0, 0, 0];
|
|
1803
|
+
let value_ = int2Bytes((value), 2);
|
|
1804
|
+
packet.push(...value_);
|
|
1805
|
+
console.log(packet);
|
|
1806
|
+
return this.config_send(sensor_mac, packet);
|
|
1807
|
+
}
|
|
1704
1808
|
config_get_delay(sensor_mac){
|
|
1705
1809
|
return new Promise((fulfill, reject) => {
|
|
1706
1810
|
this.config_send(sensor_mac, [247, 21, 0, 0, 0]).then((res) => {
|
|
@@ -1923,6 +2027,7 @@ module.exports = class WirelessSensor{
|
|
|
1923
2027
|
function pass(packet){
|
|
1924
2028
|
clearTimeout(tout);
|
|
1925
2029
|
that._emitter.removeListener('config_error-'+sensor_mac, fail);
|
|
2030
|
+
packet.sent = data;
|
|
1926
2031
|
fulfill(packet);
|
|
1927
2032
|
f();
|
|
1928
2033
|
};
|
|
@@ -1972,8 +2077,8 @@ module.exports = class WirelessSensor{
|
|
|
1972
2077
|
}
|
|
1973
2078
|
// var odr;
|
|
1974
2079
|
var odr = payload[8];
|
|
1975
|
-
var device_temp = msbLsb(payload[11], payload[12])/100;
|
|
1976
|
-
var probe_temp = msbLsb(payload[13], payload[14])/100;
|
|
2080
|
+
var device_temp = signInt((msbLsb(payload[11], payload[12])), 16)/100;
|
|
2081
|
+
var probe_temp = signInt((msbLsb(payload[13], payload[14])), 16)/100;
|
|
1977
2082
|
|
|
1978
2083
|
switch(odr){
|
|
1979
2084
|
case 6:
|
|
@@ -2021,7 +2126,8 @@ module.exports = class WirelessSensor{
|
|
|
2021
2126
|
var odr = payload[9];
|
|
2022
2127
|
var en_axis = payload[10] & 7;
|
|
2023
2128
|
var fsr = payload[10] >> 5;
|
|
2024
|
-
|
|
2129
|
+
|
|
2130
|
+
var device_temp = signInt((msbLsb(payload[13], payload[14])), 16)/100;
|
|
2025
2131
|
switch(odr){
|
|
2026
2132
|
case 0:
|
|
2027
2133
|
odr = 4000;
|
|
@@ -2071,7 +2177,7 @@ module.exports = class WirelessSensor{
|
|
|
2071
2177
|
device_temp: device_temp,
|
|
2072
2178
|
}
|
|
2073
2179
|
if(firmware > 0){
|
|
2074
|
-
var probe_temp = msbLsb(payload[15], payload[16])/100;
|
|
2180
|
+
var probe_temp = signInt((msbLsb(payload[15], payload[16])), 16)/100;
|
|
2075
2181
|
globalDevices[deviceAddr].probe_temp = probe_temp;
|
|
2076
2182
|
}
|
|
2077
2183
|
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
@@ -2125,6 +2231,53 @@ module.exports = class WirelessSensor{
|
|
|
2125
2231
|
});
|
|
2126
2232
|
});
|
|
2127
2233
|
}
|
|
2234
|
+
remote_at_send(sensor_mac, parameter, value, opts, ctrl_timeout = 1000){
|
|
2235
|
+
var that = this;
|
|
2236
|
+
return new Promise((fulfill, reject) => {
|
|
2237
|
+
that.queue.add(() => {
|
|
2238
|
+
return new Promise((f, r) => {
|
|
2239
|
+
var failed = false;
|
|
2240
|
+
var retries = 0;
|
|
2241
|
+
var tO;
|
|
2242
|
+
function fail(packet){
|
|
2243
|
+
failed = true;
|
|
2244
|
+
clearTimeout(tO);
|
|
2245
|
+
that._emitter.removeListener('receive_packet-'+sensor_mac, pass);
|
|
2246
|
+
that._emitter.removeListener('transmit_status-'+sensor_mac, pass);
|
|
2247
|
+
reject({
|
|
2248
|
+
err: packet,
|
|
2249
|
+
sent: [sensor_mac, parameter, value]
|
|
2250
|
+
});
|
|
2251
|
+
r();
|
|
2252
|
+
}
|
|
2253
|
+
function pass(packet){
|
|
2254
|
+
if(failed) return;
|
|
2255
|
+
clearTimeout(tO);
|
|
2256
|
+
fulfill(packet);
|
|
2257
|
+
f();
|
|
2258
|
+
};
|
|
2259
|
+
|
|
2260
|
+
function send(){
|
|
2261
|
+
that.send.remote_at_command(mac2bytes(sensor_mac), parameter, value, true).then(function(frame){
|
|
2262
|
+
if(frame.status == 'OK'){
|
|
2263
|
+
pass(frame);
|
|
2264
|
+
}else{
|
|
2265
|
+
tO = setTimeout(() => {
|
|
2266
|
+
if(retries < 0){
|
|
2267
|
+
retries++;
|
|
2268
|
+
send();
|
|
2269
|
+
}else{
|
|
2270
|
+
fail('Remote AT response timeout');
|
|
2271
|
+
}
|
|
2272
|
+
}, ctrl_timeout);
|
|
2273
|
+
}
|
|
2274
|
+
}).catch(fail);
|
|
2275
|
+
}
|
|
2276
|
+
send();
|
|
2277
|
+
});
|
|
2278
|
+
});
|
|
2279
|
+
});
|
|
2280
|
+
}
|
|
2128
2281
|
route_discover(sensor_mac, opts){
|
|
2129
2282
|
var data = [85];
|
|
2130
2283
|
var that = this;
|
|
@@ -2583,10 +2736,9 @@ function sensor_types(parent){
|
|
|
2583
2736
|
parse: (payload, parsed, mac) => {
|
|
2584
2737
|
if(parsed.firmware > 3){
|
|
2585
2738
|
return {
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
total_cycle_count: payload.slice(14, 18).reduce(msbLsb)
|
|
2739
|
+
current_detect: payload[8],
|
|
2740
|
+
total_uptime: payload.slice(9, 13).reduce(msbLsb),
|
|
2741
|
+
total_cycle_count: payload.slice(13, 17).reduce(msbLsb)
|
|
2590
2742
|
};
|
|
2591
2743
|
}else{
|
|
2592
2744
|
return {
|
|
@@ -2836,19 +2988,35 @@ function sensor_types(parent){
|
|
|
2836
2988
|
frame_data.fsr = "+-6.144 V";
|
|
2837
2989
|
break;
|
|
2838
2990
|
}
|
|
2839
|
-
|
|
2840
|
-
|
|
2841
|
-
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
2842
|
-
'fsr':frame_data.fsr,
|
|
2843
|
-
'boot_up_time': frame[17],
|
|
2844
|
-
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
2845
|
-
'machine_values': {
|
|
2991
|
+
if(frame[2]>12){
|
|
2992
|
+
return {
|
|
2846
2993
|
'firmware': frame[2],
|
|
2847
|
-
'report_rate': frame.slice(12, 16),
|
|
2848
|
-
'fsr':
|
|
2994
|
+
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
2995
|
+
'fsr':frame_data.fsr,
|
|
2849
2996
|
'boot_up_time': frame[17],
|
|
2850
|
-
'adc_pin_reading': frame.slice(18, 20),
|
|
2851
|
-
'
|
|
2997
|
+
'adc_pin_reading': frame.slice(18, 20).reduce(msbLsb),
|
|
2998
|
+
'machine_values': {
|
|
2999
|
+
'firmware': frame[2],
|
|
3000
|
+
'report_rate': frame.slice(12, 16),
|
|
3001
|
+
'fsr':frame[16],
|
|
3002
|
+
'boot_up_time': frame[17],
|
|
3003
|
+
'adc_pin_reading': frame.slice(18, 20),
|
|
3004
|
+
'frame': frame
|
|
3005
|
+
}
|
|
3006
|
+
}
|
|
3007
|
+
}else{
|
|
3008
|
+
return {
|
|
3009
|
+
'firmware': frame[2],
|
|
3010
|
+
'report_rate': frame.slice(12, 16).reduce(msbLsb),
|
|
3011
|
+
'fsr':frame_data.fsr,
|
|
3012
|
+
'boot_up_time': frame[17],
|
|
3013
|
+
'machine_values': {
|
|
3014
|
+
'firmware': frame[2],
|
|
3015
|
+
'report_rate': frame.slice(12, 16),
|
|
3016
|
+
'fsr':frame[16],
|
|
3017
|
+
'boot_up_time': frame[17],
|
|
3018
|
+
'frame': frame
|
|
3019
|
+
}
|
|
2852
3020
|
}
|
|
2853
3021
|
}
|
|
2854
3022
|
}
|
|
@@ -3046,19 +3214,55 @@ function sensor_types(parent){
|
|
|
3046
3214
|
}
|
|
3047
3215
|
},
|
|
3048
3216
|
'74': {
|
|
3049
|
-
name: 'Wireless Temp Humidity Pressure Air quality Sensor',
|
|
3050
|
-
parse: (d) => {
|
|
3217
|
+
name: 'Wireless Temp Humidity Pressure Air quality Sensor V2',
|
|
3218
|
+
parse: (d, parsed) => {
|
|
3219
|
+
if(parsed[1] > 1){ // Firmware version
|
|
3220
|
+
return {
|
|
3221
|
+
temperature: signInt(d.slice(0, 2).reduce(msbLsb), 16) / 100,
|
|
3222
|
+
pressure: d.slice(2, 6).reduce(msbLsb) / 100,
|
|
3223
|
+
humidity: d.slice(6, 10).reduce(msbLsb) / 1000,
|
|
3224
|
+
resistance: d.slice(10, 14).reduce(msbLsb),
|
|
3225
|
+
iaq: d.slice(14, 16).reduce(msbLsb),
|
|
3226
|
+
co2_eqv: d.slice(16, 18).reduce(msbLsb),
|
|
3227
|
+
breath_voc: d.slice(18, 22).reduce(msbLsb) / 100,
|
|
3228
|
+
static_iaq: d.slice(22, 26).reduce(msbLsb) / 100,
|
|
3229
|
+
iaq_accuracy: d[26]
|
|
3230
|
+
};
|
|
3231
|
+
}
|
|
3232
|
+
else{
|
|
3233
|
+
return {
|
|
3234
|
+
temperature: signInt(d.slice(0, 2).reduce(msbLsb), 16) / 100,
|
|
3235
|
+
pressure: d.slice(2, 6).reduce(msbLsb) / 100,
|
|
3236
|
+
humidity: d.slice(6, 10).reduce(msbLsb) / 1000,
|
|
3237
|
+
resistance: d.slice(10, 14).reduce(msbLsb),
|
|
3238
|
+
iaq: d.slice(14, 16).reduce(msbLsb),
|
|
3239
|
+
co2_eqv: d.slice(16, 18).reduce(msbLsb),
|
|
3240
|
+
breath_voc: d.slice(18, 22).reduce(msbLsb)/ 100,
|
|
3241
|
+
static_iaq: (d.slice(22, 26).reverse()).reduce(msbLsb)/ 100,
|
|
3242
|
+
// TODO Check if the iaq_accuracy should still be d[27]
|
|
3243
|
+
iaq_accuracy: d[26]
|
|
3244
|
+
};
|
|
3245
|
+
}
|
|
3246
|
+
},
|
|
3247
|
+
'parse_fly': (frame) => {
|
|
3051
3248
|
return {
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3249
|
+
'firmware': frame[2],
|
|
3250
|
+
'calibration_days': frame[12],
|
|
3251
|
+
'sensor_update_rate':frame.slice(13, 15).reduce(msbLsb),
|
|
3252
|
+
'hardware_id_1': frame[15],
|
|
3253
|
+
'hardware_id_2': frame[16],
|
|
3254
|
+
'hardware_id_3': frame[17],
|
|
3255
|
+
'report_rate': frame.slice(18, 22).reduce(msbLsb),
|
|
3256
|
+
'tx_counter': frame.slice(22, 26).reduce(msbLsb),
|
|
3257
|
+
'machine_values': {
|
|
3258
|
+
'firmware': frame[2],
|
|
3259
|
+
'calibration_days': frame[12],
|
|
3260
|
+
'sensor_update_rate':frame.slice(13, 15),
|
|
3261
|
+
'hardware_id': frame.slice(15, 18),
|
|
3262
|
+
'report_rate': frame.slice(18, 22),
|
|
3263
|
+
'tx_counter': frame.slice(22, 26),
|
|
3264
|
+
}
|
|
3265
|
+
}
|
|
3062
3266
|
}
|
|
3063
3267
|
},
|
|
3064
3268
|
'75': {
|
|
@@ -5968,6 +6172,333 @@ function sensor_types(parent){
|
|
|
5968
6172
|
};
|
|
5969
6173
|
}
|
|
5970
6174
|
},
|
|
6175
|
+
'97': {
|
|
6176
|
+
name: 'One channel Dynamic Ultrasound vibration Sensor',
|
|
6177
|
+
parse: (payload, parsed, mac) => {
|
|
6178
|
+
if (payload[8] === 1) { // raw
|
|
6179
|
+
var mode = payload[8];
|
|
6180
|
+
var sampling_frequency = payload.slice(9, 13).reduce(msbLsb);
|
|
6181
|
+
var sensor_index = payload[13];
|
|
6182
|
+
var gain_db = payload[14];
|
|
6183
|
+
var deviceAddr = mac;
|
|
6184
|
+
var expected_packets = payload.slice(15, 17).reduce(msbLsb);
|
|
6185
|
+
var current_packet = payload.slice(17, 19).reduce(msbLsb);
|
|
6186
|
+
var sdata_start = 19;
|
|
6187
|
+
|
|
6188
|
+
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
6189
|
+
// if(expected_packets == 1){
|
|
6190
|
+
// this.build_102_data(payload, deviceAddr, hour, minute, sdata_start, current_packet, firmware);
|
|
6191
|
+
// }
|
|
6192
|
+
|
|
6193
|
+
// if a packet is already stored with the same packet ID,
|
|
6194
|
+
// or if packet ID is 1,
|
|
6195
|
+
// or if current packet ID is not one more than last packet ID
|
|
6196
|
+
if(current_packet == 1 && expected_packets != 1) {
|
|
6197
|
+
if(current_packet in globalDevices[deviceAddr].data || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
|
|
6198
|
+
console.log('bad packet breakdown, deleting stream. Current packet:');
|
|
6199
|
+
console.log(current_packet);
|
|
6200
|
+
console.log('Total Expected Packets:');
|
|
6201
|
+
console.log(expected_packets);
|
|
6202
|
+
// console.log(current_packet in globalDevices[deviceAddr].data && current_packet == 1 && expected_packets != 1);
|
|
6203
|
+
// console.log(current_packet == 1);
|
|
6204
|
+
// console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
|
|
6205
|
+
if(this.hasOwnProperty('failure_no')){
|
|
6206
|
+
this.failure_no = this.failure_no + 1;
|
|
6207
|
+
}
|
|
6208
|
+
else{
|
|
6209
|
+
this.failure_no = 1;
|
|
6210
|
+
}
|
|
6211
|
+
if(this.hasOwnProperty('failure_no')){
|
|
6212
|
+
console.log('####falure no');
|
|
6213
|
+
console.log(this.failure_no);
|
|
6214
|
+
}
|
|
6215
|
+
delete globalDevices[deviceAddr];
|
|
6216
|
+
if(current_packet != 1){
|
|
6217
|
+
return;
|
|
6218
|
+
} else{
|
|
6219
|
+
if(current_packet != 1){
|
|
6220
|
+
console.log('bad packet cleanup');
|
|
6221
|
+
return;
|
|
6222
|
+
}
|
|
6223
|
+
globalDevices[deviceAddr] = {
|
|
6224
|
+
// stream_size: expected_packets,
|
|
6225
|
+
data: {},
|
|
6226
|
+
}
|
|
6227
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
6228
|
+
return;
|
|
6229
|
+
}
|
|
6230
|
+
}
|
|
6231
|
+
}
|
|
6232
|
+
if(expected_packets == 1){
|
|
6233
|
+
if(current_packet != 1){
|
|
6234
|
+
console.log('bad packet cleanup');
|
|
6235
|
+
return;
|
|
6236
|
+
}
|
|
6237
|
+
globalDevices[deviceAddr] = {
|
|
6238
|
+
// stream_size: expected_packets,
|
|
6239
|
+
data: {},
|
|
6240
|
+
}
|
|
6241
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
6242
|
+
//return;
|
|
6243
|
+
} else{
|
|
6244
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
6245
|
+
}
|
|
6246
|
+
if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
|
|
6247
|
+
var raw_data = new Array();
|
|
6248
|
+
for(const packet in globalDevices[deviceAddr].data){
|
|
6249
|
+
raw_data = raw_data.concat(globalDevices[deviceAddr].data[packet]);
|
|
6250
|
+
}
|
|
6251
|
+
var label = 0;
|
|
6252
|
+
// var fft = {
|
|
6253
|
+
// data: new Array()
|
|
6254
|
+
// // test: new Array()
|
|
6255
|
+
// };
|
|
6256
|
+
var fft = new Array();
|
|
6257
|
+
var adc = {};
|
|
6258
|
+
|
|
6259
|
+
for(var i = 0; i < raw_data.length; i+=2){
|
|
6260
|
+
label++;
|
|
6261
|
+
adc[label] = (raw_data[i]<<8)+(raw_data[i+1]);
|
|
6262
|
+
}
|
|
6263
|
+
// var data = globalDevices[deviceAddr];
|
|
6264
|
+
delete globalDevices[deviceAddr];
|
|
6265
|
+
if(this.hasOwnProperty('failure_no')){
|
|
6266
|
+
console.log('####falure no');
|
|
6267
|
+
console.log(this.failure_no);
|
|
6268
|
+
}
|
|
6269
|
+
return{
|
|
6270
|
+
'mode': mode,
|
|
6271
|
+
'sampling_frequency': sampling_frequency,
|
|
6272
|
+
'sensor_index': sensor_index,
|
|
6273
|
+
'gain_db':gain_db,
|
|
6274
|
+
'adc':adc,
|
|
6275
|
+
'raw_data':raw_data
|
|
6276
|
+
}
|
|
6277
|
+
}
|
|
6278
|
+
else{
|
|
6279
|
+
return;
|
|
6280
|
+
}
|
|
6281
|
+
|
|
6282
|
+
}else{
|
|
6283
|
+
if(current_packet != 1){
|
|
6284
|
+
console.log('bad packet cleanup');
|
|
6285
|
+
return;
|
|
6286
|
+
}
|
|
6287
|
+
globalDevices[deviceAddr] = {
|
|
6288
|
+
// stream_size: expected_packets,
|
|
6289
|
+
data: {},
|
|
6290
|
+
}
|
|
6291
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
6292
|
+
return;
|
|
6293
|
+
}
|
|
6294
|
+
}
|
|
6295
|
+
else if(payload[8] === 0){ // processed mode
|
|
6296
|
+
return {
|
|
6297
|
+
mode: payload[8],
|
|
6298
|
+
rms_mv: payload.slice(9, 13).reduce(msbLsb) / 1000,
|
|
6299
|
+
freq_1: payload.slice(13, 15).reduce(msbLsb),
|
|
6300
|
+
freq_2: payload.slice(15, 17).reduce(msbLsb),
|
|
6301
|
+
freq_3: payload.slice(17, 19).reduce(msbLsb),
|
|
6302
|
+
};
|
|
6303
|
+
}
|
|
6304
|
+
|
|
6305
|
+
},
|
|
6306
|
+
'parse_fly': (frame) => {
|
|
6307
|
+
return {
|
|
6308
|
+
'firmware': frame[2],
|
|
6309
|
+
'raw_length': frame[12],
|
|
6310
|
+
'raw_on_request_timeout': frame[13] + " Sec",
|
|
6311
|
+
'fly_rate': frame.slice(14, 16).reduce(msbLsb) + " min",
|
|
6312
|
+
'sensor_gain_db': frame[16] + " dB",
|
|
6313
|
+
'sensor_boot_time': frame[17] + " Sec",
|
|
6314
|
+
'hardware_id_1': frame[18],
|
|
6315
|
+
'hardware_id_2': frame[19],
|
|
6316
|
+
'hardware_id_3': frame[20],
|
|
6317
|
+
'rate': frame.slice(21, 25).reduce(msbLsb),
|
|
6318
|
+
'tx_life_count': frame.slice(25, 29).reduce(msbLsb),
|
|
6319
|
+
'machine_values': {
|
|
6320
|
+
'firmware': frame[2],
|
|
6321
|
+
'raw_lenght': frame[12],
|
|
6322
|
+
'raw_on_request_timeout': frame[13],
|
|
6323
|
+
'fly_rate': frame.slice(14, 16),
|
|
6324
|
+
'sensor_gain_db': frame[16],
|
|
6325
|
+
'sensor_boot_time': frame[17],
|
|
6326
|
+
'hardware_id_1': frame[18],
|
|
6327
|
+
'hardware_id_2': frame[19],
|
|
6328
|
+
'hardware_id_3': frame[20],
|
|
6329
|
+
'rate': frame.slice(21, 25),
|
|
6330
|
+
'tx_life_count': frame.slice(25, 29)
|
|
6331
|
+
}
|
|
6332
|
+
}
|
|
6333
|
+
}
|
|
6334
|
+
},
|
|
6335
|
+
'98': {
|
|
6336
|
+
name: 'Two channel Dynamic Ultrasound vibration Sensor',
|
|
6337
|
+
parse: (payload, parsed, mac) => {
|
|
6338
|
+
if (payload[8] === 1) { // raw
|
|
6339
|
+
var mode = payload[8];
|
|
6340
|
+
var sampling_frequency = payload.slice(9, 13).reduce(msbLsb);
|
|
6341
|
+
var sensor_index = payload[13];
|
|
6342
|
+
var gain_db = payload[14];
|
|
6343
|
+
var deviceAddr = mac;
|
|
6344
|
+
var expected_packets = payload.slice(15, 17).reduce(msbLsb);
|
|
6345
|
+
var current_packet = payload.slice(17, 19).reduce(msbLsb);
|
|
6346
|
+
var sdata_start = 19;
|
|
6347
|
+
|
|
6348
|
+
if(globalDevices.hasOwnProperty(deviceAddr) || expected_packets == 1){
|
|
6349
|
+
// if(expected_packets == 1){
|
|
6350
|
+
// this.build_102_data(payload, deviceAddr, hour, minute, sdata_start, current_packet, firmware);
|
|
6351
|
+
// }
|
|
6352
|
+
|
|
6353
|
+
// if a packet is already stored with the same packet ID,
|
|
6354
|
+
// or if packet ID is 1,
|
|
6355
|
+
// or if current packet ID is not one more than last packet ID
|
|
6356
|
+
if(current_packet == 1 && expected_packets != 1) {
|
|
6357
|
+
if(current_packet in globalDevices[deviceAddr].data || !(((current_packet&127)-1) in globalDevices[deviceAddr].data)) {
|
|
6358
|
+
console.log('bad packet breakdown, deleting stream. Current packet:');
|
|
6359
|
+
console.log(current_packet);
|
|
6360
|
+
console.log('Total Expected Packets:');
|
|
6361
|
+
console.log(expected_packets);
|
|
6362
|
+
// console.log(current_packet in globalDevices[deviceAddr].data && current_packet == 1 && expected_packets != 1);
|
|
6363
|
+
// console.log(current_packet == 1);
|
|
6364
|
+
// console.log(!((current_packet-1) in globalDevices[deviceAddr].data));
|
|
6365
|
+
if(this.hasOwnProperty('failure_no')){
|
|
6366
|
+
this.failure_no = this.failure_no + 1;
|
|
6367
|
+
}
|
|
6368
|
+
else{
|
|
6369
|
+
this.failure_no = 1;
|
|
6370
|
+
}
|
|
6371
|
+
if(this.hasOwnProperty('failure_no')){
|
|
6372
|
+
console.log('####falure no');
|
|
6373
|
+
console.log(this.failure_no);
|
|
6374
|
+
}
|
|
6375
|
+
delete globalDevices[deviceAddr];
|
|
6376
|
+
if(current_packet != 1){
|
|
6377
|
+
return;
|
|
6378
|
+
} else{
|
|
6379
|
+
if(current_packet != 1){
|
|
6380
|
+
console.log('bad packet cleanup');
|
|
6381
|
+
return;
|
|
6382
|
+
}
|
|
6383
|
+
globalDevices[deviceAddr] = {
|
|
6384
|
+
// stream_size: expected_packets,
|
|
6385
|
+
data: {},
|
|
6386
|
+
}
|
|
6387
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
6388
|
+
return;
|
|
6389
|
+
}
|
|
6390
|
+
}
|
|
6391
|
+
}
|
|
6392
|
+
if(expected_packets == 1){
|
|
6393
|
+
if(current_packet != 1){
|
|
6394
|
+
console.log('bad packet cleanup');
|
|
6395
|
+
return;
|
|
6396
|
+
}
|
|
6397
|
+
globalDevices[deviceAddr] = {
|
|
6398
|
+
// stream_size: expected_packets,
|
|
6399
|
+
data: {},
|
|
6400
|
+
}
|
|
6401
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
6402
|
+
//return;
|
|
6403
|
+
} else{
|
|
6404
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
6405
|
+
}
|
|
6406
|
+
if(Object.keys(globalDevices[deviceAddr].data).length == expected_packets){
|
|
6407
|
+
var raw_data = new Array();
|
|
6408
|
+
for(const packet in globalDevices[deviceAddr].data){
|
|
6409
|
+
raw_data = raw_data.concat(globalDevices[deviceAddr].data[packet]);
|
|
6410
|
+
}
|
|
6411
|
+
var label = 0;
|
|
6412
|
+
// var fft = {
|
|
6413
|
+
// data: new Array()
|
|
6414
|
+
// // test: new Array()
|
|
6415
|
+
// };
|
|
6416
|
+
var fft = new Array();
|
|
6417
|
+
var adc = {};
|
|
6418
|
+
|
|
6419
|
+
for(var i = 0; i < raw_data.length; i+=2){
|
|
6420
|
+
label++;
|
|
6421
|
+
adc[label] = (raw_data[i]<<8)+(raw_data[i+1]);
|
|
6422
|
+
}
|
|
6423
|
+
// var data = globalDevices[deviceAddr];
|
|
6424
|
+
delete globalDevices[deviceAddr];
|
|
6425
|
+
if(this.hasOwnProperty('failure_no')){
|
|
6426
|
+
console.log('####falure no');
|
|
6427
|
+
console.log(this.failure_no);
|
|
6428
|
+
}
|
|
6429
|
+
return{
|
|
6430
|
+
'mode': mode,
|
|
6431
|
+
'sampling_frequency': sampling_frequency,
|
|
6432
|
+
'sensor_index': sensor_index,
|
|
6433
|
+
'gain_db':gain_db,
|
|
6434
|
+
'adc':adc,
|
|
6435
|
+
'raw_data':raw_data
|
|
6436
|
+
}
|
|
6437
|
+
}
|
|
6438
|
+
else{
|
|
6439
|
+
return;
|
|
6440
|
+
}
|
|
6441
|
+
|
|
6442
|
+
}else{
|
|
6443
|
+
if(current_packet != 1){
|
|
6444
|
+
console.log('bad packet cleanup');
|
|
6445
|
+
return;
|
|
6446
|
+
}
|
|
6447
|
+
globalDevices[deviceAddr] = {
|
|
6448
|
+
// stream_size: expected_packets,
|
|
6449
|
+
data: {},
|
|
6450
|
+
}
|
|
6451
|
+
globalDevices[deviceAddr].data[current_packet] = payload.slice(sdata_start);
|
|
6452
|
+
return;
|
|
6453
|
+
}
|
|
6454
|
+
}
|
|
6455
|
+
else if(payload[8] === 0){ // processed mode
|
|
6456
|
+
return {
|
|
6457
|
+
mode: payload[8],
|
|
6458
|
+
c1_rms_mv: payload.slice(9, 13).reduce(msbLsb) / 1000,
|
|
6459
|
+
c1_freq_1: payload.slice(13, 15).reduce(msbLsb),
|
|
6460
|
+
c1_freq_2: payload.slice(15, 17).reduce(msbLsb),
|
|
6461
|
+
c1_freq_3: payload.slice(17, 19).reduce(msbLsb),
|
|
6462
|
+
c2_rms_mv: payload.slice(19, 23).reduce(msbLsb) / 1000,
|
|
6463
|
+
c2_freq_1: payload.slice(23, 25).reduce(msbLsb),
|
|
6464
|
+
c2_freq_2: payload.slice(25, 27).reduce(msbLsb),
|
|
6465
|
+
c2_freq_3: payload.slice(27, 30).reduce(msbLsb)
|
|
6466
|
+
};
|
|
6467
|
+
}
|
|
6468
|
+
},
|
|
6469
|
+
'parse_fly': (frame) => {
|
|
6470
|
+
return {
|
|
6471
|
+
'firmware': frame[2],
|
|
6472
|
+
'raw_length': frame[12],
|
|
6473
|
+
'raw_on_request_timeout': frame[13] + " Sec",
|
|
6474
|
+
'fly_rate': frame.slice(14, 16).reduce(msbLsb) + " min",
|
|
6475
|
+
'c1_sensor_gain_db': frame[16] + " dB",
|
|
6476
|
+
'c1_sensor_boot_time': frame[17] + " Sec",
|
|
6477
|
+
'c2_sensor_gain_db': frame[18] + " dB",
|
|
6478
|
+
'c2_sensor_boot_time': frame[19] + " Sec",
|
|
6479
|
+
'hardware_id_1': frame[20],
|
|
6480
|
+
'hardware_id_2': frame[21],
|
|
6481
|
+
'hardware_id_3': frame[22],
|
|
6482
|
+
'rate': frame.slice(23, 27).reduce(msbLsb),
|
|
6483
|
+
'tx_life_count': frame.slice(27, 31).reduce(msbLsb),
|
|
6484
|
+
'machine_values': {
|
|
6485
|
+
'firmware': frame[2],
|
|
6486
|
+
'raw_lenght': frame[12],
|
|
6487
|
+
'raw_on_request_timeout': frame[13],
|
|
6488
|
+
'fly_rate': frame.slice(14, 16),
|
|
6489
|
+
'c1_sensor_gain_db': frame[16],
|
|
6490
|
+
'c1_sensor_boot_time': frame[17],
|
|
6491
|
+
'c2_sensor_gain_db': frame[18],
|
|
6492
|
+
'c2_sensor_boot_time': frame[19],
|
|
6493
|
+
'hardware_id_1': frame[20],
|
|
6494
|
+
'hardware_id_2': frame[21],
|
|
6495
|
+
'hardware_id_3': frame[22],
|
|
6496
|
+
'rate': frame.slice(23, 27),
|
|
6497
|
+
'tx_life_count': frame.slice(27, 31)
|
|
6498
|
+
}
|
|
6499
|
+
}
|
|
6500
|
+
}
|
|
6501
|
+
},
|
|
5971
6502
|
'101':{
|
|
5972
6503
|
name: 'Pro Vibration',
|
|
5973
6504
|
parse: (d, full)=>{
|
|
@@ -6503,6 +7034,7 @@ function sensor_types(parent){
|
|
|
6503
7034
|
z_peak_one_Hz: payload.slice(48, 50).reduce(msbLsb),
|
|
6504
7035
|
z_peak_two_Hz: payload.slice(50, 52).reduce(msbLsb),
|
|
6505
7036
|
z_peak_three_Hz: payload.slice(52, 54).reduce(msbLsb),
|
|
7037
|
+
rpm: payload.slice(54, 56).reduce(msbLsb) / 10
|
|
6506
7038
|
};
|
|
6507
7039
|
}
|
|
6508
7040
|
// else{
|
|
@@ -7169,6 +7701,7 @@ function sensor_types(parent){
|
|
|
7169
7701
|
z1_peak_one_Hz: payload.slice(48, 50).reduce(msbLsb),
|
|
7170
7702
|
z1_peak_two_Hz: payload.slice(50, 52).reduce(msbLsb),
|
|
7171
7703
|
z1_peak_three_Hz: payload.slice(52, 54).reduce(msbLsb),
|
|
7704
|
+
rpm_1: payload.slice(54, 56).reduce(msbLsb) / 10,
|
|
7172
7705
|
|
|
7173
7706
|
s2_odr: odr2,
|
|
7174
7707
|
s2_temperature: signInt(payload.slice(55, 57).reduce(msbLsb), 16) / 100,
|
|
@@ -7195,7 +7728,8 @@ function sensor_types(parent){
|
|
|
7195
7728
|
z2_displacement_mm: payload.slice(91, 93).reduce(msbLsb) / 100,
|
|
7196
7729
|
z2_peak_one_Hz: payload.slice(93, 95).reduce(msbLsb),
|
|
7197
7730
|
z2_peak_two_Hz: payload.slice(95, 97).reduce(msbLsb),
|
|
7198
|
-
z2_peak_three_Hz: payload.slice(97, 99).reduce(msbLsb)
|
|
7731
|
+
z2_peak_three_Hz: payload.slice(97, 99).reduce(msbLsb),
|
|
7732
|
+
rpm_2: payload.slice(99, 101).reduce(msbLsb) / 10
|
|
7199
7733
|
};
|
|
7200
7734
|
}
|
|
7201
7735
|
// else{
|
|
@@ -7919,6 +8453,7 @@ function sensor_types(parent){
|
|
|
7919
8453
|
z_peak_one_Hz: payload.slice(56, 58).reduce(msbLsb),
|
|
7920
8454
|
z_peak_two_Hz: payload.slice(58, 60).reduce(msbLsb),
|
|
7921
8455
|
z_peak_three_Hz: payload.slice(60, 62).reduce(msbLsb),
|
|
8456
|
+
rpm: payload.slice(62, 64).reduce(msbLsb) / 10
|
|
7922
8457
|
};
|
|
7923
8458
|
}
|
|
7924
8459
|
// else{
|
|
@@ -8527,6 +9062,7 @@ function sensor_types(parent){
|
|
|
8527
9062
|
z_peak_one_Hz: payload.slice(48, 50).reduce(msbLsb),
|
|
8528
9063
|
z_peak_two_Hz: payload.slice(50, 52).reduce(msbLsb),
|
|
8529
9064
|
z_peak_three_Hz: payload.slice(52, 54).reduce(msbLsb),
|
|
9065
|
+
rpm: payload.slice(54, 56).reduce(msbLsb) / 10
|
|
8530
9066
|
};
|
|
8531
9067
|
}
|
|
8532
9068
|
// else{
|
|
@@ -8733,7 +9269,93 @@ function sensor_types(parent){
|
|
|
8733
9269
|
}
|
|
8734
9270
|
}
|
|
8735
9271
|
},
|
|
8736
|
-
|
|
9272
|
+
'118': {
|
|
9273
|
+
name: 'Dual Pressure and Temperature Sensor',
|
|
9274
|
+
parse: (d) => {
|
|
9275
|
+
return{
|
|
9276
|
+
pressure_s1: signInt(d.slice(0, 4).reduce(msbLsb)),
|
|
9277
|
+
temperature_s1: signInt(d.slice(4, 6).reduce(msbLsb))/100,
|
|
9278
|
+
pressure_s2: signInt(d.slice(6, 10).reduce(msbLsb)),
|
|
9279
|
+
temperature_s2: signInt(d.slice(10, 12).reduce(msbLsb))/100
|
|
9280
|
+
};
|
|
9281
|
+
},
|
|
9282
|
+
'parse_fly': (frame) => {
|
|
9283
|
+
let psi_1;
|
|
9284
|
+
let psi_2;
|
|
9285
|
+
switch(frame[12]){
|
|
9286
|
+
case 0:
|
|
9287
|
+
psi_1 = "10 PSI"
|
|
9288
|
+
break;
|
|
9289
|
+
case 1:
|
|
9290
|
+
psi_1 = "20 PSI"
|
|
9291
|
+
break;
|
|
9292
|
+
case 2:
|
|
9293
|
+
psi_1 = "100 PSI"
|
|
9294
|
+
break;
|
|
9295
|
+
case 3:
|
|
9296
|
+
psi_1 = "500 PSI"
|
|
9297
|
+
break;
|
|
9298
|
+
case 4:
|
|
9299
|
+
psi_1 = "1000 PSI"
|
|
9300
|
+
break;
|
|
9301
|
+
case 5:
|
|
9302
|
+
psi_1 = "5000 PSI"
|
|
9303
|
+
break;
|
|
9304
|
+
case 6:
|
|
9305
|
+
psi_1 = "10000 PSI"
|
|
9306
|
+
break;
|
|
9307
|
+
}
|
|
9308
|
+
switch(frame[13]){
|
|
9309
|
+
case 0:
|
|
9310
|
+
psi_2 = "10 PSI"
|
|
9311
|
+
break;
|
|
9312
|
+
case 1:
|
|
9313
|
+
psi_2 = "20 PSI"
|
|
9314
|
+
break;
|
|
9315
|
+
case 2:
|
|
9316
|
+
psi_2 = "100 PSI"
|
|
9317
|
+
break;
|
|
9318
|
+
case 3:
|
|
9319
|
+
psi_2 = "500 PSI"
|
|
9320
|
+
break;
|
|
9321
|
+
case 4:
|
|
9322
|
+
psi_2 = "1000 PSI"
|
|
9323
|
+
break;
|
|
9324
|
+
case 5:
|
|
9325
|
+
psi_2 = "5000 PSI"
|
|
9326
|
+
break;
|
|
9327
|
+
case 6:
|
|
9328
|
+
psi_2 = "10000 PSI"
|
|
9329
|
+
break;
|
|
9330
|
+
}
|
|
9331
|
+
return {
|
|
9332
|
+
'firmware': frame[2],
|
|
9333
|
+
'sensor_1_fs': psi_1,
|
|
9334
|
+
'sensor_2_fs': psi_2,
|
|
9335
|
+
'auto_check_interval': frame.slice(14, 16).reduce(msbLsb) + " Sec.",
|
|
9336
|
+
'press_auto_check_percent': frame[17] + " %",
|
|
9337
|
+
'temp_auto_check_percent': frame[17] + " %",
|
|
9338
|
+
'hardware_id_1': frame[18],
|
|
9339
|
+
'hardware_id_2': frame[19],
|
|
9340
|
+
'hardware_id_3': frame[20],
|
|
9341
|
+
'sample_rate': frame.slice(21, 25).reduce(msbLsb) + " Sec.",
|
|
9342
|
+
'tx_life_counter': frame.slice(25, 29).reduce(msbLsb),
|
|
9343
|
+
'machine_values': {
|
|
9344
|
+
'firmware': frame[2],
|
|
9345
|
+
'sensor_1_fs': frame[12],
|
|
9346
|
+
'sensor_2_fs': frame[13],
|
|
9347
|
+
'auto_check_interval': frame.slice(14, 16),
|
|
9348
|
+
'press_auto_check_percent': frame[16],
|
|
9349
|
+
'temp_auto_check_percent': frame[17],
|
|
9350
|
+
'hardware_id_1': frame[18],
|
|
9351
|
+
'hardware_id_2': frame[19],
|
|
9352
|
+
'hardware_id_3': frame[20],
|
|
9353
|
+
'sample_rate': frame.slice(21, 25),
|
|
9354
|
+
'tx_life_counter': frame.slice(25, 29),
|
|
9355
|
+
}
|
|
9356
|
+
}
|
|
9357
|
+
}
|
|
9358
|
+
},
|
|
8737
9359
|
'180': {
|
|
8738
9360
|
name: 'C1D2 One Channel Vibration Plus',
|
|
8739
9361
|
parse: (payload, parsed, mac) => {
|
|
@@ -8770,14 +9392,14 @@ function sensor_types(parent){
|
|
|
8770
9392
|
},
|
|
8771
9393
|
'202': {
|
|
8772
9394
|
name: 'Wireless Weather Station',
|
|
8773
|
-
parse: (
|
|
9395
|
+
parse: (payload, parsed, mac) => {
|
|
8774
9396
|
return {
|
|
8775
|
-
Temp: signInt(
|
|
8776
|
-
Humid: signInt(
|
|
8777
|
-
Pressure: signInt(
|
|
8778
|
-
WindSpd: signInt(
|
|
8779
|
-
WindDir: signInt(
|
|
8780
|
-
|
|
9397
|
+
Temp: signInt(payload.slice(8, 12).reduce(msbLsb), 32) / 100,
|
|
9398
|
+
Humid: signInt(payload.slice(12, 16).reduce(msbLsb), 32) / 100,
|
|
9399
|
+
Pressure: signInt(payload.slice(16, 20).reduce(msbLsb), 32) / 100,
|
|
9400
|
+
WindSpd: signInt(payload.slice(20, 24).reduce(msbLsb),32) / 100,
|
|
9401
|
+
WindDir: signInt(payload.slice(24, 28).reduce(msbLsb),32) / 100,
|
|
9402
|
+
reserve: payload[7]
|
|
8781
9403
|
};
|
|
8782
9404
|
}
|
|
8783
9405
|
},
|
|
@@ -11120,7 +11742,7 @@ function sensor_types(parent){
|
|
|
11120
11742
|
}
|
|
11121
11743
|
},
|
|
11122
11744
|
'539': {
|
|
11123
|
-
name: '
|
|
11745
|
+
name: 'RS485 Modbus Wireless Converter',
|
|
11124
11746
|
parse: (d) => {
|
|
11125
11747
|
return {
|
|
11126
11748
|
subdevice_type: d[0],
|
|
@@ -11148,6 +11770,22 @@ function sensor_types(parent){
|
|
|
11148
11770
|
};
|
|
11149
11771
|
}
|
|
11150
11772
|
},
|
|
11773
|
+
'1010': {
|
|
11774
|
+
name: 'RS232 Wireless Converter',
|
|
11775
|
+
parse: (d) => {
|
|
11776
|
+
return {
|
|
11777
|
+
data: d
|
|
11778
|
+
};
|
|
11779
|
+
},
|
|
11780
|
+
},
|
|
11781
|
+
'1011': {
|
|
11782
|
+
name: 'RS485 Wireless Converter',
|
|
11783
|
+
parse: (d) => {
|
|
11784
|
+
return {
|
|
11785
|
+
data: d
|
|
11786
|
+
};
|
|
11787
|
+
},
|
|
11788
|
+
},
|
|
11151
11789
|
'10000': {
|
|
11152
11790
|
name: '4-Relay',
|
|
11153
11791
|
parse: (d) => {
|