【IOT】nodeMCU(五-下)通过TCP通信局域网实现控制灯

通过前面的wifi,net,gpio模块的学习

现在可以在局域网内控制D4口 使 8266的蓝灯亮或灭了
8266 创建服务器,手机的TCP测试助手发送 开/关控制:

代码:

8266:

wifi.setmode(wifi.SOFTAP)
led = 4

gpio.mode(led, gpio.OUTPUT)

cfg={}
cfg.ssid="8266wifi"
cfg.pwd="zfw123456"

wifi.ap.config(cfg)
print(wifi.ap.getip())

sv = net.createServer(net.TCP,300)
sv:listen(80,function(c)
    c:on("receive",function(c,msg)
         if(msg=="open") then
            gpio.write(led, gpio.LOW)
         else 
             if(msg=="close") then
                 gpio.write(led, gpio.HIGH)
             end
        end
    end)
    c:send(" tcp connection..")
end)

手机端创建TCO client 连接 192.168.4.1 80
发送 open 灯亮, 发送 close 灯灭
【IOT】nodeMCU(五-下)通过TCP通信局域网实现控制灯_第1张图片
【IOT】nodeMCU(五-下)通过TCP通信局域网实现控制灯_第2张图片

改进 双方添加反馈

通过 gpio.read(led) 获取 led的状态从而回复client 是否成功
又是一顿 if else 给你吃
添加上判断 led 的状态就可以了

   if(gpio.read(led)==0) then
			c:send("open succeed!")
		else
			c:send("open failed!")
		end		

	if(gpio.read(led)==1) then
		c:send("close succeed!")
	else
		c:send("close failed!")
	end		

总代码:

wifi.setmode(wifi.SOFTAP)
led = 4

gpio.mode(led, gpio.OUTPUT)

cfg={}
cfg.ssid="8266wifi"
cfg.pwd="zfw123456"

wifi.ap.config(cfg)
print(wifi.ap.getip())


sv = net.createServer(net.TCP,300)
sv:listen(80,function(c)
    c:on("receive",function(c,msg)    
print("client let u "..msg.." led")
         if(msg=="open") then
            gpio.write(led, gpio.LOW)
                if(gpio.read(led)==0) then
        c:send("open succeed!")
    else
        c:send("open failed!")
    end     
        else 
             if(msg=="close") then
                 gpio.write(led, gpio.HIGH)
    if(gpio.read(led)==1) then
        c:send("close succeed!")
    else
        c:send("close failed!")
    end     
             end
        end
    end)
    c:send(" tcp connection..")
end)

【IOT】nodeMCU(五-下)通过TCP通信局域网实现控制灯_第3张图片
手机:

【IOT】nodeMCU(五-下)通过TCP通信局域网实现控制灯_第4张图片

你可能感兴趣的:(NodeMCU)