本帖最后由 沙漠之痕 于 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文件结束 发送其他指令,可以通过串口查看已经接收到,但是不能控制继电器
交流QQ:1813763867 QQ群:607064330
|