Version 79.1 by Xiaoling on 2023/08/19 11:32

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