@ncd-io/node-red-enterprise-sensors 1.4.6 → 1.4.7

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.
@@ -13480,279 +13480,6 @@ function sensor_types(parent){
13480
13480
  }
13481
13481
  }
13482
13482
  },
13483
- '119': {
13484
- name: 'Wireless Machine Run Time Hour Meter',
13485
- parse: (d, payload) => {
13486
- let firmware = payload[1];
13487
- if(payload[7] & 2 != 0){
13488
- console.log('Error found');
13489
- // parsed.data = {error: 'Error found, Acclerometer Probe may be unattached'};
13490
- let error = {error: 'Error found, Acclerometer Probe may be unattached'};
13491
- return error;
13492
- }
13493
- let report_type = "Regular";
13494
- switch(d[17]){
13495
- case 0:
13496
- report_type = "Regular";
13497
- break;
13498
- case 1:
13499
- report_type = "Shift end";
13500
- break;
13501
- case 2:
13502
- report_type = "Interrupt";
13503
- break;
13504
- case 3:
13505
- report_type = "Threshold";
13506
- break;
13507
- }
13508
- if ((payload[7] & 4) != 0) {
13509
- return {
13510
- raw_data: "Enabled",
13511
- accelerometer_counter: d.slice(0, 4).reduce(msbLsb),
13512
- accelerometer_uptime: d.slice(4, 8).reduce(msbLsb),
13513
- magnetometer_counter: d.slice(8, 12).reduce(msbLsb),
13514
- magnetometer_uptime: d.slice(12, 16).reduce(msbLsb),
13515
- input_acc: d[16] & 8 ? 1 : 0,
13516
- input_mag: d[16] & 16 ? 1 : 0,
13517
- report_type: report_type,
13518
- rtc: [
13519
- String(d[18]).padStart(2, '0'),
13520
- String(d[19]).padStart(2, '0'),
13521
- String(d[20]).padStart(2, '0')
13522
- ].join(':'),
13523
- 'temperature': d.slice(21, 23).reduce(msbLsb)/100,
13524
- 'accelero_sample_1':{
13525
- x:[signInt(d.slice(23, 25).reduce(msbLsb),16)/100],
13526
- y:[signInt(d.slice(25, 27).reduce(msbLsb),16)/100],
13527
- z:[signInt(d.slice(27, 29).reduce(msbLsb),16)/100]
13528
- },
13529
- 'accelero_sample_2':{
13530
- x:[signInt(d.slice(29, 31).reduce(msbLsb),16)/100],
13531
- y:[signInt(d.slice(31, 33).reduce(msbLsb),16)/100],
13532
- z:[signInt(d.slice(33, 35).reduce(msbLsb),16)/100]
13533
- },
13534
- 'accelero_sample_3':{
13535
- x:[signInt(d.slice(35, 37).reduce(msbLsb),16)/100],
13536
- y:[signInt(d.slice(37, 39).reduce(msbLsb),16)/100],
13537
- z:[signInt(d.slice(39, 41).reduce(msbLsb),16)/100]
13538
- },
13539
- 'accelero_sample_4':{
13540
- x:[signInt(d.slice(41, 43).reduce(msbLsb),16)/100],
13541
- y:[signInt(d.slice(43, 45).reduce(msbLsb),16)/100],
13542
- z:[signInt(d.slice(45, 47).reduce(msbLsb),16)/100]
13543
- },
13544
- 'accelero_sample_5':{
13545
- x:[signInt(d.slice(47, 49).reduce(msbLsb),16)/100],
13546
- y:[signInt(d.slice(49, 51).reduce(msbLsb),16)/100],
13547
- z:[signInt(d.slice(51, 53).reduce(msbLsb),16)/100]
13548
- },
13549
- 'accelero_sample_6':{
13550
- x:[signInt(d.slice(53, 55).reduce(msbLsb),16)/100],
13551
- y:[signInt(d.slice(55, 57).reduce(msbLsb),16)/100],
13552
- z:[signInt(d.slice(57, 59).reduce(msbLsb),16)/100]
13553
- },
13554
- 'accelero_sample_7':{
13555
- x:[signInt(d.slice(59, 61).reduce(msbLsb),16)/100],
13556
- y:[signInt(d.slice(61, 63).reduce(msbLsb),16)/100],
13557
- z:[signInt(d.slice(63, 65).reduce(msbLsb),16)/100]
13558
- },
13559
- 'accelero_sample_8':{
13560
- x:[signInt(d.slice(65, 67).reduce(msbLsb),16)/100],
13561
- y:[signInt(d.slice(67, 69).reduce(msbLsb),16)/100],
13562
- z:[signInt(d.slice(69, 71).reduce(msbLsb),16)/100]
13563
- },
13564
- 'accelero_sample_9':{
13565
- x:[signInt(d.slice(71, 73).reduce(msbLsb),16)/100],
13566
- y:[signInt(d.slice(73, 75).reduce(msbLsb),16)/100],
13567
- z:[signInt(d.slice(75, 77).reduce(msbLsb),16)/100]
13568
- },
13569
- 'accelero_sample_10':{
13570
- x:[signInt(d.slice(77, 79).reduce(msbLsb),16)/100],
13571
- y:[signInt(d.slice(79, 81).reduce(msbLsb),16)/100],
13572
- z:[signInt(d.slice(81, 83).reduce(msbLsb),16)/100]
13573
- }
13574
- };
13575
- }else{
13576
- return {
13577
- raw_data: "Disabled",
13578
- accelerometer_counter: d.slice(0, 4).reduce(msbLsb),
13579
- accelerometer_uptime: d.slice(4, 8).reduce(msbLsb),
13580
- magnetometer_counter: d.slice(8, 12).reduce(msbLsb),
13581
- magnetometer_uptime: d.slice(12, 16).reduce(msbLsb),
13582
- input_acc: d[16] & 8 ? 1 : 0,
13583
- input_mag: d[16] & 16 ? 1 : 0,
13584
- report_type: report_type,
13585
- rtc: [
13586
- String(d[18]).padStart(2, '0'),
13587
- String(d[19]).padStart(2, '0'),
13588
- String(d[20]).padStart(2, '0')
13589
- ].join(':'),
13590
- 'temperature': d.slice(21, 23).reduce(msbLsb)/100
13591
- };
13592
- }
13593
- },
13594
- 'parse_fly': (frame) => {
13595
- let reset_mode = "Disabled";
13596
- switch(frame[35]){
13597
- case 0:
13598
- reset_mode = "Disabled";
13599
- break;
13600
- case 1:
13601
- reset_mode = "Shift Ends";
13602
- break;
13603
- case 2:
13604
- reset_mode = "Timeout";
13605
- break;
13606
- }
13607
- let acc_odr = "10 Hz";
13608
- switch(frame[37]){
13609
- case 0:
13610
- acc_odr = "10 Hz";
13611
- break;
13612
- case 1:
13613
- acc_odr = "20 Hz";
13614
- break;
13615
- case 2:
13616
- acc_odr = "50 Hz";
13617
- break;
13618
- case 3:
13619
- acc_odr = "100 Hz";
13620
- break;
13621
- case 4:
13622
- acc_odr = "200 Hz";
13623
- break;
13624
- case 5:
13625
- acc_odr = "400 Hz";
13626
- break;
13627
- }
13628
- let rtc_sampling_interval = "5 sec";
13629
- switch(frame[36]){
13630
- case 0:
13631
- rtc_sampling_interval = "1 min";
13632
- break;
13633
- case 1:
13634
- rtc_sampling_interval = "5 min";
13635
- break;
13636
- case 2:
13637
- rtc_sampling_interval = "15 min";
13638
- break;
13639
- case 3:
13640
- rtc_sampling_interval = "30 min";
13641
- break;
13642
- case 4:
13643
- rtc_sampling_interval = "1 hour";
13644
- break;
13645
- case 5:
13646
- rtc_sampling_interval = "2 hours";
13647
- break;
13648
- case 6:
13649
- rtc_sampling_interval = "3 hours";
13650
- break;
13651
- case 7:
13652
- rtc_sampling_interval = "6 hours";
13653
- break;
13654
- case 8:
13655
- rtc_sampling_interval = "12 hours";
13656
- break;
13657
- case 9:
13658
- rtc_sampling_interval = "5 sec";
13659
- break;
13660
- case 10:
13661
- rtc_sampling_interval = "10 sec";
13662
- break;
13663
- case 11:
13664
- rtc_sampling_interval = "15 sec";
13665
- break;
13666
- case 12:
13667
- rtc_sampling_interval = "30 sec";
13668
- break;
13669
- }
13670
- let acc_enabled_axis = 'Disabled All';
13671
- switch(frame[40]){
13672
- case 0:
13673
- acc_enabled_axis = 'Disabled All';
13674
- break;
13675
- case 1:
13676
- acc_enabled_axis = 'x axis';
13677
- break;
13678
- case 2:
13679
- acc_enabled_axis = 'y axis';
13680
- break;
13681
- case 3:
13682
- acc_enabled_axis = 'z axis';
13683
- break;
13684
- case 7:
13685
- acc_enabled_axis = 'all axis';
13686
- break;
13687
- }
13688
- return {
13689
- 'firmware': frame[2],
13690
- 'accelerometer_threshold': (frame[16]* 32) + " mg",
13691
- 'debouncing_timeout': frame.slice(17, 19).reduce(msbLsb) + " msec",
13692
- 'accelero_state': frame[19]? "Enabled": "Disabled",
13693
- 'counter_threshold': frame.slice(20, 24).reduce(msbLsb),
13694
- 'trasnmit_on_change_status': frame[24]? "Enabled": "Disabled",
13695
- 'Shift_end_1': [
13696
- String(frame[25]).padStart(2, '0'),
13697
- String(frame[26]).padStart(2, '0')
13698
- ].join(':'),
13699
- 'Shift_end_2': [
13700
- String(frame[27]).padStart(2, '0'),
13701
- String(frame[28]).padStart(2, '0')
13702
- ].join(':'),
13703
- 'Shift_end_3': [
13704
- String(frame[29]).padStart(2, '0'),
13705
- String(frame[30]).padStart(2, '0')
13706
- ].join(':'),
13707
- 'Shift_end_4': [
13708
- String(frame[31]).padStart(2, '0'),
13709
- String(frame[32]).padStart(2, '0')
13710
- ].join(':'),
13711
- 'reset_timeout': frame.slice(33, 35).reduce(msbLsb) + " min",
13712
- 'counter_reset_mode': reset_mode,
13713
- 'sampling_interval': rtc_sampling_interval,
13714
- 'acc_odr': acc_odr,
13715
- 'interrupt_timeout': frame.slice(38, 40).reduce(msbLsb) + ' msec',
13716
- 'acc_enabled_axis': acc_enabled_axis,
13717
- 'hardware_id': frame.slice(41, 44),
13718
- 'report_rate': frame.slice(44, 48).reduce(msbLsb) + " sec",
13719
- 'tx_life_counter': frame.slice(48, 52).reduce(msbLsb),
13720
- 'machine_values': {
13721
- 'firmware': frame[2],
13722
- 'accelerometer_threshold': (frame[16]* 32),
13723
- 'debouncing_timeout': frame.slice(17, 19),
13724
- 'accelero_state': frame[19],
13725
- 'counter_threshold': frame.slice(20, 24),
13726
- 'trasnmit_on_change_status': frame[24],
13727
- 'Shift_end_1': [
13728
- frame[25],
13729
- frame[26]
13730
- ],
13731
- 'Shift_end_2': [
13732
- frame[27],
13733
- frame[28]
13734
- ],
13735
- 'Shift_end_3': [
13736
- frame[29],
13737
- frame[30]
13738
- ],
13739
- 'Shift_end_4': [
13740
- frame[31],
13741
- frame[32]
13742
- ],
13743
- 'reset_timeout': frame.slice(33, 35),
13744
- 'counter_reset_mode': frame[35],
13745
- 'sampling_interval': frame[36],
13746
- 'acc_odr': frame[37],
13747
- 'interrupt_timeout': frame.slice(38, 40),
13748
- 'acc_enabled_axis': frame[40],
13749
- 'hardware_id': frame.slice(41, 44),
13750
- 'report_rate': frame.slice(44, 48),
13751
- 'tx_life_counter': frame.slice(48, 52)
13752
- }
13753
- }
13754
- }
13755
- },
13756
13483
  '120': {
13757
13484
  name: 'Wireless H2S Sensor',
13758
13485
  parse: (d) => {
@@ -14508,9 +14235,43 @@ function sensor_types(parent){
14508
14235
  }
14509
14236
  }
14510
14237
  },
