Changes for page Demo for Smart Office, Factory
Last modified by Hera Guo on 2024/11/11 17:08
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Attachments (0 modified, 0 added, 23 removed)
- 1730857191863-514.png
- 1730857537965-184.png
- 1730857750749-240.png
- 1730862483514-101.png
- 1730862584519-902.png
- 1730863708259-750.png
- 1730863750414-979.png
- 1730864045747-876.png
- 1730864077395-395.png
- 1730864117808-484.png
- 1730864159071-895.png
- 1730864207037-477.png
- 1730864250506-111.png
- 1730864293216-991.png
- 1730864331859-740.png
- 1730864460314-611.png
- 1730864617480-221.png
- 1730864676542-406.png
- 1730864784118-474.png
- 1730865053380-293.png
- 1731315784538-942.png
- 1731315965141-491.png
- 屏幕截图 2024-11-04 135045.png
Details
- Page properties
-
- Content
-
... ... @@ -1,4 +1,4 @@ 1 - 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,62 +95,58 @@ 95 95 96 96 === 4.1.1.Data source (Entity aliases) === 97 97 98 - detail:Obtaindata based on dashboard status95 +Asset map: 99 99 100 -[[image:17307094 24998-915.png||height="729" width="1436"]]97 +[[image:1730709409941-536.png||height="729" width="1440"]] 101 101 102 - Alarm:Obtain alarm information99 +detail: 103 103 104 -[[image:17307094 79828-595.png||height="696" width="1435"]]101 +[[image:1730709424998-915.png||height="729" width="1436"]] 105 105 106 - Dragino&GXHL,Ltd:Obtaindata through asset types103 +devid: 107 107 108 -[[image:1730709 511861-439.png||height="714" width="1435"]]105 +[[image:1730709442773-502.png||height="738" width="1434"]] 109 109 110 -S elected Supermarket:Retrieve devices by device type107 +State: 111 111 112 -[[image:1730709 527720-418.png||height="751" width="1433"]]109 +[[image:1730709461297-207.png||height="706" width="1434"]] 113 113 114 - Supermarket Devices:Obtain data through device type111 +Alarm: 115 115 116 -[[image:1730709 555797-383.png||height="726" width="1434"]]113 +[[image:1730709479828-595.png||height="696" width="1435"]] 117 117 118 - LHT65NDevice:Obtaindata basedon devicetype115 +Dragino&GXHL,Ltd: 119 119 120 -[[image:1730 857191863-514.png||height="725" width="1433"]]117 +[[image:1730709511861-439.png||height="714" width="1435"]] 121 121 122 - === 4.1.2.PageConfiguration ===119 +Selected Supermarket: 123 123 124 - ==== 4.1.2.1、Configure thenterface of thethirdlayer Davies.====121 +[[image:1730709527720-418.png||height="751" width="1433"]] 125 125 126 - This layer is the display interface of our sensors. In this interface, we need to create a dashboard based on the data we want from our sensors, or import thedashboard of the basic sensors, download themodules,and import them into the third level dashboard123 +Supermarkets: 127 127 128 - Addres:[[https:~~/~~/github.com/ThingsEye-io/te-platform/tree/main/Devices/Dragino>>https://github.com/ThingsEye-io/te-platform/tree/main/Devices/Dragino]]125 +[[image:1730709542597-321.png||height="734" width="1435"]] 129 129 130 - 4.1.2.1.1 Import dashboardwidget127 +Supermarket Devices: 131 131 132 - Step1.Opena blank dashboard and click on"Addwidget" in the upper right corner129 +[[image:1730709555797-383.png||height="726" width="1434"]] 133 133 134 -[[image:1731315784538-942.png||height="777" width="1435"]] 135 135 136 - Step2.Import the widgetsyouwantas shownin the followingfigure132 +=== 4.1.2.Page Configuration === 137 137 138 - [[image:1731315965141-491.png||height="740"width="1432"]]134 +==== 4.1.2.1、Configure the interface of the third layer Davies. ==== 139 139 136 + 140 140 ==== 4.1.2.2、Configure the interface of the second layer asset ==== 141 141 142 - ===== 4.1.2.2.1Equipment distribution diagram:=====139 +**Equipment distribution diagram:** 143 143 144 144 **Data:** 145 145 146 146 [[image:1730770392454-317.png||height="745" width="1439"]] 147 147 148 - **Appearannce:**In this module, we needto arrange our devices in the correspondingpositions anduse icons to display our devices. Therefore, inthe Appearanceinterface, we need toconfigure them145 +Tooltip function: 149 149 150 -**Tooltip function:**This module displays the current information of the device 151 - 152 -[[image:1730857537965-184.png]] 153 - 154 154 {{code language="none"}} 155 155 var msg = data 156 156 if(msg.Label=="gateway" && msg.type == "gateway"){ ... ... @@ -176,12 +176,8 @@ 176 176 } 177 177 {{/code}} 178 178 179 -(% class="wikigeneratedid" id="HMarkerimagefunctionFF1A" %) 180 -**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: ==== 181 181 182 -(% class="wikigeneratedid" %) 183 -[[image:1730857750749-240.png]] 184 - 185 185 {{code language="none"}} 186 186 var res 187 187 var msg = data ... ... @@ -271,11 +271,9 @@ 271 271 return res; 272 272 {{/code}} 273 273 274 -(% class="wikigeneratedid" %) 275 -[[image:1730770875793-351.png||height="799" width="1474"]] 263 +==== [[image:1730770875793-351.png]] ==== 276 276 277 -(% class="wikigeneratedid" %) 278 -**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 ==== 279 279 280 280 {{code language="none"}} 281 281 var entitySubType; ... ... @@ -334,24 +334,20 @@ 334 334 335 335 {{/code}} 336 336 337 -[[image:1730771103096-522.png ||height="815" width="1503"]]324 +[[image:1730771103096-522.png]] 338 338 339 - ===== 4.1.2.2.2Device List=====326 +Device List 340 340 341 -(% class="wikigeneratedid" id="HDataFF1A" %) 342 -**Data:** 328 +Data: 343 343 344 -[[image:1730771199343-553.png ||height="802" width="1501"]]330 +[[image:1730771199343-553.png]] 345 345 346 - **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: 347 347 348 348 [[image:1730771228766-212.png]] 349 349 350 -(% class="wikigeneratedid" id="HEditdeviceFF1A" %) 351 -**Edit device:**Implementation function: Device editing 336 +==== Edit device: ==== 352 352 353 -[[image:1730771256045-238.png]] 354 - 355 355 {{code language="none"}} 356 356 let $injector = widgetContext.$scope.$injector; 357 357 let customDialog = $injector.get(widgetContext.servicesMap.get('customDialog')); ... ... @@ -448,9 +448,9 @@ 448 448 } 449 449 {{/code}} 450 450 451 - **Deletedevice:**Implementation function: Device deletion434 +==== [[image:1730771256045-238.png]] ==== 452 452 453 - [[image:1730771318657-502.png]]436 +Delete device: 454 454 455 455 {{code language="none"}} 456 456 let $injector = widgetContext.$scope.$injector; ... ... @@ -481,9 +481,9 @@ 481 481 482 482 {{/code}} 483 483 484 - **jump:I**mplementation function: Jump to the device details page467 +[[image:1730771318657-502.png]] 485 485 486 - [[image:1730771386258-676.png]]469 +jump 487 487 488 488 {{code language="none"}} 489 489 console.log(entityName) ... ... @@ -542,10 +542,9 @@ 542 542 } 543 543 {{/code}} 544 544 545 -(% class="wikigeneratedid" id="H-1" %) 546 -**Add device:**Implementation function: Add device 528 +==== [[image:1730771386258-676.png]] ==== 547 547 548 - [[image:1730771441589-122.png]]530 +Add device: 549 549 550 550 {{code language="none"}} 551 551 let $injector = widgetContext.$scope.$injector; ... ... @@ -610,25 +610,27 @@ 610 610 } 611 611 {{/code}} 612 612 613 -==== =4.1.2.2.3Asset Alarm:=====595 +==== [[image:1730771441589-122.png]] ==== 614 614 615 - **Data:**597 +==== Asset Alarm: ==== 616 616 617 - [[image:1730771504586-433.png||height="762" width="1431"]]599 +Data: 618 618 619 - ==== (%id="cke_bm_373849S" style="display:none" %) (%%)4.1.2.3、Configure the first layer menu interface ====601 +[[image:1730771504586-433.png]] 620 620 621 -==== =4.1.2.3.1 Map:=====603 +==== 4.1.2.3、Configure the first layer menu interface ==== 622 622 623 -** Data:**605 +**Map:** 624 624 607 +Data: 608 + 625 625 [[image:1730710271230-716.png||height="729" width="1427"]] 626 626 627 - **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 location611 +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 628 628 629 629 [[image:1730710850458-781.png||height="770" width="1429"]] 630 630 631 - **Select supermarket:**Implementation function: Refresh the side page615 +Select supermarket: 632 632 633 633 {{code language="none"}} 634 634 var params = widgetContext.stateController.getStateParams(); ... ... @@ -643,7 +643,7 @@ 643 643 644 644 [[image:1730710875401-848.png||height="767" width="1429"]] 645 645 646 - **Supermarket_detail:**Implementation function: Jump to the asset details page630 +Supermarket_detail: 647 647 648 648 {{code language="none"}} 649 649 var params = JSON.parse(JSON.stringify(widgetContext.stateController.getStateParams())); ... ... @@ -660,9 +660,7 @@ 660 660 661 661 [[image:1730710990334-601.png||height="772" width="1433"]] 662 662 663 -* ((( 664 -In this demo, exclusive map icons were set as follows: 665 -))) 647 +* In this demo, exclusive map icons were set as follows: 666 666 667 667 {{code language="none"}} 668 668 var res = { ... ... @@ -674,418 +674,23 @@ 674 674 675 675 [[image:1730710395303-672.png||height="771" width="1438"]] 676 676 677 - ===== 4.1.2.3.2Asset List:=====659 +Asset List: 678 678 679 -**Data:** 680 680 681 681 [[image:1730710693066-349.png||height="772" width="1439"]] 682 682 683 - **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 location664 +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 684 684 685 685 [[image:1730712335338-750.png||height="751" width="1423"]] 686 686 687 687 [[image:1730712473941-913.png||height="781" width="1422"]] 688 688 689 - ===== 4.1.2.3.3All Alarms:=====670 +All Alarms: 690 690 691 691 [[image:1730712539209-554.png||height="764" width="1424"]] 692 692 693 693 == 4.2 Alarm configuration details == 694 694 695 -=== 4.2.1 High temperature === 696 - 697 -Creat: 698 - 699 -[[image:1730862483514-101.png||height="750" width="1407"]] 700 - 701 -Clear: 702 - 703 -[[image:1730862584519-902.png||height="758" width="1404"]] 704 - 705 -=== 4.2.2 Low Temperature === 706 - 707 -Creat: 708 - 709 -[[image:1730863708259-750.png||height="752" width="1403"]] 710 - 711 -Clear: 712 - 713 -[[image:1730863750414-979.png||height="746" width="1403"]] 714 - 715 -=== 4.2.3 High humidity === 716 - 717 -Creat: 718 - 719 -[[image:1730864045747-876.png||height="752" width="1396"]] 720 - 721 -Clear: 722 - 723 -[[image:1730864077395-395.png||height="735" width="1393"]] 724 - 725 -=== 4.2.4 Low humidity === 726 - 727 -Creat: 728 - 729 -[[image:1730864117808-484.png||height="741" width="1392"]] 730 - 731 -Clear: 732 - 733 -[[image:1730864159071-895.png||height="745" width="1392"]] 734 - 735 -=== 4.2.5 Low voltage === 736 - 737 -Creat: 738 - 739 -[[image:1730864207037-477.png||height="740" width="1388"]] 740 - 741 -Clear: 742 - 743 -[[image:1730864250506-111.png||height="735" width="1389"]] 744 - 745 -=== 4.2.6 Device Disconnected === 746 - 747 -Creat: 748 - 749 -[[image:1730864293216-991.png||height="739" width="1387"]] 750 - 751 -Clear: 752 - 753 -[[image:1730864331859-740.png||height="735" width="1385"]] 754 - 755 755 == 4.3 Rule chain configuration details == 756 756 757 -[[image:1730864784118-474.png]] 758 - 759 -**Script:**Email configuration for sending device alarm information 760 - 761 -[[image:1730864676542-406.png||height="732" width="1384"]] 762 - 763 -{{code language="none"}} 764 -function locatime(timenumber){ 765 - var date = new Date(timenumber) 766 - return date.toLocaleDateString() + ' ' + date.toLocaleTimeString() 767 -} 768 -var name = msg.name 769 -var devicename = msg.originatorName 770 -var label = msg.originatorLabel 771 -var status = msg.status 772 -var detaildata =JSON.parse(msg.details.data) 773 -var tempswitch 774 - 775 -if (name != "Device Disconnected") { 776 - //detaildata=JSON.parse(msg.details.data) 777 - if (detaildata.Temperature_alarm_switch == true) { 778 - tempswitch = "open" 779 - } else { 780 - tempswitch = "close" 781 - } 782 - var humswitch 783 - if (detaildata.Humidity_alarm_switch == true) { 784 - humswitch = "open" 785 - } else { 786 - humswitch = "close" 787 - } 788 - var batswitch 789 - if (detaildata.Voltage_alarm_switch == true) { 790 - batswitch = "open" 791 - } else { 792 - batswitch = "close" 793 - } 794 - var str2 = "<p>-- Temperature alarm switch status: " + 795 - tempswitch + "</p>" + 796 - "<p>-- Humidity alarm switch status: " + humswitch + 797 - "</p>" + 798 - "<p>-- Voltage alarm switch status: " + batswitch 799 -} 800 - 801 -if (name == "High Temperature" && status == 802 - "ACTIVE_UNACK") { 803 - var emailstr = 804 - "<div><p><span style='color: black; font-weight: bold'>" + 805 - "Device " + label + " has alarm:</span></p>" + 806 - "<p><span style='color: red; font-weight: bold'>-- High Temperature Alarm</span></p>" + 807 - "<p>-- Current Temperature : " + detaildata 808 - .TempC_SHT + "</p><br>" + 809 - "<p>Device Configure:</p>" + 810 - "<p>-- Temperature Threshold : min: " + detaildata 811 - .Low_temperature_alarm + ", max: " + detaildata 812 - .High_temperature_alarm + "</p>" + 813 - "<p>-- Humidity Threshold: min: " + detaildata 814 - .Low_humidity_alarm + ", max:" + detaildata 815 - .High_humidity_alarm + "</p>" + 816 - "<p>-- Battery threshold: min: " + detaildata 817 - .Low_voltage_alarm + "</p>" + str2 + "</div>" 818 - return { 819 - msg: { 820 - "data": emailstr 821 - }, 822 - metadata: metadata, 823 - msgType: msgType 824 - }; 825 -} else if (name == "Low Temperature" && status == 826 - "ACTIVE_UNACK") { 827 - var emailstr = 828 - "<div><p><span style='color: black; font-weight: bold'>" + 829 - "Device " + label + " has alarm:</span></p>" + 830 - "<p><span style='color: red; font-weight: bold'>-- Low Temperature Alarm</span></p>" + 831 - "<p>-- Current Temperature : " + detaildata 832 - .TempC_SHT + "</p><br>" + 833 - "<p>Device Configure:</p>" + 834 - "<p>-- Temperature Threshold : min: " + detaildata 835 - .Low_temperature_alarm + ", max: " + detaildata 836 - .High_temperature_alarm + "</p>" + 837 - "<p>-- Humidity Threshold: min: " + detaildata 838 - .Low_humidity_alarm + ", max:" + detaildata 839 - .High_humidity_alarm + "</p>" + 840 - "<p>-- Battery threshold: min: " + detaildata 841 - .Low_voltage_alarm + "</p>" + str2 + "</div>" 842 - 843 - return { 844 - msg: { 845 - "data": emailstr 846 - }, 847 - metadata: metadata, 848 - msgType: msgType 849 - }; 850 - 851 -} else if (name == "Device Disconnected" && status == 852 - "ACTIVE_UNACK") { 853 - var time1 = locatime(Number(detaildata.lastActivityTime)) 854 - //var time1 = detaildata.lastActivityTime 855 - // var chazhi = parseInt((detaildata.inactivityAlarmTime-detaildata.lastActivityTime)/1000/60) 856 - // var emailstr = 857 - // "<div><p><span style='color: red; font-weight: bold'>" + 858 - // "Device " + label + " has Alarm</span></p><p>Last activity time: "+time1+"</p><p>Last Uplink: 21"+"minutes ago</p></div>" 859 - 860 - var emailstr ="Device " + label + " has Alarm##Last activity time: "+time1+"##Last Uplink: 21minutes ago" 861 - var newType = "POST_TELEMETRY_REQUEST" 862 - return { 863 - msg:emailstr, 864 - metadata: metadata, 865 - msgType: newType 866 - } 867 -} else if (name == "High humidity" && status == 868 - "ACTIVE_UNACK") { 869 - var emailstr = 870 - "<div><p><span style='color: black; font-weight: bold'>" + 871 - "Device " + label + " has alarm:</span></p>" + 872 - "<p><span style='color: red; font-weight: bold'>-- High Humidity Alarm</span></p>" + 873 - "<p>-- Current Temperature : " + detaildata 874 - .Hum_SHT + "</p><br>" + 875 - "<p>Device Configure:</p>" + 876 - "<p>-- Temperature Threshold : min: " + detaildata 877 - .Low_temperature_alarm + ", max: " + detaildata 878 - .High_temperature_alarm + "</p>" + 879 - "<p>-- Humidity Threshold: min: " + detaildata 880 - .Low_humidity_alarm + ", max:" + detaildata 881 - .High_humidity_alarm + "</p>" + 882 - "<p>-- Battery threshold: min: " + detaildata 883 - .Low_voltage_alarm + "</p>" + str2 + "</div>" 884 - 885 - return { 886 - msg: { 887 - "data": emailstr 888 - }, 889 - metadata: metadata, 890 - msgType: msgType 891 - }; 892 -} else if (name == "Low humidity" && status == 893 - "ACTIVE_UNACK") { 894 - var emailstr = 895 - "<div><p><span style='color: black; font-weight: bold'>" + 896 - "Device " + label + " has alarm:</span></p>" + 897 - "<p><span style='color: red; font-weight: bold'>-- Low Humidity Alarm</span></p>" + 898 - "<p>-- Current Temperature : " + detaildata 899 - .Hum_SHT + "</p><br>" + 900 - "<p>Device Configure:</p>" + 901 - "<p>-- Temperature Threshold : min: " + detaildata 902 - .Low_temperature_alarm + ", max: " + detaildata 903 - .High_temperature_alarm + "</p>" + 904 - "<p>-- Humidity Threshold: min: " + detaildata 905 - .Low_humidity_alarm + ", max:" + detaildata 906 - .High_humidity_alarm + "</p>" + 907 - "<p>-- Battery threshold: min: " + detaildata 908 - .Low_voltage_alarm + "</p>" + str2 + "</div>" 909 - 910 - return { 911 - msg: { 912 - "data": emailstr 913 - }, 914 - metadata: metadata, 915 - msgType: msgType 916 - }; 917 -} else if (name == "Low voltage" && status == 918 - "ACTIVE_UNACK") { 919 - var emailstr = 920 - "<div><p><span style='color: black; font-weight: bold'>" + 921 - "Device " + label + " has alarm:</span></p>" + 922 - "<p><span style='color: red; font-weight: bold'>-- Low Voltage Alarm</span></p>" + 923 - "<p>-- Current Temperature : " + detaildata.BatV + 924 - "</p><br>" + 925 - "<p>Device Configure:</p>" + 926 - "<p>-- Temperature Threshold : min: " + detaildata 927 - .Low_temperature_alarm + ", max: " + detaildata 928 - .High_temperature_alarm + "</p>" + 929 - "<p>-- Humidity Threshold: min: " + detaildata 930 - .Low_humidity_alarm + ", max:" + detaildata 931 - .High_humidity_alarm + "</p>" + 932 - "<p>-- Battery threshold: min: " + detaildata 933 - .Low_voltage_alarm + "</p>" + str2 + "</div>" 934 - 935 - return { 936 - msg: { 937 - "data": emailstr 938 - }, 939 - metadata: metadata, 940 - msgType: msgType 941 - }; 942 -} else if (name == "High Temperature" && status == 943 - "CLEARED_UNACK") { 944 - var emailstr = 945 - "<div><p><span style='color: green; font-weight: bold'>Device " + 946 - label + 947 - " High Temperature Alarm Cleared</span></p>" + 948 - "<p>-- Current Temperature : " + detaildata 949 - .TempC_SHT + "</p><br>" + 950 - "<p>Device Configure:</p>" + 951 - "<p>-- Temperature Threshold : min: " + detaildata 952 - .Low_temperature_alarm + ", max: " + detaildata 953 - .High_temperature_alarm + "</p>" + 954 - "<p>-- Humidity Threshold: min: " + detaildata 955 - .Low_humidity_alarm + ", max:" + detaildata 956 - .High_humidity_alarm + "</p>" + 957 - "<p>-- Battery threshold: min: " + detaildata 958 - .Low_voltage_alarm + "</p>" + str2 + "</div>" 959 - 960 - return { 961 - msg: { 962 - "data": emailstr 963 - }, 964 - metadata: metadata, 965 - msgType: msgType 966 - }; 967 -} else if (name == "Low Temperature" && status == 968 - "CLEARED_UNACK") { 969 - var emailstr = 970 - "<div><p><span style='color: green; font-weight: bold'>Device " + 971 - label + 972 - " Low Temperature Alarm Cleared</span></p>" + 973 - "<p>-- Current Temperature : " + detaildata 974 - .TempC_SHT + "</p><br>" + 975 - "<p>Device Configure:</p>" + 976 - "<p>-- Temperature Threshold : min: " + detaildata 977 - .Low_temperature_alarm + ", max: " + detaildata 978 - .High_temperature_alarm + "</p>" + 979 - "<p>-- Humidity Threshold: min: " + detaildata 980 - .Low_humidity_alarm + ", max:" + detaildata 981 - .High_humidity_alarm + "</p>" + 982 - "<p>-- Battery threshold: min: " + detaildata 983 - .Low_voltage_alarm + "</p>" + str2 + "</div>" 984 - 985 - return { 986 - msg: { 987 - "data": emailstr 988 - }, 989 - metadata: metadata, 990 - msgType: msgType 991 - }; 992 -} else if (name == "High humidity" && status == 993 - "CLEARED_UNACK") { 994 - var emailstr = 995 - "<div><p><span style='color: green; font-weight: bold'>Device " + 996 - label + " High Humidity Alarm Cleared</span></p>" + 997 - "<p>-- Current Temperature : " + detaildata 998 - .Hum_SHT + "</p><br>" + 999 - "<p>Device Configure:</p>" + 1000 - "<p>-- Temperature Threshold : min: " + detaildata 1001 - .Low_temperature_alarm + ", max: " + detaildata 1002 - .High_temperature_alarm + "</p>" + 1003 - "<p>-- Humidity Threshold: min: " + detaildata 1004 - .Low_humidity_alarm + ", max:" + detaildata 1005 - .High_humidity_alarm + "</p>" + 1006 - "<p>-- Battery threshold: min: " + detaildata 1007 - .Low_voltage_alarm + "</p>" + str2 + "</div>" 1008 - 1009 - return { 1010 - msg: { 1011 - "data": emailstr 1012 - }, 1013 - metadata: metadata, 1014 - msgType: msgType 1015 - }; 1016 -} else if (name == "Low humidity" && status == 1017 - "CLEARED_UNACK") { 1018 - var emailstr = 1019 - "<div><p><span style='color: green; font-weight: bold'>Device " + 1020 - label + " Low Humidity Alarm Cleared</span></p>" + 1021 - "<p>-- Current Temperature : " + detaildata 1022 - .Hum_SHT + "</p><br>" + 1023 - "<p>Device Configure:</p>" + 1024 - "<p>-- Temperature Threshold : min: " + detaildata 1025 - .Low_temperature_alarm + ", max: " + detaildata 1026 - .High_temperature_alarm + "</p>" + 1027 - "<p>-- Humidity Threshold: min: " + detaildata 1028 - .Low_humidity_alarm + ", max:" + detaildata 1029 - .High_humidity_alarm + "</p>" + 1030 - "<p>-- Battery threshold: min: " + detaildata 1031 - .Low_voltage_alarm + "</p>" + str2 + "</div>" 1032 - return { 1033 - msg: { 1034 - "data": emailstr 1035 - }, 1036 - metadata: metadata, 1037 - msgType: msgType 1038 - }; 1039 -} else if (name == "Low voltage" && status == 1040 - "CLEARED_UNACK") { 1041 - 1042 - var emailstr = 1043 - "<div><p><span style='color: green; font-weight: bold'>Device " + 1044 - label + " Low Voltage Alarm Cleared</span></p>" + 1045 - "<p>-- Current Temperature : " + detaildata.BatV + 1046 - "</p><br><br>" + 1047 - "<p>Device Configure:</p>" + 1048 - "<p>-- Temperature Threshold : min: " + detaildata 1049 - .Low_temperature_alarm + ", max: " + detaildata 1050 - .High_temperature_alarm + "</p>" + 1051 - "<p>-- Humidity Threshold: min: " + detaildata 1052 - .Low_humidity_alarm + ", max:" + detaildata 1053 - .High_humidity_alarm + "</p>" + 1054 - "<p>-- Battery threshold: min: " + detaildata 1055 - .Low_voltage_alarm + "</p>" + str2 + "</div>" 1056 - 1057 - return { 1058 - msg: { 1059 - "data": emailstr 1060 - }, 1061 - metadata: metadata, 1062 - msgType: msgType 1063 - }; 1064 -} else if (name == "Device Disconnected" && status == 1065 - "CLEARED_UNACK") { 1066 - var time1 = locatime(Number(detaildata.lastActivityTime)) 1067 - //var time1 = detaildata.lastActivityTime 1068 - // var chazhi = parseInt((detaildata.inactivityAlarmTime-detaildata.lastActivityTime)/1000/60) 1069 - // var emailstr = 1070 - // "<div><p><span style='color: green; font-weight: bold'>" + 1071 - // "Device " + label + " has Alarm Cleared</span></p><p>Last activity time: "+time1+"</p></div>" 1072 - var emailstr ="Device " + label + " has Alarm Cleared##Last activity time: "+time1 1073 - var newType = "POST_TELEMETRY_REQUEST" 1074 - return { 1075 - msg: emailstr, 1076 - metadata: metadata, 1077 - msgType: newType 1078 - } 1079 -} 1080 -{{/code}} 1081 - 1082 -(% class="wikigeneratedid" %) 1083 -**Generate Report:** 1084 - 1085 -(% class="wikigeneratedid" %) 1086 -[[image:1730865053380-293.png]] 1087 - 1088 -= 5.other = 1089 - 1090 -* 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. 1091 -* 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
- 1731315784538-942.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.hera - Size
-
... ... @@ -1,1 +1,0 @@ 1 -50.2 KB - Content
- 1731315965141-491.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.hera - Size
-
... ... @@ -1,1 +1,0 @@ 1 -447.8 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