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
20 To attache NB-IoT sensors to NB-IoT Network, You need to:
21
22 1. Get a NB-IoT SIM card from Service Provider. (Not the same as the SIM card we use in mobile phone)
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>)
25
26 [[image:image-20230808205045-1.png||height="293" width="438"]]
27
28 After doing above, the NB-IoT Sensors should be able to attach to NB-IoT network .
29
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
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" %)(((
35 **[[Coverage Reference Link>>https://1nce.com/en-ap/1nce-connect]]**
36
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 )))|(% 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" %)
41
42
43 = 3. Configure to connect to different servers =
44
45 == 3.1 General UDP Connection ==
46
47
48 The NB-IoT Sensor can send packet to server use UDP protocol.
49
50
51 === 3.1.1 Simulate UDP Connection by PC tool ===
52
53
54 We can use PC tool to simulate UDP connection to make sure server works ok.
55
56 [[image:image-20230802112413-1.png]]
57
58
59 === 3.1.2 Configure NB-IoT Sensor ===
60
61 ==== 3.1.2.1 AT Commands ====
62
63
64 (% style="color:blue" %)**AT Commands:**
65
66 * (% style="color:#037691" %)**AT+PRO=2,0**  (%%) ~/~/  Set to use UDP protocol to uplink ,Payload Type select Hex payload
67
68 * (% style="color:#037691" %)**AT+SERVADDR=120.24.4.116,5601**  (%%) ~/~/  Set UDP server address and port
69
70 * (% style="color:#037691" %)**AT+CFM=1**    (%%) ~/~/  If the server does not respond, this command is unnecessary
71
72 [[image:image-20230802112413-2.png]]
73
74
75 ==== 3.1.2.2 Uplink Example ====
76
77
78 [[image:image-20230802112413-3.png]]
79
80
81 == 3.2 General MQTT Connection ==
82
83
84 The NB-IoT Sensor can send packet to server use MQTT protocol.
85
86 Below are the commands.
87
88 (% style="color:blue" %)**AT Commands:**
89
90 * (% style="color:#037691" %)**AT+PRO=3,0**   (%%) ~/~/  Set to use MQTT protocol to uplink, Payload Type select Hex payload.
91
92 * (% style="color:#037691" %)**AT+SERVADDR=120.24.4.116,1883**  (%%) ~/~/  Set MQTT server address and port
93
94 * (% style="color:#037691" %)**AT+CLIENT=CLIENT**     (%%) ~/~/  Set up the CLIENT of MQTT
95
96 * (% style="color:#037691" %)**AT+UNAME=UNAME**        (%%) ~/~/  Set the username of MQTT
97
98 * (% style="color:#037691" %)**AT+PWD=PWD**             (%%) ~/~/  Set the password of MQTT
99
100 * (% style="color:#037691" %)**AT+PUBTOPIC=NSE01_PUB**  (%%) ~/~/  Set the sending topic of MQTT
101
102 * (% style="color:#037691" %)**AT+SUBTOPIC=NSE01_SUB**  (%%) ~/~/  Set the subscription topic of MQTT
103
104 [[image:image-20230802112413-4.png]]
105
106 [[image:image-20230802112413-5.png||height="530" width="987"]]
107
108 (% 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.**
109
110
111 == 3.3 [[ThingSpeak>>url:https://thingspeak.com/]] (via MQTT) ==
112
113 === 3.3.1 Get MQTT Credentials ===
114
115
116 [[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.
117
118 [[image:image-20230802112413-6.png||height="336" width="925"]]
119
120 [[image:image-20230802112413-7.png]]
121
122
123 === 3.3.2 Simulate with MQTT.fx ===
124
125 ==== 3.3.2.1 Establish MQTT Connection ====
126
127
128 After we got MQTT Credentials, we can first simulate with PC tool MQTT.fx tool to see if the Credentials and settings are fine.
129
130 [[image:image-20230802112413-8.png]]
131
132 * (% style="color:#037691" %)**Broker Address:**(%%) mqtt3.thingspeak.com
133
134 * (% style="color:#037691" %)**Broker Port:**(%%) 1883
135
136 * (% style="color:#037691" %)**Client ID:**(%%) <Your ThingSpeak MQTT ClientID>
137
138 * (% style="color:#037691" %)**User Name:**(%%) <Your ThingSpeak MQTT User Name>
139
140 * (% style="color:#037691" %)**Password:**(%%) <Your ThingSpeak MQTT Password>
141
142
143 ==== 3.3.2.2 Publish Data to ThingSpeak Channel ====
144
145
146 [[image:image-20230802112413-9.png]]
147
148 [[image:image-20230802112413-10.png]]
149
150
151 (% style="color:blue" %)**In MQTT.fx, we can publish below info:**
152
153 * (% style="color:#037691" %)**Topic:**(%%) channels/YOUR_CHANNEL_ID/publish
154
155 * (% style="color:#037691" %)**Payload:**(%%) field1=63&field2=67&status=MQTTPUBLISH
156
157 Where 63 and 67 are the value to be published to field1 & field2.
158
159
160 (% style="color:blue" %)**Result: **
161
162 [[image:image-20230802112413-11.png||height="539" width="901"]]
163
164
165 === 3.3.3 Configure NB-IoT Sensor for connection ===
166
167 ==== 3.3.3.1 AT Commands: ====
168
169
170 In the NB-IoT, we can run below commands so to publish the channels like MQTT.fx
171
172 * (% style="color:blue" %)**AT+PRO=3,1** (%%) ~/~/ Set to use ThingSpeak Server and Related Payload
173
174 * (% style="color:blue" %)**AT+CLIENT=<Your ThingSpeak MQTT ClientID>**
175
176 * (% style="color:blue" %)**AT+UNAME=<Your ThingSpeak MQTT User Name>**
177
178 * (% style="color:blue" %)**AT+PWD=<Your ThingSpeak MQTT Password>**
179
180 * (% style="color:blue" %)**AT+PUBTOPIC=<YOUR_CHANNEL_ID>**
181
182 * (% style="color:blue" %)**AT+SUBTOPIC=<YOUR_CHANNEL_ID>**
183
184
185 ==== 3.3.3.2 Uplink Examples ====
186
187 [[image:image-20230816201942-1.png]]
188
189 For SE01-NB
190
191 For DDS20-NB
192
193 For DDS45-NB
194
195 For DDS75-NB
196
197 For NMDS120-NB
198
199 For SPH01-NB
200
201 For NLM01-NB
202
203 For NMDS200-NB
204
205 For CPN01-NB
206
207 For DS03A-NB
208
209 For SN50V3-NB
210
211
212 ==== 3.3.3.3 Map fields to sensor value ====
213
214
215 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.
216
217
218 [[image:image-20230802112413-12.png||height="504" width="1011"]]
219
220 [[image:image-20230802112413-13.png||height="331" width="978"]]
221
222
223 Below is the NB-IoT Product Table show the mapping.
224
225 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:1424px" %)
226 |(% 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
227 |(% 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" %)
228 |(% 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" %)
229 |(% 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" %)
230 |(% 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" %)
231 |(% 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" %)
232 |(% 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" %)
233 |(% 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" %)
234 |(% 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" %)
235 |(% 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" %)
236 |(% 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" %)
237 |(% 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
238 |(% 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" %)
239 |(% 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" %)
240 |(% 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" %)
241 |(% 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" %)
242 |(% 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" %)
243 |(% 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" %)
244
245
246 == 3.4 [[Datacake>>https://datacake.co/]] ==
247
248
249 (% class="wikigeneratedid" %)
250 Dragino NB-IoT sensors has its template in **[[Datacake>>https://datacake.co/]]** Platform. There are two version for NB Sensor,
251
252
253 (% class="wikigeneratedid" %)
254 As example for S31B-NB. there are two versions: **S31B-NB-1D and S31B-NB-GE.**
255
256 * (% 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.
257
258 * (% 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.
259
260
261 === 3.4.1 Create device ===
262
263
264 (% style="color:blue" %)**Add Device**(%%) in DataCake.
265
266 [[image:image-20230808162301-1.png||height="473" width="994"]]
267
268
269 [[image:image-20230808162342-2.png]]
270
271
272 (% style="color:blue" %)**Choose the correct model**(%%) from template.
273
274 [[image:image-20230808162421-3.png]]
275
276
277 (% 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.
278
279 [[image:image-20230808163612-7.png]]
280
281 [[image:image-20230808163035-5.png]]
282
283 [[image:image-20230808163049-6.png]]
284
285
286 === 3.4.2 Scan QR code to obtain data ===
287
288
289 Users can use their phones or computers to scan QR codes to obtain device data information.
290
291 [[image:image-20230808170051-8.png||height="255" width="259"]]
292
293 [[image:image-20230808170548-9.png]]
294
295
296 === 3.4.2 AT command for connecting to DataCake ===
297
298
299 (% style="color:blue" %)**AT+PRO=2,0**
300
301 (% style="color:blue" %)**AT+SERVADDR=67.207.76.90,4445**
302
303
304 == 3.5 Node-Red (via MQTT) ==
305
306 === 3.5.1 Configure [[Node-Red>>http://wiki.dragino.com/xwiki/bin/view/Main/Node-RED/]] ===
307
308
309 Take S31-NB UDP protocol as an example.
310
311 Dragino provides input flow examples for the sensors.
312
313 User can download the required JSON file through Dragino Node-RED input flow template.
314
315 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]]
316
317 We can directly import the template.
318
319 The templates for S31-NB and NB95S31B are the same.
320
321
322 [[image:image-20230809173127-4.png]]
323
324
325 Please select the NB95S31B template.
326
327 [[image:image-20230809173310-5.png]]
328
329 [[image:image-20230809173438-6.png]]
330
331 [[image:image-20230809173800-7.png]]
332
333
334 Successfully imported template.
335
336 [[image:image-20230809173835-8.png]]
337
338
339 Users can set UDP port.
340
341 [[image:image-20230809174053-9.png]]
342
343
344 === 3.5.2 Simulate Connection ===
345
346
347 We have completed the configuration of UDP. We can try sending packets to node red.
348
349 [[image:image-20230810083934-1.png]]
350
351 [[image:image-20230810084048-2.png]]
352
353 === 3.5.3 Configure NB-IoT Sensors ===
354
355
356 * (% style="color:blue" %)**AT+PRO=2,0(hex format) or 2,1(json format)  **(%%)** **~/~/  Set to UDP Server and  Payload
357
358 * (% style="color:blue" %)**AT+SERVADDR=xx.xx.xx.xx,port   **(%%)** **~/~/  Set Server IP and  port
359
360
361 == 3.6 ThingsBoard.Cloud (via MQTT) ==
362
363 === 3.6.1 Configure ThingsBoard ===
364
365 ==== 3.6.1.1 Create Device ====
366
367
368 Create a New Device in [[ThingsBoard>>url:https://thingsboard.cloud/]]. Record Device Name which is used for MQTT connection.
369
370 [[image:image-20230802112413-32.png]]
371
372
373 ==== 3.6.1.2 Create Uplink & Downlink Converter ====
374
375
376 (% style="color:blue" %)**Uplink Converter**
377
378 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.
379
380 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.
381
382 [[image:image-20230802112413-33.png||height="732" width="1302"]]
383
384
385 (% style="color:blue" %)**Downlink Converter**
386
387 The Downlink converter transforming outgoing RPC message and then the Integration sends it to external MQTT broke
388
389 [[image:image-20230802112413-34.png||height="734" width="1305"]]
390
391 (% style="color:red" %)**Note: Our device payload is already human readable data. Therefore, users do not need to write decoders. Simply create by default.**
392
393
394 ==== 3.6.1.3 MQTT Integration Setup ====
395
396
397 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**;
398
399 [[image:image-20230802112413-35.png||height="738" width="1312"]]
400
401
402 * The next steps is to add the recently created uplink and downlink converters;
403
404 [[image:image-20230802112413-36.png||height="736" width="1308"]]
405
406 [[image:image-20230802112413-37.png||height="735" width="1307"]]
407
408
409 (% style="color:blue" %)**Add a topic filter:**
410
411 tb/mqtt-integration-tutorial/sensors~/~/temperature ~-~-> Temperature  **固定的? 对的。**
412
413 You can also select an MQTT QoS level. We use MQTT QoS level 0 (At most once) by default;
414
415 [[image:image-20230802112413-38.png||height="731" width="1300"]]
416
417
418 === 3.6.2 Simulate with MQTT.fx ===
419
420
421 [[image:image-20230802112413-39.png]]
422
423 [[image:image-20230802112413-40.png]]
424
425
426 === 3.6.3 Configure NB-IoT Sensor ===
427
428
429 (% style="color:blue" %)**AT Commands**
430
431 * (% style="color:#037691" %)**AT+PRO=3,3  **(%%)** **~/~/ Use MQTT to connect to ThingsBoard. Payload Type set to 3.
432
433 * (% style="color:#037691" %)**AT+SUBTOPIC=<device name>**
434
435 * (% style="color:#037691" %)**AT+PUBTOPIC=<device name>**
436
437 * (% style="color:#037691" %)**AT+CLIENT=<device name> or User Defined**
438
439 * (% style="color:#037691" %)**AT+UNAME=<device name> or User Defined**
440
441 * (% style="color:#037691" %)**AT+PWD=<device name> or User Defined**
442
443 Test Uplink by click the button for 1 second
444
445 [[image:image-20230802112413-41.png]]
446
447 [[image:image-20230802112413-42.png]]
448
449 [[image:image-20230802112413-43.png]]
450
451
452 == 3.7 [[Tago.io>>url:https://admin.tago.io/]] (via MQTT) ==
453
454 === 3.7.1 Create device & Get Credentials ===
455
456
457 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.
458
459 [[image:image-20230802112413-44.png]]
460
461 [[image:image-20230802112413-45.png]]
462
463
464 Go to the Device section and create a device. Then, go to the section tokens and copy your device-token.
465
466 [[image:image-20230802112413-46.png]]
467
468
469 The device needs to enable the TLS mode and set the (% style="color:blue" %)**AT+TLSMOD=1,0**(%%) command.
470
471 (% style="color:blue" %)**On the Connection Profile window, set the following information:**
472
473 * (% style="color:#037691" %)**Profile Name: “Any name”**
474
475 * (% style="color:#037691" %)**Broker Address: mqtt.tago.io**
476
477 * (% style="color:#037691" %)**Broker Port: 8883**
478
479 * (% style="color:#037691" %)**Client ID: “Any value”**
480
481 (% style="color:blue" %)**On the section User credentials, set the following information:**
482
483 * (% style="color:#037691" %)**User Name: “Any value”** (%%) **~/~/ Tago validates your user by the token only**
484
485 * (% style="color:#037691" %)**Password: “Your device token”**
486
487 * (% style="color:#037691" %)**PUBTOPIC: “Any value”**
488
489 * (% style="color:#037691" %)**SUBTOPIC: “Any value”**
490
491 (% style="color:blue" %)**AT command:**
492
493 * (% style="color:#037691" %)**AT+PRO=3,0 or 3,5 ** (%%) **~/~/ hex format or json format**
494
495 * (% style="color:#037691" %)**AT+SUBTOPIC=<device name>or User Defined**
496
497 * (% style="color:#037691" %)**AT+PUBTOPIC=<device name>or User Defined**
498
499 * (% style="color:#037691" %)**AT+CLIENT=<device name> or User Defined**
500
501 * (% style="color:#037691" %)**AT+UNAME=<device name> or User Defined**
502
503 * (% style="color:#037691" %)**AT+PWD=“Your device token”**
504
505
506 === 3.7.2 Simulate with MQTT.fx ===
507
508
509 [[image:image-20230802112413-52.png]]
510
511
512 [[image:image-20230808105300-2.png]]
513
514
515 Users can run the (% style="color:blue" %)**AT+PRO=3,5**(%%) command, and the payload will be converted to **JSON format**.
516
517 [[image:image-20230808105217-1.png]]
518
519 [[image:image-20230808105329-3.png]]
520
521
522 === 3.7.3 tago data ===
523
524
525 [[image:image-20230802112413-50.png]]
526
527 [[image:image-20230802112413-51.png||height="184" width="696"]]
528
529
530 == 3.8 TCP Connection ==
531
532
533 (% style="color:blue" %)**AT command:**
534
535 * (% style="color:#037691" %)**AT+PRO=4,0   ** (%%) ~/~/ Set to use TCP protocol to uplink(HEX format)
536
537 * (% style="color:#037691" %)**AT+PRO=4,1   ** (%%) ~/~/ Set to use TCP protocol to uplink(JSON format)
538
539 * (% style="color:#037691" %)**AT+SERVADDR=120.24.4.116,5600 ** (%%) ~/~/ to set TCP server address and port
540
541 (% style="color:blue" %)**Sensor Console Output when Uplink:**
542
543 [[image:image-20230807233631-1.png]]
544
545
546 (% style="color:blue" %)**See result in TCP Server:**
547
548 [[image:image-20230807233631-2.png]]
Copyright ©2010-2024 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0