nodeMCU Lua ESP8266第六課 公網控制ESP

學習這一課需要用到一款安卓的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進行討論。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章