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

From version 15.2
edited by Xiaoling
on 2022/05/19 17:47
Change comment: There is no comment for this version
To version 29.6
edited by Xiaoling
on 2022/06/01 18:01
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -7,12 +7,15 @@
7 7  **RS485-BL – Waterproof RS485 to LoRaWAN Converter User Manual**
8 8  
9 9  
10 +
10 10  **Table of Contents:**
11 11  
13 +{{toc/}}
12 12  
13 13  
14 14  
15 15  
18 +
16 16  = 1.Introduction =
17 17  
18 18  == 1.1 What is RS485-BL RS485 to LoRaWAN Converter ==
... ... @@ -167,19 +167,31 @@
167 167  
168 168  [[image:1652953414711-647.png||height="337" width="723"]]
169 169  
173 +(((
170 170  The RS485-BL in this example connected to two RS485 devices for demonstration, user can connect to other RS485 devices via the same method.
175 +)))
171 171  
177 +(((
172 172  The LG308 is already set to connect to [[TTN V3 network >>url:https://www.thethingsnetwork.org/]]. So what we need to now is only configure the TTN V3:
179 +)))
173 173  
181 +(((
174 174  **Step 1**: Create a device in TTN V3 with the OTAA keys from RS485-BL.
183 +)))
175 175  
185 +(((
176 176  Each RS485-BL is shipped with a sticker with unique device EUI:
187 +)))
177 177  
178 178  [[image:1652953462722-299.png]]
179 179  
191 +(((
180 180  User can enter this key in their LoRaWAN Server portal. Below is TTN V3 screen shot:
193 +)))
181 181  
195 +(((
182 182  Add APP EUI in the application.
197 +)))
183 183  
184 184  
185 185  
... ... @@ -207,143 +207,188 @@
207 207  
208 208  [[image:1652953568895-172.png||height="232" width="724"]]
209 209  
225 +== 3.3 Configure Commands to read data ==
210 210  
227 +(((
228 +There are plenty of RS485 and TTL level devices in the market and each device has different command to read the valid data. To support these devices in flexible, RS485-BL supports flexible command set. User can use [[AT Commands or LoRaWAN Downlink>>||anchor="H3.5ConfigureRS485-BLviaATorDownlink"]] Command to configure how RS485-BL should read the sensor and how to handle the return from RS485 or TTL sensors.
211 211  
230 +
231 +)))
212 212  
213 -1.
214 -11. Configure Commands to read data
233 +=== 3.3.1 onfigure UART settings for RS485 or TTL communication ===
215 215  
216 -There are plenty of RS485 and TTL level devices in the market and each device has different command to read the valid data. To support these devices in flexible, RS485-BL supports flexible command set. User can use [[AT Commands or LoRaWAN Downlink>>path:#AT_COMMAND]] Command to configure how RS485-BL should read the sensor and how to handle the return from RS485 or TTL sensors.
217 -
218 -
219 -1.
220 -11.
221 -111. Configure UART settings for RS485 or TTL communication
222 -
223 223  RS485-BL can connect to either RS485 sensors or TTL sensor. User need to specify what type of sensor need to connect.
224 224  
225 -1. RS485-MODBUS mode:
237 +**~1. RS485-MODBUS mode:**
226 226  
227 227  AT+MOD=1 ~/~/ Support RS485-MODBUS type sensors. User can connect multiply RS485 , Modbus sensors to the A / B pins.
228 228  
241 +**2. TTL mode:**
229 229  
230 -1. TTL mode:
231 -
232 232  AT+MOD=2 ~/~/ Support TTL Level sensors, User can connect one TTL Sensor to the TXD/RXD/GND pins.
233 233  
234 -
235 235  RS485-BL default UART settings is **9600, no parity, stop bit 1**. If the sensor has a different settings, user can change the RS485-BL setting to match.
236 236  
237 -
238 -|**AT Commands**|**Description**|**Example**
239 -|AT+BAUDR|Set the baud rate (for RS485 connection). Default Value is: 9600.|(((
247 +(% border="1" style="background-color:#ffffcc; color:green; width:795px" %)
248 +|(((
249 +**AT Commands**
250 +)))|(% style="width:285px" %)(((
251 +**Description**
252 +)))|(% style="width:347px" %)(((
253 +**Example**
254 +)))
255 +|(((
256 +AT+BAUDR
257 +)))|(% style="width:285px" %)(((
258 +Set the baud rate (for RS485 connection). Default Value is: 9600.
259 +)))|(% style="width:347px" %)(((
260 +(((
240 240  AT+BAUDR=9600
262 +)))
241 241  
264 +(((
242 242  Options: (1200,2400,4800,14400,19200,115200)
243 243  )))
244 -|AT+PARITY|(((
267 +)))
268 +|(((
269 +AT+PARITY
270 +)))|(% style="width:285px" %)(((
271 +(((
245 245  Set UART parity (for RS485 connection)
273 +)))
246 246  
275 +(((
247 247  Default Value is: no parity.
248 -)))|(((
277 +)))
278 +)))|(% style="width:347px" %)(((
279 +(((
249 249  AT+PARITY=0
281 +)))
250 250  
283 +(((
251 251  Option: 0: no parity, 1: odd parity, 2: even parity
252 252  )))
253 -|AT+STOPBIT|(((
286 +)))
287 +|(((
288 +AT+STOPBIT
289 +)))|(% style="width:285px" %)(((
290 +(((
254 254  Set serial stopbit (for RS485 connection)
292 +)))
255 255  
294 +(((
256 256  Default Value is: 1bit.
257 -)))|(((
296 +)))
297 +)))|(% style="width:347px" %)(((
298 +(((
258 258  AT+STOPBIT=0 for 1bit
300 +)))
259 259  
302 +(((
260 260  AT+STOPBIT=1 for 1.5 bit
304 +)))
261 261  
306 +(((
262 262  AT+STOPBIT=2 for 2 bits
263 263  )))
309 +)))
264 264  
311 +=== 3.3.2 Configure sensors ===
265 265  
313 +(((
314 +Some sensors might need to configure before normal operation. User can configure such sensor via PC or through RS485-BL AT Commands (% style="color:#4f81bd" %)**AT+CFGDEV**.
315 +)))
266 266  
317 +(((
318 +When user issue an (% style="color:#4f81bd" %)**AT+CFGDEV**(%%) command, Each (% style="color:#4f81bd" %)**AT+CFGDEV**(%%) equals to send a command to the RS485 or TTL sensors. This command will only run when user input it and won’t run during each sampling.
319 +)))
267 267  
268 -1.
269 -11.
270 -111. Configure sensors
271 -
272 -Some sensors might need to configure before normal operation. User can configure such sensor via PC or through RS485-BL AT Commands AT+CFGDEV.
273 -
274 -
275 -When user issue an AT+CFGDEV command, Each AT+CFGDEV equals to send a command to the RS485 or TTL sensors. This command will only run when user input it and won’t run during each sampling.
276 -
277 -|**AT Commands**|**Description**|**Example**
278 -|AT+CFGDEV|(((
321 +(% border="1" style="background-color:#ffffcc; color:green; width:806px" %)
322 +|**AT Commands**|(% style="width:418px" %)**Description**|(% style="width:256px" %)**Example**
323 +|AT+CFGDEV|(% style="width:418px" %)(((
279 279  This command is used to configure the RS485/TTL devices; they won’t be used during sampling.
280 280  
281 -AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m
326 +AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,
282 282  
283 -m: 0: no CRC, 1: add CRC-16/MODBUS in the end of this command
284 -)))|AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m
328 +mm: 0: no CRC, 1: add CRC-16/MODBUS in the end of this command
329 +)))|(% style="width:256px" %)AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m
285 285  
286 286  Detail of AT+CFGDEV command see [[AT+CFGDEV detail>>path:#AT_CFGDEV]].
287 287  
333 +=== 3.3.3 Configure read commands for each sampling ===
288 288  
289 -
290 -
291 -
292 -1.
293 -11.
294 -111. Configure read commands for each sampling
295 -
335 +(((
296 296  RS485-BL is a battery powered device; it will sleep most of time. And wake up on each period and read RS485 / TTL sensor data and uplink.
337 +)))
297 297  
298 -
339 +(((
299 299  During each sampling, we need to confirm what commands we need to send to the sensors to read data. After the RS485/TTL sensors send back the value, it normally includes some bytes and we only need a few from them for a shorten payload.
341 +)))
300 300  
301 -
343 +(((
302 302  To save the LoRaWAN network bandwidth, we might need to read data from different sensors and combine their valid value into a short payload.
345 +)))
303 303  
304 -
347 +(((
305 305  This section describes how to achieve above goals.
349 +)))
306 306  
307 -
351 +(((
308 308  During each sampling, the RS485-BL can support 15 commands to read sensors. And combine the return to one or several uplink payloads.
353 +)))
309 309  
310 -
355 +(((
311 311  **Command from RS485-BL to Sensor:**
357 +)))
312 312  
359 +(((
313 313  RS485-BL can send out pre-set max 15 strings via **AT+COMMAD1**, **ATCOMMAND2**,…, to **AT+COMMANDF** . All commands are of same grammar.
361 +)))
314 314  
315 -
363 +(((
316 316  **Handle return from sensors to RS485-BL**:
365 +)))
317 317  
367 +(((
318 318  After RS485-BL send out a string to sensor, RS485-BL will wait for the return from RS485 or TTL sensor. And user can specify how to handle the return, by **AT+DATACUT or AT+SEARCH commands**
369 +)))
319 319  
371 +* (((
372 +**AT+DATACUT**
373 +)))
320 320  
321 -* **AT+DATACUT**
322 -
375 +(((
323 323  When the return value from sensor have fix length and we know which position the valid value we should get, we can use AT+DATACUT command.
377 +)))
324 324  
379 +* (((
380 +**AT+SEARCH**
381 +)))
325 325  
326 -* **AT+SEARCH**
327 -
383 +(((
328 328  When the return value from sensor is dynamic length and we are not sure which bytes the valid data is, instead, we know what value the valid value following. We can use AT+SEARCH to search the valid value in the return string.
385 +)))
329 329  
330 -
387 +(((
331 331  **Define wait timeout:**
389 +)))
332 332  
391 +(((
333 333  Some RS485 device might has longer delay on reply, so user can use AT+CMDDL to set the timeout for getting reply after the RS485 command is sent. For example, AT+CMDDL1=1000 to send the open time to 1000ms
393 +)))
334 334  
335 -
395 +(((
336 336  After we got the valid value from each RS485 commands, we need to combine them together with the command **AT+DATAUP**.
397 +)))
337 337  
338 -
339 339  **Examples:**
340 340  
341 341  Below are examples for the how above AT Commands works.
342 342  
343 -
344 344  **AT+COMMANDx : **This command will be sent to RS485/TTL devices during each sampling, Max command length is 14 bytes. The grammar is:
345 345  
346 -|(((
405 +(% border="1" class="table-bordered" style="background-color:#4f81bd; color:white; width:501px" %)
406 +|(% style="width:498px" %)(((
347 347  **AT+COMMANDx=xx xx xx xx xx xx xx xx xx xx xx xx,m**
348 348  
349 349  **xx xx xx xx xx xx xx xx xx xx xx xx: The RS485 command to be sent**
... ... @@ -355,41 +355,38 @@
355 355  
356 356  In the RS485-BL, we should use this command AT+COMMAND1=01 03 0B B8 00 02,1 for the same.
357 357  
358 -
359 359  **AT+SEARCHx**: This command defines how to handle the return from AT+COMMANDx.
360 360  
361 -|(((
420 +(% border="1" class="table-bordered" style="background-color:#4f81bd; color:white; width:580px" %)
421 +|(% style="width:577px" %)(((
362 362  **AT+SEARCHx=aa,xx xx xx xx xx**
363 363  
364 364  * **aa: 1: prefix match mode; 2: prefix and suffix match mode**
365 365  * **xx xx xx xx xx: match string. Max 5 bytes for prefix and 5 bytes for suffix**
366 -
367 -
368 368  )))
369 369  
370 -Examples:
428 +**Examples:**
371 371  
372 372  1. For a return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
373 373  
374 374  If we set AT+SEARCH1=1,1E 56 34.      (max 5 bytes for prefix)
375 375  
376 -The valid data will be all bytes after 1E 56 34 , so it is 2e 30 58 5f 36 41 30 31 00 49
434 +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**
377 377  
378 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image013.png]]
436 +[[image:1653271044481-711.png]]
379 379  
380 -
381 381  1. For a return string from AT+COMMAND1:  16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
382 382  
383 383  If we set AT+SEARCH1=2, 1E 56 34+31 00 49
384 384  
385 -Device will search the bytes between 1E 56 34 and 31 00 49. So it is 2e 30 58 5f 36 41 30
442 +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**
386 386  
387 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image014.png]]
444 +[[image:1653271276735-972.png]]
388 388  
389 -
390 390  **AT+DATACUTx : **This command defines how to handle the return from AT+COMMANDx, max return length is 45 bytes.
391 391  
392 -|(((
448 +(% style="background-color:#4f81bd; color:white; width:729px" %)
449 +|(% style="width:726px" %)(((
393 393  **AT+DATACUTx=a,b,c**
394 394  
395 395  * **a: length for the return of AT+COMMAND**
... ... @@ -401,95 +401,130 @@
401 401  
402 402  * Grab bytes:
403 403  
404 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image015.png]]
461 +[[image:1653271581490-837.png||height="313" width="722"]]
405 405  
406 406  * Grab a section.
407 407  
408 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image016.png]]
465 +[[image:1653271648378-342.png||height="326" width="720"]]
409 409  
410 410  * Grab different sections.
411 411  
412 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image017.png]]
469 +[[image:1653271657255-576.png||height="305" width="730"]]
413 413  
471 +(((
472 +(% style="color:red" %)**Note:**
473 +)))
414 414  
415 -Note:
416 -
475 +(((
417 417  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.
477 +)))
418 418  
419 -Example:
479 +(((
480 +**Example:**
481 +)))
420 420  
421 -AT+COMMAND1=11 01 1E D0,0
483 +(((
484 +(% style="color:red" %)AT+COMMAND1=11 01 1E D0,0
485 +)))
422 422  
423 -AT+SEARCH1=1,1E 56 34
487 +(((
488 +(% style="color:red" %)AT+SEARCH1=1,1E 56 34
489 +)))
424 424  
425 -AT+DATACUT1=0,2,1~~5
491 +(((
492 +(% style="color:red" %)AT+DATACUT1=0,2,1~~5
493 +)))
426 426  
427 -Return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
495 +(((
496 +(% style="color:red" %)Return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
497 +)))
428 428  
429 -String after SEARCH command: 2e 30 58 5f 36 41 30 31 00 49
499 +(((
500 +(% style="color:red" %)String after SEARCH command: 2e 30 58 5f 36 41 30 31 00 49
501 +)))
430 430  
431 -Valid payload after DataCUT command: 2e 30 58 5f 36
503 +(((
504 +(% style="color:red" %)Valid payload after DataCUT command: 2e 30 58 5f 36
505 +)))
432 432  
433 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image018.png]]
507 +[[image:1653271763403-806.png]]
434 434  
509 +=== 3.3.4 Compose the uplink payload ===
435 435  
436 -
437 -
438 -1.
439 -11.
440 -111. Compose the uplink payload
441 -
511 +(((
442 442  Through AT+COMMANDx and AT+DATACUTx we got valid value from each RS485 commands, Assume these valid value are RETURN1, RETURN2, .., to RETURNx. The next step is how to compose the LoRa Uplink Payload by these RETURNs. The command is **AT+DATAUP.**
513 +)))
443 443  
515 +(((
516 +(% style="color:#4f81bd" %)**Examples: AT+DATAUP=0**
517 +)))
444 444  
445 -**Examples: AT+DATAUP=0**
519 +(((
520 +Compose the uplink payload with value returns in sequence and send with (% style="color:red" %)**A SIGNLE UPLINK**.
521 +)))
446 446  
447 -Compose the uplink payload with value returns in sequence and send with **A SIGNLE UPLINK**.
448 -
523 +(((
449 449  Final Payload is
525 +)))
450 450  
451 -Battery Info+PAYVER + VALID Value from RETURN1 + Valid Value from RETURN2 + … + RETURNx
527 +(((
528 +(% style="color:#4f81bd" %)Battery Info+PAYVER + VALID Value from RETURN1 + Valid Value from RETURN2 + … + RETURNx
529 +)))
452 452  
531 +(((
453 453  Where PAYVER is defined by AT+PAYVER, below is an example screen shot.
533 +)))
454 454  
455 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image019.png]]
535 +[[image:1653272787040-634.png||height="515" width="719"]]
456 456  
537 +(((
538 +(% style="color:#4f81bd" %)**Examples: AT+DATAUP=1**
539 +)))
457 457  
541 +(((
542 +Compose the uplink payload with value returns in sequence and send with (% style="color:red" %)**Multiply UPLINKs**.
543 +)))
458 458  
459 -**Examples: AT+DATAUP=1**
460 -
461 -Compose the uplink payload with value returns in sequence and send with **Multiply UPLINKs**.
462 -
545 +(((
463 463  Final Payload is
547 +)))
464 464  
465 -Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA
549 +(((
550 +(% style="color:#4f81bd" %)Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA
551 +)))
466 466  
467 -1. Battery Info (2 bytes): Battery voltage
468 -1. PAYVER (1 byte): Defined by AT+PAYVER
469 -1. PAYLOAD COUNT (1 byte): Total how many uplinks of this sampling.
470 -1. PAYLOAD# (1 byte): Number of this uplink. (from 0,1,2,3…,to PAYLOAD COUNT)
471 -1. DATA: Valid value: max 6 bytes(US915 version here, [[Notice*!>>path:#max_byte]]) for each uplink so each uplink <= 11 bytes. For the last uplink, DATA will might less than 6 bytes
553 +1. (((
554 +Battery Info (2 bytes): Battery voltage
555 +)))
556 +1. (((
557 +PAYVER (1 byte): Defined by AT+PAYVER
558 +)))
559 +1. (((
560 +PAYLOAD COUNT (1 byte): Total how many uplinks of this sampling.
561 +)))
562 +1. (((
563 +PAYLOAD# (1 byte): Number of this uplink. (from 0,1,2,3…,to PAYLOAD COUNT)
564 +)))
565 +1. (((
566 +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
567 +)))
472 472  
473 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image020.png]]
569 +[[image:1653272817147-600.png||height="437" width="717"]]
474 474  
475 -
476 476  So totally there will be 3 uplinks for this sampling, each uplink includes 6 bytes DATA
477 477  
478 -DATA1=RETURN1 Valid Value = 20 20 0a 33 90 41
573 +DATA1=RETURN1 Valid Value = (% style="background-color:#4f81bd; color:white" %) 20 20 0a 33 90 41
479 479  
480 -DATA2=1^^st^^ ~~ 6^^th^^ byte of Valid value of RETURN10= 02 aa 05 81 0a 20
575 +DATA2=1^^st^^ ~~ 6^^th^^ byte of Valid value of RETURN10= (% style="background-color:#4f81bd; color:white" %)02 aa 05 81 0a 20
481 481  
482 -DATA3=7^^th^^ ~~ 11^^th^^ bytes of Valid value of RETURN10 = 20 20 20 2d 30
577 +DATA3=7^^th^^ ~~ 11^^th^^ bytes of Valid value of RETURN10 =(% style="background-color:#4f81bd; color:white" %) 20 20 20 2d 30
483 483  
484 -
485 -
486 486  Below are the uplink payloads:
487 487  
488 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image021.png]]
581 +[[image:1653272901032-107.png]]
489 489  
583 +(% style="color:red" %)Notice: the Max bytes is according to the max support bytes in different Frequency Bands for lowest SF. As below:
490 490  
491 -Notice: the Max bytes is according to the max support bytes in different Frequency Bands for lowest SF. As below:
492 -
493 493   ~* For AU915/AS923 bands, if UplinkDwell time=0, max 51 bytes for each uplink ( so 51 -5 = 46 max valid date)
494 494  
495 495   * For AU915/AS923 bands, if UplinkDwell time=1, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date).
... ... @@ -498,90 +498,121 @@
498 498  
499 499   ~* For all other bands: max 51 bytes for each uplink  ( so 51 -5 = 46 max valid date).
500 500  
593 +=== 3.3.5 Uplink on demand ===
501 501  
502 -
503 -1.
504 -11.
505 -111. Uplink on demand
506 -
595 +(((
507 507  Except uplink periodically, RS485-BL is able to uplink on demand. The server sends downlink command to RS485-BL and RS485 will uplink data base on the command.
597 +)))
508 508  
599 +(((
509 509  Downlink control command:
601 +)))
510 510  
511 -[[0x08 command>>path:#downlink_08]]: Poll an uplink with current command set in RS485-BL.
603 +(((
604 +**0x08 command**: Poll an uplink with current command set in RS485-BL.
605 +)))
512 512  
513 -[[0xA8 command>>path:#downlink_A8]]: Send a command to RS485-BL and uplink the output from sensors.
607 +(((
608 +**0xA8 command**: Send a command to RS485-BL and uplink the output from sensors.
609 +)))
514 514  
611 +=== 3.3.6 Uplink on Interrupt ===
515 515  
613 +Put the interrupt sensor between 3.3v_out and GPIO ext.
516 516  
517 -1.
518 -11.
519 -111. Uplink on Interrupt
615 +[[image:1653273818896-432.png]]
520 520  
521 -Put the interrupt sensor between 3.3v_out and GPIO ext.[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image022.png]]
522 -
617 +(((
523 523  AT+INTMOD=0  Disable Interrupt
619 +)))
524 524  
621 +(((
525 525  AT+INTMOD=1  Interrupt trigger by rising or falling edge.
623 +)))
526 526  
625 +(((
527 527  AT+INTMOD=2  Interrupt trigger by falling edge. ( Default Value)
627 +)))
528 528  
629 +(((
529 529  AT+INTMOD=3  Interrupt trigger by rising edge.
631 +)))
530 530  
633 +== 3.4 Uplink Payload ==
531 531  
532 -1.
533 -11. Uplink Payload
534 -
535 -|**Size(bytes)**|**2**|**1**|**Length depends on the return from the commands**
536 -|Value|(((
635 +(% border="1" style="background-color:#4f81bd; color:white; width:850px" %)
636 +|**Size(bytes)**|(% style="width:130px" %)**2**|(% style="width:93px" %)**1**|(% style="width:509px" %)**Length depends on the return from the commands**
637 +|Value|(% style="width:130px" %)(((
638 +(((
537 537  Battery(mV)
640 +)))
538 538  
642 +(((
539 539  &
644 +)))
540 540  
646 +(((
541 541  Interrupt _Flag
542 -)))|(((
648 +)))
649 +)))|(% style="width:93px" %)(((
543 543  PAYLOAD_VER
544 544  
545 545  
546 -)))|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.
653 +)))|(% 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.
547 547  
548 548  Below is the decoder for the first 3 bytes. The rest bytes are dynamic depends on different RS485 sensors.
549 549  
550 -
657 +(((
551 551  function Decoder(bytes, port) {
659 +)))
552 552  
661 +(((
553 553  ~/~/Payload Formats of RS485-BL Deceive
663 +)))
554 554  
665 +(((
555 555  return {
667 +)))
556 556  
669 +(((
557 557   ~/~/Battery,units:V
671 +)))
558 558  
673 +(((
559 559   BatV:((bytes[0]<<8 | bytes[1])&0x7fff)/1000,
675 +)))
560 560  
677 +(((
561 561   ~/~/GPIO_EXTI 
679 +)))
562 562  
681 +(((
563 563   EXTI_Trigger:(bytes[0] & 0x80)? "TRUE":"FALSE",
683 +)))
564 564  
685 +(((
565 565   ~/~/payload of version
687 +)))
566 566  
689 +(((
567 567   Pay_ver:bytes[2],
691 +)))
568 568  
693 +(((
569 569   };
695 +)))
570 570  
697 +(((
571 571   }
699 +)))
572 572  
573 -
574 -
575 -
576 -
577 -
578 -
701 +(((
579 579  TTN V3 uplink screen shot.
703 +)))
580 580  
581 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image023.png]]
705 +[[image:1653274001211-372.png||height="192" width="732"]]
582 582  
583 -1.
584 -11. Configure RS485-BL via AT or Downlink
707 +== 3.5 Configure RS485-BL via AT or Downlink ==
585 585  
586 586  User can configure RS485-BL via [[AT Commands >>path:#_​Using_the_AT]]or LoRaWAN Downlink Commands
587 587  
1652954654347-831.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +138.7 KB
Content
1653271044481-711.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +27.8 KB
Content
1653271276735-972.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +26.6 KB
Content
1653271581490-837.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +138.7 KB
Content
1653271648378-342.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +131.4 KB
Content
1653271657255-576.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +142.6 KB
Content
1653271763403-806.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +27.7 KB
Content
1653272787040-634.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +294.0 KB
Content
1653272817147-600.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +143.3 KB
Content
1653272901032-107.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +197.8 KB
Content
1653273818896-432.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +31.6 KB
Content
1653274001211-372.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +91.4 KB
Content