我正在通过互联网制作此代码来控制LED,但我也想添加一个开关,以便在我无法访问互联网的情况下打开和关闭它。所以我的问题是它在我上传代码时正常工作但是当ESP8266重新启动时代码不再工作。代码的每个部分都可以独立工作,但是当我将它们组合在一起时它无法正常工作
wifi.setmode(wifi.STATION)
wifi.sta.config("BELL", "BLACKST")
print(wifi.sta.getip())
led1 = 3
led2 = 4
gpio.mode(led2, gpio.OUTPUT)
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive", function(client,request)
local buf = "";
local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)? (.+) HTTP");
if(method == nil)then
_, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
end
local _GET = {}
if (vars ~= nil)then
for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
_GET[k] = v
end
end
buf = buf.."<h1> LIGHTS CONTROL </h1>";
buf = buf.."<p>Aldo's Room <a href=\"?pin=ON1\"><button>ON</button> </a> <a href=\"?pin=OFF1\"><button>OFF</button></a></p>";
local _on,_off = "",""
if(_GET.pin == "ON1")then
gpio.write(led2, gpio.HIGH) ;
elseif(_GET.pin == "OFF1")then
gpio.write(led2, gpio.LOW) ;
end
client:send(buf);
client:close();
collectgarbage();
end)
end)
gpio.mode(led1, gpio.INT)
gpio.trig(led1, "both", function(level)
gpio.write(led2, level)
end)
答案 0 :(得分:0)
您的代码需要放入名为init.lua
的文件中。
http://nodemcu.readthedocs.io/en/latest/en/upload/#initlua
您将看到打印到串行控制台的“lua:无法打开init.lua” 当设备在新鲜闪烁后启动时。如果是NodeMCU 在文件系统的根目录中找到一个init.lua,它将执行它 部分引导顺序(标准Lua功能)。因此,你的 应用程序初始化并从init.lua触发。通常你 首先设置WiFi连接,并且只保留一次 成功的。
使用ESPlorer实现此目的的一种方法是将文件本地存储在文件系统init.lua
上,然后点击“保存到ESP”按钮。