2016-04-07 14 views
1

Ich bin ziemlich neu in Lua. Ich habe versucht, das folgende Problem alleine zu lösen, aber ich konnte es nicht herausfinden. Hier ist mein Problem:Ich kann nicht auf meinem NodeMCU devkit Webserver über mein iPhone zugreifen

Ich betreibe einen Webserver auf meinem NodeMCU devkit v0.9. Ich kann problemlos auf meinem eigenen Computer auf den Webserver zugreifen, aber wenn ich versuche, über das iPhone oder das Modul requests in Python auf den Server zuzugreifen, erhalte ich immer die Nachricht The network connection was lost. Ich verwende die folgende Firmware: nodemcu_float_0.9.6-dev_20150704 .

print(wifi.sta.getip()) 
led1 = 3 
led2 = 4 
gpio.mode(led1, gpio.OUTPUT) 
gpio.mode(led2, gpio.OUTPUT) 
srv=net.createServer(net.TCP,30) 
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> ESP8266 Web Server</h1>"; 
    buf = buf.."<p>GPIO0 <a href=\"?pin=led1\"><button>SWITCH LIGHTS</button></a></p>"; 
    buf = buf.."<p>"..gpio.read(led1).."</p>"; 
    local _on,_off = "","" 
    if(_GET.pin == "led1")then 
     if(gpio.read(led1) == 1) then 
      gpio.write(led1, gpio.LOW); 
     else 
      gpio.write(led1, gpio.HIGH); 
     end 
    else end 
    client:send(buf); 
    client:close(); 
    end) 
end) 
+0

Die Versionen 0.9.x sind hoffnungslos veraltet und werden nicht mehr unterstützt. Erstellen Sie Ihre eigene Firmware gemäß http://nodemcu.readthedocs.org/en/dev/en/build/ und versuchen Sie es erneut. Es gibt ein Beispiel für einen Webserver unter https://git.io/vVy4G, das jedoch früher oder später entfernt werden kann https://git.io/vVy4C. –

+0

Hey okay, ich habe es gelöst. Deine Lösung hat für mich nicht geklappt. Aber danke, dass du dir die Zeit genommen hast, mir zu helfen! – Viktor

+1

Also, was war das Problem? Bitte schreibe eine Antwort auf deine eigene Frage, damit andere daraus lernen können. –

Antwort

2

Ich konnte dieses Problem lösen, indem ich einige Informationen am Anfang des HTML-Puffers hinzufügte. Ersetzen: local buf='' mit local buf="HTTP/1.1 200 OK\r\nContent-type: text/html\r\nConnection: close\r\n\r\n"

Ich denke, Desktop-Browser sind in dieser Hinsicht nur nachsichtiger.

+1

Sie können auch eine HTML-Datei erstellen, die Sie anstelle des Quellcodes senden können. – Viktor