是否可以 OTA 更新 NodeMCU Lua 文件?
Posted
技术标签:
【中文标题】是否可以 OTA 更新 NodeMCU Lua 文件?【英文标题】:Is it possible to update NodeMCU Lua files OTA? 【发布时间】:2018-10-26 14:22:30 【问题描述】:我希望能够更新我的 NodeMCU ESP8266-01 OTA,因为它们位于尴尬的位置。我绝不是 ESP 或 NodeMCU 方面的专家,但我找不到任何关于 OTA 更新的最新信息。我发现一些关于它的讨论可以追溯到 2015 年,但似乎从未实施过。
我使用带有 NodeMCU 的 ESP 来控制 PWM 调光器。我使用 NodeMCU Firmware FLasher 上传了 NodeMCU 的预编译版本,然后使用 ESPlorer 上传了一个名为“init.lua”的自定义 lua 文件。我什至不确定这是否是正确的处理方式,但它确实有效。
所以主要的问题是:OTA 更新是否已经实现,或者是否有可能以某种方式实现?
澄清一下,我不想更新固件。据我了解,固件是您自己构建的,或者在https://nodemcu-build.com 之类的网站上构建。我想更新在 ESP 上运行的 lua 文件,您通常通过 ESPlorer 之类的程序上传这些文件。
【问题讨论】:
【参考方案1】:我发现一些关于它的讨论可以追溯到 2015 年,但它似乎从未实施过。
确实,固件 OTA 尚不可用。但是,您可能知道,NodeMCU 固件对固件 OTA 的需要远低于例如 NodeMCU 固件。与 Arduino 平台。我认为与在其上运行的应用程序代码相比,您不太可能需要使用内置模块替换/升级/扩展固件。
幸运的是,替换设备上的一个或多个 Lua 脚本(已编译或未编译)并重新启动它非常简单。 https://frightanic.com/iot/tools-ides-nodemcu/ 列出的所有 Web 和云 IDE 都提供此功能。甚至还有 a pending PR 将为 NodeMCU 带来 FTP 支持。
如需完整的 Lua 供应系统,请查看@TerryE 在https://github.com/nodemcu/nodemcu-firmware/tree/master/lua_examples/luaOTA 提供的内容
【讨论】:
感谢您分享所有这些信息 Marcel。我想在这种情况下我可能“错误地”使用了 NodeMCU。我只是建立在其他人创造的之上。澄清一下,我上传到 ESP 模块的 init.lua 文件是我放在那里的唯一代码,init.lua 包含处理 PWM 调光的代码。我想最好让 init.lua 成为某种外壳,并有另一个处理调光的脚本,然后可以更新? 是的,请参阅 nodemcu.readthedocs.io/en/latest/en/upload/#initlua 了解一种可能的构建init.lua
的方法。
谢谢,我可能需要花点时间阅读整个文档。
您需要的任何其他内容,或者是否可以“关闭”(即接受)以使其不再显示为未答复?
frightanic.com 上列出的“Stehlik IDE”正是我想要的(显然:P)。再次感谢【参考方案2】:
我尝试使用Marcel Stör's answer 中提供的链接中列出的两个 Web IDE,但老实说,我不明白如何使用这两个 IDE。它们似乎也不是我想要的,需要一个服务器来连接,或者一个额外的程序,这是我想避免的。
编辑:显然,我最终使用了列表中的两个 Web IDE 之一。自从我做这一切以来已经有一段时间了,我脑子里有点模糊。
我最终偶然发现了this GitHub page,它似乎提供了我正在寻找的东西:通过网络浏览器访问 ESP 上的 Lua 文件的能力。我个人已经完全更改了ide.lua
文件,因为我需要在init.lua
脚本中调用它的函数。但是,我认为您可以将 ide.lua
脚本上传到 ESP,然后将包含 dofile("ide.lua")
的行添加到您的 init.lua
文件中。
如果有人对我对 ide.lua
脚本的更改或我的实现感兴趣,您可以查看我的 repo Timmiej93 / QuinLED / Program code。
【讨论】:
现在我很困惑……Petr's 是我的概述中列出的仅有的两个 Web IDE 之一。您是说“……尝试使用这两个 Web IDE”和“……最终偶然发现了这个 GitHub 页面”,后者是两者之一? 嗯,也许我确实通过您的链接找到了该页面,我现在不确定。我知道我看了几十次那个概览列表,试图弄清楚他们都做了什么,以及我需要什么。我已经有一段时间没有这样做了,所以我可能会把各种故事混合在一起。【参考方案3】:事实上,NodeMCU 中有一个类可以实现 OTA,它被称为 ESPhttpUpdate,您可以参考ESPhttpUpdate 了解更多详细信息。
【讨论】:
那是Arduino核心,讨论的是NodeMCU固件。以上是关于是否可以 OTA 更新 NodeMCU Lua 文件?的主要内容,如果未能解决你的问题,请参考以下文章
使用 sjson.decode() 在 NodeMCU Lua 中检测格式错误的 JSON