Version 103.1 by Saxer Lin on 2024/01/17 10:56

Show last authors
1 (% style="text-align:center" %)
2 [[image:image-20231218105249-1.jpeg]]
3
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 AQS01-L LoRaWAN Indoor CO2 Sensor ==
23
24
25 The Dragino AQS01-L is an (% style="color:blue" %)**Indoor LoRaWAN Air Quality Sensor**(%%) for the Internet of Things solution. It is designed to measure the surrounding environment parameters include:(% style="color:blue" %)** CO2, Temperature , Relative Air Humidity and Air pressure**(%%), and then upload to IoT server via LoRaWAN wireless protocol.
26
27 AQS01-L is powered by a (% style="color:blue" %)**ER18505 4000mAh battery**(%%). The battery can last more than 2 years and is easy to change.
28
29 AQS01-L (% style="color:blue" %)**supports BLE configure**(%%) and (% style="color:blue" %)**wireless OTA update**(%%) which make user easy to use.
30
31 AQS01-L supports (% style="color:blue" %)**CO2 Alarm and Temperature Alarm* features**(%%), users can get an alarm for instant notice.
32
33 AQS01-L supports (% style="color:blue" %)**Datalog feature**(%%), User can retrieve the sensor data from LoRaWAN commands.
34
35 (% style="color:red" %)**Note*:**(%%) CO2 Alarm and temperature Alarm will decrease a lot the battery life.
36
37
38 == 1.2 ​Features ==
39
40
41 * LoRaWAN 1.0.3 Class A
42 * Monitor CO2/Temperature/Relative Humidity/Pressure
43 * Support CO2 alarm
44 * Support Datalog Feature
45 * Bands: CN470/EU433/KR920/US915/EU868/AS923/AU915/IN865
46 * Support Bluetooth v5.1 and LoRaWAN remote configure
47 * Support wireless OTA update firmware
48 * Uplink on periodically
49 * Downlink to change configure
50 * 4000mAh batteries powered
51
52 == 1.3 Specification ==
53
54
55 (% style="color:#037691" %)**Common DC Characteristics:**
56
57 * Supply Voltage: built in 4000mAh Li-SOCI2 battery , 2.5v ~~ 3.6v
58 * Operating Temperature: -20 ~~ 65°C
59
60 (% style="color:#037691" %)**CO2 Sensor:**
61
62 * Target gas: Carbon dioxide(CO2)
63 * Operating principle: Non-dispersiveinfrared(NDIR)
64 * Operating range: 0-50°C, 0-85% RH(non-condensing)
65 * Measurement range: 400ppm to 5000 ppm (extended range up to 10000 ppm )
66 * Accuracy: Typ ±(50 ppm +3% of reading)
67 * Pressure Compensation
68
69 (% style="color:#037691" %)**Temperature Sensor:**
70
71 * Range: -20 ~~ 65 °C
72 * Accuracy: Typ ±1.0@ 0-65 °C
73 * Resolution: 0.01°C
74
75 (% style="color:#037691" %)**Humidity Sensor: **
76
77 * Range: 0 ~~ 99.9% RH
78 * Accurancy: ± 3%RH (20 ~~ 80%RH)
79 * Resolution: 0.008% RH
80 * Long term stability: 0.5 %RH/yr
81
82 (% style="color:#037691" %)**Air Pressure: **
83
84 * Range: 300~~1100hPa
85 * Accuracy: ± 1.0 hPa (0-65 °C)
86 * Resolution: 0.18Pa
87 * Long term stability: ±1.0 hPa/yr
88
89 (% style="color:#037691" %)**LoRa Spec:**
90
91 * Frequency Range,  Band 1 (HF): 862 ~~ 1020 Mhz
92 * Max +22 dBm constant RF output vs.
93 * RX sensitivity: down to -139 dBm.
94 * Excellent blocking immunity
95
96 (% style="color:#037691" %)**Battery:**
97
98 * Li/SOCI2 un-chargeable battery
99 * Capacity: 4000mAh
100 * Self-Discharge: <1% / Year @ 25°C
101
102 (% style="color:#037691" %)**Power Consumption**
103
104 * Sleep Mode: 6uA @ 3.3v
105 * LoRa Transmit Mode: 125mA @ 20dBm, 82mA @ 14dBm
106
107 == 1.4 Applications ==
108
109 * Smart Building
110 * Industrial Monitoring and Control
111
112 == 1.5 Sleep mode and working mode ==
113
114
115 (% style="color:blue" %)**Deep Sleep Mode: **(%%)Sensor doesn't have any LoRaWAN activity. This mode is used for storage and shipping to save battery life.
116
117 (% 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.
118
119
120 (% style="color:inherit; font-family:inherit; font-size:26px" %)1.6 BLE connection
121
122
123 AQS01-L supports BLE remote configure.
124
125 BLE can be used to configure the parameter of AQS01-L or see the console output from AQS01-L. BLE will be only activate on below case:
126
127 * Press button to send an uplink.
128 * Press button to active AQS01-L.
129 * Device Power on or reset.
130
131 If there is no activity connection on BLE in 60 seconds, AQS01-L will shut down BLE module to enter low power mode.
132
133
134 = 2. Configure AQS01-L to connect to LoRaWAN network =
135
136 == 2.1 How it works ==
137
138
139 The AQS01-L 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 AQS01-L. It will automatically join the network via OTAA and start to send the sensor value. The default uplink interval is 20 minutes.
140
141
142 == 2.2 ​Quick guide to connect to LoRaWAN server (OTAA) ==
143
144
145 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.
146
147 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.
148
149 [[image:image-20240115091751-1.png||height="383" width="800"]]
150
151 (% style="color:blue" %)**Step 1:**(%%) Create a device in TTN with the OTAA keys from AQS01-L.
152
153 Each AQS01-L is shipped with a sticker with the default device EUI as below:
154
155 [[image:image-20230426084152-1.png||alt="图片-20230426084152-1.png" height="233" width="502"]]
156
157
158 You can input these keys in the LoRaWAN Server portal. Below is TTN screen shot:
159
160
161 (% style="color:blue" %)**Register the device**
162
163 [[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"]]
164
165
166 (% style="color:blue" %)**Add APP EUI and DEV EUI**
167
168 [[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"]]
169
170
171 (% style="color:blue" %)**Add APP EUI in the application**
172
173
174 [[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"]]
175
176
177 (% style="color:blue" %)**Add APP KEY**
178
179 [[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"]]
180
181
182 (% style="color:blue" %)**Step 2:**(%%) Activate on AQS01-L
183
184
185 Press the button for 5 seconds to activate the AQS01-L.
186
187 (% 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.
188
189 After join success, it will start to upload messages to TTN and you can see the messages in the panel.
190
191
192 == 2.3 ​Uplink Payload ==
193
194 === 2.3.1 Device Status, FPORT~=5 ===
195
196
197 Users can use the downlink command(**0x26 01**) to ask AQS01-L to send device configure detail, include device configure status. AQS01-L will uplink a payload via FPort=5 to the server.
198
199 The Payload format is as below.
200
201 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
202 |(% colspan="6" style="background-color:#4f81bd; color:white" %)**Device Status (FPORT=5)**
203 |(% style="width:103px" %)**Size (bytes)**|(% style="width:72px" %)**1**|(% style="width:91px" %)**2**|(% style="width:91px" %)**1**|(% style="width:86px" %)**1**|(% style="width:67px" %)**2**
204 |(% 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
205
206 Example parse in TTNv3
207
208 [[image:image-20240112094511-1.png||height="280" width="1110"]]
209
210
211 (% style="color:#037691" %)**Sensor Model**(%%): For AQS01-L, this value is 0x37
212
213 (% style="color:#037691" %)**Firmware Version**(%%): 0x0100, Means: v1.0.0 version
214
215 (% style="color:#037691" %)**Frequency Band**:
216
217 0x01: EU868
218
219 0x02: US915
220
221 0x03: IN865
222
223 0x04: AU915
224
225 0x05: KZ865
226
227 0x06: RU864
228
229 0x07: AS923
230
231 0x08: AS923-1
232
233 0x09: AS923-2
234
235 0x0a: AS923-3
236
237 0x0b: CN470
238
239 0x0c: EU433
240
241 0x0d: KR920
242
243 0x0e: MA869
244
245
246 (% style="color:#037691" %)**Sub-Band**:
247
248 AU915 and US915:value 0x00 ~~ 0x08
249
250 CN470: value 0x0B ~~ 0x0C
251
252 Other Bands: Always 0x00
253
254
255 (% style="color:#037691" %)**Battery Info**:
256
257 Check the battery voltage.
258
259 Ex1: 0x0B45 = 2885mV
260
261 Ex2: 0x0B49 = 2889mV
262
263
264 === 2.3.2  Sensor Data. FPORT~=2 ===
265
266
267 Sensor Data is uplink via FPORT=2
268
269 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:490px" %)
270 |=(% style="width: 70px;background-color:#4F81BD;color:white" %)(((
271 **Size(bytes)**
272 )))|=(% style="width: 50px;background-color:#4F81BD;color:white" %)2|=(% style="width: 90px;background-color:#4F81BD;color:white" %)2|=(% style="width: 80px;background-color:#4F81BD;color:white" %)2|=(% style="width: 60px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 50px;background-color:#4F81BD;color:white" %)2|=(% style="width: 90px;background-color:#4F81BD;color:white" %)1
273 |(% style="width:99px" %)Value|(% style="width:69px" %)(((
274 Battery
275 )))|(% style="width:130px" %)Temperature|(% style="width:82px" %)(((
276 Humidity
277 )))|(% style="width:87px" %)Pressure|(% style="width:53px" %)(((
278 CO2
279 )))|(% style="width:53px" %)Alarm flag
280
281 **Alarm flag:**
282
283 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:480px" %)
284 |=(% style="width: 70px;background-color:#4F81BD;color:white" %)**Size(bit)**|=(% style="width: 90px;background-color:#4F81BD;color:white" %)**[bit7:bit4]**|=(% style="width: 80px;background-color:#4F81BD;color:white" %)**bit3**|=(% style="width: 80px;background-color:#4F81BD;color:white" %)**bit2**|=(% style="width: 80px;background-color:#4F81BD;color:white" %)**bit1**|=(% style="width: 80px;background-color:#4F81BD;color:white" %)**bit0**
285 |(% style="width:99px" %)Value|(% style="width:107px" %)(((
286 Reserve
287 )))|(% style="width:81px" %)TEMPL_ flag|(% style="width:82px" %)TEMPH_ flag|(% style="width:87px" %)CO2L_ flag|(% style="width:53px" %)CO2H_ flag
288
289 [[image:image-20240112094817-2.png||height="294" width="1148"]]
290
291
292 ==== (% style="color:#4472c4" %)**Battery**(%%) ====
293
294 Sensor Battery Level.
295
296 Ex1: 0x0B45 = 2885mV
297
298 Ex2: 0x0B49 = 2889mV
299
300
301 ==== (% style="color:#4472c4" %)**Temperature**(%%) ====
302
303 **Example**:
304
305 If payload is: 0105H:  (0105 & 8000 == 0), temp = 0105H /10 = 26.1 degree
306
307 If payload is: FF3FH :  (FF3F & 8000 == 1) , temp = (FF3FH - 65536)/10 = -19.3 degrees.
308
309 (FF3F & 8000:Judge whether the highest bit is 1, when the highest bit is 1, it is negative)
310
311
312 ==== (% style="color:#4472c4" %)**Humidity**(%%) ====
313
314 Read:0x(018F)=399  Value:  399 / 10=39.9, So 39.9%
315
316
317 (% style="color:#4472c4" %)**Pressure**
318
319 **Example**:
320
321 If payload is: 279BH, Pressure = 279BH /10 = 1013.9 hPa
322
323
324 ==== (% style="color:#4472c4" %)**CO2**(%%) ====
325
326 **Example**:
327
328 If payload is: 01FDH, CO2 = 01FDH= 509ppm
329
330
331 ==== (% style="color:#4472c4" %)**Alarm flag**(%%) ====
332
333 TEMPH_flag: When it is True, the actual temperature exceeds the set alarm temperature.
334
335 TEMPL_flag: When it is True, the actual temperature lower than the set alarm temperature.
336
337 CO2H_flag: When it is True, the actual CO2 concentration exceeds the set alarm CO2 concentration.
338
339 CO2L_flag: When it is True, the actual CO2 concentration lower than the set alarm CO2 concentration.
340
341 **Example**:
342
343 AT+TEMPALARM=25,60  ~-~-~-~-~-~->  temperature: 23.1, TEMPH_flag: "False", TEMPL_flag: "True"
344
345 AT+CO2ALARM=400,2000  ~-~-~-~-~-~->  co2: 2368, CO2H_flag:"True", CO2L_flag:"False"
346
347
348
349 == 2.4 Payload Decoder file ==
350
351
352 In TTN, user can add a custom payload so it shows friendly reading
353
354 In the page (% style="color:#037691" %)**Applications ~-~-> Payload Formats ~-~-> Custom ~-~-> decoder**(%%) to add the decoder from:
355
356 [[https:~~/~~/github.com/dragino/dragino-end-node-decoder/tree/main>>https://github.com/dragino/dragino-end-node-decoder/tree/main/S31-LB%26S31B-LB]]
357
358
359 == 2.5 Datalog Feature ==
360
361
362 Datalog Feature is to ensure IoT Server can get all sampling data from AQS01-L even if the LoRaWAN network is down. For each sampling, AQS01-L will store the reading for future retrieving purposes.
363
364
365 === 2.5.1 Ways to get datalog via LoRaWAN ===
366
367
368 Set PNACKMD=1, AQS01-L will wait for ACK for every uplink, when there is no LoRaWAN network,AQS01-L 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.
369
370 * (((
371 a) AQS01-L will do an ACK check for data records sending to make sure every data arrive server.
372 )))
373 * (((
374 b) AQS01-L will send data in **CONFIRMED Mode** when PNACKMD=1, but AQS01-L 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 AQS01-L gets a ACK, AQS01-L will consider there is a network connection and resend all NONE-ACK messages.
375
376
377 )))
378
379 === 2.5.2 Unix TimeStamp ===
380
381
382 **AQS01-L uses Unix TimeStamp format based on**
383
384
385 [[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"]]
386
387 User can get this time from link:  [[https:~~/~~/www.epochconverter.com/>>url:https://www.epochconverter.com/]] :
388
389 Below is the converter example
390
391 [[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"]]
392
393
394 So, we can use AT+TIMESTAMP=1611889405 or downlink 3060137afd00 to set the current time 2021 – Jan ~-~- 29 Friday 03:03:25
395
396
397 === 2.5.3 Set Device Time ===
398
399
400 User need to set (% style="color:blue" %)**SYNCMOD=1**(%%) to enable sync time via MAC command.
401
402 Once AQS01-L Joined LoRaWAN network, it will send the MAC command (DeviceTimeReq) and the server will reply with (DeviceTimeAns) to send the current time to AQS01-L. If AQS01-L fails to get the time from the server, AQS01-L will use the internal time and wait for next time request (AT+SYNCTDC to set the time request period, default is 10 days).
403
404 (% 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 and loriot support but TTN 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 v2 if SYNCMOD=1.**
405
406
407 === 2.5.4 Datalog Uplink payload (FPORT~=3) ===
408
409
410 The Datalog uplinks will use below payload format.
411
412 **Retrieval data payload:**
413
414 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:500px" %)
415 |=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
416 **Size(bytes)**
417 )))|=(% 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**
418 |(% style="width:103px" %)Value|(% style="width:68px" %)(((
419 CO2
420 )))|(% style="width:104px" %)(((
421 (((
422 Humidity
423 )))
424
425 (((
426
427 )))
428 )))|(% style="width:87px" %)(((
429 Temperature
430 )))|(% style="width:178px" %)(((
431 Poll message flag
432 )))|(% style="width:137px" %)Unix Time Stamp
433
434 **Poll message flag :**
435
436
437 [[image:image-20240112095124-3.png||height="101" width="483"]]
438
439 **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)
440
441 **Poll Message Flag**: 1: This message is a poll message reply.
442
443 * Poll Message Flag is set to 1.
444
445 * Each data entry is 11 bytes, to save airtime and battery, devices will send max bytes according to the current DR and Frequency bands.
446
447 For example, in US915 band, the max payload for different DR is:
448
449 **a) DR0:** max is 11 bytes so one entry of data
450
451 **b) DR1:** max is 53 bytes so devices will upload 4 entries of data (total 44 bytes)
452
453 **c) DR2:** total payload includes 11 entries of data
454
455 **d) DR3: **total payload includes 22 entries of data.
456
457 If devise doesn't have any data in the polling time. Device will uplink 11 bytes of 0   
458
459 **Example:**
460
461 If AQS01-L has below data inside Flash:
462
463
464 [[image:image-20240112095403-4.png||height="278" width="523"]]
465
466 If user sends below downlink command: 3165A010F865A015E405
467
468 Where : Start time: 65A010F8 = time 24/1/11 16:02:00
469
470 Stop time: 65A015E4 = time 24/1/11 16:23:00
471
472
473 **AQS01-L will uplink this payload.**
474
475 [[image:image-20240112101407-1.png||height="244" width="1092"]]
476
477
478 //**01E401A400F14065A0112E**//01CE01A500F14065A0114F01C401A400F14065A0118A02EC01B300F24065A0138202F001B100F34065A013F4023801AD00F24065A0143302EB01BC00F24065A014D603D701B900F14065A015D3
479
480
481 Where the first 11 bytes is for the first entry: 01 E4 01 A4 00 F1 40 65 A0 11 2E
482
483 * **CO2**=0x01E4=484 ppm
484 * **Hum**=0x01A4/10=42 %
485 * **Temp**=0x00F1/10=24.1 ℃
486 * **poll message flag **=0x40,means reply data,sampling uplink message.
487 * **Unix time** is 0x65A0112E=1704888040s=24/1/11 16:02:54
488
489 (% 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="单击并拖动以调整大小" %)的
490
491 == 2.6 Frequency Plans ==
492
493
494 The AQS01-L 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.
495
496 [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20Frequency%20Band/>>http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20Frequency%20Band/]]
497
498
499 == 2.7 ​Firmware Change Log ==
500
501
502 **Firmware download link: **[[https:~~/~~/www.dropbox.com/scl/fo/o5v6j7qewlks12eso98kl/h?rlkey=v1ian3hmva65924j4h4n0yfz8&dl=0>>https://www.dropbox.com/scl/fo/o5v6j7qewlks12eso98kl/h?rlkey=v1ian3hmva65924j4h4n0yfz8&dl=0]]
503
504
505 = 3. Configure AQS01-L =
506
507 == 3.1 Configure Methods ==
508
509
510 AQS01-L supports below configure method:
511
512 * AT Command via Bluetooth Connection (**Recommended**): [[BLE Configure Instruction>>http://wiki.dragino.com/xwiki/bin/view/Main/BLE%20Bluetooth%20Remote%20Configure/]].
513 * 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]].
514 * LoRaWAN Downlink.  Instruction for different platforms: See [[IoT LoRaWAN Server>>http://wiki.dragino.com/xwiki/bin/view/Main/]] section.
515
516 == 3.2 General Commands ==
517
518
519 These commands are to configure:
520
521 * General system settings like: uplink interval.
522 * LoRaWAN protocol & radio related command.
523
524 They are same for all Dragino Devices which support DLWS-005 LoRaWAN Stack. These commands can be found on the wiki:
525
526 [[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/]]
527
528
529 == 3.3 Commands special design for AQS01-L ==
530
531
532 These commands only valid for AQS01-L, as below:
533
534
535 === 3.3.1 Set Transmit Interval Time ===
536
537
538 Feature: Change LoRaWAN End Node Transmit Interval.
539
540 (% style="color:blue" %)**AT Command: AT+TDC**
541
542 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
543 |=(% 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**
544 |(% style="width:156px" %)AT+TDC=?|(% style="width:137px" %)Show current transmit Interval|(((
545 30000
546 OK
547 the interval is 30000ms = 30s
548 )))
549 |(% style="width:156px" %)AT+TDC=60000|(% style="width:137px" %)Set Transmit Interval|(((
550 OK
551 Set transmit interval to 60000ms = 60 seconds
552 )))
553
554 (% style="color:blue" %)**Downlink Command: 0x01**
555
556 Format: Command Code (0x01) followed by 3 bytes time value.
557
558 If the downlink payload=0100003C, it means set the END Node's Transmit Interval to 0x00003C=60(S), while type code is 01.
559
560 * Example 1: Downlink Payload: 0100001E  ~/~/  Set Transmit Interval (TDC) = 30 seconds
561 * Example 2: Downlink Payload: 0100003C  ~/~/  Set Transmit Interval (TDC) = 60 seconds
562
563 === 3.3.2 Get Device Status ===
564
565
566 Send a LoRaWAN downlink to ask device send Alarm settings.
567
568 (% style="color:blue" %)**Downlink Payload:  **(%%)0x26 01
569
570 Sensor will upload Device Status via FPORT=5. See payload section for detail.
571
572
573 === 3.3.3 Set Temperature Alarm Threshold ===
574
575
576 * (% style="color:blue" %)**AT Command:**
577
578 (% style="color:#037691" %)**AT+TEMPALARM=min,max  (Among them, 100 is an invalid value, which means not set)**
579
580 * When min=100, and max≠100, Alarm higher than max
581 * When min≠100, and max=100, Alarm lower than min
582 * When min≠100 and max≠100, Alarm higher than max or lower than min
583
584 Example:
585
586 AT+TEMPALARM=100,30   ~/~/ Alarm when temperature higher than 30.
587
588 * (% style="color:blue" %)**Downlink Payload:**
589
590 (% style="color:#037691" %)**0x(0C 01 64 1E)**  (%%) ~/~/ Set AT+TEMPALARM=100,30
591
592 (% style="color:red" %)**(note: 3^^rd^^ byte= 0x64 for low limit(not set), 4^^th^^ byte = 0x1E for high limit: 30)**
593
594
595 === 3.3.4 Set CO2 Alarm Threshold ===
596
597
598 * (% style="color:blue" %)**AT Command:**
599
600 (% style="color:#037691" %)**AT+CO2ALARM=min,max  (Among them, 0 is an invalid value, which means not set)**
601
602 * When min=0, and max≠0, Alarm higher than max
603 * When min≠0, and max=0, Alarm lower than min
604 * When min≠0 and max≠0, Alarm higher than max or lower than min
605
606 Example:
607
608 AT+CO2ALARM=400,0  ~/~/ Alarm when humidity lower than 400.
609
610 * (% style="color:blue" %)**Downlink Payload:**
611
612 (% style="color:#037691" %)**0x(0C 02  01 90 00 00)**(%%)  ~/~/ Set AT+CO2ALARM=400,0
613
614 (% style="color:red" %)**(note: 3^^rd^^ byte+4^^rd^^ byte= 0x0190 for low limit (400ppm), 5^^th^^ byte+6^^rd^^ byte = 0x00 for high limit (not set))**
615
616
617 === 3.3.5 Set Alarm Interval ===
618
619
620 The shortest time of two Alarm packet. (unit: min)
621
622 * (% style="color:blue" %)**AT Command:**
623
624 (% style="color:#037691" %)**AT+ATDC=20** (%%) ~/~/ The shortest interval of two Alarm packets is 20 minutes, Means if there is an alarm packet uplink, there won't be another one in the next 20 minutes.
625
626 * (% style="color:blue" %)**Downlink Payload:**
627
628 (% style="color:#037691" %)**0x(0D 14)**(%%)     **~-~--> ** Set AT+ATDC=0x 14 = 20 minutes
629
630
631 === 3.3.6 Set Time Sync Mode ===
632
633
634 Feature: Enable/Disable Sync system time via LoRaWAN MAC Command (DeviceTimeReq), LoRaWAN server must support v1.0.3 protocol to reply to this command.
635
636 SYNCMOD is set to 1 by default. If user wants to set a different time from the LoRaWAN server, the user needs to set this to 0.
637
638 (% style="color:blue" %)**AT Command:**
639
640 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:500px" %)
641 |=(% style="width: 155px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 288px; background-color:#4F81BD;color:white" %)**Function**|=(% style="width: 57px;background-color:#4F81BD;color:white" %)**Response**
642 |(% style="width:155px" %)(((
643 AT+SYNCMOD=1
644 )))|(% style="width:259px" %)(((
645 Enable Sync system time via LoRaWAN MAC Command (DeviceTimeReq) The default is zero time zone.
646 )))|(% style="width:44px" %)(((
647 OK
648 )))
649 |(% style="width:155px" %)(((
650 AT+SYNCMOD=1,8
651 )))|(% style="width:259px" %)(((
652 Enable Sync system time via LoRaWAN MAC Command (DeviceTimeReq) Set to East eight time zone.
653 )))|(% style="width:44px" %)(((
654 OK
655 )))
656 |(% style="width:155px" %)AT+SYNCMOD=1,-12|(% style="width:259px" %)Enable Sync system time via LoRaWAN MAC Command (DeviceTimeReq) Set to West Twelve Time Zone.|(% style="width:44px" %)OK
657
658 (% style="color:blue" %)**Downlink Command:**
659
660 0x28 01 ~/~/ Same As AT+SYNCMOD=1
661
662 0x28 01 08 ~/~/ Same As AT+SYNCMOD=1,8
663
664 0x28 01 F4 ~/~/ Same As AT+SYNCMOD=1,-12
665
666 0x28 00 ~/~/ Same As AT+SYNCMOD=0
667
668
669 === 3.3.7 Request the server to send an ACK ===
670
671
672 (% style="color:blue" %)**AT Command: AT+PNACKMD**
673
674 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
675 |=(% style="width: 160px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 293px; background-color:#4F81BD;color:white" %)**Function**|=(% style="width: 57px;background-color:#4F81BD;color:white" %)**Response**
676 |(% style="width:155px" %)AT+PNACKMD=1|(% style="width:253px" %)If the node uploads the ACK as confirm, it will request the server to send an ACK. If the server ack is not received, the node will upload the packets that have not received the ACK the next time it receives the ACK|(% style="width:100px" %)1(((
677 OK
678 )))
679 |(% style="width:155px" %)AT+PNACKMD=0|(% style="width:253px" %)off request the server to send an ACK|(% style="width:100px" %)(((
680 0
681 OK
682 )))
683
684 (% style="color:blue" %)**Downlink Command: 0x34**
685
686 0X34 01  ~/~/Same As AT+PNACKMD=1
687
688 0x34 00  ~/~/Same As AT+PNACKMD=0
689
690
691 = 4. Battery & Power Consumption =
692
693 == 4.1 Battery Life ==
694
695
696 In a normal 20 minutes uplink situation , the battery life can last from 2 ~~ 8 years depends on signal environment. The Alarm feature will reduce the battery life a lot .
697
698 See below link for detail information about the battery life calculation.
699
700 [[**Battery Info & Power Consumption Analyze**>>http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20calculate%20the%20battery%20life%20of%20Dragino%20sensors%3F/]] .
701
702
703 == 4.2 Replace Battery ==
704
705
706 AQS01-L uses an ER18505 battery. If the battery is running out, User can purchase an ER18505 battery and replace. Make sure don't mess the + & - position.
707
708 [[image:image-20240108140200-1.png||height="503" width="803"]]
709
710
711 = 5. OTA Firmware update =
712
713
714 (% class="wikigeneratedid" %)
715 User can change firmware AQS01-L to:
716
717 * Change Frequency band/ region.
718 * Update with new features.
719 * Fix bugs.
720
721 Firmware and changelog can be downloaded from : **[[Firmware download link>>https://www.dropbox.com/scl/fo/o5v6j7qewlks12eso98kl/h?rlkey=v1ian3hmva65924j4h4n0yfz8&dl=0]]**
722
723
724 Methods to Update Firmware:
725
726 * (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/]]**
727 * Update through UART TTL interface : **[[Instruction>>http://wiki.dragino.com/xwiki/bin/view/Main/UART%20Access%20for%20LoRa%20ST%20v4%20base%20model/#H2.6A0UARTConnectionforAQS01-Lmotherboard]]**.
728
729 = 6. FAQ =
730
731 == 6.1 Do i need to calibrate the CO2 reading of AQS01-L? ==
732
733
734 The Operating principle for CO2 measurement used in AQS01-L is Non-dispersive infrared (NDIR). There is no need Calibration for this method.
735
736
737 = 7. Order Info =
738
739
740 Part Number: (% style="color:blue" %)**AQS01-L-XX**
741
742 (% style="color:red" %)**XX**(%%): The default frequency band
743
744 * (% style="color:red" %)**AS923**(%%): LoRaWAN AS923 band
745
746 * (% style="color:red" %)**AU915**(%%): LoRaWAN AU915 band
747
748 * (% style="color:red" %)**EU433**(%%): LoRaWAN EU433 band
749
750 * (% style="color:red" %)**EU868**(%%): LoRaWAN EU868 band
751
752 * (% style="color:red" %)**KR920**(%%): LoRaWAN KR920 band
753
754 * (% style="color:red" %)**US915**(%%): LoRaWAN US915 band
755
756 * (% style="color:red" %)**IN865**(%%): LoRaWAN IN865 band
757
758 * (% style="color:red" %)**CN470**(%%): LoRaWAN CN470 band
759
760 = 8. ​Packing Info =
761
762
763 (% style="color:#037691" %)**Package Includes**:
764
765 * AQS01-L LoRaWAN Indoor CO2 Sensor
766
767 (% style="color:#037691" %)**Dimension and weight**:
768
769 * Device Size: cm
770
771 * Device Weight: g
772
773 * Package Size / pcs : cm
774
775 * Weight / pcs : g
776
777 = 9. Support =
778
779
780 * 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.
781
782 * 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]].