@bitpoolos/edge-bacnet 1.4.2 → 1.4.4

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/bacnet_gateway.js CHANGED
@@ -107,41 +107,42 @@ module.exports = function (RED) {
107
107
  node.status({});
108
108
  }, 3000);
109
109
  }
110
+ let useDeviceName = outputType.useDeviceName;
110
111
  if (outputType.json && !outputType.mqtt && !outputType.pointJson) {
111
112
  //json
112
113
  if (objectPropertyType.simpleWithStatus && !objectPropertyType.fullObject && !objectPropertyType.simplePayload) {
113
114
  //simpleWithStatus
114
- sendSimpleWithStatus(values, readNodeName, true);
115
+ sendSimpleWithStatus(values, readNodeName, true, useDeviceName);
115
116
  } else if (objectPropertyType.fullObject && !objectPropertyType.simplePayload && !objectPropertyType.simpleWithStatus) {
116
117
  //fullObject
117
- sendJsonAsMqtt(values, readNodeName);
118
+ sendJsonAsMqtt(values, readNodeName, useDeviceName);
118
119
  } else if (objectPropertyType.simplePayload && !objectPropertyType.fullObject && !objectPropertyType.simpleWithStatus) {
119
120
  //simplePayload
120
- sendSimpleJson(values, readNodeName);
121
+ sendSimpleJson(values, readNodeName, useDeviceName);
121
122
  }
122
123
  } else if (outputType.mqtt && !outputType.json && !outputType.pointJson) {
123
124
  //mqtt
124
125
  if (objectPropertyType.simpleWithStatus && !objectPropertyType.fullObject && !objectPropertyType.simplePayload) {
125
126
  //simpleWithStatus
126
- sendSimpleWithStatus(values, readNodeName, false);
127
+ sendSimpleWithStatus(values, readNodeName, false, useDeviceName);
127
128
  } else if (objectPropertyType.fullObject && !objectPropertyType.simplePayload && !objectPropertyType.simpleWithStatus) {
128
129
  //fullObject
129
- sendAsMqtt(values, readNodeName);
130
+ sendAsMqtt(values, readNodeName, useDeviceName);
130
131
  } else if (objectPropertyType.simplePayload && !objectPropertyType.fullObject && !objectPropertyType.simpleWithStatus) {
131
132
  //simplePayload
132
- sendSimpleMqtt(values, readNodeName);
133
+ sendSimpleMqtt(values, readNodeName, useDeviceName);
133
134
  }
134
135
  } else if (outputType.pointJson && !outputType.json && !outputType.mqtt) {
135
136
  //pointJson
136
137
  if (objectPropertyType.simpleWithStatus && !objectPropertyType.fullObject && !objectPropertyType.simplePayload) {
137
138
  //simpleWithStatus
138
- sendSimpleWithStatus(values, readNodeName, false);
139
+ sendSimpleWithStatus(values, readNodeName, false, useDeviceName);
139
140
  } else if (objectPropertyType.fullObject && !objectPropertyType.simplePayload && !objectPropertyType.simpleWithStatus) {
140
141
  //fullObject
141
- sendIndividualMsgJson(values, readNodeName);
142
+ sendIndividualMsgJson(values, readNodeName, useDeviceName);
142
143
  } else if (objectPropertyType.simplePayload && !objectPropertyType.fullObject && !objectPropertyType.simpleWithStatus) {
143
144
  //simplePayload
144
- sendSimpleJsonPerPoint(values, readNodeName);
145
+ sendSimpleJsonPerPoint(values, readNodeName, useDeviceName);
145
146
  }
146
147
  }
147
148
  }
@@ -225,6 +226,21 @@ module.exports = function (RED) {
225
226
  });
