Esp8266 无限重置问题

我正在制作这个控制 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>灯光控制</h1>";
     buf = buf.."<p> Aldo的房间<a href=\"?pin=ON1\"> <button>ON</button> </a>&nbsp;<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)
点赞
用户131929
用户131929

你的代码需要放在一个名为 init.lua 的文件中。

http://nodemcu.readthedocs.io/en/latest/en/upload/#initlua

当设备刚刚刷了固件并启动时,在串行控制台上会看到打印出“lua: cannot open init.lua”的信息。如果 NodeMCU 在文件系统的根目录发现了init.lua,则会将其作为启动序列的一部分执行(这是标准 Lua 特性)。因此,你的应用程序需要从 init.lua 中初始化并触发。通常,你需要先设置 WiFi 连接,只有在连接成功后才继续执行。

使用 ESPlorer 的一种方法是将文件存储在本地文件系统中名为 init.lua,然后点击“Save to ESP”按钮。

2016-07-20 07:56:02