Show last authors
1
2
3
4 (% class="wikigeneratedid" id="HTableofContents:" %)
5 **Table of Contents:**
6
7 {{toc/}}
8
9 = 1. The use of this guideline =
10
11 This configure instruction is for Dragino NB-IoT models with -CB or -CS suffix, for example DDS75-CB. These models use the same NB-IoT Module **[[BG95-M2>>https://www.dropbox.com/sh/3ilyaswz4odgaru/AADR86cAgL9UGlmLuEH-UZgla?st=x1ry6v5j&dl=0]]** 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.
12
13
14 = 2. Attach Network =
15
16 == 2.1 General Configure to attach network ==
17
18 To attache end nodes to NB-IoT or LTE-M Network, You need to:
19
20 1. Get a NB-IoT or LTE-M SIM card from Service Provider. (Not the same as the SIM card we use in mobile phone)
21 1. Power Off End Node ( See below for the power off/on position)
22 1. Insert the SIM card to Sensor. ( See below for direction)
23 1. Power On End Node
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>), example AT+APN=iot.1nce.net
25
26 [[image:image-20240208102804-1.png||height="286" width="696"]]
27
28 [[image:image-20230808205045-1.png||height="293" width="438"]]
29
30 After doing above, the end nodes should be able to attach to NB-IoT network .
31
32 The -CB and -CS models support (% style="color:blue" %)**LTE Cat NB2 and LTE-M (CAT-M1)**(%%), with below frequency band: multiple frequency bands of
33
34 ~-~-(% style="color:blue" %)**CAT-NB2: B1/B2/B3/B4/B5/B8/B12/B13/B18/B19/B20/B25/B28/B66/B71/B85 **(%%).
35
36 ~-~-(% style="color:blue" %)**CAT-M1: B1/B2/B3/B4/B5/B8/B12/B13/B18/B19/B20/B25/B26/B27/B28/B66/B85 **(%%).
37
38 Make sure you use a the NB-IoT SIM card.
39
40 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:878px" %)
41 |(% 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**
42 |(% style="width:117px" %)**[[1NCE>>https://1nce.com]]**|(% style="width:151px" %)iot.1nce.net|(% style="width:474px" %)(((
43 **[[Coverage Reference Link>>https://1nce.com/en-ap/1nce-connect]]**
44
45 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, UK, US Virgin Islands
46 )))|(% style="width:135px" %)UK: Band20
47 |(% style="width:117px" %)China Mobile|(% style="width:151px" %)No need configure|(% style="width:474px" %)China Mainland, HongKong|(% style="width:135px" %)
48 |(% style="width:117px" %)China Telecom|(% style="width:151px" %)ctnb|(% style="width:474px" %)China Mainland|(% style="width:135px" %)
49
50 == 2.2 Speed Up Network Attach time ==
51
52 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 and show **Signal Strenght:99**. User can lock the band to specify band for its operator to make this faster.
53
54 (% style="color:#037691" %)**AT+QBAND?       **(%%) ~/~/ Check what is the current used frequency band
55 (% style="color:#037691" %)**AT+QBAND=1,4    **(%%) ~/~/ Set to use 1 frequency band. Band4
56 (% style="color:#037691" %)**Europe General**(%%) **AT+QBAND=2,8,20 ** ~/~/ Set to use 2 frequency bands. Band 8 and Band 20
57 (% style="color:#037691" %)**Global General**(%%) : **AT+QBAND=10,8,20,28,2,4,12,13,66,85,5**
58
59 (% style="color:#037691" %)**Verizon**(%%)** ** AT+QBAND=1,13
60 (% style="color:#037691" %)**AT&T**(%%) AT+QBAND=3,12,4,2
61 (% style="color:#037691" %)**Telstra**(%%) AT+QBAND=1,28
62 (% style="color:#037691" %)**Softband**(%%) AT+QBAND=2,3,8
63
64 After connection is successful, user can use (% style="color:#037691" %)**AT+QENG=0 **(%%) to check which band is actually in used.
65
66 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/]]**
67
68 = 3. Configure to connect to different servers =
69
70 == 3.1 General UDP Connection ==
71
72 The NB-IoT Sensor can send packet to server use UDP protocol.
73
74 === 3.1.1 Simulate UDP Connection by PC tool ===
75
76 We can use PC tool to simulate UDP connection to make sure server works ok.
77
78 [[image:image-20230802112413-1.png||height="468" width="1024"]]
79
80 === 3.1.2 Configure NB-IoT Sensor ===
81
82 ==== 3.1.2.1 AT Commands ====
83
84 (% style="color:blue" %)**AT Commands:**
85
86 * (% style="color:#037691" %)**AT+PRO=2,0**  (%%) ~/~/ Set to use UDP protocol to uplink ,Payload Type select Hex payload
87
88 * (% style="color:#037691" %)**AT+SERVADDR=120.24.4.116,5601**  (%%) ~/~/ Set UDP server address and port
89
90 [[image:image-20230802112413-2.png]]
91
92 ==== 3.1.2.2 Uplink Example ====
93
94 [[image:image-20230802112413-3.png]]
95
96 == 3.2 General MQTT Connection ==
97
98 The NB-IoT Sensor can send packet to server use MQTT protocol.
99
100 Below are the commands.
101
102 (% style="color:blue" %)**AT Commands:**
103
104 * (% style="color:#037691" %)**AT+PRO=3,0**   (%%) ~/~/ Set to use MQTT protocol to uplink, Payload Type select Hex payload.
105
106 * (% style="color:#037691" %)**AT+SERVADDR=120.24.4.116,1883**  (%%) ~/~/ Set MQTT server address and port
107
108 * (% style="color:#037691" %)**AT+CLIENT=CLIENT**     (%%) ~/~/ Set up the CLIENT of MQTT
109
110 * (% style="color:#037691" %)**AT+UNAME=UNAME**        (%%) ~/~/ Set the username of MQTT
111
112 * (% style="color:#037691" %)**AT+PWD=PWD**             (%%) ~/~/ Set the password of MQTT
113
114 * (% style="color:#037691" %)**AT+PUBTOPIC=NSE01_PUB**  (%%) ~/~/ Set the sending topic of MQTT
115
116 * (% style="color:#037691" %)**AT+SUBTOPIC=NSE01_SUB**  (%%) ~/~/ Set the subscription topic of MQTT
117
118 [[image:image-20230802112413-4.png]]
119
120 [[image:image-20230802112413-5.png||height="530" width="987"]]
121
122 (% 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.**
123
124 == 3.3 [[ThingSpeak>>url:https://thingspeak.com/]] (via MQTT) ==
125
126 === 3.3.1 Get MQTT Credentials ===
127
128 [[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.
129
130 [[image:image-20230802112413-6.png||height="336" width="925"]]
131
132 [[image:image-20230802112413-7.png]]
133
134 === 3.3.2 Simulate with MQTT.fx ===
135
136 ==== 3.3.2.1 Establish MQTT Connection ====
137
138 After we got MQTT Credentials, we can first simulate with PC tool MQTT.fx tool to see if the Credentials and settings are fine.
139
140 [[image:image-20230802112413-8.png]]
141
142 * (% style="color:#037691" %)**Broker Address:**(%%) mqtt3.thingspeak.com
143
144 * (% style="color:#037691" %)**Broker Port:**(%%) 1883
145
146 * (% style="color:#037691" %)**Client ID:**(%%) <Your ThingSpeak MQTT ClientID>
147
148 * (% style="color:#037691" %)**User Name:**(%%) <Your ThingSpeak MQTT User Name>
149
150 * (% style="color:#037691" %)**Password:**(%%) <Your ThingSpeak MQTT Password>
151
152 ==== 3.3.2.2 Publish Data to ThingSpeak Channel ====
153
154 [[image:image-20230802112413-9.png]]
155
156 [[image:image-20230802112413-10.png]]
157
158 (% style="color:blue" %)**In MQTT.fx, we can publish below info:**
159
160 * (% style="color:#037691" %)**Topic:**(%%) channels/YOUR_CHANNEL_ID/publish
161
162 * (% style="color:#037691" %)**Payload:**(%%) field1=63&field2=67&status=MQTTPUBLISH
163
164 Where 63 and 67 are the value to be published to field1 & field2.
165
166 (% style="color:blue" %)**Result: **
167
168 [[image:image-20230802112413-11.png||height="539" width="901"]]
169
170 === 3.3.3 Configure NB-IoT Sensor for connection ===
171
172 ==== 3.3.3.1 AT Commands: ====
173
174 In the NB-IoT, we can run below commands so to publish the channels like MQTT.fx
175
176 * (% style="color:blue" %)**AT+PRO=3,1** (%%) ~/~/ Set to use ThingSpeak Server and Related Payload
177
178 * (% style="color:blue" %)**AT+CLIENT=<Your ThingSpeak MQTT ClientID>**
179
180 * (% style="color:blue" %)**AT+UNAME=<Your ThingSpeak MQTT User Name>**
181
182 * (% style="color:blue" %)**AT+PWD=<Your ThingSpeak MQTT Password>**
183
184 * (% style="color:blue" %)**AT+PUBTOPIC=<YOUR_CHANNEL_ID>**
185
186 * (% style="color:blue" %)**AT+SUBTOPIC=<YOUR_CHANNEL_ID>**
187
188 ==== 3.3.3.2 Uplink Examples ====
189
190 [[image:image-20230816201942-1.png]]
191
192 For SE01-NB
193
194 For DDS20-NB
195
196 For DDS45-NB
197
198 For DDS75-NB
199
200 For NMDS120-NB
201
202 For SPH01-NB
203
204 For NLM01-NB
205
206 For NMDS200-NB
207
208 For CPN01-NB
209
210 For DS03A-NB
211
212 For SN50V3-NB
213
214 ==== 3.3.3.3 Map fields to sensor value ====
215
216 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.
217
218 [[image:image-20230802112413-12.png||height="504" width="1011"]]
219
220 [[image:image-20230802112413-13.png||height="331" width="978"]]
221
222 Below is the NB-IoT Product Table show the mapping.
223
224 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:1424px" %)
225 |(% 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
226 |(% 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" %)
227 |(% 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" %)
228 |(% 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" %)
229 |(% 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" %)
230 |(% 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" %)
231 |(% 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" %)
232 |(% 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" %)
233 |(% 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" %)
234 |(% 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" %)
235 |(% 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" %)
236 |(% 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
237 |(% 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" %)
238 |(% 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" %)
239 |(% 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" %)
240 |(% 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" %)
241 |(% 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" %)
242 |(% 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" %)
243
244 == 3.4 [[Datacake>>https://datacake.co/]] ==
245
246 (% class="wikigeneratedid" %)
247 Dragino NB-IoT sensors has its template in **[[Datacake>>https://datacake.co/]]** Platform. There are two version for NB Sensor,
248
249 (% class="wikigeneratedid" %)
250 As example for S31B-NB. there are two versions: **S31B-NB-1D and S31B-NB-GE.**
251
252 * (% 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
254 * (% 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.
255
256 === 3.4.1 For device Already has template ===
257
258 ==== 3.4.1.1 Create Device ====
259
260 (% style="color:blue" %)**Add Device**(%%) in DataCake.
261
262 [[image:image-20230808162301-1.png||height="453" width="952"]]
263
264 [[image:image-20230808162342-2.png||height="541" width="952"]]
265
266 (% style="color:blue" %)**Choose the correct model**(%%) from template.
267
268 [[image:image-20230808162421-3.png]]
269
270 (% 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.
271
272 [[image:image-20230808163612-7.png||height="549" width="952"]]
273
274 [[image:image-20230808163035-5.png]]
275
276 [[image:image-20230808163049-6.png||height="544" width="926"]]
277
278 === 3.4.2 For Device already registered in DataCake before shipped ===
279
280 ==== 3.4.2.1 Scan QR Code to get the device info ====
281
282 Users can use their phones or computers to scan QR codes to obtain device data information.
283
284 [[image:image-20230808170051-8.png||height="255" width="259"]]
285
286 [[image:image-20230808170548-9.png]]
287
288 ==== 3.4.2.2 Claim Device to User Account ====
289
290 By Default, the device is registered in Dragino's DataCake Account. User can Claim it to his account.
291
292 === 3.4.3 Manual Add Decoder in DataCake ( don't use the template in DataCake) ===
293
294 **Step1: Add a device**
295
296 [[image:image-20240129170024-1.png||height="330" width="900"]]
297
298 **Step2: Choose your device type,please select dragino NB-IOT device**
299
300 [[image:image-20240129170216-2.png||height="534" width="643"]]
301
302 **Step3: Choose to create a new device**
303
304 [[image:image-20240129170539-3.png||height="459" width="646"]]
305
306 **Step4: Fill in the device ID of your NB device**
307
308 [[image:image-20240202111546-1.png||height="378" width="651"]]
309
310 **Step5: Please select your device plan according to your needs and complete the creation of the device**
311
312 [[image:image-20240129171236-6.png||height="450" width="648"]]
313
314 **Step6: Please add the decoder at the payload decoder of the device configuration.**
315
316 **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]]
317
318 [[image:image-20240129172056-7.png||height="457" width="816"]]
319
320 [[image:image-20240129173116-9.png||height="499" width="814"]]
321
322 **Step7: Add the output of the decoder as a field**
323
324 [[image:image-20240129173541-10.png||height="592" width="968"]]
325
326 **Step8: Customize the dashboard and use fields as parameters of the dashboard**
327
328 [[image:image-20240129174518-11.png||height="147" width="1042"]]
329
330 [[image:image-20240129174657-12.png||height="538" width="916"]]
331
332 [[image:image-20240129174840-13.png||height="536" width="750"]]
333
334 === 3.4.4 For device have not configured to connect to DataCake ===
335
336 (% class="lead" %)
337 Use AT command for connecting to DataCake
338
339 (% style="color:blue" %)**AT+PRO=2,0**
340
341 (% style="color:blue" %)**AT+SERVADDR=67.207.76.90,4445**
342
343 == 3.5 Node-Red (via MQTT) ==
344
345 === 3.5.1 Configure [[Node-Red>>http://wiki.dragino.com/xwiki/bin/view/Main/Node-RED/]] ===
346
347 Take S31-NB UDP protocol as an example.
348
349 Dragino provides input flow examples for the sensors.
350
351 User can download the required JSON file through Dragino Node-RED input flow template.
352
353 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]]
354
355 We can directly import the template.
356
357 The templates for S31-NB and NB95S31B are the same.
358
359 [[image:image-20230809173127-4.png]]
360
361 Please select the NB95S31B template.
362
363 [[image:image-20230809173310-5.png||height="558" width="926"]]
364
365 [[image:image-20230809173438-6.png]]
366
367 [[image:image-20230809173800-7.png]]
368
369 Successfully imported template.
370
371 [[image:image-20230809173835-8.png||height="515" width="860"]]
372
373 Users can set UDP port.
374
375 [[image:image-20230809174053-9.png]]
376
377 === 3.5.2 Simulate Connection ===
378
379 We have completed the configuration of UDP. We can try sending packets to node red.
380
381 [[image:image-20230810083934-1.png]]
382
383 [[image:image-20230810084048-2.png||height="535" width="1052"]]
384
385 === 3.5.3 Configure NB-IoT Sensors ===
386
387 * (% style="color:#037691" %)**AT+PRO=3,0 or 3,5 ** (%%) **~/~/ hex format or json format**
388 * (% style="color:#037691" %)**AT+SUBTOPIC=<device name>or User Defined**
389 * (% style="color:#037691" %)**AT+PUBTOPIC=<device name>or User Defined**
390 * (% style="color:#037691" %)**AT+CLIENT=<device name> or User Defined**
391 * (% style="color:#037691" %)**AT+UNAME=<device name> or User Defined**
392 * (% style="color:#037691" %)**AT+PWD=“Your device token”**
393
394 == 3.6 ThingsBoard.Cloud (via MQTT) ==
395
396 === 3.6.1 Configure ThingsBoard ===
397
398 ==== 3.6.1.1 Create Device ====
399
400 Create a New Device in [[ThingsBoard>>url:https://thingsboard.cloud/]]. Record Device Name which is used for MQTT connection.
401
402 [[image:image-20230802112413-32.png||height="583" width="1066"]]
403
404 ==== 3.6.1.2 Create Uplink & Downlink Converter ====
405
406 (% style="color:blue" %)**Uplink Converter**
407
408 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.
409
410 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.
411
412 [[image:image-20230802112413-33.png||height="597" width="1061"]]
413
414 (% style="color:blue" %)**Downlink Converter**
415
416 The Downlink converter transforming outgoing RPC message and then the Integration sends it to external MQTT broke
417
418 [[image:image-20230802112413-34.png||height="598" width="1063"]]
419
420 (% style="color:red" %)**Note: Our device payload is already human readable data. Therefore, users do not need to write decoders. Simply create by default.**
421
422 ==== 3.6.1.3 MQTT Integration Setup ====
423
424 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**;
425
426 [[image:image-20230802112413-35.png||height="597" width="1062"]]
427
428 * The next steps is to add the recently created uplink and downlink converters;
429
430 [[image:image-20230802112413-36.png||height="598" width="1062"]]
431
432 [[image:image-20230802112413-37.png||height="598" width="1064"]]
433
434 (% style="color:blue" %)**Add a topic filter:**
435
436 Consistent with the theme of the node setting.
437
438 You can also select an MQTT QoS level. We use MQTT QoS level 0 (At most once) by default;
439
440 [[image:image-20230802112413-38.png||height="598" width="1064"]]
441
442 === 3.6.2 Simulate with MQTT.fx ===
443
444 [[image:image-20230802112413-39.png]]
445
446 [[image:image-20230802112413-40.png||height="525" width="980"]]
447
448 === 3.6.3 Configure NB-IoT Sensor ===
449
450 (% style="color:blue" %)**AT Commands**
451
452 * (% style="color:#037691" %)**AT+PRO=3,3  **(%%)** **~/~/ Use MQTT to connect to ThingsBoard. Payload Type set to 3.
453
454 * (% style="color:#037691" %)**AT+SUBTOPIC=<device name>**
455
456 * (% style="color:#037691" %)**AT+PUBTOPIC=<device name>**
457
458 * (% style="color:#037691" %)**AT+CLIENT=<device name> or User Defined**
459
460 * (% style="color:#037691" %)**AT+UNAME=<device name> or User Defined**
461
462 * (% style="color:#037691" %)**AT+PWD=<device name> or User Defined**
463
464 Test Uplink by click the button for 1 second
465
466 [[image:image-20230802112413-41.png||height="496" width="828"]]
467
468 [[image:image-20230802112413-42.png]]
469
470 [[image:image-20230802112413-43.png||height="407" width="825"]]
471
472 == 3.7 [[Tago.io>>url:https://admin.tago.io/]] (via MQTT) ==
473
474 === 3.7.1 Create device & Get Credentials ===
475
476 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.
477
478 [[image:image-20230802112413-44.png]]
479
480 [[image:image-20230802112413-45.png]]
481
482 Go to the Device section and create a device. Then, go to the section tokens and copy your device-token.
483
484 [[image:image-20230802112413-46.png]]
485
486 The device needs to enable the TLS mode and set the (% style="color:blue" %)**AT+TLSMOD=1,0**(%%) command.
487
488 (% style="color:blue" %)**On the Connection Profile window, set the following information:**
489
490 * (% style="color:#037691" %)**Profile Name: “Any name”**
491
492 * (% style="color:#037691" %)**Broker Address: mqtt.tago.io**
493
494 * (% style="color:#037691" %)**Broker Port: 8883**
495
496 * (% style="color:#037691" %)**Client ID: “Any value”**
497
498 (% style="color:blue" %)**On the section User credentials, set the following information:**
499
500 * (% style="color:#037691" %)**User Name: “Any value”** (%%) **~/~/ Tago validates your user by the token only**
501
502 * (% style="color:#037691" %)**Password: “Your device token”**
503
504 * (% style="color:#037691" %)**PUBTOPIC: “Any value”**
505
506 * (% style="color:#037691" %)**SUBTOPIC: “Any value”**
507
508 (% style="color:blue" %)**AT command:**
509
510 * (% style="color:#037691" %)**AT+PRO=3,0 or 3,5 ** (%%) **~/~/ hex format or json format**
511
512 * (% style="color:#037691" %)**AT+SUBTOPIC=<device name>or User Defined**
513
514 * (% style="color:#037691" %)**AT+PUBTOPIC=<device name>or User Defined**
515
516 * (% style="color:#037691" %)**AT+CLIENT=<device name> or User Defined**
517
518 * (% style="color:#037691" %)**AT+UNAME=<device name> or User Defined**
519
520 * (% style="color:#037691" %)**AT+PWD=“Your device token”**
521
522 === 3.7.2 Simulate with MQTT.fx ===
523
524 [[image:image-20230802112413-52.png]]
525
526 [[image:image-20230808105300-2.png||height="553" width="1026"]]
527
528 Users can run the (% style="color:blue" %)**AT+PRO=3,5**(%%) command, and the payload will be converted to **JSON format**.
529
530 [[image:image-20230808105217-1.png||height="556" width="1031"]]
531
532 [[image:image-20230808105329-3.png]]
533
534 === 3.7.3 tago data ===
535
536 [[image:image-20230802112413-50.png||height="242" width="1037"]]
537
538 [[image:image-20230802112413-51.png||height="184" width="696"]]
539
540 == 3.8 TCP Connection ==
541
542 (% style="color:blue" %)**AT command:**
543
544 * (% style="color:#037691" %)**AT+PRO=4,0   ** (%%) ~/~/ Set to use TCP protocol to uplink(HEX format)
545
546 * (% style="color:#037691" %)**AT+PRO=4,1   ** (%%) ~/~/ Set to use TCP protocol to uplink(JSON format)
547
548 * (% style="color:#037691" %)**AT+SERVADDR=120.24.4.116,5600 ** (%%) ~/~/ to set TCP server address and port
549
550 (% style="color:blue" %)**Sensor Console Output when Uplink:**
551
552 [[image:image-20230807233631-1.png]]
553
554 (% style="color:blue" %)**See result in TCP Server:**
555
556 [[image:image-20230807233631-2.png]]
557
558 == 3.9 AWS Connection ==
559
560 Users can refer to [[Dragino NB device connection to AWS platform instructions>>http://wiki.dragino.com/xwiki/bin/view/Dragino%20NB%20device%20connection%20to%20AWS%20platform%20instructions/#H1.LogintotheplatformandfindIoTcore]]
561
562 = 4. MQTT/UDP/TCP downlink =
563
564 == 4.1 MQTT (via MQTT.fx) ==
565
566 Configure MQTT connections properly and send downlink commands to configure nodes through the Publish function of MQTT.fx//.//
567
568 **1.** Configure node MQTT connection (via MQTT.fx):
569
570 (% style="color:blue" %)**AT command:**
571
572 * (% style="color:#037691" %)**AT+PRO=3,0 or 3,5 ** (%%)~/~/ hex format or json format
573
574 * (% style="color:#037691" %)**AT+SUBTOPIC=User Defined**
575
576 * (% style="color:#037691" %)**AT+PUBTOPIC=User Defined**
577
578 * (% style="color:#037691" %)**AT+UNAME=<device name> or User Defined**
579
580 * (% style="color:#037691" %)**AT+PWD=<device name> or User Defined**
581
582 * (% style="color:#037691" %)**AT+SERVADDR=8.217.91.207,1883 ** (%%) ~/~/ to set MQTT server address and port
583
584 (% style="color:red" %)**Note: To uplink and downlink via MQTT.fx, we need set the publish topic and subscribe topic different, for example: AT+SUBTOPIC=SE01_SUB & AT+PUBTOPIC=SE01_PUB.**
585
586 [[image:image-20240417180145-2.png||height="434" width="587"]][[ width="584">> width="584"]]
587
588 **2. **When the node uplink packets, we can observe the data in MQTT.fx.
589
590 [[image:image-20240418144337-1.png||height="709" width="802"]]
591
592 **3. **The downlink command can be successfully sent only when the downlink port is open.
593
594 The downlink port is opened for about 3 seconds after uplink packets are sent.
595
596 Therefore, when we see the node uplink packets in the **Subscribe** window, we need to immediately switch to the **publish** window to publish the **hex format** command.
597
598 [[image:image-20240418150435-3.png||height="582" width="659"]]
599
600 [[image:image-20240418150932-4.png||height="492" width="1061"]]
601
602 (% style="color:red" %)**Note: Users can edit the hex command in advance. When the node uplink, directly click the publish button several times to increase the success rate of command configuration.**
603
604 = 5. FAQ =
605
606 == 5.1 What is the usage of Multi Sampling and One Uplink? ==
607
608 The NB series has the feature for Multi Sampling and one uplink. See one of them
609
610 [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/SN50v3-NB_BN-IoT_Sensor_Node_User_Manual/#H2.5Multi-SamplingsandOneuplink>>http://wiki.dragino.com/xwiki/bin/view/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/SN50v3-NB_BN-IoT_Sensor_Node_User_Manual/#H2.5Multi-SamplingsandOneuplink]]
611
612 User can use this feature for below purpose:
613
614 1. **Reduce power consumption**. The NB-IoT transmit power is much more higher than the sensor sampling power. To save battery life, we can sampling often and send in one uplink.
615 1. Give more sampling data points.
616 1. Increase reliable in transmission. For example. If user set
617 1*. **AT+TR=1800** ~/~/ The unit is seconds, and the default is to record data once every 1800 seconds (30 minutes, the minimum can be set to 180 seconds)
618 1*. **AT+NOUD=24** ~/~/ The device uploads 24 sets of recorded data by default. Up to 32 sets of record data can be uploaded.
619 1*. **AT+TDC=7200** ~/~/ Uplink every 2 hours.
620 1*. this will mean each uplink will actually include the 6 uplink data (24 set data which cover 12 hours). So if device doesn't lost 6 continue data. There will not data lost.
621
622 == 5.2 Why the uplink JSON format is not standard? ==
623
624 The json format in uplink packet is not standard Json format. Below is the example. This is to make the payload as short as possible, due to NB-IoT transmit limition, a standard Json is not able to include 32 sets of sensors data with timestamp.
625
626 The firmware version released after 2024, Mar will use change back to use Json format. Detail please check changelog.
627
628 [[image:image-20240229233154-1.png]]
629
630 = 6. Trouble Shooting: =
631
632 == 6.1 Checklist for debuging Network Connection issue. Signal Strenght:99 issue. ==
633
634 There are many different providers provide NB-IoT service in the world. They might use different band, different APN & different operator configuration. Which makes connection to NB-IoT network is complicate.
635
636 If end device successfully attached NB-IoT Network, User can normally see the signal strengh as below (between 0~~31)
637
638 [[image:image-20240207002003-1.png]]
639
640 If fail to attach network, it will shows signal 99. as below:
641
642 [[image:image-20240207002129-2.png]]
643
644 (% class="lead" %)
645 When see this issue, below are the checklist:
646
647 * Does your SIM card support NB-IoT network? If SIM card doesn't not specify support NB-IoT clearly, normally it doesn't support. You need to confirm with your operator.
648 * Do you configure the correct APN? [[Check here for APN settings>>http://wiki.dragino.com/xwiki/bin/view/Main/General%20Configure%20to%20Connect%20to%20IoT%20server%20for%20-NB%20%26%20-NS%20NB-IoT%20models/#H2.1GeneralConfiguretoattachnetwork]].
649 * Do you lock the frequency band? This is the most case we see. [[Explain and Instruction>>http://wiki.dragino.com/xwiki/bin/view/Main/General%20Configure%20to%20Connect%20to%20IoT%20server%20for%20-NB%20%26%20-NS%20NB-IoT%20models/#H2.2SpeedUpNetworkAttachtime]].
650 * Check if the device is attached to Carrier network but reject. (need to check with operator).
651 * Check if the antenna is connected firmly.
652
653 If you have check all above and still fail. please send console log files (as many as possible) to [[support@dragino.com>>mailto:support@dragino.com]] so we can check.
654
655
656
657 == (% data-sider-select-id="765eceff-93b1-40ee-800b-b7b7d022ef8a" %)6.4 Why sometime the AT Command is slow in reponse?(%%) ==
658
659 When the MCU is communicating with the NB-IoT module, the MCU response of AT Command will become slower, it might takes several seconds to response.
660
661 [[image:image-20240226111928-1.png]]
662
663 == (% data-sider-select-id="765eceff-93b1-40ee-800b-b7b7d022ef8a" %)6.5 What is the Downlink Command by the NB device?(%%) ==
664
665 (% data-sider-select-id="bb6e9353-0c3f-473c-938d-4b416c9a03e6" %)
666 === UDP: ===
667
668 (% data-sider-select-id="14a4790e-7faa-4508-a4dd-7605a53f1cb3" %)
669 Its downlink command is the same as the AT command, but brackets are required.
670 Example:
671
672 {AT+TDC=300}
673
674 (% data-sider-select-id="90b80f1a-e924-4c8a-afc5-4429e019a657" %)
675 === MQTT: ===
676
677 Json:
678
679 The Json format in MQTT mode needs to be configured with all commands.
680 If you have configurations that need to be changed, please change them in the template below.
681 Template:
682
683 {
684 "AT+SERVADDR":"119.91.62.30,1882",
685 "AT+CLIENT":"JwcXKjQBNhQ2JykDDAA5Ahs",
686 "AT+UNAME":"usenamedragino",
687 "AT+PWD":"passworddragino",
688 "AT+PUBTOPIC":"123",
689 "AT+SUBTOPIC":"321",
690 "AT+TDC":"7200",
691 "AT+INTMOD":"0",
692 "AT+APN":"NULL",
693 "AT+5VT":"0",
694 "AT+PRO":"3,5",
695 "AT+TR":"900",
696 "AT+NOUD":"0",
697 "AT+CSQTIME":"5",
698 "AT+DNSTIMER":"0",
699 "AT+TLSMOD":"0,0",
700 "AT+MQOS":"0",
701 "AT+TEMPALARM1":"0",
702 "AT+TEMPALARM2":"10",
703 "AT+TEMPALARM3":"0"
704 }
705
706 Hex:
707
708 MQTT's hex format. Since many commands need to support strings, only a few commands are supported.
709
710 The supported commands are consistent with LoRaWAN's hex commands.
711 Please refer to the following link to obtain the hex format:
712
713 [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/>>http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/]]
714
715
716
Copyright ©2010-2024 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0