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

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