Changes for page SDI-12-LB/LS -- SDI-12 to LoRaWAN Converter User Manual
Last modified by Mengting Qiu on 2025/07/03 15:42
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Attachments (0 modified, 0 added, 9 removed)
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. ... ... @@ -275,6 +275,7 @@ 275 275 The following is the display information on the serial port and the server. 276 276 277 277 278 + 278 278 [[image:image-20230201091257-8.png]] 279 279 280 280 ... ... @@ -281,54 +281,50 @@ 281 281 [[image:image-20230201091257-9.png||height="225" width="1242"]] 282 282 283 283 284 - ==== **aM!,aMC!, aM1!- aM9!, aMC1!- aMC9!** ====285 +aM!,aMC!, aM1!- aM9!, aMC1!- aMC9! 285 285 287 +aM!: Start Non-Concurrent Measurement 286 286 287 - **aM!**: Start Non-Concurrent Measurement289 +aMC!: Start Non-Concurrent Measurement – Request CRC 288 288 289 - **aMC!**:Start Non-ConcurrentMeasurement– Request CRC291 +aM1!- aM9!: Additional Measurements 290 290 291 - **aM1!- aM9!**: Additional Measurements293 +aMC1!- aMC9!: Additional Measurements – Request CRC 292 292 293 -**aMC1!- aMC9!** : Additional Measurements – Request CRC 294 294 295 - 296 296 * AT Command : AT+ADDRM=0,1,0,1 297 297 * LoRaWAN Downlink(prefix 0xAA01): 0xAA 01 30 01 00 01 298 298 299 299 Downlink:AA 01 aa bb cc dd 300 300 301 - **aa**: SDI-12 sensor address.301 +aa: SDI-12 sensor address. 302 302 303 - **bb**: 0: no CRC, 1: request CRC303 +bb: 0: no CRC, 1: request CRC 304 304 305 - **cc**: 1-9: Additional Measurement, 0: no additional measurement305 +cc: 1-9: Additional Measurement, 0: no additional measurement 306 306 307 - **dd**: delay (in second) to send **aD0!** to get return.307 +dd: delay (in second) to send **aD0!** to get return. 308 308 309 309 310 310 The following is the display information on the serial port and the server. 311 311 312 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image019.png]] 312 312 313 -[[image:image -20230201091630-10.png]]314 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image020.png]] 314 314 315 315 316 -[[image:image-20230201091630-11.png||height="247" width="1165"]] 317 317 318 +aC!, aCC!, aC1!- aC9!, aCC1!- aCC9! 318 318 320 +aC!: Start Concurrent Measurement 319 319 320 - ==== **aC!, aCC!,aC1!-aC9!,aCC1!-aCC9!**====322 +aCC!: Start Concurrent Measurement – Request CRC 321 321 324 +aC1!- aC9!: Start Additional Concurrent Measurements 322 322 323 - **aC!**: Start Concurrent Measurement326 +aCC1!- aCC9!: Start Additional Concurrent Measurements – Request CRC 324 324 325 -**aCC!** : Start Concurrent Measurement – Request CRC 326 326 327 -**aC1!- aC9!** : Start Additional Concurrent Measurements 328 - 329 -**aCC1!- aCC9!** : Start Additional Concurrent Measurements – Request CRC 330 - 331 - 332 332 * AT Command : AT+ADDRC=0,1,0,1 333 333 334 334 * LoRaWAN Downlink(0xAA02): 0xAA 02 30 01 00 01 ... ... @@ -335,29 +335,24 @@ 335 335 336 336 Downlink: AA 02 aa bb cc dd 337 337 338 - **aa**: SDI-12 sensor address.335 +aa: SDI-12 sensor address. 339 339 340 - **bb**: 0: no CRC, 1: request CRC337 +bb: 0: no CRC, 1: request CRC 341 341 342 - **cc**: 1-9: Additional Measurement, 0: no additional measurement339 +cc: 1-9: Additional Measurement, 0: no additional measurement 343 343 344 - **dd**: delay (in second) to send **aD0!** to get return.341 +dd: delay (in second) to send **aD0!** to get return. 345 345 346 346 347 347 The following is the display information on the serial port and the server. 348 348 346 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image021.png]] 349 349 350 -[[image:image -20230201091954-12.png]]348 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image022.png]] 351 351 352 352 353 - [[image:image-20230201091954-13.png||height="203"width="1117"]]351 +aR0!- aR9!, aRC0!- aRC9! 354 354 355 - 356 -(% style="display:none" %) (%%) 357 - 358 -==== **aR0!- aR9!, aRC0!- aRC9!** ==== 359 - 360 - 361 361 Start Continuous Measurement 362 362 363 363 Start Continuous Measurement – Request CRC ... ... @@ -368,48 +368,46 @@ 368 368 369 369 Downlink: AA 03 aa bb cc dd 370 370 371 - **aa**: SDI-12 sensor address.363 +aa: SDI-12 sensor address. 372 372 373 - **bb**: 0: no CRC, 1: request CRC365 +bb: 0: no CRC, 1: request CRC 374 374 375 - **cc**: 1-9: Additional Measurement, 0: no additional measurement367 +cc: 1-9: Additional Measurement, 0: no additional measurement 376 376 377 - **dd**: delay (in second) to send **aD0!** to get return.369 +dd: delay (in second) to send **aD0!** to get return. 378 378 379 379 380 380 The following is the display information on the serial port and the server. 381 381 374 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image023.png]] 382 382 376 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image024.png]] 383 383 384 -[[image:image-20230201092208-14.png]] 378 +1. 379 +11. 380 +111. Advance SDI-12 Debug command 385 385 386 - 387 -[[image:image-20230201092208-15.png||height="214" width="1140"]] 388 - 389 - 390 -=== 2.3.2 Advance SDI-12 Debug command === 391 - 392 - 393 393 This command can be used to debug all SDI-12 command. 394 394 395 395 396 396 LoRaWAN Downlink: A8 aa xx xx xx xx bb cc 397 397 398 - **aa**: total SDI-12 command length387 +(aa: total SDI-12 command length) 399 399 400 - **xx**: SDI-12 command389 +(xx: SDI-12 command) 401 401 402 - **bb**: Delay to wait for return391 +(bb: Delay to wait for return) 403 403 404 - **cc**: 0: don't uplink return to LoRaWAN, 1: Uplink return to LoRaWAN on FPORT=100393 +(cc: 0: don’t uplink return to LoRaWAN, 1: Uplink return to LoRaWAN on FPORT=100) 405 405 406 406 407 - **Example:**AT+CFGDEV =0RC0!,1396 +Example: AT+CFGDEV =0RC0!,1 408 408 409 - **0RC0!**: SDI-12 Command,398 +0RC0!: SDI-12 Command, 410 410 411 - **1**: Delay 1 second. ( 0: 810 mini-second)400 +1: Delay 1 second. ( 0: 810 mini-second) 412 412 402 + 413 413 Equal Downlink: 0xA8 05 30 52 43 30 21 01 01 414 414 415 415 ... ... @@ -416,41 +416,36 @@ 416 416 The following is the display information on the serial port and the server. 417 417 418 418 419 -[[image:image -20230201092355-16.png]]409 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image025.png]] 420 420 411 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image026.png]] 421 421 422 -[[image:image-20230201092355-17.png||height="426" width="1135"]] 413 +1. 414 +11. 415 +111. Convert ASCII to String 423 423 424 - 425 - 426 - 427 -=== 2.3.3 Convert ASCII to String === 428 - 429 - 430 430 This command is used to convert between ASCII and String format. 431 431 419 + 432 432 AT+CONVFORM ( Max length: 80 bytes) 433 433 422 +Example: 434 434 435 - **Example:**424 +1)AT+CONVFORM=0,string Convert String from String to ASCII 436 436 437 - 1) AT+CONVFORM=0, stringonvertString fromStringto ASCII426 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image027.png]] 438 438 439 -[[image:1675214845056-885.png]] 440 440 429 +2)AT+CONVFORM=1,ASCII Convert ASCII to String. 441 441 442 - 2) AT+CONVFORM=1, ASCII ConvertASCIItoString.431 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image028.png]] 443 443 444 -[[image:1675214856590-846.png]] 445 445 446 446 435 +1. 436 +11. 437 +111. Define periodically SDI-12 commands and uplink. 447 447 448 - 449 - 450 - 451 -=== 2.3.4 Define periodically SDI-12 commands and uplink. === 452 - 453 - 454 454 AT+COMMANDx & AT+DATACUTx 455 455 456 456 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. ... ... @@ -460,21 +460,21 @@ 460 460 461 461 **AT+COMMANDx=var1,var2,var3,var4.** 462 462 463 - **var1**: SDI-12 command , for example: 0RC0!448 +var1: SDI-12 command , for example: 0RC0! 464 464 465 - **var2**: Wait timeout for return. (unit: second)450 +var2: Wait timeout for return. (unit: second) 466 466 467 - **var3**: Whether to send //addrD0!// to get return after var2 timeout. 0: Don't Send //addrD0!452 +var3: Whether to send //addrD0!// to get return after var2 timeout. 0: Don’t Send //addrD0!//; 1: Send //addrD0!//. 468 468 469 - **var4**: validation check for return. If return invalid, SDI-12-LB will resend this command. Max 2 retries.454 +var4: validation check for return. If return invalid, SDI-12-LB will resend this command. Max 2 retries. 470 470 471 - **0**No validation check;456 +0 No validation check; 472 472 473 - **1**Check if return chars are printable char(0x20 ~~ 0x7E);458 +1 Check if return chars are printable char(0x20 ~~ 0x7E); 474 474 475 - **2**Check if there is return from SDI-12 sensor460 +2 Check if there is return from SDI-12 sensor 476 476 477 - **3**Check if return pass CRC check ( SDI-12 command var1 must include CRC request);462 +3 Check if return pass CRC check ( SDI-12 command var1 must include CRC request); 478 478 479 479 480 480 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. ... ... @@ -482,25 +482,23 @@ 482 482 483 483 **AT+DATACUTx** : This command defines how to handle the return from AT+COMMANDx, max return length is 100 bytes. 484 484 485 -(% border="1" style="background-color:#f7faff; width:436px" %) 486 -|(% style="width:433px" %)((( 487 -**AT+DATACUTx=a,b,c** 470 +|((( 471 +AT+DATACUTx=a,b,c 488 488 489 - **a**:473 +a: length for the return of AT+COMMAND 490 490 491 - **b**:475 +b:1: grab valid value by byte, max 6 bytes. 2: grab valid value by bytes section, max 3 sections. 492 492 493 - **c**:477 +c: define the position for valid value. 494 494 ))) 495 495 496 -For example, if return from AT+COMMAND1 is “013METER TER12 112T12-00024895” , Below AT+DATACUT1 will get different result to combine payload: 480 +For example, if return from AT+COMMAND1 is “013METER TER12 112T12-00024895” ,. Below AT+DATACUT1 will get different result to combine payload: 497 497 498 498 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 483 +|AT+DATACUT1 value|Final Result to combine Payload 484 +|34,1,1+2+3|0D 00 01 30 31 33 485 +|34,2,1~~8+12~~16|0D 00 01 30 31 33 4D 45 54 45 52 54 45 52 31 32 486 +|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 504 504 505 505 * ** Downlink Payload:** 506 506 ... ... @@ -514,18 +514,21 @@ 514 514 515 515 Where: 516 516 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 command520 -* **XX XX XX XX**: AT+COMMAND or AT+DATACUT command521 -* **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.500 +* MM: the AT+COMMAND or AT+DATACUT to be set. Value from 01 ~~ 0F, 501 +* NN: 1: set the AT+DATACUT value ; 2: set the AT+DATACUT value. 502 +* LL: The length of AT+COMMAND or AT+DATACUT command 503 +* XX XX XX XX: AT+COMMAND or AT+DATACUT command 504 +* 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. 522 522 506 +Example: 523 523 524 -** Example:**508 +**AF 03 01 07 30 4D 43 21 01 01 01 00**: Same as AT+COMMAND3=**0MC!**,** 1**,** 1**,** 1** 525 525 526 - [[image:image-20230201094129-18.png]]510 +**AF 03 02 06 10 01 05 06 09 0A 00**: Same as AT+DATACUT3=**16**,**1**,**5+6+9+10** 527 527 512 +**AF 03 02 06 0B 02 05 07 08 0A 00**: Same as AT+DATACUT3=**11**,**2**,**5~~7+8~~10** 528 528 514 + 529 529 **Clear SDI12 Command** 530 530 531 531 The AT+COMMANDx and AT+DATACUTx settings are stored in special location, user can use below command to clear them. ... ... @@ -545,22 +545,23 @@ 545 545 546 546 547 547 534 + 548 548 **command combination** 549 549 550 550 Below shows a screen shot how the results combines together to a uplink payload. 551 551 552 -[[image: 1675215745275-920.png]]539 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image029.png]] 553 553 554 554 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.542 +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. 556 556 557 557 **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. 558 558 559 559 560 - **For example:**as below photo, AT+ALLDATAMOD=1, but AT+DATACUT1 has been set, AT+DATACUT1 will be still effect the result.547 +For example: as below photo, AT+ALLDATAMOD=1, but AT+DATACUT1 has been set, AT+DATACUT1 will be still effect the result. 561 561 562 562 563 -[[image: 1675215782925-448.png]]550 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image030.png]] 564 564 565 565 566 566 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. ... ... @@ -578,7 +578,7 @@ 578 578 Where PAYVER is defined by AT+PAYVER, below is an example screen shot. 579 579 580 580 581 -[[image: 1675215828102-844.png]]568 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image031.png]] 582 582 583 583 584 584 **AT+DATAUP=1** ... ... @@ -587,7 +587,7 @@ 587 587 588 588 Final Payload is 589 589 590 - __**Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA**__577 +**Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA** 591 591 592 592 1. Battery Info (2 bytes): Battery voltage 593 593 1. PAYVER (1 byte): Defined by AT+PAYVER ... ... @@ -595,24 +595,26 @@ 595 595 1. PAYLOAD# (1 byte): Number of this uplink. (from 0,1,2,3…,to PAYLOAD COUNT) 596 596 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 597 597 598 -[[image: 1675215848113-696.png]]585 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image032.png]] 599 599 600 600 601 601 **Notice: the Max bytes is according to the max support bytes in different Frequency Bands for lowest SF. As below:** 602 602 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). 590 + ~* For AU915/AS923 bands, if UplinkDwell time=0, max 51 bytes for each uplink ( so 51 -5 = 46 max valid date) 607 607 608 - **~WhenAT+DATAUP=1, the maximumnumberofsegmentsis 15,andthemaximumtotalnumber of bytesis 1500;**592 + * For AU915/AS923 bands, if UplinkDwell time=1, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date). 609 609 610 - **~WhenAT+DATAUP=1 andAT+ADR=0,themaximumnumberofbytesof each payloadisdeterminedbytheDRvalue.**594 + * For US915 band, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date). 611 611 596 + ~* For all other bands: max 51 bytes for each uplink ( so 51 -5 = 46 max valid date). 612 612 613 - ==2.4UplinkPayload==598 + *** When AT+DATAUP=1, the maximum number of segments is 15, and the maximum total number of bytes is 1500;** 614 614 600 +**~ When AT+DATAUP=1 and AT+ADR=0, the maximum number of bytes of each payload is determined by the DR value.** 615 615 602 +1. 603 +11. Uplink Payload 604 + 616 616 Uplink payloads have two types: 617 617 618 618 * Distance Value: Use FPORT=2 ... ... @@ -621,7 +621,9 @@ 621 621 The application server should parse the correct value based on FPORT settings. 622 622 623 623 624 -2.4.1 Device Payload, FPORT=5 613 +1. 614 +11. 615 +111. Device Payload, FPORT=5 625 625 626 626 Include device configure status. Once SDI-12-LB Joined the network, it will uplink this message to the server. 627 627 ... ... @@ -629,14 +629,13 @@ 629 629 Users can also use the downlink command(0x26 01) to ask SDI-12-LB to resend this uplink. 630 630 631 631 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 623 +|(% colspan="6" %)**Device Status (FPORT=5)** 624 +|**Size (bytes)**|**1**|**2**|**1**|**1**|**2** 625 +|**Value**|Sensor Model|Firmware Version|Frequency Band|Sub-band|BAT 636 636 637 637 Example parse in TTNv3 638 638 639 -[[image: 1675215946738-635.png]]629 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image033.png]] 640 640 641 641 **Sensor Model**: For SDI-12-LB, this value is 0x17 642 642
- 1675214845056-885.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Xiaoling - Size
-
... ... @@ -1,1 +1,0 @@ 1 -20.4 KB - Content
- 1675214856590-846.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Xiaoling - Size
-
... ... @@ -1,1 +1,0 @@ 1 -18.6 KB - Content
- 1675215745275-920.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Xiaoling - Size
-
... ... @@ -1,1 +1,0 @@ 1 -187.6 KB - Content
- 1675215782925-448.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Xiaoling - Size
-
... ... @@ -1,1 +1,0 @@ 1 -142.5 KB - Content
- 1675215828102-844.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Xiaoling - Size
-
... ... @@ -1,1 +1,0 @@ 1 -231.3 KB - Content
- 1675215848113-696.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Xiaoling - Size
-
... ... @@ -1,1 +1,0 @@ 1 -50.5 KB - Content
- 1675215946738-635.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Xiaoling - Size
-
... ... @@ -1,1 +1,0 @@ 1 -38.4 KB - Content
- image-20230201092355-17.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Xiaoling - Size
-
... ... @@ -1,1 +1,0 @@ 1 -80.0 KB - Content
- image-20230201094129-18.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Xiaoling - Size
-
... ... @@ -1,1 +1,0 @@ 1 -12.8 KB - Content