Changes for page Connect Devices to ThingsEye
Last modified by Hera Guo on 2025/02/18 09:29
Summary
-
Page properties (2 modified, 0 added, 0 removed)
-
Attachments (0 modified, 27 added, 0 removed)
- 1728535775119-971.png
- 1728535857345-950.png
- 1728535941851-388.png
- 1728536142721-488.png
- 1728536305503-380.png
- 1728536374214-962.png
- 1728536420275-153.png
- 1728536524638-768.png
- 1728536541040-814.png
- 1728566363151-470.png
- 1729562069134-315.png
- 1732678750938-753.jpg
- 1732679080974-799.jpg
- 1732679444539-853.jpg
- 1732679647697-982.jpg
- 图片1.png
- 图片10.png
- 图片2.png
- 图片3.png
- 图片4.png
- 图片5.png
- 图片6.png
- 图片7.png
- 图片8.png
- 图片9.png
- 屏幕截图 2024-11-25 095805.png
- 屏幕截图 2024-11-27 113616.png
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. EdwinChen1 +XWiki.hera - Content
-
... ... @@ -7,8 +7,8 @@ 7 7 8 8 = 1. Overview = 9 9 10 +The instructions in this chapter will show you how to connect a device that has been registered to the server to the Thingseye platform. 10 10 11 - 12 12 = 2. UDP Procotol ~-~- Directly Connection = 13 13 14 14 == 2.1 UDP Interface == ... ... @@ -20,12 +20,13 @@ 20 20 21 21 Please contact ThingsEye team for detail how to forward data to client. 22 22 23 +**Note:Currently udp connections require port forwarding, please contact the ThingsEye team to inform them of your device's IMEI before connecting.** 23 23 24 24 == 2.2 Test UDP Interface via Socket Tool == 25 25 26 26 Download the UDP Test Tool from: [[https:~~/~~/sourceforge.net/projects/sockettest/ >>https://sourceforge.net/projects/sockettest/]]. Run this tool, and input the server address and UDP port as below and click send. 27 27 28 -[[image:1728 362612869-443.png||height="454" width="540"]]29 +[[image:1728566363151-470.png]] 29 29 30 30 In server side, Tenant Administrator can check this in Tenant UDP Server location. 31 31 ... ... @@ -37,7 +37,6 @@ 37 37 38 38 We can see the message arrives, but it shows ERROR because the message doesn't follow with the UDP Server format. 39 39 40 - 41 41 == 2.3 Test with Dragino NB device == 42 42 43 43 === 2.3.1 Configure NB-IoT End Node === ... ... @@ -45,11 +45,11 @@ 45 45 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 46 46 47 47 * Set to use ThingsEye UDP server: **AT+SERVADDR=server1.thingseye.io,11560** 48 +* Use UDP Uplink & Json protocol:** AT+PRO=2,5** 48 48 * Equip with a NB-IoT SIM Card to access to NB-IoT Network. 49 49 50 50 The S31-NB's cellular module has the IMEI: **863663062789483** 51 51 52 - 53 53 === 2.3.2 Check Uplink Data === 54 54 55 55 Re-activate the S31-NB, and we can see it in the debug window: ... ... @@ -56,7 +56,6 @@ 56 56 57 57 [[image:1728378218744-800.png||height="431" width="1003"]] 58 58 59 - 60 60 === 2.3.3 Auto-Create Device === 61 61 62 62 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. ... ... @@ -68,6 +68,270 @@ 68 68 69 69 **So we have this device in the Tenant Device List. The next step will be how to use these value to make a nice dashboard for user's application.** 70 70 70 += 3. Connect to The Things Stack = 71 71 72 +== 3.1 Network Structure == 72 72 73 - 74 +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. 75 + 76 +[[image:1732679444539-853.jpg||height="388" width="1452"]] 77 + 78 +== 3.2 Creat Integration for The Things Stack. == 79 + 80 +(% class="lead" %) 81 +Add Integration 82 + 83 +[[image:1728535775119-971.png||height="456" width="1087"]] 84 + 85 + 86 +(% class="lead" %) 87 +Choose Connection Type 88 + 89 +[[image:1728535857345-950.png]] 90 + 91 + 92 +(% class="lead" %) 93 +Input Uplink Data Converter Code 94 + 95 +[[image:1728535941851-388.png||height="466" width="398"]] 96 + 97 +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]] 98 + 99 + 100 +(% class="lead" %) 101 +Input Downlink Converter 102 + 103 +[[image:1728536142721-488.png||height="470" width="407"]] 104 + 105 +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]] 106 + 107 + 108 +(% class="lead" %) 109 +Set up Connection to The Things Network application 110 + 111 +[[image:1728536305503-380.png||height="510" width="1206"]] 112 + 113 + 114 + 115 +(% class="lead" %) 116 +Test Connection & Add iIntegration 117 + 118 +[[image:1728536374214-962.png]] 119 + 120 +After add , we can see the integration here: 121 + 122 +[[image:1728536420275-153.png||height="208" width="1404"]] 123 + 124 + 125 +== 3.3 Test Uplink == 126 + 127 +We can use Simulate Uplink to simulate an uplink in the things stack. Then we should be able to see the message in ThingsEye 128 + 129 +[[image:1728536524638-768.png||height="493" width="1071"]] 130 + 131 + 132 +[[image:1728536541040-814.png]] 133 + 134 += 4.Connect chirpstack to Thingseye by way of MQTT = 135 + 136 +* **How to connect chirpstack to Thingseye by way of MQTT? The following tutorial will show you** 137 + 138 +== 4.1 Network Structure == 139 + 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 + 142 +[[image:1732679647697-982.jpg||height="399" width="1492"]] 143 + 144 +== 4.2 Thingseye adds MQTT integration == 145 + 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 + 148 +[[image:图片1.png]] 149 + 150 +== 4.3 Add an uplink and downlink data converter == 151 + 152 +In the function decoder field, specify the script to parse and transform the data. 153 + 154 +[[image:图片2.png]] 155 + 156 +* **Uplink——JavaScript:** 157 + 158 +var data = decodeToJson(payload); 159 + 160 +var deviceName = data.deviceInfo.deviceName; 161 + 162 +var deviceType = data.applicationName; 163 + 164 +var devEui = data.deviceInfo.devEui 165 + 166 +var label = data.deviceInfo.devEui 167 + 168 +var model = {}; 169 + 170 +var data2 = data.object; 171 + 172 +var flg = data.fPort 173 + 174 +for (var key in data2) { 175 + 176 + ~/~/ 将属性名存入新对象中 177 + 178 + model[key] = data2[key]; 179 + 180 +} 181 + 182 +~/~/var obj = {"devid":deviceName} 183 + 184 +var result = { 185 + 186 + deviceName: deviceName, 187 + 188 + deviceType: deviceType, 189 + 190 + telemetry: model, 191 + 192 + groupName: "Case Study", 193 + 194 + ~/~/label:label, 195 + 196 + attributes:{"devEui":devEui, 197 + 198 + ~/~/"timevalue":"test", 199 + 200 + "inactivityTimeout":1260000 201 + 202 + ~/~/ "High_humidity_alarm":"not set", 203 + 204 + ~/~/ "High_temperature_alarm":"not set", 205 + 206 + ~/~/ "Low_humidity_alarm":"not set", 207 + 208 + ~/~/ "Low_temperature_alarm":"not set", 209 + 210 + ~/~/ "Low_voltage_alarm":"not set" 211 + 212 + ~/~/"customerName": "Civionic Engineering & Consulting (2014) Inc." 213 + 214 + } 215 + 216 +}; 217 + 218 +function decodeToString(payload) { 219 + 220 + return String.fromCharCode.apply(String, payload); 221 + 222 +} 223 + 224 +function decodeToJson(payload) { 225 + 226 + var str = decodeToString(payload); 227 + 228 + var data = JSON.parse(str); 229 + 230 + return data; 231 + 232 +} 233 + 234 +return result; 235 + 236 +[[image:图片3.png]] 237 + 238 +* **Dowblink——JavaScript:** 239 + 240 +~/~/ Encode downlink data from incoming Rule Engine message 241 + 242 +~/~/ msg - JSON message payload downlink message json 243 + 244 +~/~/ msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc. 245 + 246 +~/~/ metadata - list of key-value pairs with additional data about the message 247 + 248 +~/~/ integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter 249 + 250 +~/~/ /~*~* Encoder ~*~*/ 251 + 252 +~/~/var data = {"value":99}; 253 + 254 +~/~/ ~/~/ Process data from incoming message and metadata 255 + 256 +~/~/ data.tempFreq = msg.temperatureUploadFrequency; 257 + 258 +~/~/ data.humFreq = msg.humidityUploadFrequency; 259 + 260 +~/~/ data.devSerialNumber = metadata['ss_serialNumber']; 261 + 262 +~/~/ ~/~/ Result object with encoded downlink payload 263 + 264 +var result = { 265 + 266 + ~/~/ downlink data content type: JSON, TEXT or BINARY (base64 format) 267 + 268 + contentType: "TEXT", 269 + 270 + ~/~/ downlink data 271 + 272 + data: msg.shared_value ,~/~/JSON.stringify(data), 273 + 274 + ~/~/ Optional metadata object presented in key/value format 275 + 276 + metadata: { 277 + 278 + topic: '/test/down/'+metadata.deviceName 279 + 280 + } 281 + 282 +}; 283 + 284 +return result; 285 + 286 +== 4.4 Configure the connection == 287 + 288 +Generate MQTT certificate integrated on chirpstack 289 + 290 +Chirpstack generates CA certificate, TLS certificate, and TLS key respectively 291 + 292 +They correspond to the CA certificate file, Certificate file, and Private key file on thingseye 293 + 294 +[[image:图片4.png]] 295 + 296 +[[image:图片5.png||height="630" width="1269"]] 297 + 298 +* Copy the contents of the certificates and paste them into the linked file below, a total of three certificates are required 299 + 300 +**Integrated Certificate File demo Download Address:** 301 + 302 +[[https:~~/~~/github.com/ThingsEye-io/te-platform/tree/main/chirpstack>>https://github.com/ThingsEye-io/te-platform/tree/main/chirpstack]] 303 + 304 +Enter the server address Host: lns1.thingseye.io on the Connection configuration 305 + 306 +Port: 8883 307 + 308 +Credentials type: PEM 309 + 310 +Upload the certificate and key file 311 + 312 +[[image:图片6.png]] 313 + 314 +[[image:图片7.png]] 315 + 316 +The default for Topic is: 317 + 318 +application/**chirpstack application id**/device/+/event/up 319 + 320 +[[image:图片8.png]] 321 + 322 + 323 +(% class="wikigeneratedid" %) 324 +[[image:屏幕截图 2024-11-25 095805.png||height="374" width="1272"]] 325 + 326 +== 4.5 Check the connection == 327 + 328 +[[image:图片9.png]] 329 + 330 +[[image:图片10.png]] 331 + 332 += 5. Check Data Uplink Log = 333 + 334 +User can check the devices log in Intergration. 335 + 336 +[[image:1729562069134-315.png||height="587" width="723"]]
- 1728535775119-971.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.EdwinChen - Size
-
... ... @@ -1,0 +1,1 @@ 1 +84.1 KB - Content
- 1728535857345-950.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.EdwinChen - Size
-
... ... @@ -1,0 +1,1 @@ 1 +29.4 KB - Content
- 1728535941851-388.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.EdwinChen - Size
-
... ... @@ -1,0 +1,1 @@ 1 +50.3 KB - Content
- 1728536142721-488.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.EdwinChen - Size
-
... ... @@ -1,0 +1,1 @@ 1 +55.5 KB - Content
- 1728536305503-380.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.EdwinChen - Size
-
... ... @@ -1,0 +1,1 @@ 1 +135.2 KB - Content
- 1728536374214-962.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.EdwinChen - Size
-
... ... @@ -1,0 +1,1 @@ 1 +11.8 KB - Content
- 1728536420275-153.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.EdwinChen - Size
-
... ... @@ -1,0 +1,1 @@ 1 +35.3 KB - Content
- 1728536524638-768.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.EdwinChen - Size
-
... ... @@ -1,0 +1,1 @@ 1 +46.6 KB - Content
- 1728536541040-814.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.EdwinChen - Size
-
... ... @@ -1,0 +1,1 @@ 1 +29.0 KB - Content
- 1728566363151-470.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.EdwinChen - Size
-
... ... @@ -1,0 +1,1 @@ 1 +61.9 KB - Content
- 1729562069134-315.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.EdwinChen - Size
-
... ... @@ -1,0 +1,1 @@ 1 +67.5 KB - Content
- 1732678750938-753.jpg
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.hera - Size
-
... ... @@ -1,0 +1,1 @@ 1 +173.5 KB - Content
- 1732679080974-799.jpg
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.hera - Size
-
... ... @@ -1,0 +1,1 @@ 1 +176.4 KB - Content
- 1732679444539-853.jpg
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.hera - Size
-
... ... @@ -1,0 +1,1 @@ 1 +180.5 KB - Content
- 1732679647697-982.jpg
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.hera - Size
-
... ... @@ -1,0 +1,1 @@ 1 +179.2 KB - Content
- 图片1.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.hera - Size
-
... ... @@ -1,0 +1,1 @@ 1 +123.1 KB - Content
- 图片10.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.hera - Size
-
... ... @@ -1,0 +1,1 @@ 1 +173.4 KB - Content
- 图片2.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.hera - Size
-
... ... @@ -1,0 +1,1 @@ 1 +163.3 KB - Content
- 图片3.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.hera - Size
-
... ... @@ -1,0 +1,1 @@ 1 +124.8 KB - Content
- 图片4.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.hera - Size
-
... ... @@ -1,0 +1,1 @@ 1 +68.8 KB - Content
- 图片5.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.hera - Size
-
... ... @@ -1,0 +1,1 @@ 1 +98.5 KB - Content
- 图片6.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.hera - Size
-
... ... @@ -1,0 +1,1 @@ 1 +136.5 KB - Content
- 图片7.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.hera - Size
-
... ... @@ -1,0 +1,1 @@ 1 +143.5 KB - Content
- 图片8.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.hera - Size
-
... ... @@ -1,0 +1,1 @@ 1 +151.0 KB - Content
- 图片9.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.hera - Size
-
... ... @@ -1,0 +1,1 @@ 1 +134.6 KB - Content
- 屏幕截图 2024-11-25 095805.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.hera - Size
-
... ... @@ -1,0 +1,1 @@ 1 +45.7 KB - Content
- 屏幕截图 2024-11-27 113616.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.hera - Size
-
... ... @@ -1,0 +1,1 @@ 1 +117.5 KB - Content