Version 127.1 by Bei Jinggeng on 2024/02/02 11:52

Show last authors
1 (% class="wikigeneratedid" id="HTableofContents:" %)
2 **Table of Contents:**
3
4 {{toc/}}
5
6
7
8
9
10
11 = 1. The use of this guideline =
12
13
14 This configure instruction is for Dragino NB-IoT models with -NB or -NS suffix, for example DDS75-NB. These models use the same NB-IoT Module **[[BC660K-GL>>https://www.quectel.com/product/lpwa-bc660k-gl-nb2]]** and has the same software structure. The have the same configure instruction to different IoT servers. Use can follow the instruction here to see how to configure to connect to those servers.
15
16
17 = 2. Attach Network =
18
19 == 2.1 General Configure to attach network ==
20
21
22 To attache NB-IoT sensors to NB-IoT Network, You need to:
23
24 1. Get a NB-IoT SIM card from Service Provider. (Not the same as the SIM card we use in mobile phone)
25 1. Insert the SIM card to Sensor
26 1. [[Configure APN>>http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20configure%20APN%20in%20the%20node/]] in the sensor (AT+APN=<APN>)
27
28 [[image:image-20230808205045-1.png||height="293" width="438"]]
29
30 After doing above, the NB-IoT Sensors should be able to attach to NB-IoT network .
31
32 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.
33
34 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:878px" %)
35 |(% 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**
36 |(% style="width:117px" %)**[[1NCE>>https://1nce.com]]**|(% style="width:151px" %)iot.1nce.net|(% style="width:474px" %)(((
37 **[[Coverage Reference Link>>https://1nce.com/en-ap/1nce-connect]]**
38
39 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
40 )))|(% style="width:135px" %)
41 |(% style="width:117px" %)China Mobile|(% style="width:151px" %)No need configure|(% style="width:474px" %)China Mainland, HongKong|(% style="width:135px" %)
42 |(% style="width:117px" %)China Telecom|(% style="width:151px" %)ctnb|(% style="width:474px" %)China Mainland|(% style="width:135px" %)
43
44 == 2.2 Speed Up Network Attach time ==
45
46
47 BC660K-GL supports multi bands (% style="color:blue" %)**B1/B2/B3/B4/B5/B8/B12/B13/B14/B17/B18/B19/B20/B25/B28/B66/B70/B85. **(%%) It will search one by one and try to attach, this will take a lot of time and even cause attach fail. User can lock the band to specify band for its operator to make this faster.
48
49 (% style="color:#037691" %)**AT+QBAND?       **(%%) ~/~/ Check what is the current used frequency band
50
51 (% style="color:#037691" %)**AT+QBAND=1,4    **(%%) ~/~/ Set to use 1 frequency band. Band4
52
53 (% style="color:#037691" %)**AT+QBAND=2,8,20 **(%%) ~/~/ Set to use 2 frequency bands. Band 8 and Band 20
54
55
56 After connection is successful, user can use (% style="color:#037691" %)**AT+QENG=0 **(%%) to check which band is actually in used.
57
58
59 See bands used for different provider:** [[NB-IoT Deployment , Bands, Operator list>>http://wiki.dragino.com/xwiki/bin/view/Main/NB-IoT%20Deployment%20%2C%20Bands%2C%20Operator%20list/]]**
60
61
62 = 3. Configure to connect to different servers =
63
64 == 3.1 General UDP Connection ==
65
66
67 The NB-IoT Sensor can send packet to server use UDP protocol.
68
69
70 === 3.1.1 Simulate UDP Connection by PC tool ===
71
72
73 We can use PC tool to simulate UDP connection to make sure server works ok.
74
75 [[image:image-20230802112413-1.png||height="468" width="1024"]]
76
77
78 === 3.1.2 Configure NB-IoT Sensor ===
79
80 ==== 3.1.2.1 AT Commands ====
81
82
83 (% style="color:blue" %)**AT Commands:**
84
85 * (% style="color:#037691" %)**AT+PRO=2,0**  (%%) ~/~/  Set to use UDP protocol to uplink ,Payload Type select Hex payload
86
87 * (% style="color:#037691" %)**AT+SERVADDR=120.24.4.116,5601**  (%%) ~/~/  Set UDP server address and port
88
89 * (% style="color:#037691" %)**AT+CFM=1**    (%%) ~/~/  If the server does not respond, this command is unnecessary
90
91 [[image:image-20230802112413-2.png]]
92
93
94 ==== 3.1.2.2 Uplink Example ====
95
96
97 [[image:image-20230802112413-3.png]]
98
99
100 == 3.2 General MQTT Connection ==
101
102
103 The NB-IoT Sensor can send packet to server use MQTT protocol.
104
105 Below are the commands.
106
107 (% style="color:blue" %)**AT Commands:**
108
109 * (% style="color:#037691" %)**AT+PRO=3,0**   (%%) ~/~/  Set to use MQTT protocol to uplink, Payload Type select Hex payload.
110
111 * (% style="color:#037691" %)**AT+SERVADDR=120.24.4.116,1883**  (%%) ~/~/  Set MQTT server address and port
112
113 * (% style="color:#037691" %)**AT+CLIENT=CLIENT**     (%%) ~/~/  Set up the CLIENT of MQTT
114
115 * (% style="color:#037691" %)**AT+UNAME=UNAME**        (%%) ~/~/  Set the username of MQTT
116
117 * (% style="color:#037691" %)**AT+PWD=PWD**             (%%) ~/~/  Set the password of MQTT
118
119 * (% style="color:#037691" %)**AT+PUBTOPIC=NSE01_PUB**  (%%) ~/~/  Set the sending topic of MQTT
120
121 * (% style="color:#037691" %)**AT+SUBTOPIC=NSE01_SUB**  (%%) ~/~/  Set the subscription topic of MQTT
122
123 [[image:image-20230802112413-4.png]]
124
125 [[image:image-20230802112413-5.png||height="530" width="987"]]
126
127 (% 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.**
128
129
130 == 3.3 [[ThingSpeak>>url:https://thingspeak.com/]] (via MQTT) ==
131
132 === 3.3.1 Get MQTT Credentials ===
133
134
135 [[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.
136
137 [[image:image-20230802112413-6.png||height="336" width="925"]]
138
139 [[image:image-20230802112413-7.png]]
140
141
142 === 3.3.2 Simulate with MQTT.fx ===
143
144 ==== 3.3.2.1 Establish MQTT Connection ====
145
146
147 After we got MQTT Credentials, we can first simulate with PC tool MQTT.fx tool to see if the Credentials and settings are fine.
148
149 [[image:image-20230802112413-8.png]]
150
151 * (% style="color:#037691" %)**Broker Address:**(%%) mqtt3.thingspeak.com
152
153 * (% style="color:#037691" %)**Broker Port:**(%%) 1883
154
155 * (% style="color:#037691" %)**Client ID:**(%%) <Your ThingSpeak MQTT ClientID>
156
157 * (% style="color:#037691" %)**User Name:**(%%) <Your ThingSpeak MQTT User Name>
158
159 * (% style="color:#037691" %)**Password:**(%%) <Your ThingSpeak MQTT Password>
160
161 ==== 3.3.2.2 Publish Data to ThingSpeak Channel ====
162
163
164 [[image:image-20230802112413-9.png]]
165
166 [[image:image-20230802112413-10.png]]
167
168
169 (% style="color:blue" %)**In MQTT.fx, we can publish below info:**
170
171 * (% style="color:#037691" %)**Topic:**(%%) channels/YOUR_CHANNEL_ID/publish
172
173 * (% style="color:#037691" %)**Payload:**(%%) field1=63&field2=67&status=MQTTPUBLISH
174
175 Where 63 and 67 are the value to be published to field1 & field2.
176
177
178 (% style="color:blue" %)**Result: **
179
180 [[image:image-20230802112413-11.png||height="539" width="901"]]
181
182
183 === 3.3.3 Configure NB-IoT Sensor for connection ===
184
185 ==== 3.3.3.1 AT Commands: ====
186
187
188 In the NB-IoT, we can run below commands so to publish the channels like MQTT.fx
189
190 * (% style="color:blue" %)**AT+PRO=3,1** (%%) ~/~/ Set to use ThingSpeak Server and Related Payload
191
192 * (% style="color:blue" %)**AT+CLIENT=<Your ThingSpeak MQTT ClientID>**
193
194 * (% style="color:blue" %)**AT+UNAME=<Your ThingSpeak MQTT User Name>**
195
196 * (% style="color:blue" %)**AT+PWD=<Your ThingSpeak MQTT Password>**
197
198 * (% style="color:blue" %)**AT+PUBTOPIC=<YOUR_CHANNEL_ID>**
199
200 * (% style="color:blue" %)**AT+SUBTOPIC=<YOUR_CHANNEL_ID>**
201
202 ==== 3.3.3.2 Uplink Examples ====
203
204
205 [[image:image-20230816201942-1.png]]
206
207 For SE01-NB
208
209 For DDS20-NB
210
211 For DDS45-NB
212
213 For DDS75-NB
214
215 For NMDS120-NB
216
217 For SPH01-NB
218
219 For NLM01-NB
220
221 For NMDS200-NB
222
223 For CPN01-NB
224
225 For DS03A-NB
226
227 For SN50V3-NB
228
229
230 ==== 3.3.3.3 Map fields to sensor value ====
231
232
233 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.
234
235
236 [[image:image-20230802112413-12.png||height="504" width="1011"]]
237
238 [[image:image-20230802112413-13.png||height="331" width="978"]]
239
240
241 Below is the NB-IoT Product Table show the mapping.
242
243 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:1424px" %)
244 |(% 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
245 |(% 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" %)
246 |(% 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" %)
247 |(% 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" %)
248 |(% 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" %)
249 |(% 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" %)
250 |(% 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" %)
251 |(% 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" %)
252 |(% 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" %)
253 |(% 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" %)
254 |(% 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" %)
255 |(% 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
256 |(% 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" %)
257 |(% 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" %)
258 |(% 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" %)
259 |(% 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" %)
260 |(% 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" %)
261 |(% 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" %)
262
263 == 3.4 [[Datacake>>https://datacake.co/]] ==
264
265
266 (% class="wikigeneratedid" %)
267 Dragino NB-IoT sensors has its template in **[[Datacake>>https://datacake.co/]]** Platform. There are two version for NB Sensor,
268
269
270 (% class="wikigeneratedid" %)
271 As example for S31B-NB. there are two versions: **S31B-NB-1D and S31B-NB-GE.**
272
273 * (% 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.
274
275 * (% 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.
276
277 === 3.4.1 For device Already has template ===
278
279 ==== 3.4.1.1 Create Device ====
280
281 (% style="color:blue" %)**Add Device**(%%) in DataCake.
282
283 [[image:image-20230808162301-1.png||height="453" width="952"]]
284
285
286 [[image:image-20230808162342-2.png||height="541" width="952"]]
287
288
289 (% style="color:blue" %)**Choose the correct model**(%%) from template.
290
291 [[image:image-20230808162421-3.png]]
292
293
294 (% 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.
295
296 [[image:image-20230808163612-7.png||height="549" width="952"]]
297
298 [[image:image-20230808163035-5.png]]
299
300 [[image:image-20230808163049-6.png||height="544" width="926"]]
301
302
303 === 3.4.2 For Device already registered in DataCake before shipped ===
304
305 ==== 3.4.2.1 Scan QR Code to get the device info ====
306
307 Users can use their phones or computers to scan QR codes to obtain device data information.
308
309 [[image:image-20230808170051-8.png||height="255" width="259"]]
310
311 [[image:image-20230808170548-9.png]]
312
313
314 ==== 3.4.2.2 Claim Device to User Account ====
315
316 By Default, the device is registered in Dragino's DataCake Account. User can Claim it to his account.
317
318
319
320 === 3.4.3 Manual Add Decoder in DataCake ( don't use the template in DataCake) ===
321
322 **Step1:Add a device**
323
324 [[image:image-20240129170024-1.png||height="330" width="900"]]
325
326 **Step2:Choose your device type,please select dragino NB-IOT device**
327
328 [[image:image-20240129170216-2.png||height="534" width="643"]]
329
330 **Step3:Choose to create a new device**
331
332 [[image:image-20240129170539-3.png||height="459" width="646"]]
333
334 **Step4:Fill in the device ID of your NB device**
335
336 [[image:image-20240202111546-1.png||height="378" width="651"]]
337
338 **Step5:Please select your device plan according to your needs and complete the creation of the device**
339
340 [[image:image-20240129171236-6.png||height="450" width="648"]]
341
342 **Step6:Please add the decoder at the payload decoder of the device configuration.**
343
344 **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]]
345
346 [[image:image-20240129172056-7.png||height="457" width="816"]]
347
348 [[image:image-20240129173116-9.png||height="499" width="814"]]
349
350 **Step6:Add the output of the decoder as a field**
351
352 [[image:image-20240129173541-10.png||height="592" width="968"]]
353
354 **Step7:Customize the dashboard and use fields as parameters of the dashboard**
355
356 [[image:image-20240129174518-11.png||height="147" width="1042"]]
357
358 [[image:image-20240129174657-12.png||height="538" width="916"]]
359
360 [[image:image-20240129174840-13.png||height="536" width="750"]]
361
362
363 === 3.4.4 For device have not configured to connect to DataCake ===
364
365 (% class="lead" %)
366 Use AT command for connecting to DataCake
367
368 (% style="color:blue" %)**AT+PRO=2,0**
369
370 (% style="color:blue" %)**AT+SERVADDR=67.207.76.90,4445**
371
372
373 == 3.5 Node-Red (via MQTT) ==
374
375 === 3.5.1 Configure [[Node-Red>>http://wiki.dragino.com/xwiki/bin/view/Main/Node-RED/]] ===
376
377
378 Take S31-NB UDP protocol as an example.
379
380 Dragino provides input flow examples for the sensors.
381
382 User can download the required JSON file through Dragino Node-RED input flow template.
383
384 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]]
385
386 We can directly import the template.
387
388 The templates for S31-NB and NB95S31B are the same.
389
390
391 [[image:image-20230809173127-4.png]]
392
393
394 Please select the NB95S31B template.
395
396 [[image:image-20230809173310-5.png||height="558" width="926"]]
397
398 [[image:image-20230809173438-6.png]]
399
400 [[image:image-20230809173800-7.png]]
401
402
403 Successfully imported template.
404
405 [[image:image-20230809173835-8.png||height="515" width="860"]]
406
407
408 Users can set UDP port.
409
410 [[image:image-20230809174053-9.png]]
411
412
413 === 3.5.2 Simulate Connection ===
414
415
416 We have completed the configuration of UDP. We can try sending packets to node red.
417
418 [[image:image-20230810083934-1.png]]
419
420 [[image:image-20230810084048-2.png||height="535" width="1052"]]
421
422
423 === 3.5.3 Configure NB-IoT Sensors ===
424
425
426 * (% style="color:#037691" %)**AT+PRO=3,0 or 3,5 ** (%%) **~/~/ hex format or json format**
427 * (% style="color:#037691" %)**AT+SUBTOPIC=<device name>or User Defined**
428 * (% style="color:#037691" %)**AT+PUBTOPIC=<device name>or User Defined**
429 * (% style="color:#037691" %)**AT+CLIENT=<device name> or User Defined**
430 * (% style="color:#037691" %)**AT+UNAME=<device name> or User Defined**
431 * (% style="color:#037691" %)**AT+PWD=“Your device token”**
432
433 == 3.6 ThingsBoard.Cloud (via MQTT) ==
434
435 === 3.6.1 Configure ThingsBoard ===
436
437 ==== 3.6.1.1 Create Device ====
438
439
440 Create a New Device in [[ThingsBoard>>url:https://thingsboard.cloud/]]. Record Device Name which is used for MQTT connection.
441
442 [[image:image-20230802112413-32.png||height="583" width="1066"]]
443
444
445 ==== 3.6.1.2 Create Uplink & Downlink Converter ====
446
447
448 (% style="color:blue" %)**Uplink Converter**
449
450 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.
451
452 To create an uplink converter go to the (% style="color:blue" %)**Integrations center**(%%) -> (% style="color:blue" %)**Data converters**(%%) page and click (% style="color:blue" %)**“plus”** (%%)button. Name it (% style="color:blue" %)**“MQTT Uplink Converter”**(%%) and select type (% style="color:blue" %)"**Uplink"**(%%). Use debug mode for now.
453
454 [[image:image-20230802112413-33.png||height="597" width="1061"]]
455
456
457 (% style="color:blue" %)**Downlink Converter**
458
459 The Downlink converter transforming outgoing RPC message and then the Integration sends it to external MQTT broke
460
461 [[image:image-20230802112413-34.png||height="598" width="1063"]]
462
463 (% style="color:red" %)**Note: Our device payload is already human readable data. Therefore, users do not need to write decoders. Simply create by default.**
464
465
466 ==== 3.6.1.3 MQTT Integration Setup ====
467
468
469 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**;
470
471 [[image:image-20230802112413-35.png||height="597" width="1062"]]
472
473
474 * The next steps is to add the recently created uplink and downlink converters;
475
476 [[image:image-20230802112413-36.png||height="598" width="1062"]]
477
478 [[image:image-20230802112413-37.png||height="598" width="1064"]]
479
480
481 (% style="color:blue" %)**Add a topic filter:**
482
483 Consistent with the theme of the node setting.
484
485 You can also select an MQTT QoS level. We use MQTT QoS level 0 (At most once) by default;
486
487 [[image:image-20230802112413-38.png||height="598" width="1064"]]
488
489
490 === 3.6.2 Simulate with MQTT.fx ===
491
492
493 [[image:image-20230802112413-39.png]]
494
495 [[image:image-20230802112413-40.png||height="525" width="980"]]
496
497
498 === 3.6.3 Configure NB-IoT Sensor ===
499
500
501 (% style="color:blue" %)**AT Commands**
502
503 * (% style="color:#037691" %)**AT+PRO=3,3  **(%%)** **~/~/ Use MQTT to connect to ThingsBoard. Payload Type set to 3.
504
505 * (% style="color:#037691" %)**AT+SUBTOPIC=<device name>**
506
507 * (% style="color:#037691" %)**AT+PUBTOPIC=<device name>**
508
509 * (% style="color:#037691" %)**AT+CLIENT=<device name> or User Defined**
510
511 * (% style="color:#037691" %)**AT+UNAME=<device name> or User Defined**
512
513 * (% style="color:#037691" %)**AT+PWD=<device name> or User Defined**
514
515 Test Uplink by click the button for 1 second
516
517 [[image:image-20230802112413-41.png||height="496" width="828"]]
518
519 [[image:image-20230802112413-42.png]]
520
521 [[image:image-20230802112413-43.png||height="407" width="825"]]
522
523
524 == 3.7 [[Tago.io>>url:https://admin.tago.io/]] (via MQTT) ==
525
526 === 3.7.1 Create device & Get Credentials ===
527
528
529 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.
530
531 [[image:image-20230802112413-44.png]]
532
533 [[image:image-20230802112413-45.png]]
534
535
536 Go to the Device section and create a device. Then, go to the section tokens and copy your device-token.
537
538 [[image:image-20230802112413-46.png]]
539
540
541 The device needs to enable the TLS mode and set the (% style="color:blue" %)**AT+TLSMOD=1,0**(%%) command.
542
543 (% style="color:blue" %)**On the Connection Profile window, set the following information:**
544
545 * (% style="color:#037691" %)**Profile Name: “Any name”**
546
547 * (% style="color:#037691" %)**Broker Address: mqtt.tago.io**
548
549 * (% style="color:#037691" %)**Broker Port: 8883**
550
551 * (% style="color:#037691" %)**Client ID: “Any value”**
552
553 (% style="color:blue" %)**On the section User credentials, set the following information:**
554
555 * (% style="color:#037691" %)**User Name: “Any value”** (%%) **~/~/ Tago validates your user by the token only**
556
557 * (% style="color:#037691" %)**Password: “Your device token”**
558
559 * (% style="color:#037691" %)**PUBTOPIC: “Any value”**
560
561 * (% style="color:#037691" %)**SUBTOPIC: “Any value”**
562
563 (% style="color:blue" %)**AT command:**
564
565 * (% style="color:#037691" %)**AT+PRO=3,0 or 3,5 ** (%%) **~/~/ hex format or json format**
566
567 * (% style="color:#037691" %)**AT+SUBTOPIC=<device name>or User Defined**
568
569 * (% style="color:#037691" %)**AT+PUBTOPIC=<device name>or User Defined**
570
571 * (% style="color:#037691" %)**AT+CLIENT=<device name> or User Defined**
572
573 * (% style="color:#037691" %)**AT+UNAME=<device name> or User Defined**
574
575 * (% style="color:#037691" %)**AT+PWD=“Your device token”**
576
577 === 3.7.2 Simulate with MQTT.fx ===
578
579
580 [[image:image-20230802112413-52.png]]
581
582
583 [[image:image-20230808105300-2.png||height="553" width="1026"]]
584
585
586 Users can run the (% style="color:blue" %)**AT+PRO=3,5**(%%) command, and the payload will be converted to **JSON format**.
587
588 [[image:image-20230808105217-1.png||height="556" width="1031"]]
589
590 [[image:image-20230808105329-3.png]]
591
592
593 === 3.7.3 tago data ===
594
595
596 [[image:image-20230802112413-50.png||height="242" width="1037"]]
597
598 [[image:image-20230802112413-51.png||height="184" width="696"]]
599
600
601 == 3.8 TCP Connection ==
602
603
604 (% style="color:blue" %)**AT command:**
605
606 * (% style="color:#037691" %)**AT+PRO=4,0   ** (%%) ~/~/ Set to use TCP protocol to uplink(HEX format)
607
608 * (% style="color:#037691" %)**AT+PRO=4,1   ** (%%) ~/~/ Set to use TCP protocol to uplink(JSON format)
609
610 * (% style="color:#037691" %)**AT+SERVADDR=120.24.4.116,5600 ** (%%) ~/~/ to set TCP server address and port
611
612 (% style="color:blue" %)**Sensor Console Output when Uplink:**
613
614 [[image:image-20230807233631-1.png]]
615
616
617 (% style="color:blue" %)**See result in TCP Server:**
618
619 [[image:image-20230807233631-2.png]]