226
227
  } else if (msg.testFunc == true) {
227
228
  node.bacnetClient.testFunction(msg.address, msg.type, msg.instance, msg.property);
229
+ } else if (msg.applyDisplayNames) {
230
+
231
+ node.status({ fill: "blue", shape: "dot", text: "Updating display names" });
232
+
233
+ setTimeout(() => {
234
+ node.status({});
235
+ }, 2000);
236
+
237
+ node.bacnetClient
238
+ .applyDisplayNames(msg.pointsToRead)
239
+ .then(function (result) {
240
+ }).catch(function (error) {
241
+ logOut("Error in applyDisplayNames: ", error);
242
+ });
243
+
228
244
  }
229
245
  });
230
246
 
@@ -456,41 +472,42 @@ module.exports = function (RED) {
456
472
  node.status({});
457
473
  }, 3000);
458
474
  }
475
+ let useDeviceName = outputType.useDeviceName;
459
476
  if (outputType.json && !outputType.mqtt && !outputType.pointJson) {
460
477
  //json
461
478
  if (objectPropertyType.simpleWithStatus && !objectPropertyType.fullObject && !objectPropertyType.simplePayload) {
462
479
  //simpleWithStatus
463
- sendSimpleWithStatus(values, readNodeName, true);
480
+ sendSimpleWithStatus(values, readNodeName, true, useDeviceName);
464
481
  } else if (objectPropertyType.fullObject && !objectPropertyType.simplePayload && !objectPropertyType.simpleWithStatus) {
465
482
  //fullObject
466
- sendJsonAsMqtt(values, readNodeName);
483
+ sendJsonAsMqtt(values, readNodeName, useDeviceName);
467
484
  } else if (objectPropertyType.simplePayload && !objectPropertyType.fullObject && !objectPropertyType.simpleWithStatus) {
468
485
  //simplePayload
469
- sendSimpleJson(values, readNodeName);
486
+ sendSimpleJson(values, readNodeName, useDeviceName);
470
487
  }
471
488
  } else if (outputType.mqtt && !outputType.json && !outputType.pointJson) {
472
489
  //mqtt
473
490
  if (objectPropertyType.simpleWithStatus && !objectPropertyType.fullObject && !objectPropertyType.simplePayload) {
474
491
  //simpleWithStatus
475
- sendSimpleWithStatus(values, readNodeName, false);
492
+ sendSimpleWithStatus(values, readNodeName, false, useDeviceName);
476
493
  } else if (objectPropertyType.fullObject && !objectPropertyType.simplePayload && !objectPropertyType.simpleWithStatus) {
477
494
  //fullObject
478
- sendAsMqtt(values, readNodeName);
495
+ sendAsMqtt(values, readNodeName, useDeviceName);
479
496
  } else if (objectPropertyType.simplePayload && !objectPropertyType.fullObject && !objectPropertyType.simpleWithStatus) {
480
497
  //simplePayload
481
- sendSimpleMqtt(values, readNodeName);
498
+ sendSimpleMqtt(values, readNodeName, useDeviceName);
482
499
  }
483
500
  } else if (outputType.pointJson && !outputType.json && !outputType.mqtt) {
484
501
  //pointJson
485
502
  if (objectPropertyType.simpleWithStatus && !objectPropertyType.fullObject && !objectPropertyType.simplePayload) {
486
503
  //simpleWithStatus
487
- sendSimpleWithStatus(values, readNodeName, false);
504
+ sendSimpleWithStatus(values, readNodeName, false, useDeviceName);
488
505
  } else if (objectPropertyType.fullObject && !objectPropertyType.simplePayload && !objectPropertyType.simpleWithStatus) {
489
506
  //fullObject
490
- sendIndividualMsgJson(values, readNodeName);
507
+ sendIndividualMsgJson(values, readNodeName, useDeviceName);
491
508
  } else if (objectPropertyType.simplePayload && !objectPropertyType.fullObject && !objectPropertyType.simpleWithStatus) {
492
509
  //simplePayload
493
- sendSimpleJsonPerPoint(values, readNodeName);
510
+ sendSimpleJsonPerPoint(values, readNodeName, useDeviceName);
494
511
  }
495
512
  }
496
513
  }
@@ -514,7 +531,94 @@ module.exports = function (RED) {
514
531
  }
515
532
  }
516
533
 
