Changes for page MQTT Forward Instruction
Last modified by Kilight Cao on 2024/08/31 16:26
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Attachments (0 modified, 0 added, 6 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,21 +1,19 @@ 1 -**~ Table ofContents:**1 +**~ Contents:** 2 2 3 3 {{toc/}} 4 4 5 5 6 -= 1. 6 += 1. Introduction = 7 7 8 - 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 -== 1.1 11 +== 1.1 Support Devices == 13 13 14 - 15 15 This MQTT forward instruction is for below devices: 16 16 17 17 * Firmware Version > LG02_LG08-5.3.1580178039 [[Firmware Download>>url:http://www.dragino.com/downloads/index.php?dir=LoRa_Gateway/LPS8/Firmware/Release/]] 18 -* LG01N, OLG01N ((% style="color:red" %)**Warning**(%%): LG01-P LG01-S use another instruction: [[MQTT for LG01-P/LG01S>>doc :Through.WebHome]])16 +* LG01N, OLG01N ((% style="color:red" %)**Warning**(%%): LG01-P LG01-S use another instruction: [[MQTT for LG01-P/LG01S>>url:https://wiki.dragino.com/index.php/Through_MQTT_to_upload_data]]) 19 19 * LG02, OLG02 20 20 * LG308, DLOS8 21 21 * LPS8 ... ... @@ -24,9 +24,8 @@ 24 24 25 25 26 26 27 -= 2. 25 += 2. Firmware Change Log for MQTT feature = 28 28 29 - 30 30 ((( 31 31 This instruction is wrote start from LG02_LG08-5.3.1580178039. Below is related change log since this version of firmware. 32 32 ))) ... ... @@ -36,16 +36,14 @@ 36 36 37 37 38 38 39 -= 3. 36 += 3. MQTT forward operating principle = 40 40 38 +== 3.1 Network Structure == 41 41 42 -== 3.1 Network Structure == 43 - 44 - 45 45 Below shows the network structure for MQTT forwarding. 46 46 47 -* **For Uplink:**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,42 +* 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. 43 +* 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, 49 49 50 50 [[image:image-20220527133547-1.png]] 51 51 ... ... @@ -52,13 +52,12 @@ 52 52 General MQTT structure 53 53 54 54 55 -== 3.2 50 +== 3.2 How sensor data is forwarded == 56 56 57 - 58 58 In this MQTT forward feature, the key point is how the gateway process the sensor data. 59 59 60 60 61 -=== 3.2.1 55 +=== 3.2.1 Upstream === 62 62 63 63 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. 64 64 ... ... @@ -70,12 +70,10 @@ 70 70 71 71 ((( 72 72 Upstream path 73 - 74 - 75 75 ))) 76 76 77 77 ((( 78 - (% 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>**70 +Note: The sensor data can base or LoRa or other method, as long as there are data on the file /var/iot/channels. /span> 79 79 ))) 80 80 81 81 ((( ... ... @@ -82,9 +82,8 @@ 82 82 83 83 ))) 84 84 85 -=== 3.2.2 77 +=== 3.2.2 Downstream === 86 86 87 - 88 88 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. 89 89 90 90 ((( ... ... @@ -96,9 +96,8 @@ 96 96 Downstream path 97 97 98 98 99 -== 3.3 90 +== 3.3 Macro Definition == 100 100 101 - 102 102 The MQTT publish command use Macro settings to generate flexible upstream payload for MQTT publish. 103 103 104 104 ((( ... ... @@ -107,9 +107,8 @@ 107 107 108 108 ))) 109 109 110 -=== 3.3.1 100 +=== 3.3.1 -t topic macro === 111 111 112 - 113 113 * CHANNEL: Remote Channel ID 114 114 * CLIENTID: Client ID , Same as -i 115 115 * WRITE_API: Remote Channel Write API ... ... @@ -116,12 +116,8 @@ 116 116 * USERNAME: User ID (-u) 117 117 * HOSTNAME: Device Hostname 118 118 108 +=== 3.3.2 -m message macro === 119 119 120 - 121 - 122 -=== 3.3.2 -m message macro === 123 - 124 - 125 125 * HOSTNAME: Device Hostname 126 126 * CHANNEL: Remote Channel ID 127 127 * DATA: Sensor Data without time stamp and rssi ... ... @@ -128,19 +128,14 @@ 128 128 * META: Completely sensor data with time stamp and rssi 129 129 * JSON: Convert META to json format. 130 130 116 +=== 3.3.3 Example for Macro === 131 131 132 - 133 - 134 -=== 3.3.3 Example for Macro === 135 - 136 - 137 137 [[image:image-20220527134251-4.png]] 138 138 139 139 MQTT Publish configure 140 140 122 +Above screen shots shows below format: 141 141 142 -**Above screen shots shows below format:** 143 - 144 144 * -t: CLIENTID/CHANNEL/data 145 145 * -m: DATA 146 146 ... ... @@ -150,16 +150,13 @@ 150 150 151 151 Sensor Data 152 152 153 - 154 154 ((( 155 155 According to above macro. Gateway will publish (% style="color:#4f81bd" %)**field1=22.0&field2=49.0**(%%) to topic: (% style="color:#4f81bd" %)**dragino-1b7060/78901/data**(%%), where 78901 is the remote channel for this node ID. 156 156 ))) 157 157 158 158 138 +== 3.4 Modify the MQTT to support more options == 159 159 160 -== 3.4 Modify the MQTT to support more options == 161 - 162 - 163 163 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: 164 164 165 165 (% class="box" %) ... ... @@ -177,9 +177,9 @@ 177 177 [-u username [-P password]] 178 178 [~-~-will-topic [~-~-will-payload payload] [~-~-will-qos qos] [~-~-will-retain]] 179 179 [{~-~-cafile file | ~-~-capath dir} [~-~-cert file] [~-~-key file] 180 - [~-~-ciphers ciphers] [~-~-insecure] 181 - [~-~-tls-alpn protocol] 182 - [~-~-tls-engine engine] [~-~-keyform keyform] [~-~-tls-engine-kpass-sha1]] 157 + [~-~-ciphers ciphers] [~-~-insecure] 158 + [~-~-tls-alpn protocol] 159 + [~-~-tls-engine engine] [~-~-keyform keyform] [~-~-tls-engine-kpass-sha1]] 183 183 [~-~-psk hex-key ~-~-psk-identity identity [~-~-ciphers ciphers]] 184 184 [~-~-proxy socks-url] 185 185 [~-~-property command identifier value] ... ... @@ -359,7 +359,6 @@ 359 359 360 360 go to mqtt configure menu 361 361 362 - 363 363 ((( 364 364 Select (% style="color:#4f81bd" %)**Forward to MQTT server**. (% style="color:red" %)**Notice**(%%): This option is removed from the latest firmware, in the latest firmware, if user submit "SAVE & APPLY" in MQTT page, the gateway will use MQTT service. 365 365 ))) ... ... @@ -477,7 +477,6 @@ 477 477 LoRa Parameter should match 478 478 479 479 480 - 481 481 Below is the test result after the Arduino Sketch is running. 482 482 483 483 [[image:image-20220527140459-19.png]] ... ... @@ -485,7 +485,6 @@ 485 485 Upstream Data Flow 486 486 487 487 488 - 489 489 [[image:image-20220527140542-20.png]] 490 490 491 491 Downstream Data Flow ... ... @@ -517,18 +517,20 @@ 517 517 518 518 ((( 519 519 ((( 520 -(% 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. 494 +(% 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. And we need to config the format to (% style="color:#4f81bd" %)**META** 521 521 ))) 522 522 ))) 523 523 524 -[[image:image-20220 613191345-4.png]]498 +[[image:image-20220527141450-22.png]] 525 525 500 +Publish mush use META as data format for LG308 526 526 527 527 528 528 (% style="color:#4f81bd" %)**Step 4**(%%): Map the Device Address to Remote ID in MQTT server. 529 529 530 -[[image:image-20220 613190635-2.png]]505 +[[image:image-20220527141727-23.png]] 531 531 507 +Map Dev Addr to remote ID 532 532 533 533 534 534 (% style="color:#4f81bd" %)**Step 5: Upstream**(%%): Save the change, we can see the log info via "sytem log", End Node and MQTT Server ... ... @@ -535,25 +535,24 @@ 535 535 536 536 [[image:image-20220527141843-24.png]] 537 537 514 +Upstream Process 538 538 539 539 540 - 541 541 [[image:image-20220527141933-25.png]] 542 542 543 543 Choose ASCII Format 544 544 545 545 546 - 547 547 [[image:image-20220527142028-26.png]] 548 548 549 549 LHT65 Decoder 550 550 551 551 552 - 553 553 (% style="color:#4f81bd" %)**Step 6: Set up subscribe**(%%)**:** Subscribe a topci for downstream. 554 554 555 -[[image:image-20220 613191426-5.png]]529 +[[image:image-20220527142115-27.png]] 556 556 531 +Subscribe to a topic 557 557 558 558 559 559 (% style="color:#4f81bd" %)**Step 7: Downstream**(%%): Save the change, we can see the log info via "sytem log", End Node and MQTT Server. ... ... @@ -560,33 +560,11 @@ 560 560 561 561 [[image:image-20220527142239-28.png]] 562 562 538 +Downstream Flow 563 563 540 +(% style="color:red" %)**Notice: The text use for Downstream must meet the requirement from [[LG308 Downstream Payload>>http://wiki1.dragino.com/xwiki/bin/view/Main/Communicate%20with%20ABP%20End%20Node%20without%20LoRaWAN%20Network%20Server%20---%20LG308/#H2.2Downstream]]** 564 564 565 -=== MQTT Downstream format === 566 566 567 - 568 -mosquitto_pub -h $server_address -p $server_port -t $Client_ID -m "**dev_addr,imme/time,txt/hex,payload**" 569 - 570 -(% class="box infomessage" %) 571 -((( 572 -mosquitto_pub -h 10.130.2.192 -p 1883 -t dragino-1d25dc/ -m "260211D,time,txt,hello" 573 -))) 574 - 575 -mosquitto_pub -h $server_address -p $server_port -t $Client_ID -m "**dev_addr,imme/time,txt/hex,payload,txpw,txbw,SF,frequency,rxwindow**" 576 - 577 -(% class="box infomessage" %) 578 -((( 579 -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" 580 -))) 581 - 582 -Or use [[MQTT.fx>>https://mqttfx.jensd.de/index.php/download]] 583 - 584 -[[image:image-20220613192816-6.png||height="440" width="1056"]] 585 - 586 -(% 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"]]** 587 - 588 -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]] 589 - 590 590 = 5. How to Debug = 591 591 592 592 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.
- image-20220613190254-1.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Kilight - Size
-
... ... @@ -1,1 +1,0 @@ 1 -55.7 KB - Content
- image-20220613190635-2.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Kilight - Size
-
... ... @@ -1,1 +1,0 @@ 1 -44.1 KB - Content
- image-20220613191154-3.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Kilight - Size
-
... ... @@ -1,1 +1,0 @@ 1 -56.1 KB - Content
- image-20220613191345-4.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Kilight - Size
-
... ... @@ -1,1 +1,0 @@ 1 -55.4 KB - Content
- image-20220613191426-5.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Kilight - Size
-
... ... @@ -1,1 +1,0 @@ 1 -55.8 KB - Content
- image-20220613192816-6.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Kilight - Size
-
... ... @@ -1,1 +1,0 @@ 1 -22.1 KB - Content