使用Wifi将Lua脚本上传到NodeMCU
有没有可能使用Wifi接口而不是串口来向NodeMCU上传Lua脚本?
我找到的教程和示例都使用串口接口,即使用电缆来编程NodeMCU,但是我想不连接任何东西(使用智能手机或浏览器)就更改程序。
我通过 wifi 上传了所有的模块。我首先通过 USB 传输方式上传了一个 bootstrap.lua 程序。然后可以使用该程序上传真正的(较大的)负载。以下是引导程序:
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 服务器。
第二行设置要上传的程序的端口(80)、路径(/upload)和名称(u.lc)。
然后 GET 文件并最终运行它(最后一行)。
在运行此程序之前,您必须激活您的无线连接,并且您的 web 服务器当然也应该处于活动状态,并在 /upload/u.lc 中有您的负载。
可以自然地更改硬编码的值,甚至可以使它们动态化。
标题 ##这应该是您想要的简单起点。
顺便说一句,这种紧凑的格式可以使初始上传更快,我使用 luatool.py 并使用 --dofile 选项进行上传。
稍后更新您的程序(u.lc)只需要简单的重复运行 dofile("bootstrap.lua") 即可。
我的 u.lc 是一个第二阶段的引导程序,它上传了一长串文件(大多数为 .lc 文件)。对于这个简短的答案来说可能太过复杂了。
最后,我应该提到,这部分代码参考自 https://github.com/Manawyrm/ESP8266-HTTP/。
希望能对您有所帮助。
另一种方法,如果你使用 Esplorer 作为 IDE,文档在这里。
它使用 ESP8266 上的 telnet 服务器,并将 Esplorer 串口重定向到 telnet 服务器的地址;这是一个 Windows 示例,但我已经成功地在 Linux 下使用 "socat" 实现。
我找到的唯一问题是如果你想要多个 TCP 服务器,NodeMCU 不允许这样做,这种情况下,也许另外一个充当 TCP/串口中继的 ESP8266 可能是答案。
以下是一种解决方案的变种(http://www.instructables.com/id/ESP8266-WiFi-File-Management/),但是使用的是桌面的 .NET 应用程序,而非 PHP Web 服务器 https://github.com/Orudnev/.Net-WiFi-File-Manager-for-ESP8266。如果您不想安装 Web 服务器,那么使用 FileManager.exe 应用程序就足够方便啦。
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
是的,这是可能的。这是一种自制选项,但在一定程度上有效。当然,唯一的限制是大小,但除此之外,它的工作效果相当不错。可以看一下:
http://www.instructables.com/id/ESP8266-WiFi-File-Management/
您需要有一种编写 PHP 程序的方法(我是用 C# 编写的),如果您不能使用其他语言编写代码,则可以下载并重用该用户编写的内容,并使用自己的 PHP 服务器,然后您就可以使用了。
如果您有问题,请问。