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, 8 added, 0 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,7 +275,6 @@ 275 275 The following is the display information on the serial port and the server. 276 276 277 277 278 - 279 279 [[image:image-20230201091257-8.png]] 280 280 281 281 ... ... @@ -282,50 +282,54 @@ 282 282 [[image:image-20230201091257-9.png||height="225" width="1242"]] 283 283 284 284 285 -aM!,aMC!, aM1!- aM9!, aMC1!- aMC9! 284 +==== **aM!,aMC!, aM1!- aM9!, aMC1!- aMC9!** ==== 286 286 287 -aM!: Start Non-Concurrent Measurement 288 288 289 -aM C!: Start Non-Concurrent Measurement– Request CRC287 +**aM! **: Start Non-Concurrent Measurement 290 290 291 -aM 1!-aM9!:AdditionalMeasurements289 +**aMC! **: Start Non-Concurrent Measurement – Request CRC 292 292 293 -aM C1!- aMC9!: Additional Measurements– Request CRC291 +**aM1!- aM9! **: Additional Measurements 294 294 293 +**aMC1!- aMC9!** : Additional Measurements – Request CRC 295 295 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 CRC 303 +**bb**: 0: no CRC, 1: request CRC 304 304 305 -cc: 1-9: Additional Measurement, 0: no additional measurement 305 +**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]] 313 313 314 -[[image: file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image020.png]]313 +[[image:image-20230201091630-10.png]] 315 315 316 316 316 +[[image:image-20230201091630-11.png||height="247" width="1165"]] 317 317 318 -aC!, aCC!, aC1!- aC9!, aCC1!- aCC9! 319 319 320 -aC!: Start Concurrent Measurement 321 321 322 -aCC! :StartConcurrentMeasurement– RequestCRC320 +==== **aC!, aCC!, aC1!- aC9!, aCC1!- aCC9! ** ==== 323 323 324 -aC1!- aC9!: Start Additional Concurrent Measurements 325 325 326 -aC C1!-aCC9!: StartAdditionalConcurrent Measurements – Request CRC323 +**aC!** : Start Concurrent Measurement 327 327 325 +**aCC!** : Start Concurrent Measurement – Request CRC 328 328 327 +**aC1!- aC9!** : Start Additional Concurrent Measurements 328 + 329 +**aCC1!- aCC9!** : Start Additional Concurrent Measurements – Request CRC 330 + 331 + 329 329 * AT Command : AT+ADDRC=0,1,0,1 330 330 331 331 * LoRaWAN Downlink(0xAA02): 0xAA 02 30 01 00 01 ... ... @@ -332,24 +332,29 @@ 332 332 333 333 Downlink: AA 02 aa bb cc dd 334 334 335 -aa: SDI-12 sensor address. 338 +**aa**: SDI-12 sensor address. 336 336 337 -bb: 0: no CRC, 1: request CRC 340 +**bb**: 0: no CRC, 1: request CRC 338 338 339 -cc: 1-9: Additional Measurement, 0: no additional measurement 342 +**cc**: 1-9: Additional Measurement, 0: no additional measurement 340 340 341 -dd: delay (in second) to send **aD0!** to get return. 344 +**dd**: delay (in second) to send **aD0!** to get return. 342 342 343 343 344 344 The following is the display information on the serial port and the server. 345 345 346 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image021.png]] 347 347 348 -[[image: file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image022.png]]350 +[[image:image-20230201091954-12.png]] 349 349 350 350 351 -a R0!-aR9!, aRC0!-aRC9!353 +[[image:image-20230201091954-13.png||height="203" width="1117"]] 352 352 355 + 356 +(% style="display:none" %) (%%) 357 + 358 +==== **aR0!- aR9!, aRC0!- aRC9!** ==== 359 + 360 + 353 353 Start Continuous Measurement 354 354 355 355 Start Continuous Measurement – Request CRC ... ... @@ -360,46 +360,48 @@ 360 360 361 361 Downlink: AA 03 aa bb cc dd 362 362 363 -aa: SDI-12 sensor address. 371 +**aa**: SDI-12 sensor address. 364 364 365 -bb: 0: no CRC, 1: request CRC 373 +**bb**: 0: no CRC, 1: request CRC 366 366 367 -cc: 1-9: Additional Measurement, 0: no additional measurement 375 +**cc**: 1-9: Additional Measurement, 0: no additional measurement 368 368 369 -dd: delay (in second) to send **aD0!** to get return. 377 +**dd**: delay (in second) to send **aD0!** to get return. 370 370 371 371 372 372 The following is the display information on the serial port and the server. 373 373 374 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image023.png]] 375 375 376 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image024.png]] 377 377 378 -1. 379 -11. 380 -111. Advance SDI-12 Debug command 384 +[[image:image-20230201092208-14.png]] 381 381 386 + 387 +[[image:image-20230201092208-15.png||height="214" width="1140"]] 388 + 389 + 390 +=== 2.3.2 Advance SDI-12 Debug command === 391 + 392 + 382 382 This command can be used to debug all SDI-12 command. 383 383 384 384 385 385 LoRaWAN Downlink: A8 aa xx xx xx xx bb cc 386 386 387 - (aa: total SDI-12 command length)398 +**aa **: total SDI-12 command length 388 388 389 - (xx: SDI-12 command)400 +**xx **: SDI-12 command 390 390 391 - (bb: Delay to wait for return)402 +**bb **: Delay to wait for return 392 392 393 - (cc: 0: don’t uplink return to LoRaWAN, 1: Uplink return to LoRaWAN on FPORT=100)404 +**cc **: 0: don't uplink return to LoRaWAN, 1: Uplink return to LoRaWAN on FPORT=100 394 394 395 395 396 -Example: AT+CFGDEV =0RC0!,1 407 +**Example: **AT+CFGDEV =0RC0!,1 397 397 398 -0RC0!: SDI-12 Command, 409 +**0RC0! **: SDI-12 Command, 399 399 400 -1: Delay 1 second. ( 0: 810 mini-second) 411 +**1 **: Delay 1 second. ( 0: 810 mini-second) 401 401 402 - 403 403 Equal Downlink: 0xA8 05 30 52 43 30 21 01 01 404 404 405 405 ... ... @@ -406,36 +406,41 @@ 406 406 The following is the display information on the serial port and the server. 407 407 408 408 409 -[[image: file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image025.png]]419 +[[image:image-20230201092355-16.png]] 410 410 411 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image026.png]] 412 412 413 -1. 414 -11. 415 -111. Convert ASCII to String 422 +[[image:image-20230201092355-17.png||height="426" width="1135"]] 416 416 417 -This command is used to convert between ASCII and String format. 418 418 425 + 419 419 427 +=== 2.3.3 Convert ASCII to String === 428 + 429 + 430 +This command is used to convert between ASCII and String format. 431 + 420 420 AT+CONVFORM ( Max length: 80 bytes) 421 421 422 -Example: 423 423 424 - 1)AT+CONVFORM=0,string Convert String fromString to ASCII435 +**Example:** 425 425 426 - [[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 427 427 439 +[[image:1675214845056-885.png]] 428 428 429 -2)AT+CONVFORM=1,ASCII Convert ASCII to String. 430 430 431 - [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image028.png]]442 +2) AT+CONVFORM=1, ASCII Convert ASCII to String. 432 432 444 +[[image:1675214856590-846.png]] 433 433 434 434 435 -1. 436 -11. 437 -111. Define periodically SDI-12 commands and uplink. 438 438 448 + 449 + 450 + 451 +=== 2.3.4 Define periodically SDI-12 commands and uplink. === 452 + 453 + 439 439 AT+COMMANDx & AT+DATACUTx 440 440 441 441 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. ... ... @@ -445,21 +445,21 @@ 445 445 446 446 **AT+COMMANDx=var1,var2,var3,var4.** 447 447 448 -var1: SDI-12 command , for example: 0RC0! 463 +**var1**: SDI-12 command , for example: 0RC0! 449 449 450 -var2: Wait timeout for return. (unit: second) 465 +**var2**: Wait timeout for return. (unit: second) 451 451 452 -var3: Whether to send //addrD0!// to get return after var2 timeout. 0: Don ’t 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!//. 453 453 454 -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. 455 455 456 -0 471 +**0 ** No validation check; 457 457 458 -1 Check if return chars are printable char(0x20 ~~ 0x7E); 473 +**1** Check if return chars are printable char(0x20 ~~ 0x7E); 459 459 460 -2 Check if there is return from SDI-12 sensor 475 +**2** Check if there is return from SDI-12 sensor 461 461 462 -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); 463 463 464 464 465 465 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. ... ... @@ -467,23 +467,25 @@ 467 467 468 468 **AT+DATACUTx** : This command defines how to handle the return from AT+COMMANDx, max return length is 100 bytes. 469 469 470 -|((( 471 -AT+DATACUTx=a,b,c 485 +(% border="1" style="background-color:#f7faff; width:436px" %) 486 +|(% style="width:433px" %)((( 487 +**AT+DATACUTx=a,b,c** 472 472 473 -a: length for the return of AT+COMMAND 489 +**a**: length for the return of AT+COMMAND 474 474 475 -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. 476 476 477 -c: define the position for valid value. 493 +**c**: define the position for valid value. 478 478 ))) 479 479 480 -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: 481 481 482 482 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 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 487 487 488 488 * ** Downlink Payload:** 489 489 ... ... @@ -497,21 +497,18 @@ 497 497 498 498 Where: 499 499 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. 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. 505 505 506 -Example: 507 507 508 -** AF 03 01 07 30 4D 43 21 01 01 01 00**: Sameas AT+COMMAND3=**0MC!**,** 1**,** 1**,** 1**524 +**Example:** 509 509 510 - **AF0361001 05 06 090A 00**: Same as AT+DATACUT3=**16**,**1**,**5+6+9+10**526 +[[image:image-20230201094129-18.png]] 511 511 512 -**AF 03 02 06 0B 02 05 07 08 0A 00**: Same as AT+DATACUT3=**11**,**2**,**5~~7+8~~10** 513 513 514 - 515 515 **Clear SDI12 Command** 516 516 517 517 The AT+COMMANDx and AT+DATACUTx settings are stored in special location, user can use below command to clear them. ... ... @@ -531,23 +531,22 @@ 531 531 532 532 533 533 534 - 535 535 **command combination** 536 536 537 537 Below shows a screen shot how the results combines together to a uplink payload. 538 538 539 -[[image: file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image029.png]]552 +[[image:1675215745275-920.png]] 540 540 541 541 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.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. 543 543 544 544 **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. 545 545 546 546 547 -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. 548 548 549 549 550 -[[image: file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image030.png]]563 +[[image:1675215782925-448.png]] 551 551 552 552 553 553 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. ... ... @@ -565,7 +565,7 @@ 565 565 Where PAYVER is defined by AT+PAYVER, below is an example screen shot. 566 566 567 567 568 -[[image: file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image031.png]]581 +[[image:1675215828102-844.png]] 569 569 570 570 571 571 **AT+DATAUP=1** ... ... @@ -574,7 +574,7 @@ 574 574 575 575 Final Payload is 576 576 577 -**Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA** 590 +__**Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA**__ 578 578 579 579 1. Battery Info (2 bytes): Battery voltage 580 580 1. PAYVER (1 byte): Defined by AT+PAYVER ... ... @@ -582,26 +582,24 @@ 582 582 1. PAYLOAD# (1 byte): Number of this uplink. (from 0,1,2,3…,to PAYLOAD COUNT) 583 583 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 584 584 585 -[[image: file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image032.png]]598 +[[image:1675215848113-696.png]] 586 586 587 587 588 588 **Notice: the Max bytes is according to the max support bytes in different Frequency Bands for lowest SF. As below:** 589 589 590 - ~* 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). 591 591 592 - ForAU915/AS923 bands,if UplinkDwelltime=1,max11bytesforeach uplink(so11 -5=6maxvaliddate).608 +**~ When AT+DATAUP=1, the maximum number of segments is 15, and the maximum total number of bytes is 1500;** 593 593 594 - ForUS915band, max11bytesforeachuplink(so11-5=6maxvalid date).610 +**~ When AT+DATAUP=1 and AT+ADR=0, the maximum number of bytes of each payload is determined by the DR value.** 595 595 596 - ~* For all other bands: max 51 bytes for each uplink ( so 51 -5 = 46 max valid date). 597 597 598 - ***When AT+DATAUP=1, the maximumnumberof segments is 15,andthe maximum total number of bytes is 1500;**613 +== 2.4 Uplink Payload == 599 599 600 -**~ When AT+DATAUP=1 and AT+ADR=0, the maximum number of bytes of each payload is determined by the DR value.** 601 601 602 -1. 603 -11. Uplink Payload 604 - 605 605 Uplink payloads have two types: 606 606 607 607 * Distance Value: Use FPORT=2 ... ... @@ -610,9 +610,7 @@ 610 610 The application server should parse the correct value based on FPORT settings. 611 611 612 612 613 -1. 614 -11. 615 -111. Device Payload, FPORT=5 624 +2.4.1 Device Payload, FPORT=5 616 616 617 617 Include device configure status. Once SDI-12-LB Joined the network, it will uplink this message to the server. 618 618 ... ... @@ -620,13 +620,14 @@ 620 620 Users can also use the downlink command(0x26 01) to ask SDI-12-LB to resend this uplink. 621 621 622 622 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 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 626 626 627 627 Example parse in TTNv3 628 628 629 -[[image: file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image033.png]]639 +[[image:1675215946738-635.png]] 630 630 631 631 **Sensor Model**: For SDI-12-LB, this value is 0x17 632 632
- 1675214845056-885.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Xiaoling - Size
-
... ... @@ -1,0 +1,1 @@ 1 +20.4 KB - Content
- 1675214856590-846.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Xiaoling - Size
-
... ... @@ -1,0 +1,1 @@ 1 +18.6 KB - Content
- 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
- image-20230201094129-18.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Xiaoling - Size
-
... ... @@ -1,0 +1,1 @@ 1 +12.8 KB - Content