是否可以使用Wifi接口而不是串行将Lua脚本上传到NodeMCU?
我发现的教程和示例都使用串行接口,即电缆,来编程NodeMCU,但我想更改程序而不连接任何东西(使用智能手机或浏览器)
我通过wifi上传所有模块.我首先bootstrap.lua
以通常的方式上传程序(通过USB).然后,该程序可用于上载实际(较大)有效载荷.这是引导程序:
ip, mask, host = wifi.sta.getip() port, path, pgm = 80, "/upload", "u.lc" file.remove(pgm) ; file.open(pgm, "w+") payloadFound = false local conn = net.createConnection(net.TCP, 0) conn:on("connection", function(conn) conn:send("GET "..path.."/"..pgm.." HTTP/1.0\r\n".."Host: "..host.."\r\nConnection: close\r\nAccept: */*\r\n\r\n") end) conn:on("receive", function(conn, payload) if (payloadFound) then file.write(payload) file.flush() else payloadOffset = string.find(payload, "\r\n\r\n") if (payloadOffset) then file.write(string.sub(payload, payloadOffset + 4)) file.flush() payloadFound = true end end end) conn:on("disconnection", function(conn) file.close() dofile(pgm) end) conn:connect(port,host)
第一行使用网关服务器作为上载程序的Web服务器.第二行设置要上载的程序的port(80
),path(/upload
)和name(u.lc
).然后它获取文件并最终运行它(最后一行).
在运行此功能之前,您必须激活无线连接,并且您的Web服务器当然应该处于活动状态,并且您的有效负载位于/upload/u.lc
.
当然,您可以更改硬连线值,甚至可以使它们动态化.
顺便说一句,压缩格式是为了使初始上传速度快,我luatool.py
使用该--dofile
选项上传.
u.lc
稍后更新您的程序()是一个简单的重复dofile("bootstrap.lua")
.
我u.lc
是一个阶段2引导程序,上传了一长串文件(主要是.lc
).对于这个简短的回答可能也太过牵扯.
最后,我应该提一下,这是基于https://github.com/Manawyrm/ESP8266-HTTP/
HTH