找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4994|回復(fù): 2
收起左側(cè)

制作自己的wifi開(kāi)關(guān) ESP8266 lua使用mqqt遠(yuǎn)程通信

[復(fù)制鏈接]
ID:81424 發(fā)表于 2018-11-7 11:53 | 顯示全部樓層 |閱讀模式
本帖最后由 沙漠之痕 于 2018-11-7 13:10 編輯

一 . 在本地電腦上安裝emqtt服務(wù)器:


1.首先安裝補(bǔ)丁:把補(bǔ)丁拷貝到" C:\Windows\System32 "文件夾下
1.png

2. 控制臺(tái)模式下啟動(dòng):emqttd console
(1) 控制臺(tái)下切換到emqttbin目錄下。如:
2.png

快速切換方法:在此目錄下按住“Shift”同時(shí)點(diǎn)擊鼠標(biāo)右鍵選擇“在此處打開(kāi)                命令窗口”

3.png

(2)啟動(dòng)mqtt服務(wù)器 “emqttd console”
4.png

3. 通過(guò)網(wǎng)頁(yè)登陸查看鏈接信息
網(wǎng)址:http://localhost:18083/
   用戶名:admin
碼:public

5.png

6.png

查看本機(jī)ip
7.png

8.png

鏈接上一個(gè)客戶端
9.png
我們?cè)賳?dòng)一個(gè)客戶端讓兩個(gè)客戶端通信
10.png
我們?cè)诓榭聪骆溄拥目蛻舳?/div>
11.png
客戶端通信
12.png

13.png


此種方法會(huì)打開(kāi)一個(gè)窗口,關(guān)掉窗口emqtt服務(wù)也關(guān)閉;
emqtt服務(wù)器一直運(yùn)行的
(1)控制臺(tái)先定位到emqttbin目錄下“D:\MqttServer\emqttd\bin
    (2)emqttd install
(3)啟動(dòng)emqttd服務(wù):emqttd start
(4)停止emqttd服務(wù):emqttd stop
(5)卸載emqttd服務(wù):emqttd uninstall

14.png


二. ESP8266 模塊連接emqtt服務(wù)器進(jìn)行遠(yuǎn)程控制
init.lua文件:
  1. RELAY_Pin = 1

  2. gpio.mode(RELAY_Pin, gpio.OUTPUT)

  3. gpio.write(RELAY_Pin,0)

  4. tmr.alarm(0,4000,0,function()

  5.     dofile("mqtt.lua")

  6. end)
復(fù)制代碼


init.lua文件結(jié)束
mqtt.lua文件:
  1. MqttServerIP="192.168.0.105"      

  2. MqttServerPort=1883         

  3. MqttUserName="admin"              

  4. MqttUserPassword="public"      

  5. MqttLinkStat = 0                  

  6. UartReceData = ""               

  7. UartReceCnt = 0                  

  8. UartReceTempCnt = 0              

  9. wifi.setmode(wifi.STATION)      

  10. local stacfg={

  11.     ssid="qqqqq",      

  12.     pwd="11223344"  

  13. }

  14. wifi.sta.config(stacfg)        

  15. wifi.sta.autoconnect(1)         

  16. Clientid = wifi.sta.getmac()     

  17. ClientSubscribeTopic = "AAA"   

  18. ClientPublishTopic = "111"      

  19. MqttClient=mqtt.Client(Clientid,3,MqttUserName,MqttUserPassword)

  20. MqttClient:lwt(ClientPublishTopic,"offline",1,1)  

  21. local function ConnectSuccess(client)  

  22.     print("MqttServer connect sucess")

  23.     client:subscribe(ClientSubscribeTopic,0,function(client)print("subscribe sucess")end)

  24.     MqttLinkStat = 1

  25.     tmr.stop(3)

  26. end

  27. local function ConnectFailed(client, reason)

  28.     print("MqttServer connect fail"..reason)

  29.     MqttLinkStat = 0

  30.     tmr.start(3)

  31.    

  32. end

  33. tmr.alarm(3, 2000, 1, function()

  34.          MqttClient:connect(MqttServerIP, MqttServerPort, 0,ConnectSuccess,ConnectFailed)

  35. end)

  36. MqttClient:on("offline", function(client, topic, data) tmr.start(3) end)

  37. MqttClient:on("message", function(client, topic, data)

  38.         if data == "open" then

  39.             gpio.write(RELAY_Pin,1)  

  40.             if gpio.read(RELAY_Pin)==1 then

  41.                 if MqttClient ~= nil then

  42.                     MqttClient:publish(ClientPublishTopic,"ON-RELAY",1,1,function(client)  end)

  43.                 end

  44.             end  

  45.         end

  46.         if data == "close" then

  47.             gpio.write(RELAY_Pin,0)

  48.             if gpio.read(RELAY_Pin)==0 then

  49.                 if MqttClient ~= nil then

  50.                     MqttClient:publish(ClientPublishTopic,"OFF-RELAY",1,1,function(client)  end)

  51.                 end

  52.             end

  53.         End

  54. uart.write(0,data)

  55. end)

  56. tmr.alarm(2,10,1,function()

  57.      if UartReceCnt ~= 0 then

  58.         if UartReceTempCnt == UartReceCnt then

  59.             UartReceTempCnt = 0

  60.             UartReceCnt = 0  

  61.             --send to-Mqtt

  62.             if MqttClient ~= nil then

  63.                 MqttClient:publish(ClientPublishTopic,UartReceData,1,1,function(client)  end)

  64.             end

  65.         else

  66.             UartReceTempCnt = UartReceCnt

  67.         end

  68.      end

  69. end)

  70. uart.on("data",0,function(data)

  71.             UartReceData = UartReceData..data

  72.             UartReceCnt = UartReceCnt + 1   

  73. end,0)   

  74. printip = 0

  75. wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T)

  76.     printip = 0

  77. end)

  78. wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T)

  79.    if printip == 0 then

  80.       print("+IP "..T.IP)

  81.    end

  82.    printip = 1

  83. end)

復(fù)制代碼
mqtt.lua文件結(jié)束

15.png

16.png

17.png

模塊通過(guò)串口發(fā)送數(shù)據(jù)

18.png

19.png


PC客戶端發(fā)送”open”開(kāi)繼電器

20.png

PC客戶端發(fā)送”close”關(guān)繼電器

21.png

22.png


mqtt客戶端.zip (118.4 KB, 下載次數(shù): 34)                                                          
ESP8266 連接mqtt遠(yuǎn)程控制 lua源碼.zip (700 Bytes, 下載次數(shù): 30)

emqtt安裝包:https://pan.baidu.com/s/1EyPovGzNPAePmx4JT5urew提取碼:za3g
交流QQ:1813763867   QQ群:607064330



ESP8266 制作自己的wifi開(kāi)關(guān)資料匯總:

鏈接:https://pan.baidu.com/s/1wtIwd5csjieme7O-PfGhbA
提取碼:71kt
連接失效請(qǐng)聯(lián)系本人及時(shí)更改

回復(fù)

使用道具 舉報(bào)

ID:424598 發(fā)表于 2019-1-11 15:10 來(lái)自手機(jī) | 顯示全部樓層
謝謝發(fā)布,很詳細(xì)!
回復(fù)

使用道具 舉報(bào)

ID:158908 發(fā)表于 2019-1-14 09:36 來(lái)自手機(jī) | 顯示全部樓層
好東西,謝謝樓主
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表