通过电路板创建的接入点在NodeMCU中创建HTTP服务器
我使用NodeMCU(ESP8266)对机器人进行编码并希望对其进行远程控制。我目前的解决方案是连接到附近的路由器,连接到互联网并创建一个TCP HTTP服务器。数据通过HTTP请求从移动设备(远程)传输到NodeMCU(机器人)。遥控器通过HTML/CSS/JavaScript浏览器加载到移动设备上。通过电路板创建的接入点在NodeMCU中创建HTTP服务器
我想的却是为NodeMCU建立自己的热点,这是因为:
- 路由器不需要
- 的连接更为直接
我希望同样的TCP HTTP解决方案,但我不知道如何通过自定义热点为网页提供服务。
这是我的代码:
-- Connect to router
wifi.sta.config("ssid","password")
wifi.sta.connect()
-- Code for waiting for connection
-- Create server
srv = net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive",function(conn,payload)
for line in string.gmatch(payload,'[^\r\n]+') do
s = string.find(line, "GET /&")
-- If query is there, control robot
if s ~= nil then
-- Do stuff with query
break;
-- If no query, serve webpage
else
file.open("index.html", "r")
while true do
s = file.read(1460)
if s == nil then
break
end
conn:send(s)
end
file.close()
end
break
end
conn:on("sent", function(conn) conn:close() end)
end)
end)
创建自定义热点:
wifi.setmode(wifi.STATIONAP)
cfg={}
cfg.ssid="custom_ssid"
cfg.pwd="custom_password"
wifi.ap.config(cfg)
那么,如何让这样的移动可以访问服务器?我如何获取/设置服务器的IP?基本上,我只是需要它的工作。谢谢!
不知道我完全理解,但我相信你真的很接近。查看http://nodemcu.readthedocs.io/en/latest/en/modules/wifi/#wifiap-module的AP功能文档。
wifi.ap.config(cfg)
设置您注意到的SSID和密码。您的客户端通过加入网络连接到此AP。
如果您随后打印wifi.ap.getip()
,您会看到设备默认具有IP地址192.168.1.4。因此,对于加入此网络的客户端,除非您明确设置了自定义IP,否则您的服务器的访问范围是192.168.1.4:80。
但是,发送数据似乎中断。您有多个conn:send(s)
(在循环中),但您也有conn:on("sent", function(conn) conn:close() end)
这意味着连接将在第一个conn:send
后关闭!查看http://nodemcu.readthedocs.io/en/latest/en/modules/net/#netsocketsend的文档,了解如何正确执行此操作的示例。
不确定你的意思,但我得到它的工作。采取upvote。 –