Last modified by Xiaoling on 2025/04/23 15:57

From version 40.52
edited by Xiaoling
on 2022/06/06 10:50
Change comment: There is no comment for this version
To version 41.3
edited by Xiaoling
on 2022/06/06 10:54
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -382,6 +382,8 @@
382 382  )))
383 383  )))
384 384  
385 +
386 +
385 385  === 3.3.2 Configure sensors ===
386 386  
387 387  (((
... ... @@ -472,117 +472,209 @@
472 472  After we got the valid value from each RS485 commands, we need to combine them together with the command **AT+DATAUP**.
473 473  )))
474 474  
477 +(((
475 475  **Examples:**
479 +)))
476 476  
481 +(((
477 477  Below are examples for the how above AT Commands works.
483 +)))
478 478  
485 +(((
479 479  **AT+COMMANDx : **This command will be sent to RS485/TTL devices during each sampling, Max command length is 14 bytes. The grammar is:
487 +)))
480 480  
481 481  (% border="1" class="table-bordered" style="background-color:#4f81bd; color:white; width:500px" %)
482 482  |(% style="width:498px" %)(((
491 +(((
483 483  **AT+COMMANDx=xx xx xx xx xx xx xx xx xx xx xx xx,m**
493 +)))
484 484  
495 +(((
485 485  **xx xx xx xx xx xx xx xx xx xx xx xx: The RS485 command to be sent**
497 +)))
486 486  
499 +(((
487 487  **m: 0: no CRC, 1: add CRC-16/MODBUS in the end of this command**
488 488  )))
502 +)))
489 489  
504 +(((
490 490  For example, if we have a RS485 sensor. The command to get sensor value is: 01 03 0B B8 00 02 46 0A. Where 01 03 0B B8 00 02 is the Modbus command to read the register 0B B8 where stored the sensor value. The 46 0A is the CRC-16/MODBUS which calculate manually.
506 +)))
491 491  
508 +(((
492 492  In the RS485-BL, we should use this command AT+COMMAND1=01 03 0B B8 00 02,1 for the same.
510 +)))
493 493  
512 +(((
494 494  **AT+SEARCHx**: This command defines how to handle the return from AT+COMMANDx.
514 +)))
495 495  
496 496  (% border="1" class="table-bordered" style="background-color:#4f81bd; color:white; width:500px" %)
497 497  |(% style="width:577px" %)(((
518 +(((
498 498  **AT+SEARCHx=aa,xx xx xx xx xx**
520 +)))
499 499  
500 -* **aa: 1: prefix match mode; 2: prefix and suffix match mode**
501 -* **xx xx xx xx xx: match string. Max 5 bytes for prefix and 5 bytes for suffix**
522 +* (((
523 +**aa: 1: prefix match mode; 2: prefix and suffix match mode**
502 502  )))
525 +* (((
526 +**xx xx xx xx xx: match string. Max 5 bytes for prefix and 5 bytes for suffix**
527 +)))
528 +)))
503 503  
530 +(((
504 504  **Examples:**
532 +)))
505 505  
534 +(((
506 506  1)For a return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
536 +)))
507 507  
538 +(((
508 508  If we set AT+SEARCH1=1,1E 56 34.      (max 5 bytes for prefix)
540 +)))
509 509  
542 +(((
510 510  The valid data will be all bytes after 1E 56 34 , so it is (% style="background-color:yellow" %)**2e 30 58 5f 36 41 30 31 00 49**
544 +)))
511 511  
546 +(((
512 512  [[image:1653271044481-711.png]]
548 +)))
513 513  
550 +(((
514 514  2)For a return string from AT+COMMAND1:  16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
552 +)))
515 515  
554 +(((
516 516  If we set AT+SEARCH1=2, 1E 56 34+31 00 49
556 +)))
517 517  
558 +(((
518 518  Device will search the bytes between 1E 56 34 and 31 00 49. So it is(% style="background-color:yellow" %) **2e 30 58 5f 36 41 30**
560 +)))
519 519  
562 +(((
520 520  [[image:1653271276735-972.png]]
564 +)))
521 521  
566 +(((
522 522  **AT+DATACUTx : **This command defines how to handle the return from AT+COMMANDx, max return length is 45 bytes.
568 +)))
523 523  
524 524  (% style="background-color:#4f81bd; color:white; width:510px" %)
525 525  |(% style="width:726px" %)(((
572 +(((
526 526  **AT+DATACUTx=a,b,c**
574 +)))
527 527  
528 -* **a: length for the return of AT+COMMAND**
529 -* **b:1: grab valid value by byte, max 6 bytes. 2: grab valid value by bytes section, max 3 sections.**
530 -* **c: define the position for valid value.  **
576 +* (((
577 +**a: length for the return of AT+COMMAND**
531 531  )))
579 +* (((
580 +**b:1: grab valid value by byte, max 6 bytes. 2: grab valid value by bytes section, max 3 sections.**
581 +)))
582 +* (((
583 +**c: define the position for valid value.  **
584 +)))
585 +)))
532 532  
587 +(((
533 533  **Examples:**
589 +)))
534 534  
535 -* Grab bytes:
591 +* (((
592 +Grab bytes:
593 +)))
536 536  
595 +(((
537 537  [[image:1653271581490-837.png||height="313" width="722"]]
597 +)))
538 538  
599 +(((
600 +
601 +)))
539 539  
540 -* Grab a section.
603 +* (((
604 +Grab a section.
605 +)))
541 541  
607 +(((
542 542  [[image:1653271648378-342.png||height="326" width="720"]]
609 +)))
543 543  
611 +(((
612 +
613 +)))
544 544  
545 -* Grab different sections.
615 +* (((
616 +Grab different sections.
617 +)))
546 546  
619 +(((
547 547  [[image:1653271657255-576.png||height="305" width="730"]]
621 +)))
548 548  
549 549  (((
624 +(((
550 550  (% style="color:red" %)**Note:**
551 551  )))
627 +)))
552 552  
553 553  (((
630 +(((
554 554  AT+SEARCHx and AT+DATACUTx can be used together, if both commands are set, RS485-BL will first process AT+SEARCHx on the return string and get a temporary string, and then process AT+DATACUTx on this temporary string to get the final payload. In this case, AT+DATACUTx need to set to format AT+DATACUTx=0,xx,xx where the return bytes set to 0.
555 555  )))
633 +)))
556 556  
557 557  (((
636 +(((
558 558  **Example:**
559 559  )))
639 +)))
560 560  
561 561  (((
642 +(((
562 562  (% style="color:red" %)AT+COMMAND1=11 01 1E D0,0
563 563  )))
645 +)))
564 564  
565 565  (((
648 +(((
566 566  (% style="color:red" %)AT+SEARCH1=1,1E 56 34
567 567  )))
651 +)))
568 568  
569 569  (((
654 +(((
570 570  (% style="color:red" %)AT+DATACUT1=0,2,1~~5
571 571  )))
657 +)))
572 572  
573 573  (((
660 +(((
574 574  (% style="color:red" %)Return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
575 575  )))
663 +)))
576 576  
577 577  (((
666 +(((
578 578  (% style="color:red" %)String after SEARCH command: 2e 30 58 5f 36 41 30 31 00 49
579 579  )))
669 +)))
580 580  
581 581  (((
672 +(((
582 582  (% style="color:red" %)Valid payload after DataCUT command: 2e 30 58 5f 36
583 583  )))
675 +)))
584 584  
677 +(((
585 585  [[image:1653271763403-806.png]]
679 +)))
586 586  
587 587  
588 588  === 3.3.4 Compose the uplink payload ===
... ... @@ -729,26 +729,8 @@
729 729  
730 730  == 3.4 Uplink Payload ==
731 731  
732 -(% border="1" style="background-color:#4f81bd; color:white; width:850px" %)
733 -|**Size(bytes)**|(% style="width:130px" %)**2**|(% style="width:93px" %)**1**|(% style="width:509px" %)**Length depends on the return from the commands**
734 -|Value|(% style="width:130px" %)(((
735 -(((
736 -Battery(mV)
737 -)))
826 +[[image:image-20220606105412-1.png]]
738 738  
739 -(((
740 -&
741 -)))
742 -
743 -(((
744 -Interrupt _Flag
745 -)))
746 -)))|(% style="width:93px" %)(((
747 -PAYLOAD_VER
748 -
749 -
750 -)))|(% style="width:509px" %)If the valid payload is too long and exceed the maximum support payload length in server, server will show payload not provided in the LoRaWAN server.
751 -
752 752  Below is the decoder for the first 3 bytes. The rest bytes are dynamic depends on different RS485 sensors.
753 753  
754 754  (((
image-20220606105412-1.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +13.9 KB
Content