基于NodeMcu开发的ESP8266物联网LED灯控制设备,接入SSD1306作为配网以及服务显示功能,后续会增加更多功能
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.7 KiB

-- UDPSocket = nil;
-- UDPIP = nil;
-- UDPPort = nil;
require("GPIO");
LightArr = {[1]=false,[2]=false,[3]=false,[4]=false}
function StartUDPService()
if UDPSocket == nil then
UDPSocket = net.createUDPSocket();
UDPSocket:listen(5000);
UDPSocket:on("receive", UDPService);
UDPPort, UDPIP = UDPSocket:getaddr();
else
UDPSocket:listen(5000);
UDPSocket:on("receive", UDPService);
UDPPort, UDPIP = UDPSocket:getaddr();
end
--print(string.format("local UDP socket address / port: %s:%d", UDPIP, UDPPort))
end
function UDPService(s, data, port, ip)
local commandSet = {};
for word in string.gmatch(data, "[^-]+") do
table.insert(commandSet,word);
end
print("get data count" .. #commandSet);
if string.match(data,"^Light") then
if #commandSet==3 then
print(tonumber(commandSet[2]).."-"..commandSet[3])
if commandSet[3]=="On" and tonumber(commandSet[2])~=nil then
GPIOOn(tonumber(commandSet[2]));
LightArr[tonumber(commandSet[2])] = true;
s:send(port, ip, "Light "..commandSet[2].." "..commandSet[3]);
PageLight(LightArr);
elseif commandSet[3]=="Off" and tonumber(commandSet[2])~=nil then
GPIOOff(tonumber(commandSet[2]));
LightArr[tonumber(commandSet[2])] = false;
s:send(port, ip, "Light "..commandSet[2].." "..commandSet[3]);
PageLight(LightArr);
else
s:send(port, ip, "CommandFaild");
end
end
end
end
function StopUDPService()
if UDPSocket ~= nil then
UDPSocket:close();
end
end
--StartUDPService();