Esp8266无限重置

时间:2016-07-20 07:42:55

标签: lua esp8266 nodemcu

我正在通过互联网制作此代码来控制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>&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)

1 个答案:

答案 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”按钮。