2016-07-20 20 views
0

Ich mache diesen Code, um LEDs über das Internet zu steuern, aber ich möchte auch einen Schalter hinzufügen, um es an- und auszuschalten, falls ich keinen Internetzugang habe. Mein Problem ist, dass es normal funktioniert, wenn ich den Code hochlade, aber wenn der ESP8266 neu gestartet wird, funktioniert der Code nicht mehr. Jeder Teil des Codes arbeitet unabhängig in Ordnung, aber wenn ich sie zusammen doesnot es ArbeitEsp8266 unendlich zurücksetzen

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) 
+0

Hoffentlich eine dumme Frage, aber hast du das in init.lua? – cranphin

+0

Außerdem empfehle ich eine aktuelle NodeMCU Firmware, nicht 0.9.6. Und Sie könnten versuchen, auf die Verbindung des WIFI zu warten, etwa so: http://stackoverflow.com/questions/33288026/the-wifi-sta-module-connects-if-a-loop-is-running/33309872# 33309872 – cranphin

+0

ja ich tat es, ich vermute, dass es einen Fehler in meinem init.lua gibt, aber ich kann es nicht finden –

Antwort

0

Ihr Code muss in eine init.lua Datei mit dem Namen gestellt werden.

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

Sie sehen „lua: kann nicht geöffnet init.lua“ an die serielle Konsole ausgegeben, wenn das Gerät bootet, nachdem es gewesen ist frisch geflasht. Wenn NodeMCU ein init.lua im Root des Dateisystems findet, wird es als Teil der Boot-Sequenz ausgeführt (Standard-Lua-Feature). Daher wird Ihre Anwendung initialisiert und von init.lua ausgelöst. Normalerweise stellen Sie zuerst die WiFi-Verbindung ein und fahren nur fort, wenn erfolgreich war.

Mit ESPlorer eine Möglichkeit, dies zu erreichen, würde die Datei lokal auf dem Dateisystem als init.lua zu speichern und dann drücken Sie die ‚Save to ESP‘ Button.

+0

Ja ich speichere die Datei als init.lua dann drücke ich auf Speichern in ESP, das erste Mal funktioniert es aber gut Wenn es ausgeschaltet ist, wird das ESP jedes Mal zurückgesetzt. –

+0

Ich vermute, dass es einen Fehler in meinem init.lua gibt, aber ich kann es nicht finden –

+0

Ja, ich speichere die Datei als init.lua, dann drücke ich auf Speichern in ESP, das erste Mal funktioniert es gut, aber wenn es ausgeschaltet ist Das ESP wird jedes Mal zurückgesetzt –