本帖最后由 沙漠之痕 于 2018-11-7 12:46 編輯
模塊連接路由器和不鏈接路由器直接開放熱點的區別在于,服務器的ip不同
1. 設置模塊工作在AP模式下開放wifi熱點 init.lua文件: tmr.alarm(0,4000,0,function() dofile("tcpclient.lua") end) init.lua文件結束 tcpclient.lua文件: wifi.setmode(wifi.SOFTAP) local apcfg={ ssid="ESP8266-open", pwd="11223344" } wifi.ap.config(apcfg) tcpclient.lua文件結束 手機連接上模塊開放的熱點,但是不能上網 2.手機連接上模塊wifi熱點, 然后用手機創建服務器,與連接路由器時相比服務器的ip改變;先讓客戶端在連接上服務器后再處理斷開連接事件。 init.lua文件: tmr.alarm(0,4000,0,function() dofile("tcpclient.lua") end) init.lua文件結束 tcpclient.lua文件: wifi.setmode(wifi.SOFTAP) local apcfg={ ssid="ESP8266-open", pwd="11223344" } wifi.ap.config(apcfg)
tmr.alarm(1,1000,1,function() TCPClient = net.createConnection(net.TCP,0) TCPClient:connect(8080,"192.168.4.2") TCPClient:on("receive", function(sck, data) uart.write(0,data) end) TCPClient:on("connection", function(sck, c) print("Connection") tmr.stop(1) TCPClient:on("disconnection", function(sck, c) print("Disconnection") tmr.start(1) end) end) end) tcpclient.lua文件結束 服務器ip時手機連接,模塊wifi所分配的,要想查看分配的ip再重新去調整模塊連接服務器時的ip, 此方法與都去連接路由器相比麻煩了些;因為事先不知道手機的ip。 3. 手機連接模塊wifi熱點通過“close”關閉繼電器;“open“打開繼電器 init.lua文件: RELAY_Pin = 1 gpio.mode(RELAY_Pin, gpio.OUTPUT) gpio.write(RELAY_Pin,0) tmr.alarm(0,4000,0,function() dofile("tcpclient.lua") end) init.lua文件結束 tcpclient.lua文件: LinkStat = 0 TCPClient = nil ClientReceData = "" ClientReceCnt = 0 ClientReceDataStat = true wifi.setmode(wifi.SOFTAP) local apcfg={ ssid="ESP8266-open", pwd="11223344" } wifi.ap.config(apcfg) tmr.alarm(1,1000,1,function() if LinkStat == 0 then TCPClient = net.createConnection(net.TCP,0) TCPClient:connect(8080,"192.168.4.2") TCPClient:on("receive", function(sck, data) ClientReceData = ClientReceData..data ClientReceCnt = 0 ClientReceDataStat = true end) TCPClient:on("connection", function(sck, c) LinkStat = 1 print("Connection") tmr.stop(1) TCPClient:on("disconnection", function(sck, c) LinkStat = 0 print("Disconnection") tmr.start(1) end) end) end end) tmr.alarm(2,10,1,function() if ClientReceDataStat==true then ClientReceCnt=ClientReceCnt+1 if ClientReceCnt>=10 then --receive finsion if ClientReceData=="open" then gpio.write(RELAY_Pin,1) end if ClientReceData=="close" then gpio.write(RELAY_Pin,0) end uart.write(0,ClientReceData) ClientReceData = "" ClientReceCnt = 0 ClientReceDataStat = false end end end) tcpclient.lua文件結束 發送其他指令,可以通過串口查看已經接收到,但是不能控制繼電器
|