ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

nodeMCU Lua ESP8266第六课 公网控制ESP

2019-09-06 13:36:51  阅读:371  来源: 互联网

标签:end ESP8266 第六课 ESP myClient lua mqtt print message


学习这一课需要用到一款安卓的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进行讨论。

 

标签:end,ESP8266,第六课,ESP,myClient,lua,mqtt,print,message
来源: https://blog.csdn.net/qq_26820797/article/details/100577606

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有