<
From version < 50.1 >
edited by Xiaoling
on 2022/09/02 18:11
To version < 44.2 >
edited by Xiaoling
on 2022/07/14 15:42
>
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -9,7 +9,6 @@
9 9  Dragino LoRa/LoRaWAN gateway support MQTT forwarding. It can forward the sensor data from LoRa network to MQTT server , and vice verse.
10 10  
11 11  
12 -
13 13  == 1.1  Support Devices ==
14 14  
15 15  
... ... @@ -16,7 +16,7 @@
16 16  This MQTT forward instruction is for below devices:
17 17  
18 18  * Firmware Version > LG02_LG08-5.3.1580178039 [[Firmware Download>>url:http://www.dragino.com/downloads/index.php?dir=LoRa_Gateway/LPS8/Firmware/Release/]]
19 -* LG01N, OLG01N ((% style="color:red" %)**Warning**(%%): LG01-P LG01-S use another instruction: [[MQTT for LG01-P/LG01S>>doc:Main.Through MQTT to upload data.WebHome]])
18 +* LG01N, OLG01N ((% style="color:red" %)**Warning**(%%): LG01-P LG01-S use another instruction: [[MQTT for LG01-P/LG01S>>doc:Through MQTT to upload data.WebHome]])
20 20  * LG02, OLG02
21 21  * LG308, DLOS8
22 22  * LPS8
... ... @@ -25,6 +25,7 @@
25 25  
26 26  
27 27  
27 +
28 28  = 2.  Firmware Change Log for MQTT feature =
29 29  
30 30  
... ... @@ -37,40 +37,32 @@
37 37  
38 38  
39 39  
40 -= 3.  MQTT forward operating principle =
41 41  
41 += 3. MQTT forward operating principle =
42 42  
43 -== 3.1  Network Structure ==
43 +== 3.1 Network Structure ==
44 44  
45 -
46 46  Below shows the network structure for MQTT forwarding.
47 47  
48 -* **For Uplink:**  The sensor sends data to LoRa Gateway via LoRa wireless, The gateway will process these data and forward to remote MQTT Broker via Internet.
49 -* **For Downlink:** The gateway subscribe a topic in the MQTT broker, when there is update on the topic, the gateway will know and broadcast the data to Local LoRa network.
47 +* For Uplink: The sensor sends data to LoRa Gateway via LoRa wireless, The gateway will process these data and forward to remote MQTT Broker via Internet.
48 +* For Downlink: The gateway subscribe a topic in the MQTT broker, when there is update on the topic, the gateway will know and broadcast the data to Local LoRa network,
50 50  
51 -
52 52  [[image:image-20220527133547-1.png]]
53 53  
54 54  General MQTT structure
55 55  
56 56  
55 +== 3.2 How sensor data is forwarded ==
57 57  
58 -== 3.2  How sensor data is forwarded ==
59 -
60 -
61 61  In this MQTT forward feature, the key point is how the gateway process the sensor data.
62 62  
63 63  
60 +=== 3.2.1 Upstream ===
64 64  
65 -=== 3.2.1  Upstream ===
66 -
67 -
68 68  Assume there are two sensor nodes, their ID are Node1 ID: 6734 , Node2 ID: 7456. In the remote MQTT broker there are two topics: Topic1: /channel/765800, Topic2: /channel/367860. We can set up in the gateway to map Node1 to Topic1 and Node2 to Topic2. So when there is a sensor data from Node1, the gateway will forward the data to Topic1, when there is sensor data from Node2, the gateway will forward to Topic2.
69 69  
70 70  (((
71 71  The data flow works as below diagram.
72 -
73 -
74 74  )))
75 75  
76 76  [[image:image-20220527134000-2.png]]
... ... @@ -77,29 +77,22 @@
77 77  
78 78  (((
79 79  Upstream path
80 -
81 -
82 82  )))
83 83  
84 84  (((
85 -(% style="color:red" %)**Note: The sensor data can base or LoRa or other method, as long as there are data on the file /var/iot/channels. /span>**
75 +Note: The sensor data can base or LoRa or other method, as long as there are data on the file /var/iot/channels. /span>
86 86  )))
87 87  
88 88  (((
89 89  
90 -
91 -
92 92  )))
93 93  
94 -=== 3.2.2  Downstream ===
82 +=== 3.2.2 Downstream ===
95 95  
96 -
97 97  The gateway subscribes to a topic of the remote MQTT broker topic. When there is some one publish a value on this topic. The gateway will get it and broadcast to local LoRa Network.
98 98  
99 99  (((
100 100  Below are the data flow for downstream.
101 -
102 -
103 103  )))
104 104  
105 105  [[image:image-20220527134038-3.png]]
... ... @@ -107,22 +107,18 @@
107 107  Downstream path
108 108  
109 109  
95 +== 3.3 Macro Definition ==
110 110  
111 -== 3.3  Macro Definition ==
112 -
113 -
114 114  The MQTT publish command use Macro settings to generate flexible upstream payload for MQTT publish.
115 115  
116 116  (((
117 117  Currently the (% style="color:#4f81bd" %)**-t (topic)**(%%) and (% style="color:#4f81bd" %)**-m (message)**(%%) support Macros.
118 118  
119 -
120 120  
121 121  )))
122 122  
123 -=== 3.3.1  -t topic macro ===
105 +=== 3.3.1 -t topic macro ===
124 124  
125 -
126 126  * CHANNEL: Remote Channel ID
127 127  * CLIENTID: Client ID , Same as -i
128 128  * WRITE_API: Remote Channel Write API
... ... @@ -129,11 +129,8 @@
129 129  * USERNAME: User ID (-u)
130 130  * HOSTNAME: Device Hostname
131 131  
113 +=== 3.3.2 -m message macro ===
132 132  
133 -
134 -=== 3.3.2  -m message macro ===
135 -
136 -
137 137  * HOSTNAME: Device Hostname
138 138  * CHANNEL: Remote Channel ID
139 139  * DATA: Sensor Data without time stamp and rssi
... ... @@ -140,17 +140,14 @@
140 140  * META: Completely sensor data with time stamp and rssi
141 141  * JSON: Convert META to json format.
142 142  
121 +=== 3.3.3 Example for Macro ===
143 143  
144 -
145 -=== 3.3.3  Example for Macro ===
146 -
147 -
148 148  [[image:image-20220527134251-4.png]]
149 149  
150 150  MQTT Publish configure
151 151  
152 152  
153 -**Above screen shots shows below format:**
128 +Above screen shots shows below format:
154 154  
155 155  * -t: CLIENTID/CHANNEL/data
156 156  * -m: DATA
... ... @@ -167,10 +167,8 @@
167 167  )))
168 168  
169 169  
145 +== 3.4 Modify the MQTT to support more options ==
170 170  
171 -== 3.4  Modify the MQTT to support more options ==
172 -
173 -
174 174  The MQTT Client Utility used in Dragino is **mosquitto_pub** and **mosquitto_sub**. User can add more options to the mqtt commands. User can check the valid options by command mosquitto_pub ~-~-help. as below:
175 175  
176 176  (% class="box" %)
... ... @@ -188,9 +188,9 @@
188 188   [-u username [-P password]]
189 189   [~-~-will-topic [~-~-will-payload payload] [~-~-will-qos qos] [~-~-will-retain]]
190 190   [{~-~-cafile file | ~-~-capath dir} [~-~-cert file] [~-~-key file]
191 - [~-~-ciphers ciphers] [~-~-insecure]
192 - [~-~-tls-alpn protocol]
193 - [~-~-tls-engine engine] [~-~-keyform keyform] [~-~-tls-engine-kpass-sha1]]
164 + [~-~-ciphers ciphers] [~-~-insecure]
165 + [~-~-tls-alpn protocol]
166 + [~-~-tls-engine engine] [~-~-keyform keyform] [~-~-tls-engine-kpass-sha1]]
194 194   [~-~-psk hex-key ~-~-psk-identity identity [~-~-ciphers ciphers]]
195 195   [~-~-proxy socks-url]
196 196   [~-~-property command identifier value]
... ... @@ -295,20 +295,15 @@
295 295  )))
296 296  
297 297  
271 += 4. Example to communicate to a simple MQTT server =
298 298  
299 -= 4.  Example to communicate to a simple MQTT server =
273 +== 4.1 Overview ==
300 300  
301 -
302 -== 4.1  Overview ==
303 -
304 -
305 305  This section is an example to show how to set up LG01-N to communicate with a MQTT server. The MQTT server is a simple utility set up in a local PC. Note: User can set up same server via [[this instruction>>url:http://www.steves-internet-guide.com/install-mosquitto-broker/]].
306 306  
307 307  
278 +== 4.2 Simulate via MQTT.fx utility ==
308 308  
309 -== 4.2  Simulate via MQTT.fx utility ==
310 -
311 -
312 312  The [[MQTT.fx>>url:http://mqttfx.jensd.de/index.php/download]] is a MQTT client tool. We can use this to simulate a MQTT connection to our MQTT broker first to make sure the MQTT broker works. This will also help us understand how it works.
313 313  
314 314  (((
... ... @@ -334,16 +334,14 @@
334 334  Downstream: Subscribe a topic to get downstream
335 335  
336 336  
305 +== 4.3 Simulate via Dragino Command Line ==
337 337  
338 -== 4.3  Simulate via Dragino Command Line ==
339 -
340 -
341 341  For first try of MQTT connection, simulate via command line is recommend, there are many servers / connection type for MQTT. They are using different connection parameters. Simulating the connection via command line will help us rapidly connect to server and debug.
342 342  
343 343  In the Dragino Gateway, we use [[mosquitto client>>url:https://mosquitto.org/]] for MQTT connection.
344 344  
345 345  
346 -(% style="color:blue" %)**For Upstream**
312 +(% style="color:#4f81bd" %)**For Upstream**
347 347  
348 348  command is [[mosquitto_pub>>url:https://mosquitto.org/man/mosquitto_pub-1.html]]
349 349  
... ... @@ -356,9 +356,8 @@
356 356  mosquitto_pub
357 357  
358 358  
325 +(% style="color:#4f81bd" %)**For Downstream**
359 359  
360 -(% style="color:blue" %)**For Downstream**
361 -
362 362  Use [[mosquitto_sub>>url:https://mosquitto.org/man/mosquitto_sub-1.html]] to subscribe the change on the topic.
363 363  
364 364  [[image:image-20220527135440-10.png]]
... ... @@ -366,10 +366,8 @@
366 366  mosquitto_sub
367 367  
368 368  
334 +== 4.4 Configure Dragino UI for MQTT connection ==
369 369  
370 -== 4.4  Configure Dragino UI for MQTT connection ==
371 -
372 -
373 373  This chapter are step by step to show to configure the Dragino Menu for MQTT auto connection.
374 374  
375 375  (((
... ... @@ -376,7 +376,7 @@
376 376  Go to (% style="color:#4f81bd" %)**Dragino Menu ~-~-> MQTT Client**
377 377  )))
378 378  
379 -[[image:image-20220714155901-1.png]]
342 +[[image:https://wiki.dragino.com/images/thumb/b/bc/MQTT_Command_8.png/600px-MQTT_Command_8.png||height="249" width="600"]]
380 380  
381 381  go to mqtt configure menu
382 382  
... ... @@ -390,28 +390,24 @@
390 390  forward to MQTT
391 391  
392 392  
356 +=== 4.4.1 Configure the MQTT Client for Upstream ===
393 393  
394 -=== 4.4.1  Configure the MQTT Client for Upstream ===
358 +Below screenshot is same as the publish command:
395 395  
396 -
397 -**Below screenshot is same as the publish command:**
398 -
399 399  (% class="box" %)
400 400  (((
401 -**mosquitto_pub -h 192.168.199.148 -p 1883 -i dragino-1b7060 -t CLIENTID/CHANNEL/data -m DATA
362 +mosquitto_pub -h 192.168.199.148 -p 1883 -i dragino-1b7060 -t CLIENTID/CHANNEL/data -m DATA
402 402  ~/~/where the CLIENTID, CHANNEL & DATA are macro. represent for
403 403  ~/~/CLIENTID: dragino-1b7060
404 404  ~/~/CHANNEL: Remote ID in Channel settings; here is 78901 or 567456
405 -~/~/DATA: The data stores in /var/iot/channels/**
366 +~/~/DATA: The data stores in /var/iot/channels/
406 406  )))
407 407  
408 -
409 409  [[image:image-20220527135828-12.png]]
410 410  
411 411  MQTT Publish configure
412 412  
413 413  
414 -
415 415  [[image:image-20220527135929-13.png]]
416 416  
417 417  MQTT Channel settings
... ... @@ -440,10 +440,8 @@
440 440  MQTT Publish
441 441  
442 442  
402 +=== 4.4.2 Configure the MQTT Client for Downstream ===
443 443  
444 -=== 4.4.2  Configure the MQTT Client for Downstream ===
445 -
446 -
447 447  Below screen shot equal to this subscribe command:
448 448  
449 449  (% class="box" %)
... ... @@ -472,16 +472,13 @@
472 472  downstream simulation
473 473  
474 474  
475 -== 4.5  Add LoRa support to communicate with remote sensor ==
432 +== 4.5 Add LoRa support to communicate with remote sensor ==
476 476  
477 -
478 478  In above section, we have configured the UI to support MQTT upstream and downstream. We can simulate via Linux command. In this section, we will guide how to communicate with remote LoRa End Node for upstream and downstream.
479 479  
480 480  
437 +=== 4.5.1 Use LoRa Raw protocol for communication ~-~- For LG01/LG02 ===
481 481  
482 -=== 4.5.1  Use LoRa Raw protocol for communication ~-~- For LG01/LG02 ===
483 -
484 -
485 485  (((
486 486  We can use [[LoRa Shield>>url:http://www.dragino.com/products/lora/item/102-lora-shield.html]] to send LoRa Raw data to Gateway and receive data from gateway.
487 487  )))
... ... @@ -492,8 +492,6 @@
492 492  
493 493  (((
494 494  And this link is the required library: [[arduino-LoRa-master>>url:http://www.dragino.com/downloads/index.php?dir=LoraShield/]]. Unzip this library and put in Arduino library location.
495 -
496 -
497 497  )))
498 498  
499 499  (((
... ... @@ -504,7 +504,6 @@
504 504  * Downstream: Listening broadcast message from gateway, and print it in console.
505 505  * The LoRa parameter settings in Arduino should match the LoRa settings in gateway, as below:
506 506  
507 -
508 508  [[image:image-20220527140354-18.png]]
509 509  
510 510  LoRa Parameter should match
... ... @@ -524,10 +524,8 @@
524 524  Downstream Data Flow
525 525  
526 526  
478 +=== 4.5.2 Use LoRaWAN Protocol for communication ~-~- For LG308/LPS8/DLOS8 ===
527 527  
528 -=== 4.5.2  Use LoRaWAN Protocol for communication ~-~- For LG308/LPS8/DLOS8 ===
529 -
530 -
531 531  (((
532 532  Since firmware (% style="color:#4f81bd" %)**LG02_LG08~-~-build-v5.3.1585192026-20200326-1109,**(%%) Dragino LoRaWAN gateways support the communication to LoRaWAN (% style="color:#4f81bd" %)**ABP end node**(%%) locally without the need of LoRaWAN server. This feature allow us to integrate MQTT in the gateway to support LoRaWAN to MQTT forwarding or visa verse.
533 533  )))
... ... @@ -534,17 +534,15 @@
534 534  
535 535  (((
536 536  When use test this feature, please use the version higher then : (% style="color:#4f81bd" %)**LG02_LG08~-~-build-v5.4.1593400722-20200629-1120**(%%), in this version, the upload format is changed and readable, which is easier for integration.
537 -
538 -
539 -(% style="color:blue" %)**Video Instruction**(%%): (% style="color:blue" %)[[https:~~/~~/youtu.be/qJTY441-t90>>url:https://youtu.be/qJTY441-t90]]
486 +(% style="color:#4f81bd" %)**Video Instruction**(%%): (% style="color:blue" %)[[https:~~/~~/youtu.be/qJTY441-t90>>url:https://youtu.be/qJTY441-t90]]
540 540  )))
541 541  
542 542  (((
543 -(% style="color:blue" %)**Step 1**(%%): Refer [[Communicate with ABP End Node>>Communicate with ABP End Node without LoRaWAN Network Server --- LG308]] to know how to set up LG308 to work with LoRaWAN End node.
490 +(% style="color:#4f81bd" %)**Step 1**(%%): Refer [[Communicate with ABP End Node>>Communicate with ABP End Node without LoRaWAN Network Server --- LG308]] to know how to set up LG308 to work with LoRaWAN End node.
544 544  )))
545 545  
546 546  (((
547 -(% style="color:blue" %)**Step 2**(%%): Make sure your Radio settings match the End Node settings.
494 +(% style="color:#4f81bd" %)**Step 2**(%%): Make sure your Radio settings match the End Node settings.
548 548  )))
549 549  
550 550  [[image:image-20220527141235-21.png]]
... ... @@ -554,7 +554,7 @@
554 554  
555 555  (((
556 556  (((
557 -(% style="color:blue" %)**Step 3**(%%): Set up publish format and MQTT channel. The LG308 will store the Data from End node in (% style="color:#4f81bd" %)**HEX format**(%%) in the file.
504 +(% style="color:#4f81bd" %)**Step 3**(%%): Set up publish format and MQTT channel. The LG308 will store the Data from End node in (% style="color:#4f81bd" %)**HEX format**(%%) in the file.
558 558  )))
559 559  )))
560 560  
... ... @@ -562,13 +562,13 @@
562 562  
563 563  
564 564  
565 -(% style="color:blue" %)**Step 4**(%%): Map the Device Address to Remote ID in MQTT server.
512 +(% style="color:#4f81bd" %)**Step 4**(%%): Map the Device Address to Remote ID in MQTT server.
566 566  
567 567  [[image:image-20220613190635-2.png]]
568 568  
569 569  
570 570  
571 -(% style="color:blue" %)**Step 5: Upstream**(%%): Save the change, we can see the log info via "sytem log", End Node and MQTT Server
518 +(% style="color:#4f81bd" %)**Step 5: Upstream**(%%): Save the change, we can see the log info via "sytem log", End Node and MQTT Server
572 572  
573 573  [[image:image-20220527141843-24.png]]
574 574  
... ... @@ -587,19 +587,19 @@
587 587  
588 588  
589 589  
590 -(% style="color:blue" %)**Step 6: Set up subscribe**(%%)**:** Subscribe a topci for downstream.
537 +(% style="color:#4f81bd" %)**Step 6: Set up subscribe**(%%)**:** Subscribe a topci for downstream.
591 591  
592 592  [[image:image-20220613191426-5.png]]
593 593  
594 594  
595 595  
596 -(% style="color:blue" %)**Step 7: Downstream**(%%): Save the change, we can see the log info via "sytem log", End Node and MQTT Server.
543 +(% style="color:#4f81bd" %)**Step 7: Downstream**(%%): Save the change, we can see the log info via "sytem log", End Node and MQTT Server.
597 597  
598 598  [[image:image-20220527142239-28.png]]
599 599  
600 600  
601 601  
602 -=== 4.5.3 MQTT Downstream format ===
549 +=== MQTT Downstream format ===
603 603  
604 604  
605 605  mosquitto_pub -h $server_address -p $server_port -t $Client_ID -m "**dev_addr,imme/time,txt/hex,payload**"
... ... @@ -606,7 +606,7 @@
606 606  
607 607  (% class="box infomessage" %)
608 608  (((
609 -**mosquitto_pub -h 10.130.2.192 -p 1883 -t dragino-1d25dc/ -m "260211D,time,txt,hello"**
556 +mosquitto_pub -h 10.130.2.192 -p 1883 -t dragino-1d25dc/ -m "260211D,time,txt,hello"
610 610  )))
611 611  
612 612  mosquitto_pub -h $server_address -p $server_port -t $Client_ID -m "**dev_addr,imme/time,txt/hex,payload,txpw,txbw,SF,frequency,rxwindow**"
... ... @@ -613,7 +613,7 @@
613 613  
614 614  (% class="box infomessage" %)
615 615  (((
616 -**mosquitto_pub -h 10.130.2.192 -p 1883 -t dragino-1d25dc/ -m "260211D,time,txt,hello,20,1,SF12,923300000,2"**
563 +mosquitto_pub -h 10.130.2.192 -p 1883 -t dragino-1d25dc/ -m "260211D,time,txt,hello,20,1,SF12,923300000,2 > /var/iot/push/test"
617 617  )))
618 618  
619 619  Or use [[MQTT.fx>>https://mqttfx.jensd.de/index.php/download]]
... ... @@ -620,24 +620,17 @@
620 620  
621 621  [[image:image-20220613192816-6.png||height="440" width="1056"]]
622 622  
623 -
624 624  (% style="color:red" %)**Notice: The text use for Downstream must meet the requirement from [[LG308 Downstream Payload>>Communicate with ABP End Node without LoRaWAN Network Server --- LG308||anchor="H2.2Downstream"]]**
625 625  
626 -
627 627  Check out this link for more mosquito-related directives [[https:~~/~~/mosquitto.org/man/mosquitto_pub-1.html>>https://mosquitto.org/man/mosquitto_pub-1.html]]
628 628  
574 += 5. How to Debug =
629 629  
630 -
631 -= 5.  How to Debug =
632 -
633 -
634 634  User can login the gateway's console and run (% style="color:#4f81bd" %)**logread -f**(%%). It will shows the output when there is packet arrive.User can see if it is correct.
635 635  
636 636  
579 += 6. How to ask for Support =
637 637  
638 -= 6.  How to ask for Support =
639 -
640 -
641 641  If a user still not have trouble making it works. please send a mail to support@dragino.com with the below info:
642 642  
643 643  * Detail of your LoRaWAN end node.
image-20220714155901-1.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -75.2 KB
Content
Copyright ©2010-2022 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0