14511
- '124': {
14512
- name: 'Wireless EH Flow Sensor',
14238
+ '180': {
14239
+ name: 'C1D2 One Channel Vibration Plus',
14240
+ parse: (payload, parsed, mac) => {
14241
+ return parent.sensor_types[80].parse(payload, parsed, mac);
14242
+ },
14243
+ parse_fly: (payload, parsed, mac) => {
14244
+ return parent.sensor_types[80].parse_fly(payload, parsed, mac);
14245
+ },
14246
+ },
14247
+ '181': {
14248
+ name: 'C1D2 Two Channel Vibration Plus',
14249
+ parse: (payload, parsed, mac) => {
14250
+ return parent.sensor_types[81].parse(payload, parsed, mac);
14251
+ },
14252
+ parse_fly: (payload, parsed, mac) => {
14253
+ return parent.sensor_types[81].parse_fly(payload, parsed, mac);
14254
+ },
14255
+ },
14256
+ '200': {
14257
+ name: '4-20mA Pass Through',
14513
14258
  parse: (d) => {
14259
+ var adc1 = signInt(d.slice(0, 2).reduce(msbLsb));
14260
+ var adc2 = signInt(d.slice(2, 4).reduce(msbLsb));
14261
+ var dac1 = signInt(d.slice(4, 6).reduce(msbLsb));
14262
+ return {
14263
+ adc1: adc1,
14264
+ adc2: adc2,
14265
+ dac1: dac1,
14266
+ mA1: parseFloat((adc1/100.00).toFixed(2)),
14267
+ raw_adc: adc2,
14268
+ raw_dac: dac1
14269
+ };
14270
+ }
14271
+ },
14272
+ '202': {
14273
+ name: 'Wireless Weather Station',
14274
+ parse: (payload, parsed, mac) => {
14514
14275
  return {
14515
14276
  Temp: signInt(payload.slice(8, 12).reduce(msbLsb), 32) / 100,
14516
14277
  Humid: signInt(payload.slice(12, 16).reduce(msbLsb), 32) / 100,
@@ -14619,587 +14380,6 @@ function sensor_types(parent){
14619
14380
  }
14620
14381
  }
14621
14382
  },
14622
- '270': {
14623
- name: 'Custom Salinity DO sensor',
14624
- parse: (d) => {
14625
- return {
14626
- sensor_status: d[0],
14627
- do_temperature_1: d.slice(1, 3).reduce(msbLsb) / 100,
14628
- do_temperature_2: d.slice(3, 5).reduce(msbLsb) / 100,
14629
- do_temperature_3: d.slice(5, 7).reduce(msbLsb) / 100,
14630
- do_temperature_4: d.slice(7, 9).reduce(msbLsb) / 100,
14631
- ec_temperature_1: d.slice(9, 11).reduce(msbLsb) / 100,
14632
- ec_temperature_2: d.slice(11, 13).reduce(msbLsb) / 100,
14633
- ec_temperature_3: d.slice(13, 15).reduce(msbLsb) / 100,
14634
- ec_temperature_4: d.slice(15, 17).reduce(msbLsb) / 100,
14635
- do_saturation_perc_1: d.slice(17, 19).reduce(msbLsb) / 100,
14636
- do_saturation_perc_2: d.slice(19, 21).reduce(msbLsb) / 100,
14637
- do_saturation_perc_3: d.slice(21, 23).reduce(msbLsb) / 100,
14638
- do_saturation_perc_4: d.slice(23, 25).reduce(msbLsb) / 100,
14639
- do_ppm_1: d.slice(25, 27).reduce(msbLsb) / 100,
14640
- do_ppm_2: d.slice(27, 29).reduce(msbLsb) / 100,
14641
- do_ppm_3: d.slice(29, 31).reduce(msbLsb) / 100,
14642
- do_ppm_4: d.slice(31, 33).reduce(msbLsb) / 100,
14643
- do_mgl_1: d.slice(33, 35).reduce(msbLsb) / 100,
14644
- do_mgl_2: d.slice(35, 37).reduce(msbLsb) / 100,
14645
- do_mgl_3: d.slice(37, 39).reduce(msbLsb) / 100,
14646
- do_mgl_4: d.slice(39, 41).reduce(msbLsb) / 100,
14647
- ec_conductivity_1: d.slice(41, 43).reduce(msbLsb) / 100,
14648
- ec_conductivity_2: d.slice(43, 45).reduce(msbLsb) / 100,
14649
- ec_conductivity_3: d.slice(45, 47).reduce(msbLsb) / 100,
14650
- ec_conductivity_4: d.slice(47, 49).reduce(msbLsb) / 100,
14651
- ec_salinity_ppt_1: d.slice(49, 57).reduce(msbLsb) / 100,
14652
- ec_salinity_ppt_2: d.slice(57, 65).reduce(msbLsb) / 100,
14653
- ec_salinity_ppt_3: d.slice(65, 73).reduce(msbLsb) / 100,
14654
- ec_salinity_ppt_4: d.slice(73, 81).reduce(msbLsb) / 100,
14655
- ec_tds_1: d.slice(81, 85).reduce(msbLsb) / 100,
14656
- ec_tds_2: d.slice(85, 89).reduce(msbLsb) / 100,
14657
- ec_tds_3: d.slice(89, 93).reduce(msbLsb) / 100,
14658
- ec_tds_4: d.slice(93, 97).reduce(msbLsb) / 100
14659
- };
14660
- },
14661
- 'parse_fly': (frame) => {
14662
- let frame_data = {};
14663
- switch(frame[12]){
14664
- case 0:
14665
- frame_data.flow_unit = 'cm³/s';
14666
- break;
14667
- case 1:
14668
- frame_data.flow_unit = 'cm³/min';
14669
- break;
14670
- case 2:
14671
- frame_data.flow_unit = 'cm³/h';
14672
- break;
14673
- case 3:
14674
- frame_data.flow_unit = 'cm³/d';
14675
- break;
14676
- case 4:
14677
- frame_data.flow_unit = 'dm³/s';
14678
- break;
14679
- case 5:
14680
- frame_data.flow_unit = 'dm³/min';
14681
- break;
14682
- case 6:
14683
- frame_data.flow_unit = 'dm³/h';
14684
- break;
14685
- case 7:
14686
- frame_data.flow_unit = 'dm³/d';
14687
- break;
14688
- case 8:
14689
- frame_data.flow_unit = 'm³/s';
14690
- break;
14691
- case 9:
14692
- frame_data.flow_unit = 'm³/min';
14693
- break;
14694
- case 10:
14695
- frame_data.flow_unit = 'm³/h';
14696
- break;
14697
- case 11:
14698
- frame_data.flow_unit = 'm³/d';
14699
- break;
14700
- case 12:
14701
- frame_data.flow_unit = 'ml/s';
14702
- break;
14703
- case 13:
14704
- frame_data.flow_unit = 'ml/min';
14705
- break;
14706
- case 14:
14707
- frame_data.flow_unit = 'ml/h';
14708
- break;
14709
- case 15:
14710
- frame_data.flow_unit = 'ml/d';
14711
- break;
14712
- case 16:
14713
- unitStrframe_data.flow_uniting = 'l/s';
14714
- break;
14715
- case 17:
14716
- frame_data.flow_unit = 'l/min';
14717
- break;
14718
- case 18:
14719
- frame_data.flow_unit = 'l/h';
14720
- break;
14721
- case 19:
14722
- frame_data.flow_unit = 'l/d';
14723
- break;
14724
- case 20:
14725
- frame_data.flow_unit = 'hl/s';
14726
- break;
14727
- case 21:
14728
- frame_data.flow_unit = 'hl/min';
14729
- break;
14730
- case 22:
14731
- frame_data.flow_unit = 'hl/h';
14732
- break;
14733
- case 23:
14734
- frame_data.flow_unit = 'hl/d';
14735
- break;
14736
- case 24:
14737
- frame_data.flow_unit = 'Ml/s';
14738
- break;
14739
- case 25:
14740
- frame_data.flow_unit = 'Ml/min';
14741
- break;
14742
- case 26:
14743
- frame_data.flow_unit = 'Ml/h';
14744
- break;
14745
- case 27:
14746
- frame_data.flow_unit = 'Ml/d';
14747
- break;
14748
-
14749
- // US Customary & Imperial Flow Rates
14750
- case 32:
14751
- frame_data.flow_unit = 'af/s';
14752
- break;
14753
- case 33:
14754
- frame_data.flow_unit = 'af/min';
14755
- break;
14756
- case 34:
14757
- frame_data.flow_unit = 'af/h';
14758
- break;
14759
- case 35:
14760
- frame_data.flow_unit = 'af/d';
14761
- break;
14762
- case 36:
14763
- frame_data.flow_unit = 'ft³/s';
14764
- break;
14765
- case 37:
14766
- frame_data.flow_unit = 'ft³/min';
14767
- break;
14768
- case 38:
14769
- frame_data.flow_unit = 'ft³/h';
14770
- break;
14771
- case 39:
14772
- frame_data.flow_unit = 'ft³/d';
14773
- break;
14774
- case 40:
14775
- frame_data.flow_unit = 'fl oz/s (us)';
14776
- break;
14777
- case 41:
14778
- frame_data.flow_unit = 'fl oz/min (us)';
14779
- break;
14780
- case 42:
14781
- frame_data.flow_unit = 'fl oz/h (us)';
14782
- break;
14783
- case 43:
14784
- frame_data.flow_unit = 'fl oz/d (us)';
14785
- break;
14786
- case 44:
14787
- frame_data.flow_unit = 'gal/s (us)';
14788
- break;
14789
- case 45:
14790
- frame_data.flow_unit = 'gal/min (us)';
14791
- break;
14792
- case 46:
14793
- frame_data.flow_unit = 'gal/h (us)';
14794
- break;
14795
- case 47:
14796
- frame_data.flow_unit = 'gal/d (us)';
14797
- break;
14798
- case 48:
14799
- frame_data.flow_unit = 'Mgal/s (us)';
14800
- break;
14801
- case 49:
14802
- frame_data.flow_unit = 'Mgal/min (us)';
14803
- break;
14804
- case 50:
14805
- frame_data.flow_unit = 'Mgal/h (us)';
14806
- break;
14807
- case 51:
14808
- frame_data.flow_unit = 'Mgal/d (us)';
14809
- break;
14810
- case 52:
14811
- frame_data.flow_unit = 'bbl/s (us;liq.)';
14812
- break;
14813
- case 53:
14814
- frame_data.flow_unit = 'bbl/min (us;liq.)';
14815
- break;
14816
- case 54:
14817
- frame_data.flow_unit = 'bbl/h (us;liq.)';
14818
- break;
14819
- case 55:
14820
- frame_data.flow_unit = 'bbl/d (us;liq.)';
14821
- break;
14822
- case 56:
14823
- frame_data.flow_unit = 'bbl/s (us;beer)';
14824
- break;
14825
- case 57:
14826
- frame_data.flow_unit = 'bbl/min (us;beer)';
14827
- break;
14828
- case 58:
14829
- frame_data.flow_unit = 'bbl/h (us;beer)';
14830
- break;
14831
- case 59:
14832
- frame_data.flow_unit = 'bbl/d (us;beer)';
14833
- break;
14834
- case 60:
14835
- frame_data.flow_unit = 'bbl/s (us;oil)';
14836
- break;
14837
- case 61:
14838
- frame_data.flow_unit = 'bbl/min (us;oil)';
14839
- break;
14840
- case 62:
14841
- frame_data.flow_unit = 'bbl/h (us;oil)';
14842
- break;
14843
- case 63:
14844
- frame_data.flow_unit = 'bbl/d (us;oil)';
14845
- break;
14846
- case 64:
14847
- frame_data.flow_unit = 'bbl/s (us;tank)';
14848
- break;
14849
- case 65:
14850
- frame_data.flow_unit = 'bbl/min (us;tank)';
14851
- break;
14852
- case 66:
14853
- frame_data.flow_unit = 'bbl/h (us;tank)';
14854
- break;
14855
- case 67:
14856
- frame_data.flow_unit = 'bbl/d (us;tank)';
14857
- break;
14858
- case 68:
14859
- frame_data.flow_unit = 'gal/s (imp)';
14860
- break;
14861
- case 69:
14862
- frame_data.flow_unit = 'gal/min (imp)';
14863
- break;
14864
- case 70:
14865
- frame_data.flow_unit = 'gal/h (imp)';
14866
- break;
14867
- case 71:
14868
- frame_data.flow_unit = 'gal/d (imp)';
14869
- break;
14870
- case 72:
14871
- frame_data.flow_unit = 'Mgal/s (imp)';
14872
- break;
14873
- case 73:
14874
- frame_data.flow_unit = 'Mgal/min (imp)';
14875
- break;
14876
- case 74:
14877
- frame_data.flow_unit = 'Mgal/h (imp)';
14878
- break;
14879
- case 75:
14880
- frame_data.flow_unit = 'Mgal/d (imp)';
14881
- break;
14882
- case 76:
14883
- frame_data.flow_unit = 'bbl/s (imp;beer)';
14884
- break;
14885
- case 77:
14886
- frame_data.flow_unit = 'bbl/min (imp;beer)';
14887
- break;
14888
- case 78:
14889
- frame_data.flow_unit = 'bbl/h (imp;beer)';
14890
- break;
14891
- case 79:
14892
- frame_data.flow_unit = 'bbl/d (imp;beer)';
14893
- break;
14894
- case 80:
14895
- frame_data.flow_unit = 'bbl/s (imp;oil)';
14896
- break;
14897
- case 81:
14898
- frame_data.flow_unit = 'bbl/min (imp;oil)';
14899
- break;
14900
- case 82:
14901
- frame_data.flow_unit = 'bbl/h (imp;oil)';
14902
- break;
14903
- case 83:
14904
- frame_data.flow_unit = 'bbl/d (imp;oil)';
14905
- break;
14906
- case 88:
14907
- frame_data.flow_unit = 'kgal/s (us)';
14908
- break;
14909
- case 89:
14910
- frame_data.flow_unit = 'kgal/min (us)';
14911
- break;
14912
- case 90:
14913
- frame_data.flow_unit = 'kgal/h (us)';
14914
- break;
14915
- case 91:
14916
- frame_data.flow_unit = 'kgal/d (us)';
14917
- break;
14918
- case 92:
14919
- frame_data.flow_unit = 'MMft³/s';
14920
- break;
14921
- case 93:
14922
- frame_data.flow_unit = 'MMft³/min';
14923
- break;
14924
- case 94:
14925
- frame_data.flow_unit = 'MMft³/h';
14926
- break;
14927
- case 96:
14928
- frame_data.flow_unit = 'Mft³/d';
14929
- break;
14930
- }
14931
- switch(frame[13]){
14932
- case 0:
14933
- frame_data.pressure_unit = 'bar';
14934
- break;
14935
- case 1:
14936
- frame_data.pressure_unit = 'psi a';
14937
- break;
14938
- case 2:
14939
- frame_data.pressure_unit = 'bar g';
14940
- break;
14941
- case 3:
14942
- frame_data.pressure_unit = 'psi g';
14943
- break;
14944
- case 4:
14945
- frame_data.pressure_unit = 'Pa a';
14946
- break;
14947
- case 5:
14948
- frame_data.pressure_unit = 'kPa a';
14949
- break;
14950
- case 6:
14951
- frame_data.pressure_unit = 'MPa a';
14952
- break;
14953
- case 7:
14954
- frame_data.pressure_unit = 'Pa g';
14955
- break;
14956
- case 8:
14957
- frame_data.pressure_unit = 'kPa g';
14958
- break;
14959
- case 9:
14960
- frame_data.pressure_unit = 'MPa g';
14961
- break;
14962
- }
14963
- switch(frame[14]){
14964
- case 1:
14965
- frame_data.conductivity_unit = 'MS/m';
14966
- break;
14967
- case 2:
14968
- frame_data.conductivity_unit = 'kS/m';
14969
- break;
14970
- case 3:
14971
- frame_data.conductivity_unit = 'S/m';
14972
- break;
14973
- case 4:
14974
- frame_data.conductivity_unit = 'S/cm';
14975
- break;
14976
- case 5:
14977
- frame_data.conductivity_unit = 'mS/m';
14978
- break;
14979
- case 6:
14980
- frame_data.conductivity_unit = 'mS/cm';
14981
- break;
14982
- case 7:
14983
- frame_data.conductivity_unit = 'μS/m';
14984
- break;
14985
- case 8:
14986
- frame_data.conductivity_unit = 'μS/cm';
14987
- break;
14988
- case 9:
14989
- frame_data.conductivity_unit = 'μS/mm';
14990
- break;
14991
- case 10:
14992
- frame_data.conductivity_unit = 'nS/cm';
14993
- break;
14994
- }
14995
-
14996
- frame_data.totalizer_unit = [];
14997
-
14998
- for (let index = 0; index < 3; index++) {
14999
- switch(frame[index + 15]){
15000
- case 0:
15001
- frame_data.totalizer_unit[index] = 'cm³';
15002
- break;
15003
- case 1:
15004
- frame_data.totalizer_unit[index] = 'dm³';
15005
- break;
15006
- case 2:
15007
- frame_data.totalizer_unit[index] = 'm³';
15008
- break;
15009
- case 3:
15010
- frame_data.totalizer_unit[index] = 'ml';
15011
- break;
15012
- case 4:
15013
- frame_data.totalizer_unit[index] = 'l';
15014
- break;
15015
- case 5:
15016
- frame_data.totalizer_unit[index] = 'hl';
15017
- break;
15018
- case 6:
15019
- frame_data.totalizer_unit[index] = 'Ml Mega';
15020
- break;
15021
- case 8:
15022
- frame_data.totalizer_unit[index] = 'af';
15023
- break;
15024
- case 9:
15025
- frame_data.totalizer_unit[index] = 'ft³';
15026
- break;
15027
- case 10:
15028
- frame_data.totalizer_unit[index] = 'fl oz (us)';
15029
- break;
15030
- case 11:
15031
- frame_data.totalizer_unit[index] = 'gal (us)';
15032
- break;
15033
- case 12:
15034
- frame_data.totalizer_unit[index] = 'Mgal (us)';
15035
- break;
15036
- case 13:
15037
- frame_data.totalizer_unit[index] = 'bbl (us;liq.)';
15038
- break;
15039
- case 14:
15040
- frame_data.totalizer_unit[index] = 'bbl (us;beer)';
15041
- break;
15042
- case 15:
15043
- frame_data.totalizer_unit[index] = 'bbl (us;oil)';
15044
- break;
15045
- case 16:
15046
- frame_data.totalizer_unit[index] = 'bbl (us;tank)';
15047
- break;
15048
- case 17:
15049
- frame_data.totalizer_unit[index] = 'gal (imp)';
15050
- break;
15051
- case 18:
15052
- frame_data.totalizer_unit[index] = 'Mgal (imp)';
15053
- break;
15054
- case 19:
15055
- frame_data.totalizer_unit[index] = 'bbl (imp;beer)';
15056
- break;
15057
- case 20:
15058
- frame_data.totalizer_unit[index] = 'bbl (imp;oil)';
15059
- break;
15060
- case 22:
15061
- frame_data.totalizer_unit[index] = 'kgal (us)';
15062
- break;
15063
- case 23:
15064
- frame_data.totalizer_unit[index] = 'Mft³';
15065
- break;
15066
- }
15067
-
15068
- }
15069
- return {
15070
- 'firmware': frame[2],
15071
- 'flow_unit': frame_data.flow_unit,
15072
- 'pressure_unit': frame_data.pressure_unit,
15073
- 'conductivity_unit': frame_data.conductivity_unit,
15074
- 'totalizer_1_unit': frame_data.totalizer_unit[0],
15075
- 'totalizer_2_unit': frame_data.totalizer_unit[1],
15076
- 'totalizer_3_unit': frame_data.totalizer_unit[2],
15077
- 'hardware_id': frame.slice(18, 21),
15078
- 'sample_rate': frame.slice(21, 25).reduce(msbLsb),
15079
- 'tx_life_counter': frame.slice(25, 29).reduce(msbLsb),
15080
- 'machine_values': {
15081
- 'firmware': frame[2],
15082
- 'flow_unit': frame[12],
15083
- 'pressure_unit': frame[13],
15084
- 'conductivity_unit': frame[14],
15085
- 'totalizer_1_unit': frame[15],
15086
- 'totalizer_2_unit': frame[16],
15087
- 'totalizer_3_unit': frame[17],
15088
- 'hardware_id': frame.slice(18, 21),
15089
- 'sample_rate': frame.slice(21, 25),
15090
- 'tx_life_counter': frame.slice(25, 29)
15091
- }
15092
- }
15093
- }
15094
- },
15095
- '180': {
15096
- name: 'C1D2 One Channel Vibration Plus',
15097
- parse: (payload, parsed, mac) => {
15098
- return parent.sensor_types[80].parse(payload, parsed, mac);
15099
- },
15100
- parse_fly: (payload, parsed, mac) => {
15101
- return parent.sensor_types[80].parse_fly(payload, parsed, mac);
15102
- },
15103
- },
15104
- '181': {
15105
- name: 'C1D2 Two Channel Vibration Plus',
15106
- parse: (payload, parsed, mac) => {
15107
- return parent.sensor_types[81].parse(payload, parsed, mac);
15108
- },
15109
- parse_fly: (payload, parsed, mac) => {
15110
- return parent.sensor_types[81].parse_fly(payload, parsed, mac);
15111
- },
15112
- },
15113
- '200': {
15114
- name: '4-20mA Pass Through',
15115
- parse: (d) => {
15116
- var adc1 = signInt(d.slice(0, 2).reduce(msbLsb));
15117
- var adc2 = signInt(d.slice(2, 4).reduce(msbLsb));
15118
- var dac1 = signInt(d.slice(4, 6).reduce(msbLsb));
15119
- return {
15120
- adc1: adc1,
15121
- adc2: adc2,
15122
- dac1: dac1,
15123
- mA1: parseFloat((adc1/100.00).toFixed(2)),
15124
- raw_adc: adc2,
15125
- raw_dac: dac1
15126
- };
15127
- }
15128
- },
15129
- '202': {
15130
- name: 'Wireless Weather Station',
15131
- parse: (payload, parsed, mac) => {
15132
- return {
15133
- Temp: signInt(payload.slice(8, 12).reduce(msbLsb), 32) / 100,
15134
- Humid: signInt(payload.slice(12, 16).reduce(msbLsb), 32) / 100,
15135
- Pressure: signInt(payload.slice(16, 20).reduce(msbLsb), 32) / 100,
15136
- WindSpd: signInt(payload.slice(20, 24).reduce(msbLsb),32) / 100,
15137
- WindDir: signInt(payload.slice(24, 28).reduce(msbLsb),32) / 100,
15138
- reserve: payload[7]
15139
- };
15140
- }
15141
- },
15142
- '211': {
15143
- name: 'DO and Flow Sensor',
15144
- parse: (payload, parsed, mac) => {
15145
- if(payload[0] == 0){ // regular
15146
- return {
15147
- msg_type: 'regular',
15148
- temperature: signInt(payload.slice(1, 3).reduce(msbLsb), 16),
15149
- oxygen_saturation_percent: payload.slice(3, 7).reduce(msbLsb),
15150
- oxygen_ppm: payload.slice(7, 11).reduce(msbLsb),
15151
- oxygen_mg_l: payload.slice(11, 15).reduce(msbLsb)
15152
- };
15153
- }
15154
- else{ // theshold
15155
- let solenoid_status = payload[2];
15156
- if(solenoid_status == 1){ // Solenoid On
15157
- return {
15158
- msg_type: 'threshold',
15159
- solenoid_number: payload[1],
15160
- solenoid_status: 'on',
15161
- temperature: signInt(payload.slice(3, 5).reduce(msbLsb), 16),
15162
- oxygen_saturation_percent: payload.slice(5, 9).reduce(msbLsb),
15163
- oxygen_ppm: payload.slice(9, 13).reduce(msbLsb),
15164
- oxygen_mg_l: payload.slice(13, 17).reduce(msbLsb),
15165
- flow_rate: payload.slice(17, 21).reduce(msbLsb)
15166
- };
15167
- } else{ // Solenoid Off
15168
- return {
15169
- msg_type: 'threshold',
15170
- solenoid_number: payload[1],
15171
- solenoid_status: 'off',
15172
- temperature: signInt(payload.slice(3, 5).reduce(msbLsb), 16),
15173
- oxygen_saturation_percent: payload.slice(5, 9).reduce(msbLsb),
15174
- oxygen_ppm: payload.slice(9, 13).reduce(msbLsb),
15175
- oxygen_mg_l: payload.slice(13, 17).reduce(msbLsb)
15176
- };
15177
- }
15178
- }
15179
- },
15180
- 'parse_fly': (frame) => {
15181
- return {
15182
- 'firmware': frame[2],
15183
- 'hardware_id': frame.slice(12, 15),
15184
- 'report_rate': frame.slice(15, 19).reduce(msbLsb) + "Sec",
15185
- 'tx_life_counter': frame.slice(19, 23).reduce(msbLsb),
15186
- 'machine_values': {
15187
- 'firmware': frame[2],
15188
- 'hardware_id': frame.slice(12, 15),
15189
- 'report_rate': frame.slice(15, 19),
15190
- 'tx_life_counter': frame.slice(19, 23)
15191
- }
15192
- }
15193
- }
15194
- },
15195
- '217': {
15196
- name: 'Wireless Weight Scale',
15197
- parse: (d) => {
15198
- return {
15199
- weight: signInt(d.slice(0, 4).reduce(msbLsb)) / 100
15200
- };
15201
- }
15202
- },
15203
14383
  '270': {
15204
14384
  name: 'Custom Salinity DO sensor',
15205
14385
  parse: (d) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ncd-io/node-red-enterprise-sensors",
3
- "version": "1.4.6",
3
+ "version": "1.4.7",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/wireless.html CHANGED
@@ -2688,24 +2688,7 @@
2688
2688
  </div>
2689
2689
  </div>
2690
2690
  </div>
2691
- <div class="ncd-dependent" data-sensor-108 data-sensor-119>
2692
- <div class="form-row ncd-active-check">
2693
- <strong>Enable Accelerometer</strong>
2694
- <p class="caption">
2695
- This setting toggles the accelerometer sensor on or off. Disabling it is recommended for applications that does not require accelerometer.
2696
- </p>
2697
- <div>
2698
- <label for="node-input-deactivate_activate_accelero_108_active">Active:</label>
2699
- <input type="checkbox" id="node-input-deactivate_activate_accelero_108_active" class="ncd-config-toggle" data-target-id="node-input-deactivate_activate_accelero_108" value="1">
2700
- </div>
2701
- <div>
2702
- <label for="node-input-deactivate_activate_accelero_108"><i class="icon-tag"></i>Value:</label>
2703
- <select id="node-input-deactivate_activate_accelero_108">
2704
- <option value="0">Disabled</option>
2705
- <option value="1" selected>Enabled</option>
2706
- </select>
2707
- </div>
2708
- </div>
2691
+ <div class="ncd-dependent" data-sensor-108>
2709
2692
  <div class="form-row ncd-active-check">
2710
2693
  <strong>Enable Accelerometer</strong>
2711
2694
  <p class="caption">
@@ -2740,20 +2723,6 @@
2740
2723
  </select>
2741
2724
  </div>
2742
2725
  </div>
2743
- <div class="form-row ncd-active-check">
2744
- <strong>Set Accelerometer Threshold</strong>
2745
- <p class="caption">
2746
- Sets the threshold in multiples of 32mg in which an uptime will be detected. A value of 1 = 32mg, a value of 2 = 64mg etc.
2747
- </p>
2748
- <div>
2749
- <label for="node-input-accelerometer_threshold_108_active">Active:</label>
2750
- <input type="checkbox" id="node-input-accelerometer_threshold_108_active" class="ncd-config-toggle" data-target-id="node-input-accelerometer_threshold_108" value="1">
2751
- </div>
2752
- <div>
2753
- <label for="node-input-accelerometer_threshold_108"><i class="icon-tag"></i>Value:</label>
2754
- <input type="text" id="node-input-accelerometer_threshold_108" placeholder="10" value="10">
2755
- </div>
2756
- </div>
2757
2726
  </div>
2758
2727
  <div class="ncd-dependent" data-sensor-108 data-sensor-119>
2759
2728
  <div class="form-row ncd-active-check">
@@ -3606,7 +3575,7 @@
3606
3575
  </div>
3607
3576
  </div>
3608
3577
  </div>
3609
- <div class="ncd-dependent" data-sensor-110 data-sensor-111 data-sensor-112 data-sensor-114 data-sensor-543>
3578
+ <div class="ncd-dependent" data-sensor-110 data-sensor-111 data-sensor-112 data-sensor-114>
3610
3579
  <div class="form-row ncd-active-check">
3611
3580
  <strong>Probe 1: Sampling Duration</strong>
3612
3581
  <p>