Wiki source code of Connect Devices to ThingsEye

Version 25.1 by Alec Chen on 2025/11/19 15:43

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