第一步,lua語言開發環境配置
下載安裝java環境,下載地址:點擊下載
選擇windows版本下載安裝即可,如圖所示:
下載開發環境包:
下載地址:點擊下載
esp8266串口驅動:點擊下載
下載后解壓,電腦插上8266開發板,打開 NodeMCU-PyFlasher.exe 軟件,選擇esp8266的com口,選擇nodemcu.bin 固件,點擊flash nodemcu 刷入,如圖所示:
當刷入nodemcu固件后,就可以進行lua編程。解壓ESPlorer-0.2.0.zip后,雙擊文件夾中的 ESPlorer.jar 啟動軟件(需完成第一步的java環境安裝,否則點擊無反應)軟件使用步驟:
第一:選擇esp8266的com口。
第二:點擊open連接esp8266,等待連接成功,如果連接成功,會顯示nodemcu固件信息,如果連接失敗,可點擊兩次open按鈕左邊的RTS按鈕重啟esp8266,注意是雙擊RTS。
第三:點擊open文件夾圖標選擇init.lua程序。
第四:當程序修改完成后,點擊save to ESP按鈕上傳程序,或者ctrl+s也可以保存並上傳,上傳完成后,雙擊軟件上的RTS按鈕重啟esp8266,或者手動重啟esp8266也可以。
第二,示例程序
tcp示例程序:需修改wifi名稱和密碼,用戶私鑰uid和主題topic值。
巴法雲tcp服務地址:bemfa.com
端口:8344
-- wifi配置
wifi.setmode(wifi.STATIONAP)
apcfg={}
--wifi名稱和密碼
apcfg.ssid="newhtc2"
apcfg.pwd="qq123456"
wifi.sta.config(apcfg)
wifi.sta.connect()
wifi.sta.autoconnect(1)
function startup()
srv = net.createConnection(net.TCP, 0)
--連接服務器
srv:connect(8344,"bemfa.com")
--接收消息
srv:on("receive", function(sck, c)
print(c)
end)
--當連接到服務器
srv:on("connection", function(sck, c)
ConnOK = 1
sck:send("cmd=1&uid=4d9ec352e0376f2110a0c601a2857225&topic=led002\r\n")
--心跳
liveTimer = tmr.create()
liveTimer:register(30000, tmr.ALARM_AUTO, function() sck:send("ping\r\n") end)
liveTimer:start()
end)
--當連接斷開
srv:on("disconnection", function(sck, c)
tmr.create():alarm(1000, tmr.ALARM_SINGLE, startup)
end)
end
--當wifi連接成功
wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T)
print("WIFI CONNECTED OK")
tmr.create():alarm(2000, tmr.ALARM_SINGLE, startup)
end)
詳細巴法雲tcp指令可參考接入文檔:點擊跳轉
mqtt示例程序:
巴法雲mqtt服務ip:bemfa.com
端口:9501
連接服務器
1.用戶私鑰作為連接MQTT服務器的客戶端ID
2.連接時用戶名和密碼為空,或隨意填寫,即設備連接時不需要賬號和密碼
-- wifi配置
wifi.setmode(wifi.STATIONAP)
apcfg={}
apcfg.ssid="newhtc2"
apcfg.pwd="qq123456"
wifi.sta.config(apcfg)
wifi.sta.connect()
wifi.sta.autoconnect(1)
function startup()
--client id 連接
m = mqtt.Client("4d9ec352e0376f2110a0c601a2857225", 60)
m:connect("bemfa.com", 9501, false, function(client)
print("connected")
client:subscribe("mylight002", 0, function(client) print("subscribe success") end)
end,
function(client, reason)
print("Connection failed reason: " .. reason)
tmr.create():alarm(3000, tmr.ALARM_SINGLE, startup)
end)
m:on("message", function(client, topic, data)
print(topic .. ":" )
if data ~= nil then
print(data)
end
end)
m:on("offline", function(client)
print ("offline")
tmr.create():alarm(3000, tmr.ALARM_SINGLE, startup)
end)
end
--當wifi連接成功
wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T)
print("WIFI CONNECTED OK")
tmr.create():alarm(3000, tmr.ALARM_SINGLE, startup)
end)
程序講解:首先配置wifi,,當連接wifi成功時,通過wifi.eventmon.STA_GOT_IP事件獲取wifi連接成功狀態,啟動startup函數,startup函數中初始化服務器連接,當連接斷開時,通過語句:
tmr.create():alarm(3000, tmr.ALARM_SINGLE, startup)
實現3s后再次啟動startup函數重新連接服務器,默認重連是3秒,可自行修改。