Last modified by Xiaoling on 2022/09/02 18:11

From version 44.5
edited by Xiaoling
on 2022/05/31 14:33
Change comment: There is no comment for this version
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  
... ... @@ -111,12 +111,17 @@
111 111  )))
112 112  1. (((
113 113  [[image:image-20220531140304-12.png]]
142 +
143 +
144 +
114 114  )))
115 115  
116 116  == 4.5 Configure LG01 settings ==
117 117  
118 -Tips:Please confirm that your LG01 version is 4.3.3.
119 119  
150 +Tips:  Please confirm that your LG01 version is 4.3.3.
151 +
152 +
120 120  [[image:image-20220531140248-11.png]]
121 121  
122 122  **Overview**
... ... @@ -128,6 +128,7 @@
128 128  **Senosor->IOT Server**
129 129  
130 130  
164 +
131 131  [[image:image-20220531140458-15.png]]
132 132  
133 133  **MQTT->Configure MQTT Server**
... ... @@ -148,29 +148,44 @@
148 148  
149 149  [[image:image-20220531140651-18.png]]
150 150  
185 +
151 151  Configure network access.**Network->Internet Access**
152 152  
153 153  
189 +
154 154  == 4.6 Try MQTT API call with LG01 Linux command ==
155 155  
192 +
156 156  === 4.6.1 Input the command at the console ===
157 157  
195 +
158 158  1. [[image:image-20220531140811-19.png]](((
197 +
198 +
159 159  Open this Application.
160 160  
201 +
161 161  
162 162  )))
163 163  1. [[image:image-20220531140842-20.png]](((
205 +
206 +
164 164  Input passward(dragino).After into the console.
165 165  
209 +
166 166  
167 167  )))
168 168  1. [[image:image-20220531140915-21.png]](((
213 +
214 +
169 169  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
170 170  
217 +
171 171  
172 172  )))
173 173  1. [[image:image-20220531140955-22.png]](((
221 +
222 +
174 174  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.
175 175  
176 176  
... ... @@ -177,7 +177,11 @@
177 177  
178 178  )))
179 179  1. [[image:image-20220531141026-23.png]](((
229 +
230 +
180 180  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 +
181 181  )))
182 182  
183 183  * This command:
... ... @@ -197,9 +197,13 @@
197 197  )))
198 198  
199 199  
253 +
200 200  === 4.6.2 Input the command at the console(LG01 new version:4.3.4) ===
201 201  
256 +
202 202  1. [[image:image-20220531141150-24.png]](((
258 +
259 +
203 203  Open this Application.
204 204  
205 205  
... ... @@ -208,6 +208,7 @@
208 208  1. (((
209 209  [[image:image-20220531141400-27.png]]
210 210  
268 +
211 211  Check the settings.
212 212  
213 213  
... ... @@ -216,6 +216,7 @@
216 216  1. (((
217 217  [[image:image-20220531141601-30.png]]
218 218  
277 +
219 219  input this command.
220 220  
221 221  
... ... @@ -222,6 +222,8 @@
222 222  
223 223  )))
224 224  1. [[image:image-20220531141515-29.png]](((
284 +
285 +
225 225  Check the result.
226 226  
227 227  
... ... @@ -230,6 +230,7 @@
230 230  
231 231  == 4.7 Updata data to Server(Through MQTT) ==
232 232  
294 +
233 233  * This version of Sketch implements these features:
234 234  
235 235  1. Read the LG01 configuration information from Linux.
... ... @@ -237,7 +237,11 @@
237 237  1. Send reply after then receive LoRa node data.
238 238  1. Sketch will write active content to /tmp/iot/status periodically (every 5 minutes).(Watchdog feature)
239 239  
240 -1. [[image:image-20220531141656-31.png]](((
302 +
303 +
304 +1. [[image:image-20220531143822-49.png]](((
305 +
306 +
241 241  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.
242 242  
243 243  
... ... @@ -244,12 +244,16 @@
244 244  
245 245  )))
246 246  1. [[image:image-20220531141800-32.png]](((
313 +
314 +
247 247  Open Serial monitor.
248 248  
249 249  
250 250  
251 251  )))
252 -1. [[image:image-20220531141842-33.png]](((
320 +1. [[image:image-20220531143748-48.png]](((
321 +
322 +
253 253  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.
254 254  
255 255  
... ... @@ -256,6 +256,8 @@
256 256  
257 257  )))
258 258  1. [[image:image-20220531141927-34.png]](((
329 +
330 +
259 259  Open Serial monitor.
260 260  
261 261  
... ... @@ -263,13 +263,13 @@
263 263  )))
264 264  1. Go to IoT Server to check the result.
265 265  1. (((
266 -[[image:image-20220531142023-35.png]]
338 +[[image:image-20220531143707-47.png]]
267 267  
268 268  
269 269  
270 270  )))
271 271  1. (((
272 -[[image:image-20220531142155-36.png]]
344 +[[image:image-20220531143632-46.png]]
273 273  
274 274  
275 275  
... ... @@ -277,8 +277,10 @@
277 277  
278 278  = 5. FAQ =
279 279  
352 +
280 280  == 5.1 Configure to support general mqtt server ==
281 281  
355 +
282 282  First, try to run **mosquitto_pub** in Linux console to send a data to MQTT server.
283 283  
284 284  For example: for ThingSpeak, a MQTT publish command is:
... ... @@ -293,6 +293,8 @@
293 293  1. LG01 web console -> Sensor -> MQTT
294 294  1. Choose general Server
295 295  1. [[image:image-20220531142342-37.png]](((
370 +
371 +
296 296  Refer to your server to fill in.
297 297  
298 298  
... ... @@ -299,6 +299,8 @@
299 299  
300 300  )))
301 301  1. [[image:image-20220531142447-38.png]](((
378 +
379 +
302 302  Ex:ThingSpeak Server
303 303  
304 304  
... ... @@ -322,13 +322,17 @@
322 322  
323 323  [[image:image-20220531142525-39.png]]
324 324  
403 +
325 325  MQTT Logread example
326 326  
327 327  
407 +
328 328  == 5.2 What is Watchdog feature? ==
329 329  
410 +
330 330  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.
331 331  
413 +
332 332  * [[image:image-20220531142558-40.png]](((
333 333  Enable Sensor->Micro-Controller settings
334 334  
... ... @@ -336,6 +336,8 @@
336 336  
337 337  )))
338 338  * [[image:image-20220531142629-41.png]](((
421 +
422 +
339 339  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.
340 340  
341 341  
... ... @@ -342,6 +342,8 @@
342 342  
343 343  )))
344 344  * [[image:image-20220531142659-42.png]](((
429 +
430 +
345 345  Each time the function loops, it uses the watchdog function once.
346 346  
347 347  
... ... @@ -348,6 +348,8 @@
348 348  
349 349  )))
350 350  * [[image:image-20220531142720-43.png]](((
437 +
438 +
351 351  Open SSH and check watchdog result.If the result change constantly,the feature enable successfully.
352 352  
353 353  
... ... @@ -354,6 +354,8 @@
354 354  
355 355  )))
356 356  * [[image:image-20220531142748-44.png]](((
445 +
446 +
357 357  If the time doesnt's change,you can refer it to calculate for checking status.
358 358  )))
359 359  
image-20220531143604-45.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +42.6 KB
Content
image-20220531143632-46.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +42.4 KB
Content
image-20220531143707-47.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +34.2 KB
Content
image-20220531143748-48.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +38.8 KB
Content
image-20220531143822-49.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +38.1 KB
Content