<
From version < 101.1 >
edited by Mengting Qiu
on 2024/08/20 14:33
To version < 129.1 >
edited by Xiaoling
on 2024/09/14 10:49
>
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.ting
1 +XWiki.Xiaoling
Content
... ... @@ -187,30 +187,38 @@
187 187  
188 188  The NB-IoT Sensor can send packet to server use UDP protocol.
189 189  
190 +
190 190  === 3.1.1 Simulate UDP Connection by PC tool ===
191 191  
193 +
192 192  We can use PC tool to simulate UDP connection to make sure server works ok.
193 193  
194 -[[image:image-20230802112413-1.png||height="468" width="1024"]]
196 +[[image:http://wiki.dragino.com/xwiki/bin/download/Main/General%20Configure%20to%20Connect%20to%20IoT%20server%20for%20-NB%20%26%20-NS%20NB-IoT%20models/WebHome/image-20230802112413-1.png?width=1024&height=468&rev=1.1||alt="image-20230802112413-1.png"]]
195 195  
198 +
196 196  === 3.1.2 Configure NB-IoT Sensor ===
197 197  
198 198  ==== 3.1.2.1 AT Commands ====
199 199  
203 +
200 200  (% style="color:blue" %)**AT Commands:**
201 201  
202 202  * (% style="color:#037691" %)**AT+PRO=2,0**  (%%) ~/~/ Set to use UDP protocol to uplink ,Payload Type select Hex payload
203 203  
204 -* (% style="color:#037691" %)**AT+SERVADDR=120.24.4.116,5601**  (%%) ~/~/ Set UDP server address and port
208 +* (% style="color:#037691" %)**AT+SERVADDR=8.217.91.207,1999**  (%%) ~/~/ Set UDP server address and port
205 205  
206 206  [[image:image-20240819102802-1.png]]
207 207  
212 +
208 208  ==== 3.1.2.2 Uplink Example ====
209 209  
210 -[[image:image-20240819105418-8.png||height="671" width="1414"]]
211 211  
216 +[[image:image-20240819105418-8.png||height="611" width="1287"]]
217 +
218 +
212 212  == 3.2 General COAP Connection ==
213 213  
221 +
214 214  The NB-IoT Sensor can send packet to server use COAP protocol.
215 215  
216 216  Below are the commands.
... ... @@ -226,13 +226,16 @@
226 226  
227 227  [[image:image-20240819103212-2.png]]
228 228  
237 +
229 229  === 3.2.1 Uplink Example ===
230 230  
240 +
231 231  [[image:image-20240819103909-4.png||height="453" width="955"]]
232 232  
233 233  
234 234  == 3.2 General MQTT Connection ==
235 235  
246 +
236 236  The NB-IoT Sensor can send packet to server use MQTT protocol.
237 237  
238 238  Below are the commands.
... ... @@ -260,10 +260,12 @@
260 260  
261 261  (% style="color:red" %)**Notice: MQTT protocol has a much higher power consumption compare with UDP/CoAP protocol. Please check the power analyze document and adjust the uplink period to a suitable interval.**
262 262  
274 +
263 263  == 3.3 [[ThingSpeak>>url:https://thingspeak.com/]] (via MQTT) ==
264 264  
265 265  === 3.3.1 Get MQTT Credentials ===
266 266  
279 +
267 267  [[ThingSpeak>>url:https://thingspeak.com/]] connection uses MQTT Connection. So we need to get MQTT Credentials first. You need to point MQTT Devices to ThingSpeak Channel as well.
268 268  
269 269  [[image:image-20240819173602-1.png||height="401" width="743"]]
... ... @@ -270,10 +270,12 @@
270 270  
271 271  [[image:image-20240819173706-3.png||height="595" width="597"]]
272 272  
286 +
273 273  === 3.3.2 Simulate with MQTT.fx ===
274 274  
275 275  ==== 3.3.2.1 Establish MQTT Connection ====
276 276  
291 +
277 277  After we got MQTT Credentials, we can first simulate with PC tool MQTT.fx tool to see if the Credentials and settings are fine.
278 278  
279 279  [[image:image-20240819173826-4.png||height="534" width="734"]]
... ... @@ -288,8 +288,11 @@
288 288  
289 289  * (% style="color:#037691" %)**Password:**(%%) <Your ThingSpeak MQTT Password>
290 290  
306 +
307 +
291 291  ==== 3.3.2.2 Publish Data to ThingSpeak Channel ====
292 292  
310 +
293 293  [[image:image-20240819174033-5.png]]
294 294  
295 295  [[image:image-20240819174209-6.png]]
... ... @@ -306,10 +306,12 @@
306 306  
307 307  [[image:image-20240819174314-7.png||height="469" width="785"]]
308 308  
327 +
309 309  === 3.3.3 Configure NB-IoT Sensor for connection ===
310 310  
311 311  ==== 3.3.3.1 AT Commands: ====
312 312  
332 +
313 313  In the NB-IoT, we can run below commands so to publish the channels like MQTT.fx
314 314  
315 315  * (% style="color:blue" %)**AT+PRO=3,1** (%%) ~/~/ Set to use ThingSpeak Server and Related Payload
... ... @@ -324,8 +324,11 @@
324 324  
325 325  * (% style="color:blue" %)**AT+SUBTOPIC=<YOUR_CHANNEL_ID>**
326 326  
347 +
348 +
327 327  ==== 3.3.3.2 Uplink Examples ====
328 328  
351 +
329 329  [[image:image-20240819174540-8.png]]
330 330  
331 331  For SE01-NB
... ... @@ -350,8 +350,10 @@
350 350  
351 351  For SN50V3-NB
352 352  
376 +
353 353  ==== 3.3.3.3 Map fields to sensor value ====
354 354  
379 +
355 355  When NB-IoT sensor upload to ThingSpeak. The payload already specify which fileds related to which sensor value. Use need to create fileds in Channels Settings. with name so to see the value correctly.
356 356  
357 357  [[image:image-20240819174610-9.png]]
... ... @@ -360,25 +360,25 @@
360 360  
361 361  Below is the NB-IoT Product Table show the mapping.
362 362  
363 -(% border="1" cellspacing="4" style="background-color:#f2f2f2; width:1424px" %)
364 -|(% style="background-color:#4f81bd; width:143px" %) |(% style="background-color:#4f81bd; color:white; width:103px" %)Field1|(% style="background-color:#4f81bd; color:white; width:102px" %)Field2|(% style="background-color:#4f81bd; color:white; width:157px" %)Field3|(% style="background-color:#4f81bd; color:white; width:154px" %)Field4|(% style="background-color:#4f81bd; color:white; width:153px" %)Field5|(% style="background-color:#4f81bd; color:white; width:151px" %)Field6|(% style="background-color:#4f81bd; color:white; width:160px" %)Field7|(% style="background-color:#4f81bd; color:white; width:152px" %)Field8|(% style="background-color:#4f81bd; color:white; width:67px" %)Field9|(% style="background-color:#4f81bd; color:white; width:69px" %)Field10
365 -|(% style="background-color:#4f81bd; color:white; width:143px" %)S31x-NB|(% style="width:103px" %)Temperature |(% style="width:102px" %)Humidity|(% style="width:157px" %)Battery|(% style="width:154px" %)RSSI|(% style="width:153px" %) |(% style="width:151px" %) |(% style="width:160px" %) |(% style="width:152px" %) |(% style="width:67px" %) |(% style="width:69px" %)
366 -|(% style="background-color:#4f81bd; color:white; width:143px" %)SE01-NB|(% style="width:103px" %)Temperature |(% style="width:102px" %)Humidity|(% style="width:157px" %)conduct|(% style="width:154px" %)dielectric_constant|(% style="width:153px" %)Battery|(% style="width:151px" %)RSSI|(% style="width:160px" %) |(% style="width:152px" %) |(% style="width:67px" %) |(% style="width:69px" %)
367 -|(% style="background-color:#4f81bd; color:white; width:143px" %)DDS20-NB|(% style="width:103px" %)distance|(% style="width:102px" %)Battery|(% style="width:157px" %)RSSI|(% style="width:154px" %) |(% style="width:153px" %) |(% style="width:151px" %) |(% style="width:160px" %) |(% style="width:152px" %) |(% style="width:67px" %) |(% style="width:69px" %)
368 -|(% style="background-color:#4f81bd; color:white; width:143px" %)DDS45-NB|(% style="width:103px" %)distance|(% style="width:102px" %)Battery|(% style="width:157px" %)RSSI|(% style="width:154px" %) |(% style="width:153px" %) |(% style="width:151px" %) |(% style="width:160px" %) |(% style="width:152px" %) |(% style="width:67px" %) |(% style="width:69px" %)
369 -|(% style="background-color:#4f81bd; color:white; width:143px" %)DDS75-NB|(% style="width:103px" %)distance|(% style="width:102px" %)Battery|(% style="width:157px" %)RSSI|(% style="width:154px" %) |(% style="width:153px" %) |(% style="width:151px" %) |(% style="width:160px" %) |(% style="width:152px" %) |(% style="width:67px" %) |(% style="width:69px" %)
370 -|(% style="background-color:#4f81bd; color:white; width:143px" %)NMDS120-NB|(% style="width:103px" %)distance|(% style="width:102px" %)Battery|(% style="width:157px" %)RSSI|(% style="width:154px" %) |(% style="width:153px" %) |(% style="width:151px" %) |(% style="width:160px" %) |(% style="width:152px" %) |(% style="width:67px" %) |(% style="width:69px" %)
371 -|(% rowspan="1" style="background-color:#4f81bd; color:white; width:143px" %)SPH01-NB|(% style="width:103px" %)ph|(% style="width:102px" %)Temperature|(% style="width:157px" %)Battery|(% style="width:154px" %)RSSI|(% style="width:153px" %) |(% style="width:151px" %) |(% style="width:160px" %) |(% style="width:152px" %) |(% style="width:67px" %) |(% colspan="1" rowspan="1" style="width:69px" %)
372 -|(% style="background-color:#4f81bd; color:white; width:143px" %)NLM01-NB|(% style="width:103px" %)Humidity|(% style="width:102px" %)Temperature|(% style="width:157px" %)Battery|(% style="width:154px" %)RSSI|(% style="width:153px" %) |(% style="width:151px" %) |(% style="width:160px" %) |(% style="width:152px" %) |(% style="width:67px" %) |(% style="width:69px" %)
373 -|(% style="background-color:#4f81bd; color:white; width:143px" %)NMDS200-NB|(% style="width:103px" %)distance1|(% style="width:102px" %)distance2|(% style="width:157px" %)Battery|(% style="width:154px" %)RSSI|(% style="width:153px" %) |(% style="width:151px" %) |(% style="width:160px" %) |(% style="width:152px" %) |(% style="width:67px" %) |(% style="width:69px" %)
374 -|(% style="background-color:#4f81bd; color:white; width:143px" %)CPN01-NB|(% style="width:103px" %)alarm|(% style="width:102px" %)count|(% style="width:157px" %)door open duration|(% style="width:154px" %)calc flag|(% style="width:153px" %)Battery|(% style="width:151px" %)RSSI|(% style="width:160px" %) |(% style="width:152px" %) |(% style="width:67px" %) |(% style="width:69px" %)
375 -|(% colspan="1" rowspan="1" style="background-color:#4f81bd; color:white; width:143px" %)DS03A-NB|(% colspan="1" rowspan="1" style="width:103px" %)level|(% colspan="1" rowspan="1" style="width:102px" %)alarm|(% colspan="1" rowspan="1" style="width:157px" %)pb14door open num|(% colspan="1" rowspan="1" style="width:154px" %)pb14 last open time|(% colspan="1" rowspan="1" style="width:153px" %)pb15 level status|(% colspan="1" rowspan="1" style="width:151px" %)pb15 alarm status|(% colspan="1" rowspan="1" style="width:160px" %)pb15 door open num|(% colspan="1" rowspan="1" style="width:152px" %)pb15 last open time|(% colspan="1" rowspan="1" style="width:67px" %)Battery|(% colspan="1" rowspan="1" style="width:69px" %)RSSI
376 -|(% colspan="1" rowspan="1" style="background-color:#4f81bd; color:white; width:143px" %)SN50V3-NB mod1|(% colspan="1" rowspan="1" style="width:103px" %)mod|(% colspan="1" rowspan="1" style="width:102px" %)Battery|(% colspan="1" rowspan="1" style="width:157px" %)RSSI|(% colspan="1" rowspan="1" style="width:154px" %)DS18B20 Temp|(% colspan="1" rowspan="1" style="width:153px" %)exit_state/input PA4|(% colspan="1" rowspan="1" style="width:151px" %)adc0|(% colspan="1" rowspan="1" style="width:160px" %)Temperature |(% colspan="1" rowspan="1" style="width:152px" %)Humidity|(% colspan="1" rowspan="1" style="width:67px" %) |(% colspan="1" rowspan="1" style="width:69px" %)
377 -|(% colspan="1" style="background-color:#4f81bd; color:white; width:143px" %)SN50V3-NB mod2|(% colspan="1" style="width:103px" %)mod|(% colspan="1" style="width:102px" %)Battery|(% colspan="1" style="width:157px" %)RSSI|(% colspan="1" style="width:154px" %)DS18B20 Temp|(% colspan="1" style="width:153px" %)exit_state/input PA4|(% colspan="1" style="width:151px" %)adc0|(% colspan="1" style="width:160px" %)distance|(% colspan="1" style="width:152px" %) |(% colspan="1" style="width:67px" %) |(% colspan="1" style="width:69px" %)
378 -|(% colspan="1" style="background-color:#4f81bd; color:white; width:143px" %)SN50V3-NB mod3|(% colspan="1" style="width:103px" %)mod|(% colspan="1" style="width:102px" %)Battery|(% colspan="1" style="width:157px" %)RSSI|(% colspan="1" style="width:154px" %)adc0|(% colspan="1" style="width:153px" %)exit_state/input PA4|(% colspan="1" style="width:151px" %)adc1|(% colspan="1" style="width:160px" %)Temperature|(% colspan="1" style="width:152px" %)Humidity|(% colspan="1" style="width:67px" %)adc4|(% colspan="1" style="width:69px" %)
379 -|(% colspan="1" style="background-color:#4f81bd; color:white; width:143px" %)SN50V3-NB mod4|(% colspan="1" style="width:103px" %)mod|(% colspan="1" style="width:102px" %)Battery|(% colspan="1" style="width:157px" %)RSSI|(% colspan="1" style="width:154px" %)DS18B20 Temp|(% colspan="1" style="width:153px" %)adc0|(% colspan="1" style="width:151px" %)exit_state/input PA4|(% colspan="1" style="width:160px" %)DS18B20 Temp2|(% colspan="1" style="width:152px" %)DS18B20 Temp3|(% colspan="1" style="width:67px" %) |(% colspan="1" style="width:69px" %)
380 -|(% colspan="1" style="background-color:#4f81bd; color:white; width:143px" %)SN50V3-NB mod5|(% colspan="1" style="width:103px" %)mod|(% colspan="1" style="width:102px" %)Battery|(% colspan="1" style="width:157px" %)RSSI|(% colspan="1" style="width:154px" %)DS18B20 Temp|(% colspan="1" style="width:153px" %)adc0|(% colspan="1" style="width:151px" %)exit_state/input PA4|(% colspan="1" style="width:160px" %)Weight|(% colspan="1" style="width:152px" %) |(% colspan="1" style="width:67px" %) |(% colspan="1" style="width:69px" %)
381 -|(% colspan="1" style="background-color:#4f81bd; color:white; width:143px" %)SN50V3-NB mod6|(% colspan="1" style="width:103px" %)mod|(% colspan="1" style="width:102px" %)Battery|(% colspan="1" style="width:157px" %)RSSI|(% colspan="1" style="width:154px" %)count|(% colspan="1" style="width:153px" %) |(% colspan="1" style="width:151px" %) |(% colspan="1" style="width:160px" %) |(% colspan="1" style="width:152px" %) |(% colspan="1" style="width:67px" %) |(% colspan="1" style="width:69px" %)
388 +(% border="1" cellspacing="4" style="background-color:#f2f2f2; width:1353.82px" %)
389 +|(% style="background-color:#4f81bd; width:143px" %) |(% style="background-color:#4f81bd; color:white; width:103px" %)Field1|(% style="background-color:#4f81bd; color:white; width:102px" %)Field2|(% style="background-color:#4f81bd; color:white; width:157px" %)Field3|(% style="background-color:#4f81bd; color:white; width:139px" %)Field4|(% style="background-color:#4f81bd; color:white; width:141px" %)Field5|(% style="background-color:#4f81bd; color:white; width:142px" %)Field6|(% style="background-color:#4f81bd; color:white; width:151px" %)Field7|(% style="background-color:#4f81bd; color:white; width:137px" %)Field8|(% style="background-color:#4f81bd; color:white; width:69px" %)Field9|(% style="background-color:#4f81bd; color:white; width:65px" %)Field10
390 +|(% style="background-color:#4f81bd; color:white; width:143px" %)S31x-NB|(% style="width:103px" %)Temperature |(% style="width:102px" %)Humidity|(% style="width:157px" %)Battery|(% style="width:139px" %)RSSI|(% style="width:141px" %) |(% style="width:142px" %) |(% style="width:151px" %) |(% style="width:137px" %) |(% style="width:69px" %) |(% style="width:65px" %)
391 +|(% style="background-color:#4f81bd; color:white; width:143px" %)SE01-NB|(% style="width:103px" %)Temperature |(% style="width:102px" %)Humidity|(% style="width:157px" %)conduct|(% style="width:139px" %)dielectric_constant|(% style="width:141px" %)Battery|(% style="width:142px" %)RSSI|(% style="width:151px" %) |(% style="width:137px" %) |(% style="width:69px" %) |(% style="width:65px" %)
392 +|(% style="background-color:#4f81bd; color:white; width:143px" %)DDS20-NB|(% style="width:103px" %)distance|(% style="width:102px" %)Battery|(% style="width:157px" %)RSSI|(% style="width:139px" %) |(% style="width:141px" %) |(% style="width:142px" %) |(% style="width:151px" %) |(% style="width:137px" %) |(% style="width:69px" %) |(% style="width:65px" %)
393 +|(% style="background-color:#4f81bd; color:white; width:143px" %)DDS45-NB|(% style="width:103px" %)distance|(% style="width:102px" %)Battery|(% style="width:157px" %)RSSI|(% style="width:139px" %) |(% style="width:141px" %) |(% style="width:142px" %) |(% style="width:151px" %) |(% style="width:137px" %) |(% style="width:69px" %) |(% style="width:65px" %)
394 +|(% style="background-color:#4f81bd; color:white; width:143px" %)DDS75-NB|(% style="width:103px" %)distance|(% style="width:102px" %)Battery|(% style="width:157px" %)RSSI|(% style="width:139px" %) |(% style="width:141px" %) |(% style="width:142px" %) |(% style="width:151px" %) |(% style="width:137px" %) |(% style="width:69px" %) |(% style="width:65px" %)
395 +|(% style="background-color:#4f81bd; color:white; width:143px" %)NMDS120-NB|(% style="width:103px" %)distance|(% style="width:102px" %)Battery|(% style="width:157px" %)RSSI|(% style="width:139px" %) |(% style="width:141px" %) |(% style="width:142px" %) |(% style="width:151px" %) |(% style="width:137px" %) |(% style="width:69px" %) |(% style="width:65px" %)
396 +|(% rowspan="1" style="background-color:#4f81bd; color:white; width:143px" %)SPH01-NB|(% style="width:103px" %)ph|(% style="width:102px" %)Temperature|(% style="width:157px" %)Battery|(% style="width:139px" %)RSSI|(% style="width:141px" %) |(% style="width:142px" %) |(% style="width:151px" %) |(% style="width:137px" %) |(% style="width:69px" %) |(% colspan="1" rowspan="1" style="width:65px" %)
397 +|(% style="background-color:#4f81bd; color:white; width:143px" %)NLM01-NB|(% style="width:103px" %)Humidity|(% style="width:102px" %)Temperature|(% style="width:157px" %)Battery|(% style="width:139px" %)RSSI|(% style="width:141px" %) |(% style="width:142px" %) |(% style="width:151px" %) |(% style="width:137px" %) |(% style="width:69px" %) |(% style="width:65px" %)
398 +|(% style="background-color:#4f81bd; color:white; width:143px" %)NMDS200-NB|(% style="width:103px" %)distance1|(% style="width:102px" %)distance2|(% style="width:157px" %)Battery|(% style="width:139px" %)RSSI|(% style="width:141px" %) |(% style="width:142px" %) |(% style="width:151px" %) |(% style="width:137px" %) |(% style="width:69px" %) |(% style="width:65px" %)
399 +|(% style="background-color:#4f81bd; color:white; width:143px" %)CPN01-NB|(% style="width:103px" %)alarm|(% style="width:102px" %)count|(% style="width:157px" %)door open duration|(% style="width:139px" %)calc flag|(% style="width:141px" %)Battery|(% style="width:142px" %)RSSI|(% style="width:151px" %) |(% style="width:137px" %) |(% style="width:69px" %) |(% style="width:65px" %)
400 +|(% colspan="1" rowspan="1" style="background-color:#4f81bd; color:white; width:143px" %)DS03A-NB|(% colspan="1" rowspan="1" style="width:103px" %)level|(% colspan="1" rowspan="1" style="width:102px" %)alarm|(% colspan="1" rowspan="1" style="width:157px" %)pb14door open num|(% colspan="1" rowspan="1" style="width:139px" %)pb14 last open time|(% colspan="1" rowspan="1" style="width:141px" %)pb15 level status|(% colspan="1" rowspan="1" style="width:142px" %)pb15 alarm status|(% colspan="1" rowspan="1" style="width:151px" %)pb15 door open num|(% colspan="1" rowspan="1" style="width:137px" %)pb15 last open time|(% colspan="1" rowspan="1" style="width:69px" %)Battery|(% colspan="1" rowspan="1" style="width:65px" %)RSSI
401 +|(% colspan="1" rowspan="1" style="background-color:#4f81bd; color:white; width:143px" %)SN50V3-NB mod1|(% colspan="1" rowspan="1" style="width:103px" %)mod|(% colspan="1" rowspan="1" style="width:102px" %)Battery|(% colspan="1" rowspan="1" style="width:157px" %)RSSI|(% colspan="1" rowspan="1" style="width:139px" %)DS18B20 Temp|(% colspan="1" rowspan="1" style="width:141px" %)exit_state/input PA4|(% colspan="1" rowspan="1" style="width:142px" %)adc0|(% colspan="1" rowspan="1" style="width:151px" %)Temperature |(% colspan="1" rowspan="1" style="width:137px" %)Humidity|(% colspan="1" rowspan="1" style="width:69px" %) |(% colspan="1" rowspan="1" style="width:65px" %)
402 +|(% colspan="1" style="background-color:#4f81bd; color:white; width:143px" %)SN50V3-NB mod2|(% colspan="1" style="width:103px" %)mod|(% colspan="1" style="width:102px" %)Battery|(% colspan="1" style="width:157px" %)RSSI|(% colspan="1" style="width:139px" %)DS18B20 Temp|(% colspan="1" style="width:141px" %)exit_state/input PA4|(% colspan="1" style="width:142px" %)adc0|(% colspan="1" style="width:151px" %)distance|(% colspan="1" style="width:137px" %) |(% colspan="1" style="width:69px" %) |(% colspan="1" style="width:65px" %)
403 +|(% colspan="1" style="background-color:#4f81bd; color:white; width:143px" %)SN50V3-NB mod3|(% colspan="1" style="width:103px" %)mod|(% colspan="1" style="width:102px" %)Battery|(% colspan="1" style="width:157px" %)RSSI|(% colspan="1" style="width:139px" %)adc0|(% colspan="1" style="width:141px" %)exit_state/input PA4|(% colspan="1" style="width:142px" %)adc1|(% colspan="1" style="width:151px" %)Temperature|(% colspan="1" style="width:137px" %)Humidity|(% colspan="1" style="width:69px" %)adc4|(% colspan="1" style="width:65px" %)
404 +|(% colspan="1" style="background-color:#4f81bd; color:white; width:143px" %)SN50V3-NB mod4|(% colspan="1" style="width:103px" %)mod|(% colspan="1" style="width:102px" %)Battery|(% colspan="1" style="width:157px" %)RSSI|(% colspan="1" style="width:139px" %)DS18B20 Temp|(% colspan="1" style="width:141px" %)adc0|(% colspan="1" style="width:142px" %)exit_state/input PA4|(% colspan="1" style="width:151px" %)DS18B20 Temp2|(% colspan="1" style="width:137px" %)DS18B20 Temp3|(% colspan="1" style="width:69px" %) |(% colspan="1" style="width:65px" %)
405 +|(% colspan="1" style="background-color:#4f81bd; color:white; width:143px" %)SN50V3-NB mod5|(% colspan="1" style="width:103px" %)mod|(% colspan="1" style="width:102px" %)Battery|(% colspan="1" style="width:157px" %)RSSI|(% colspan="1" style="width:139px" %)DS18B20 Temp|(% colspan="1" style="width:141px" %)adc0|(% colspan="1" style="width:142px" %)exit_state/input PA4|(% colspan="1" style="width:151px" %)Weight|(% colspan="1" style="width:137px" %) |(% colspan="1" style="width:69px" %) |(% colspan="1" style="width:65px" %)
406 +|(% colspan="1" style="background-color:#4f81bd; color:white; width:143px" %)SN50V3-NB mod6|(% colspan="1" style="width:103px" %)mod|(% colspan="1" style="width:102px" %)Battery|(% colspan="1" style="width:157px" %)RSSI|(% colspan="1" style="width:139px" %)count|(% colspan="1" style="width:141px" %) |(% colspan="1" style="width:142px" %) |(% colspan="1" style="width:151px" %) |(% colspan="1" style="width:137px" %) |(% colspan="1" style="width:69px" %) |(% colspan="1" style="width:65px" %)
382 382  
383 383  == 3.4 [[Datacake>>https://datacake.co/]] ==
384 384  
... ... @@ -392,10 +392,13 @@
392 392  
393 393  * (% style="color:blue" %)**S31B-CB-GE**(%%): This verson doesn't have pre-configure Datacake connection. User need to enter the AT Commands to connect to Datacake. See below for instruction.
394 394  
420 +
421 +
395 395  === 3.4.1 For device Already has template ===
396 396  
397 397  ==== 3.4.1.1 Create Device ====
398 398  
426 +
399 399  (% style="color:blue" %)**Add Device**(%%) in DataCake.
400 400  
401 401  [[image:image-20240820110003-1.png]]
... ... @@ -414,10 +414,12 @@
414 414  
415 415  [[image:image-20240820110114-6.png]]
416 416  
445 +
417 417  === 3.4.2 For Device already registered in DataCake before shipped ===
418 418  
419 419  ==== 3.4.2.1 Scan QR Code to get the device info ====
420 420  
450 +
421 421  Users can use their phones or computers to scan QR codes to obtain device data information.
422 422  
423 423  [[image:image-20240820110129-7.png]]
... ... @@ -424,32 +424,40 @@
424 424  
425 425  [[image:image-20240820110218-9.png]]
426 426  
457 +
427 427  ==== 3.4.2.2 Claim Device to User Account ====
428 428  
429 429  By Default, the device is registered in Dragino's DataCake Account. User can Claim it to his account.
430 430  
462 +
431 431  === 3.4.3 Manual Add Decoder in DataCake ( don't use the template in DataCake) ===
432 432  
465 +
433 433  **Step1: Add a device**
434 434  
435 435  [[image:image-20240820110235-10.png]][[image:image-20240129170024-1.png||height="330" width="900"]]
436 436  
470 +
437 437  **Step2: Choose your device type,please select dragino NB-IOT device**
438 438  
439 439  [[image:image-20240820110247-11.png]]
440 440  
475 +
441 441  **Step3: Choose to create a new device**
442 442  
443 443  [[image:image-20240820111016-12.png]]
444 444  
480 +
445 445  **Step4: Fill in the device ID of your NB device**
446 446  
447 447  [[image:image-20240820111101-13.png]]
448 448  
485 +
449 449  **Step5: Please select your device plan according to your needs and complete the creation of the device**
450 450  
451 451  [[image:image-20240820111113-14.png]]
452 452  
490 +
453 453  **Step6: Please add the decoder at the payload decoder of the device configuration.**
454 454  
455 455  **Decoder location:**[[dragino-end-node-decoder/Datacake-Dragino_NB at main · dragino/dragino-end-node-decoder (github.com)>>url:https://github.com/dragino/dragino-end-node-decoder/tree/main/Datacake-Dragino_NB]]
... ... @@ -458,10 +458,12 @@
458 458  
459 459  [[image:image-20240820111248-16.png]]
460 460  
499 +
461 461  **Step7: Add the output of the decoder as a field**
462 462  
463 463  [[image:image-20240820111259-17.png]]
464 464  
504 +
465 465  **Step8: Customize the dashboard and use fields as parameters of the dashboard**
466 466  
467 467  [[image:image-20240820111312-18.png]]
... ... @@ -470,8 +470,10 @@
470 470  
471 471  [[image:image-20240820111333-20.png]]
472 472  
513 +
473 473  === 3.4.4 For device have not configured to connect to DataCake ===
474 474  
516 +
475 475  (% class="lead" %)
476 476  Use AT command for connecting to DataCake
477 477  
... ... @@ -479,10 +479,12 @@
479 479  
480 480  (% style="color:blue" %)**AT+SERVADDR=67.207.76.90,4445**
481 481  
524 +
482 482  == 3.5 Node-Red (via MQTT) ==
483 483  
484 484  === 3.5.1 Configure [[Node-Red>>http://wiki.dragino.com/xwiki/bin/view/Main/Node-RED/]] ===
485 485  
529 +
486 486  Take S31-NB UDP protocol as an example.
487 487  
488 488  Dragino provides input flow examples for the sensors.
... ... @@ -513,8 +513,10 @@
513 513  
514 514  [[image:image-20240820111448-26.png]]
515 515  
560 +
516 516  === 3.5.2 Simulate Connection ===
517 517  
563 +
518 518  We have completed the configuration of UDP. We can try sending packets to node red.
519 519  
520 520  [[image:image-20240820111504-27.png]]
... ... @@ -521,8 +521,10 @@
521 521  
522 522  [[image:image-20240820111515-28.png]]
523 523  
570 +
524 524  === 3.5.3 Configure NB-IoT Sensors ===
525 525  
573 +
526 526  * (% style="color:#037691" %)**AT+PRO=3,0 or 3,5 ** (%%) **~/~/ hex format or json format**
527 527  * (% style="color:#037691" %)**AT+SUBTOPIC=<device name>or User Defined**
528 528  * (% style="color:#037691" %)**AT+PUBTOPIC=<device name>or User Defined**
... ... @@ -530,6 +530,8 @@
530 530  * (% style="color:#037691" %)**AT+UNAME=<device name> or User Defined**
531 531  * (% style="color:#037691" %)**AT+PWD=“Your device token”**
532 532  
581 +
582 +
533 533  == 3.6 ThingsBoard.Cloud (via MQTT) ==
534 534  
535 535  === 3.6.1 Configure ThingsBoard ===
... ... @@ -536,12 +536,15 @@
536 536  
537 537  ==== 3.6.1.1 Create Device ====
538 538  
589 +
539 539  Create a New Device in [[ThingsBoard>>url:https://thingsboard.cloud/]]. Record Device Name which is used for MQTT connection.
540 540  
541 541  [[image:image-20240820112210-29.png]]
542 542  
594 +
543 543  ==== 3.6.1.2 Create Uplink & Downlink Converter ====
544 544  
597 +
545 545  (% style="color:blue" %)**Uplink Converter**
546 546  
547 547  The purpose of the decoder function is to parse the incoming data and metadata to a format that ThingsBoard can consume. deviceName and deviceType are required, while attributes and telemetry are optional. Attributes and telemetry are flat key-value objects. Nested objects are not supported.
... ... @@ -558,8 +558,10 @@
558 558  
559 559  (% style="color:red" %)**Note: Our device payload is already human readable data. Therefore, users do not need to write decoders. Simply create by default.**
560 560  
614 +
561 561  ==== 3.6.1.3 MQTT Integration Setup ====
562 562  
617 +
563 563  Go to the (% style="color:blue" %)**Integrations center**(%%) **->** (% style="color:blue" %)**Integrations page**(%%) and click **“(% style="color:blue" %)plus(%%)”** icon to add a new integration. Name it (% style="color:blue" %)**“MQTT Integration”**(%%), select type (% style="color:blue" %)**MQTT**;
564 564  
565 565  [[image:image-20240820112247-32.png]]
... ... @@ -578,6 +578,7 @@
578 578  
579 579  [[image:image-20240820112330-35.png]]
580 580  
636 +
581 581  === 3.6.2 Simulate with MQTT.fx ===
582 582  
583 583  [[image:image-20240820112340-36.png]]
... ... @@ -584,8 +584,10 @@
584 584  
585 585  [[image:image-20240820112351-37.png]]
586 586  
643 +
587 587  === 3.6.3 Configure NB-IoT Sensor ===
588 588  
646 +
589 589  (% style="color:blue" %)**AT Commands**
590 590  
591 591  * (% style="color:#037691" %)**AT+PRO=3,3  **(%%)** **~/~/ Use MQTT to connect to ThingsBoard. Payload Type set to 3.
... ... @@ -608,10 +608,12 @@
608 608  
609 609  [[image:image-20240820112426-40.png]]
610 610  
669 +
611 611  == 3.7 [[Tago.io>>url:https://admin.tago.io/]] (via MQTT) ==
612 612  
613 613  === 3.7.1 Create device & Get Credentials ===
614 614  
674 +
615 615  We use MQTT Connection to send data to [[Tago.io>>url:https://admin.tago.io/]]. We need to Create Device and Get MQTT Credentials first.
616 616  
617 617  [[image:image-20240820112516-41.png]]
... ... @@ -658,8 +658,11 @@
658 658  
659 659  * (% style="color:#037691" %)**AT+PWD=“Your device token”**
660 660  
721 +
722 +
661 661  === 3.7.2 Simulate with MQTT.fx ===
662 662  
725 +
663 663  [[image:image-20240820112552-44.png]]
664 664  
665 665  [[image:image-20240820112604-45.png]]
... ... @@ -670,14 +670,18 @@
670 670  
671 671  [[image:image-20240820112626-47.png]]
672 672  
736 +
673 673  === 3.7.3 tago data ===
674 674  
739 +
675 675  [[image:image-20240820112637-48.png]]
676 676  
677 677  [[image:image-20240820112647-49.png]]
678 678  
744 +
679 679  == 3.8 TCP Connection ==
680 680  
747 +
681 681  (% style="color:blue" %)**AT command:**
682 682  
683 683  * (% style="color:#037691" %)**AT+PRO=4,0   ** (%%) ~/~/ Set to use TCP protocol to uplink(HEX format)
... ... @@ -694,17 +694,18 @@
694 694  
695 695  [[image:image-20240820112716-51.png]]
696 696  
764 +
697 697  == 3.9 AWS Connection ==
698 698  
767 +
699 699  Users can refer to [[Dragino NB device connection to AWS platform instructions>>http://wiki.dragino.com/xwiki/bin/view/Dragino%20NB%20device%20connection%20to%20AWS%20platform%20instructions/#H1.LogintotheplatformandfindIoTcore]]
700 700  
701 -(% class="wikigeneratedid" %)
702 -= =
703 703  
704 704  = 4. COAP/UDP/MQTT/TCP downlink =
705 705  
706 706  == 4.1 MQTT (via MQTT.fx) ==
707 707  
775 +
708 708  Configure MQTT connections properly and send downlink commands to configure nodes through the Publish function of MQTT.fx//.//
709 709  
710 710  **1.** Configure node MQTT connection (via MQTT.fx):
... ... @@ -727,10 +727,12 @@
727 727  
728 728  [[image:image-20240820112732-52.png]][[image:image-20240820112758-53.png]]
729 729  
798 +
730 730  **2. **When the node uplink packets, we can observe the data in MQTT.fx.
731 731  
732 732  [[image:image-20240820112813-54.png]]
733 733  
803 +
734 734  **3. **The downlink command can be successfully sent only when the downlink port is open.
735 735  
736 736   The downlink port is opened for about 3 seconds after uplink packets are sent.
... ... @@ -746,9 +746,34 @@
746 746  
747 747  == 4.2 UDP (via Thingseye) ==
748 748  
749 -(% style="color:red" %)**Note:**(%%) The UDP service on the ThingsEye platform needs to be built by the user.
750 750  
820 +(% style="color:red" %)**Note:**(%%) The UDP service on the ThingsEye platform needs to be built by the user. (Description Link:[[UDP service building instructions>>http://www.ithingsboard.com/docs/user-guide/integrations/udp/]])
751 751  
822 +After the node is successfully connected to the platform, you need to select the corresponding node (you can refer to the node's IMEI to find it)
823 +
824 +[[image:image-20240820141843-2.png||height="546" width="821"]]
825 +
826 +After clicking Show Node Details Page, (% style="color:blue" %)**Select Properties ~-~-- select Shared Properties ~-~-- click Add Properties**
827 +
828 +[[image:image-20240820143316-3.png||height="555" width="1170"]]
829 +
830 +After clicking Add Shared Attribute, set the key to (% style="color:red" %)**value**(%%), and write the command that needs to be downlinked in the Downlink Command Input box
831 +
832 +(% style="color:red" %)**(Note: Downlinks can only be downlinked in string format, otherwise the node will not recognize the downlink command.)**
833 +
834 +[[image:image-20240820143820-4.png||height="554" width="1168"]]
835 +
836 +After the command is successfully added, the platform will send the command down on the node's next uplink.
837 +
838 +[[image:image-20240820144913-6.png||height="585" width="1232"]]
839 +
840 +[[image:image-20240820145133-7.png||height="582" width="1227"]]
841 +
842 +Upon successful issuance, the platform automatically eliminates the attributes from the queue and waits for the next addition of new attributes
843 +
844 +[[image:image-20240820145309-8.png]]
845 +
846 +
752 752  = 5. GPS positioning function =
753 753  
754 754  === 1. Turn on GPS function ===
... ... @@ -771,6 +771,7 @@
771 771  
772 772  == 5.1 What is the usage of Multi Sampling and One Uplink? ==
773 773  
869 +
774 774  The NB series has the feature for Multi Sampling and one uplink. See one of them
775 775  
776 776  [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/SN50v3-NB_BN-IoT_Sensor_Node_User_Manual/#H2.5Multi-SamplingsandOneuplink>>http://wiki.dragino.com/xwiki/bin/view/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/SN50v3-NB_BN-IoT_Sensor_Node_User_Manual/#H2.5Multi-SamplingsandOneuplink]]
... ... @@ -785,8 +785,11 @@
785 785  1*. **AT+TDC=7200** ~/~/ Uplink every 2 hours.
786 786  1*. this will mean each uplink will actually include the 6 uplink data (24 set data which cover 12 hours). So if device doesn't lost 6 continue data. There will not data lost.
787 787  
884 +
885 +
788 788  == 5.2 Why the uplink JSON format is not standard? ==
789 789  
888 +
790 790  The json format in uplink packet is not standard Json format. Below is the example. This is to make the payload as short as possible, due to NB-IoT transmit limition, a standard Json is not able to include 32 sets of sensors data with timestamp.
791 791  
792 792  The firmware version released after 2024, Mar will use change back to use Json format. Detail please check changelog.
... ... @@ -793,10 +793,12 @@
793 793  
794 794  [[image:image-20240820112848-57.png]]
795 795  
895 +
796 796  = 6. Trouble Shooting: =
797 797  
798 798  == 6.1 Checklist for debuging Network Connection issue. Signal Strenght:99 issue. ==
799 799  
900 +
800 800  There are many different providers provide NB-IoT service in the world. They might use different band, different APN & different operator configuration. Which makes connection to NB-IoT network is complicate.
801 801  
802 802  If end device successfully attached NB-IoT Network, User can normally see the signal strengh as below (between 0~~31)
... ... @@ -821,12 +821,14 @@
821 821  
822 822  == (% data-sider-select-id="765eceff-93b1-40ee-800b-b7b7d022ef8a" %)6.2 Why sometime the AT Command is slow in reponse?(%%) ==
823 823  
925 +
824 824  When the MCU is communicating with the NB-IoT module, the MCU response of AT Command will become slower, it might takes several seconds to response.
825 825  
826 826  [[image:image-20240820113015-60.png]]
827 827  
828 -== (% data-sider-select-id="765eceff-93b1-40ee-800b-b7b7d022ef8a" %)6.3 What is the Downlink Command by the NB device?(%%) ==
829 829  
931 +== (% data-sider-select-id="765eceff-93b1-40ee-800b-b7b7d022ef8a" %)6.3 What is the Downlink Command by the -CB device?(%%) ==
932 +
830 830  (% data-sider-select-id="bb6e9353-0c3f-473c-938d-4b416c9a03e6" %)
831 831  === UDP: ===
832 832  
... ... @@ -836,6 +836,7 @@
836 836  
837 837  {AT+TDC=300}
838 838  
942 +
839 839  (% data-sider-select-id="90b80f1a-e924-4c8a-afc5-4429e019a657" %)
840 840  === MQTT: ===
841 841  
... ... @@ -877,5 +877,136 @@
877 877  
878 878  [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/>>http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/]]
879 879  
984 +
985 +== 6.4 What if the signal is good but the domain name resolution fails? ==
986 +
987 +
988 +If the domain name resolution fails, first check whether the domain name is correct, users can use their own website domain name resolution tool to verify the domain name.
989 +
990 +[[image:image-20240827150705-6.png||height="489" width="687"]]
991 +
992 +If the domain name is correct, but the domain name cannot be resolved, the user can turn off the domain name resolution function(AT+GDNS=1) and use the domain name communication directly.
993 +
994 +* Set the DNS
995 +
996 +(% style="color:blue" %)**AT Command: AT+GDNS**
997 +
998 +**AT+GDNS=0**  ~/~/ Default. Automatically resolves the domain name and uses the resolved IP to communicate.
999 +
1000 +**AT+GDNS=1    **~/~/ Disabling Domain name resolution. Use the domain name directly to communicate.
1001 +
1002 +(% style="color:red" %)**Note: For -CB products, with the exception of AT+PRO=2,5, all protocols and payload formats support direct domain communication.**
1003 +
1004 +Example:
1005 +
1006 +[[image:image-20240827150121-5.png||height="476" width="680"]][[image:image-20240827145055-4.png||height="484" width="678"]]
1007 +
1008 +
1009 +== 6.5 GPS debugging ==
1010 +
1011 +
1012 +Indoor GPS signal is very weak, **outdoor** positioning is generally recommended.
1013 +
1014 +[[image:image-20240903104250-9.png||height="275" width="614"]]
1015 +
1016 +
1017 +[[image:image-20240903104431-10.png||height="291" width="621"]]
1018 +
1019 +
1020 +=== 6.5.1 GPS commands ===
1021 +
1022 +
1023 +The following are three related AT commands that introduce GPS functions.
1024 +
1025 +* **Turn on/off GPS**
1026 +
1027 +(% style="color:blue" %)**AT Command: **(% style="color:#037691" %)**AT+GPS **
1028 +
1029 +**Ex1:  **AT+GPS=0  ~/~/ Turn off GPS
1030 +
1031 +**Ex2:  **AT+GPS=1  ~/~/ Turn on GPS
1032 +
1033 +(% style="color:blue" %)**Downlink command:**(%%)** (% style="color:#037691" %)0x11(%%)**
1034 +
1035 +Format: Command Code (0x11) followed by 1 byte.
1036 +
1037 +Example:  Downlink Payload: **11 01   **~/~/ AT+GPS=1
1038 +
1039 +* **Set GNSS open time**
1040 +
1041 +Extend the time to turn on GNSS. The automatic GPS location time is extended when the node is activated.
1042 +
1043 +(% style="color:blue" %)**AT Command: **(% style="color:#037691" %)**AT+GNSST**
1044 +
1045 +Example: AT+GNSST=30  ~/~/ Set the GPS positioning time to 30 seconds
1046 +
1047 +(% style="color:blue" %)**Downlink command:**(%%)** (% style="color:#037691" %)0x10(%%)**
1048 +
1049 +Format: Command Code (0x10) followed by 2 bytes.
1050 +
1051 +Example:  Downlink Payload: **10 00 1E    **~/~/ AT+GNSST=30
1052 +
1053 +* **Set GPS positioning interval**
1054 +
1055 +Feature: Set GPS positioning interval (unit: hour).
1056 +
1057 +When GPS is enabled, the node automatically locates and uplinks each time it passes **GTDC time** after activation.
1058 +
1059 +(% style="color:blue" %)**AT Command: **(% style="color:#037691" %)**AT+GTDC**
1060 +
1061 +Example: AT+GTDC=24  ~/~/ Set the GPS positioning interval to 24h.
1062 +
1063 +(% style="color:blue" %)**Downlink command:**(%%)** (% style="color:#037691" %)0x12(%%)**
1064 +
1065 +Format: Command Code (0x12) followed by 3 bytes.
1066 +
1067 +Example: 24 hours:  24(D)=0x18(H)
1068 +
1069 +Downlink Payload: **12 00 00 18   **~/~/ AT+GTDC=24
1070 +
1071 +
1072 +=== 6.5.2 GPS workflow ===
1073 +
1074 +
1075 +The whole working process after the GPS function is enabled((% style="color:#037691" %)**AT+GPS=1**(%%)) is as follows:
1076 +
1077 +~1. When activate the node, the node will turn on the GNSS, if the GPS signal is good, the node will print and upload the position information with the first data packet immediately.
1078 +
1079 + If the signal is not good, it may take the whole (% style="color:#037691" %)**GNSST**(%%) time but still can not search the latitude and longitude information, at this time the node uploads the latitude and longitude all to 0.
1080 +
1081 + So if there is a failure of positioning, the user can extend the (% style="color:#037691" %)**GNSST**(%%) time appropriately.
1082 +
1083 +2. Each TDC time node is not repositioned and the positioning interval is determined by the AT+GTDC time.
1084 +
1085 + The latitude and longitude payload uplinked at each TDC time is the GPS positioning information from the previous (% style="color:#037691" %)**GTDC**(%%) time.
1086 +
1087 + Only when the node is activated or every (% style="color:#037691" %)**GTDC**(%%) time is reached, the node turns on the GNSS and we can observe the GPS search information through the serial assistant or Bluetooth tool.
1088 +
1089 +
1090 +=== 6.5.3 GPS debugging methods ===
1091 +
1092 +
1093 +In summary, we can deduce the methods of debugging GPS:
1094 +
1095 +* **Check whether the GPS function is enabled.**
1096 +
1097 +[[image:image-20240903102327-5.png||height="271" width="529"]]
1098 +
1099 +* **Check whether the GPS antenna is loose**.
1100 +
1101 +If the GPS antenna is loose, the GPS signal is weak, and the positioning fails.
1102 +
1103 +[[image:image-20240903094214-1.png||height="340" width="461"]]
1104 +
1105 +* **Use the AT+GNSST command to extend the positioning time.**
1106 +
1107 +The default AT+GNSST=30, that is, the default positioning time is 30 seconds.
1108 +
1109 +If the location fails, users can extend the location time.
1110 +
1111 +[[image:image-20240903102641-8.png||height="303" width="600"]]
1112 +
1113 +
1114 +
1115 +
880 880  
881 -​
image-20240820143820-4.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +161.7 KB
Content
image-20240820144823-5.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +145.6 KB
Content
image-20240820144913-6.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +136.4 KB
Content
image-20240820145133-7.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +164.5 KB
Content
image-20240820145309-8.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +32.6 KB
Content
image-20240827145055-4.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +74.2 KB
Content
image-20240827150121-5.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +86.0 KB
Content
image-20240827150705-6.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +86.7 KB
Content
image-20240903094214-1.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +4.5 MB
Content
image-20240903094457-2.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +2.6 MB
Content
image-20240903100736-3.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +250.8 KB
Content
image-20240903100832-4.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +181.5 KB
Content
image-20240903102327-5.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +26.2 KB
Content
image-20240903102542-6.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +16.9 KB
Content
image-20240903102621-7.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +21.9 KB
Content
image-20240903102641-8.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +21.0 KB
Content
image-20240903104250-9.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +46.9 KB
Content
image-20240903104431-10.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +49.2 KB
Content
Copyright ©2010-2024 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0