Changes for page Connect Devices to ThingsEye
Last modified by Alec Chen on 2025/11/26 17:10
Summary
-
Page properties (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. hera1 +XWiki.Alec - Content
-
... ... @@ -1,342 +1,497 @@ 1 +(% _mstvisible="1" %) 1 1 2 2 3 -**Table of Contents:** 4 +(% _mstvisible="1" %) 5 +(% _msthash="777" _msttexthash="303537" _mstvisible="2" %)**Table of Contents:** 4 4 5 5 {{toc/}} 6 6 7 7 8 -= 1. Overview = 10 +(% _mstvisible="1" %) 11 += (% _msthash="757" _msttexthash="149552" _mstvisible="2" %)1. Overview(%%) = 9 9 13 +(% _msthash="756" _msttexthash="7978490" _mstvisible="1" %) 10 10 This instructions will show you how to connect a device that has been registered to the server to the Thingseye platform. 11 11 12 12 13 -= 2. UDP Pro cotol~-~-DirectlyConnection =17 +== (% _msthash="755" _msttexthash="40707030" _mstvisible="2" %)2. UDP Protocol – Direct Connection(%%) == 14 14 15 -== 2.1 UDP Interface == 19 +(% _msthash="755" _msttexthash="40707030" _mstvisible="2" %)2.1 UDP Interface 20 +Server Address: server1.thingseye.io 21 +Port: 11560 22 +Data sent to the above UDP interface will not directly enter the client's database. 16 16 17 -* Server Address: server1.thingseye.io 18 -* Port: 11560 24 +(% _msthash="755" _msttexthash="40707030" _mstvisible="2" %)For detailed information on how to forward data to clients, please contact the ThingsEye team. 19 19 20 - Thedata sent to above UDPinterface willnot godirectlytoclient'sdatabase.26 +(% _msthash="755" _msttexthash="40707030" _mstvisible="2" %)Note: Currently, UDP connections require port forwarding. Please contact the ThingsEye team before connecting and provide them with your device's IMEI. 21 21 22 -Please contact ThingsEye team for detail how to forward data to client. 23 23 24 -**Note:Currently udp connections require port forwarding, please contact the ThingsEye team to inform them of your device's IMEI before connecting.** 25 - 26 - 29 +(% _mstvisible="1" %) 27 27 ---- 28 28 29 -== 2.2 Test with Dragino NB device == 32 +(% _mstvisible="1" %) 33 +== (% _msthash="748" _msttexthash="55449407" _mstvisible="2" %)2.2 使用Dragino NB装置的测试(%%) == 30 30 31 -=== 2.2.1 Configure NB-IoT End Node === 35 +(% _mstvisible="1" %) 36 +=== (% _msthash="747" _msttexthash="11644464" _mstvisible="2" %)2.2.1 配置NB-IoT End Node(%%) === 32 32 33 -Device here is **[[S31-NB>>https://www.dragino.com/products/temperature-humidity-sensor/item/288-s31-nb-s31b-nb.html]]** : and have been configure below 38 +(% _msthash="746" _msttexthash="126369737" _mstvisible="1" %) 39 +这里的设备是(% _istranslated="1" %)**[[S31-NB>>https://www.dragino.com/products/temperature-humidity-sensor/item/288-s31-nb-s31b-nb.html||_istranslated="1"]]**(%%):并且已经在下面配置了 34 34 35 -* Set to use ThingsEye UDP server: **AT+SERVADDR=server1.thingseye.io,11560** 36 -* Use UDP Uplink & Json protocol:** AT+PRO=2,5** 37 -* Equip with a NB-IoT SIM Card to access to NB-IoT Network. 41 +(% _mstvisible="1" %) 42 +* 设置为使用 ThingsEye UDP 服务器:(% _istranslated="1" %)**AT+SERVADDR=server1.thingseye.io,11560** 43 +* 使用 UDP 上行链路和 JSON 协议:(% _istranslated="1" %)**AT+PRO=2,5** 44 +* 配备NB-IoT卡以接入NB-IoT网络。 38 38 39 -The S31-NB's cellular module has the IMEI: **863663062789483** 46 +(% _msthash="742" _msttexthash="52789451" _mstvisible="1" %) 47 +S31-NB的蜂窝模块为IMEI:(% _istranslated="1" %)**863663062789483** 40 40 41 -=== 2.2.2 Check Uplink Data === 49 +(% _mstvisible="1" %) 50 +=== (% _msthash="741" _msttexthash="30173117" _mstvisible="2" %)2.2.2 检查上行数据(%%) === 42 42 43 -Turn on debug mod 52 +(% _msthash="740" _msttexthash="22249344" _mstvisible="1" %) 53 +开启调试模组 44 44 45 -[[image:1758762334133-608.png||height="494" width="1003"]] 55 +(% _mstvisible="1" %) 56 +(% _mstvisible="3" %)[[image:1758762334133-608.png||_mstalt="294801" _msthash="584" _mstvisible="5" height="494" width="1003"]] 46 46 58 +(% _mstvisible="1" %) 47 47 ---- 48 48 49 -Re-activate the S31-NB, and we can see it in the debug window: 61 +(% _msthash="739" _msttexthash="156775723" _mstvisible="1" %) 62 +重新激活S31-NB,我们可以在调试窗口中看到它: 50 50 51 -[[image:1758762371290-726.png||height="528" width="1005"]] 64 +(% _mstvisible="1" %) 65 +(% _mstvisible="3" %)[[image:1758762371290-726.png||_mstalt="296088" _msthash="586" _mstvisible="5" height="528" width="1005"]] 52 52 53 -[[image:1728378218744-800.png||_mstalt="295269" height="431" width="1003"]] 67 +(% _mstvisible="1" %) 68 +(% _mstvisible="3" %)[[image:1728378218744-800.png||_mstalt="295269" _msthash="588" _mstvisible="5" height="431" width="1003"]] 54 54 70 +(% _mstvisible="1" %) 55 55 ---- 56 56 57 -=== 2.2.4 Auto-Create Device === 73 +(% _mstvisible="1" %) 74 +=== (% _msthash="738" _msttexthash="29837379" _mstvisible="2" %)2.2.4 自动创建设备(%%) === 58 58 59 -The default **Tenant UDP Server** has already been configured to decode the Dragino -NB / -CB NB-IoT node. So once each end node sends a data to server. Tenant will auto create the device in the server. 76 +(% _msthash="737" _msttexthash="810829929" _mstvisible="1" %) 77 +默认(% _istranslated="1" %)**的租户UDP服务器**(%%)已经配置好解码Dragino -NB / -CB NB-IoT节点。所以每个端节点都会向服务器发送数据。租户会自动在服务器上创建设备。 60 60 61 -[[image:1728378968101-683.png||_mstalt="297154" height="210" width="1005"]] 79 +(% _mstvisible="1" %) 80 +(% _mstvisible="3" %)[[image:1728378968101-683.png||_mstalt="297154" _msthash="590" _mstvisible="5" height="210" width="1005"]] 62 62 63 -[[image:1728379050044-764.png||_mstalt="295282" height="326" width="1009"]] 82 +(% _mstvisible="1" %) 83 +(% _mstvisible="3" %)[[image:1728379050044-764.png||_mstalt="295282" _msthash="592" _mstvisible="5" height="326" width="1009"]] 64 64 65 65 86 +(% _mstvisible="1" %) 66 66 ---- 67 67 68 -= 3. Connect to The Things Stack = 89 +(% _mstvisible="1" %) 90 += (% _msthash="736" _msttexthash="622947" _mstvisible="2" %)3. Connect to The Things Stack(%%) = 69 69 70 -== 3.1 Network Structure == 92 +(% _mstvisible="1" %) 93 +== (% _msthash="735" _msttexthash="410280" _mstvisible="2" %)3.1 Network Structure(%%) == 71 71 95 +(% _msthash="734" _msttexthash="14835652" _mstvisible="1" %) 72 72 The network diagram below illustrates the connection between the devices and The Things Stack, as well as how the data can be integrated with the ThingsEye IoT platform. 73 73 74 -[[image:1732679444539-853.jpg||_mstalt="296933" height="388" width="1452"]] 98 +(% _mstvisible="1" %) 99 +(% _mstvisible="3" %)[[image:1732679444539-853.jpg||_mstalt="296933" _msthash="594" _mstvisible="5" height="388" width="1452"]] 75 75 76 -== 3.2 Creat Integration for The Things Stack. == 101 +(% _mstvisible="1" %) 102 +== (% _msthash="733" _msttexthash="1191008" _mstvisible="2" %)3.2 Creat Integration for The Things Stack.(%%) == 77 77 78 -(% class="lead" %) 104 +(% class="lead" _msthash="732" _msttexthash="255775" _mstvisible="1" %) 79 79 Add Integration 80 80 81 -[[image:1728535775119-971.png||_mstalt="297661" height="423" width="1007"]] 107 +(% _mstvisible="1" %) 108 +(% _mstvisible="3" %)[[image:1728535775119-971.png||_mstalt="297661" _msthash="596" _mstvisible="5" height="423" width="1007"]] 82 82 83 83 84 -(% class="lead" %) 111 +(% class="lead" _msthash="731" _msttexthash="448994" _mstvisible="1" %) 85 85 Choose Connection Type 86 86 87 -[[image:1728535857345-950.png||_mstalt="297154" height="257" width="403"]] 114 +(% _mstvisible="1" %) 115 +(% _mstvisible="3" %)[[image:1728535857345-950.png||_mstalt="297154" _msthash="598" _mstvisible="5" height="257" width="403"]] 88 88 89 89 90 -(% class="lead" %) 118 +(% class="lead" _msthash="730" _msttexthash="762996" _mstvisible="1" %) 91 91 Input Uplink Data Converter Code 92 92 93 -[[image:1728535941851-388.png||_mstalt="297856" height="466" width="398"]] 121 +(% _mstvisible="1" %) 122 +(% _mstvisible="3" %)[[image:1728535941851-388.png||_mstalt="297856" _msthash="600" _mstvisible="5" height="466" width="398"]] 94 94 124 +(% _msthash="729" _msttexthash="16454490" _mstvisible="1" %) 95 95 Demo JavaScript Code: [[https:~~/~~/raw.githubusercontent.com/ThingsEye-io/te-platform/refs/heads/main/Data%20Converters/The_Things_Network_MQTT_Uplink_Converter.js >>https://raw.githubusercontent.com/ThingsEye-io/te-platform/refs/heads/main/Data%20Converters/The_Things_Network_MQTT_Uplink_Converter.js]] 96 96 97 97 98 -(% class="lead" %) 128 +(% class="lead" _msthash="728" _msttexthash="532480" _mstvisible="1" %) 99 99 Input Downlink Converter 100 100 101 -[[image:1728536142721-488.png||_mstalt="296127" height="470" width="407"]] 131 +(% _mstvisible="1" %) 132 +(% _mstvisible="3" %)[[image:1728536142721-488.png||_mstalt="296127" _msthash="602" _mstvisible="5" height="470" width="407"]] 102 102 134 +(% _msthash="727" _msttexthash="19064695" _mstvisible="1" %) 103 103 Example Javascript Code as below: [[https:~~/~~/raw.githubusercontent.com/ThingsEye-io/te-platform/refs/heads/main/Data%20Converters/The_Things_Network_MQTT_Downlink_Converter.js>>https://raw.githubusercontent.com/ThingsEye-io/te-platform/refs/heads/main/Data%20Converters/The_Things_Network_MQTT_Downlink_Converter.js]] 104 104 105 105 106 -(% class="lead" %) 138 +(% class="lead" _msthash="726" _msttexthash="1724853" _mstvisible="1" %) 107 107 Set up Connection to The Things Network application 108 108 109 -[[image:1728536305503-380.png||_mstalt="293254" height="431" width="1019"]] 141 +(% _mstvisible="1" %) 142 +(% _mstvisible="3" %)[[image:1728536305503-380.png||_mstalt="293254" _msthash="604" _mstvisible="5" height="431" width="1019"]] 110 110 111 111 112 112 113 -(% class="lead" %) 146 +(% class="lead" _msthash="725" _msttexthash="851097" _mstvisible="1" %) 114 114 Test Connection & Add iIntegration 115 115 116 -[[image:1728536374214-962.png||_mstalt="295893" height="380" width="1024"]] 149 +(% _mstvisible="1" %) 150 +(% _mstvisible="3" %)[[image:1728536374214-962.png||_mstalt="295893" _msthash="606" _mstvisible="5" height="380" width="1024"]] 117 117 152 +(% _msthash="724" _msttexthash="1177579" _mstvisible="1" %) 118 118 After add , we can see the integration here: 119 119 120 -[[image:1728536420275-153.png||_mstalt="293748" height="152" width="1026"]] 155 +(% _mstvisible="1" %) 156 +(% _mstvisible="3" %)[[image:1728536420275-153.png||_mstalt="293748" _msthash="608" _mstvisible="5" height="152" width="1026"]] 121 121 122 122 123 -== 3.3 Test Uplink == 159 +(% _mstvisible="1" %) 160 +== (% _msthash="723" _msttexthash="213447" _mstvisible="2" %)3.3 Test Uplink(%%) == 124 124 162 +(% _msthash="722" _msttexthash="7855835" _mstvisible="1" %) 125 125 We can use Simulate Uplink to simulate an uplink in the things stack. Then we should be able to see the message in ThingsEye 126 126 127 -[[image:1728536524638-768.png||_mstalt="298870" height="473" width="1028"]] 165 +(% _mstvisible="1" %) 166 +(% _mstvisible="3" %)[[image:1728536524638-768.png||_mstalt="298870" _msthash="610" _mstvisible="5" height="473" width="1028"]] 128 128 129 129 130 -[[image:1728536541040-814.png||_mstalt="293215" height="424" width="1026"]] 169 +(% _mstvisible="1" %) 170 +(% _mstvisible="3" %)[[image:1728536541040-814.png||_mstalt="293215" _msthash="612" _mstvisible="5" height="424" width="1026"]] 131 131 132 132 173 +(% _mstvisible="1" %) 174 +---- 133 133 134 -= 4.Connect chirpstack to Thingseye by way of MQTT = 176 +(% _mstvisible="1" %) 177 += (% _msthash="721" _msttexthash="1472211" _mstvisible="2" %)4.Connect chirpstack to Thingseye by way of MQTT(%%) = 135 135 136 -* **How to connect chirpstack to Thingseye by way of MQTT? The following tutorial will show you** 179 +(% _mstvisible="1" %) 180 +* (% _msthash="720" _msttexthash="4693741" _mstvisible="3" %)**How to connect chirpstack to Thingseye by way of MQTT? The following tutorial will show you** 137 137 138 -== 4.1 Network Structure == 182 +(% _mstvisible="1" %) 183 +== (% _msthash="719" _msttexthash="410371" _mstvisible="2" %)4.1 Network Structure(%%) == 139 139 185 +(% _msthash="718" _msttexthash="14117480" _mstvisible="1" %) 140 140 The network diagram below illustrates the connection between the devices andchirpstack, as well as how the data can be integrated with the ThingsEye IoT platform. 141 141 142 -[[image:1732679647697-982.jpg||_mstalt="299884" height="399" width="1492"]] 188 +(% _mstvisible="1" %) 189 +(% _mstvisible="3" %)[[image:1732679647697-982.jpg||_mstalt="299884" _msthash="614" _mstvisible="5" height="399" width="1492"]] 143 143 144 -== 4.2 Thingseye adds MQTT integration == 191 +(% _mstvisible="1" %) 192 +== (% _msthash="717" _msttexthash="897286" _mstvisible="2" %)4.2 Thingseye adds MQTT integration(%%) == 145 145 194 +(% _msthash="716" _msttexthash="15186782" _mstvisible="1" %) 146 146 Go to the Integrations page in the Integrations center section. Click the plus button to start adding a new integration. Select the type "MQTT" integration and click "Next"; 147 147 148 -[[image:1758762634175-353.png||height="783" width="1020"]] 197 +(% _mstvisible="1" %) 198 +(% _mstvisible="3" %)[[image:1758762634175-353.png||_mstalt="295893" _msthash="616" _mstvisible="5" height="783" width="1020"]] 149 149 150 -== 4.3 Add an uplink and downlink data converter == 200 +(% _mstvisible="1" %) 201 +== (% _msthash="715" _msttexthash="1329445" _mstvisible="2" %)4.3 Add an uplink and downlink data converter(%%) == 151 151 203 +(% _msthash="714" _msttexthash="4516408" _mstvisible="1" %) 152 152 In the function decoder field, specify the uplink script to parse and transform the data. 153 153 154 -[[image:1758763061703-634.png||height="783" width="1020"]] 206 +(% _mstvisible="1" %) 207 +(% _mstvisible="3" %)[[image:1758763061703-634.png||_mstalt="294671" _msthash="618" _mstvisible="5" height="783" width="1020"]] 155 155 156 -* **Uplink——JavaScript:** 209 +(% _mstvisible="1" %) 210 +* (% _msthash="713" _msttexthash="24445408" _mstvisible="3" %)**Uplink——JavaScript:** 157 157 212 +(% _msthash="712" _msttexthash="792233" _mstvisible="1" %) 158 158 var data = decodeToJson(payload); 159 159 215 +(% _msthash="711" _msttexthash="1379794" _mstvisible="1" %) 160 160 var deviceName = data.deviceInfo.deviceName; 161 161 218 +(% _msthash="710" _msttexthash="1079247" _mstvisible="1" %) 162 162 var deviceType = data.applicationName; 163 163 221 +(% _msthash="709" _msttexthash="909376" _mstvisible="1" %) 164 164 var devEui = data.deviceInfo.devEui 165 165 224 +(% _msthash="708" _msttexthash="861510" _mstvisible="1" %) 166 166 var label = data.deviceInfo.devEui 167 167 227 +(% _msthash="707" _msttexthash="195442" _mstvisible="1" %) 168 168 var model = {}; 169 169 230 +(% _msthash="706" _msttexthash="435448" _mstvisible="1" %) 170 170 var data2 = data.object; 171 171 233 +(% _msthash="705" _msttexthash="326274" _mstvisible="1" %) 172 172 var flg = data.fPort 173 173 236 +(% _msthash="704" _msttexthash="380965" _mstvisible="1" %) 174 174 for (var key in data2) { 175 175 239 +(% _msthash="703" _msttexthash="43058977" _mstvisible="1" %) 176 176 ~/~/ 将属性名存入新对象中 177 177 242 +(% _msthash="702" _msttexthash="475553" _mstvisible="1" %) 178 178 model[key] = data2[key]; 179 179 245 +(% _mstvisible="1" %) 180 180 } 181 181 248 +(% _msthash="701" _msttexthash="757653" _mstvisible="1" %) 182 182 ~/~/var obj = {"devid":deviceName} 183 183 251 +(% _msthash="700" _msttexthash="183287" _mstvisible="1" %) 184 184 var result = { 185 185 254 +(% _msthash="699" _msttexthash="473265" _mstvisible="1" %) 186 186 deviceName: deviceName, 187 187 257 +(% _msthash="698" _msttexthash="489918" _mstvisible="1" %) 188 188 deviceType: deviceType, 189 189 260 +(% _msthash="697" _msttexthash="297271" _mstvisible="1" %) 190 190 telemetry: model, 191 191 263 +(% _msthash="696" _msttexthash="446498" _mstvisible="1" %) 192 192 groupName: "Case Study", 193 193 266 +(% _msthash="695" _msttexthash="217633" _mstvisible="1" %) 194 194 ~/~/label:label, 195 195 269 +(% _msthash="694" _msttexthash="685984" _mstvisible="1" %) 196 196 attributes:{"devEui":devEui, 197 197 272 +(% _msthash="693" _msttexthash="386308" _mstvisible="1" %) 198 198 ~/~/"timevalue":"test", 199 199 275 +(% _msthash="692" _msttexthash="551772" _mstvisible="1" %) 200 200 "inactivityTimeout":1260000 201 201 278 +(% _msthash="691" _msttexthash="894530" _mstvisible="1" %) 202 202 ~/~/ "High_humidity_alarm":"not set", 203 203 281 +(% _msthash="690" _msttexthash="1052753" _mstvisible="1" %) 204 204 ~/~/ "High_temperature_alarm":"not set", 205 205 284 +(% _msthash="689" _msttexthash="848783" _mstvisible="1" %) 206 206 ~/~/ "Low_humidity_alarm":"not set", 207 207 287 +(% _msthash="688" _msttexthash="1002833" _mstvisible="1" %) 208 208 ~/~/ "Low_temperature_alarm":"not set", 209 209 290 +(% _msthash="687" _msttexthash="773682" _mstvisible="1" %) 210 210 ~/~/ "Low_voltage_alarm":"not set" 211 211 293 +(% _msthash="686" _msttexthash="2381015" _mstvisible="1" %) 212 212 ~/~/"customerName": "Civionic Engineering & Consulting (2014) Inc." 213 213 296 +(% _mstvisible="1" %) 214 214 } 215 215 299 +(% _mstvisible="1" %) 216 216 }; 217 217 302 +(% _msthash="685" _msttexthash="937586" _mstvisible="1" %) 218 218 function decodeToString(payload) { 219 219 305 +(% _msthash="684" _msttexthash="1818154" _mstvisible="1" %) 220 220 return String.fromCharCode.apply(String, payload); 221 221 308 +(% _mstvisible="1" %) 222 222 } 223 223 311 +(% _msthash="683" _msttexthash="834496" _mstvisible="1" %) 224 224 function decodeToJson(payload) { 225 225 314 +(% _msthash="682" _msttexthash="850616" _mstvisible="1" %) 226 226 var str = decodeToString(payload); 227 227 317 +(% _msthash="681" _msttexthash="512044" _mstvisible="1" %) 228 228 var data = JSON.parse(str); 229 229 320 +(% _msthash="680" _msttexthash="173511" _mstvisible="1" %) 230 230 return data; 231 231 323 +(% _mstvisible="1" %) 232 232 } 233 233 326 +(% _msthash="679" _msttexthash="233116" _mstvisible="1" %) 234 234 return result; 235 235 329 +(% _mstvisible="1" %) 236 236 ---- 237 237 332 +(% _msthash="678" _msttexthash="4743882" _mstvisible="1" %) 238 238 In the function decoder field, specify the downlink script to parse and transform the data. 239 239 240 -[[image:1758763019466-819.png||height="787" width="1022"]] 335 +(% _mstvisible="1" %) 336 +(% _mstvisible="3" %)[[image:1758763019466-819.png||_mstalt="298311" _msthash="620" _mstvisible="5" height="787" width="1022"]] 241 241 242 -* **Dowblink——JavaScript:** 338 +(% _mstvisible="1" %) 339 +* (% _msthash="677" _msttexthash="26632970" _mstvisible="3" %)**Dowblink——JavaScript:** 243 243 341 +(% _msthash="676" _msttexthash="2052284" _mstvisible="1" %) 244 244 ~/~/ Encode downlink data from incoming Rule Engine message 245 245 344 +(% _msthash="675" _msttexthash="1638546" _mstvisible="1" %) 246 246 ~/~/ msg - JSON message payload downlink message json 247 247 347 +(% _msthash="674" _msttexthash="3854773" _mstvisible="1" %) 248 248 ~/~/ msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc. 249 249 350 +(% _msthash="673" _msttexthash="3368742" _mstvisible="1" %) 250 250 ~/~/ metadata - list of key-value pairs with additional data about the message 251 251 353 +(% _msthash="672" _msttexthash="8087157" _mstvisible="1" %) 252 252 ~/~/ integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter 253 253 356 +(% _msthash="671" _msttexthash="199069" _mstvisible="1" %) 254 254 ~/~/ /~*~* Encoder ~*~*/ 255 255 359 +(% _msthash="670" _msttexthash="455715" _mstvisible="1" %) 256 256 ~/~/var data = {"value":99}; 257 257 362 +(% _msthash="669" _msttexthash="1757431" _mstvisible="1" %) 258 258 ~/~/ ~/~/ Process data from incoming message and metadata 259 259 365 +(% _msthash="668" _msttexthash="1852279" _mstvisible="1" %) 260 260 ~/~/ data.tempFreq = msg.temperatureUploadFrequency; 261 261 368 +(% _msthash="667" _msttexthash="1572038" _mstvisible="1" %) 262 262 ~/~/ data.humFreq = msg.humidityUploadFrequency; 263 263 371 +(% _msthash="666" _msttexthash="2049957" _mstvisible="1" %) 264 264 ~/~/ data.devSerialNumber = metadata['ss_serialNumber']; 265 265 374 +(% _msthash="665" _msttexthash="1576731" _mstvisible="1" %) 266 266 ~/~/ ~/~/ Result object with encoded downlink payload 267 267 377 +(% _msthash="664" _msttexthash="183287" _mstvisible="1" %) 268 268 var result = { 269 269 380 +(% _msthash="663" _msttexthash="2331082" _mstvisible="1" %) 270 270 ~/~/ downlink data content type: JSON, TEXT or BINARY (base64 format) 271 271 383 +(% _msthash="662" _msttexthash="322049" _mstvisible="1" %) 272 272 contentType: "TEXT", 273 273 386 +(% _msthash="661" _msttexthash="249210" _mstvisible="1" %) 274 274 ~/~/ downlink data 275 275 389 +(% _msthash="660" _msttexthash="1524952" _mstvisible="1" %) 276 276 data: msg.shared_value ,~/~/JSON.stringify(data), 277 277 392 +(% _msthash="659" _msttexthash="2147704" _mstvisible="1" %) 278 278 ~/~/ Optional metadata object presented in key/value format 279 279 395 +(% _msthash="658" _msttexthash="150189" _mstvisible="1" %) 280 280 metadata: { 281 281 398 +(% _msthash="657" _msttexthash="1241370" _mstvisible="1" %) 282 282 topic: '/test/down/'+metadata.deviceName 283 283 401 +(% _mstvisible="1" %) 284 284 } 285 285 404 +(% _mstvisible="1" %) 286 286 }; 287 287 407 +(% _msthash="656" _msttexthash="233116" _mstvisible="1" %) 288 288 return result; 289 289 410 +(% _mstvisible="1" %) 290 290 ---- 291 291 292 -== 4.4 Configure the connection == 413 +(% _mstvisible="1" %) 414 +== (% _msthash="655" _msttexthash="640094" _mstvisible="2" %)4.4 Configure the connection(%%) == 293 293 416 +(% _msthash="654" _msttexthash="1780675" _mstvisible="1" %) 294 294 Generate MQTT certificate integrated on chirpstack 295 295 419 +(% _msthash="653" _msttexthash="3723447" _mstvisible="1" %) 296 296 Chirpstack generates CA certificate, TLS certificate, and TLS key respectively 297 297 422 +(% _msthash="652" _msttexthash="5123092" _mstvisible="1" %) 298 298 They correspond to the CA certificate file, Certificate file, and Private key file on thingseye 299 299 300 -[[image:图片4.png||_mstalt="5131737" height="504" width="1016"]] 425 +(% _mstvisible="1" %) 426 +(% _mstvisible="3" %)[[image:图片4.png||_mstalt="5131737" _msthash="622" _mstvisible="5" height="504" width="1016"]] 301 301 302 -[[image:图片5.png||_mstalt="5131854" height="505" width="1017"]] 428 +(% _mstvisible="1" %) 429 +(% _mstvisible="3" %)[[image:图片5.png||_mstalt="5131854" _msthash="624" _mstvisible="5" height="505" width="1017"]] 303 303 431 +(% _mstvisible="1" %) 304 304 * Copy the contents of the certificates and paste them into the linked file below, a total of three certificates are required 305 305 306 -**Integrated Certificate File demo Download Address:** 434 +(% _mstvisible="1" %) 435 +(% _msthash="650" _msttexthash="44967858" _mstvisible="2" %)**Integrated Certificate File demo Download Address:** 307 307 308 -[[https:~~/~~/github.com/ThingsEye-io/te-platform/tree/main/chirpstack>>https://github.com/ThingsEye-io/te-platform/tree/main/chirpstack]] 437 +(% _mstvisible="1" %) 438 +[[https:~~/~~/github.com/ThingsEye-io/te-platform/tree/main/chirpstack>>https://github.com/ThingsEye-io/te-platform/tree/main/chirpstack||_msthash="649" _msttexthash="3132909" _mstvisible="2"]] 309 309 440 +(% _msthash="648" _msttexthash="4037631" _mstvisible="1" %) 310 310 Enter the server address Host: lns1.thingseye.io on the Connection configuration 311 311 443 +(% _msthash="647" _msttexthash="93873" _mstvisible="1" %) 312 312 Port: 8883 313 313 446 +(% _msthash="646" _msttexthash="380666" _mstvisible="1" %) 314 314 Credentials type: PEM 315 315 449 +(% _msthash="645" _msttexthash="880399" _mstvisible="1" %) 316 316 Upload the certificate and key file 317 317 318 -[[image:图片6.png||_mstalt="5131971"]] 452 +(% _mstvisible="1" %) 453 +(% _mstvisible="3" %)[[image:图片6.png||_mstalt="5131971" _msthash="626" _mstvisible="5" height="509" width="1026"]] 319 319 320 -[[image:图片7.png||_mstalt="5132088"]] 455 +(% _mstvisible="1" %) 456 +(% _mstvisible="3" %)[[image:图片7.png||_mstalt="5132088" _msthash="628" _mstvisible="5" height="509" width="1025"]] 321 321 458 +(% _mstvisible="1" %) 459 +---- 460 + 461 +(% _msthash="644" _msttexthash="472992" _mstvisible="1" %) 322 322 The default for Topic is: 323 323 464 +(% _msthash="643" _msttexthash="2223559" _mstvisible="1" %) 324 324 application/**chirpstack application id**/device/+/event/up 325 325 326 -[[image:图片8.png||_mstalt="5132205"]] 467 +(% _mstvisible="1" %) 468 +(% _mstvisible="3" %)[[image:图片8.png||_mstalt="5132205" _msthash="630" _mstvisible="5" height="508" width="1024"]] 327 327 328 328 329 -(% class="wikigeneratedid" %) 330 -[[image:屏幕截图 2024-11-25 095805.png||_mstalt="10831028" height="3 74" width="1272"]]471 +(% class="wikigeneratedid" _mstvisible="1" %) 472 +(% _mstvisible="3" %)[[image:屏幕截图 2024-11-25 095805.png||_mstalt="10831028" _msthash="632" _mstvisible="5" height="301" width="1024"]] 331 331 332 -== 4.5 Check the connection == 474 +(% _mstvisible="1" %) 475 +---- 333 333 334 -[[image:图片9.png||_mstalt="5132322"]] 477 +(% _mstvisible="1" %) 478 +== (% _msthash="642" _msttexthash="471978" _mstvisible="2" %)4.5 Check the connection(%%) == 335 335 336 -[[image:图片10.png||_mstalt="5142449"]] 480 +(% _mstvisible="1" %) 481 +(% _mstvisible="3" %)[[image:图片9.png||_mstalt="5132322" _msthash="634" _mstvisible="5" height="509" width="1025"]] 337 337 338 -= 5. Check Data Uplink Log = 483 +(% _mstvisible="1" %) 484 +(% _mstvisible="3" %)[[image:图片10.png||_mstalt="5142449" _msthash="636" _mstvisible="5" height="509" width="1026"]] 339 339 486 + 487 +(% _mstvisible="1" %) 488 +---- 489 + 490 +(% _mstvisible="1" %) 491 += (% _msthash="641" _msttexthash="418145" _mstvisible="2" %)5. Check Data Uplink Log(%%) = 492 + 493 +(% _msthash="640" _msttexthash="1422681" _mstvisible="1" %) 340 340 User can check the devices log in Intergration. 341 341 342 -[[image:1729562069134-315.png||_mstalt="294190" height="587" width="723"]] 496 +(% _mstvisible="1" %) 497 +(% _mstvisible="3" %)[[image:1729562069134-315.png||_mstalt="294190" _msthash="638" _mstvisible="5" height="587" width="723"]]