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

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