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.4
edited by Xiaoling
on 2022/06/01 17:59
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -7,6 +7,7 @@
7 7  **RS485-BL – Waterproof RS485 to LoRaWAN Converter User Manual**
8 8  
9 9  
10 +
10 10  **Table of Contents:**
11 11  
12 12  
... ... @@ -13,6 +13,7 @@
13 13  
14 14  
15 15  
17 +
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  
172 +(((
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.
174 +)))
171 171  
176 +(((
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:
178 +)))
173 173  
180 +(((
174 174  **Step 1**: Create a device in TTN V3 with the OTAA keys from RS485-BL.
182 +)))
175 175  
184 +(((
176 176  Each RS485-BL is shipped with a sticker with unique device EUI:
186 +)))
177 177  
178 178  [[image:1652953462722-299.png]]
179 179  
190 +(((
180 180  User can enter this key in their LoRaWAN Server portal. Below is TTN V3 screen shot:
192 +)))
181 181  
194 +(((
182 182  Add APP EUI in the application.
196 +)))
183 183  
184 184  
185 185  
... ... @@ -207,143 +207,186 @@
207 207  
208 208  [[image:1652953568895-172.png||height="232" width="724"]]
209 209  
224 +== 3.3 Configure Commands to read data ==
210 210  
211 -
212 -
213 -1.
214 -11. Configure Commands to read data
215 -
226 +(((
216 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.
228 +)))
217 217  
230 +=== 3.3.1 onfigure UART settings for RS485 or TTL communication ===
218 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:
234 +**~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  
238 +**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.|(((
244 +(% border="1" style="background-color:#ffffcc; color:green; width:795px" %)
245 +|(((
246 +**AT Commands**
247 +)))|(% style="width:285px" %)(((
248 +**Description**
249 +)))|(% style="width:347px" %)(((
250 +**Example**
251 +)))
252 +|(((
253 +AT+BAUDR
254 +)))|(% style="width:285px" %)(((
255 +Set the baud rate (for RS485 connection). Default Value is: 9600.
256 +)))|(% style="width:347px" %)(((
257 +(((
240 240  AT+BAUDR=9600
259 +)))
241 241  
261 +(((
242 242  Options: (1200,2400,4800,14400,19200,115200)
243 243  )))
244 -|AT+PARITY|(((
264 +)))
265 +|(((
266 +AT+PARITY
267 +)))|(% style="width:285px" %)(((
268 +(((
245 245  Set UART parity (for RS485 connection)
270 +)))
246 246  
272 +(((
247 247  Default Value is: no parity.
248 -)))|(((
274 +)))
275 +)))|(% style="width:347px" %)(((
276 +(((
249 249  AT+PARITY=0
278 +)))
250 250  
280 +(((
251 251  Option: 0: no parity, 1: odd parity, 2: even parity
252 252  )))
253 -|AT+STOPBIT|(((
283 +)))
284 +|(((
285 +AT+STOPBIT
286 +)))|(% style="width:285px" %)(((
287 +(((
254 254  Set serial stopbit (for RS485 connection)
289 +)))
255 255  
291 +(((
256 256  Default Value is: 1bit.
257 -)))|(((
293 +)))
294 +)))|(% style="width:347px" %)(((
295 +(((
258 258  AT+STOPBIT=0 for 1bit
297 +)))
259 259  
299 +(((
260 260  AT+STOPBIT=1 for 1.5 bit
301 +)))
261 261  
303 +(((
262 262  AT+STOPBIT=2 for 2 bits
263 263  )))
306 +)))
264 264  
308 +=== 3.3.2 Configure sensors ===
265 265  
310 +(((
311 +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**.
312 +)))
266 266  
314 +(((
315 +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.
316 +)))
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|(((
318 +(% border="1" style="background-color:#ffffcc; color:green; width:806px" %)
319 +|**AT Commands**|(% style="width:418px" %)**Description**|(% style="width:256px" %)**Example**
320 +|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
323 +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
325 +mm: 0: no CRC, 1: add CRC-16/MODBUS in the end of this command
326 +)))|(% 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  
330 +=== 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 -
332 +(((
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.
334 +)))
297 297  
298 -
336 +(((
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.
338 +)))
300 300  
301 -
340 +(((
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.
342 +)))
303 303  
304 -
344 +(((
305 305  This section describes how to achieve above goals.
346 +)))
306 306  
307 -
348 +(((
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.
350 +)))
309 309  
310 -
352 +(((
311 311  **Command from RS485-BL to Sensor:**
354 +)))
312 312  
356 +(((
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.
358 +)))
314 314  
315 -
360 +(((
316 316  **Handle return from sensors to RS485-BL**:
362 +)))
317 317  
364 +(((
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**
366 +)))
319 319  
368 +* (((
369 +**AT+DATACUT**
370 +)))
320 320  
321 -* **AT+DATACUT**
322 -
372 +(((
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.
374 +)))
324 324  
376 +* (((
377 +**AT+SEARCH**
378 +)))
325 325  
326 -* **AT+SEARCH**
327 -
380 +(((
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.
382 +)))
329 329  
330 -
384 +(((
331 331  **Define wait timeout:**
386 +)))
332 332  
388 +(((
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
390 +)))
334 334  
335 -
392 +(((
336 336  After we got the valid value from each RS485 commands, we need to combine them together with the command **AT+DATAUP**.
394 +)))
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 -|(((
402 +(% border="1" class="table-bordered" style="background-color:#4f81bd; color:white; width:501px" %)
403 +|(% 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 -|(((
417 +(% border="1" class="table-bordered" style="background-color:#4f81bd; color:white; width:580px" %)
418 +|(% 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:
425 +**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
431 +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]]
433 +[[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
439 +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]]
441 +[[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 -|(((
445 +(% style="background-color:#4f81bd; color:white; width:729px" %)
446 +|(% 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]]
458 +[[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]]
462 +[[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]]
466 +[[image:1653271657255-576.png||height="305" width="730"]]
413 413  
468 +(((
469 +(% style="color:red" %)**Note:**
470 +)))
414 414  
415 -Note:
416 -
472 +(((
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.
474 +)))
418 418  
419 -Example:
476 +(((
477 +**Example:**
478 +)))
420 420  
421 -AT+COMMAND1=11 01 1E D0,0
480 +(((
481 +(% style="color:red" %)AT+COMMAND1=11 01 1E D0,0
482 +)))
422 422  
423 -AT+SEARCH1=1,1E 56 34
484 +(((
485 +(% style="color:red" %)AT+SEARCH1=1,1E 56 34
486 +)))
424 424  
425 -AT+DATACUT1=0,2,1~~5
488 +(((
489 +(% style="color:red" %)AT+DATACUT1=0,2,1~~5
490 +)))
426 426  
427 -Return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
492 +(((
493 +(% style="color:red" %)Return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
494 +)))
428 428  
429 -String after SEARCH command: 2e 30 58 5f 36 41 30 31 00 49
496 +(((
497 +(% style="color:red" %)String after SEARCH command: 2e 30 58 5f 36 41 30 31 00 49
498 +)))
430 430  
431 -Valid payload after DataCUT command: 2e 30 58 5f 36
500 +(((
501 +(% style="color:red" %)Valid payload after DataCUT command: 2e 30 58 5f 36
502 +)))
432 432  
433 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image018.png]]
504 +[[image:1653271763403-806.png]]
434 434  
506 +=== 3.3.4 Compose the uplink payload ===
435 435  
436 -
437 -
438 -1.
439 -11.
440 -111. Compose the uplink payload
441 -
508 +(((
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.**
510 +)))
443 443  
512 +(((
513 +(% style="color:#4f81bd" %)**Examples: AT+DATAUP=0**
514 +)))
444 444  
445 -**Examples: AT+DATAUP=0**
516 +(((
517 +Compose the uplink payload with value returns in sequence and send with (% style="color:red" %)**A SIGNLE UPLINK**.
518 +)))
446 446  
447 -Compose the uplink payload with value returns in sequence and send with **A SIGNLE UPLINK**.
448 -
520 +(((
449 449  Final Payload is
522 +)))
450 450  
451 -Battery Info+PAYVER + VALID Value from RETURN1 + Valid Value from RETURN2 + … + RETURNx
524 +(((
525 +(% style="color:#4f81bd" %)Battery Info+PAYVER + VALID Value from RETURN1 + Valid Value from RETURN2 + … + RETURNx
526 +)))
452 452  
528 +(((
453 453  Where PAYVER is defined by AT+PAYVER, below is an example screen shot.
530 +)))
454 454  
455 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image019.png]]
532 +[[image:1653272787040-634.png||height="515" width="719"]]
456 456  
534 +(((
535 +(% style="color:#4f81bd" %)**Examples: AT+DATAUP=1**
536 +)))
457 457  
538 +(((
539 +Compose the uplink payload with value returns in sequence and send with (% style="color:red" %)**Multiply UPLINKs**.
540 +)))
458 458  
459 -**Examples: AT+DATAUP=1**
460 -
461 -Compose the uplink payload with value returns in sequence and send with **Multiply UPLINKs**.
462 -
542 +(((
463 463  Final Payload is
544 +)))
464 464  
465 -Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA
546 +(((
547 +(% style="color:#4f81bd" %)Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA
548 +)))
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
550 +1. (((
551 +Battery Info (2 bytes): Battery voltage
552 +)))
553 +1. (((
554 +PAYVER (1 byte): Defined by AT+PAYVER
555 +)))
556 +1. (((
557 +PAYLOAD COUNT (1 byte): Total how many uplinks of this sampling.
558 +)))
559 +1. (((
560 +PAYLOAD# (1 byte): Number of this uplink. (from 0,1,2,3…,to PAYLOAD COUNT)
561 +)))
562 +1. (((
563 +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
564 +)))
472 472  
473 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image020.png]]
566 +[[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
570 +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
572 +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
574 +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]]
578 +[[image:1653272901032-107.png]]
489 489  
580 +(% 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  
590 +=== 3.3.5 Uplink on demand ===
501 501  
502 -
503 -1.
504 -11.
505 -111. Uplink on demand
506 -
592 +(((
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.
594 +)))
508 508  
596 +(((
509 509  Downlink control command:
598 +)))
510 510  
511 -[[0x08 command>>path:#downlink_08]]: Poll an uplink with current command set in RS485-BL.
600 +(((
601 +**0x08 command**: Poll an uplink with current command set in RS485-BL.
602 +)))
512 512  
513 -[[0xA8 command>>path:#downlink_A8]]: Send a command to RS485-BL and uplink the output from sensors.
604 +(((
605 +**0xA8 command**: Send a command to RS485-BL and uplink the output from sensors.
606 +)))
514 514  
608 +=== 3.3.6 Uplink on Interrupt ===
515 515  
610 +Put the interrupt sensor between 3.3v_out and GPIO ext.
516 516  
517 -1.
518 -11.
519 -111. Uplink on Interrupt
612 +[[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 -
614 +(((
523 523  AT+INTMOD=0  Disable Interrupt
616 +)))
524 524  
618 +(((
525 525  AT+INTMOD=1  Interrupt trigger by rising or falling edge.
620 +)))
526 526  
622 +(((
527 527  AT+INTMOD=2  Interrupt trigger by falling edge. ( Default Value)
624 +)))
528 528  
626 +(((
529 529  AT+INTMOD=3  Interrupt trigger by rising edge.
628 +)))
530 530  
630 +== 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|(((
632 +(% border="1" style="background-color:#4f81bd; color:white; width:850px" %)
633 +|**Size(bytes)**|(% style="width:130px" %)**2**|(% style="width:93px" %)**1**|(% style="width:509px" %)**Length depends on the return from the commands**
634 +|Value|(% style="width:130px" %)(((
635 +(((
537 537  Battery(mV)
637 +)))
538 538  
639 +(((
539 539  &
641 +)))
540 540  
643 +(((
541 541  Interrupt _Flag
542 -)))|(((
645 +)))
646 +)))|(% 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.
650 +)))|(% 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 -
654 +(((
551 551  function Decoder(bytes, port) {
656 +)))
552 552  
658 +(((
553 553  ~/~/Payload Formats of RS485-BL Deceive
660 +)))
554 554  
662 +(((
555 555  return {
664 +)))
556 556  
666 +(((
557 557   ~/~/Battery,units:V
668 +)))
558 558  
670 +(((
559 559   BatV:((bytes[0]<<8 | bytes[1])&0x7fff)/1000,
672 +)))
560 560  
674 +(((
561 561   ~/~/GPIO_EXTI 
676 +)))
562 562  
678 +(((
563 563   EXTI_Trigger:(bytes[0] & 0x80)? "TRUE":"FALSE",
680 +)))
564 564  
682 +(((
565 565   ~/~/payload of version
684 +)))
566 566  
686 +(((
567 567   Pay_ver:bytes[2],
688 +)))
568 568  
690 +(((
569 569   };
692 +)))
570 570  
694 +(((
571 571   }
696 +)))
572 572  
573 -
574 -
575 -
576 -
577 -
578 -
698 +(((
579 579  TTN V3 uplink screen shot.
700 +)))
580 580  
581 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image023.png]]
702 +[[image:1653274001211-372.png||height="192" width="732"]]
582 582  
583 -1.
584 -11. Configure RS485-BL via AT or Downlink
704 +== 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