Esp8266 сбрасывается бесконечно

Я делаю этот код для управления светодиодами через Интернет, но также мне нравится добавлять переключатель, чтобы включать и выключать его, если у меня нет доступа к Интернету. Итак, моя проблема в том, что он работает нормально, когда я загружаю код, но когда 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)

person Aldo Castro Freire    schedule 20.07.2016    source источник
comment
Надеюсь, глупый вопрос, но вы добавили это в init.lua?   -  person bluemind    schedule 20.07.2016
comment
Также я рекомендую использовать последнюю версию прошивки NodeMCU, а не 0.9.6. И вы можете попробовать дождаться подключения WIFI, например: stackoverflow.com/questions/33288026/   -  person bluemind    schedule 20.07.2016
comment
да, я сделал это, я подозреваю, что в моем init.lua есть ошибка, но я не могу ее найти   -  person Aldo Castro Freire    schedule 24.07.2016


Ответы (1)


Ваш код необходимо поместить в файл с именем 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, а затем нажмите кнопку «Сохранить в ESP».

person Marcel Stör    schedule 20.07.2016
comment
Да, я сохраняю файл как init.lua, затем нажимаю «Сохранить в ESP», в первый раз все работает нормально, но когда он выключен, ESP каждый раз сбрасывается. - person Aldo Castro Freire; 24.07.2016
comment
Я подозреваю, что в моем файле init.lua есть ошибка, но я не могу ее найти. - person Aldo Castro Freire; 24.07.2016
comment
Да, я сохраняю файл как init.lua, затем нажимаю «Сохранить в ESP», в первый раз все работает нормально, но когда он выключен, ESP каждый раз сбрасывается. - person Aldo Castro Freire; 30.07.2016