使用Wifi将Lua脚本上传到NodeMCU

use*_*618 4 lua wifi nodemcu

是否可以使用Wifi接口而不是串行将Lua脚本上传到NodeMCU?

我发现的教程和示例都使用串行接口,即电缆,来编程NodeMCU,但我想更改程序而不连接任何东西(使用智能手机或浏览器)

Eya*_*yal 5

我通过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)
Run Code Online (Sandbox Code Playgroud)

第一行使用网关服务器作为上载程序的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


Pro*_*rV5 2

对的,这是可能的。这是一种自制的选择,但在一定程度上有效。当然,唯一的限制是尺寸,但除此之外它的效果相当好。看一眼:

http://www.instructables.com/id/ESP8266-WiFi-文件管理/

你需要有一种方法来编写 PHP 程序(我用 C# 编写),如果你不能用另一种语言编写代码,你可以下载并重用该用户编写的内容并使用你自己的 PHP 服务器,你应该擅长去。

如果您有疑问,请询问。