Version 103.2 by Xiaoling on 2025/06/13 11:52

Show last authors
1 (% style="display:none" %) (%%) (% style="display:none" %) (%%) (% style="display:none" %)
2
3 [[image:image-20240104162316-6.png||data-xwiki-image-style-alignment="center"]]
4
5
6
7
8
9
10
11 **Table of Contents:**
12
13 {{toc/}}
14
15
16
17
18
19
20 = 1. Introduction =
21
22 == 1.1 What is S31x-LB/LS LoRaWAN Temperature & Humidity Sensor ==
23
24
25 The Dragino S31x-LB/LS is a (% style="color:blue" %)**LoRaWAN Temperature and Humidity Sensor**(%%) for Internet of Things solution. It is used to measure the (% style="color:blue" %)**surrounding environment temperature and relative air humidity precisely**(%%), and then upload to IoT server via LoRaWAN wireless protocol.
26
27 The temperature & humidity sensor used in S31x-LB/LS 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.
28
29 The LoRa wireless technology used in S31x-LB/LS allows device to send data and reach extremely long ranges at low data-rates. It provides ultra-long range spread spectrum communication and high interference immunity whilst minimizing current consumption.
30
31 S31x-LB/LS supports (% style="color:blue" %)**Temperature & Humdity alarm feature**(%%), user can set temperature alarm for instant notice. S31x-LB/LS supports Datalog feature, it can save the data when there is no LoRaWAN network and uplink when network recover.
32
33 S31x-LB/LS (% style="color:blue" %)**supports BLE configure**(%%) and (% style="color:blue" %)**wireless OTA update**(%%) which make user easy to use.
34
35 S31x-LB/LS is powered by (% style="color:blue" %)**8500mAh Li-SOCI2 battery**(%%) or (% style="color:blue" %)**solar powered + Li-ion battery**(%%) it is designed for long term use up to 5 years.
36
37 Each S31x-LB/LS is pre-load with a set of unique keys for LoRaWAN registrations, register these keys to local LoRaWAN server and it will auto connect after power on.
38
39
40 == 1.2 ​Features ==
41
42
43 * LoRaWAN 1.0.3 Class A
44 * Ultra-low power consumption
45 * External 3 meters SHT31 probe (For S31-LB)
46 * Measure range -40°C ~~ 80°C
47 * Temperature & Humidity alarm
48 * Bands: CN470/EU433/KR920/US915/EU868/AS923/AU915/IN865
49 * Support Bluetooth v5.1 and LoRaWAN remote configure
50 * Support wireless OTA update firmware
51 * Uplink on periodically
52 * Downlink to change configure
53 * 8500mAh Li/SOCl2 Battery (S31/S31B-LB)
54 * Solar panel + 3000mAh Li-ion battery (S31/S31B-LS)
55
56 == 1.3 Specification ==
57
58
59 (% style="color:#037691" %)**Common DC Characteristics:**
60
61 * Supply Voltage: Built-in Battery , 2.5v ~~ 3.6v
62 * Operating Temperature: -40 ~~ 85°C
63
64 (% style="color:#037691" %)**Temperature Sensor:**
65
66 * Range: -40 to + 80°C
67 * Accuracy: ±0.2 @ 0-90 °C
68 * Resolution: 0.1°C
69 * Long Term Shift: <0.03 °C/yr
70
71 (% style="color:#037691" %)**Humidity Sensor: **
72
73 * Range: 0 ~~ 99.9% RH
74 * Accuracy: ± 2%RH ( 0 ~~ 100%RH)
75 * Resolution: 0.01% RH
76 * Long Term Shift: <0.25 %RH/yr
77
78 (% style="color:#037691" %)**LoRa Spec:**
79
80 * Frequency Range,  Band 1 (HF): 862 ~~ 1020 Mhz
81 * Max +22 dBm constant RF output vs.
82 * RX sensitivity: down to -139 dBm.
83 * Excellent blocking immunity
84
85 (% style="color:#037691" %)**Battery:**
86
87 * Li/SOCI2 un-chargeable battery
88 * Capacity: 8500mAh
89 * Self-Discharge: <1% / Year @ 25°C
90 * Max continuously current: 130mA
91 * Max boost current: 2A, 1 second
92
93 (% style="color:#037691" %)**Power Consumption**
94
95 * Sleep Mode: 5uA @ 3.3v
96 * LoRa Transmit Mode: 125mA @ 20dBm, 82mA @ 14dBm
97
98 == 1.4 Sleep mode and working mode ==
99
100
101 (% 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.
102
103 (% 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.
104
105
106 == 1.5 Button & LEDs ==
107
108
109 [[image:image-20250416143859-1.jpeg]]
110
111 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
112 |=(% style="width: 167px;background-color:#4F81BD;color:white" %)**Behavior on ACT**|=(% style="width: 117px;background-color:#4F81BD;color:white" %)**Function**|=(% style="width: 226px;background-color:#4F81BD;color:white" %)**Action**
113 |[[image:1749523489553-702.png]] 1~~3s|(% style="width:117px" %)Send an uplink|(% style="width:225px" %)(((
114 If sensor is already Joined to LoRaWAN network, sensor will send an uplink packet, (% style="color:blue" %)**blue led** (%%)will blink once.
115 Meanwhile, BLE module will be active and user can connect via BLE to configure device.
116 )))
117 |[[image:1749523491487-577.png]] >3s|(% style="width:117px" %)Active Device|(% style="width:225px" %)(((
118 (% 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.
119 (% style="color:green" %)**Green led**(%%) will solidly turn on for 5 seconds after joined in network.
120 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.
121 )))
122 |[[image:1749523524280-815.png]] x5|(% 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.
123
124
125
126 == 1.6 BLE connection ==
127
128
129 S31x-LB/LS support BLE remote configure.
130
131 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:
132
133 * Press button to send an uplink
134 * Press button to active device.
135 * Device Power on or reset.
136
137 If there is no activity connection on BLE in 60 seconds, sensor will shut down BLE module to enter low power mode.
138
139
140 == 1.7 Pin Definitions ==
141
142
143 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/D20-LBD22-LBD23-LB_LoRaWAN_Temperature_Sensor_User_Manual/WebHome/image-20240926134323-1.png?rev=1.1||alt="image-20240926134323-1.png"]]
144
145 == 1.8 Wiring of DS18B20 temperature sensor ==
146
147 The S31x-LB supports connection to the external temperature sensor DS18B20. The wiring method is as follows:
148
149 [[image:1749779850163-145.jpg||height="408" width="651"]]
150
151
152 == 1.9 Hardware Variant ==
153
154
155 (% border="1" cellspacing="3" style="width:460px" %)
156 |=(% style="width: 102px;background-color:#4F81BD;color:white" %)Model|=(% style="width: 182px; background-color:#4F81BD;color:white" %)Photo|=(% style="width: 176px; background-color:#4F81BD;color:white" %)Probe Info
157 |(% style="width:102px" %)(((
158 S31-LB/LS
159 )))|(% style="width:182px" %)(((
160 [[image:image-20240104165223-7.png||data-xwiki-image-style-alignment="center"]]
161 )))|(% style="width:176px" %)(((
162 1 x SHT31 Probe
163
164 Cable Length : 2 meters
165
166
167 )))
168 |(% style="width:102px" %)(((
169 S31B-LB/LS
170 )))|(% style="width:182px" %)(((
171 [[image:image-20240104165338-9.png||data-xwiki-image-style-alignment="center"]]
172 )))|(% style="width:176px" %)(((
173 1 x SHT31 Probe
174
175 Installed in device.
176 )))
177
178 (% style="display:none" %)
179
180
181 == 1.10 Mechanical ==
182
183 === 1.10.1 for LB version ===
184
185 [[image:image-20250409174350-1.jpeg]]
186
187 === 1.10.2 for LS version ===
188
189
190 [[image:image-20250409174410-2.jpeg]]
191
192
193 = 2. Configure S31x-LB/LS to connect to LoRaWAN network =
194
195 == 2.1 How it works ==
196
197
198 The S31x-LB/LS 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/LS. It will automatically join the network via OTAA and start to send the sensor value. The default uplink interval is 20 minutes.
199
200
201 == 2.2 ​Quick guide to connect to LoRaWAN server (OTAA) ==
202
203
204 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.
205
206 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.
207
208 [[image:image-20250409175256-3.png]]
209
210 (% style="color:blue" %)**Step 1:**(%%) Create a device in TTN with the OTAA keys from S31x-LB/LS.
211
212 Each S31x-LB/LS is shipped with a sticker with the default device EUI as below:
213
214 [[image:image-20230426084152-1.png||alt="图片-20230426084152-1.png" height="233" width="502"]]
215
216
217 You can enter this key in the LoRaWAN Server portal. Below is TTN screen shot:
218
219 **Create the application.**
220
221 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/SAC01L_LoRaWAN_Temperature%26Humidity_Sensor_User_Manual/WebHome/image-20250423093843-1.png?width=756&height=264&rev=1.1||alt="image-20250423093843-1.png"]]
222
223 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LTC2-LB--LoRaWAN_Temperature_Transmitter_User_Manual/WebHome/image-20240907111305-2.png?width=1000&height=572&rev=1.1||alt="image-20240907111305-2.png"]]
224
225
226 **Add devices to the created Application.**
227
228 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LTC2-LB--LoRaWAN_Temperature_Transmitter_User_Manual/WebHome/image-20240907111659-3.png?width=977&height=185&rev=1.1||alt="image-20240907111659-3.png"]]
229
230 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LTC2-LB--LoRaWAN_Temperature_Transmitter_User_Manual/WebHome/image-20240907111820-5.png?width=975&height=377&rev=1.1||alt="image-20240907111820-5.png"]]
231
232
233 **Enter end device specifics manually.**
234
235 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LTC2-LB--LoRaWAN_Temperature_Transmitter_User_Manual/WebHome/image-20240907112136-6.png?width=697&height=687&rev=1.1||alt="image-20240907112136-6.png"]]
236
237
238 **Add DevEUI and AppKey.**
239
240 **Customize a platform ID for the device.**
241
242 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LTC2-LB--LoRaWAN_Temperature_Transmitter_User_Manual/WebHome/image-20240907112427-7.png?rev=1.1||alt="image-20240907112427-7.png"]]
243
244
245 (% style="color:blue" %)**Step 2:**(%%) Add decoder.
246
247 In TTN, user can add a custom payload so it shows friendly reading.
248
249 Click this link to get the decoder: [[https:~~/~~/github.com/dragino/dragino-end-node-decoder/tree/main/>>url:https://github.com/dragino/dragino-end-node-decoder/tree/main/]]
250
251 Below is TTN screen shot:
252
253 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LDS25-LBLDS25-LS--LoRaWAN_LiDAR_Distance_Auto-Clean_Sensor_User_Manual/WebHome/image-20241009140556-1.png?width=1184&height=488&rev=1.1||alt="image-20241009140556-1.png" height="488" width="1184"]]
254
255 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LDS25-LBLDS25-LS--LoRaWAN_LiDAR_Distance_Auto-Clean_Sensor_User_Manual/WebHome/image-20241009140603-2.png?width=1168&height=562&rev=1.1||alt="image-20241009140603-2.png" height="562" width="1168"]]
256
257
258 (% style="color:blue" %)**Step 3:**(%%) Activate on S31x-LB/LS
259
260 Press the button for 5 seconds to activate the S31x-LB/LS.
261
262 (% 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.
263
264 After join success, it will start to upload messages to TTN and you can see the messages in the panel.
265
266
267 == 2.3 ​Uplink Payload ==
268
269 === 2.3.1 Device Status, FPORT~=5 ===
270
271
272 Users can use the downlink command(**0x26 01**) to ask S31x-LB/LS to send device configure detail, include device configure status. S31x-LB/LS will uplink a payload via FPort=5 to server.
273
274 The Payload format is as below.
275
276 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
277 |(% colspan="6" style="background-color:#4f81bd; color:white" %)**Device Status (FPORT=5)**
278 |(% style="width:103px" %)**Size (bytes)**|(% style="width:72px" %)**1**|**2**|(% style="width:91px" %)**1**|(% style="width:86px" %)**1**|(% style="width:44px" %)**2**
279 |(% 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
280
281 Example parse in TTNv3
282
283 [[image:image-20230524144422-1.png||height="174" width="1080"]]
284
285
286 (% style="color:#037691" %)**Sensor Model**(%%): For S31x-LB/LS, this value is 0x0A
287
288 (% style="color:#037691" %)**Firmware Version**(%%): 0x0100, Means: v1.0.0 version
289
290 (% style="color:#037691" %)**Frequency Band**:
291
292 0x01: EU868
293
294 0x02: US915
295
296 0x03: IN865
297
298 0x04: AU915
299
300 0x05: KZ865
301
302 0x06: RU864
303
304 0x07: AS923
305
306 0x08: AS923-1
307
308 0x09: AS923-2
309
310 0x0a: AS923-3
311
312 0x0b: CN470
313
314 0x0c: EU433
315
316 0x0d: KR920
317
318 0x0e: MA869
319
320
321 (% style="color:#037691" %)**Sub-Band**:
322
323 AU915 and US915:value 0x00 ~~ 0x08
324
325 CN470: value 0x0B ~~ 0x0C
326
327 Other Bands: Always 0x00
328
329
330 (% style="color:#037691" %)**Battery Info**:
331
332 Check the battery voltage.
333
334 Ex1: 0x0B45 = 2885mV
335
336 Ex2: 0x0B49 = 2889mV
337
338
339 === 2.3.2  Sensor Data. FPORT~=2 ===
340
341
342 Sensor Data is uplink via FPORT=2
343
344 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:500px" %)
345 |=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
346 **Size(bytes)**
347 )))|=(% style="width: 40px;background-color:#4F81BD;color:white" %)2|=(% style="width: 90px;background-color:#4F81BD;color:white" %)4|=(% style="width: 150px; background-color: #4F81BD;color:white" %)1|=(% style="width: 80px; background-color: #4F81BD;color:white" %)**2**|=(% style="width: 80px; background-color: #4F81BD;color:white" %)2
348 |(% style="width:99px" %)Value|(% style="width:69px" %)(((
349 Battery
350 )))|(% style="width:130px" %)(((
351 Unix TimeStamp
352 )))|(% style="width:194px" %)(((
353 Alarm Flag & MOD& Level of PA8
354 )))|(% style="width:106px" %)(((
355 Temperature
356 )))|(% style="width:97px" %)(((
357 Humidity
358 )))
359
360 [[image:image-20230524144456-2.png||height="180" width="1142"]]
361
362
363 ==== (% style="color:#4472c4" %)**Battery**(%%) ====
364
365 Sensor Battery Level.
366
367 Ex1: 0x0B45 = 2885mV
368
369 Ex2: 0x0B49 = 2889mV
370
371
372 ==== (% style="color:#4472c4" %)**Temperature**(%%) ====
373
374 **Example**:
375
376 If payload is: 0105H:  (0105 & 8000 == 0), temp = 0105H /10 = 26.1 degree
377
378 If payload is: FF3FH :  (FF3F & 8000 == 1) , temp = (FF3FH - 65536)/10 = -19.3 degrees.
379
380 (FF3F & 8000:Judge whether the highest bit is 1, when the highest bit is 1, it is negative)
381
382
383 ==== (% style="color:#4472c4" %)**Humidity**(%%) ====
384
385 Read:0x(0197)=412    Value:  412 / 10=41.2, So 41.2%
386
387
388 ==== (% style="color:#4472c4" %)**Alarm Flag & MOD & Level of PA8**(%%) ====
389
390 **Example:**
391
392 If payload & 0x01 = 0x01  **~-~->** This is an Alarm Message.It means that the temperature and humidity exceed the alarm value or trigger an interrupt.
393
394 If payload & 0x01 = 0x00  **~-~->** This is a normal uplink message, no alarm.
395
396 If payload & 0x80>>7 = 0x01  **~-~->** The PA8 is low level.
397
398 If payload & 0x80>>7 =0x00  **~-~->** The PA8 is high level.
399
400 If payload >> 2 = 0x00  **~-~->**  means MOD=1, This is a sampling uplink message.
401
402 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. 
403
404
405 == 2.4 Payload Decoder file ==
406
407
408 In TTN, use can add a custom payload so it shows friendly reading
409
410 In the page (% style="color:#037691" %)**Applications ~-~-> Payload Formats ~-~-> Custom ~-~-> decoder**(%%) to add the decoder from:
411
412 [[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]]
413
414
415 == 2.5 Datalog Feature ==
416
417
418 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/LS will store the reading for future retrieving purposes.
419
420
421 === 2.5.1 Ways to get datalog via LoRaWAN ===
422
423
424 Set PNACKMD=1, S31x-LB/LS will wait for ACK for every uplink, when there is no LoRaWAN network,S31x-LB/LS 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.
425
426 * (((
427 a) S31x-LB/LS will do an ACK check for data records sending to make sure every data arrive server.
428 )))
429 * (((
430 b) S31x-LB/LS will send data in **CONFIRMED Mode** when PNACKMD=1, but S31x-LB/LS 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/LS gets a ACK, S31x-LB/LS will consider there is a network connection and resend all NONE-ACK messages.
431 )))
432
433 === 2.5.2 Unix TimeStamp ===
434
435
436 S31x-LB/LS uses Unix TimeStamp format based on
437
438 [[image:image-20250328173339-5.jpeg]]
439
440 User can get this time from link:  [[https:~~/~~/www.epochconverter.com/>>url:https://www.epochconverter.com/]] :
441
442 Below is the converter example
443
444 [[image:image-20250328173355-6.jpeg]]
445
446
447 So, we can use AT+TIMESTAMP=1611889405 or downlink 3060137afd00 to set the current time 2021 – Jan ~-~- 29 Friday 03:03:25
448
449
450 === 2.5.3 Set Device Time ===
451
452
453 User need to set (% style="color:blue" %)**SYNCMOD=1**(%%) to enable sync time via MAC command.
454
455 Once S31x-LB/LS 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/LS. If S31x-LB/LS fails to get the time from the server, S31x-LB/LS will use the internal time and wait for next time request (AT+SYNCTDC to set the time request period, default is 10 days).
456
457 (% 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.**
458
459
460 === 2.5.4 Datalog Uplink payload (FPORT~=3) ===
461
462
463 The Datalog uplinks will use below payload format.
464
465 **Retrieval data payload:**
466
467 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:500px" %)
468 |=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
469 **Size(bytes)**
470 )))|=(% style="width: 40px; background-color:#4F81BD;color:white" %)**2**|=(% style="width: 55px; background-color:#4F81BD;color:white" %)**2**|=(% style="width: 65px; background-color:#4F81BD;color:white" %)**2**|=(% style="width: 180px; background-color:#4F81BD;color:white" %)**1**|=(% style="width: 100px; background-color:#4F81BD;color:white" %)**4**
471 |(% style="width:103px" %)Value|(% style="width:68px" %)(((
472 ignore
473 )))|(% style="width:104px" %)(((
474 (((
475 Humidity
476 )))
477 )))|(% style="width:87px" %)(((
478 Temperature
479 )))|(% style="width:178px" %)(((
480 Poll message flag & Alarm Flag& Level of PA8
481 )))|(% style="width:137px" %)Unix Time Stamp
482
483 **Poll message flag & Alarm Flag & Level of PA8:**
484
485 [[image:image-20230524114302-1.png||height="115" width="736"]]
486
487
488 **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)
489
490 **Poll Message Flag**: 1: This message is a poll message reply.
491
492 * Poll Message Flag is set to 1.
493
494 * Each data entry is 11 bytes, to save airtime and battery, devices will send max bytes according to the current DR and Frequency bands.
495
496 For example, in US915 band, the max payload for different DR is:
497
498 **a) DR0:** max is 11 bytes so one entry of data
499
500 **b) DR1:** max is 53 bytes so devices will upload 4 entries of data (total 44 bytes)
501
502 **c) DR2:** total payload includes 11 entries of data
503
504 **d) DR3: **total payload includes 22 entries of data.
505
506 If devise doesn't have any data in the polling time. Device will uplink 11 bytes of 0   
507
508 **Example:**
509
510 If S31x-LB/LS has below data inside Flash:
511
512 [[image:image-20230524114654-2.png]]
513
514
515 If user sends below downlink command: 31646D84E1646D856C05
516
517 Where : Start time: 646D84E1 = time 23/5/24 03:30:41
518
519 Stop time: 646D856C= time 23/5/24 03:33:00
520
521
522 **S31x-LB/LS will uplink this payload.**
523
524 [[image:image-20230524114826-3.png||height="448" width="1244"]]
525
526 (((
527 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
528 )))
529
530 (((
531 Where the first 11 bytes is for the first entry:
532 )))
533
534 (((
535 00 00 02 36 01 10 40 64 6D 84 E1
536 )))
537
538 (((
539 **Hum**=0x0236/10=56.6
540 )))
541
542 (((
543 **Temp**=0x0110/10=27.2
544 )))
545
546 (((
547 **poll message flag & Alarm Flag & Level of PA8**=0x40,means reply data,sampling uplink message,the PA8 is low level.
548 )))
549
550 (((
551 **Unix time** is 0x646D84E1=1684899041s=23/5/24 03:30:41
552 )))
553
554
555 (% 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" %)[[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 图片" 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="单击并拖动以调整大小" %)的
556
557 == 2.6 Temperature Alarm Feature ==
558
559
560 S31x-LB/LS work flow with Alarm feature.
561
562
563 [[image:image-20230524110125-3.png||height="768" width="1115"]]
564
565
566
567 == 2.7 Frequency Plans ==
568
569
570 The S31x-LB/LS uses OTAA mode and below frequency plans by default. Each frequency band use different firmware, user update the firmware to the corresponding band for their country.
571
572 [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20Frequency%20Band/>>http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20Frequency%20Band/]]
573
574
575 == 2.8 ​Firmware Change Log ==
576
577
578 **Firmware download link: **[[https:~~/~~/www.dropbox.com/sh/fis3g6nmhv0eokg/AAC6BcCZaX4BdqZkduUvZ3jIa?dl=0>>https://www.dropbox.com/sh/fis3g6nmhv0eokg/AAC6BcCZaX4BdqZkduUvZ3jIa?dl=0]]
579
580
581 = 3. Configure S31x-LB/LS =
582
583 == 3.1 Configure Methods ==
584
585
586 S31x-LB/LS supports below configure method:
587
588 * AT Command via Bluetooth Connection (**Recommended**): [[BLE Configure Instruction>>http://wiki.dragino.com/xwiki/bin/view/Main/BLE%20Bluetooth%20Remote%20Configure/]].
589 * 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]].
590 * LoRaWAN Downlink.  Instruction for different platforms: See [[IoT LoRaWAN Server>>http://wiki.dragino.com/xwiki/bin/view/Main/]] section.
591
592 == 3.2 General Commands ==
593
594
595 These commands are to configure:
596
597 * General system settings like: uplink interval.
598 * LoRaWAN protocol & radio related command.
599
600 They are same for all Dragino Devices which support DLWS-005 LoRaWAN Stack. These commands can be found on the wiki:
601
602 [[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/]]
603
604
605 == 3.3 Commands special design for S31x-LB/LS ==
606
607
608 These commands only valid for S31x-LB/LS, as below:
609
610
611 === 3.3.1 Set Transmit Interval Time ===
612
613
614 Feature: Change LoRaWAN End Node Transmit Interval.
615
616 (% style="color:blue" %)**AT Command: AT+TDC**
617
618 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
619 |=(% style="width: 156px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 137px;background-color:#4F81BD;color:white" %)**Function**|=(% style="background-color:#4F81BD;color:white" %)**Response**
620 |(% style="width:156px" %)AT+TDC=?|(% style="width:137px" %)Show current transmit Interval|(((
621 30000
622 OK
623 the interval is 30000ms = 30s
624 )))
625 |(% style="width:156px" %)AT+TDC=60000|(% style="width:137px" %)Set Transmit Interval|(((
626 OK
627 Set transmit interval to 60000ms = 60 seconds
628 )))
629
630 (% style="color:blue" %)**Downlink Command: 0x01**
631
632 Format: Command Code (0x01) followed by 3 bytes time value.
633
634 If the downlink payload=0100003C, it means set the END Node's Transmit Interval to 0x00003C=60(S), while type code is 01.
635
636 * Example 1: Downlink Payload: 0100001E  ~/~/  Set Transmit Interval (TDC) = 30 seconds
637 * Example 2: Downlink Payload: 0100003C  ~/~/  Set Transmit Interval (TDC) = 60 seconds
638
639 === 3.3.2 Get Device Status ===
640
641
642 Send a LoRaWAN downlink to ask device send Alarm settings.
643
644 (% style="color:blue" %)**Downlink Payload:  **(%%)0x26 01
645
646 Sensor will upload Device Status via FPORT=5. See payload section for detail.
647
648
649 === 3.3.3 Set Temperature Alarm Threshold ===
650
651
652 * (% style="color:blue" %)**AT Command:**
653
654 (% style="color:#037691" %)**AT+SHTEMP=min,max**
655
656 * When min=0, and max≠0, Alarm higher than max
657 * When min≠0, and max=0, Alarm lower than min
658 * When min≠0 and max≠0, Alarm higher than max or lower than min
659
660 Example:
661
662 AT+SHTEMP=0,30   ~/~/ Alarm when temperature higher than 30.
663
664 * (% style="color:blue" %)**Downlink Payload:**
665
666 (% style="color:#037691" %)**0x(0C 01 00 1E)**  (%%) ~/~/ Set AT+SHTEMP=0,30
667
668 (% style="color:red" %)**(note: 3^^rd^^ byte= 0x00 for low limit(not set), 4^^th^^ byte = 0x1E for high limit: 30)**
669
670
671 === 3.3.4 Set Humidity Alarm Threshold ===
672
673
674 * (% style="color:blue" %)**AT Command:**
675
676 (% style="color:#037691" %)**AT+SHHUM=min,max**
677
678 * When min=0, and max≠0, Alarm higher than max
679 * When min≠0, and max=0, Alarm lower than min
680 * When min≠0 and max≠0, Alarm higher than max or lower than min
681
682 Example:
683
684 AT+SHHUM=70,0  ~/~/ Alarm when humidity lower than 70%.
685
686 * (% style="color:blue" %)**Downlink Payload:**
687
688 (% style="color:#037691" %)**0x(0C 02 46 00)**(%%)  ~/~/ Set AT+SHTHUM=70,0
689
690 (% style="color:red" %)**(note: 3^^rd^^ byte= 0x46 for low limit (70%), 4^^th^^ byte = 0x00 for high limit (not set))**
691
692
693 === 3.3.5 Set Alarm Interval ===
694
695
696 The shortest time of two Alarm packet. (unit: min)
697
698 * (% style="color:blue" %)**AT Command:**
699
700 (% 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.
701
702 * (% style="color:blue" %)**Downlink Payload:**
703
704 (% style="color:#037691" %)**0x(0D 00 1E)**(%%)     **~-~--> ** Set AT+ATDC=0x 00 1E = 30 minutes
705
706
707 === 3.3.6 Get Alarm settings ===
708
709
710 Send a LoRaWAN downlink to ask device send Alarm settings.
711
712 * (% style="color:#037691" %)**Downlink Payload:  **(%%)0x0E 01
713
714 **Example:**
715
716 [[image:image-20230524110211-4.png]]
717
718 **Explain:**
719
720 * Alarm & MOD bit is 0x7C, 0x7C >> 2 = 0x31: Means this message is the Alarm settings message.
721
722 === 3.3.7 Set Interrupt Mode ===
723
724
725 Feature, Set Interrupt mode for PA8 of pin.
726
727 When AT+INTMOD=0 is set, PA8 is used as a digital input port.
728
729 (% style="color:blue" %)**AT Command: AT+INTMOD**
730
731 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
732 |=(% style="width: 155px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 192px; background-color: rgb(79, 129, 189); color: white;" %)**Function**|=(% style="width: 161px; background-color: rgb(79, 129, 189); color: white;" %)**Response**
733 |(% style="width:154px" %)AT+INTMOD=?|(% style="width:192px" %)Show current interrupt mode|(% style="width:161px" %)(((
734 0
735 OK
736 the mode is 0 =Disable Interrupt
737 )))
738 |(% style="width:154px" %)AT+INTMOD=2|(% style="width:192px" %)(((
739 0: Disable Interrupt
740 1: Trigger by rising and falling edge
741 2: Trigger by falling edge
742 3: Trigger by rising edge
743 )))|(% style="width:161px" %)OK
744
745 (% style="color:blue" %)**Downlink Command: 0x06**
746
747 Format: Command Code (0x06) followed by 3 bytes.
748
749 This means that the interrupt mode of the end node is set to 0x000003=3 (rising edge trigger), and the type code is 06.
750
751 * Example 1: Downlink Payload: 06000000  ~/~/  Turn off interrupt mode
752 * Example 2: Downlink Payload: 06000003  ~/~/  Set the interrupt mode to rising edge trigger
753
754 === 3.3.8 Set Power Output Duration ===
755
756
757 Control the output duration 5V . Before each sampling, device will
758
759 ~1. first enable the power output to external sensor,
760
761 2. keep it on as per duration, read sensor value and construct uplink payload
762
763 3. final, close the power output.
764
765 (% style="color:blue" %)**AT Command: AT+5VT**
766
767 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
768 |=(% style="width: 155px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 197px;background-color:#4F81BD;color:white" %)**Function**|=(% style="width: 158px;background-color:#4F81BD;color:white" %)**Response**
769 |(% style="width:154px" %)AT+5VT=?|(% style="width:196px" %)Show 5V open time.|(% style="width:157px" %)0 (default)
770 OK
771 |(% style="width:154px" %)AT+5VT=1000|(% style="width:196px" %)Close after a delay of 1000 milliseconds.|(% style="width:157px" %)OK
772
773 (% style="color:blue" %)**Downlink Command: 0x07**
774
775 Format: Command Code (0x07) followed by 2 bytes.
776
777 The first and second bytes are the time to turn on.
778
779 * Example 1: Downlink Payload: 070000  **~-~-->**  AT+5VT=0
780 * Example 2: Downlink Payload: 0701F4  **~-~-->**  AT+5VT=500
781
782 === 3.3.9 Print data entries base on page ===
783
784
785 Feature: Print the sector data from start page to stop page (max is 416 pages).
786
787 (% style="color:#4f81bd" %)**AT Command: AT+PDTA**
788
789 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
790 |(% style="background-color:#4f81bd; color:white; width:158px" %)**Command Example**|(% style="background-color:#4f81bd; color:white; width:352px" %)**Function**
791 |(% style="width:156px" %)(((
792 AT+PDTA=1,3
793 Print page 1 to 3
794 )))|(% style="width:311px" %)(((
795 8019500 19/6/26 16:48 1 2992 sht temp=28.21 sht hum=71.5 ds temp=27.31
796 8019510 19/6/26 16:53 1 2994 sht temp=27.64 sht hum=69.3 ds temp=26.93
797 8019520 19/6/26 16:58 1 2996 sht temp=28.39 sht hum=72.0 ds temp=27.06
798 8019530 19/6/26 17:03 1 2996 sht temp=27.97 sht hum=70.4 ds temp=27.12
799 8019540 19/6/26 17:08 1 2996 sht temp=27.80 sht hum=72.9 ds temp=27.06
800 8019550 19/6/26 17:13 1 2998 sht temp=27.30 sht hum=72.4 ds temp=26.68
801 8019560 19/6/26 17:22 1 2992 sht temp=26.27 sht hum=62.3 ds temp=26.56
802 8019570
803 8019580
804 8019590
805 80195A0
806 80195B0
807 80195C0
808 80195D0
809 80195E0
810 80195F0
811
812 OK
813 )))
814
815 (% style="color:#4f81bd" %)**Downlink Command:**
816
817 No downlink commands for feature
818
819
820 === 3.3.10 Print last few data entries ===
821
822
823 Feature: Print the last few data entries
824
825 (% style="color:#4f81bd" %)**AT Command: AT+PLDTA**
826
827 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
828 |(% style="background-color:#4f81bd; color:white; width:158px" %)**Command Example**|(% style="background-color:#4f81bd; color:white; width:352px" %)**Function**
829 |(% style="width:156px" %)(((
830 AT+PLDTA=5
831 Print last 5 entries
832 )))|(% style="width:311px" %)(((
833 Stop Tx and RTP events when read sensor data
834 1 19/6/26 13:59 1 3005 sht temp=27.09 sht hum=79.5 ds temp=26.75
835 2 19/6/26 14:04 1 3007 sht temp=26.65 sht hum=74.8 ds temp=26.43
836 3 19/6/26 14:09 1 3007 sht temp=26.91 sht hum=77.9 ds temp=26.56
837 4 19/6/26 14:15 1 3007 sht temp=26.93 sht hum=76.7 ds temp=26.75
838 5 19/6/26 14:20 1 3007 sht temp=26.78 sht hum=76.6 ds temp=26.43
839 Start Tx and RTP events
840 OK
841 )))
842
843 (% style="color:#4f81bd" %)**Downlink Command:**
844
845 No downlink commands for feature
846
847
848 === 3.3.11 Clear Flash Record ===
849
850
851 Feature: Clear flash storage for data log feature.
852
853 (% style="color:#4f81bd" %)**AT Command: AT+CLRDTA**
854
855 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:503px" %)
856 |(% style="background-color:#4f81bd; color:white; width:157px" %)**Command Example**|(% style="background-color:#4f81bd; color:white; width:137px" %)**Function**|(% style="background-color:#4f81bd; color:white; width:209px" %)**Response**
857 |(% style="width:155px" %)AT+CLRDTA |(% style="width:134px" %)Clear date record|(% style="width:209px" %)(((
858 Clear all stored sensor data…
859
860 OK
861 )))
862
863 (% style="color:#4f81bd" %)**Downlink Command: 0xA3**
864
865 * Example: 0xA301  ~/~/  Same as AT+CLRDTA
866
867 = 4. Battery & Power Consumption =
868
869
870 S31x-LB use ER26500 + SPC1520 battery pack and S31x-LS use 3000mAh Recharable Battery with Solar Panel. See below link for detail information about the battery info and how to replace.
871
872 [[**Battery Info & Power Consumption Analyze**>>http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20calculate%20the%20battery%20life%20of%20Dragino%20sensors%3F/]] .
873
874
875 = 5. OTA Firmware update =
876
877
878 (% class="wikigeneratedid" %)
879 User can change firmware S31x-LB/LS to:
880
881 * Change Frequency band/ region.
882 * Update with new features.
883 * Fix bugs.
884
885 Firmware and changelog can be downloaded from : **[[Firmware download link>>https://www.dropbox.com/sh/fis3g6nmhv0eokg/AAC6BcCZaX4BdqZkduUvZ3jIa?dl=0]]**
886
887
888 Methods to Update Firmware:
889
890 * (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/]]**
891 * 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]]**.
892
893 = 6. FAQ =
894
895
896
897 = 7. Order Info =
898
899
900 Part Number: (% style="color:blue" %)**S31-LB-XX / S31B-LB-XX**(%%)**  or  (% style="color:blue" %)S31-LS-XX / S31B-LS-XX(%%)**
901
902 (% style="color:red" %)**XX**(%%): The default frequency band
903
904 * (% style="color:red" %)**AS923**(%%): LoRaWAN AS923 band
905
906 * (% style="color:red" %)**AU915**(%%): LoRaWAN AU915 band
907
908 * (% style="color:red" %)**EU433**(%%): LoRaWAN EU433 band
909
910 * (% style="color:red" %)**EU868**(%%): LoRaWAN EU868 band
911
912 * (% style="color:red" %)**KR920**(%%): LoRaWAN KR920 band
913
914 * (% style="color:red" %)**US915**(%%): LoRaWAN US915 band
915
916 * (% style="color:red" %)**IN865**(%%): LoRaWAN IN865 band
917
918 * (% style="color:red" %)**CN470**(%%): LoRaWAN CN470 band
919
920 = 8. ​Packing Info =
921
922
923 (% style="color:#037691" %)**Package Includes**:
924
925 * S31x-LB or S31x-LS LoRaWAN Temperature & Humidity Sensor
926
927 (% style="color:#037691" %)**Dimension and weight**:
928
929 * Device Size: cm
930
931 * Device Weight: g
932
933 * Package Size / pcs : cm
934
935 * Weight / pcs : g
936
937 = 9. Support =
938
939
940 * 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.
941
942 * 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]].