Last modified by Alec Chen on 2025/11/26 17:10

From version 23.1
edited by Hera Guo
on 2025/09/25 09:18
Change comment: There is no comment for this version
To version 25.1
edited by Alec Chen
on 2025/11/19 15:43
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.hera
1 +XWiki.Alec
Content
... ... @@ -1,342 +1,505 @@
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 Procotol  ~-~- Directly Connection =
17 +(% _mstvisible="1" %)
18 += (% _msthash="755" _msttexthash="40707030" _mstvisible="2" %)2. UDP Procotol——直接连接(%%) =
14 14  
15 -== 2.1 UDP Interface ==
20 +(% _mstvisible="1" %)
21 +== (% _msthash="754" _msttexthash="8267792" _mstvisible="2" %)2.1 UDP接口(%%) ==
16 16  
17 -* Server Address: server1.thingseye.io
18 -* Port: 11560
23 +(% _mstvisible="1" %)
24 +* 服务器地址:server1.thingseye.io
25 +* 端口:11560
19 19  
20 -The data sent to above UDP interface will not go directly to client's database.
27 +(% _msthash="751" _msttexthash="151236319" _mstvisible="1" %)
28 +发送到上方UDP接口的数据不会直接进入客户端数据库。
21 21  
22 -Please contact ThingsEye team for detail how to forward data to client.
30 +(% _msthash="750" _msttexthash="169541242" _mstvisible="1" %)
31 +如需详细了解如何将数据转发给客户,请联系ThingsEye团队。
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.**
33 +(% _mstvisible="1" %)
34 +(% _msthash="749" _msttexthash="321726288" _mstvisible="2" %)**注意:目前 UDP 连接需要端口转发,连接前请联系 ThingsEye 团队告知他们您设备的 IMEI。**
25 25  
26 26  
37 +(% _mstvisible="1" %)
27 27  ----
28 28  
29 -== 2.2 Test with Dragino NB device ==
40 +(% _mstvisible="1" %)
41 +== (% _msthash="748" _msttexthash="55449407" _mstvisible="2" %)2.2 使用Dragino NB装置的测试(%%) ==
30 30  
31 -=== 2.2.1 Configure NB-IoT End Node ===
43 +(% _mstvisible="1" %)
44 +=== (% _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
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"]]**(%%):并且已经在下面配置了
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.
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网络。
38 38  
39 -The S31-NB's cellular module has the IMEI: **863663062789483**
54 +(% _msthash="742" _msttexthash="52789451" _mstvisible="1" %)
55 +S31-NB的蜂窝模块为IMEI:(% _istranslated="1" %)**863663062789483**
40 40  
41 -=== 2.2.2 Check Uplink Data ===
57 +(% _mstvisible="1" %)
58 +=== (% _msthash="741" _msttexthash="30173117" _mstvisible="2" %)2.2.2 检查上行数据(%%) ===
42 42  
43 -Turn on debug mod
60 +(% _msthash="740" _msttexthash="22249344" _mstvisible="1" %)
61 +开启调试模组
44 44  
45 -[[image:1758762334133-608.png||height="494" width="1003"]]
63 +(% _mstvisible="1" %)
64 +(% _mstvisible="3" %)[[image:1758762334133-608.png||_mstalt="294801" _msthash="584" _mstvisible="5" height="494" width="1003"]]
46 46  
66 +(% _mstvisible="1" %)
47 47  ----
48 48  
49 -Re-activate the S31-NB, and we can see it in the debug window:
69 +(% _msthash="739" _msttexthash="156775723" _mstvisible="1" %)
70 +重新激活S31-NB,我们可以在调试窗口中看到它:
50 50  
51 -[[image:1758762371290-726.png||height="528" width="1005"]]
72 +(% _mstvisible="1" %)
73 +(% _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"]]
75 +(% _mstvisible="1" %)
76 +(% _mstvisible="3" %)[[image:1728378218744-800.png||_mstalt="295269" _msthash="588" _mstvisible="5" height="431" width="1003"]]
54 54  
78 +(% _mstvisible="1" %)
55 55  ----
56 56  
57 -=== 2.2.4 Auto-Create Device ===
81 +(% _mstvisible="1" %)
82 +=== (% _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.
84 +(% _msthash="737" _msttexthash="810829929" _mstvisible="1" %)
85 +默认(% _istranslated="1" %)**的租户UDP服务器**(%%)已经配置好解码Dragino -NB / -CB NB-IoT节点。所以每个端节点都会向服务器发送数据。租户会自动在服务器上创建设备。
60 60  
61 -[[image:1728378968101-683.png||_mstalt="297154" height="210" width="1005"]]
87 +(% _mstvisible="1" %)
88 +(% _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"]]
90 +(% _mstvisible="1" %)
91 +(% _mstvisible="3" %)[[image:1728379050044-764.png||_mstalt="295282" _msthash="592" _mstvisible="5" height="326" width="1009"]]
64 64  
65 65  
94 +(% _mstvisible="1" %)
66 66  ----
67 67  
68 -= 3.  Connect to The Things Stack =
97 +(% _mstvisible="1" %)
98 += (% _msthash="736" _msttexthash="622947" _mstvisible="2" %)3.  Connect to The Things Stack(%%) =
69 69  
70 -== 3.1 Network Structure ==
100 +(% _mstvisible="1" %)
101 +== (% _msthash="735" _msttexthash="410280" _mstvisible="2" %)3.1 Network Structure(%%) ==
71 71  
103 +(% _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"]]
106 +(% _mstvisible="1" %)
107 +(% _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. ==
109 +(% _mstvisible="1" %)
110 +== (% _msthash="733" _msttexthash="1191008" _mstvisible="2" %)3.2 Creat Integration for The Things Stack.(%%) ==
77 77  
78 -(% class="lead" %)
112 +(% _msthash="732" _msttexthash="255775" _mstvisible="1" class="lead" %)
79 79  Add Integration
80 80  
81 -[[image:1728535775119-971.png||_mstalt="297661" height="423" width="1007"]]
115 +(% _mstvisible="1" %)
116 +(% _mstvisible="3" %)[[image:1728535775119-971.png||_mstalt="297661" _msthash="596" _mstvisible="5" height="423" width="1007"]]
82 82  
83 83  
84 -(% class="lead" %)
119 +(% _msthash="731" _msttexthash="448994" _mstvisible="1" class="lead" %)
85 85  Choose Connection Type
86 86  
87 -[[image:1728535857345-950.png||_mstalt="297154" height="257" width="403"]]
122 +(% _mstvisible="1" %)
123 +(% _mstvisible="3" %)[[image:1728535857345-950.png||_mstalt="297154" _msthash="598" _mstvisible="5" height="257" width="403"]]
88 88  
89 89  
90 -(% class="lead" %)
126 +(% _msthash="730" _msttexthash="762996" _mstvisible="1" class="lead" %)
91 91  Input Uplink Data Converter Code
92 92  
93 -[[image:1728535941851-388.png||_mstalt="297856" height="466" width="398"]]
129 +(% _mstvisible="1" %)
130 +(% _mstvisible="3" %)[[image:1728535941851-388.png||_mstalt="297856" _msthash="600" _mstvisible="5" height="466" width="398"]]
94 94  
132 +(% _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" %)
136 +(% _msthash="728" _msttexthash="532480" _mstvisible="1" class="lead" %)
99 99  Input Downlink Converter
100 100  
101 -[[image:1728536142721-488.png||_mstalt="296127" height="470" width="407"]]
139 +(% _mstvisible="1" %)
140 +(% _mstvisible="3" %)[[image:1728536142721-488.png||_mstalt="296127" _msthash="602" _mstvisible="5" height="470" width="407"]]
102 102  
142 +(% _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" %)
146 +(% _msthash="726" _msttexthash="1724853" _mstvisible="1" class="lead" %)
107 107  Set up Connection to The Things Network application
108 108  
109 -[[image:1728536305503-380.png||_mstalt="293254" height="431" width="1019"]]
149 +(% _mstvisible="1" %)
150 +(% _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" %)
154 +(% _msthash="725" _msttexthash="851097" _mstvisible="1" class="lead" %)
114 114  Test Connection & Add iIntegration
115 115  
116 -[[image:1728536374214-962.png||_mstalt="295893" height="380" width="1024"]]
157 +(% _mstvisible="1" %)
158 +(% _mstvisible="3" %)[[image:1728536374214-962.png||_mstalt="295893" _msthash="606" _mstvisible="5" height="380" width="1024"]]
117 117  
160 +(% _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"]]
163 +(% _mstvisible="1" %)
164 +(% _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 ==
167 +(% _mstvisible="1" %)
168 +== (% _msthash="723" _msttexthash="213447" _mstvisible="2" %)3.3 Test Uplink(%%) ==
124 124  
170 +(% _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"]]
173 +(% _mstvisible="1" %)
174 +(% _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"]]
177 +(% _mstvisible="1" %)
178 +(% _mstvisible="3" %)[[image:1728536541040-814.png||_mstalt="293215" _msthash="612" _mstvisible="5" height="424" width="1026"]]
131 131  
132 132  
181 +(% _mstvisible="1" %)
182 +----
133 133  
134 -= 4.Connect chirpstack to Thingseye by way of MQTT =
184 +(% _mstvisible="1" %)
185 += (% _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**
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**
137 137  
138 -== 4.1 Network Structure ==
190 +(% _mstvisible="1" %)
191 +== (% _msthash="719" _msttexthash="410371" _mstvisible="2" %)4.1 Network Structure(%%) ==
139 139  
193 +(% _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"]]
196 +(% _mstvisible="1" %)
197 +(% _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 ==
199 +(% _mstvisible="1" %)
200 +== (% _msthash="717" _msttexthash="897286" _mstvisible="2" %)4.2 Thingseye adds MQTT integration(%%) ==
145 145  
202 +(% _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"]]
205 +(% _mstvisible="1" %)
206 +(% _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 ==
208 +(% _mstvisible="1" %)
209 +== (% _msthash="715" _msttexthash="1329445" _mstvisible="2" %)4.3 Add an uplink and downlink data converter(%%) ==
151 151  
211 +(% _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"]]
214 +(% _mstvisible="1" %)
215 +(% _mstvisible="3" %)[[image:1758763061703-634.png||_mstalt="294671" _msthash="618" _mstvisible="5" height="783" width="1020"]]
155 155  
156 -* **Uplink——JavaScript:**
217 +(% _mstvisible="1" %)
218 +* (% _msthash="713" _msttexthash="24445408" _mstvisible="3" %)**Uplink——JavaScript:**
157 157  
220 +(% _msthash="712" _msttexthash="792233" _mstvisible="1" %)
158 158  var data = decodeToJson(payload);
159 159  
223 +(% _msthash="711" _msttexthash="1379794" _mstvisible="1" %)
160 160  var deviceName = data.deviceInfo.deviceName;
161 161  
226 +(% _msthash="710" _msttexthash="1079247" _mstvisible="1" %)
162 162  var deviceType = data.applicationName;
163 163  
229 +(% _msthash="709" _msttexthash="909376" _mstvisible="1" %)
164 164  var devEui = data.deviceInfo.devEui
165 165  
232 +(% _msthash="708" _msttexthash="861510" _mstvisible="1" %)
166 166  var label = data.deviceInfo.devEui
167 167  
235 +(% _msthash="707" _msttexthash="195442" _mstvisible="1" %)
168 168  var model = {};
169 169  
238 +(% _msthash="706" _msttexthash="435448" _mstvisible="1" %)
170 170  var data2 = data.object;
171 171  
241 +(% _msthash="705" _msttexthash="326274" _mstvisible="1" %)
172 172  var flg = data.fPort
173 173  
244 +(% _msthash="704" _msttexthash="380965" _mstvisible="1" %)
174 174  for (var key in data2) {
175 175  
247 +(% _msthash="703" _msttexthash="43058977" _mstvisible="1" %)
176 176   ~/~/ 将属性名存入新对象中
177 177  
250 +(% _msthash="702" _msttexthash="475553" _mstvisible="1" %)
178 178   model[key] = data2[key];
179 179  
253 +(% _mstvisible="1" %)
180 180  }
181 181  
256 +(% _msthash="701" _msttexthash="757653" _mstvisible="1" %)
182 182  ~/~/var obj = {"devid":deviceName}
183 183  
259 +(% _msthash="700" _msttexthash="183287" _mstvisible="1" %)
184 184  var result = {
185 185  
262 +(% _msthash="699" _msttexthash="473265" _mstvisible="1" %)
186 186   deviceName: deviceName,
187 187  
265 +(% _msthash="698" _msttexthash="489918" _mstvisible="1" %)
188 188   deviceType: deviceType,
189 189  
268 +(% _msthash="697" _msttexthash="297271" _mstvisible="1" %)
190 190   telemetry: model,
191 191  
271 +(% _msthash="696" _msttexthash="446498" _mstvisible="1" %)
192 192   groupName: "Case Study",
193 193  
274 +(% _msthash="695" _msttexthash="217633" _mstvisible="1" %)
194 194   ~/~/label:label,
195 195  
277 +(% _msthash="694" _msttexthash="685984" _mstvisible="1" %)
196 196   attributes:{"devEui":devEui,
197 197  
280 +(% _msthash="693" _msttexthash="386308" _mstvisible="1" %)
198 198   ~/~/"timevalue":"test",
199 199  
283 +(% _msthash="692" _msttexthash="551772" _mstvisible="1" %)
200 200   "inactivityTimeout":1260000
201 201  
286 +(% _msthash="691" _msttexthash="894530" _mstvisible="1" %)
202 202   ~/~/ "High_humidity_alarm":"not set",
203 203  
289 +(% _msthash="690" _msttexthash="1052753" _mstvisible="1" %)
204 204   ~/~/ "High_temperature_alarm":"not set",
205 205  
292 +(% _msthash="689" _msttexthash="848783" _mstvisible="1" %)
206 206   ~/~/ "Low_humidity_alarm":"not set",
207 207  
295 +(% _msthash="688" _msttexthash="1002833" _mstvisible="1" %)
208 208   ~/~/ "Low_temperature_alarm":"not set",
209 209  
298 +(% _msthash="687" _msttexthash="773682" _mstvisible="1" %)
210 210   ~/~/ "Low_voltage_alarm":"not set"
211 211  
301 +(% _msthash="686" _msttexthash="2381015" _mstvisible="1" %)
212 212   ~/~/"customerName": "Civionic Engineering & Consulting (2014) Inc."
213 213  
304 +(% _mstvisible="1" %)
214 214   }
215 215  
307 +(% _mstvisible="1" %)
216 216  };
217 217  
310 +(% _msthash="685" _msttexthash="937586" _mstvisible="1" %)
218 218  function decodeToString(payload) {
219 219  
313 +(% _msthash="684" _msttexthash="1818154" _mstvisible="1" %)
220 220   return String.fromCharCode.apply(String, payload);
221 221  
316 +(% _mstvisible="1" %)
222 222  }
223 223  
319 +(% _msthash="683" _msttexthash="834496" _mstvisible="1" %)
224 224  function decodeToJson(payload) {
225 225  
322 +(% _msthash="682" _msttexthash="850616" _mstvisible="1" %)
226 226   var str = decodeToString(payload);
227 227  
325 +(% _msthash="681" _msttexthash="512044" _mstvisible="1" %)
228 228   var data = JSON.parse(str);
229 229  
328 +(% _msthash="680" _msttexthash="173511" _mstvisible="1" %)
230 230   return data;
231 231  
331 +(% _mstvisible="1" %)
232 232  }
233 233  
334 +(% _msthash="679" _msttexthash="233116" _mstvisible="1" %)
234 234  return result;
235 235  
337 +(% _mstvisible="1" %)
236 236  ----
237 237  
340 +(% _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"]]
343 +(% _mstvisible="1" %)
344 +(% _mstvisible="3" %)[[image:1758763019466-819.png||_mstalt="298311" _msthash="620" _mstvisible="5" height="787" width="1022"]]
241 241  
242 -* **Dowblink——JavaScript:**
346 +(% _mstvisible="1" %)
347 +* (% _msthash="677" _msttexthash="26632970" _mstvisible="3" %)**Dowblink——JavaScript:**
243 243  
349 +(% _msthash="676" _msttexthash="2052284" _mstvisible="1" %)
244 244  ~/~/ Encode downlink data from incoming Rule Engine message
245 245  
352 +(% _msthash="675" _msttexthash="1638546" _mstvisible="1" %)
246 246  ~/~/ msg - JSON message payload downlink message json
247 247  
355 +(% _msthash="674" _msttexthash="3854773" _mstvisible="1" %)
248 248  ~/~/ msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc.
249 249  
358 +(% _msthash="673" _msttexthash="3368742" _mstvisible="1" %)
250 250  ~/~/ metadata - list of key-value pairs with additional data about the message
251 251  
361 +(% _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  
364 +(% _msthash="671" _msttexthash="199069" _mstvisible="1" %)
254 254  ~/~/ /~*~* Encoder ~*~*/
255 255  
367 +(% _msthash="670" _msttexthash="455715" _mstvisible="1" %)
256 256  ~/~/var data = {"value":99};
257 257  
370 +(% _msthash="669" _msttexthash="1757431" _mstvisible="1" %)
258 258  ~/~/ ~/~/ Process data from incoming message and metadata
259 259  
373 +(% _msthash="668" _msttexthash="1852279" _mstvisible="1" %)
260 260  ~/~/ data.tempFreq = msg.temperatureUploadFrequency;
261 261  
376 +(% _msthash="667" _msttexthash="1572038" _mstvisible="1" %)
262 262  ~/~/ data.humFreq = msg.humidityUploadFrequency;
263 263  
379 +(% _msthash="666" _msttexthash="2049957" _mstvisible="1" %)
264 264  ~/~/ data.devSerialNumber = metadata['ss_serialNumber'];
265 265  
382 +(% _msthash="665" _msttexthash="1576731" _mstvisible="1" %)
266 266  ~/~/ ~/~/ Result object with encoded downlink payload
267 267  
385 +(% _msthash="664" _msttexthash="183287" _mstvisible="1" %)
268 268  var result = {
269 269  
388 +(% _msthash="663" _msttexthash="2331082" _mstvisible="1" %)
270 270   ~/~/ downlink data content type: JSON, TEXT or BINARY (base64 format)
271 271  
391 +(% _msthash="662" _msttexthash="322049" _mstvisible="1" %)
272 272   contentType: "TEXT",
273 273  
394 +(% _msthash="661" _msttexthash="249210" _mstvisible="1" %)
274 274   ~/~/ downlink data
275 275  
397 +(% _msthash="660" _msttexthash="1524952" _mstvisible="1" %)
276 276   data: msg.shared_value ,~/~/JSON.stringify(data),
277 277  
400 +(% _msthash="659" _msttexthash="2147704" _mstvisible="1" %)
278 278   ~/~/ Optional metadata object presented in key/value format
279 279  
403 +(% _msthash="658" _msttexthash="150189" _mstvisible="1" %)
280 280   metadata: {
281 281  
406 +(% _msthash="657" _msttexthash="1241370" _mstvisible="1" %)
282 282   topic: '/test/down/'+metadata.deviceName
283 283  
409 +(% _mstvisible="1" %)
284 284   }
285 285  
412 +(% _mstvisible="1" %)
286 286  };
287 287  
415 +(% _msthash="656" _msttexthash="233116" _mstvisible="1" %)
288 288  return result;
289 289  
418 +(% _mstvisible="1" %)
290 290  ----
291 291  
292 -== 4.4 Configure the connection ==
421 +(% _mstvisible="1" %)
422 +== (% _msthash="655" _msttexthash="640094" _mstvisible="2" %)4.4 Configure the connection(%%) ==
293 293  
424 +(% _msthash="654" _msttexthash="1780675" _mstvisible="1" %)
294 294  Generate MQTT certificate integrated on chirpstack
295 295  
427 +(% _msthash="653" _msttexthash="3723447" _mstvisible="1" %)
296 296  Chirpstack generates CA certificate, TLS certificate, and TLS key respectively
297 297  
430 +(% _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"]]
433 +(% _mstvisible="1" %)
434 +(% _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"]]
436 +(% _mstvisible="1" %)
437 +(% _mstvisible="3" %)[[image:图片5.png||_mstalt="5131854" _msthash="624" _mstvisible="5" height="505" width="1017"]]
303 303  
439 +(% _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:**
442 +(% _mstvisible="1" %)
443 +(% _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]]
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"]]
309 309  
448 +(% _msthash="648" _msttexthash="4037631" _mstvisible="1" %)
310 310  Enter the server address Host: lns1.thingseye.io on the Connection configuration
311 311  
451 +(% _msthash="647" _msttexthash="93873" _mstvisible="1" %)
312 312  Port: 8883
313 313  
454 +(% _msthash="646" _msttexthash="380666" _mstvisible="1" %)
314 314  Credentials type: PEM
315 315  
457 +(% _msthash="645" _msttexthash="880399" _mstvisible="1" %)
316 316  Upload the certificate and key file
317 317  
318 -[[image:图片6.png||_mstalt="5131971"]]
460 +(% _mstvisible="1" %)
461 +(% _mstvisible="3" %)[[image:图片6.png||_mstalt="5131971" _msthash="626" _mstvisible="5" height="509" width="1026"]]
319 319  
320 -[[image:图片7.png||_mstalt="5132088"]]
463 +(% _mstvisible="1" %)
464 +(% _mstvisible="3" %)[[image:图片7.png||_mstalt="5132088" _msthash="628" _mstvisible="5" height="509" width="1025"]]
321 321  
466 +(% _mstvisible="1" %)
467 +----
468 +
469 +(% _msthash="644" _msttexthash="472992" _mstvisible="1" %)
322 322  The default for Topic is:
323 323  
472 +(% _msthash="643" _msttexthash="2223559" _mstvisible="1" %)
324 324  application/**chirpstack application id**/device/+/event/up
325 325  
326 -[[image:图片8.png||_mstalt="5132205"]]
475 +(% _mstvisible="1" %)
476 +(% _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="374" width="1272"]]
479 +(% _mstvisible="1" class="wikigeneratedid" %)
480 +(% _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 ==
482 +(% _mstvisible="1" %)
483 +----
333 333  
334 -[[image:图片9.png||_mstalt="5132322"]]
485 +(% _mstvisible="1" %)
486 +== (% _msthash="642" _msttexthash="471978" _mstvisible="2" %)4.5 Check the connection(%%) ==
335 335  
336 -[[image:图片10.png||_mstalt="5142449"]]
488 +(% _mstvisible="1" %)
489 +(% _mstvisible="3" %)[[image:图片9.png||_mstalt="5132322" _msthash="634" _mstvisible="5" height="509" width="1025"]]
337 337  
338 -= 5. Check Data Uplink Log =
491 +(% _mstvisible="1" %)
492 +(% _mstvisible="3" %)[[image:图片10.png||_mstalt="5142449" _msthash="636" _mstvisible="5" height="509" width="1026"]]
339 339  
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" %)
340 340  User can check the devices log in Intergration.
341 341  
342 -[[image:1729562069134-315.png||_mstalt="294190" height="587" width="723"]]
504 +(% _mstvisible="1" %)
505 +(% _mstvisible="3" %)[[image:1729562069134-315.png||_mstalt="294190" _msthash="638" _mstvisible="5" height="587" width="723"]]