Version 108.1 by Saxer Lin on 2024/06/07 10:25

Show last authors
1
2
3 (% style="text-align:center" %)
4 [[image:image-20240124134538-1.png||height="365" width="415"]]
5
6
7
8
9
10
11
12 **Table of Contents:**
13
14 {{toc/}}
15
16
17
18
19
20
21 = 1. Introduction =
22
23 == 1.1 What is AQS01-L LoRaWAN Indoor CO2 Sensor ==
24
25
26 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.
27
28 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.
29
30 AQS01-L (% style="color:blue" %)**supports BLE configure**(%%) and (% style="color:blue" %)**wireless OTA update**(%%) which make user easy to use.
31
32 AQS01-L supports (% style="color:blue" %)**CO2 Alarm and Temperature Alarm* features**(%%), users can get an alarm for instant notice.
33
34 AQS01-L supports (% style="color:blue" %)**Datalog feature**(%%), User can retrieve the sensor data from LoRaWAN commands.
35
36 (% style="color:red" %)**Note*:**(%%) CO2 Alarm and temperature Alarm will decrease a lot the battery life.
37
38
39 == 1.2 ​Features ==
40
41
42 * LoRaWAN 1.0.3 Class A
43 * Monitor CO2/Temperature/Relative Humidity/Pressure
44 * Support CO2 alarm
45 * Support Datalog Feature
46 * Bands: CN470/EU433/KR920/US915/EU868/AS923/AU915/IN865
47 * Support Bluetooth v5.1 and LoRaWAN remote configure
48 * Support wireless OTA update firmware
49 * Uplink on periodically
50 * Downlink to change configure
51 * 4000mAh batteries powered
52
53 == 1.3 Specification ==
54
55
56 (% style="color:#037691" %)**Common DC Characteristics:**
57
58 * Supply Voltage: built in 4000mAh Li-SOCI2 battery , 2.5v ~~ 3.6v
59 * Operating Temperature: -20 ~~ 65°C
60
61 (% style="color:#037691" %)**CO2 Sensor:**
62
63 * Sensor: [[Senseair Sunrise Article No. 006-0-0008>>https://senseair.com/product/sunrise/]](% style="color:#037691" %)**    **
64 * Target gas: Carbon dioxide(CO2)
65 * Operating principle: Non-dispersiveinfrared(NDIR)
66 * Operating range: 0-50°C, 0-85% RH(non-condensing)
67 * Measurement range: 400ppm to 5000 ppm (extended range up to 10000 ppm )
68 * Accuracy: Typ ±(30 ppm +3% of reading)
69 * Pressure Compensation
70
71 (% style="color:#037691" %)**Temperature Sensor:**
72
73 * Sensor: [[bme280>>https://senseair.com/product/sunrise/]](% style="color:#037691" %)**     **
74 * Range: -20 ~~ 65 °C
75 * Accuracy: Typ ±1.0@ 0-65 °C
76 * Resolution: 0.01°C
77
78 (% style="color:#037691" %)**Humidity Sensor: **
79
80 * Sensor: [[bme280>>https://senseair.com/product/sunrise/]]
81 * Range: 0 ~~ 99.9% RH
82 * Accurancy: ± 3%RH (20 ~~ 80%RH)
83 * Resolution: 0.008% RH
84 * Long term stability: 0.5 %RH/yr
85
86 (% style="color:#037691" %)**Air Pressure: **
87
88 * Sensor: [[bme280>>https://senseair.com/product/sunrise/]]
89 * Range: 300~~1100hPa
90 * Accuracy: ± 1.0 hPa (0-65 °C)
91 * Resolution: 0.18Pa
92 * Long term stability: ±1.0 hPa/yr
93
94 (% style="color:#037691" %)**LoRa Spec:**
95
96 * Frequency Range,  Band 1 (HF): 862 ~~ 1020 Mhz
97 * Max +22 dBm constant RF output vs.
98 * RX sensitivity: down to -139 dBm.
99 * Excellent blocking immunity
100
101 (% style="color:#037691" %)**Battery:**
102
103 * Li/SOCI2 un-chargeable battery
104 * Capacity: 4000mAh
105 * Self-Discharge: <1% / Year @ 25°C
106
107 (% style="color:#037691" %)**Power Consumption**
108
109 * Sleep Mode: 6uA @ 3.3v
110 * LoRa Transmit Mode: 125mA @ 20dBm, 82mA @ 14dBm
111
112 == 1.4 Applications ==
113
114 * Smart Building
115 * Industrial Monitoring and Control
116
117 == 1.5 Sleep mode and working mode ==
118
119
120 (% 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.
121
122 (% 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.
123
124
125 (% style="color:inherit; font-family:inherit; font-size:26px" %)1.6 BLE connection
126
127
128 AQS01-L supports BLE remote configure.
129
130 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:
131
132 * Press button to send an uplink.
133 * Press button to active AQS01-L.
134 * Device Power on or reset.
135
136 If there is no activity connection on BLE in 60 seconds, AQS01-L will shut down BLE module to enter low power mode.
137
138
139 = 2. Configure AQS01-L to connect to LoRaWAN network =
140
141 == 2.1 How it works ==
142
143
144 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.
145
146
147 == 2.2 ​Quick guide to connect to LoRaWAN server (OTAA) ==
148
149
150 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.
151
152 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.
153
154 [[image:image-20240124150425-1.png||height="378" width="757"]]
155
156 (% style="color:blue" %)**Step 1:**(%%) Create a device in TTN with the OTAA keys from AQS01-L.
157
158 Each AQS01-L is shipped with a sticker with the default device EUI as below:
159
160 [[image:image-20230426084152-1.png||alt="图片-20230426084152-1.png" height="233" width="502"]]
161
162
163 You can input these keys in the LoRaWAN Server portal. Below is TTN screen shot:
164
165
166 (% style="color:blue" %)**Register the device**
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/1654935135620-998.png?rev=1.1||alt="1654935135620-998.png"]]
169
170
171 (% style="color:blue" %)**Add APP EUI and DEV EUI**
172
173 [[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"]]
174
175
176 (% style="color:blue" %)**Add APP EUI in the application**
177
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-5.png?width=742&height=601&rev=1.1||alt="图片-20220611161308-5.png"]]
180
181
182 (% style="color:blue" %)**Add APP KEY**
183
184 [[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"]]
185
186
187 (% style="color:blue" %)**Step 2:**(%%) Activate on AQS01-L
188
189
190 Press the button for 5 seconds to activate the AQS01-L.
191
192 (% 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.
193
194 After join success, it will start to upload messages to TTN and you can see the messages in the panel.
195
196
197 == 2.3 ​Uplink Payload ==
198
199 === 2.3.1 Device Status, FPORT~=5 ===
200
201
202 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.
203
204 The Payload format is as below.
205
206 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
207 |(% colspan="6" style="background-color:#4f81bd; color:white" %)**Device Status (FPORT=5)**
208 |(% 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**
209 |(% 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
210
211 Example parse in TTNv3
212
213 [[image:image-20240112094511-1.png||height="280" width="1110"]]
214
215
216 (% style="color:#037691" %)**Sensor Model**(%%): For AQS01-L, this value is 0x37
217
218 (% style="color:#037691" %)**Firmware Version**(%%): 0x0100, Means: v1.0.0 version
219
220 (% style="color:#037691" %)**Frequency Band**:
221
222 0x01: EU868
223
224 0x02: US915
225
226 0x03: IN865
227
228 0x04: AU915
229
230 0x05: KZ865
231
232 0x06: RU864
233
234 0x07: AS923
235
236 0x08: AS923-1
237
238 0x09: AS923-2
239
240 0x0a: AS923-3
241
242 0x0b: CN470
243
244 0x0c: EU433
245
246 0x0d: KR920
247
248 0x0e: MA869
249
250
251 (% style="color:#037691" %)**Sub-Band**:
252
253 AU915 and US915:value 0x00 ~~ 0x08
254
255 CN470: value 0x0B ~~ 0x0C
256
257 Other Bands: Always 0x00
258
259
260 (% style="color:#037691" %)**Battery Info**:
261
262 Check the battery voltage.
263
264 Ex1: 0x0B45 = 2885mV
265
266 Ex2: 0x0B49 = 2889mV
267
268
269 === 2.3.2  Sensor Data. FPORT~=2 ===
270
271
272 Sensor Data is uplink via FPORT=2
273
274 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:490px" %)
275 |=(% style="width: 70px;background-color:#4F81BD;color:white" %)(((
276 **Size(bytes)**
277 )))|=(% 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
278 |(% style="width:99px" %)Value|(% style="width:69px" %)(((
279 Battery
280 )))|(% style="width:130px" %)Temperature|(% style="width:82px" %)(((
281 Humidity
282 )))|(% style="width:87px" %)Pressure|(% style="width:53px" %)(((
283 CO2
284 )))|(% style="width:53px" %)Alarm flag
285
286 **Alarm flag:**
287
288 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:480px" %)
289 |=(% 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**
290 |(% style="width:99px" %)Value|(% style="width:107px" %)(((
291 Reserve
292 )))|(% style="width:81px" %)TEMPL_ flag|(% style="width:82px" %)TEMPH_ flag|(% style="width:87px" %)CO2L_ flag|(% style="width:53px" %)CO2H_ flag
293
294 [[image:image-20240112094817-2.png||height="294" width="1148"]]
295
296
297 ==== (% style="color:#4472c4" %)**Battery**(%%) ====
298
299 Sensor Battery Level.
300
301 Ex1: 0x0B45 = 2885mV
302
303 Ex2: 0x0B49 = 2889mV
304
305
306 ==== (% style="color:#4472c4" %)**Temperature**(%%) ====
307
308 **Example**:
309
310 If payload is: 0105H:  (0105 & 8000 == 0), temp = 0105H /10 = 26.1 degree
311
312 If payload is: FF3FH :  (FF3F & 8000 == 1) , temp = (FF3FH - 65536)/10 = -19.3 degrees.
313
314 (FF3F & 8000:Judge whether the highest bit is 1, when the highest bit is 1, it is negative)
315
316
317 ==== (% style="color:#4472c4" %)**Humidity**(%%) ====
318
319 Read:0x(018F)=399  Value:  399 / 10=39.9, So 39.9%
320
321
322 (% style="color:#4472c4" %)**Pressure**
323
324 **Example**:
325
326 If payload is: 279BH, Pressure = 279BH /10 = 1013.9 hPa
327
328
329 ==== (% style="color:#4472c4" %)**CO2**(%%) ====
330
331 **Example**:
332
333 If payload is: 01FDH, CO2 = 01FDH= 509ppm
334
335
336 ==== (% style="color:#4472c4" %)**Alarm flag**(%%) ====
337
338 TEMPH_flag: When it is True, the actual temperature exceeds the set alarm temperature.
339
340 TEMPL_flag: When it is True, the actual temperature lower than the set alarm temperature.
341
342 CO2H_flag: When it is True, the actual CO2 concentration exceeds the set alarm CO2 concentration.
343
344 CO2L_flag: When it is True, the actual CO2 concentration lower than the set alarm CO2 concentration.
345
346 **Example**:
347
348 AT+TEMPALARM=25,60  ~-~-~-~-~-~->  temperature: 23.1, TEMPH_flag: "False", TEMPL_flag: "True"
349
350 AT+CO2ALARM=400,2000  ~-~-~-~-~-~->  co2: 2368, CO2H_flag:"True", CO2L_flag:"False"
351
352
353
354 == 2.4 Payload Decoder file ==
355
356
357 In TTN, user can add a custom payload so it shows friendly reading
358
359 In the page (% style="color:#037691" %)**Applications ~-~-> Payload Formats ~-~-> Custom ~-~-> decoder**(%%) to add the decoder from:
360
361 [[https:~~/~~/github.com/dragino/dragino-end-node-decoder/tree/main>>https://github.com/dragino/dragino-end-node-decoder/tree/main/AQS01-L]]
362
363
364 == 2.5 Datalog Feature ==
365
366
367 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.
368
369
370 === 2.5.1 Ways to get datalog via LoRaWAN ===
371
372
373 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.
374
375 * (((
376 a) AQS01-L will do an ACK check for data records sending to make sure every data arrive server.
377 )))
378 * (((
379 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.
380
381
382 )))
383
384 === 2.5.2 Unix TimeStamp ===
385
386
387 **AQS01-L uses Unix TimeStamp format based on**
388
389
390 [[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"]]
391
392 User can get this time from link:  [[https:~~/~~/www.epochconverter.com/>>url:https://www.epochconverter.com/]] :
393
394 Below is the converter example
395
396 [[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"]]
397
398
399 So, we can use AT+TIMESTAMP=1611889405 or downlink 3060137afd00 to set the current time 2021 – Jan ~-~- 29 Friday 03:03:25
400
401
402 === 2.5.3 Set Device Time ===
403
404
405 User need to set (% style="color:blue" %)**SYNCMOD=1**(%%) to enable sync time via MAC command.
406
407 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).
408
409 (% 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.**
410
411
412 === 2.5.4 Datalog Uplink payload (FPORT~=3) ===
413
414
415 The Datalog uplinks will use below payload format.
416
417 **Retrieval data payload:**
418
419 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:500px" %)
420 |=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
421 **Size(bytes)**
422 )))|=(% 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**
423 |(% style="width:103px" %)Value|(% style="width:68px" %)(((
424 CO2
425 )))|(% style="width:104px" %)(((
426 (((
427 Humidity
428 )))
429
430 (((
431
432 )))
433 )))|(% style="width:87px" %)(((
434 Temperature
435 )))|(% style="width:178px" %)(((
436 Poll message flag
437 )))|(% style="width:137px" %)Unix Time Stamp
438
439 **Poll message flag :**
440
441
442 [[image:image-20240112095124-3.png||height="101" width="483"]]
443
444 **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)
445
446 **Poll Message Flag**: 1: This message is a poll message reply.
447
448 * Poll Message Flag is set to 1.
449
450 * Each data entry is 11 bytes, to save airtime and battery, devices will send max bytes according to the current DR and Frequency bands.
451
452 For example, in US915 band, the max payload for different DR is:
453
454 **a) DR0:** max is 11 bytes so one entry of data
455
456 **b) DR1:** max is 53 bytes so devices will upload 4 entries of data (total 44 bytes)
457
458 **c) DR2:** total payload includes 11 entries of data
459
460 **d) DR3: **total payload includes 22 entries of data.
461
462 If devise doesn't have any data in the polling time. Device will uplink 11 bytes of 0   
463
464 **Example:**
465
466 If AQS01-L has below data inside Flash:
467
468
469 [[image:image-20240112095403-4.png||height="278" width="523"]]
470
471 If user sends below downlink command: 3165A010F865A015E405
472
473 Where : Start time: 65A010F8 = time 24/1/11 16:02:00
474
475 Stop time: 65A015E4 = time 24/1/11 16:23:00
476
477
478 **AQS01-L will uplink this payload.**
479
480 [[image:image-20240112101407-1.png||height="244" width="1092"]]
481
482
483 //**01E401A400F14065A0112E**//01CE01A500F14065A0114F01C401A400F14065A0118A02EC01B300F24065A0138202F001B100F34065A013F4023801AD00F24065A0143302EB01BC00F24065A014D603D701B900F14065A015D3
484
485
486 Where the first 11 bytes is for the first entry: 01 E4 01 A4 00 F1 40 65 A0 11 2E
487
488 * **CO2**=0x01E4=484 ppm
489 * **Hum**=0x01A4/10=42 %
490 * **Temp**=0x00F1/10=24.1 ℃
491 * **poll message flag **=0x40,means reply data,sampling uplink message.
492 * **Unix time** is 0x65A0112E=1704888040s=24/1/11 16:02:54
493
494 (% 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="单击并拖动以调整大小" %)的
495
496 == 2.6 Frequency Plans ==
497
498
499 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.
500
501 [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20Frequency%20Band/>>http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20Frequency%20Band/]]
502
503
504 == 2.7 ​Firmware Change Log ==
505
506
507 **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]]
508
509
510 = 3. Configure AQS01-L =
511
512 == 3.1 Configure Methods ==
513
514
515 AQS01-L supports below configure method:
516
517 * AT Command via Bluetooth Connection (**Recommended**): [[BLE Configure Instruction>>http://wiki.dragino.com/xwiki/bin/view/Main/BLE%20Bluetooth%20Remote%20Configure/]].
518 * 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.6A0UARTConnectionforAQS01-Lmotherboard]].
519 * LoRaWAN Downlink.  Instruction for different platforms: See [[IoT LoRaWAN Server>>http://wiki.dragino.com/xwiki/bin/view/Main/]] section.
520
521 == 3.2 General Commands ==
522
523
524 These commands are to configure:
525
526 * General system settings like: uplink interval.
527 * LoRaWAN protocol & radio related command.
528
529 They are same for all Dragino Devices which support DLWS-005 LoRaWAN Stack. These commands can be found on the wiki:
530
531 [[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/]]
532
533
534 == 3.3 Commands special design for AQS01-L ==
535
536
537 These commands only valid for AQS01-L, as below:
538
539
540 === 3.3.1 Set Transmit Interval Time ===
541
542
543 Feature: Change LoRaWAN End Node Transmit Interval.
544
545 (% style="color:blue" %)**AT Command: AT+TDC**
546
547 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
548 |=(% 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**
549 |(% style="width:156px" %)AT+TDC=?|(% style="width:137px" %)Show current transmit Interval|(((
550 30000
551 OK
552 the interval is 30000ms = 30s
553 )))
554 |(% style="width:156px" %)AT+TDC=60000|(% style="width:137px" %)Set Transmit Interval|(((
555 OK
556 Set transmit interval to 60000ms = 60 seconds
557 )))
558
559 (% style="color:blue" %)**Downlink Command: 0x01**
560
561 Format: Command Code (0x01) followed by 3 bytes time value.
562
563 If the downlink payload=0100003C, it means set the END Node's Transmit Interval to 0x00003C=60(S), while type code is 01.
564
565 * Example 1: Downlink Payload: 0100001E  ~/~/  Set Transmit Interval (TDC) = 30 seconds
566 * Example 2: Downlink Payload: 0100003C  ~/~/  Set Transmit Interval (TDC) = 60 seconds
567
568 === 3.3.2 Get Device Status ===
569
570
571 Send a LoRaWAN downlink to ask device send Alarm settings.
572
573 (% style="color:blue" %)**Downlink Payload:  **(%%)0x26 01
574
575 Sensor will upload Device Status via FPORT=5. See payload section for detail.
576
577
578 === 3.3.3 Set Temperature Alarm Threshold ===
579
580
581 * (% style="color:blue" %)**AT Command:**
582
583 (% style="color:#037691" %)**AT+TEMPALARM=min,max  (Among them, 100 is an invalid value, which means not set)**
584
585 * When min=100, and max≠100, Alarm higher than max
586 * When min≠100, and max=100, Alarm lower than min
587 * When min≠100 and max≠100, Alarm higher than max or lower than min
588
589 Example:
590
591 AT+TEMPALARM=100,30   ~/~/ Alarm when temperature higher than 30.
592
593 * (% style="color:blue" %)**Downlink Payload:**
594
595 (% style="color:#037691" %)**0x(0C 01 64 1E)**  (%%) ~/~/ Set AT+TEMPALARM=100,30
596
597 (% style="color:red" %)**(note: 3^^rd^^ byte= 0x64 for low limit(not set), 4^^th^^ byte = 0x1E for high limit: 30)**
598
599
600 === 3.3.4 Set CO2 Alarm Threshold ===
601
602
603 * (% style="color:blue" %)**AT Command:**
604
605 (% style="color:#037691" %)**AT+CO2ALARM=min,max  (Among them, 0 is an invalid value, which means not set)**
606
607 * When min=0, and max≠0, Alarm higher than max
608 * When min≠0, and max=0, Alarm lower than min
609 * When min≠0 and max≠0, Alarm higher than max or lower than min
610
611 Example:
612
613 AT+CO2ALARM=400,0  ~/~/ Alarm when humidity lower than 400.
614
615 * (% style="color:blue" %)**Downlink Payload:**
616
617 (% style="color:#037691" %)**0x(0C 02  01 90 00 00)**(%%)  ~/~/ Set AT+CO2ALARM=400,0
618
619 (% 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))**
620
621
622 === 3.3.5 Set Alarm Interval ===
623
624
625 The shortest time of two Alarm packet. (unit: min)
626
627 * (% style="color:blue" %)**AT Command:**
628
629 (% 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.
630
631 * (% style="color:blue" %)**Downlink Payload:**
632
633 (% style="color:#037691" %)**0x(0D 14)**(%%)     **~-~--> ** Set AT+ATDC=0x 14 = 20 minutes
634
635
636 === 3.3.6 Set Time Sync Mode ===
637
638
639 Feature: Enable/Disable Sync system time via LoRaWAN MAC Command (DeviceTimeReq), LoRaWAN server must support v1.0.3 protocol to reply to this command.
640
641 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.
642
643 (% style="color:blue" %)**AT Command:**
644
645 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:500px" %)
646 |=(% 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**
647 |(% style="width:155px" %)(((
648 AT+SYNCMOD=1
649 )))|(% style="width:259px" %)(((
650 Enable Sync system time via LoRaWAN MAC Command (DeviceTimeReq) The default is zero time zone.
651 )))|(% style="width:44px" %)(((
652 OK
653 )))
654 |(% style="width:155px" %)(((
655 AT+SYNCMOD=1,8
656 )))|(% style="width:259px" %)(((
657 Enable Sync system time via LoRaWAN MAC Command (DeviceTimeReq) Set to East eight time zone.
658 )))|(% style="width:44px" %)(((
659 OK
660 )))
661 |(% 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
662
663 (% style="color:blue" %)**Downlink Command:**
664
665 0x28 01 ~/~/ Same As AT+SYNCMOD=1
666
667 0x28 01 08 ~/~/ Same As AT+SYNCMOD=1,8
668
669 0x28 01 F4 ~/~/ Same As AT+SYNCMOD=1,-12
670
671 0x28 00 ~/~/ Same As AT+SYNCMOD=0
672
673
674 === 3.3.7 Request the server to send an ACK ===
675
676
677 (% style="color:blue" %)**AT Command: AT+PNACKMD**
678
679 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
680 |=(% 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**
681 |(% 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(((
682 OK
683 )))
684 |(% style="width:155px" %)AT+PNACKMD=0|(% style="width:253px" %)off request the server to send an ACK|(% style="width:100px" %)(((
685 0
686 OK
687 )))
688
689 (% style="color:blue" %)**Downlink Command: 0x34**
690
691 0X34 01  ~/~/Same As AT+PNACKMD=1
692
693 0x34 00  ~/~/Same As AT+PNACKMD=0
694
695
696 == 3.4 Calibration command ==
697
698 (% style="color:red" %)**Note: If the device is not calibrated for the first time, there will be a certain degree of drift.**
699
700 After having performed the calibration,all following measurements will use the adjusted calibration parameters.
701
702
703 === 3.4.1 Restore factory Calibration  (AT+CALCMD~=0) ===
704
705 Restores calibration parameters factory calibration values.
706
707 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0F 00
708
709
710 === 3.4.2 Forced ABC Calibration (AT+CALCMD~=1) ===
711
712 Sensor will perform an ABC calibration after receiving this command if sensor has valid ABC data.The command can be used if one for some reason wants to do an ABC adjustment before one ABC period has passed(when a normal ABC calibration is done).
713
714 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0F 01
715
716
717 === 3.4.3 Target Calibration (AT+CALCMD~=2 Equivalent to AT+CALCMD~=2,400) ===
718
719 Target concentration calibration assumes that sensor is put into a target environment with a known CO2 concentration. Such as outdoor fresh air 400ppm.
720
721 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0F 02 ==> AT+CALCMD=2
722
723 0x0F 02 01 90 ==> AT+CALCMD=2,400
724
725 0x0F 02 01 F4 ==> AT+CALCMD=2,500
726
727
728 === 3.4.4 Background Calibration  (AT+CALCMD~=3) ===
729
730 A “fresh air” baseline environment is by default 400 ppm at normal ambient atmospheric pressure by sea level. It can be referenced in a crude way by placing the sensor in direct proximity to outdoor air, free of combustion sources and human presence, preferably during either by open window or fresh air inlets or similar. Calibration gas by exactly 400ppm can be purchased and used. Background calibration and ABC calibration share the same target value (fresh air = 400ppm).
731
732 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0F 03
733
734
735 === 3.4.5 Zero Calibration  (AT+CALCMD~=4) ===
736
737 Zero-calibrations are the most accurate recalibration routine. A zero-ppm environment is most easily created by flushing the optical cell of the sensor module and filling up an encapsulating enclosure with nitrogen gas, N2, displacing all previous air volume concentrations. Another less reliable or accurate zero reference point can be created by scrubbing an airflow using e.g. Soda lime.
738
739 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0F 04
740
741
742 == 3.5 calibration mode ==
743
744 === 3.5.1 Enabled ABC Calibration (AT+CALMOD~=1, default) ===
745
746 The Automatic Baseline Correction algorithm is a proprietary Senseair method for referencing to “fresh air” as the lowest, but required stable, CO2-equivalent internal signal the sensor has measured during a set time period. This time period by default is 180hrs as to catch low-occupancy and other lower-emission time periods and favourable outdoor wind-directions and similar which can plausibly and routinely expose the sensor to the most true fresh air environment. If such an environment can never be expected to occur, either by sensor locality or ever-presence of CO2 emission sources, or exposure to even lower concentrations than the natural fresh air baseline, then ABC recalibration can’t be used. In each new measurement period, the sensor will compare it to the stored one at the ABC parameters registers, and if new values show a lower CO2-equivalent raw signal while also in a stable environment, the reference is updated with these new values. The ABC algorithm also has a limit on how much it is allowed to change the baseline correction offset with, per each ABC cycle, meaning that self-calibrating to adjust to bigger drifts or signal changes may take more than one ABC cycle.
747
748 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0E 01
749
750
751 === 3.5.2 Disabled ABC Calibration (AT+CALMOD~=0) ===
752
753 If the device is in a greenhouse or enclosed environment, it is recommended to turn off ABC calibration. And use Target Calibration for calibration.
754
755 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0E 00
756
757
758 === 3.5.3 Button CO2 calibration function (Equivalent to AT+CALCMD~=3) ===
759
760 The first step is to put your device into sleep mode. Press the button five times quickly and the device will light up solid red for 5 seconds.
761
762 In the second step, take the device outside to an environment without combustion sources and people, let it sit for a few minutes, and then press the button three times quickly. The calibration is complete after the blue light stays on for 5 seconds.
763
764 The last step is to reset the device, press and hold the button until the green light flashes.
765
766
767 = 4. Battery & Power Consumption =
768
769 == 4.1 Battery Life ==
770
771
772 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 .
773
774 See below link for detail information about the battery life calculation.
775
776 [[**Battery Info & Power Consumption Analyze**>>http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20calculate%20the%20battery%20life%20of%20Dragino%20sensors%3F/]] .
777
778
779 == 4.2 Replace Battery ==
780
781
782 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.
783
784 [[image:image-20240108140200-1.png||height="503" width="803"]]
785
786
787 = 5. OTA Firmware update =
788
789
790 (% class="wikigeneratedid" %)
791 User can change firmware AQS01-L to:
792
793 * Change Frequency band/ region.
794 * Update with new features.
795 * Fix bugs.
796
797 Firmware and changelog can be downloaded from : **[[Firmware download link>>https://www.dropbox.com/scl/fo/o5v6j7qewlks12eso98kl/h?rlkey=v1ian3hmva65924j4h4n0yfz8&dl=0]]**
798
799
800 Methods to Update Firmware:
801
802 * (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/]]**
803 * 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]]**.
804
805 = 6. FAQ =
806
807 == 6.1 Do i need to calibrate the CO2 reading of AQS01-L? ==
808
809
810 The Operating principle for CO2 measurement used in AQS01-L is Non-dispersive infrared (NDIR). There is no need Calibration for this method.
811
812
813 = 7. Order Info =
814
815
816 Part Number: (% style="color:blue" %)**AQS01-L-XX**
817
818 (% style="color:red" %)**XX**(%%): The default frequency band
819
820 * (% style="color:red" %)**AS923**(%%): LoRaWAN AS923 band
821
822 * (% style="color:red" %)**AU915**(%%): LoRaWAN AU915 band
823
824 * (% style="color:red" %)**EU433**(%%): LoRaWAN EU433 band
825
826 * (% style="color:red" %)**EU868**(%%): LoRaWAN EU868 band
827
828 * (% style="color:red" %)**KR920**(%%): LoRaWAN KR920 band
829
830 * (% style="color:red" %)**US915**(%%): LoRaWAN US915 band
831
832 * (% style="color:red" %)**IN865**(%%): LoRaWAN IN865 band
833
834 * (% style="color:red" %)**CN470**(%%): LoRaWAN CN470 band
835
836 = 8. ​Packing Info =
837
838
839 (% style="color:#037691" %)**Package Includes**:
840
841 * AQS01-L LoRaWAN Indoor CO2 Sensor
842
843 (% style="color:#037691" %)**Dimension and weight**:
844
845 * Device Size: cm
846
847 * Device Weight: g
848
849 * Package Size / pcs : cm
850
851 * Weight / pcs : g
852
853 = 9. Support =
854
855
856 * 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.
857
858 * 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]].