Last modified by Mengting Qiu on 2025/07/03 15:42

From version 29.1
edited by Xiaoling
on 2023/02/01 09:27
Change comment: Uploaded new attachment "1675214856590-846.png", version {1}
To version 36.1
edited by Xiaoling
on 2023/02/01 09:51
Change comment: Uploaded new attachment "1675216282284-923.png", version {1}

Summary

Details

Page properties
Content
... ... @@ -244,7 +244,7 @@
244 244  User need to configure SDI-12-LB to communicate with SDI-12 sensors otherwise the uplink payload will only include a few bytes.
245 245  
246 246  
247 -=== 2.3.1 ​​​​​​​Basic SDI-12 debug command ===
247 +=== 2.3.1 Basic SDI-12 debug command ===
248 248  
249 249  
250 250  User can run some basic SDI-12 command to debug the connection to the SDI-12 sensor. These commands can be sent via AT Command or LoRaWAN downlink command.
... ... @@ -419,34 +419,38 @@
419 419  [[image:image-20230201092355-16.png]]
420 420  
421 421  
422 -[[image:image-20230201092355-17.png||height="426" width="1135"]]
422 +​​​​​​​[[image:image-20230201092355-17.png||height="426" width="1135"]]
423 423  
424 -1.
425 -11.
426 -111. Convert ASCII to String
427 427  
428 -This command is used to convert between ASCII and String format.
425 +​​​​​​​
429 429  
427 +=== 2.3.3 Convert ASCII to String ===
430 430  
429 +
430 +This command is used to convert between ASCII and String format.
431 +
431 431  AT+CONVFORM ( Max length: 80 bytes)
432 432  
433 -Example:
434 434  
435 -1)AT+CONVFORM=0,string   Convert String from String to ASCII
435 +**Example:**
436 436  
437 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image027.png]]
437 +1) AT+CONVFORM=0, string Convert String from String to ASCII
438 438  
439 +[[image:1675214845056-885.png]]
439 439  
440 -2)AT+CONVFORM=1,ASCII   Convert ASCII to String.
441 441  
442 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image028.png]]
442 +2) AT+CONVFORM=1, ASCII Convert ASCII to String.
443 443  
444 +[[image:1675214856590-846.png]]
444 444  
445 445  
446 -1.
447 -11.
448 -111. Define periodically SDI-12 commands and uplink.
449 449  
448 +
449 +​​​​​​​
450 +
451 +=== 2.3.4 Define periodically SDI-12 commands and uplink. ===
452 +
453 +
450 450  AT+COMMANDx & AT+DATACUTx
451 451  
452 452  User can define max 15 SDI-12 Commands (AT+COMMAND1 ~~ AT+COMMANDF). On each uplink period (TDC time, default 20 minutes), SDI-12-LB will send these SDI-12 commands and wait for return from SDI-12 sensors. SDI-12-LB will then combine these returns and uplink via LoRaWAN.
... ... @@ -456,21 +456,21 @@
456 456  
457 457  **AT+COMMANDx=var1,var2,var3,var4.**
458 458  
459 -var1: SDI-12 command , for example: 0RC0!
463 +**var1**: SDI-12 command , for example: 0RC0!
460 460  
461 -var2: Wait timeout for return. (unit: second)
465 +**var2**: Wait timeout for return. (unit: second)
462 462  
463 -var3: Whether to send //addrD0!// to get return after var2 timeout. 0: Dont Send //addrD0!//; 1: Send //addrD0!//.
467 +**var3**: Whether to send //addrD0!// to get return after var2 timeout. 0: Don't Send //addrD0! //; 1: Send //addrD0!//.
464 464  
465 -var4: validation check for return. If return invalid, SDI-12-LB will resend this command. Max 2 retries.
469 +**var4**: validation check for return. If return invalid, SDI-12-LB will resend this command. Max 2 retries.
466 466  
467 -0  No validation check;
471 +**0 ** No validation check;
468 468  
469 -1  Check if return chars are printable char(0x20 ~~ 0x7E);
473 +**1**  Check if return chars are printable char(0x20 ~~ 0x7E);
470 470  
471 -2  Check if there is return from SDI-12 sensor
475 +**2**  Check if there is return from SDI-12 sensor
472 472  
473 -3  Check if return pass CRC check ( SDI-12 command var1 must include CRC request);
477 +**3**  Check if return pass CRC check ( SDI-12 command var1 must include CRC request);
474 474  
475 475  
476 476  Each AT+COMMANDx is followed by a **AT+DATACUT** command. AT+DATACUT command is used to take the useful string from the SDI-12 sensor so the final payload will have the minimum length to uplink.
... ... @@ -478,23 +478,25 @@
478 478  
479 479  **AT+DATACUTx** : This command defines how to handle the return from AT+COMMANDx, max return length is 100 bytes.
480 480  
481 -|(((
482 -AT+DATACUTx=a,b,c
485 +(% border="1" style="background-color:#f7faff; width:436px" %)
486 +|(% style="width:433px" %)(((
487 +**AT+DATACUTx=a,b,c**
483 483  
484 -a: length for the return of AT+COMMAND
489 +**a**:  length for the return of AT+COMMAND
485 485  
486 -b:1: grab valid value by byte, max 6 bytes. 2: grab valid value by bytes section, max 3 sections.
491 +**b**: 1: grab valid value by byte, max 6 bytes. 2: grab valid value by bytes section, max 3 sections.
487 487  
488 -c: define the position for valid value. 
493 +**c**:  define the position for valid value. 
489 489  )))
490 490  
491 -For example, if return from AT+COMMAND1 is “013METER   TER12 112T12-00024895” ,. Below AT+DATACUT1 will get different result to combine payload:
496 +For example, if return from AT+COMMAND1 is “013METER   TER12 112T12-00024895” , Below AT+DATACUT1 will get different result to combine payload:
492 492  
493 493  
494 -|AT+DATACUT1 value|Final Result to combine Payload
495 -|34,1,1+2+3|0D 00 01 30 31 33
496 -|34,2,1~~8+12~~16|0D 00 01 30 31 33 4D 45 54 45 52 54 45 52 31 32
497 -|34,2,1~~34|0D 00 01 30 31 33 4D 45 54 45 52 20 20 20 54 45 52 31 32 20 31 31 32 54 31 32 2D 30 30 30 32 34 38 39 35 0D 0A
499 +(% border="1" cellspacing="4" style="background-color:#f7faff; width:510px" %)
500 +|(% style="width:170px" %)**AT+DATACUT1 value**|(% style="width:338px" %)**Final Result to combine Payload**
501 +|(% style="width:170px" %)34,1,1+2+3|(% style="width:338px" %)0D 00 01 30 31 33
502 +|(% style="width:170px" %)34,2,1~~8+12~~16|(% style="width:338px" %)0D 00 01 30 31 33 4D 45 54 45 52 54 45 52 31 32
503 +|(% style="width:170px" %)34,2,1~~34|(% style="width:338px" %)0D 00 01 30 31 33 4D 45 54 45 52 20 20 20 54 45 52 31 32 20 31 31 32 54 31 32 2D 30 30 30 32 34 38 39 35 0D 0A
498 498  
499 499  * ** Downlink Payload:**
500 500  
... ... @@ -508,21 +508,18 @@
508 508  
509 509  Where:
510 510  
511 -* MM: the AT+COMMAND or AT+DATACUT to be set. Value from 01 ~~ 0F,
512 -* NN:  1: set the AT+DATACUT value ; 2: set the AT+DATACUT value.
513 -* LL:  The length of AT+COMMAND or AT+DATACUT command
514 -* XX XX XX XX: AT+COMMAND or AT+DATACUT command
515 -* YY:  If YY=0, RS485-LN will execute the downlink command without uplink; if YY=1, RS485-LN will execute an uplink after got this command. 
517 +* **MM **: the AT+COMMAND or AT+DATACUT to be set. Value from 01 ~~ 0F,
518 +* **NN **:  1: set the AT+DATACUT value ; 2: set the AT+DATACUT value.
519 +* **LL **:  The length of AT+COMMAND or AT+DATACUT command
520 +* **XX XX XX XX **: AT+COMMAND or AT+DATACUT command
521 +* **YY **:  If YY=0, RS485-LN will execute the downlink command without uplink; if YY=1, RS485-LN will execute an uplink after got this command. 
516 516  
517 -Example:
518 518  
519 -**AF 03 01 07 30 4D 43 21 01 01 01 00**: Same as AT+COMMAND3=**0MC!**,** 1**,** 1**,** 1**
524 +**Example:**
520 520  
521 -**AF 03 02 010 01 05 06 09 0A 00**: Same as AT+DATACUT3=**16**,**1**,**5+6+9+10**
526 +[[image:image-20230201094129-18.png]]
522 522  
523 -**AF 03 02 06 0B 02 05 07 08 0A 00**: Same as AT+DATACUT3=**11**,**2**,**5~~7+8~~10**
524 524  
525 -
526 526  **Clear SDI12 Command**
527 527  
528 528  The AT+COMMANDx and AT+DATACUTx settings are stored in special location, user can use below command to clear them.
... ... @@ -542,23 +542,22 @@
542 542  
543 543  
544 544  
545 -
546 546  **command combination**
547 547  
548 548  Below shows a screen shot how the results combines together to a uplink payload.
549 549  
550 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image029.png]]
552 +[[image:1675215745275-920.png]]
551 551  
552 552  
553 -If user dont want to use DATACUT for some command, he simply want to uplink all returns. AT+ALLDATAMOD can be set to 1.
555 +If user don't want to use DATACUT for some command, he simply want to uplink all returns. AT+ALLDATAMOD can be set to 1.
554 554  
555 555  **AT+ALLDATAMOD** will simply get all return and don’t do CRC check as result for SDI-12 command. AT+DATACUTx command has higher priority, if AT+DATACUTx has been set, AT+ALLDATAMOD will be ignore for this SDI-12 command.
556 556  
557 557  
558 -For example: as below photo, AT+ALLDATAMOD=1, but AT+DATACUT1 has been set, AT+DATACUT1 will be still effect the result.
560 +**For example: ** as below photo, AT+ALLDATAMOD=1, but AT+DATACUT1 has been set, AT+DATACUT1 will be still effect the result.
559 559  
560 560  
561 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image030.png]]
563 +[[image:1675215782925-448.png]]
562 562  
563 563  
564 564  If AT+ALLDATAMOD=1, **FX,X** will be added in the payload, FX specify which command is used and X specify the length of return. for example in above screen, F1 05 means the return is from AT+COMMAND1 and the return is 5 bytes.
... ... @@ -576,7 +576,7 @@
576 576  Where PAYVER is defined by AT+PAYVER, below is an example screen shot.
577 577  
578 578  
579 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image031.png]]
581 +[[image:1675215828102-844.png]]
580 580  
581 581  
582 582  **AT+DATAUP=1**
... ... @@ -585,7 +585,7 @@
585 585  
586 586  Final Payload is
587 587  
588 -**Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA**
590 +__**Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA**__
589 589  
590 590  1. Battery Info (2 bytes): Battery voltage
591 591  1. PAYVER (1 byte): Defined by AT+PAYVER
... ... @@ -593,26 +593,24 @@
593 593  1. PAYLOAD# (1 byte): Number of this uplink. (from 0,1,2,3…,to PAYLOAD COUNT)
594 594  1. DATA: Valid value: max 6 bytes(US915 version here, Notice*!) for each uplink so each uplink <= 11 bytes. For the last uplink, DATA will might less than 6 bytes
595 595  
596 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image032.png]]
598 +[[image:1675215848113-696.png]]
597 597  
598 598  
599 599  **Notice: the Max bytes is according to the max support bytes in different Frequency Bands for lowest SF. As below:**
600 600  
601 - ~* For AU915/AS923 bands, if UplinkDwell time=0, max 51 bytes for each uplink ( so 51 -5 = 46 max valid date)
603 +* For AU915/AS923 bands, if UplinkDwell time=0, max 51 bytes for each uplink ( so 51 -5 = 46 max valid date)
604 +* For AU915/AS923 bands, if UplinkDwell time=1, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date).
605 +* For US915 band, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date).
606 +* For all other bands: max 51 bytes for each uplink  ( so 51 -5 = 46 max valid date).
602 602  
603 - * For AU915/AS923 bands, if UplinkDwell time=1, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date).
608 +**~ When AT+DATAUP=1, the maximum number of segments is 15, and the maximum total number of bytes is 1500;**
604 604  
605 - * For US915 band, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date).
610 +**~ When AT+DATAUP=1 and AT+ADR=0, the maximum number of bytes of each payload is determined by the DR value.**
606 606  
607 - ~* For all other bands: max 51 bytes for each uplink  ( so 51 -5 = 46 max valid date).
608 608  
609 - *** When AT+DATAUP=1, the maximum number of segments is 15, and the maximum total number of bytes is 1500;**
613 +== ​​​​​​​2.4 Uplink Payload ==
610 610  
611 -**~ When AT+DATAUP=1 and AT+ADR=0, the maximum number of bytes of each payload is determined by the DR value.**
612 612  
613 -1.
614 -11. Uplink Payload
615 -
616 616  Uplink payloads have two types:
617 617  
618 618  * Distance Value: Use FPORT=2
... ... @@ -621,9 +621,7 @@
621 621  The application server should parse the correct value based on FPORT settings.
622 622  
623 623  
624 -1.
625 -11.
626 -111. Device Payload, FPORT=5
624 +2.4.1 Device Payload, FPORT=5
627 627  
628 628  Include device configure status. Once SDI-12-LB Joined the network, it will uplink this message to the server.
629 629  
... ... @@ -631,13 +631,14 @@
631 631  Users can also use the downlink command(0x26 01) to ask SDI-12-LB to resend this uplink.
632 632  
633 633  
634 -|(% colspan="6" %)**Device Status (FPORT=5)**
635 -|**Size (bytes)**|**1**|**2**|**1**|**1**|**2**
636 -|**Value**|Sensor Model|Firmware Version|Frequency Band|Sub-band|BAT
632 +(% border="1" cellspacing="4" style="background-color:#f7faff; width:437px" %)
633 +|(% colspan="6" style="width:434px" %)**Device Status (FPORT=5)**
634 +|(% style="width:102px" %)**Size (bytes)**|(% style="width:67px" %)**1**|(% style="width:80px" %)**2**|(% style="width:89px" %)**1**|(% style="width:52px" %)**1**|(% style="width:44px" %)**2**
635 +|(% style="width:102px" %)**Value**|(% style="width:67px" %)Sensor Model|(% style="width:80px" %)Firmware Version|(% style="width:89px" %)Frequency Band|(% style="width:52px" %)Sub-band|(% style="width:44px" %)BAT
637 637  
638 638  Example parse in TTNv3
639 639  
640 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image033.png]]
639 +[[image:1675215946738-635.png]]
641 641  
642 642  **Sensor Model**: For SDI-12-LB, this value is 0x17
643 643  
1675215745275-920.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +187.6 KB
Content
1675215782925-448.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +142.5 KB
Content
1675215828102-844.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +231.3 KB
Content
1675215848113-696.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +50.5 KB
Content
1675215946738-635.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +38.4 KB
Content
1675216282284-923.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +47.0 KB
Content
image-20230201094129-18.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +12.8 KB
Content