Last modified by Hera Guo on 2024/11/11 17:08

From version 32.1
edited by Hera Guo
on 2024/11/06 14:06
Change comment: There is no comment for this version
To version 19.1
edited by Hera Guo
on 2024/11/05 09:51
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -57,7 +57,7 @@
57 57  
58 58  **device:**This section displays the specific information collected by the device, and different types of sensors have different display interfaces
59 59  
60 -[[image:屏幕截图 2024-11-04 134645.png]]
60 +[[image:1730699212334-960.png]]
61 61  
62 62  First floor:
63 63  
... ... @@ -82,9 +82,8 @@
82 82  
83 83  High Temperature、Low Temperature、High humidity、Low humidity、Low voltage、Device Disconnected
84 84  
85 -[[image:1730854677036-426.png]]
85 +[[image:1730699566023-958.png]]
86 86  
87 -
88 88  = 4.configuration details =
89 89  
90 90  After understanding the architecture and layering of the complete project, we can start configuring it
... ... @@ -93,48 +93,58 @@
93 93  
94 94  === 4.1.1.Data source (Entity aliases) ===
95 95  
96 -detail:Obtain data based on dashboard status
95 +Asset map:
97 97  
97 +[[image:1730709409941-536.png||height="729" width="1440"]]
98 +
99 +detail:
100 +
98 98  [[image:1730709424998-915.png||height="729" width="1436"]]
99 99  
100 -Alarm:Obtain alarm information
103 +devid:
101 101  
105 +[[image:1730709442773-502.png||height="738" width="1434"]]
106 +
107 +State:
108 +
109 +[[image:1730709461297-207.png||height="706" width="1434"]]
110 +
111 +Alarm:
112 +
102 102  [[image:1730709479828-595.png||height="696" width="1435"]]
103 103  
104 -Dragino&GXHL,Ltd:Obtain data through asset types
115 +Dragino&GXHL,Ltd:
105 105  
106 106  [[image:1730709511861-439.png||height="714" width="1435"]]
107 107  
108 -Selected Supermarket:Retrieve devices by device type
119 +Selected Supermarket:
109 109  
110 110  [[image:1730709527720-418.png||height="751" width="1433"]]
111 111  
112 -Supermarket Devices:Obtain data through device type
123 +Supermarkets:
113 113  
114 -[[image:1730709555797-383.png||height="726" width="1434"]]
125 +[[image:1730709542597-321.png||height="734" width="1435"]]
115 115  
116 -LHT65N Device:Obtain data based on device type
127 +Supermarket Devices:
117 117  
118 -[[image:1730857191863-514.png||height="725" width="1433"]]
129 +[[image:1730709555797-383.png||height="726" width="1434"]]
119 119  
131 +
120 120  === 4.1.2.Page Configuration ===
121 121  
122 122  ==== 4.1.2.1、Configure the interface of the third layer Davies. ====
123 123  
136 +
124 124  ==== 4.1.2.2、Configure the interface of the second layer asset ====
125 125  
126 -===== 4.1.2.2.1 Equipment distribution diagram: =====
139 +**Equipment distribution diagram:**
127 127  
128 128  **Data:**
129 129  
130 130  [[image:1730770392454-317.png||height="745" width="1439"]]
131 131  
132 -**Appearannce:**In this module, we need to arrange our devices in the corresponding positions and use icons to display our devices. Therefore, in the Appearance interface, we need to configure them
145 +Tooltip function
133 133  
134 -**Tooltip function:**This module displays the current information of the device
135 -
136 -[[image:1730857537965-184.png]]
137 -
138 138  {{code language="none"}}
139 139  var msg = data
140 140  if(msg.Label=="gateway" && msg.type == "gateway"){
... ... @@ -160,12 +160,8 @@
160 160  }
161 161  {{/code}}
162 162  
163 -(% class="wikigeneratedid" id="HMarkerimagefunctionFF1A" %)
164 -**Marker image function:**This module can display different icons based on different types of sensors and their status to achieve its functionality
172 +==== Marker image function: ====
165 165  
166 -(% class="wikigeneratedid" %)
167 -[[image:1730857750749-240.png]]
168 -
169 169  {{code language="none"}}
170 170  var res
171 171  var msg = data
... ... @@ -255,9 +255,10 @@
255 255  return res;
256 256  {{/code}}
257 257  
258 -(% class="wikigeneratedid" id="H" %)
259 -[[image:1730770875793-351.png]]**Actions:**We need to implement the function of entering the details interface through the corresponding device icon, so in this module, we need to add actions to achieve redirection
263 +==== [[image:1730770875793-351.png]] ====
260 260  
265 +==== Actions ====
266 +
261 261  {{code language="none"}}
262 262  var entitySubType;
263 263  var $injector = widgetContext.$scope.$injector;
... ... @@ -317,22 +317,18 @@
317 317  
318 318  [[image:1730771103096-522.png]]
319 319  
320 -===== 4.1.2.2.2 Device List =====
326 +Device List
321 321  
322 -(% class="wikigeneratedid" id="HDataFF1A" %)
323 -**Data:**
328 +Data:
324 324  
325 325  [[image:1730771199343-553.png]]
326 326  
327 -**Actions:**Equipment distribution diagram: In this module, functions need to be implemented such as adding devices, editing devices, deleting devices, and jumping to the device details page. Therefore, the following actions need to be added:
332 +Actions:
328 328  
329 329  [[image:1730771228766-212.png]]
330 330  
331 -(% class="wikigeneratedid" id="HEditdeviceFF1A" %)
332 -Edit device:Implementation function: Device editing
336 +==== Edit device: ====
333 333  
334 -[[image:1730771256045-238.png]]
335 -
336 336  {{code language="none"}}
337 337  let $injector = widgetContext.$scope.$injector;
338 338  let customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));
... ... @@ -429,10 +429,9 @@
429 429  }
430 430  {{/code}}
431 431  
432 -(% class="wikigeneratedid" id="H" %)
433 -Delete device:Implementation function: Device deletion
434 +==== [[image:1730771256045-238.png]] ====
434 434  
435 -[[image:1730771318657-502.png]]
436 +Delete device
436 436  
437 437  {{code language="none"}}
438 438  let $injector = widgetContext.$scope.$injector;
... ... @@ -463,9 +463,9 @@
463 463  
464 464  {{/code}}
465 465  
466 -jump:Implementation function: Jump to the device details page
467 +[[image:1730771318657-502.png]]
467 467  
468 -[[image:1730771386258-676.png]]
469 +jump
469 469  
470 470  {{code language="none"}}
471 471  console.log(entityName)
... ... @@ -524,10 +524,9 @@
524 524  }
525 525  {{/code}}
526 526  
527 -(% class="wikigeneratedid" id="H-1" %)
528 -Add device:Implementation function: Add device
528 +==== [[image:1730771386258-676.png]] ====
529 529  
530 -[[image:1730771441589-122.png]]
530 +Add device
531 531  
532 532  {{code language="none"}}
533 533  let $injector = widgetContext.$scope.$injector;
... ... @@ -592,19 +592,19 @@
592 592  }
593 593  {{/code}}
594 594  
595 -==== ====
595 +==== [[image:1730771441589-122.png]] ====
596 596  
597 -===== **4.1.2.2.3 Asset Alarm:** =====
597 +==== Asset Alarm: ====
598 598  
599 -**Data:**
599 +Data:
600 600  
601 601  [[image:1730771504586-433.png]]
602 602  
603 603  ==== 4.1.2.3、Configure the first layer menu interface ====
604 604  
605 -===== 4.1.2.3.1 **Map:** =====
605 +**Map:**
606 606  
607 -**Data:**
607 +Data:
608 608  
609 609  [[image:1730710271230-716.png||height="729" width="1427"]]
610 610  
... ... @@ -612,7 +612,7 @@
612 612  
613 613  [[image:1730710850458-781.png||height="770" width="1429"]]
614 614  
615 -Select supermarket:Implementation function: Refresh the side page
615 +Select supermarket:
616 616  
617 617  {{code language="none"}}
618 618  var params = widgetContext.stateController.getStateParams();
... ... @@ -627,7 +627,7 @@
627 627  
628 628  [[image:1730710875401-848.png||height="767" width="1429"]]
629 629  
630 -Supermarket_detail:Implementation function: Jump to the asset details page
630 +Supermarket_detail:
631 631  
632 632  {{code language="none"}}
633 633  var params = JSON.parse(JSON.stringify(widgetContext.stateController.getStateParams()));
... ... @@ -644,9 +644,7 @@
644 644  
645 645  [[image:1730710990334-601.png||height="772" width="1433"]]
646 646  
647 -* (((
648 -In this demo, exclusive map icons were set as follows:
649 -)))
647 +* In this demo, exclusive map icons were set as follows:
650 650  
651 651  {{code language="none"}}
652 652  var res = {
... ... @@ -658,9 +658,8 @@
658 658  
659 659  [[image:1730710395303-672.png||height="771" width="1438"]]
660 660  
661 -===== 4.1.2.3.1 Asset List: =====
659 +Asset List:
662 662  
663 -**Data:**
664 664  
665 665  [[image:1730710693066-349.png||height="772" width="1439"]]
666 666  
... ... @@ -676,400 +676,6 @@
676 676  
677 677  == 4.2 Alarm configuration details ==
678 678  
679 -=== 4.2.1 High temperature ===
680 -
681 -Creat:
682 -
683 -[[image:1730862483514-101.png||height="750" width="1407"]]
684 -
685 -Clear:
686 -
687 -[[image:1730862584519-902.png||height="758" width="1404"]]
688 -
689 -=== 4.2.2 Low Temperature ===
690 -
691 -Creat:
692 -
693 -[[image:1730863708259-750.png||height="752" width="1403"]]
694 -
695 -Clear:
696 -
697 -[[image:1730863750414-979.png||height="746" width="1403"]]
698 -
699 -=== 4.2.3 High humidity ===
700 -
701 -Creat:
702 -
703 -[[image:1730864045747-876.png||height="752" width="1396"]]
704 -
705 -Clear:
706 -
707 -[[image:1730864077395-395.png||height="735" width="1393"]]
708 -
709 -=== 4.2.4 Low humidity ===
710 -
711 -Creat:
712 -
713 -[[image:1730864117808-484.png||height="741" width="1392"]]
714 -
715 -Clear:
716 -
717 -[[image:1730864159071-895.png||height="745" width="1392"]]
718 -
719 -=== 4.2.5 Low voltage ===
720 -
721 -Creat:
722 -
723 -[[image:1730864207037-477.png||height="740" width="1388"]]
724 -
725 -Clear:
726 -
727 -[[image:1730864250506-111.png||height="735" width="1389"]]
728 -
729 -=== 4.2.6 Device Disconnected ===
730 -
731 -Creat:
732 -
733 -[[image:1730864293216-991.png||height="739" width="1387"]]
734 -
735 -Clear:
736 -
737 -[[image:1730864331859-740.png||height="735" width="1385"]]
738 -
739 739  == 4.3 Rule chain configuration details ==
740 740  
741 -[[image:1730864784118-474.png]]
742 -
743 -**Script:**Email configuration for sending device alarm information
744 -
745 -[[image:1730864676542-406.png||height="732" width="1384"]]
746 -
747 -{{code language="none"}}
748 -function locatime(timenumber){
749 - var date = new Date(timenumber)
750 - return date.toLocaleDateString() + ' ' + date.toLocaleTimeString()
751 -}
752 -var name = msg.name
753 -var devicename = msg.originatorName
754 -var label = msg.originatorLabel
755 -var status = msg.status
756 -var detaildata =JSON.parse(msg.details.data)
757 -var tempswitch
758 -
759 -if (name != "Device Disconnected") {
760 - //detaildata=JSON.parse(msg.details.data)
761 - if (detaildata.Temperature_alarm_switch == true) {
762 - tempswitch = "open"
763 - } else {
764 - tempswitch = "close"
765 - }
766 - var humswitch
767 - if (detaildata.Humidity_alarm_switch == true) {
768 - humswitch = "open"
769 - } else {
770 - humswitch = "close"
771 - }
772 - var batswitch
773 - if (detaildata.Voltage_alarm_switch == true) {
774 - batswitch = "open"
775 - } else {
776 - batswitch = "close"
777 - }
778 - var str2 = "<p>-- Temperature alarm switch status: " +
779 - tempswitch + "</p>" +
780 - "<p>-- Humidity alarm switch status: " + humswitch +
781 - "</p>" +
782 - "<p>-- Voltage alarm switch status: " + batswitch
783 -}
784 -
785 -if (name == "High Temperature" && status ==
786 - "ACTIVE_UNACK") {
787 - var emailstr =
788 - "<div><p><span style='color: black; font-weight: bold'>" +
789 - "Device " + label + " has alarm:</span></p>" +
790 - "<p><span style='color: red; font-weight: bold'>-- High Temperature Alarm</span></p>" +
791 - "<p>-- Current Temperature : " + detaildata
792 - .TempC_SHT + "</p><br>" +
793 - "<p>Device Configure:</p>" +
794 - "<p>-- Temperature Threshold : min: " + detaildata
795 - .Low_temperature_alarm + ", max: " + detaildata
796 - .High_temperature_alarm + "</p>" +
797 - "<p>-- Humidity Threshold: min: " + detaildata
798 - .Low_humidity_alarm + ", max:" + detaildata
799 - .High_humidity_alarm + "</p>" +
800 - "<p>-- Battery threshold: min: " + detaildata
801 - .Low_voltage_alarm + "</p>" + str2 + "</div>"
802 - return {
803 - msg: {
804 - "data": emailstr
805 - },
806 - metadata: metadata,
807 - msgType: msgType
808 - };
809 -} else if (name == "Low Temperature" && status ==
810 - "ACTIVE_UNACK") {
811 - var emailstr =
812 - "<div><p><span style='color: black; font-weight: bold'>" +
813 - "Device " + label + " has alarm:</span></p>" +
814 - "<p><span style='color: red; font-weight: bold'>-- Low Temperature Alarm</span></p>" +
815 - "<p>-- Current Temperature : " + detaildata
816 - .TempC_SHT + "</p><br>" +
817 - "<p>Device Configure:</p>" +
818 - "<p>-- Temperature Threshold : min: " + detaildata
819 - .Low_temperature_alarm + ", max: " + detaildata
820 - .High_temperature_alarm + "</p>" +
821 - "<p>-- Humidity Threshold: min: " + detaildata
822 - .Low_humidity_alarm + ", max:" + detaildata
823 - .High_humidity_alarm + "</p>" +
824 - "<p>-- Battery threshold: min: " + detaildata
825 - .Low_voltage_alarm + "</p>" + str2 + "</div>"
826 -
827 - return {
828 - msg: {
829 - "data": emailstr
830 - },
831 - metadata: metadata,
832 - msgType: msgType
833 - };
834 -
835 -} else if (name == "Device Disconnected" && status ==
836 - "ACTIVE_UNACK") {
837 - var time1 = locatime(Number(detaildata.lastActivityTime))
838 - //var time1 = detaildata.lastActivityTime
839 - // var chazhi = parseInt((detaildata.inactivityAlarmTime-detaildata.lastActivityTime)/1000/60)
840 - // var emailstr =
841 - // "<div><p><span style='color: red; font-weight: bold'>" +
842 - // "Device " + label + " has Alarm</span></p><p>Last activity time: "+time1+"</p><p>Last Uplink: 21"+"minutes ago</p></div>"
843 -
844 - var emailstr ="Device " + label + " has Alarm##Last activity time: "+time1+"##Last Uplink: 21minutes ago"
845 - var newType = "POST_TELEMETRY_REQUEST"
846 - return {
847 - msg:emailstr,
848 - metadata: metadata,
849 - msgType: newType
850 - }
851 -} else if (name == "High humidity" && status ==
852 - "ACTIVE_UNACK") {
853 - var emailstr =
854 - "<div><p><span style='color: black; font-weight: bold'>" +
855 - "Device " + label + " has alarm:</span></p>" +
856 - "<p><span style='color: red; font-weight: bold'>-- High Humidity Alarm</span></p>" +
857 - "<p>-- Current Temperature : " + detaildata
858 - .Hum_SHT + "</p><br>" +
859 - "<p>Device Configure:</p>" +
860 - "<p>-- Temperature Threshold : min: " + detaildata
861 - .Low_temperature_alarm + ", max: " + detaildata
862 - .High_temperature_alarm + "</p>" +
863 - "<p>-- Humidity Threshold: min: " + detaildata
864 - .Low_humidity_alarm + ", max:" + detaildata
865 - .High_humidity_alarm + "</p>" +
866 - "<p>-- Battery threshold: min: " + detaildata
867 - .Low_voltage_alarm + "</p>" + str2 + "</div>"
868 -
869 - return {
870 - msg: {
871 - "data": emailstr
872 - },
873 - metadata: metadata,
874 - msgType: msgType
875 - };
876 -} else if (name == "Low humidity" && status ==
877 - "ACTIVE_UNACK") {
878 - var emailstr =
879 - "<div><p><span style='color: black; font-weight: bold'>" +
880 - "Device " + label + " has alarm:</span></p>" +
881 - "<p><span style='color: red; font-weight: bold'>-- Low Humidity Alarm</span></p>" +
882 - "<p>-- Current Temperature : " + detaildata
883 - .Hum_SHT + "</p><br>" +
884 - "<p>Device Configure:</p>" +
885 - "<p>-- Temperature Threshold : min: " + detaildata
886 - .Low_temperature_alarm + ", max: " + detaildata
887 - .High_temperature_alarm + "</p>" +
888 - "<p>-- Humidity Threshold: min: " + detaildata
889 - .Low_humidity_alarm + ", max:" + detaildata
890 - .High_humidity_alarm + "</p>" +
891 - "<p>-- Battery threshold: min: " + detaildata
892 - .Low_voltage_alarm + "</p>" + str2 + "</div>"
893 -
894 - return {
895 - msg: {
896 - "data": emailstr
897 - },
898 - metadata: metadata,
899 - msgType: msgType
900 - };
901 -} else if (name == "Low voltage" && status ==
902 - "ACTIVE_UNACK") {
903 - var emailstr =
904 - "<div><p><span style='color: black; font-weight: bold'>" +
905 - "Device " + label + " has alarm:</span></p>" +
906 - "<p><span style='color: red; font-weight: bold'>-- Low Voltage Alarm</span></p>" +
907 - "<p>-- Current Temperature : " + detaildata.BatV +
908 - "</p><br>" +
909 - "<p>Device Configure:</p>" +
910 - "<p>-- Temperature Threshold : min: " + detaildata
911 - .Low_temperature_alarm + ", max: " + detaildata
912 - .High_temperature_alarm + "</p>" +
913 - "<p>-- Humidity Threshold: min: " + detaildata
914 - .Low_humidity_alarm + ", max:" + detaildata
915 - .High_humidity_alarm + "</p>" +
916 - "<p>-- Battery threshold: min: " + detaildata
917 - .Low_voltage_alarm + "</p>" + str2 + "</div>"
918 -
919 - return {
920 - msg: {
921 - "data": emailstr
922 - },
923 - metadata: metadata,
924 - msgType: msgType
925 - };
926 -} else if (name == "High Temperature" && status ==
927 - "CLEARED_UNACK") {
928 - var emailstr =
929 - "<div><p><span style='color: green; font-weight: bold'>Device " +
930 - label +
931 - " High Temperature Alarm Cleared</span></p>" +
932 - "<p>-- Current Temperature : " + detaildata
933 - .TempC_SHT + "</p><br>" +
934 - "<p>Device Configure:</p>" +
935 - "<p>-- Temperature Threshold : min: " + detaildata
936 - .Low_temperature_alarm + ", max: " + detaildata
937 - .High_temperature_alarm + "</p>" +
938 - "<p>-- Humidity Threshold: min: " + detaildata
939 - .Low_humidity_alarm + ", max:" + detaildata
940 - .High_humidity_alarm + "</p>" +
941 - "<p>-- Battery threshold: min: " + detaildata
942 - .Low_voltage_alarm + "</p>" + str2 + "</div>"
943 -
944 - return {
945 - msg: {
946 - "data": emailstr
947 - },
948 - metadata: metadata,
949 - msgType: msgType
950 - };
951 -} else if (name == "Low Temperature" && status ==
952 - "CLEARED_UNACK") {
953 - var emailstr =
954 - "<div><p><span style='color: green; font-weight: bold'>Device " +
955 - label +
956 - " Low Temperature Alarm Cleared</span></p>" +
957 - "<p>-- Current Temperature : " + detaildata
958 - .TempC_SHT + "</p><br>" +
959 - "<p>Device Configure:</p>" +
960 - "<p>-- Temperature Threshold : min: " + detaildata
961 - .Low_temperature_alarm + ", max: " + detaildata
962 - .High_temperature_alarm + "</p>" +
963 - "<p>-- Humidity Threshold: min: " + detaildata
964 - .Low_humidity_alarm + ", max:" + detaildata
965 - .High_humidity_alarm + "</p>" +
966 - "<p>-- Battery threshold: min: " + detaildata
967 - .Low_voltage_alarm + "</p>" + str2 + "</div>"
968 -
969 - return {
970 - msg: {
971 - "data": emailstr
972 - },
973 - metadata: metadata,
974 - msgType: msgType
975 - };
976 -} else if (name == "High humidity" && status ==
977 - "CLEARED_UNACK") {
978 - var emailstr =
979 - "<div><p><span style='color: green; font-weight: bold'>Device " +
980 - label + " High Humidity Alarm Cleared</span></p>" +
981 - "<p>-- Current Temperature : " + detaildata
982 - .Hum_SHT + "</p><br>" +
983 - "<p>Device Configure:</p>" +
984 - "<p>-- Temperature Threshold : min: " + detaildata
985 - .Low_temperature_alarm + ", max: " + detaildata
986 - .High_temperature_alarm + "</p>" +
987 - "<p>-- Humidity Threshold: min: " + detaildata
988 - .Low_humidity_alarm + ", max:" + detaildata
989 - .High_humidity_alarm + "</p>" +
990 - "<p>-- Battery threshold: min: " + detaildata
991 - .Low_voltage_alarm + "</p>" + str2 + "</div>"
992 -
993 - return {
994 - msg: {
995 - "data": emailstr
996 - },
997 - metadata: metadata,
998 - msgType: msgType
999 - };
1000 -} else if (name == "Low humidity" && status ==
1001 - "CLEARED_UNACK") {
1002 - var emailstr =
1003 - "<div><p><span style='color: green; font-weight: bold'>Device " +
1004 - label + " Low Humidity Alarm Cleared</span></p>" +
1005 - "<p>-- Current Temperature : " + detaildata
1006 - .Hum_SHT + "</p><br>" +
1007 - "<p>Device Configure:</p>" +
1008 - "<p>-- Temperature Threshold : min: " + detaildata
1009 - .Low_temperature_alarm + ", max: " + detaildata
1010 - .High_temperature_alarm + "</p>" +
1011 - "<p>-- Humidity Threshold: min: " + detaildata
1012 - .Low_humidity_alarm + ", max:" + detaildata
1013 - .High_humidity_alarm + "</p>" +
1014 - "<p>-- Battery threshold: min: " + detaildata
1015 - .Low_voltage_alarm + "</p>" + str2 + "</div>"
1016 - return {
1017 - msg: {
1018 - "data": emailstr
1019 - },
1020 - metadata: metadata,
1021 - msgType: msgType
1022 - };
1023 -} else if (name == "Low voltage" && status ==
1024 - "CLEARED_UNACK") {
1025 -
1026 - var emailstr =
1027 - "<div><p><span style='color: green; font-weight: bold'>Device " +
1028 - label + " Low Voltage Alarm Cleared</span></p>" +
1029 - "<p>-- Current Temperature : " + detaildata.BatV +
1030 - "</p><br><br>" +
1031 - "<p>Device Configure:</p>" +
1032 - "<p>-- Temperature Threshold : min: " + detaildata
1033 - .Low_temperature_alarm + ", max: " + detaildata
1034 - .High_temperature_alarm + "</p>" +
1035 - "<p>-- Humidity Threshold: min: " + detaildata
1036 - .Low_humidity_alarm + ", max:" + detaildata
1037 - .High_humidity_alarm + "</p>" +
1038 - "<p>-- Battery threshold: min: " + detaildata
1039 - .Low_voltage_alarm + "</p>" + str2 + "</div>"
1040 -
1041 - return {
1042 - msg: {
1043 - "data": emailstr
1044 - },
1045 - metadata: metadata,
1046 - msgType: msgType
1047 - };
1048 -} else if (name == "Device Disconnected" && status ==
1049 - "CLEARED_UNACK") {
1050 - var time1 = locatime(Number(detaildata.lastActivityTime))
1051 - //var time1 = detaildata.lastActivityTime
1052 - // var chazhi = parseInt((detaildata.inactivityAlarmTime-detaildata.lastActivityTime)/1000/60)
1053 - // var emailstr =
1054 - // "<div><p><span style='color: green; font-weight: bold'>" +
1055 - // "Device " + label + " has Alarm Cleared</span></p><p>Last activity time: "+time1+"</p></div>"
1056 - var emailstr ="Device " + label + " has Alarm Cleared##Last activity time: "+time1
1057 - var newType = "POST_TELEMETRY_REQUEST"
1058 - return {
1059 - msg: emailstr,
1060 - metadata: metadata,
1061 - msgType: newType
1062 - }
1063 -}
1064 -{{/code}}
1065 -
1066 -(% class="wikigeneratedid" %)
1067 -**Generate Report:**
1068 -
1069 -(% class="wikigeneratedid" %)
1070 -[[image:1730865053380-293.png]]
1071 -
1072 -= 5.other =
1073 -
1074 -* If you want to create a similar dashboard, after understanding the case, you can download and import the dashboard, device profiles, rule chains, etc. of the case on GitHub, and make modifications based on them.
1075 -* GitHub address:[[https:~~/~~/github.com/ThingsEye-io/te-platform/tree/main/case/Dragino%20Office%20%26%20Factory>>https://github.com/ThingsEye-io/te-platform/tree/main/case/Dragino%20Office%20%26%20Factory]]
678 += 5. =
1730857191863-514.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -354.7 KB
Content
1730857537965-184.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -455.1 KB
Content
1730857750749-240.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -285.9 KB
Content
1730862483514-101.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -195.8 KB
Content
1730862584519-902.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -191.1 KB
Content
1730863708259-750.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -220.1 KB
Content
1730863750414-979.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -210.6 KB
Content
1730864045747-876.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -208.9 KB
Content
1730864077395-395.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -201.4 KB
Content
1730864117808-484.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -203.0 KB
Content
1730864159071-895.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -226.6 KB
Content
1730864207037-477.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -215.3 KB
Content
1730864250506-111.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -209.5 KB
Content
1730864293216-991.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -138.5 KB
Content
1730864331859-740.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -134.4 KB
Content
1730864460314-611.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -256.7 KB
Content
1730864617480-221.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -260.8 KB
Content
1730864676542-406.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -227.7 KB
Content
1730864784118-474.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -148.8 KB
Content
1730865053380-293.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.hera
Size
... ... @@ -1,1 +1,0 @@
1 -46.7 KB
Content