学习这一课需要用到一款安卓的mqtt软件,可以自行寻找,也可以使用我写的一个demo。
软件介绍:https://blog.csdn.net/qq_26820797/article/details/79260661
写在前面的话:个人学习笔记,抛砖引玉,希望有兴趣的人加入QQ群415469069一起讨论,欢迎有共同爱好的人。
本教程以ESP-12N,CP2102开发板为例进行讲解,配合之前编写的Android软件。
- ESP端代码。
依然使用第四课的两个文件:mqtt_test.lua和close_mqtt.lua。群文件可以下载。为了方便调试,将publish、lwt和subscribe的Topic改一下,第11行输出信息改为print("mcu connected broker.")
--mqtt_test.lua myClient = mqtt.Client("test_mqqt_20180123_mcu",120) myClient:connect("iot.eclipse.org", function(client) print("connected") end) myClient:lwt("esp_to_android_","mcu is closed") myClient:on("connect", function(clinet) if(myClient:publish("esp_to_android_","online",0,0))then print("pc connected mcu") end if(myClient:subscribe("android_to_esp_",0))then print("subscribe is success.") end end) myClient:on("offline", function(client) myClient:publish("esp_to_android_","offline",0,0) end) myClient:on("message", function(client , topic , message) print(“get a message.\n”) print(topic..":"..message) end) |
--mqtt_close.lua if(myClient:close()) then print("mqtt is closed.") else print("closed is failed.") end |
- 测试功能。
运行mqtt_test.lua文件。
连接成功后,打开我们的手机客户端(上一课内容)。点击按钮CONNECT连接broker,可以通过点击按钮ISCONNECTED查看是否连接上。连接成功之后,点击按钮PUBLISH一条消息,可以看到ESP后台已经打印。
接下来,我们看看手机端的订阅效果,点击按钮SUBSCRIBE.
由于我们第四课中的程序只写了一条publish,是在连接时运行的,所以,为了演示效果,我们先关闭ESP端的mqtt客户端,运行mqtt_close.lua。
然后重新打开mqtt客户端。运行mqtt_test.lua。
这时,你会在手机客户端看到已经收到了一条新的消息。
至此,通过公网控制ESP的思路已经讲解完毕了。
我的宗旨一直是抛砖引玉,授之以渔。接下来如果你想要实现具体功能的话,只需要提取subscribe中的字段就行了。在on方法中添加以下代码段,实现远程开关灯效果。IO口根据自己的情况配置。
myClient:on("message", function(client , topic , message) print("get a message.\n") print(topic..":"..message) -- turn the light on if(message == "light_on") then gpio.write(0,gpio.LOW) end -- turn the light off if(message == "light_off") then gpio.write(0,gpio.HIGH) end end) |
修改好代码后,SAVE运行。等待连接到broker后,在手机客户端publish一条light_on消息,可以看到,开发板上的led灯被点亮。接着publish一条light_off消息,可以看到,开发板上的led灯熄灭。
安卓端的客户端,可以根据自己的具体需求,编写相应的界面和对数据的处理。
PS:在使用过程中有什么疑问,欢迎加入QQ群415469069进行讨论。