Version 6.1 by Edwin Chen on 2024/06/02 22:09

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