Last modified by Mengting Qiu on 2025/07/17 10:51

From version 100.4
edited by Xiaoling
on 2023/08/15 17:06
Change comment: There is no comment for this version
To version 56.1
edited by Edwin Chen
on 2023/08/06 08:30
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.Xiaoling
1 +XWiki.Edwin
Content
... ... @@ -1,13 +1,9 @@
1 -(% class="wikigeneratedid" id="HTableofContents:" %)
1 +(% class="wikigeneratedid" %)
2 2  **Table of Contents:**
3 3  
4 4  {{toc/}}
5 5  
6 6  
7 -
8 -
9 -
10 -
11 11  = 1. The use of this guideline =
12 12  
13 13  
... ... @@ -21,26 +21,22 @@
21 21  
22 22  1. Get a NB-IoT SIM card from Service Provider. (Not the same as the SIM card we use in mobile phone)
23 23  1. Insert the SIM card to Sensor
24 -1. [[Configure APN>>http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20configure%20APN%20in%20the%20node/]] in the sensor (AT+APN=<APN>)
20 +1. [[Configure APN>>http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20configure%20APN%20in%20the%20node/]] in the sensor
25 25  
26 -[[image:image-20230808205045-1.png||height="293" width="438"]]
27 -
28 28  After doing above, the NB-IoT Sensors should be able to attach to NB-IoT network .
29 29  
30 30  The -NB and -NS models support (% style="color:blue" %)**LTE Cat NB2**(%%), with below frequency band: multiple frequency bands of (% style="color:blue" %)**B1/B2/B3/B4/B5/B8/B12/B13/B14/B17/B18/B19/B20/B25/B28/B66/B70/B85**(%%) . Make sure you use a the NB-IoT SIM card.
31 31  
32 32  (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:878px" %)
33 -|(% style="background-color:#4f81bd; color:white; width:117px" %)**SIM Provider**|(% style="background-color:#4f81bd; color:white; width:151px" %)**AT+APN=**|(% style="background-color:#4f81bd; color:white; width:474px" %)**NB-IoT Coverage**|(% style="background-color:#4f81bd; color:white; width:135px" %)**Comments**
34 -|(% style="width:117px" %)**[[1NCE>>https://1nce.com]]**|(% style="width:151px" %)iot.1nce.net|(% style="width:474px" %)(((
27 +|(% style="background-color:#4f81bd; color:white; width:114px" %)**SIM Provider**|(% style="background-color:#4f81bd; color:white; width:154px" %)**APN**|(% style="background-color:#4f81bd; color:white; width:474px" %)**NB-IoT Coverage**|(% style="background-color:#4f81bd; color:white; width:135px" %)**Comments**
28 +|(% style="width:114px" %)**[[1NCE>>https://1nce.com]]**|(% style="width:154px" %)iot.1nce.net|(% style="width:474px" %)(((
35 35  **[[Coverage Reference Link>>https://1nce.com/en-ap/1nce-connect]]**
36 36  
37 37  Austria, Belgium, Bulgaria, Croatia, Czech Republic, Denmark, Finland, Germany, Great Britain, Greece, Hungary, Ireland, Italy, Latvia, Malta, Netherlands, Norway, Puerto Rico, Russia, Slovak , Republic, Slovenia, Spain, Sweden, Switzerland, Taiwan, USA, US Virgin Islands
38 38  )))|(% style="width:135px" %)
39 -|(% style="width:117px" %)China Mobile|(% style="width:151px" %)No need configure|(% style="width:474px" %)China Mainland, HongKong|(% style="width:135px" %)
40 -|(% style="width:117px" %)China Telecom|(% style="width:151px" %)ctnb|(% style="width:474px" %)China Mainland|(% style="width:135px" %)
33 +|(% style="width:114px" %)China Mobile|(% style="width:154px" %) |(% style="width:474px" %)China Mainland, HongKong|(% style="width:135px" %)
34 +|(% style="width:114px" %)China Telecom|(% style="width:154px" %) |(% style="width:474px" %)China Mainland|(% style="width:135px" %)
41 41  
42 -
43 -
44 44  = 3. Configure to connect to different servers =
45 45  
46 46  == 3.1 General UDP Connection ==
... ... @@ -140,8 +140,6 @@
140 140  
141 141  * (% style="color:#037691" %)**Password:**(%%) <Your ThingSpeak MQTT Password>
142 142  
143 -
144 -
145 145  ==== 3.3.2.2 Publish Data to ThingSpeak Channel ====
146 146  
147 147  
... ... @@ -183,8 +183,6 @@
183 183  
184 184  * (% style="color:blue" %)**AT+SUBTOPIC=<YOUR_CHANNEL_ID>**
185 185  
186 -
187 -
188 188  ==== 3.3.3.2 Uplink Examples ====
189 189  
190 190  
... ... @@ -226,143 +226,185 @@
226 226  
227 227  Below is the NB-IoT Product Table show the mapping.
228 228  
229 -(% border="1" cellspacing="4" style="background-color:#f2f2f2; width:1424px" %)
230 -|(% 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
231 -|(% 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" %)
232 -|(% 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" %)
233 -|(% 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" %)
234 -|(% 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" %)
235 -|(% 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" %)
236 -|(% 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" %)
237 -|(% 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" %)
238 -|(% 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" %)
239 -|(% 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" %)
240 -|(% 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" %)
241 -|(% 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
242 -|(% 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" %)
243 -|(% 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" %)
244 -|(% 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" %)
245 -|(% 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" %)
246 -|(% 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" %)
247 -|(% 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" %)
217 +(% border="1" cellspacing="4" style="background-color:#f2f2f2; width:1386px" %)
218 +|(% style="background-color:#4f81bd; width:124px" %) |(% style="background-color:#4f81bd; color:white; width:91px" %)Field1|(% style="background-color:#4f81bd; color:white; width:102px" %)Field2|(% style="background-color:#4f81bd; color:white; width:159px" %)Field3|(% style="background-color:#4f81bd; color:white; width:153px" %)Field4|(% style="background-color:#4f81bd; color:white; width:152px" %)Field5|(% style="background-color:#4f81bd; color:white; width:148px" %)Field6|(% style="background-color:#4f81bd; color:white; width:164px" %)Field7|(% style="background-color:#4f81bd; color:white; width:152px" %)Field8|(% style="background-color:#4f81bd; color:white; width:66px" %)Field9|(% style="background-color:#4f81bd; color:white; width:66px" %)Field10
219 +|(% style="background-color:#4f81bd; color:white; width:124px" %)S31x-NB|(% style="width:91px" %)Temperature |(% style="width:102px" %)Humidity|(% style="width:159px" %)Battery|(% style="width:153px" %)RSSI|(% style="width:152px" %) |(% style="width:148px" %) |(% style="width:164px" %) |(% style="width:152px" %) |(% style="width:66px" %) |(% style="width:66px" %)
220 +|(% style="background-color:#4f81bd; color:white; width:124px" %)SE01-NB|(% style="width:91px" %)Temperature |(% style="width:102px" %)Humidity|(% style="width:159px" %)conduct|(% style="width:153px" %)dielectric_constant|(% style="width:152px" %)Battery|(% style="width:148px" %)RSSI|(% style="width:164px" %) |(% style="width:152px" %) |(% style="width:66px" %) |(% style="width:66px" %)
221 +|(% style="background-color:#4f81bd; color:white; width:124px" %)DDS20-NB|(% style="width:91px" %)distance|(% style="width:102px" %)Battery|(% style="width:159px" %)RSSI|(% style="width:153px" %) |(% style="width:152px" %) |(% style="width:148px" %) |(% style="width:164px" %) |(% style="width:152px" %) |(% style="width:66px" %) |(% style="width:66px" %)
222 +|(% style="background-color:#4f81bd; color:white; width:124px" %)DDS45-NB|(% style="width:91px" %)distance|(% style="width:102px" %)Battery|(% style="width:159px" %)RSSI|(% style="width:153px" %) |(% style="width:152px" %) |(% style="width:148px" %) |(% style="width:164px" %) |(% style="width:152px" %) |(% style="width:66px" %) |(% style="width:66px" %)
223 +|(% style="background-color:#4f81bd; color:white; width:124px" %)DDS75-NB|(% style="width:91px" %)distance|(% style="width:102px" %)Battery|(% style="width:159px" %)RSSI|(% style="width:153px" %) |(% style="width:152px" %) |(% style="width:148px" %) |(% style="width:164px" %) |(% style="width:152px" %) |(% style="width:66px" %) |(% style="width:66px" %)
224 +|(% style="background-color:#4f81bd; color:white; width:124px" %)NMDS120-NB|(% style="width:91px" %)distance|(% style="width:102px" %)Battery|(% style="width:159px" %)RSSI|(% style="width:153px" %) |(% style="width:152px" %) |(% style="width:148px" %) |(% style="width:164px" %) |(% style="width:152px" %) |(% style="width:66px" %) |(% style="width:66px" %)
225 +|(% rowspan="1" style="background-color:#4f81bd; color:white; width:124px" %)SPH01-NB|(% style="width:91px" %)ph|(% style="width:102px" %)Temperature|(% style="width:159px" %)Battery|(% style="width:153px" %)RSSI|(% style="width:152px" %) |(% style="width:148px" %) |(% style="width:164px" %) |(% style="width:152px" %) |(% style="width:66px" %) |(% colspan="1" rowspan="1" style="width:66px" %)
226 +|(% style="background-color:#4f81bd; color:white; width:124px" %)NLM01-NB|(% style="width:91px" %)Humidity|(% style="width:102px" %)Temperature|(% style="width:159px" %)Battery|(% style="width:153px" %)RSSI|(% style="width:152px" %) |(% style="width:148px" %) |(% style="width:164px" %) |(% style="width:152px" %) |(% style="width:66px" %) |(% style="width:66px" %)
227 +|(% style="background-color:#4f81bd; color:white; width:124px" %)NMDS200-NB|(% style="width:91px" %)distance1|(% style="width:102px" %)distance2|(% style="width:159px" %)Battery|(% style="width:153px" %)RSSI|(% style="width:152px" %) |(% style="width:148px" %) |(% style="width:164px" %) |(% style="width:152px" %) |(% style="width:66px" %) |(% style="width:66px" %)
228 +|(% style="background-color:#4f81bd; color:white; width:124px" %)CPN01-NB|(% style="width:91px" %)alarm|(% style="width:102px" %)count|(% style="width:159px" %)door open duration|(% style="width:153px" %)calc flag|(% style="width:152px" %)Battery|(% style="width:148px" %)RSSI|(% style="width:164px" %) |(% style="width:152px" %) |(% style="width:66px" %) |(% style="width:66px" %)
229 +|(% colspan="1" rowspan="1" style="background-color:#4f81bd; color:white; width:124px" %)DS03A-NB|(% colspan="1" rowspan="1" style="width:91px" %)level|(% colspan="1" rowspan="1" style="width:102px" %)alarm|(% colspan="1" rowspan="1" style="width:159px" %)pb14door open num|(% colspan="1" rowspan="1" style="width:153px" %)pb14 last open time|(% colspan="1" rowspan="1" style="width:152px" %)pb15 level status|(% colspan="1" rowspan="1" style="width:148px" %)pb15 alarm status|(% colspan="1" rowspan="1" style="width:164px" %)pb15 door open num|(% colspan="1" rowspan="1" style="width:152px" %)pb15 last open time|(% colspan="1" rowspan="1" style="width:66px" %)Battery|(% colspan="1" rowspan="1" style="width:66px" %)RSSI
230 +|(% colspan="1" rowspan="1" style="background-color:#4f81bd; color:white; width:124px" %)SN50V3-NB|(% colspan="1" rowspan="1" style="width:91px" %) |(% colspan="1" rowspan="1" style="width:102px" %) |(% colspan="1" rowspan="1" style="width:159px" %) |(% colspan="1" rowspan="1" style="width:153px" %) |(% colspan="1" rowspan="1" style="width:152px" %) |(% colspan="1" rowspan="1" style="width:148px" %) |(% colspan="1" rowspan="1" style="width:164px" %) |(% colspan="1" rowspan="1" style="width:152px" %) |(% colspan="1" rowspan="1" style="width:66px" %) |(% colspan="1" rowspan="1" style="width:66px" %)
231 +|(% colspan="1" rowspan="1" style="background-color:#4f81bd; color:white; width:124px" %)mod1|(% colspan="1" rowspan="1" style="width:91px" %)mod|(% colspan="1" rowspan="1" style="width:102px" %)Battery|(% colspan="1" rowspan="1" style="width:159px" %)RSSI|(% colspan="1" rowspan="1" style="width:153px" %)DS18B20 Temp|(% colspan="1" rowspan="1" style="width:152px" %)exit_state/input PA4|(% colspan="1" rowspan="1" style="width:148px" %)adc0|(% colspan="1" rowspan="1" style="width:164px" %)Temperature |(% colspan="1" rowspan="1" style="width:152px" %)Humidity|(% colspan="1" rowspan="1" style="width:66px" %) |(% colspan="1" rowspan="1" style="width:66px" %)
232 +|(% colspan="1" style="background-color:#4f81bd; color:white; width:124px" %)mod2|(% colspan="1" style="width:91px" %)mod|(% colspan="1" style="width:102px" %)Battery|(% colspan="1" style="width:159px" %)RSSI|(% colspan="1" style="width:153px" %)DS18B20 Temp|(% colspan="1" style="width:152px" %)exit_state/input PA4|(% colspan="1" style="width:148px" %)adc0|(% colspan="1" style="width:164px" %)distance|(% colspan="1" style="width:152px" %) |(% colspan="1" style="width:66px" %) |(% colspan="1" style="width:66px" %)
233 +|(% colspan="1" style="background-color:#4f81bd; color:white; width:124px" %)mod3|(% colspan="1" style="width:91px" %)mod|(% colspan="1" style="width:102px" %)Battery|(% colspan="1" style="width:159px" %)RSSI|(% colspan="1" style="width:153px" %)adc0|(% colspan="1" style="width:152px" %)exit_state/input PA4|(% colspan="1" style="width:148px" %)adc1|(% colspan="1" style="width:164px" %)Temperature|(% colspan="1" style="width:152px" %)Humidity|(% colspan="1" style="width:66px" %)adc4|(% colspan="1" style="width:66px" %)
234 +|(% colspan="1" style="background-color:#4f81bd; color:white; width:124px" %)mod4|(% colspan="1" style="width:91px" %)mod|(% colspan="1" style="width:102px" %)Battery|(% colspan="1" style="width:159px" %)RSSI|(% colspan="1" style="width:153px" %)DS18B20 Temp|(% colspan="1" style="width:152px" %)adc0|(% colspan="1" style="width:148px" %)exit_state/input PA4|(% colspan="1" style="width:164px" %)DS18B20 Temp2|(% colspan="1" style="width:152px" %)DS18B20 Temp3|(% colspan="1" style="width:66px" %) |(% colspan="1" style="width:66px" %)
235 +|(% colspan="1" style="background-color:#4f81bd; color:white; width:124px" %)mod5|(% colspan="1" style="width:91px" %)mod|(% colspan="1" style="width:102px" %)Battery|(% colspan="1" style="width:159px" %)RSSI|(% colspan="1" style="width:153px" %)DS18B20 Temp|(% colspan="1" style="width:152px" %)adc0|(% colspan="1" style="width:148px" %)exit_state/input PA4|(% colspan="1" style="width:164px" %)Weight|(% colspan="1" style="width:152px" %) |(% colspan="1" style="width:66px" %) |(% colspan="1" style="width:66px" %)
236 +|(% colspan="1" style="background-color:#4f81bd; color:white; width:124px" %)mod6|(% colspan="1" style="width:91px" %)mod|(% colspan="1" style="width:102px" %)Battery|(% colspan="1" style="width:159px" %)RSSI|(% colspan="1" style="width:153px" %)count|(% colspan="1" style="width:152px" %) |(% colspan="1" style="width:148px" %) |(% colspan="1" style="width:164px" %) |(% colspan="1" style="width:152px" %) |(% colspan="1" style="width:66px" %) |(% colspan="1" style="width:66px" %)
248 248  
238 +(% class="wikigeneratedid" %)
239 +== ==
249 249  
241 +== 3.4 Datacake ==
250 250  
251 -== 3.4 [[Datacake>>https://datacake.co/]] ==
243 +(% class="wikigeneratedid" %)
244 +=== ===
252 252  
246 +=== 3.4.1 Define Product ===
253 253  
254 -(% class="wikigeneratedid" %)
255 -Dragino NB-IoT sensors has its template in **[[Datacake>>https://datacake.co/]]** Platform. There are two version for NB Sensor,
256 256  
249 +Firstly, we need to set the MQTT mode to datacake, and we need to run(% style="color:blue" %)** AT+PRO=3,2**(%%). This command is set to datacake. After running the command, the device automatically sets the server address, port.
257 257  
258 -(% class="wikigeneratedid" %)
259 -As example for S31B-NB. there are two versions: S31B-NB-1D and S31B-NB-GE.
251 +By chosing to add the device under a (% style="color:blue" %)**"New Product"**(%%) you are required to give a name for this product. You can name it something like (% style="color:blue" %)**"My First MQTT Product"**.
260 260  
261 -* (% style="color:blue" %)**S31B-NB-1D**(%%): This version have pre-configure DataCake connection. User just need to Power on this device, it will auto connect send data to DataCake Server.
253 +[[image:image-20230802112413-14.png||height="1095" width="1302"]]
262 262  
263 -* (% style="color:blue" %)**S31B-NB-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.
264 264  
256 +=== 3.4.2 Create Device ===
265 265  
266 266  
267 -=== 3.4.1 Create device ===
259 +In the second step you have to define the device which should be added to the product.
268 268  
261 +[[image:image-20230802112413-15.png||height="859" width="1290"]]
269 269  
270 -(% style="color:blue" %)**Add Device**(%%) in DataCake.
263 +Enter a name here (such as "My First MQTT Device") and complete the creation of the device by clicking on the (% style="color:blue" %)**"Next"**(%%) button.
271 271  
272 -[[image:image-20230808162301-1.png]]
273 273  
266 +=== 3.4.3 Create Database Fields ===
274 274  
275 -[[image:image-20230808162342-2.png]]
276 276  
269 +After creating the device, it is listed in the table of the fleet view. Now open the device by clicking on the entry in the list.
277 277  
278 -(% style="color:blue" %)**Choose the correct model**(%%) from template.
271 +You will then see a device view with an empty dashboard. Now, the first thing we want to do is navigate to the Device configuration. To do this, use the tab bar and click on (% style="color:blue" %)**"Configuration"**.
279 279  
280 -[[image:image-20230808162421-3.png]]
273 +[[image:image-20230802112413-16.png||height="495" width="1310"]]
281 281  
275 +[[image:image-20230802112413-17.png||height="741" width="1303"]]
282 282  
283 -(% style="color:blue" %)**Fill Device ID**(%%). The device ID needs to be filled in with IMEI, and a prefix of(% style="color:blue" %)** 'f' **(%%)needs to be added.
277 +To create a first database field, please click on the (% style="color:blue" %)**"Add Field"**(%%) button as marked in the screenshot above.
284 284  
285 -[[image:image-20230808163612-7.png]]
279 +This will open anothemodal asking for some required input for your first field.
286 286  
287 -[[image:image-20230808163035-5.png]]
281 +[[image:image-20230802112413-18.png||height="878" width="1305"]]
288 288  
289 -[[image:image-20230808163049-6.png]]
283 +[[image:image-20230802112413-19.png]]
290 290  
291 291  
292 -=== 3.4.2 Scan QR code to obtain data ===
286 +=== 3.4.Set up Broker ===
293 293  
294 294  
295 -Users can use their phones or computers to scan QR codes to obtain device data information.
289 +The broker is running on mqtt.datacake.co on ports (% style="color:blue" %)**1883 and 8883**(%%). Port 1883 is unsecured and should not be used in production environments. Port 8883 uses a CA signed server certificate.
296 296  
297 -[[image:image-20230808170051-8.png||height="255" width="259"]]
291 +You will need an access token to log into the Datacake MQTT Broker. You can use your own personal token or create a token explicitly for individual devices or groups of devices.
298 298  
299 -[[image:image-20230808170548-9.png]]
293 +View your Personal Access Token
300 300  
295 +You can view your own token via the User-Settings-Menu. You can reach this menu by clicking on (% style="color:blue" %)**"Edit Profile"**(%%) at the end of the list using the Workspace Selector:
301 301  
302 -=== 3.4.2 AT command for connecting to DataCake ===
297 +[[image:image-20230802112413-20.png]]
303 303  
304 304  
305 -(% style="color:blue" %)**AT+PRO=2,0**
300 +(% style="color:blue" %)**MQTT Client-ID**
306 306  
307 -(% style="color:blue" %)**AT+SERVADDR=67.207.76.90,4445**
302 +The Datacake Broker manages the client IDs internally. You do not need to worry about a client ID. If your client optionally supports the specification of a client ID, please leave this 
303 +specification blank. Your client then creates a randomly generated ID.
308 308  
305 +* (% style="color:blue" %)**AT+CLIENT=“Any value”**
309 309  
310 -== 3.5 Node-Red (via MQTT) ==
307 +* (% style="color:blue" %)**AT+UNAME=Token**
311 311  
312 -=== 3.5.1 Configure [[Node-Red>>http://wiki.dragino.com/xwiki/bin/view/Main/Node-RED/]] ===
309 +* (% style="color:blue" %)**AT+PWD=Token**
313 313  
311 +[[image:image-20230802112413-21.png]]
314 314  
315 -Take S31-NB UDP protocol as an example.
316 316  
317 -Dragino provides input flow examples for the sensors.
314 +=== 3.4.5 Create your first Subscription ===
318 318  
319 -User can download the required JSON file through Dragino Node-RED input flow template.
320 320  
321 -Download sample JSON file link: [[https:~~/~~/www.dropbox.com/sh/mduw85jcuwsua22/AAAvwPhg9z6dLjJhmZjqBf_ma?dl=0>>url:https://www.dropbox.com/sh/mduw85jcuwsua22/AAAvwPhg9z6dLjJhmZjqBf_ma?dl=0]]
317 +(% style="color:blue" %)**Subscribe**
322 322  
323 -We can directly import the template.
319 +Datipublished according tthe following structure: (% style="color:blue" %)**dtck~/~//**(%%)** **
324 324  
325 -The templates for S31-NB and NB95S31B are the same.
321 +Subscribe to topics using this structure to receive messages via MQTT when readings (via API or MQTT) arrive in the Datacake Cloud. Messages are published whenever there is a change to a corresponding database field.
326 326  
327 327  
328 -[[image:image-20230809173127-4.png]]
324 +[[image:image-20230802112413-22.png]]
329 329  
330 330  
331 -Please select the NB95S31B template.
327 +[[image:image-20230802112413-23.png]]
332 332  
333 -[[image:image-20230809173310-5.png]]
334 334  
335 -[[image:image-20230809173438-6.png]]
330 +[[image:image-20230802112413-24.png]]
336 336  
337 -[[image:image-20230809173800-7.png]]
338 338  
333 +(% style="color:blue" %)**example:**
339 339  
340 -Successfully imported template.
335 +AT+PUBTOPIC=dtck-pub/nbmattest/936c0db6-e9a5-4353-9fdb-3f63c8bfce7e/Temperature
341 341  
342 -[[image:image-20230809173835-8.png]]
337 +[[image:image-20230802112413-25.png]]
343 343  
344 344  
345 -Users can set UDP port.
340 +=== 3.4.6 Define Publish Topic ===
346 346  
347 -[[image:image-20230809174053-9.png]]
348 348  
343 +(% style="color:blue" %)**Publish**
349 349  
350 -=== 3.5.2 Simulate Connection ===
345 +To upload data into thDatacake Cloud and into a specific device, you publish the data to the respective topic structure.
351 351  
347 +Due to the nature of MQTT, the topic prefix differs as follows: (% style="color:blue" %)**dtck-pub~/~//**
352 352  
353 -We have completed the configuration of UDP. We can try sending packets to node red.
349 +(% style="color:blue" %)**example:**
354 354  
355 -[[image:image-20230810083934-1.png]]
351 +AT+SUBTOPIC=dtck/nbmattest/936c0db6-e9a5-4353-9fdb-3f63c8bfce7e/Temperature
356 356  
357 -[[image:image-20230810084048-2.png]]
358 358  
354 +=== 3.4.7 upload data ===
355 +
356 +
357 +[[image:image-20230802112413-26.png]]
358 +
359 +[[image:image-20230802112413-27.png]]
360 +
361 +[[image:image-20230802112413-28.png]]
362 +
363 +
364 +== 3.5 Node-Red (via MQTT) ==
365 +
366 +=== 3.5.1 Configure [[Node-Red>>http://wiki.dragino.com/xwiki/bin/view/Main/Node-RED/]] ===
367 +
368 +
369 +[[image:image-20230802112413-29.png]]
370 +
371 +
372 +[[image:image-20230802112413-30.png]]
373 +
374 +
375 +=== 3.5.2 Simulate Connection ===
376 +
377 +
378 +[[image:image-20230802112413-31.png]]
379 +
380 +
359 359  === 3.5.3 Configure NB-IoT Sensors ===
360 360  
361 361  
362 -* (% style="color:blue" %)**AT+PRO=2,0(hex format) or 2,1(json format)  **(%%)** **~/~/  Set to UDP Server and  Payload
384 +* (% style="color:blue" %)**AT+PRO=3,0(hex format) or 3,5(json format)**(%%)    ~/~/  Set to mqtt Server and  Payload
363 363  
364 -* (% style="color:blue" %)**AT+SERVADDR=xx.xx.xx.xx,port   **(%%)** **~/~/  Set Server IP and  port
386 +* (% style="color:blue" %)**AT+CLIENT=any value**
365 365  
388 +* (% style="color:blue" %)**AT+UNAME=any value**
389 +
390 +* (% style="color:blue" %)**AT+PWD=any value**
391 +
392 +* (% style="color:blue" %)**AT+PUBTOPIC=any value**
393 +
394 +* (% style="color:blue" %)**AT+SUBTOPIC=any value**
395 +
366 366  == 3.6 ThingsBoard.Cloud (via MQTT) ==
367 367  
368 368  === 3.6.1 Configure ThingsBoard ===
... ... @@ -370,7 +370,7 @@
370 370  ==== 3.6.1.1 Create Device ====
371 371  
372 372  
373 -Create a New Device in [[ThingsBoard>>url:https://thingsboard.cloud/]]. Record Device Name which is used for MQTT connection.
403 +Create a New Device in [[ThingsBoard>>url:https://thingsboard.cloud/]].
374 374  
375 375  [[image:image-20230802112413-32.png]]
376 376  
... ... @@ -393,7 +393,7 @@
393 393  
394 394  [[image:image-20230802112413-34.png||height="734" width="1305"]]
395 395  
396 -(% style="color:red" %)**Note: Our device payload is already human readable data. Therefore, users do not need to write decoders. Simply create by default.**
426 +(% style="color:red" %)**Note:Our device payload is already human readable data. Therefore, users do not need to write decoders. Simply create by default.**
397 397  
398 398  
399 399  ==== 3.6.1.3 MQTT Integration Setup ====
... ... @@ -433,18 +433,21 @@
433 433  
434 434  (% style="color:blue" %)**AT Commands**
435 435  
436 -* (% style="color:#037691" %)**AT+PRO=3,3  **(%%)** **~/~/ Use MQTT to connect to ThingsBoard. Payload Type set to 3.
466 +* (% style="color:#037691" %)**AT+PRO=3,3  **(%%)** **~/~/ Use MQTT to connect to ThingsBoard.
437 437  
438 -* (% style="color:#037691" %)**AT+SUBTOPIC=<device name>**
468 +* (% style="color:#037691" %)**AT+SUBTOPIC=device name** (%%) **~-~-> 只需要 Device Name 吗?对的**
439 439  
440 -* (% style="color:#037691" %)**AT+PUBTOPIC=<device name>**
470 +* (% style="color:#037691" %)**AT+PUBTOPIC=device name** (%%) **~-~-> 只需要 Device Name 吗?对的**
441 441  
442 -* (% style="color:#037691" %)**AT+CLIENT=<device name> or User Defined**
472 +Users do not need to fill in the client, username, and password. But the configuration information of the device requires setting the client, username, and password, which can be enterefreely.** (软件自动填充为 Device Name 吧).这边不用提示了,客户不需要输入。(大部分客户还是会自己去设置这个的,提高安全性)**
443 443  
444 -* (% style="color:#037691" %)**AT+UNAME=<device name> or User Defined**
474 +(% style="color:blue" %)**CLIENT :“Any value**
445 445  
446 -* (% style="color:#037691" %)**AT+PWD=<device name> or User Defined**
476 +(% style="color:blue" %)**User Name:“Any value**
447 447  
478 +(% style="color:blue" %)**Password:“Any value”**
479 +
480 +
448 448  Test Uplink by click the button for 1 second
449 449  
450 450  [[image:image-20230802112413-41.png]]
... ... @@ -471,82 +471,73 @@
471 471  [[image:image-20230802112413-46.png]]
472 472  
473 473  
474 -The device needs to enable the TLS modand set the (% style="color:blue" %)**AT+TLSMOD=1,0**(%%) command.
507 +On the Connection Profilwindow, set the following information: **(这边加一个截图)**
475 475  
476 -(% style="color:blue" %)**On the Connection Profile window, set the following information:**
509 +* (% style="color:blue" %)**Profile Name: “Any name”**
477 477  
478 -* (% style="color:#037691" %)**ProfilName: “Any name”**
511 +* (% style="color:blue" %)**Broker Address: mqtt.tago.io**
479 479  
480 -* (% style="color:#037691" %)**Broker Addressmqtt.tago.io**
513 +* (% style="color:blue" %)**Broker Port1883**
481 481  
482 -* (% style="color:#037691" %)**Broker Port: 8883**
515 +* (% style="color:blue" %)**Client ID“Any value”**
483 483  
484 -* (% style="color:#037691" %)**Client ID: “Any value”**
517 +On the section User credentials, set the following information: **(这边加一个截图)**
485 485  
486 -(% style="color:blue" %)**On the section User credentials, set the following information:**
519 +* (% style="color:blue" %)**User Name: “Any value”**  (%%) ~/~/  Tago validateyour user by the token only
487 487  
488 -* (% style="color:#037691" %)**User Name: “Any value”** (%%) **~/~/ Tago validates your user by the token only**
521 +* (% style="color:blue" %)**Password: “Your device token**
489 489  
490 -* (% style="color:#037691" %)**Password: “Your device token”**
523 +* (% style="color:blue" %)**PUBTOPIC: “Any value”**
491 491  
492 -* (% style="color:#037691" %)**PUBTOPIC: “Any value”**
525 +* (% style="color:blue" %)**SUBTOPIC: “Any value”**
493 493  
494 -* (% style="color:#037691" %)**SUBTOPIC: “Any value”**
527 +=== 3.7.2 Simulate with MQTT.fx ===
495 495  
496 -(% style="color:blue" %)**AT command:**
497 497  
498 -* (% style="color:#037691" %)**AT+PRO=3,0 or 3,5 ** (%%) **~/~/ hex format or json format**
530 +[[image:image-20230802112413-47.png]]
499 499  
500 -* (% style="color:#037691" %)**AT+SUBTOPIC=<device name>or User Defined**
532 +[[image:image-20230802112413-48.png]]
501 501  
502 -* (% style="color:#037691" %)**AT+PUBTOPIC=<device name>or User Defined**
534 +Users can run the (% style="color:blue" %)**AT+PRO=3,5**(%%) command, and the payload will bconverted to **JSON format**.
503 503  
504 -* (% style="color:#037691" %)**AT+CLIENT=<device name> or User Defined**
505 505  
506 -* (% style="color:#037691" %)**AT+UNAME=<device name> or User Defined**
537 +[[image:image-20230802112413-49.png]]
507 507  
508 -* (% style="color:#037691" %)**AT+PWD=“Your device token”**
509 509  
510 -=== 3.7.2 Simulate with MQTT.fx ===
540 +=== 3.7.3 tago data ===
511 511  
512 512  
513 -[[image:image-20230802112413-52.png]]
543 +[[image:image-20230802112413-50.png]]
514 514  
545 +[[image:image-20230802112413-51.png]]
515 515  
516 -[[image:image-20230808105300-2.png]]
517 517  
548 +=== 3.7.4 TLS mode ===
518 518  
519 -Users can run the (% style="color:blue" %)**AT+PRO=3,5**(%%) command, and the payload will be converted to **JSON format**.
520 520  
521 -[[image:image-20230808105217-1.png]]
551 +Users can choose to use (% style="color:blue" %)**SSL/TLS**(%%) mode.
522 522  
523 -[[image:image-20230808105329-3.png]]
553 +On the SSL/TLS section, check the option **Enable SSL/TLS**, and click OK.
524 524  
555 +The device needs to enable the TLS mode and set the (% style="color:blue" %)**AT+TLSMOD=1,0**(%%) command.
525 525  
526 -=== 3.7.3 tago data ===
557 +* (% style="color:blue" %)**Profile Name: “Any name”**
527 527  
559 +* (% style="color:blue" %)**Broker Address: mqtt.tago.io**
528 528  
529 -[[image:image-20230802112413-50.png]]
561 +* (% style="color:blue" %)**Broker Port: 8883**
530 530  
531 -[[image:image-20230802112413-51.png||height="184" width="696"]]
563 +* (% style="color:blue" %)**Client ID: “Any value”**
532 532  
565 +* (% style="color:blue" %)**User Name: “Any value”** (%%) ~/~/ Tago validates your user by the token only
533 533  
534 -== 3.8 TCP Connection ==
567 +* (% style="color:blue" %)**Password: “Your devictoken”**
535 535  
569 +* (% style="color:blue" %)**PUBTOPIC: “Any value”**
536 536  
537 -(% style="color:blue" %)**AT command:**
571 +* (% style="color:blue" %)**SUBTOPIC: “Any value”**
538 538  
539 -* (% style="color:#037691" %)**AT+PRO=4,0   ** (%%) ~/~/ Set to use TCP protocol to uplink(HEX format)
573 +[[image:image-20230802112413-52.png]]
540 540  
541 -* (% style="color:#037691" %)**AT+PRO=4,1   ** (%%) ~/~/ Set to use TCP protocol to uplink(JSON format)
542 542  
543 -* (% style="color:#037691" %)**AT+SERVADDR=120.24.4.116,5600 ** (%%) ~/~/ to set TCP server address and port
544 -
545 -(% style="color:blue" %)**Sensor Console Output when Uplink:**
546 -
547 -[[image:image-20230807233631-1.png]]
548 -
549 -
550 -(% style="color:blue" %)**See result in TCP Server:**
551 -
552 -[[image:image-20230807233631-2.png]]
576 +
image-20230807233631-1.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Edwin
Size
... ... @@ -1,1 +1,0 @@
1 -21.9 KB
Content
image-20230807233631-2.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Edwin
Size
... ... @@ -1,1 +1,0 @@
1 -9.6 KB
Content
image-20230808105217-1.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -68.5 KB
Content
image-20230808105300-2.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -70.1 KB
Content
image-20230808105329-3.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -21.1 KB
Content
image-20230808162301-1.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -76.9 KB
Content
image-20230808162342-2.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -63.8 KB
Content
image-20230808162421-3.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -59.2 KB
Content
image-20230808162727-4.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -54.2 KB
Content
image-20230808163035-5.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -71.6 KB
Content
image-20230808163049-6.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -61.5 KB
Content
image-20230808163612-7.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -53.4 KB
Content
image-20230808170051-8.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -21.5 KB
Content
image-20230808170548-9.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -54.1 KB
Content
image-20230808205045-1.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Edwin
Size
... ... @@ -1,1 +1,0 @@
1 -373.9 KB
Content
image-20230809165928-1.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -74.4 KB
Content
image-20230809170225-2.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -39.9 KB
Content
image-20230809170532-3.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -38.7 KB
Content
image-20230809173127-4.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -82.5 KB
Content
image-20230809173310-5.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -51.9 KB
Content
image-20230809173438-6.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -41.0 KB
Content
image-20230809173800-7.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -46.8 KB
Content
image-20230809173835-8.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -88.8 KB
Content
image-20230809174053-9.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -58.0 KB
Content
image-20230809180523-10.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -91.9 KB
Content
image-20230810083934-1.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -85.1 KB
Content
image-20230810084048-2.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.David
Size
... ... @@ -1,1 +1,0 @@
1 -63.7 KB
Content