Changes for page End Device AT Commands and Downlink Command
Last modified by kai on 2024/09/06 10:00
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,4 +1,4 @@ 1 - **Contents:** 1 + **Table of** **Contents:** 2 2 3 3 {{toc/}} 4 4 ... ... @@ -6,6 +6,7 @@ 6 6 7 7 = 1. Introduction = 8 8 9 + 9 9 Dragino LoRaWAN End Node support two types of AT Commands and Downlink Commands: 10 10 11 11 * **Common Commands:** They should be available for each sensor, such as: change uplink interval, reset device. ... ... @@ -18,6 +18,7 @@ 18 18 19 19 = 2. How to use AT Commands or Downlink command = 20 20 22 + 21 21 * For AT Command , See Devices User Manual for Device. The user manual can be found in each product page of [[Dragino Official Website>>url:http://www.dragino.com/]] 22 22 * For LoRaWAN Downlink: The gateway transfer downlink command in HEX format. This page shows the HEX format downlink code for each command. but some servers use base64 as downlink code. Below are reference for how to use downlink command: 23 23 ** Use HEX format to send a downlink: [[TTN v3>>Notes for TTN]] ... ... @@ -25,8 +25,10 @@ 25 25 ** See use note for more serves [[Servers Note>>doc:Main.WebHome]](IoT LoRaWAN Server) 26 26 27 27 30 + 28 28 = 3. Support End Node and firmware version = 29 29 33 + 30 30 (% border="1" style="background-color:#ffffcc; color:green; width:966px" %) 31 31 |=(% colspan="3" style="width: 963px;" %)((( 32 32 Dragino STM32 base hardware Firmware / LoRaWAN stack list ... ... @@ -99,17 +99,15 @@ 99 99 ))) 100 100 101 101 102 - 103 103 = 4. System Management Commands = 104 104 108 + 105 105 == 4.1 Change Uplink Interval == 106 106 111 + 107 107 Feature: Change LoRaWAN End Node Transmit Interval. 108 108 109 -(% class="box infomessage" %) 110 -((( 111 -**AT Command: AT+TDC** 112 -))) 114 +(% style="color:blue" %)**AT Command: AT+TDC** 113 113 114 114 (% border="1" style="background-color:#ffffcc; color:green; width:727.222px" %) 115 115 |=(% colspan="3" style="width: 724px;" %)AT+TDC ... ... @@ -123,11 +123,11 @@ 123 123 Set transmit interval to 60000ms = 60 seconds 124 124 ))) 125 125 126 -{{info}} 127 -**Downlink Command: 0x01** 128 -{{/info}} 129 - 130 130 ((( 129 + 130 + 131 +(% style="color:blue" %)**Downlink Command: 0x01** 132 + 131 131 Format: Command Code (0x01) followed by 3 bytes time value. 132 132 ))) 133 133 ... ... @@ -142,12 +142,13 @@ 142 142 143 143 == 4.2 Reboot End Node == 144 144 147 + 145 145 Feature: Reboot End Node to perform a new OTAA or ABP Join. 146 146 147 -{{info}} 148 -**AT Command: ATZ** 149 -{{/info}} 150 150 151 +(% style="color:blue" %)**AT Command: ATZ** 152 + 153 + 151 151 (% border="1" style="background-color:#ffffcc; color:green; width:727.222px" %) 152 152 |=(% colspan="3" %)ATZ: Trig a reset of the MCU 153 153 |**Command Example**|**Function**|**Response** ... ... @@ -165,10 +165,9 @@ 165 165 <followed by the Tx and Rx information> 166 166 ))) 167 167 168 -{{info}} 169 -**Downlink Command: 0x04** 170 -{{/info}} 171 171 172 +(% style="color:blue" %)**Downlink Command: 0x04** 173 + 172 172 ((( 173 173 Format: Command Code (0x04) followed by FF. 174 174 ))) ... ... @@ -181,11 +181,10 @@ 181 181 182 182 == 4.3 Reset to factory Default == 183 183 186 + 184 184 Feature: Reset the parameters to Factory Default, factory default value depends on the firmware settings, the OTAA and ABP keys will reserve after this command. 185 185 186 -{{info}} 187 -**AT Command: AT+FDR** 188 -{{/info}} 189 +(% style="color:blue" %)**AT Command: AT+FDR** 189 189 190 190 (% border="1" style="background-color:#ffffcc; color:green; width:831.222px" %) 191 191 |=(% colspan="3" style="width: 828px;" %)Reset to factory default ... ... @@ -204,10 +204,9 @@ 204 204 Please set the parameters or reset Device to apply change 205 205 ))) 206 206 207 -{{info}} 208 -**Downlink Command: 0x04** 209 -{{/info}} 210 210 209 +(% style="color:blue" %)**Downlink Command: 0x04** 210 + 211 211 ((( 212 212 Format: Command Code (0x04) followed by FE. 213 213 ))) ... ... @@ -219,12 +219,13 @@ 219 219 220 220 == 4.4 Show Firmware Version == 221 221 222 + 222 222 Feature: Show firmware version. No downlink command yet. 223 223 224 -{{info}} 225 -**AT Command: AT+VER** 226 -{{/info}} 227 227 226 +(% style="color:blue" %)**AT Command: AT+VER** 227 + 228 + 228 228 (% border="1" style="background-color:#ffffcc; color:green; width:586px" %) 229 229 |=(% colspan="3" style="width: 583px;" %)AT+VER: Image Version and Frequency Band 230 230 |(% style="width:170px" %)**Command Example**|(% style="width:300px" %)**Function**|(% style="width:113px" %)**Response** ... ... @@ -234,10 +234,9 @@ 234 234 OK 235 235 ))) 236 236 237 -{{info}} 238 -**Downlink Command: 0x26 (Valid in 006 stack)** 239 -{{/info}} 240 240 239 +(% style="color:blue" %)**Downlink Command: 0x26 (Valid in 006 stack)** 240 + 241 241 ((( 242 242 Downlink Format: 0x26 243 243 ))) ... ... @@ -247,6 +247,9 @@ 247 247 ))) 248 248 249 249 ((( 250 + 251 + 252 + 250 250 **xx: Software Type:** 251 251 ))) 252 252 ... ... @@ -255,6 +255,9 @@ 255 255 * 0x00 03: LSE01/LDDS75/LDDS20/LSPH01/LLMS01/LSNPK01 256 256 257 257 ((( 261 + 262 + 263 + 258 258 **yy: Frequency Band:** 259 259 ))) 260 260 ... ... @@ -270,6 +270,9 @@ 270 270 * 0xa0: AS923-3 271 271 272 272 ((( 279 + 280 + 281 + 273 273 **zz: Subband** 274 274 ))) 275 275 ... ... @@ -280,10 +280,10 @@ 280 280 281 281 Feature: Show All configure. No downlink command yet. 282 282 283 -{{info}} 284 -**AT Command: AT+CFG** 285 -{{/info}} 286 286 293 +(% style="color:blue" %)**AT Command: AT+CFG** 294 + 295 + 287 287 (% border="1" style="background-color:#ffffcc; color:green; width:599.222px" %) 288 288 |=(% colspan="3" style="width: 596px;" %)AT+CFG: Print all configurations 289 289 |(% style="width:160px" %)**Command Example**|(% style="width:154px" %)**Function**|(% style="width:280px" %)**Response** ... ... @@ -301,8 +301,6 @@ 301 301 OK 302 302 ))) 303 303 304 - 305 - 306 306 = 5. Keys, IDs and EUIs management = 307 307 308 308 == 5.1 Application EUI == ... ... @@ -309,10 +309,10 @@ 309 309 310 310 Feature: Get or Set the Application EUI. 311 311 312 -{{info}} 313 -**AT Command: AT+APPEUI** 314 -{{/info}} 315 315 320 +(% style="color:blue" %)**AT Command: AT+APPEUI** 321 + 322 + 316 316 (% border="1" style="background-color:#ffffcc; color:green; width:686.222px" %) 317 317 |=(% colspan="3" style="width: 683px;" %)AT+APPEUI 318 318 |(% style="width:305px" %)**Command Example**|(% style="width:186px" %)**Function**|(% style="width:191px" %)**Response** ... ... @@ -325,10 +325,10 @@ 325 325 326 326 Feature: Get or Set the Application Key. 327 327 328 -{{info}} 329 -**AT Command: AT+APPKEY** 330 -{{/info}} 331 331 336 +(% style="color:blue" %)**AT Command: AT+APPKEY** 337 + 338 + 332 332 (% border="1" style="background-color:#ffffcc; color:green; width:976.222px" %) 333 333 |=(% colspan="3" style="width: 973px;" %)AT+APPKEY 334 334 |(% style="width:441px" %)**Command Example**|(% style="width:180px" %)**Function**|(% style="width:350px" %)**Response** ... ... @@ -337,15 +337,14 @@ 337 337 ))) 338 338 |(% style="width:441px" %)AT+APPKEY=00 35 55 55 22 23 55 53 43 24 23 42 34 35 35 35|(% style="width:180px" %)Set the Application Key|(% style="width:350px" %)OK 339 339 340 - 341 341 == 5.3 Application Session Key == 342 342 343 343 Feature: Get or Set the Application Session Key. 344 344 345 -{{info}} 346 -**AT Command: AT+APPSKEY** 347 -{{/info}} 348 348 352 +(% style="color:blue" %)**AT Command: AT+APPSKEY** 353 + 354 + 349 349 (% border="1" style="background-color:#ffffcc; color:green; width:1040.22px" %) 350 350 |=(% colspan="3" style="width: 1037px;" %)AT+APPSKEY 351 351 |(% style="width:451px" %)**Command Example**|(% style="width:231px" %)**Function**|(% style="width:354px" %)**Response** ... ... @@ -356,15 +356,14 @@ 356 356 OK 357 357 ))) 358 358 359 - 360 360 == 5.4 Device Address == 361 361 362 362 Feature: Get or Set the Device Address. 363 363 364 -{{info}} 365 -**AT Command: AT+DADDR** 366 -{{/info}} 367 367 370 +(% style="color:blue" %)**AT Command: AT+DADDR** 371 + 372 + 368 368 (% border="1" style="background-color:#ffffcc; color:green; width:795.222px" %) 369 369 |=(% colspan="3" style="width: 792px;" %)AT+DADDR 370 370 |(% style="width:192px" %)**Command Example**|(% style="width:241px" %)**Function**|(% style="width:359px" %)**Response** ... ... @@ -375,15 +375,14 @@ 375 375 ))) 376 376 |(% style="width:192px" %)AT+DADDR=A8 40 41 FF|(% style="width:241px" %)Set the Application Session Key.|(% style="width:359px" %)OK 377 377 378 - 379 379 == 5.5 Device EUI == 380 380 381 381 Feature: Get or Set the Device EUI. 382 382 383 -{{info}} 384 -**AT Command: AT+DEUI** 385 -{{/info}} 386 386 388 +(% style="color:blue" %)**AT Command: AT+DEUI** 389 + 390 + 387 387 (% border="1" style="background-color:#ffffcc; color:green; width:1035.22px" %) 388 388 |=(% colspan="3" style="width: 1032px;" %)AT+DEUI 389 389 |(% style="width:250px" %)**Command Example**|(% style="width:147px" %)**Function**|(% style="width:634px" %)**Response** ... ... @@ -394,15 +394,14 @@ 394 394 OK 395 395 ))) 396 396 397 - 398 398 == 5.6 Network ID == 399 399 400 400 Feature: Get or Set the Network ID.(You can enter this command change only after successful network connection) 401 401 402 -{{info}} 403 -**AT Command: AT+NWKID** 404 -{{/info}} 405 405 406 +(% style="color:blue" %)**AT Command: AT+NWKID** 407 + 408 + 406 406 (% border="1" style="background-color:#ffffcc; color:green; width:448.222px" %) 407 407 |=(% colspan="3" style="width: 445px;" %)AT+NWKID 408 408 |(% style="width:191px" %)**Command Example**|(% style="width:153px" %)**Function**|(% style="width:101px" %)**Response** ... ... @@ -411,15 +411,14 @@ 411 411 ))) 412 412 |(% style="width:191px" %)AT+NWKID=A8 40 41 FF|(% style="width:153px" %)Set the Network ID.|(% style="width:101px" %)OK 413 413 414 - 415 415 == 5.7 Network Session Key == 416 416 417 417 Feature: Get or Set the Network Session Key 418 418 419 -{{info}} 420 -**AT Command: AT+NWKSKEY** 421 -{{/info}} 422 422 422 +(% style="color:blue" %)**AT Command: AT+NWKSKEY** 423 + 424 + 423 423 (% border="1" style="background-color:#ffffcc; color:green; width:1017.22px" %) 424 424 |=(% colspan="3" style="width: 1014px;" %)AT+NWKSKEY 425 425 |(% style="width:455px" %)**Command Example**|(% style="width:215px" %)**Function**|(% style="width:343px" %)**Response** ... ... @@ -428,17 +428,18 @@ 428 428 ))) 429 429 |(% style="width:455px" %)AT+NWKSKEY=A8 40 41 FF FF 12 34 56 00 01 02 04 05 06 06 07|(% style="width:215px" %)Set the Network Session Key.|(% style="width:343px" %)OK 430 430 431 - 432 432 = 6. Joining and sending date on LoRaWAN network = 433 433 434 434 == 6.1 Confirm Mode == 435 435 437 +=== AT+CFM command before DR-LWS007 software stack === 438 + 436 436 Feature: Get or Set the confirmation mode (0-1). 437 437 438 -{{info}} 439 -**AT Command: AT+CFM** 440 -{{/info}} 441 441 442 +(% style="color:blue" %)**AT Command: AT+CFM** 443 + 444 + 442 442 (% border="1" style="background-color:#ffffcc; color:green; width:710.222px" %) 443 443 |=(% colspan="3" style="width: 707px;" %)AT+CFM 444 444 |(% style="width:155px" %)**Command Example**|(% style="width:205px" %)**Function**|(% style="width:346px" %)**Response** ... ... @@ -448,7 +448,7 @@ 448 448 |(% style="width:155px" %)AT+CFM=1|(% style="width:205px" %)Set the confirmation mode|(% style="width:346px" %)OK 449 449 |(% style="width:155px" %)AT+CFM=2|(% style="width:205px" %)Set the confirmation mode|(% style="width:346px" %)While Error in format, return AT_PARAM_ERROR 450 450 451 -Downlink Command: 0x05 454 +(% style="color:blue" %)**Downlink Command: 0x05** 452 452 453 453 Format: Command Code (0x05) followed by 2 bytes mode value. 454 454 ... ... @@ -457,15 +457,61 @@ 457 457 * Example 1: Downlink Payload: 0501 ~/~/ Set AT+CFM=1 458 458 * Example 2: Downlink Payload: 0500 ~/~/ Set AT+CFM=0 459 459 463 +=== AT+CFM command since DR-LWS007 software stack === 460 460 465 + 466 +(% style="color:blue" %)**AT Command: AT+CFM** 467 + 468 + 469 +(% border="1" style="background-color:#ffffcc; color:green; width:710.222px" %) 470 +|=(% colspan="3" style="width: 707px;" %)AT+CFM 471 +|(% style="width:160px" %)**Command Example**|(% style="width:198px" %)**Function**|(% style="width:349px" %)**Response** 472 +|(% style="width:160px" %)((( 473 +AT+CFM=1,0,0 474 + 475 +value1 476 +)))|(% style="width:198px" %)confirmed uplink|(% style="width:349px" %)((( 477 +1 478 + 479 +OK 480 +))) 481 +|(% style="width:160px" %)((( 482 +AT+CFM=0,?,0 483 + 484 +value2 485 +)))|(% style="width:198px" %)set max retry , range: 0 ~~ 7|(% style="width:349px" %)((( 486 +0~~7 487 + 488 +OK 489 +))) 490 +|(% style="width:160px" %)((( 491 +AT+CFM=0,0,1 492 + 493 +value3 494 +)))|(% style="width:198px" %)uplink fcnt increase by 1 for each retry|(% style="width:349px" %)((( 495 +1 496 + 497 +OK 498 +))) 499 + 500 +(% style="color:blue" %)**Downlink Command: 0x05** 501 + 502 + 503 +Format: Command Code (0x05) followed by 2 bytes mode value. 504 + 505 +If the downlink payload=05010101, it means set end node to use confirm mode, while type code is 05. 506 + 507 +* Example 1: Downlink Payload: 05010101 ~/~/ Set AT+CFM=1,1,1 508 +* Example 2: Downlink Payload: 05000700 ~/~/ Set AT+CFM=0,7,0 509 + 461 461 == 6.2 Confirm Status == 462 462 463 463 Feature: Get confirmation status of the last AT+SEND (0-1). 464 464 465 -{{info}} 466 -**AT Command: AT+CFS** 467 -{{/info}} 468 468 515 +(% style="color:blue" %)**AT Command: AT+CFS** 516 + 517 + 469 469 (% border="1" style="background-color:#ffffcc; color:green; width:534.222px" %) 470 470 |=(% colspan="3" style="width: 531px;" %)AT+CFS 471 471 |(% style="width:156px" %)**Command Example**|(% style="width:193px" %)**Function**|(% style="width:178px" %)**Response** ... ... @@ -473,15 +473,14 @@ 473 473 OK 474 474 ))) 475 475 476 - 477 477 == 6.3 Join LoRa® Network == 478 478 479 479 Feature: Join network. 480 480 481 -{{info}} 482 -**AT Command: AT+JOIN** 483 -{{/info}} 484 484 530 +(% style="color:blue" %)**AT Command: AT+JOIN** 531 + 532 + 485 485 (% border="1" style="background-color:#ffffcc; color:green; width:647.222px" %) 486 486 |=(% colspan="3" style="width: 644px;" %)AT+JOIN 487 487 |(% style="width:163px" %)**Command Example**|(% style="width:147px" %)**Function**|(% style="width:334px" %)**Response** ... ... @@ -495,10 +495,10 @@ 495 495 496 496 Feature: Get or Set the Network Join Mode. (0: ABP, 1: OTAA). 497 497 498 -{{info}} 499 -**AT Command: AT+NJM** 500 -{{/info}} 501 501 547 +(% style="color:blue" %)**AT Command: AT+NJM** 548 + 549 + 502 502 (% border="1" style="background-color:#ffffcc; color:green; width:753.222px" %) 503 503 |=(% colspan="3" style="width: 750px;" %)AT+NJM 504 504 |(% style="width:162px" %)**Command Example**|(% style="width:227px" %)**Function**|(% style="width:361px" %)**Response** ... ... @@ -508,15 +508,14 @@ 508 508 |(% style="width:162px" %)AT+NJM=0|(% style="width:227px" %)Set the Network Join Mode|(% style="width:361px" %)OK 509 509 |(% style="width:162px" %)AT+NJM=2|(% style="width:227px" %)Set the Network Join Mode|(% style="width:361px" %)While Error in format, return AT_PARAM_ERROR 510 510 511 -{{info}} 512 -**Downlink Command: 0x20** 513 -{{/info}} 559 +(% style="color:blue" %)**Downlink Command: 0x20** 514 514 561 + 515 515 Format: Command Code (0x20) followed by 1 bytes mode value. 516 516 517 517 If the downlink payload=2000, it means set the Network Join Mode, while type code is 20. 518 518 519 -* **Example 1: **Downlink Payload: **2000** ~/~/ Set AT+NJM= O566 +* **Example 1: **Downlink Payload: **2000** ~/~/ Set AT+NJM=0 520 520 * **Example 2:** Downlink Payload: **2001** ~/~/ Set AT+NJM=1 521 521 522 522 == 6.5 LoRa® Network Join Status == ... ... @@ -523,10 +523,10 @@ 523 523 524 524 Feature: LoRa® Network Join Status. 525 525 526 -{{info}} 527 -**AT Command: AT+NJS** 528 -{{/info}} 529 529 574 +(% style="color:blue" %)**AT Command: AT+NJS** 575 + 576 + 530 530 (% border="1" style="background-color:#ffffcc; color:green; width:498.222px" %) 531 531 |=(% colspan="3" style="width: 495px;" %)AT+NJS 532 532 |(% style="width:169px" %)**Command Example**|(% style="width:164px" %)**Function**|(% style="width:161px" %)**Response** ... ... @@ -538,10 +538,10 @@ 538 538 539 539 Feature: Print Last Received Data in Raw Format<port:data>. 540 540 541 -{{info}} 542 -**AT Command: AT+RECV** 543 -{{/info}} 544 544 589 +(% style="color:blue" %)**AT Command: AT+RECV** 590 + 591 + 545 545 (% border="1" style="background-color:#ffffcc; color:green; width:587.222px" %) 546 546 |=(% colspan="3" style="width: 584px;" %)AT+RECV 547 547 |(% style="width:161px" %)**Command Example**|(% style="width:272px" %)**Function**|(% style="width:150px" %)**Response** ... ... @@ -553,10 +553,10 @@ 553 553 554 554 Feature: Print Last Received Data in Binary Format<port:data>. 555 555 556 -{{info}} 557 -**AT Command: AT+RECVB** 558 -{{/info}} 559 559 604 +(% style="color:blue" %)**AT Command: AT+RECVB** 605 + 606 + 560 560 (% border="1" style="background-color:#ffffcc; color:green; width:793.222px" %) 561 561 |=(% colspan="3" style="width: 790px;" %)AT+RECVB 562 562 |(% style="width:173px" %)**Command Example**|(% style="width:497px" %)**Function**|(% style="width:120px" %)**Response** ... ... @@ -568,10 +568,10 @@ 568 568 569 569 Feature: Send Text Data<port:data>. 570 570 571 -{{info}} 572 -**AT Command: AT+SEND** 573 -{{/info}} 574 574 619 +(% style="color:blue" %)**AT Command: AT+SEND** 620 + 621 + 575 575 (% border="1" style="background-color:#ffffcc; color:green; width:991.222px" %) 576 576 |=(% colspan="3" style="width: 988px;" %)AT+SEND 577 577 |(% style="width:201px" %)**Command Example**|(% style="width:340px" %)**Function**|(% style="width:446px" %)**Response** ... ... @@ -587,10 +587,10 @@ 587 587 588 588 Feature: Send hexadecimal data along with the application port. 589 589 590 -{{info}} 591 -**AT Command: AT+SENDB** 592 -{{/info}} 593 593 638 +(% style="color:blue" %)**AT Command: AT+SENDB** 639 + 640 + 594 594 (% border="1" style="background-color:#ffffcc; color:green; width:1120.22px" %) 595 595 |=(% colspan="3" style="width: 1117px;" %)AT+SENDB 596 596 |(% style="width:257px" %)**Command Example**|(% style="width:406px" %)**Function**|(% style="width:453px" %)**Response** ... ... @@ -607,10 +607,10 @@ 607 607 608 608 Feature: Get or Set the Adaptive Data Rate setting. (0: off, 1: on). 609 609 610 -{{info}} 611 -**AT Command: AT+ADR** 612 -{{/info}} 613 613 658 +(% style="color:blue" %)**AT Command: AT+ADR** 659 + 660 + 614 614 (% border="1" style="background-color:#ffffcc; color:green; width:683.222px" %) 615 615 |=(% colspan="3" style="width: 680px;" %)AT+ADR 616 616 |(% style="width:162px" %)**Command Example**|(% style="width:266px" %)**Function**|(% style="width:250px" %)**Response** ... ... @@ -622,11 +622,10 @@ 622 622 AT_PARAM_ERROR 623 623 ))) 624 624 625 -{{info}} 626 -**Downlink Command: 0x22** 627 -{{/info}} 672 +(% style="color:blue" %)**Downlink Command: 0x22** 628 628 629 629 675 + 630 630 If the downlink payload=2201, it means setting the adaptive data rate to 1, while type code is 22. 631 631 632 632 * **Example 1**: Downlink Payload: **2201** ~/~/ Set AT+ADR=1. ... ... @@ -636,10 +636,10 @@ 636 636 637 637 Feature: Get or Set the Device Class(Currently only support class A, class C). 638 638 639 -{{info}} 640 -**AT Command:AT+CLASS** 641 -{{/info}} 642 642 686 +(% style="color:blue" %)**AT Command:AT+CLASS** 687 + 688 + 643 643 (% border="1" style="background-color:#ffffcc; color:green; width:507.222px" %) 644 644 |=(% colspan="3" style="width: 504px;" %)AT+CLASS 645 645 |(% style="width:163px" %)**Command Example**|(% style="width:166px" %)**Function**|(% style="width:175px" %)**Response** ... ... @@ -654,10 +654,10 @@ 654 654 655 655 Feature: Get or Set the ETSI Duty Cycle setting - 0=disable, 1=enable - Only for testing. 656 656 657 -{{info}} 658 -**AT Command:AT+DCS** 659 -{{/info}} 660 660 704 +(% style="color:blue" %)**AT Command:AT+DCS** 705 + 706 + 661 661 (% border="1" style="background-color:#ffffcc; color:green; width:515.222px" %) 662 662 |=(% colspan="3" style="width: 512px;" %)AT+DCS 663 663 |(% style="width:165px" %)**Command Example**|(% style="width:239px" %)**Function**|(% style="width:107px" %)**Response** ... ... @@ -672,10 +672,10 @@ 672 672 673 673 Feature: Get or Set the Data Rate. (0-7 corresponding to DR_X) . Note: while set Data Rate, please use set Adptive Data Rate, ADR=0 first. otherwise device will response to server's ADR command and change the DR to the setting from server 674 674 675 -{{info}} 676 -**AT Command: AT+DR** 677 -{{/info}} 678 678 722 +(% style="color:blue" %)**AT Command: AT+DR** 723 + 724 + 679 679 (% border="1" style="background-color:#ffffcc; color:green; width:466.222px" %) 680 680 |=(% colspan="3" style="width: 463px;" %)AT+DR 681 681 |(% style="width:156px" %)**Command Example**|(% style="width:167px" %)**Function**|(% style="width:140px" %)**Response** ... ... @@ -686,11 +686,10 @@ 686 686 687 687 ))) 688 688 689 -{{info}} 690 -**Downlink Command: 0x2200aaFF** 691 -{{/info}} 735 +(% style="color:blue" %)**Downlink Command: 0x2200aaFF** 692 692 693 693 738 + 694 694 If the downlink payload=220001FF, it means setting the data rate to 1, while type code is 22 00 aa FF. 695 695 696 696 * **Example 1**: Downlink Payload: **220001FF** ~/~/ Set AT+DR=1. ... ... @@ -700,10 +700,10 @@ 700 700 701 701 Feature: Get or Set the Frame Counter Downlink. 702 702 703 -{{info}} 704 -**AT Command:AT+FCD** 705 -{{/info}} 706 706 749 +(% style="color:blue" %)**AT Command:AT+FCD** 750 + 751 + 707 707 (% border="1" style="background-color:#ffffcc; color:green; width:693.222px" %) 708 708 |=(% colspan="3" style="width: 690px;" %)AT+FCD 709 709 |(% style="width:162px" %)**Command Example**|(% style="width:258px" %)**Function**|(% style="width:269px" %)**Response** ... ... @@ -720,10 +720,10 @@ 720 720 721 721 Feature: Get or Set the Frame Counter Uplink. 722 722 723 -{{info}} 724 -**AT Command:AT+FCU** 725 -{{/info}} 726 726 769 +(% style="color:blue" %)**AT Command:AT+FCU** 770 + 771 + 727 727 (% border="1" style="background-color:#ffffcc; color:green; width:534.222px" %) 728 728 |=(% colspan="3" style="width: 531px;" %)AT+FCU 729 729 |(% style="width:177px" %)**Command Example**|(% style="width:239px" %)**Function**|(% style="width:113px" %)**Response** ... ... @@ -738,10 +738,10 @@ 738 738 739 739 Feature: Get or Set the Join Accept Delay between the end of the Tx and the Join Rx Window 1 in ms. 740 740 741 -{{info}} 742 -**AT Command:AT+JN1DL** 743 -{{/info}} 744 744 787 +(% style="color:blue" %)**AT Command:AT+JN1DL** 788 + 789 + 745 745 (% border="1" style="background-color:#ffffcc; color:green; width:537.222px" %) 746 746 |=(% colspan="3" style="width: 534px;" %)AT+JN1DL 747 747 |(% style="width:164px" %)**Command Example**|(% style="width:229px" %)**Function**|(% style="width:140px" %)**Response** ... ... @@ -756,10 +756,10 @@ 756 756 757 757 Feature: Get or Set the Join Accept Delay between the end of the Tx and the Join Rx Window 2 in ms. 758 758 759 -{{info}} 760 -**AT Command:AT+JN2DL** 761 -{{/info}} 762 762 805 +(% style="color:blue" %)**AT Command:AT+JN2DL** 806 + 807 + 763 763 (% border="1" style="background-color:#ffffcc; color:green; width:538.222px" %) 764 764 |=(% colspan="3" style="width: 535px;" %)AT+JN2DL 765 765 |(% style="width:160px" %)**Command Example**|(% style="width:228px" %)**Function**|(% style="width:146px" %)**Response** ... ... @@ -772,12 +772,14 @@ 772 772 773 773 == 7.9 Public Network Mode == 774 774 775 -Feature: Get or Set the public network mode. (0: off, 1: on) 820 +Feature: Get or Set the public network mode. (0: off, 1: on). A Public LoRaWAN network use 0x34 as syncword. Default Settings; PNM=1 776 776 777 -{{info}} 778 -**AT Command:AT+PNM** 779 -{{/info}} 822 +Notice: If user build their own LoRaWAN server but still use syncword=0x34, this is still considered a public LoRaWAN network 780 780 824 + 825 +(% style="color:blue" %)**AT Command:AT+PNM** 826 + 827 + 781 781 (% border="1" style="background-color:#ffffcc; color:green; width:667.222px" %) 782 782 |=(% colspan="3" style="width: 664px;" %)AT+PNM 783 783 |(% style="width:166px" %)**Command Example**|(% style="width:225px" %)**Function**|(% style="width:272px" %)**Response** ... ... @@ -784,20 +784,25 @@ 784 784 |(% style="width:166px" %)AT+PNM=?|(% style="width:225px" %)Get the public network mode.|(% style="width:272px" %)1((( 785 785 OK 786 786 ))) 787 -|(% style="width:166px" %)AT+PNM=1|(% style="width:225px" %)Set the public network mode.|(% style="width:272px" %)(System will write new value to PNM)((( 834 +|(% style="width:166px" %)AT+PNM=1|(% style="width:225px" %)((( 835 +Set the public network mode. 836 + 837 +Set syncword=0x34 838 +)))|(% style="width:272px" %)(System will write new value to PNM)((( 788 788 OK 789 789 790 790 791 791 ))) 843 +|(% style="width:166px" %)AT+PNM=0|(% style="width:225px" %)Set to use private network autoset syncword=0x12|(% style="width:272px" %) 792 792 793 793 == 7.10 Receive Delay1 == 794 794 795 795 Feature: Get or Set the delay between the end of the Tx and the Rx Window 1 in ms 796 796 797 -{{info}} 798 -**AT Command:AT+RX1DL** 799 -{{/info}} 800 800 850 +(% style="color:blue" %)**AT Command:AT+RX1DL** 851 + 852 + 801 801 (% border="1" style="background-color:#ffffcc; color:green; width:408.222px" %) 802 802 |=(% colspan="3" style="width: 405px;" %)AT+RX1DL 803 803 |(% style="width:155px" %)**Command Example**|(% style="width:128px" %)**Function**|(% style="width:122px" %)**Response** ... ... @@ -812,10 +812,10 @@ 812 812 813 813 Feature: Get or Set the delay between the end of the Tx and the Rx Window 2 in ms 814 814 815 -{{info}} 816 -**AT Command:AT+RX2DL** 817 -{{/info}} 818 818 868 +(% style="color:blue" %)**AT Command:AT+RX2DL** 869 + 870 + 819 819 (% border="1" style="background-color:#ffffcc; color:green; width:481.222px" %) 820 820 |=(% colspan="3" style="width: 478px;" %)AT+RX2DL 821 821 |(% style="width:175px" %)**Command Example**|(% style="width:152px" %)**Function**|(% style="width:150px" %)**Response** ... ... @@ -830,10 +830,10 @@ 830 830 831 831 Feature: Get or Set the Rx2 window data rate (0-7 corresponding to DR_X) 832 832 833 -{{info}} 834 -**AT Command:AT+RX2DR** 835 -{{/info}} 836 836 886 +(% style="color:blue" %)**AT Command:AT+RX2DR** 887 + 888 + 837 837 (% border="1" style="background-color:#ffffcc; color:green; width:525.222px" %) 838 838 |=(% colspan="3" style="width: 522px;" %)AT+RX2DR 839 839 |(% style="width:160px" %)**Command Example**|(% style="width:232px" %)**Function**|(% style="width:130px" %)**Response** ... ... @@ -848,10 +848,10 @@ 848 848 849 849 Feature: Get or Set the Rx2 window frequency 850 850 851 -{{info}} 852 -**AT Command:AT+RX2FQ** 853 -{{/info}} 854 854 904 +(% style="color:blue" %)**AT Command:AT+RX2FQ** 905 + 906 + 855 855 (% border="1" style="background-color:#ffffcc; color:green; width:587.222px" %) 856 856 |=(% colspan="3" style="width: 584px;" %)AT+RX2FQ 857 857 |(% style="width:183px" %)**Command Example**|(% style="width:240px" %)**Function**|(% style="width:160px" %)**Response** ... ... @@ -866,10 +866,10 @@ 866 866 867 867 Feature: Get or Set the Transmit Power(0-5, MAX:0, MIN:5, according to LoRaWAN Spec, or 40=10dB, 41 = 11dB, …, 50 = 20dB which is out of LoRaWAN spec. ) 868 868 869 -{{info}} 870 -**AT Command:AT+TXP** 871 -{{/info}} 872 872 922 +(% style="color:blue" %)**AT Command:AT+TXP** 923 + 924 + 873 873 (% border="1" style="background-color:#ffffcc; color:green; width:465.222px" %) 874 874 |=(% colspan="3" style="width: 462px;" %)AT+TXP 875 875 |(% style="width:161px" %)**Command Example**|(% style="width:189px" %)**Function**|(% style="width:112px" %)**Response** ... ... @@ -891,10 +891,10 @@ 891 891 892 892 Feature: Get or Set the Rx2 window frequency 893 893 894 -{{info}} 895 -**AT Command:AT+RSSI** 896 -{{/info}} 897 897 947 +(% style="color:blue" %)**AT Command:AT+RSSI** 948 + 949 + 898 898 (% border="1" style="background-color:#ffffcc; color:green; width:557.222px" %) 899 899 |=(% colspan="3" style="width: 554px;" %)AT+RSSI 900 900 |(% style="width:164px" %)**Command Example**|(% style="width:289px" %)**Function**|(% style="width:100px" %)**Response** ... ... @@ -906,10 +906,10 @@ 906 906 907 907 Feature: Get the SNR of the last received packet 908 908 909 -{{info}} 910 -**AT Command:AT+SNR** 911 -{{/info}} 912 912 962 +(% style="color:blue" %)**AT Command:AT+SNR** 963 + 964 + 913 913 (% border="1" style="background-color:#ffffcc; color:green; width:571.222px" %) 914 914 |=(% colspan="3" style="width: 568px;" %)AT+SNR 915 915 |(% style="width:164px" %)**Command Example**|(% style="width:290px" %)**Function**|(% style="width:113px" %)**Response** ... ... @@ -921,10 +921,10 @@ 921 921 922 922 Feature: Get or set the application port. 923 923 924 -{{info}} 925 -**AT Command: AT+PORT** 926 -{{/info}} 927 927 977 +(% style="color:blue" %)**AT Command: AT+PORT** 978 + 979 + 928 928 (% border="1" style="background-color:#ffffcc; color:green; width:500.222px" %) 929 929 |=(% colspan="3" style="width: 497px;" %)AT+PORT 930 930 |(% style="width:157px" %)**Command Example**|(% style="width:204px" %)**Function**|(% style="width:135px" %)**Response** ... ... @@ -933,10 +933,9 @@ 933 933 ))) 934 934 |(% style="width:157px" %)AT+PORT=21|(% style="width:204px" %)Set the application port|(% style="width:135px" %)OK 935 935 936 -{{info}} 937 -**Downlink Command: 0x23** 938 -{{/info}} 988 +(% style="color:blue" %)**Downlink Command: 0x23** 939 939 990 + 940 940 Format: Command Code (0x23) followed by 1 bytes port value. 941 941 942 942 If the downlink payload=2301, it means set the application port to 1, while type code is 23. ... ... @@ -948,10 +948,10 @@ 948 948 949 949 Feature:Get or Set Frequency (Unit: Hz) for Single Channel Mode. 950 950 951 -{{info}} 952 -**AT Command: AT+CHS** 953 -{{/info}} 954 954 1003 +(% style="color:blue" %)**AT Command: AT+CHS** 1004 + 1005 + 955 955 (% border="1" style="background-color:#ffffcc; color:green; width:603.222px" %) 956 956 |=(% colspan="3" style="width: 600px;" %)AT+CHS 957 957 |(% style="width:182px" %)**Command Example**|(% style="width:295px" %)**Function**|(% style="width:122px" %)**Response** ... ... @@ -964,10 +964,10 @@ 964 964 965 965 Feature: Get or Set eight channels mode,Only for US915,AU915,CN470. 966 966 967 -{{info}} 968 -**AT Command: AT+CHE** 969 -{{/info}} 970 970 1019 +(% style="color:blue" %)**AT Command: AT+CHE** 1020 + 1021 + 971 971 (% border="1" style="background-color:#ffffcc; color:green; width:710.222px" %) 972 972 |=(% colspan="3" style="width: 707px;" %)AT+CHE 973 973 |(% style="width:160px" %)**Command Example**|(% style="width:198px" %)**Function**|(% style="width:349px" %)**Response** ... ... @@ -978,10 +978,9 @@ 978 978 ))) 979 979 |(% style="width:160px" %)AT+CHE=1|(% style="width:198px" %)Set eight channels mode|(% style="width:349px" %)OK 980 980 981 -{{info}} 982 -**Downlink Command: 0x24** 983 -{{/info}} 1032 +(% style="color:blue" %)**Downlink Command: 0x24** 984 984 1034 + 985 985 Format: Command Code (0x24) followed by 1 bytes channel value. 986 986 987 987 If the downlink payload=2401, it means set channel mode to 1, while type code is 24. ... ... @@ -993,10 +993,10 @@ 993 993 994 994 Feature:Get or Set the number of symbols to detect and timeout from RXwindow1(0 to 255). 995 995 996 -{{info}} 997 -**AT Command: AT+RX1WTO** 998 -{{/info}} 999 999 1047 +(% style="color:blue" %)**AT Command: AT+RX1WTO** 1048 + 1049 + 1000 1000 (% border="1" style="background-color:#ffffcc; color:green; width:460.222px" %) 1001 1001 |=(% colspan="3" style="width: 457px;" %)AT+ RX1WTO 1002 1002 |(% style="width:163px" %)**Command Example**|(% style="width:201px" %)**Function**|(% style="width:93px" %)**Response** ... ... @@ -1021,10 +1021,10 @@ 1021 1021 1022 1022 Feature:Get or Set the number of symbols to detect and timeout from RXwindow2(0 to 255). 1023 1023 1024 -{{info}} 1025 -**AT Command: AT+RX2WTO** 1026 -{{/info}} 1027 1027 1075 +(% style="color:blue" %)**AT Command: AT+RX2WTO** 1076 + 1077 + 1028 1028 (% border="1" style="background-color:#ffffcc; color:green; width:497.222px" %) 1029 1029 |=(% colspan="3" style="width: 494px;" %)AT+ RX2WTO 1030 1030 |(% style="width:190px" %)**Command Example**|(% style="width:199px" %)**Function**|(% style="width:104px" %)**Response** ... ... @@ -1037,10 +1037,10 @@ 1037 1037 1038 1038 Feature: Get or Set uplinkdwelltime 1039 1039 1040 -{{info}} 1041 -**AT Command: AT+DWELLT** 1042 -{{/info}} 1043 1043 1091 +(% style="color:blue" %)**AT Command: AT+DWELLT** 1092 + 1093 + 1044 1044 (% border="1" style="background-color:#ffffcc; color:green; width:497.222px" %) 1045 1045 |=(% colspan="3" style="width: 494px;" %)AT+DWELLT 1046 1046 |(% style="width:183px" %)**Command Example**|(% style="width:179px" %)**Function**|(% style="width:131px" %)**Response** ... ... @@ -1049,10 +1049,9 @@ 1049 1049 ))) 1050 1050 |(% style="width:183px" %)AT+DWELLT=0|(% style="width:179px" %)Set uplinkdwelltime|(% style="width:131px" %)OK 1051 1051 1052 -{{info}} 1053 -**Downlink Command: 0x25** 1054 -{{/info}} 1102 +(% style="color:blue" %)**Downlink Command: 0x25** 1055 1055 1104 + 1056 1056 Format: Command Code (0x25) followed by 1 bytes state value. 1057 1057 1058 1058 If the downlink payload=2501, it means set uplinkdwelltime to 1, while type code is 25. ... ... @@ -1078,10 +1078,9 @@ 1078 1078 * For Class C devices used in ChirpStack, need to set AT+RPL=4 because Chirpstack require immedietely reply message to MAC Command. 1079 1079 * For Class C devices used in TTI, need to set AT+RPL=4 because TTI require immediately reply message to Confirmed Data Down & MAC Command. 1080 1080 1081 -{{info}} 1082 -**AT Command: AT+RPL** 1083 -{{/info}} 1130 +(% style="color:blue" %)**AT Command: AT+RPL** 1084 1084 1132 + 1085 1085 (% border="1" style="background-color:#ffffcc; color:green; width:536.222px" %) 1086 1086 |=(% colspan="3" style="width: 533px;" %)AT+RPL 1087 1087 |(% style="width:160px" %)**Command Example**|(% style="width:263px" %)**Function**|(% style="width:109px" %)**Response** ... ... @@ -1090,10 +1090,9 @@ 1090 1090 ))) 1091 1091 |(% style="width:160px" %)AT+RPL=0|(% style="width:263px" %)Set packet receiving response level|(% style="width:109px" %)OK 1092 1092 1093 -{{info}} 1094 -**Downlink Command: 0x21** 1095 -{{/info}} 1141 +(% style="color:blue" %)**Downlink Command: 0x21** 1096 1096 1143 + 1097 1097 Format: Command Code (0x21) followed by 1 bytes level value. 1098 1098 1099 1099 If the downlink payload=2101, it means set packet receiving response level to 1, while type code is 21. ... ... @@ -1101,6 +1101,126 @@ 1101 1101 * **Example 1**: Downlink Payload: **2101** ~/~/ set packet receiving response level to 1 1102 1102 * **Example 2**: Downlink Payload: **2102** ~/~/ set packet receiving response level to 2 1103 1103 1151 +== 7.24 Controls NBTrans in unconfirmed uplink mode(LWS007 NBTrans:Set retransmission packets) == 1152 + 1153 + 1154 +(% style="color:blue" %)**AT Command: AT+SETMAXNBTRANS ** 1155 + 1156 + 1157 +(% border="1" style="background-color:#ffffcc; color:green; width:536.222px" %) 1158 +|=(% colspan="3" style="width: 533px;" %)AT+**SETMAXNBTRANS** 1159 +|(% style="width:160px" %)**Command Example**|(% style="width:263px" %)**Function**|(% style="width:109px" %)**Response** 1160 +|(% style="width:160px" %)**AT+SETMAXNBTRANS=1,0**|(% style="width:263px" %)Value1: set the maximum NBTrans.|(% style="width:109px" %)1((( 1161 +OK 1162 +))) 1163 +|(% style="width:160px" %)**AT+SETMAXNBTRANS=?,1**|(% style="width:263px" %)value2: 0: uplink fcnt doesn't change for each NBTrans; 1: uplink fcnt increase by 1 for each NBTrans.|(% style="width:109px" %)((( 1164 +1 1165 + 1166 +OK 1167 +))) 1168 + 1169 +(% style="color:blue" %)**Downlink Command: 0x33** 1170 + 1171 + 1172 +Format: Command Code (0x33) followed by 2 bytes mode value. 1173 + 1174 +If the downlink payload=330100, it means set end node to use confirm mode, while type code is 33. 1175 + 1176 +* Example 1: Downlink Payload: 330100 ~/~/ Set AT+SETMAXNBTRANS=1,0 1177 +* Example 2: Downlink Payload: 330201 ~/~/ Set AT+SETMAXNBTRANS=2,1 1178 + 1179 +== 7.25 Device offline rejoining (LWS007) == 1180 + 1181 + 1182 +(% style="color:blue" %)**AT Command: AT+DDETECT** 1183 + 1184 + 1185 +(% border="1" style="background-color:#ffffcc; color:green; width:710.222px" %) 1186 +|=(% colspan="3" style="width: 707px;" %)AT+**DDETECT** 1187 +|(% style="width:160px" %)**Command Example**|(% style="width:198px" %)**Function**|(% style="width:349px" %)**Response** 1188 +|(% style="width:160px" %)((( 1189 +AT+DDETECT=1,1440,2880 1190 + 1191 +value1 1192 +)))|(% style="width:198px" %)Enable online detect|(% style="width:349px" %)((( 1193 +1 1194 + 1195 +OK 1196 +))) 1197 +|(% style="width:160px" %)((( 1198 +AT+DDETECT=1,?,2880 1199 + 1200 +value2 1201 +)))|(% style="width:198px" %)Online detection packet sending time|(% style="width:349px" %)((( 1202 + 1203 + 1204 +OK 1205 +))) 1206 +|(% style="width:160px" %)((( 1207 +AT+DDETECT=1,1440,? 1208 + 1209 +value3 1210 +)))|(% style="width:198px" %)Process rejoin|(% style="width:349px" %)((( 1211 + 1212 + 1213 +OK 1214 +))) 1215 + 1216 +(% style="color:blue" %)**Downlink Command: 0x33** 1217 + 1218 + 1219 +Format: Command Code (0x32) followed by 2 bytes mode value. 1220 + 1221 +If the downlink payload=320105A00B40, it means set end node to use confirm mode, while type code is 33. 1222 + 1223 +* Example 1: Downlink Payload: 320105A00B40 ~/~/ Set AT+DDETECT=1,1440,2880 1224 + 1225 +== 7.26 Request the server to send an ACK == 1226 + 1227 + 1228 +(% style="color:blue" %)**AT Command: AT+PNACKMD** 1229 + 1230 + 1231 +(% border="1" style="background-color:#ffffcc; color:green; width:536.222px" %) 1232 +|=(% colspan="3" style="width: 533px;" %)**AT+PNACKMD** 1233 +|(% style="width:160px" %)**Command Example**|(% style="width:263px" %)**Function**|(% style="width:109px" %)**Response** 1234 +|(% style="width:160px" %)**AT+PNACKMD=1**|(% style="width:263px" %)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:109px" %)1((( 1235 +OK 1236 +))) 1237 +|(% style="width:160px" %)**AT+PNACKMD=0**|(% style="width:263px" %)off request the server to send an ACK|(% style="width:109px" %)((( 1238 +0 1239 + 1240 +OK 1241 +))) 1242 + 1243 +== 7.27 Adjust network rejoining interval == 1244 + 1245 + 1246 +(% style="color:blue" %)**AT Command: AT+RJTDC** 1247 + 1248 + 1249 +(% border="1" style="background-color:#ffffcc; color:green; width:727.222px" %) 1250 +|=(% colspan="3" style="width: 724px;" %)AT+RJTDC 1251 +|(% style="width:165px" %)**Command Example**|(% style="width:227px" %)**Function**|(% style="width:329px" %)**Response** 1252 +|(% style="width:165px" %)AT+RJTDC=?|(% style="width:227px" %)Show the ReJoin data transmission interval in min|(% style="width:329px" %)30000((( 1253 +OK 1254 + 1255 +the interval is 30000ms = 30s 1256 +))) 1257 +|(% style="width:165px" %)AT+RJTDC=60000|(% style="width:227px" %)Set the ReJoin data transmission interval in min|(% style="width:329px" %)OK((( 1258 +Set the ReJoin data transmission interval to 60000ms = 60 seconds 1259 +))) 1260 + 1261 +(% style="color:blue" %)**Downlink Command: 0x26** 1262 + 1263 + 1264 +Format: Command Code (0x26) followed by 2 bytes mode value. 1265 + 1266 +If the downlink payload=26000A, it means set end node to use confirm mode, while type code is 26. 1267 + 1268 +* Example 1: Downlink Payload: 26000A ~/~/ Set AT+RJTDC=10 1269 +* Example 2: Downlink Payload: 260002 ~/~/ Set AT+RJTDC=2 1270 + 1104 1104 = 8. AT Commands Combination = 1105 1105 1106 1106 == 8.1 Set a fix RX2DR for downlink window == ... ... @@ -1110,10 +1110,10 @@ 1110 1110 1111 1111 == 8.2 Use Downlink Command to set a fix uplink DR == 1112 1112 1113 -{{info}} 1114 -**Downlink Command: 0x22000500** 1115 -{{/info}} 1116 1116 1281 +(% style="color:blue" %)**Downlink Command: 0x22000500** 1282 + 1283 + 1117 1117 Same as: 1118 1118 1119 1119 * AT+ADR=0 [[Reference>>||anchor="H7.1AdaptiveDataRate"]]