517
- sendSimpleWithStatus = function (values, readNodeName, isJson) {
534
+ function getTopicString(type, useDeviceName, readNodeName, device, pointName, prop) {
535
+ let topic = "";
536
+ if (
537
+ node.nodeName !== "gateway" &&
538
+ node.nodeName !== "" &&
539
+ node.nodeName !== "null" &&
540
+ node.nodeName !== "undefined" &&
541
+ typeof node.nodeName == "string"
542
+ ) {
543
+ if (readNodeName !== '' &&
544
+ readNodeName !== null &&
545
+ readNodeName !== undefined
546
+ ) {
547
+ if (useDeviceName) {
548
+ topic = `${node.nodeName}/${readNodeName}/${device}`;
549
+ } else {
550
+ topic = `${node.nodeName}/${readNodeName}`;
551
+ }
552
+
553
+ } else {
554
+ if (useDeviceName) {
555
+ topic = `${node.nodeName}/${device}`;
556
+ } else {
557
+ topic = `${node.nodeName}`;
558
+ }
559
+ }
560
+ } else {
561
+ if (readNodeName !== '' &&
562
+ readNodeName !== null &&
563
+ readNodeName !== undefined
564
+ ) {
565
+ if (useDeviceName) {
566
+ topic = `BITPOOL_BACNET_GATEWAY/${readNodeName}/${device}`;
567
+ } else {
568
+ topic = `BITPOOL_BACNET_GATEWAY/${readNodeName}`;
569
+ }
570
+
571
+ } else {
572
+ if (useDeviceName) {
573
+ topic = `BITPOOL_BACNET_GATEWAY/${device}`;
574
+ } else {
575
+ topic = `BITPOOL_BACNET_GATEWAY`;
576
+ }
577
+ }
578
+ }
579
+
580
+ switch (type) {
581
+ case "sendSimpleWithStatus":
582
+ topic += `/${pointName}`;
583
+ break;
584
+
585
+ case "sendSimpleWithStatusJson":
586
+ //do nothing
587
+ break;
588
+
589
+ case "sendSimpleMqtt":
590
+ topic += `/${pointName}`;
591
+ break;
592
+
593
+ case "sendAsMqtt":
594
+ topic += `/${pointName}/${prop}`;
595
+ break;
596
+
597
+ case "sendSimpleJson":
598
+ //do nothing
599
+ break;
600
+
601
+ case "sendJsonAsMqtt":
602
+ //do nothing
603
+ break;
604
+
605
+ case "sendIndividualMsgJson":
606
+ topic += `/${pointName}`;
607
+ break;
608
+
609
+ case "sendSimpleJsonPerPoint":
610
+ topic += `/${pointName}`;
611
+ break;
612
+
613
+ default:
614
+ break;
615
+ }
616
+
617
+ return topic;
618
+
619
+ }
620
+
621
+ sendSimpleWithStatus = function (values, readNodeName, isJson, useDeviceName) {
518
622
  let devices = Object.keys(values);
519
623
  devices.forEach(function (device) {
520
624
  if (device !== "_msgid") {
@@ -524,31 +628,9 @@ module.exports = function (RED) {
524
628
  for (let point in points) {
525
629
  if (points[point] && "presentValue" in points[point]) {
526
630
  let pointName = getPointName(points[point], point);
527
- if (
528
- node.nodeName !== "gateway" &&
529
- node.nodeName !== "" &&
530
- node.nodeName !== "null" &&
531
- node.nodeName !== "undefined" &&
532
- typeof node.nodeName == "string"
533
- ) {
534
- if (readNodeName !== '' &&
535
- readNodeName !== null &&
536
- readNodeName !== undefined
537
- ) {
538
- msgg.topic = `${node.nodeName}/${readNodeName}/${device}/${pointName}`;
539
- } else {
540
- msgg.topic = `${node.nodeName}/${device}/${pointName}`;
541
- }
542
- } else {
543
- if (readNodeName !== '' &&
544
- readNodeName !== null &&
545
- readNodeName !== undefined
546
- ) {
547
- msgg.topic = `BITPOOL_BACNET_GATEWAY/${readNodeName}/${device}/${pointName}`;
548
- } else {
549
- msgg.topic = `BITPOOL_BACNET_GATEWAY/${device}/${pointName}`;
550
- }
551
- }
631
+ let topic = getTopicString("sendSimpleWithStatus", useDeviceName, readNodeName, device, pointName);
632
+
633
+ msgg.topic = topic;
552
634
  let payload = {
553
635
  presentValue: points[point]["presentValue"],
554
636
  timestamp: points[point]["timestamp"],
@@ -569,32 +651,7 @@ module.exports = function (RED) {
569
651
 
570
652
  if (isJson) {
571
653
  //json payload
572
- let topic = "";
573
- if (
574
- node.nodeName !== "gateway" &&
575
- node.nodeName !== "" &&
576
- node.nodeName !== "null" &&
577
- node.nodeName !== "undefined" &&
578
- typeof node.nodeName == "string"
579
- ) {
580
- if (readNodeName !== '' &&
581
- readNodeName !== null &&
582
- readNodeName !== undefined
583
- ) {
584
- topic = `${node.nodeName}/${readNodeName}/${device}`;
585
- } else {
586
- topic = `${node.nodeName}/${device}`;
587
- }
588
- } else {
589
- if (readNodeName !== '' &&
590
- readNodeName !== null &&
591
- readNodeName !== undefined
592
- ) {
593
- topic = `BITPOOL_BACNET_GATEWAY/${readNodeName}/${device}`;
594
- } else {
595
- topic = `BITPOOL_BACNET_GATEWAY/${device}`;
596
- }
597
- }
654
+ let topic = getTopicString("sendSimpleWithStatusJson", useDeviceName, readNodeName, device);
598
655
 
599
656
  msgg.topic = topic;
600
657
  msgg.payload = structuredObject;
@@ -605,7 +662,7 @@ module.exports = function (RED) {
605
662
  });
606
663
  }
607
664
 
608
- sendSimpleMqtt = function (values, readNodeName) {
665
+ sendSimpleMqtt = function (values, readNodeName, useDeviceName) {
609
666
  let devices = Object.keys(values);
610
667
  devices.forEach(function (device) {
611
668
  if (device !== "_msgid") {
@@ -617,31 +674,9 @@ module.exports = function (RED) {
617
674
  pointProps.forEach(function (prop) {
618
675
  let msg = {};
619
676
  if (prop == "presentValue") {
620
- if (
621
- node.nodeName !== "gateway" &&
622
- node.nodeName !== "" &&
623
- node.nodeName !== "null" &&
624
- node.nodeName !== "undefined" &&
625
- typeof node.nodeName == "string"
626
- ) {
627
- if (readNodeName !== '' &&
628
- readNodeName !== null &&
629
- readNodeName !== undefined
630
- ) {
631
- msg.topic = `${node.nodeName}/${readNodeName}/${device}/${pointName}`;
632
- } else {
633
- msg.topic = `${node.nodeName}/${device}/${pointName}`;
634
- }
635
- } else {
636
- if (readNodeName !== '' &&
637
- readNodeName !== null &&
638
- readNodeName !== undefined
639
- ) {
640
- msg.topic = `BITPOOL_BACNET_GATEWAY/${readNodeName}/${device}/${pointName}`;
641
- } else {
642
- msg.topic = `BITPOOL_BACNET_GATEWAY/${device}/${pointName}`;
643
- }
644
- }
677
+ let topic = getTopicString("sendSimpleMqtt", useDeviceName, readNodeName, device, pointName);
678
+
679
+ msg.topic = topic;
645
680
  msg.payload = points[point][prop];
646
681
  node.send(msg);
647
682
  }
@@ -653,7 +688,7 @@ module.exports = function (RED) {
653
688
  };
654
689
 
655
690
  // Breaks down response JSON object into mqtt topic / payload
656
- sendAsMqtt = function (values, readNodeName) {
691
+ sendAsMqtt = function (values, readNodeName, useDeviceName) {
657
692
  let devices = Object.keys(values);
658
693
  devices.forEach(function (device) {
659
694
  if (device !== "_msgid") {
@@ -665,31 +700,8 @@ module.exports = function (RED) {
665
700
  pointProps.forEach(function (prop) {
666
701
  let msg = {};
667
702
  if (prop !== "objectName") {
668
- if (
669
- node.nodeName !== "gateway" &&
670
- node.nodeName !== "" &&
671
- node.nodeName !== "null" &&
672
- node.nodeName !== "undefined" &&
673
- typeof node.nodeName == "string"
674
- ) {
675
- if (readNodeName !== '' &&
676
- readNodeName !== null &&
677
- readNodeName !== undefined
678
- ) {
679
- msg.topic = `${node.nodeName}/${readNodeName}/${device}/${pointName}/${prop}`;
680
- } else {
681
- msg.topic = `${node.nodeName}/${device}/${pointName}/${prop}`;
682
- }
683
- } else {
684
- if (readNodeName !== '' &&
685
- readNodeName !== null &&
686
- readNodeName !== undefined
687
- ) {
688
- msg.topic = `BITPOOL_BACNET_GATEWAY/${readNodeName}/${device}/${pointName}/${prop}`;
689
- } else {
690
- msg.topic = `BITPOOL_BACNET_GATEWAY/${device}/${pointName}/${prop}`;
691
- }
692
- }
703
+ let topic = getTopicString("sendAsMqtt", useDeviceName, readNodeName, device, pointName, prop);
704
+ msg.topic = topic;
693
705
  msg.payload = points[point][prop];
694
706
  node.send(msg);
695
707
  }
@@ -700,7 +712,7 @@ module.exports = function (RED) {
700
712
  });
701
713
  };
702
714
 
703
- sendSimpleJson = function (values, readNodeName) {
715
+ sendSimpleJson = function (values, readNodeName, useDeviceName) {
704
716
  let devices = Object.keys(values);
705
717
  devices.forEach(function (device) {
706
718
  let msgg = {};
@@ -722,81 +734,36 @@ module.exports = function (RED) {
722
734
  });
723
735
  }
724
736
  }
725
- if (
726
- node.nodeName !== "gateway" &&
727
- node.nodeName !== "" &&
728
- node.nodeName !== "null" &&
729
- node.nodeName !== "undefined" &&
730
- typeof node.nodeName == "string"
731
- ) {
732
- if (readNodeName !== '' &&
733
- readNodeName !== null &&
734
- readNodeName !== undefined
735
- ) {
736
- msgg.topic = `${node.nodeName}/${readNodeName}/${device}`;
737
- } else {
738
- msgg.topic = `${node.nodeName}/${device}`;
739
- }
740
- } else {
741
- if (readNodeName !== '' &&
742
- readNodeName !== null &&
743
- readNodeName !== undefined
744
- ) {
745
- msgg.topic = `BITPOOL_BACNET_GATEWAY/${readNodeName}/${device}`;
746
- } else {
747
- msgg.topic = `BITPOOL_BACNET_GATEWAY/${device}`;
748
- }
749
- }
737
+ let topic = getTopicString("sendSimpleJson", useDeviceName, readNodeName, device);
738
+ msgg.topic = topic;
750
739
  msgg.payload = value[device];
751
740
  node.send(msgg);
752
741
  }
753
742
  });
754
743
  };
755
744
 
756
- sendJsonAsMqtt = function (values, readNodeName) {
745
+ sendJsonAsMqtt = function (values, readNodeName, useDeviceName) {
757
746
  if (typeof values == "object") {
758
747
  let keys = Object.keys(values);
759
748
  keys.forEach(function (key) {
760
749
  let points = values[key];
761
750
  let msgg = {};
762
751
  let structuredObject = {};
763
- if (
764
- node.nodeName !== "gateway" &&
765
- node.nodeName !== "" &&
766
- node.nodeName !== "null" &&
767
- node.nodeName !== "undefined" &&
768
- typeof node.nodeName == "string"
769
- ) {
770
- if (readNodeName !== '' &&
771
- readNodeName !== null &&
772
- readNodeName !== undefined
773
- ) {
774
- msgg.topic = `${node.nodeName}/${readNodeName}/${key}`;
775
- } else {
776
- msgg.topic = `${node.nodeName}/${key}`;
777
- }
778
- } else {
779
- if (readNodeName !== '' &&
780
- readNodeName !== null &&
781
- readNodeName !== undefined
782
- ) {
783
- msgg.topic = `BITPOOL_BACNET_GATEWAY/${readNodeName}/${key}`;
784
- } else {
785
- msgg.topic = `BITPOOL_BACNET_GATEWAY/${key}`;
786
- }
787
- }
752
+
753
+ let topic = getTopicString("sendJsonAsMqtt", useDeviceName, readNodeName, key);
754
+ msgg.topic = topic;
755
+
788
756
  for (let point in points) {
789
757
  let pointName = getPointName(points[point], point);
790
758
  structuredObject[pointName] = points[point];
791
759
  }
792
-
793
760
  msgg.payload = structuredObject;
794
761
  node.send(msgg);
795
762
  });
796
763
  }
797
764
  };
798
765
 
799
- sendIndividualMsgJson = function (values, readNodeName) {
766
+ sendIndividualMsgJson = function (values, readNodeName, useDeviceName) {
800
767
  if (typeof values == "object") {
801
768
  let keys = Object.keys(values);
802
769
  keys.forEach(function (key) {
@@ -804,31 +771,8 @@ module.exports = function (RED) {
804
771
  let msgg = {};
805
772
  for (let point in points) {
806
773
  let pointName = getPointName(points[point], point);
807
- if (
808
- node.nodeName !== "gateway" &&
809
- node.nodeName !== "" &&
810
- node.nodeName !== "null" &&
811
- node.nodeName !== "undefined" &&
812
- typeof node.nodeName == "string"
813
- ) {
814
- if (readNodeName !== '' &&
815
- readNodeName !== null &&
816
- readNodeName !== undefined
817
- ) {
818
- msgg.topic = `${node.nodeName}/${readNodeName}/${key}/${pointName}`;
819
- } else {
820
- msgg.topic = `${node.nodeName}/${key}/${pointName}`;
821
- }
822
- } else {
823
- if (readNodeName !== '' &&
824
- readNodeName !== null &&
825
- readNodeName !== undefined
826
- ) {
827
- msgg.topic = `BITPOOL_BACNET_GATEWAY/${readNodeName}/${key}/${pointName}`;
828
- } else {
829
- msgg.topic = `BITPOOL_BACNET_GATEWAY/${key}/${pointName}`;
830
- }
831
- }
774
+ let topic = getTopicString("sendIndividualMsgJson", useDeviceName, readNodeName, key, pointName);
775
+ msgg.topic = topic;
832
776
 
833
777
  msgg.payload = points[point];
834
778
  node.send(msgg);
@@ -838,7 +782,7 @@ module.exports = function (RED) {
838
782
  }
839
783
  }
840
784
 
841
- sendSimpleJsonPerPoint = function (values, readNodeName) {
785
+ sendSimpleJsonPerPoint = function (values, readNodeName, useDeviceName) {
842
786
  let devices = Object.keys(values);
843
787
  devices.forEach(function (device) {
844
788
  if (device !== "_msgid") {
@@ -847,31 +791,9 @@ module.exports = function (RED) {
847
791
  for (let point in points) {
848
792
  if (points[point] && "presentValue" in points[point]) {
849
793
  let pointName = getPointName(points[point], point);
850
- if (
851
- node.nodeName !== "gateway" &&
852
- node.nodeName !== "" &&
853
- node.nodeName !== "null" &&
854
- node.nodeName !== "undefined" &&
855
- typeof node.nodeName == "string"
856
- ) {
857
- if (readNodeName !== '' &&
858
- readNodeName !== null &&
859
- readNodeName !== undefined
860
- ) {
861
- msgg.topic = `${node.nodeName}/${readNodeName}/${device}/${pointName}`;
862
- } else {
863
- msgg.topic = `${node.nodeName}/${device}/${pointName}`;
864
- }
865
- } else {
866
- if (readNodeName !== '' &&
867
- readNodeName !== null &&
868
- readNodeName !== undefined
869
- ) {
870
- msgg.topic = `BITPOOL_BACNET_GATEWAY/${readNodeName}/${device}/${pointName}`;
871
- } else {
872
- msgg.topic = `BITPOOL_BACNET_GATEWAY/${device}/${pointName}`;
873
- }
874
- }
794
+ let topic = getTopicString("sendSimpleJsonPerPoint", useDeviceName, readNodeName, device, pointName);
795
+
796
+ msgg.topic = topic;
875
797
  let payload = {
876
798
  presentValue: points[point]["presentValue"]
877
799
  };
package/bacnet_read.html CHANGED
@@ -22,6 +22,7 @@
22
22
  object_property_simplePayload: { value: false },
23
23
  object_property_simpleWithStatus: { value: false },
24
24
  object_property_fullObject: { value: true },
25
+ useDeviceName: { value: true },
25
26
  },
26
27
  inputs: 1,
27
28
  outputs: 1,
@@ -838,6 +839,9 @@
838
839
 
839
840
  app.$forceUpdate();
840
841
  },
842
+ refreshReadListTree() {
843
+ this.addToReadDevices(this.pointsToRead);
844
+ },
841
845
  calculateMstpCount(slotProps) {
842
846
  let count = 0;
843
847
  slotProps.node.children.forEach(function (child) {
@@ -894,6 +898,8 @@
894
898
  document.getElementById("node-input-pointJson").checked = node.pointJson;
895
899
  document.getElementById("node-input-pointJson").onclick = handleMsgTypeClick;
896
900
 
901
+ document.getElementById("node-input-useDeviceName").checked = node.useDeviceName;
902
+
897
903
  var menu = document.querySelector(".context-menu");
898
904
  window.addEventListener("click", (event) => {
899
905
  menu.style.display = "none";
@@ -1218,8 +1224,11 @@
1218
1224
  <input type="file" id="readlist-file-upload" accept="application/JSON" class="inputStyle" style="display: none;" />
1219
1225
 
1220
1226
  <button @click="removeAllDevices()" class="removeAllDevicesButton" title="Remove all devices">
1221
- <i class="pi pi-minus-circle" style="color: #ff0000; padding-right: 5px;"> </i
1222
- ><a style="color: #ff0000;">Remove All Devices</a>
1227
+ <a style="color: #ff0000;">Remove All Devices</a>
1228
+ </button>
1229
+
1230
+ <button @click="refreshReadListTree()" class="refreshReadListButton" title="Refresh tree">
1231
+ <i class="pi pi-refresh" style="color: #00AEEF;"> </i>
1223
1232
  </button>
1224
1233
  </div>
1225
1234
 
@@ -1349,6 +1358,22 @@
1349
1358
  </div>
1350
1359
  </div>
1351
1360
 
1361
+ <hr />
1362
+
1363
+ <div class="objectPropertiesLabel" style="margin-top: 20px; margin-bottom: 20px;">
1364
+ <label
1365
+ for="node-input-useDeviceName"
1366
+ style="width: auto; align-items: start;"
1367
+ class="objectPropertiesLabel">
1368
+ <i class="icon-tag"></i> <span data-i18n="bitpool-bacnet.label.useDeviceName"></span>
1369
+ <input
1370
+ class=" objectProp"
1371
+ type="checkbox"
1372
+ id="node-input-useDeviceName" />
1373
+ <a style="white-space: nowrap; padding-left: 20px;">Use device name in topic</a>
1374
+ </label>
1375
+ </div>
1376
+
1352
1377
  <div class="form-row">
1353
1378
  <label for="node-input-roundDecimal"> Decimal place precision </label>
1354
1379
  <input type="number" id="node-input-roundDecimal" placeholder="None" />