<
From version < 50.1 >
edited by Xiaoling
on 2022/05/31 14:38
To version < 50.2 >
edited by Xiaoling
on 2022/09/02 18:10
>
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,4 +1,4 @@
1 -**Contents: **
1 +**Table of Contents: **
2 2  
3 3  {{toc/}}
4 4  
... ... @@ -7,11 +7,14 @@
7 7  
8 8  = 1. What is MQTT API? =
9 9  
10 -{{{MQTT is a publish/subscribe model that runs over TCP/IP sockets or WebSockets. MQTT over WebSockets can be secured with SSL.}}}
11 11  
11 +MQTT is a publish/subscribe model that runs over TCP/IP sockets or WebSockets. MQTT over WebSockets can be secured with SSL.
12 12  
13 +
14 +
13 13  = 2. MQTT Features =
14 14  
17 +
15 15  The MQTT protocol runs on TCP / IP or other network protocols and provides an ordered, lossless, bidirectional connection. Features include:
16 16  
17 17  * The publish / subscribe messaging pattern used, which provides one-to-many messaging for decoupling from the application.
... ... @@ -24,10 +24,15 @@
24 24  
25 25  
26 26  
30 +
31 +
27 27  = 3. What does this example shows? How it works? =
28 28  
34 +
29 29  (((
30 30  The server we use here is ThingSpeak which has an intuitive chart to show the test result for our test.The ThingSpeak IoT service now supports MQTT subscriptions to receive instant updates when [[ThingSpeak>>url:https://thingspeak.com/]] channel gets updated. The method here is general and can be used with other IoT servers for MQTT connection as well.
37 +
38 +
31 31  )))
32 32  
33 33  [[image:image-20220531135402-1.png]]
... ... @@ -40,6 +40,7 @@
40 40  working principle
41 41  
42 42  
51 +
43 43  [[image:image-20220531135521-3.png]]
44 44  
45 45  (((
... ... @@ -50,6 +50,7 @@
50 50  
51 51  [[image:image-20220531135607-4.png]]
52 52  
62 +
53 53  (((
54 54  Schematic diagram:downlink.In this section, we will try to program LG01 to fetch download data from ThingSpeak, then broadcast this data to local LoRa network. The end node will get this message and check if they need to do something. Similar with Uplink Example, we will first try to do it in PC, then do it in Linux side, and finally integrate it with LoRa.
55 55  )))
... ... @@ -66,9 +66,13 @@
66 66  
67 67  = 4. Preparation =
68 68  
79 +
69 69  == 4.1 Hardware ==
70 70  
82 +
71 71  1. [[image:image-20220531135650-5.png]](((
84 +
85 +
72 72  Listening on the LoRa wireless channel, while there is new LoRa packet arrives, parse it and send out to IoT Server.
73 73  
74 74  
... ... @@ -75,11 +75,17 @@
75 75  
76 76  )))
77 77  1. [[image:image-20220531135750-6.png]](((
92 +
93 +
78 78  The LoRa End node keeps getting temperature and humidity from the sensor and sends out via LoRa periodically.
95 +
96 +
97 +
79 79  )))
80 80  
81 81  == 4.2 Software ==
82 82  
102 +
83 83  1. [[4.3.4 version>>url:http://www.dragino.com/downloads/index.php?dir=motherboards/ms14/Firmware/IoT/]]
84 84  1. [[MQTT_Client>>url:https://github.com/dragino/Arduino-Profile-Examples/tree/master/libraries/Dragino/examples/IoTServer/ThingSpeak/MQTT_Client]]
85 85  1. [[MQTT_Simple_Server MQTT_Simeple_Server>>url:https://github.com/dragino/Arduino-Profile-Examples/tree/master/libraries/Dragino/examples/LoRa/MQTT_Simple_Server]]
... ... @@ -87,14 +87,20 @@
87 87  
88 88  
89 89  
110 +
111 +
90 90  == 4.3 Server(For example) ==
91 91  
114 +
92 92  * [[ThingSpeak>>url:https://thingspeak.com/]]
93 93  
94 94  
95 95  
119 +
120 +
96 96  == 4.4 Configure IoT Server ==
97 97  
123 +
98 98  * Need this keys:
99 99  
100 100  1. [[image:image-20220531140054-8.png]](((
... ... @@ -104,6 +104,8 @@
104 104  
105 105  )))
106 106  1. [[image:image-20220531140326-13.png]](((
133 +
134 +
107 107  Account->My Profile,MQTT API Key
108 108  
109 109  
... ... @@ -119,8 +119,9 @@
119 119  == 4.5 Configure LG01 settings ==
120 120  
121 121  
122 -Tips:Please confirm that your LG01 version is 4.3.3.
150 +Tips:  Please confirm that your LG01 version is 4.3.3.
123 123  
152 +
124 124  [[image:image-20220531140248-11.png]]
125 125  
126 126  **Overview**
... ... @@ -132,6 +132,7 @@
132 132  **Senosor->IOT Server**
133 133  
134 134  
164 +
135 135  [[image:image-20220531140458-15.png]]
136 136  
137 137  **MQTT->Configure MQTT Server**
... ... @@ -152,29 +152,44 @@
152 152  
153 153  [[image:image-20220531140651-18.png]]
154 154  
185 +
155 155  Configure network access.**Network->Internet Access**
156 156  
157 157  
189 +
158 158  == 4.6 Try MQTT API call with LG01 Linux command ==
159 159  
192 +
160 160  === 4.6.1 Input the command at the console ===
161 161  
195 +
162 162  1. [[image:image-20220531140811-19.png]](((
197 +
198 +
163 163  Open this Application.
164 164  
201 +
165 165  
166 166  )))
167 167  1. [[image:image-20220531140842-20.png]](((
205 +
206 +
168 168  Input passward(dragino).After into the console.
169 169  
209 +
170 170  
171 171  )))
172 172  1. [[image:image-20220531140915-21.png]](((
213 +
214 +
173 173  First, we need to make sure the LG01 has internet access. We can log in the SSH and ping an Internet address and see if it get through. As below
174 174  
217 +
175 175  
176 176  )))
177 177  1. [[image:image-20220531140955-22.png]](((
221 +
222 +
178 178  LG01 has built-in Linux tool mosquitto. It is a very powerful tool for http communication. We can use this tool to handle MQTT API call in LG01. Input this command and replace your keys.
179 179  
180 180  
... ... @@ -181,7 +181,11 @@
181 181  
182 182  )))
183 183  1. [[image:image-20220531141026-23.png]](((
229 +
230 +
184 184  Go to Server check out result.We success to use LG01 to uplink data to ThingSpeak,the mosquitto_pub command is executed in the Linux side, finally, we will have to call mosquitto_pub command with sensor data variable in Arduino side. This is through the process class in Arduino and we will show it in the final sketch.
232 +
233 +
185 185  )))
186 186  
187 187  * This command:
... ... @@ -201,9 +201,13 @@
201 201  )))
202 202  
203 203  
253 +
204 204  === 4.6.2 Input the command at the console(LG01 new version:4.3.4) ===
205 205  
256 +
206 206  1. [[image:image-20220531141150-24.png]](((
258 +
259 +
207 207  Open this Application.
208 208  
209 209  
... ... @@ -212,6 +212,7 @@
212 212  1. (((
213 213  [[image:image-20220531141400-27.png]]
214 214  
268 +
215 215  Check the settings.
216 216  
217 217  
... ... @@ -220,6 +220,7 @@
220 220  1. (((
221 221  [[image:image-20220531141601-30.png]]
222 222  
277 +
223 223  input this command.
224 224  
225 225  
... ... @@ -226,6 +226,8 @@
226 226  
227 227  )))
228 228  1. [[image:image-20220531141515-29.png]](((
284 +
285 +
229 229  Check the result.
230 230  
231 231  
... ... @@ -234,6 +234,7 @@
234 234  
235 235  == 4.7 Updata data to Server(Through MQTT) ==
236 236  
294 +
237 237  * This version of Sketch implements these features:
238 238  
239 239  1. Read the LG01 configuration information from Linux.
... ... @@ -241,7 +241,11 @@
241 241  1. Send reply after then receive LoRa node data.
242 242  1. Sketch will write active content to /tmp/iot/status periodically (every 5 minutes).(Watchdog feature)
243 243  
302 +
303 +
244 244  1. [[image:image-20220531143822-49.png]](((
305 +
306 +
245 245  Open the sketch [[MQTT_Simple_Server>>url:https://github.com/dragino/Arduino-Profile-Examples/tree/master/libraries/Dragino/examples/LoRa/MQTT_Simple_Server]].(Board:Dragino Yun + UNO or LG01/OLG01,Port:Network ports.)and upload.
246 246  
247 247  
... ... @@ -248,6 +248,8 @@
248 248  
249 249  )))
250 250  1. [[image:image-20220531141800-32.png]](((
313 +
314 +
251 251  Open Serial monitor.
252 252  
253 253  
... ... @@ -254,6 +254,8 @@
254 254  
255 255  )))
256 256  1. [[image:image-20220531143748-48.png]](((
321 +
322 +
257 257  Open the Sketch [[MQTT_Client>>url:https://github.com/dragino/Arduino-Profile-Examples/tree/master/libraries/Dragino/examples/IoTServer/ThingSpeak/MQTT_Client]]. (Board:Arduino/Genuino Uno.Port:Serial ports.)and upload.
258 258  
259 259  
... ... @@ -260,6 +260,8 @@
260 260  
261 261  )))
262 262  1. [[image:image-20220531141927-34.png]](((
329 +
330 +
263 263  Open Serial monitor.
264 264  
265 265  
... ... @@ -281,8 +281,10 @@
281 281  
282 282  = 5. FAQ =
283 283  
352 +
284 284  == 5.1 Configure to support general mqtt server ==
285 285  
355 +
286 286  First, try to run **mosquitto_pub** in Linux console to send a data to MQTT server.
287 287  
288 288  For example: for ThingSpeak, a MQTT publish command is:
... ... @@ -297,6 +297,8 @@
297 297  1. LG01 web console -> Sensor -> MQTT
298 298  1. Choose general Server
299 299  1. [[image:image-20220531142342-37.png]](((
370 +
371 +
300 300  Refer to your server to fill in.
301 301  
302 302  
... ... @@ -303,6 +303,8 @@
303 303  
304 304  )))
305 305  1. [[image:image-20220531142447-38.png]](((
378 +
379 +
306 306  Ex:ThingSpeak Server
307 307  
308 308  
... ... @@ -326,13 +326,17 @@
326 326  
327 327  [[image:image-20220531142525-39.png]]
328 328  
403 +
329 329  MQTT Logread example
330 330  
331 331  
407 +
332 332  == 5.2 What is Watchdog feature? ==
333 333  
410 +
334 334  LG01 for 4.3.3 version,we have added watchdog feature. In order to avoid the gateway running process will get stuck. So add writing action on every times.
335 335  
413 +
336 336  * [[image:image-20220531142558-40.png]](((
337 337  Enable Sensor->Micro-Controller settings
338 338  
... ... @@ -340,6 +340,8 @@
340 340  
341 341  )))
342 342  * [[image:image-20220531142629-41.png]](((
421 +
422 +
343 343  Open the sketch [[MQTT_Simple_Server>>url:https://github.com/dragino/Arduino-Profile-Examples/tree/master/libraries/Dragino/examples/LoRa/MQTT_Simple_Server]].(Board:Dragino Yun + UNO or LG01/OLG01,Port:Network ports.)and upload.
344 344  
345 345  
... ... @@ -346,6 +346,8 @@
346 346  
347 347  )))
348 348  * [[image:image-20220531142659-42.png]](((
429 +
430 +
349 349  Each time the function loops, it uses the watchdog function once.
350 350  
351 351  
... ... @@ -352,6 +352,8 @@
352 352  
353 353  )))
354 354  * [[image:image-20220531142720-43.png]](((
437 +
438 +
355 355  Open SSH and check watchdog result.If the result change constantly,the feature enable successfully.
356 356  
357 357  
... ... @@ -358,6 +358,8 @@
358 358  
359 359  )))
360 360  * [[image:image-20220531142748-44.png]](((
445 +
446 +
361 361  If the time doesnt's change,you can refer it to calculate for checking status.
362 362  )))
363 363  
Copyright ©2010-2022 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0