我有一个项目正在使用两个NodeMCU和LUA。一个NodeMCU(服务器)托管一个简单的Web服务器,它响应特定的URL参数。例如,我在我的浏览器中转到:http://192.168.1.179/?pin=ON1,它的指示灯亮起等。我想通过按下按钮重新创建另一个NodeMCU(客户端)。阻止我的唯一部分是这个HTTP GET请求。
首先,我想简单地使用http模块..但模块不存在于最新的固件版本中。我不知道为什么会这样?我没有建立最新的 - 最新的。 2版本差异...我已提交自定义版本。
需要(' HTTP')
stdin:1:模块' http'找不到:
没有字段package.preload [' http']
没有档案' http.lc'
没有文件' http.lua'
显然还有其他更老的方法:
conn=net.createConnection(net.TCP, false)
conn:on("receive", function(conn, pl) print(pl) end)
conn:connect(80,"192.168.1.179")
conn:send("GET /?pin=ON1 HTTP/1.1\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")
我一直在努力让它发挥作用。 DNS以完整路径失败。原样,它只为输出部分输出0。请注意,这是一个本地服务器,它的地址是直接指定的。我从路由器获取DHCP,并且我尝试了静态IP。我不知所措,不知道还能做些什么。这也是完成这个项目的最后一步,所以它让我疯了!任何帮助,将不胜感激。我应该注意到我丢失了服务器的脚本,所以我无法引用它。虽然它有效。 X_X'
答案 0 :(得分:1)
根据https://github.com/nodemcu/nodemcu-firmware#releases,您无法再下载最近的二进制文件(就像> 2y一样)。最简单的方法是转到https://nodemcu-build.com/并为您构建二进制文件。确保选择HTTP模块。
但请注意,HTTP模块是HTTP 客户端!
至于使用此HTTP模块发出简单的GET请求,我建议您查看https://nodemcu.readthedocs.io/en/latest/en/modules/http/#httpget:
http.get("http://httpbin.org/get?paul=muller", nil, function(code, data)
if (code < 0) then
print("HTTP request failed")
else
print(code, data)
end
end)
这产生了这样的结果:
200 {
"args": {
"paul": "muller"
},
"headers": {
"Connection": "close",
"Host": "httpbin.org",
"User-Agent": "ESP8266"
},
"origin": "xxx.xxx.xxx.xxx",
"url": "http://httpbin.org/get?paul=muller"
}
要构建服务器,您需要net模块和net.createServer(net.TCP)
。我们在https://nodemcu.readthedocs.io/en/latest/en/modules/net/#example_6处有一些示例。
我建议不要构建自己的服务器,而是使用https://github.com/marcoskirsch/nodemcu-httpserver/代替琐碎项目以外的任何内容。
答案 1 :(得分:-1)
使用Arduino ESP8266WiFi&amp; amp; ESP8266HTTPClient库。我打算将此标记解决,因为我拒绝再处理LUA http选项了。