Version 72.1 by Xiaoling on 2023/08/19 10:47

Show last authors
1 (% style="text-align:center" %)
2 [[image:image-20230819102136-3.png]]
3
4
5
6 **Table of Contents:**
7
8 {{toc/}}
9
10
11
12
13
14
15 = 1. Introduction =
16
17 == 1.1 What is S31x-NB NB-IoT Temperature & Humidity Sensor ==
18
19
20 The Dragino S31-NB and S31B-NB are **NB-IoT Temperature and Humidity Sensor** for Internet of Things solution. It is used to measure the surrounding **environment temperature and relative air humidity precisely**, and then upload to IoT server via NB-IoT network*.
21
22 The temperature & humidity sensor used in S31-NB is SHT31, which is fully calibrated, linearized, and temperature compensated digital output from Sensirion, it provides a strong reliability and long-term stability. The SHT31 is fixed in a **waterproof anti-condensation casing** for long term use.
23
24 S31-NB supports different uplink methods include **TCP, MQTT, UDP** for different application requirement. and Support Uplinks to various IoT Servers.
25
26 S31-NB is powered by **8500mAh Li-SOCI2 battery**, It is designed for long term use up to several years. (Real-world battery life depends on the use environment, update period and uplink method. Please check related Power Analyze report).
27
28 *make sure you have NB-IoT coverage locally.
29
30
31 [[image:1692411831805-116.png]]
32
33
34 == 1.2 ​Features ==
35
36
37 * NB-IoT Bands: B1/B2/B3/B4/B5/B8/B12/B13/B17/B18/B19/B20/B25/B28/B66/B70/B85 @H-FDD
38 * Ultra-low power consumption
39 * External 3 meters SHT31 probe (For S31-NB)
40 * Measure range -40°C ~~ 85°C
41 * Temperature & Humidity alarm
42 * Multiply Sampling and one uplink
43 * Support Bluetooth v5.1 remote configure and update firmware
44 * Uplink on periodically
45 * Downlink to change configure
46 * 8500mAh Battery for long term use
47 * Nano SIM card slot for NB-IoT SIM
48
49
50 == 1.3 Specification ==
51
52
53 (% style="color:#037691" %)**Common DC Characteristics:**
54
55 * Supply Voltage: 2.1v ~~ 3.6v
56 * Operating Temperature: -40 ~~ 85°C
57
58 (% style="color:#037691" %)**Temperature Sensor:**
59
60 * Range: -40 to + 80°C
61 * Accuracy: ±0.2 @ 0-90 °C
62 * Resolution: 0.1°C
63 * Long Term Shift: <0.03 °C/yr
64
65 (% style="color:#037691" %)**Humidity Sensor: **
66
67 * Range: 0 ~~ 99.9% RH
68 * Accuracy: ± 2%RH ( 0 ~~ 100%RH)
69 * Resolution: 0.01% RH
70 * Long Term Shift: <0.25 %RH/yr
71
72 (% style="color:#037691" %)**NB-IoT Spec:**
73
74 **NB-IoT Module: BC660K-GL**
75
76 Support Bands:
77
78 * B1 @H-FDD: 2100MHz
79 * B2 @H-FDD: 1900MHz
80 * B3 @H-FDD: 1800MHz
81 * B4 @H-FDD: 2100MHz
82 * B5 @H-FDD: 860MHz
83 * B8 @H-FDD: 900MHz
84 * B12 @H-FDD: 720MHz
85 * B13 @H-FDD: 740MHz
86 * B17 @H-FDD: 730MHz
87 * B18 @H-FDD: 870MHz
88 * B19 @H-FDD: 870MHz
89 * B20 @H-FDD: 790MHz
90 * B25 @H-FDD: 1900MHz
91 * B28 @H-FDD: 750MHz
92 * B66 @H-FDD: 2000MHz
93 * B70 @H-FDD: 2000MHz
94 * B85 @H-FDD: 700MHz
95
96 (% style="color:#037691" %)**Battery:**
97
98 * Li/SOCI2 un-chargeable battery
99 * Capacity: 8500mAh
100 * Self Discharge: <1% / Year @ 25°C
101 * Max continuously current: 130mA
102 * Max boost current: 2A, 1 second
103
104 (% style="color:#037691" %)**Power Consumption**
105
106 * STOP Mode: 10uA @ 3.3v
107 * Max transmit power: 350mA@3.3v
108
109
110 == 1.4 Sleep mode and working mode ==
111
112
113 (% style="color:blue" %)**Deep Sleep Mode: **(%%)Sensor doesn't have any LoRaWAN activate. This mode is used for storage and shipping to save battery life.
114
115 (% style="color:blue" %)**Working Mode:** (%%)In this mode, Sensor will work as LoRaWAN Sensor to Join LoRaWAN network and send out sensor data to server. Between each sampling/tx/rx periodically, sensor will be in IDLE mode), in IDLE mode, sensor has the same power consumption as Deep Sleep mode.
116
117
118 == 1.5 Applications ==
119
120
121 * Smart Buildings & Home Automation
122 * Logistics and Supply Chain Management
123 * Smart Metering
124 * Smart Agriculture
125 * Smart Cities
126 * Smart Factory
127
128 == 1.5 Button & LEDs ==
129
130
131 [[image:Main.User Manual for LoRaWAN End Nodes.D20-LBD22-LBD23-LB_LoRaWAN_Temperature_Sensor_User_Manual.WebHome@1675071855856-879.png]]
132
133
134 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
135 |=(% style="width: 167px;background-color:#D9E2F3;color:#0070C0" %)**Behavior on ACT**|=(% style="width: 117px;background-color:#D9E2F3;color:#0070C0" %)**Function**|=(% style="width: 225px;background-color:#D9E2F3;color:#0070C0" %)**Action**
136 |(% style="width:167px" %)Pressing ACT between 1s < time < 3s|(% style="width:117px" %)Send an uplink|(% style="width:225px" %)(((
137 If sensor is already Joined to LoRaWAN network, sensor will send an uplink packet, (% style="color:blue" %)**blue led** (%%)will blink once.
138 Meanwhile, BLE module will be active and user can connect via BLE to configure device.
139 )))
140 |(% style="width:167px" %)Pressing ACT for more than 3s|(% style="width:117px" %)Active Device|(% style="width:225px" %)(((
141 (% style="color:green" %)**Green led**(%%) will fast blink 5 times, device will enter (% style="color:#037691" %)**OTA mode**(%%) for 3 seconds. And then start to JOIN LoRaWAN network.
142 (% style="color:green" %)**Green led**(%%) will solidly turn on for 5 seconds after joined in network.
143 Once sensor is active, BLE module will be active and user can connect via BLE to configure device, no matter if device join or not join LoRaWAN network.
144 )))
145 |(% style="width:167px" %)Fast press ACT 5 times.|(% style="width:117px" %)Deactivate Device|(% style="width:225px" %)(% style="color:red" %)**Red led**(%%) will solid on for 5 seconds. Means device is in Deep Sleep Mode.
146
147
148 == 1.6 BLE connection ==
149
150
151 S31x-LB support BLE remote configure.
152
153
154 BLE can be used to configure the parameter of sensor or see the console output from sensor. BLE will be only activate on below case:
155
156 * Press button to send an uplink
157 * Press button to active device.
158 * Device Power on or reset.
159
160 If there is no activity connection on BLE in 60 seconds, sensor will shut down BLE module to enter low power mode.
161
162
163 == 1.7 Pin Definitions ==
164
165 [[image:http://8.211.40.43/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/SN50v3-LB/WebHome/image-20230610163213-1.png?width=699&height=404&rev=1.1||alt="image-20230610163213-1.png"]]
166
167
168 == 1.8 Hardware Variant ==
169
170
171 (% border="1" cellspacing="5" style="width:472px" %)
172 |=(% style="width: 102px;background-color:#D9E2F3;color:#0070C0" %)Model|=(% style="width: 190px;background-color:#D9E2F3;color:#0070C0" %)Photo|=(% style="width: 187px; background-color:#D9E2F3;color:#0070C0" %)Probe Info
173 |(% style="width:102px" %)(((
174 S31-LB
175 )))|(% style="width:190px" %)[[image:image-20230527093214-2.jpeg]]|(% style="width:187px" %)(((
176 1 x SHT31 Probe
177
178 Cable Length : 2 meters
179
180
181 )))
182 |(% style="width:102px" %)(((
183 S31B-LB
184 )))|(% style="width:190px" %)[[image:image-20230527093155-1.jpeg]]|(% style="width:187px" %)(((
185 1 x SHT31 Probe
186
187 Installed in device.
188 )))
189
190 (% style="display:none" %)
191
192
193
194 == 1.9 Mechanical ==
195
196
197 [[image:Main.User Manual for LoRaWAN End Nodes.D20-LBD22-LBD23-LB_LoRaWAN_Temperature_Sensor_User_Manual.WebHome@1675143884058-338.png]]
198
199
200 [[image:Main.User Manual for LoRaWAN End Nodes.D20-LBD22-LBD23-LB_LoRaWAN_Temperature_Sensor_User_Manual.WebHome@1675143899218-599.png]]
201
202
203 [[image:Main.User Manual for LoRaWAN End Nodes.D20-LBD22-LBD23-LB_LoRaWAN_Temperature_Sensor_User_Manual.WebHome@1675143909447-639.png]]
204
205
206 = 2. Configure S31x-LB to connect to LoRaWAN network =
207
208 == 2.1 How it works ==
209
210
211 The S31x-LB is configured as (% style="color:#037691" %)**LoRaWAN OTAA Class A**(%%) mode by default. It has OTAA keys to join LoRaWAN network. To connect a local LoRaWAN network, you need to input the OTAA keys in the LoRaWAN IoT server and press the button to activate the S31x-LB. It will automatically join the network via OTAA and start to send the sensor value. The default uplink interval is 20 minutes.
212
213
214 == 2.2 ​Quick guide to connect to LoRaWAN server (OTAA) ==
215
216
217 Following is an example for how to join the [[TTN v3 LoRaWAN Network>>url:https://console.cloud.thethings.network/]]. Below is the network structure; we use the [[LPS8v2>>url:https://www.dragino.com/products/lora-lorawan-gateway/item/228-lps8v2.html]] as a LoRaWAN gateway in this example.
218
219 The LPS8V2 is already set to connected to [[TTN network >>url:https://console.cloud.thethings.network/]], so what we need to now is configure the TTN server.
220
221
222 (% style="color:blue" %)**Step 1:**(%%) Create a device in TTN with the OTAA keys from S31x-LB.
223
224 Each S31x-LB is shipped with a sticker with the default device EUI as below:
225
226 [[image:image-20230426084152-1.png||alt="图片-20230426084152-1.png" height="233" width="502"]]
227
228
229 You can enter this key in the LoRaWAN Server portal. Below is TTN screen shot:
230
231
232 (% style="color:blue" %)**Register the device**
233
234 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LSN50v2-S31-S31B%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20User%20Manual/WebHome/1654935135620-998.png?rev=1.1||alt="1654935135620-998.png"]]
235
236
237 (% style="color:blue" %)**Add APP EUI and DEV EUI**
238
239 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LSN50v2-S31-S31B%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20User%20Manual/WebHome/image-20220611161308-4.png?width=753&height=551&rev=1.1||alt="图片-20220611161308-4.png"]]
240
241
242 (% style="color:blue" %)**Add APP EUI in the application**
243
244
245 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LSN50v2-S31-S31B%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20User%20Manual/WebHome/image-20220611161308-5.png?width=742&height=601&rev=1.1||alt="图片-20220611161308-5.png"]]
246
247
248 (% style="color:blue" %)**Add APP KEY**
249
250 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LSN50v2-S31-S31B%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20User%20Manual/WebHome/image-20220611161308-6.png?width=744&height=485&rev=1.1||alt="图片-20220611161308-6.png"]]
251
252
253 (% style="color:blue" %)**Step 2:**(%%) Activate on S31x-LB
254
255
256 Press the button for 5 seconds to activate the S31x-LB.
257
258 (% style="color:green" %)**Green led**(%%) will fast blink 5 times, device will enter (% style="color:blue" %)**OTA mode**(%%) for 3 seconds. And then start to JOIN LoRaWAN network. (% style="color:green" %)**Green led**(%%) will solidly turn on for 5 seconds after joined in network.
259
260 After join success, it will start to upload messages to TTN and you can see the messages in the panel.
261
262
263 == 2.3 ​Uplink Payload ==
264
265 === 2.3.1 Device Status, FPORT~=5 ===
266
267
268 Users can use the downlink command(**0x26 01**) to ask S31x-LB to send device configure detail, include device configure status. S31x-LB will uplink a payload via FPort=5 to server.
269
270 The Payload format is as below.
271
272
273 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
274 |(% colspan="6" style="background-color:#d9e2f3; color:#0070c0" %)**Device Status (FPORT=5)**
275 |(% style="width:103px" %)**Size (bytes)**|(% style="width:72px" %)**1**|**2**|(% style="width:91px" %)**1**|(% style="width:86px" %)**1**|(% style="width:44px" %)**2**
276 |(% style="width:103px" %)**Value**|(% style="width:72px" %)Sensor Model|Firmware Version|(% style="width:91px" %)Frequency Band|(% style="width:86px" %)Sub-band|(% style="width:44px" %)BAT
277
278 Example parse in TTNv3
279
280 [[image:image-20230524144422-1.png||height="174" width="1080"]]
281
282
283 (% style="color:#037691" %)**Sensor Model**(%%): For S31x-LB, this value is 0x0A
284
285 (% style="color:#037691" %)**Firmware Version**(%%): 0x0100, Means: v1.0.0 version
286
287 (% style="color:#037691" %)**Frequency Band**:
288
289 0x01: EU868
290
291 0x02: US915
292
293 0x03: IN865
294
295 0x04: AU915
296
297 0x05: KZ865
298
299 0x06: RU864
300
301 0x07: AS923
302
303 0x08: AS923-1
304
305 0x09: AS923-2
306
307 0x0a: AS923-3
308
309 0x0b: CN470
310
311 0x0c: EU433
312
313 0x0d: KR920
314
315 0x0e: MA869
316
317
318 (% style="color:#037691" %)**Sub-Band**:
319
320 AU915 and US915:value 0x00 ~~ 0x08
321
322 CN470: value 0x0B ~~ 0x0C
323
324 Other Bands: Always 0x00
325
326
327 (% style="color:#037691" %)**Battery Info**:
328
329 Check the battery voltage.
330
331 Ex1: 0x0B45 = 2885mV
332
333 Ex2: 0x0B49 = 2889mV
334
335
336 === 2.3.2  Sensor Data. FPORT~=2 ===
337
338
339 Sensor Data is uplink via FPORT=2
340
341 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:500px" %)
342 |=(% style="width: 60px;background-color:#D9E2F3;color:#0070C0" %)(((
343 **Size(bytes)**
344 )))|=(% style="width: 40px;background-color:#D9E2F3;color:#0070C0" %)2|=(% style="width: 90px;background-color:#D9E2F3;color:#0070C0" %)4|=(% style="width: 150px; background-color: #D9E2F3;color:#0070C0" %)1|=(% style="width: 80px; background-color: #D9E2F3;color:#0070C0" %)**2**|=(% style="width: 80px; background-color: #D9E2F3;color:#0070C0" %)2
345 |(% style="width:99px" %)Value|(% style="width:69px" %)(((
346 Battery
347 )))|(% style="width:130px" %)(((
348 Unix TimeStamp
349 )))|(% style="width:194px" %)(((
350 Alarm Flag & MOD& Level of PA8
351 )))|(% style="width:106px" %)(((
352 Temperature
353 )))|(% style="width:97px" %)(((
354 Humidity
355 )))
356
357 [[image:image-20230524144456-2.png||height="180" width="1142"]]
358
359
360 ==== (% style="color:#4472c4" %)**Battery**(%%) ====
361
362 Sensor Battery Level.
363
364 Ex1: 0x0B45 = 2885mV
365
366 Ex2: 0x0B49 = 2889mV
367
368
369 ==== (% style="color:#4472c4" %)**Temperature**(%%) ====
370
371 **Example**:
372
373 If payload is: 0105H:  (0105 & 8000 == 0), temp = 0105H /10 = 26.1 degree
374
375 If payload is: FF3FH :  (FF3F & 8000 == 1) , temp = (FF3FH - 65536)/10 = -19.3 degrees.
376
377 (FF3F & 8000:Judge whether the highest bit is 1, when the highest bit is 1, it is negative)
378
379
380 ==== (% style="color:#4472c4" %)**Humidity**(%%) ====
381
382
383 Read:0x(0197)=412    Value:  412 / 10=41.2, So 41.2%
384
385
386 ==== (% style="color:#4472c4" %)**Alarm Flag & MOD & Level of PA8**(%%) ====
387
388
389 **Example:**
390
391 If payload & 0x01 = 0x01  **~-~->** This is an Alarm Message.It means that the temperature and humidity exceed the alarm value or trigger an interrupt.
392
393 If payload & 0x01 = 0x00  **~-~->** This is a normal uplink message, no alarm.
394
395 If payload & 0x80>>7 = 0x01  **~-~->** The PA8 is low level.
396
397 If payload & 0x80>>7 =0x00  **~-~->** The PA8 is high level.
398
399 If payload >> 2 = 0x00  **~-~->**  means MOD=1, This is a sampling uplink message.
400
401 If payload >> 2 = 0x31  **~-~->**  means MOD=31, this message is a reply message for polling, this message contains the alarm settings. see [[this link>>path:#HPolltheAlarmsettings:]] for detail. 
402
403
404 == 2.4 Payload Decoder file ==
405
406
407 In TTN, use can add a custom payload so it shows friendly reading
408
409 In the page (% style="color:#037691" %)**Applications ~-~-> Payload Formats ~-~-> Custom ~-~-> decoder**(%%) to add the decoder from:
410
411 [[https:~~/~~/github.com/dragino/dragino-end-node-decoder/tree/main/S31-LB%26S31B-LB>>https://github.com/dragino/dragino-end-node-decoder/tree/main/S31-LB%26S31B-LB]]
412
413
414 == 2.5 Datalog Feature ==
415
416
417 Datalog Feature is to ensure IoT Server can get all sampling data from Sensor even if the LoRaWAN network is down. For each sampling, S31x-LB will store the reading for future retrieving purposes.
418
419
420 === 2.5.1 Ways to get datalog via LoRaWAN ===
421
422
423 Set [[PNACKMD=1>>||anchor="H2.5.4DatalogUplinkpayload28FPORT3D329"]], S31x-LB will wait for ACK for every uplink, when there is no LoRaWAN network,S31x-LB will mark these records with non-ack messages and store the sensor data, and it will send all messages (10s interval) after the network recovery.
424
425 * (((
426 a) S31x-LB will do an ACK check for data records sending to make sure every data arrive server.
427 )))
428 * (((
429 b) S31x-LB will send data in **CONFIRMED Mode** when PNACKMD=1, but S31x-LB won't re-transmit the packet if it doesn't get ACK, it will just mark it as a NONE-ACK message. In a future uplink if S31x-LB gets a ACK, S31x-LB will consider there is a network connection and resend all NONE-ACK messages.
430 )))
431
432 Below is the typical case for the auto-update datalog feature (Set PNACKMD=1)
433
434 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LHT65N%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20Manual/WebHome/image-20220703111700-2.png?width=1119&height=381&rev=1.1||alt="图片-20220703111700-2.png" height="381" width="1119"]]
435
436
437 === 2.5.2 Unix TimeStamp ===
438
439
440 S31x-LB uses Unix TimeStamp format based on
441
442 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LHT65N%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20Manual/WebHome/image-20220523001219-11.png?width=627&height=97&rev=1.1||alt="图片-20220523001219-11.png" height="97" width="627"]]
443
444 User can get this time from link:  [[https:~~/~~/www.epochconverter.com/>>url:https://www.epochconverter.com/]] :
445
446 Below is the converter example
447
448 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LHT65N%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20Manual/WebHome/image-20220523001219-12.png?width=720&height=298&rev=1.1||alt="图片-20220523001219-12.png" height="298" width="720"]]
449
450
451 So, we can use AT+TIMESTAMP=1611889405 or downlink 3060137afd00 to set the current time 2021 – Jan ~-~- 29 Friday 03:03:25
452
453
454 === 2.5.3 Set Device Time ===
455
456
457 User need to set (% style="color:blue" %)**SYNCMOD=1**(%%) to enable sync time via MAC command.
458
459 Once S31x-LB Joined LoRaWAN network, it will send the MAC command (DeviceTimeReq) and the server will reply with (DeviceTimeAns) to send the current time to S31x-LB. If S31x-LB fails to get the time from the server, S31x-LB will use the internal time and wait for next time request (AT+SYNCTDC to set the time request period, default is 10 days).
460
461 (% style="color:red" %)**Note: LoRaWAN Server need to support LoRaWAN v1.0.3(MAC v1.0.3) or higher to support this MAC command feature, Chirpstack,TTN V3 v3 and loriot support but TTN V3 v2 doesn't support. If server doesn't support this command, it will through away uplink packet with this command, so user will lose the packet with time request for TTN V3 v2 if SYNCMOD=1.**
462
463
464 === 2.5.4 Datalog Uplink payload (FPORT~=3) ===
465
466
467 The Datalog uplinks will use below payload format.
468
469 **Retrieval data payload:**
470
471 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:500px" %)
472 |=(% style="width: 60px;background-color:#D9E2F3;color:#0070C0" %)(((
473 **Size(bytes)**
474 )))|=(% style="width: 40px; background-color:#D9E2F3;color:#0070C0" %)**2**|=(% style="width: 55px; background-color:#D9E2F3;color:#0070C0" %)**2**|=(% style="width: 65px; background-color:#D9E2F3;color:#0070C0" %)**2**|=(% style="width: 180px; background-color:#D9E2F3;color:#0070C0" %)**1**|=(% style="width: 100px; background-color:#D9E2F3;color:#0070C0" %)**4**
475 |(% style="width:103px" %)Value|(% style="width:68px" %)(((
476 ignore
477 )))|(% style="width:104px" %)(((
478 (((
479 Humidity
480 )))
481
482 (((
483
484 )))
485 )))|(% style="width:87px" %)(((
486 Temperature
487 )))|(% style="width:178px" %)(((
488 Poll message flag & Alarm Flag& Level of PA8
489 )))|(% style="width:137px" %)Unix Time Stamp
490
491 **Poll message flag & Alarm Flag & Level of PA8:**
492
493 [[image:image-20230524114302-1.png||height="115" width="736"]]
494
495
496 **No ACK Message**:  1: This message means this payload is fromn Uplink Message which doesn't get ACK from the server before ( for **PNACKMD=1** feature)
497
498 **Poll Message Flag**: 1: This message is a poll message reply.
499
500 * Poll Message Flag is set to 1.
501
502 * Each data entry is 11 bytes, to save airtime and battery, devices will send max bytes according to the current DR and Frequency bands.
503
504 For example, in US915 band, the max payload for different DR is:
505
506 **a) DR0:** max is 11 bytes so one entry of data
507
508 **b) DR1:** max is 53 bytes so devices will upload 4 entries of data (total 44 bytes)
509
510 **c) DR2:** total payload includes 11 entries of data
511
512 **d) DR3: **total payload includes 22 entries of data.
513
514 If devise doesn't have any data in the polling time. Device will uplink 11 bytes of 0   
515
516 **Example:**
517
518 If S31x-LB has below data inside Flash:
519
520 [[image:image-20230524114654-2.png]]
521
522
523 If user sends below downlink command: 31646D84E1646D856C05
524
525 Where : Start time: 646D84E1 = time 23/5/24 03:30:41
526
527 Stop time: 646D856C= time 23/5/24 03:33:00
528
529
530 **S31x-LB will uplink this payload.**
531
532 [[image:image-20230524114826-3.png||height="448" width="1244"]]
533
534 (((
535 00 00 02 36 01 10 40 64 6D 84 E1 00 00 02 37 01 10 40 64 6D 84 F8 00 00 02 37 01 0F 40 64 6D 85 04 00 00 02 3A 01 0F 40 64 6D 85 18 00 00 02 3C 01 0F 40 64 6D 85 36 00 00 02 3D 01 0E 40 64 6D 85 3F 00 00 02 3F 01 0E 40 64 6D 85 60 00 00 02 40 01 0E 40 64 6D 85 6A
536 )))
537
538 (((
539 Where the first 11 bytes is for the first entry:
540 )))
541
542 (((
543 00 00 02 36 01 10 40 64 6D 84 E1
544 )))
545
546 (((
547 **Hum**=0x0236/10=56.6
548 )))
549
550 (((
551 **Temp**=0x0110/10=27.2
552 )))
553
554 (((
555 **poll message flag & Alarm Flag & Level of PA8**=0x40,means reply data,sampling uplink message,the PA8 is low level.
556 )))
557
558 (((
559 **Unix time** is 0x646D84E1=1684899041s=23/5/24 03:30:41
560 )))
561
562
563 (% aria-label="数据 URI 图像图像小部件" contenteditable="false" role="region" style="background-image:url(http://wiki1.dragino.com/xwiki/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.61/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" tabindex="-1" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||alt="数据 URI 图片" data-widget="image" draggable="true" height="15" role="presentation" title="单击并拖动以移动" width="15"]](% aria-label="数据 URI 图像图像小部件" contenteditable="false" role="region" style="background-image:url(http://wiki1.dragino.com/xwiki/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.61/plugins/widget/images/handle.png); background:rgba(220, 220, 220, 0.5); display:none" tabindex="-1" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||alt="数据 URI 图片" draggable="true" height="15" role="presentation" title="单击并拖动以移动" width="15"]](% aria-label="数据 URI 图像图像小部件" contenteditable="false" role="region" style="background-image:url(http://wiki1.dragino.com/xwiki/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.61/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" tabindex="-1" title="单击并拖动以调整大小" %)的(% aria-label="数据 URI 图像图像小部件" contenteditable="false" role="region" style="background-image:url(http://wiki1.dragino.com/xwiki/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.61/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" tabindex="-1" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||alt="数据 URI 图片" data-widget="image" draggable="true" height="15" role="presentation" title="单击并拖动以移动" width="15"]](% aria-label="数据 URI 图像图像小部件" contenteditable="false" role="region" style="background-image:url(http://wiki1.dragino.com/xwiki/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.61/plugins/widget/images/handle.png); background:rgba(220, 220, 220, 0.5); display:none" tabindex="-1" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||alt="数据 URI 图片" draggable="true" height="15" role="presentation" title="单击并拖动以移动" width="15"]](% aria-label="数据 URI 图像图像小部件" contenteditable="false" role="region" style="background-image:url(http://wiki1.dragino.com/xwiki/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.61/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" tabindex="-1" title="单击并拖动以调整大小" %)的
564
565 == 2.6 Temperature Alarm Feature ==
566
567
568 S31x-LB work flow with Alarm feature.
569
570
571 [[image:image-20230524110125-3.png||height="768" width="1115"]]
572
573
574
575 == 2.7 Frequency Plans ==
576
577
578 The S31x-LB uses OTAA mode and below frequency plans by default. If user want to use it with different frequency plan, please refer the AT command sets.
579
580 [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20Frequency%20Band/>>http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20Frequency%20Band/]]
581
582
583 == 2.8 ​Firmware Change Log ==
584
585
586 **Firmware download link: **[[https:~~/~~/www.dropbox.com/sh/fis3g6nmhv0eokg/AAC6BcCZaX4BdqZkduUvZ3jIa?dl=0>>https://www.dropbox.com/sh/fis3g6nmhv0eokg/AAC6BcCZaX4BdqZkduUvZ3jIa?dl=0]]
587
588
589 = 3. Configure S31x-LB =
590
591 == 3.1 Configure Methods ==
592
593
594 S31x-LB supports below configure method:
595
596 * AT Command via Bluetooth Connection (**Recommended**): [[BLE Configure Instruction>>http://wiki.dragino.com/xwiki/bin/view/Main/BLE%20Bluetooth%20Remote%20Configure/]].
597 * AT Command via UART Connection : See [[UART Connection>>http://wiki.dragino.com/xwiki/bin/view/Main/UART%20Access%20for%20LoRa%20ST%20v4%20base%20model/#H2.3UARTConnectionforSN50v3basemotherboard]].
598 * LoRaWAN Downlink.  Instruction for different platforms: See [[IoT LoRaWAN Server>>http://wiki.dragino.com/xwiki/bin/view/Main/]] section.
599
600
601 == 3.2 General Commands ==
602
603
604 These commands are to configure:
605
606 * General system settings like: uplink interval.
607 * LoRaWAN protocol & radio related command.
608
609 They are same for all Dragino Devices which support DLWS-005 LoRaWAN Stack. These commands can be found on the wiki:
610
611 [[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/]]
612
613
614 == 3.3 Commands special design for S31x-LB ==
615
616
617 These commands only valid for S31x-LB, as below:
618
619
620 === 3.3.1 Set Transmit Interval Time ===
621
622
623 Feature: Change LoRaWAN End Node Transmit Interval.
624
625 (% style="color:blue" %)**AT Command: AT+TDC**
626
627 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
628 |=(% style="width: 156px;background-color:#D9E2F3;color:#0070C0" %)**Command Example**|=(% style="width: 137px;background-color:#D9E2F3;color:#0070C0" %)**Function**|=(% style="background-color:#D9E2F3;color:#0070C0" %)**Response**
629 |(% style="width:156px" %)AT+TDC=?|(% style="width:137px" %)Show current transmit Interval|(((
630 30000
631 OK
632 the interval is 30000ms = 30s
633 )))
634 |(% style="width:156px" %)AT+TDC=60000|(% style="width:137px" %)Set Transmit Interval|(((
635 OK
636 Set transmit interval to 60000ms = 60 seconds
637 )))
638
639 (% style="color:blue" %)**Downlink Command: 0x01**
640
641 Format: Command Code (0x01) followed by 3 bytes time value.
642
643 If the downlink payload=0100003C, it means set the END Node's Transmit Interval to 0x00003C=60(S), while type code is 01.
644
645 * Example 1: Downlink Payload: 0100001E  ~/~/  Set Transmit Interval (TDC) = 30 seconds
646 * Example 2: Downlink Payload: 0100003C  ~/~/  Set Transmit Interval (TDC) = 60 seconds
647
648
649 === 3.3.2 Get Device Status ===
650
651
652 Send a LoRaWAN downlink to ask device send Alarm settings.
653
654 (% style="color:blue" %)**Downlink Payload:  **(%%)0x26 01
655
656 Sensor will upload Device Status via FPORT=5. See payload section for detail.
657
658
659 === 3.3.3 Set Temperature Alarm Threshold ===
660
661
662 * (% style="color:blue" %)**AT Command:**
663
664 (% style="color:#037691" %)**AT+SHTEMP=min,max**
665
666 * When min=0, and max≠0, Alarm higher than max
667 * When min≠0, and max=0, Alarm lower than min
668 * When min≠0 and max≠0, Alarm higher than max or lower than min
669
670 Example:
671
672 AT+SHTEMP=0,30   ~/~/ Alarm when temperature higher than 30.
673
674 * (% style="color:blue" %)**Downlink Payload:**
675
676 (% style="color:#037691" %)**0x(0C 01 00 1E)**  (%%) ~/~/ Set AT+SHTEMP=0,30
677
678 (% style="color:red" %)**(note: 3^^rd^^ byte= 0x00 for low limit(not set), 4^^th^^ byte = 0x1E for high limit: 30)**
679
680
681 === 3.3.4 Set Humidity Alarm Threshold ===
682
683
684 * (% style="color:blue" %)**AT Command:**
685
686 (% style="color:#037691" %)**AT+SHHUM=min,max**
687
688 * When min=0, and max≠0, Alarm higher than max
689 * When min≠0, and max=0, Alarm lower than min
690 * When min≠0 and max≠0, Alarm higher than max or lower than min
691
692 Example:
693
694 AT+SHHUM=70,0  ~/~/ Alarm when humidity lower than 70%.
695
696 * (% style="color:blue" %)**Downlink Payload:**
697
698 (% style="color:#037691" %)**0x(0C 02 46 00)**(%%)  ~/~/ Set AT+SHTHUM=70,0
699
700 (% style="color:red" %)**(note: 3^^rd^^ byte= 0x46 for low limit (70%), 4^^th^^ byte = 0x00 for high limit (not set))**
701
702
703 === 3.3.5 Set Alarm Interval ===
704
705
706 The shortest time of two Alarm packet. (unit: min)
707
708 * (% style="color:blue" %)**AT Command:**
709
710 (% style="color:#037691" %)**AT+ATDC=30** (%%) ~/~/ The shortest interval of two Alarm packets is 30 minutes, Means is there is an alarm packet uplink, there won't be another one in the next 30 minutes.
711
712 * (% style="color:blue" %)**Downlink Payload:**
713
714 (% style="color:#037691" %)**0x(0D 00 1E)**(%%)     **~-~--> ** Set AT+ATDC=0x 00 1E = 30 minutes
715
716
717 === 3.3.6 Get Alarm settings ===
718
719
720 Send a LoRaWAN downlink to ask device send Alarm settings.
721
722 * (% style="color:#037691" %)**Downlink Payload:  **(%%)0x0E 01
723
724 **Example:**
725
726 [[image:image-20230524110211-4.png]]
727
728 **Explain:**
729
730 * Alarm & MOD bit is 0x7C, 0x7C >> 2 = 0x31: Means this message is the Alarm settings message.
731
732
733 === 3.3.7 Set Interrupt Mode ===
734
735
736 Feature, Set Interrupt mode for PA8 of pin.
737
738 When AT+INTMOD=0 is set, PA8 is used as a digital input port.
739
740 (% style="color:blue" %)**AT Command: AT+INTMOD**
741
742 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
743 |=(% style="width: 155px;background-color:#D9E2F3;color:#0070C0" %)**Command Example**|=(% style="width: 197px;background-color:#D9E2F3;color:#0070C0" %)**Function**|=(% style="width: 158px;background-color:#D9E2F3;color:#0070C0" %)**Response**
744 |(% style="width:154px" %)AT+INTMOD=?|(% style="width:196px" %)Show current interrupt mode|(% style="width:157px" %)(((
745 0
746 OK
747 the mode is 0 =Disable Interrupt
748 )))
749 |(% style="width:154px" %)AT+INTMOD=2|(% style="width:196px" %)(((
750 Set Transmit Interval
751 0. (Disable Interrupt),
752 ~1. (Trigger by rising and falling edge)
753 2. (Trigger by falling edge)
754 3. (Trigger by rising edge)
755 )))|(% style="width:157px" %)OK
756
757 (% style="color:blue" %)**Downlink Command: 0x06**
758
759 Format: Command Code (0x06) followed by 3 bytes.
760
761 This means that the interrupt mode of the end node is set to 0x000003=3 (rising edge trigger), and the type code is 06.
762
763 * Example 1: Downlink Payload: 06000000  ~/~/  Turn off interrupt mode
764 * Example 2: Downlink Payload: 06000003  ~/~/  Set the interrupt mode to rising edge trigger
765
766
767 === 3.3.8 Set Power Output Duration ===
768
769
770 Control the output duration 5V . Before each sampling, device will
771
772 ~1. first enable the power output to external sensor,
773
774 2. keep it on as per duration, read sensor value and construct uplink payload
775
776 3. final, close the power output.
777
778 (% style="color:blue" %)**AT Command: AT+5VT**
779
780 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
781 |=(% style="width: 155px;background-color:#D9E2F3;color:#0070C0" %)**Command Example**|=(% style="width: 197px;background-color:#D9E2F3;color:#0070C0" %)**Function**|=(% style="width: 158px;background-color:#D9E2F3;color:#0070C0" %)**Response**
782 |(% style="width:154px" %)AT+5VT=?|(% style="width:196px" %)Show 5V open time.|(% style="width:157px" %)0 (default)
783 OK
784 |(% style="width:154px" %)AT+5VT=1000|(% style="width:196px" %)Close after a delay of 1000 milliseconds.|(% style="width:157px" %)OK
785
786 (% style="color:blue" %)**Downlink Command: 0x07**
787
788 Format: Command Code (0x07) followed by 2 bytes.
789
790 The first and second bytes are the time to turn on.
791
792 * Example 1: Downlink Payload: 070000  **~-~-->**  AT+5VT=0
793 * Example 2: Downlink Payload: 0701F4  **~-~-->**  AT+5VT=500
794
795
796 = 4. Battery & Power Consumption =
797
798
799 S31x-LB use ER26500 + SPC1520 battery pack. See below link for detail information about the battery info and how to replace.
800
801 [[**Battery Info & Power Consumption Analyze**>>http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20calculate%20the%20battery%20life%20of%20Dragino%20sensors%3F/]] .
802
803
804 = 5. OTA Firmware update =
805
806
807 (% class="wikigeneratedid" %)
808 User can change firmware S31x-LB to:
809
810 * Change Frequency band/ region.
811 * Update with new features.
812 * Fix bugs.
813
814 Firmware and changelog can be downloaded from : **[[Firmware download link>>https://www.dropbox.com/sh/fis3g6nmhv0eokg/AAC6BcCZaX4BdqZkduUvZ3jIa?dl=0]]**
815
816
817 Methods to Update Firmware:
818
819 * (Recommanded way) OTA firmware update via wireless : **[[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/Firmware%20OTA%20Update%20for%20Sensors/>>url:http://wiki.dragino.com/xwiki/bin/view/Main/Firmware%20OTA%20Update%20for%20Sensors/]]**
820 * Update through UART TTL interface : **[[Instruction>>url:http://wiki.dragino.com/xwiki/bin/view/Main/UART%20Access%20for%20LoRa%20ST%20v4%20base%20model/#H1.LoRaSTv4baseHardware]]**.
821
822
823 = 6. FAQ =
824
825
826
827 = 7. Order Info =
828
829
830 Part Number: (% style="color:blue" %)**S31-LB-XX  / S31B-LB-XX**
831
832 (% style="color:red" %)**XX**(%%): The default frequency band
833
834 * (% style="color:red" %)**AS923**(%%): LoRaWAN AS923 band
835
836 * (% style="color:red" %)**AU915**(%%): LoRaWAN AU915 band
837
838 * (% style="color:red" %)**EU433**(%%): LoRaWAN EU433 band
839
840 * (% style="color:red" %)**EU868**(%%): LoRaWAN EU868 band
841
842 * (% style="color:red" %)**KR920**(%%): LoRaWAN KR920 band
843
844 * (% style="color:red" %)**US915**(%%): LoRaWAN US915 band
845
846 * (% style="color:red" %)**IN865**(%%): LoRaWAN IN865 band
847
848 * (% style="color:red" %)**CN470**(%%): LoRaWAN CN470 band
849
850
851 = 8. ​Packing Info =
852
853
854 (% style="color:#037691" %)**Package Includes**:
855
856 * S31x-LB LoRaWAN Temperature & Humidity Sensor
857
858 (% style="color:#037691" %)**Dimension and weight**:
859
860 * Device Size: cm
861
862 * Device Weight: g
863
864 * Package Size / pcs : cm
865
866 * Weight / pcs : g
867
868
869 = 9. Support =
870
871
872 * Support is provided Monday to Friday, from 09:00 to 18:00 GMT+8. Due to different timezones we cannot offer live support. However, your questions will be answered as soon as possible in the before-mentioned schedule.
873
874 * Provide as much information as possible regarding your enquiry (product models, accurately describe your problem and steps to replicate it etc) and send a mail to [[Support@dragino.cc>>mailto:Support@dragino.cc]].