无法将 Lua 脚本加载到 NodeMCU:无效的 node.chipid()

Posted

技术标签:

【中文标题】无法将 Lua 脚本加载到 NodeMCU:无效的 node.chipid()【英文标题】:Unable to load Lua Scripts to NodeMCU: Invalid node.chipid() 【发布时间】:2020-01-10 14:54:08 【问题描述】:

对于所有这些情况,我都可以通过串行 USB 上传固件和监控。但是在创建我的第一个固件之后,对于所有新固件,我无法使用 nodemcu-tool 上传 Lua 脚本,而不会得到以下信息:

错误信息

F:\Development\NodeMCU\helloworld>nodemcu-tool -p COM3 upload init.lua 
[NodeMCU-Tool]~ Unable to establish connection 
[NodeMCU-Tool]~ Invalid node.chipid() Response: 6935962

观察

可以使用 nodemcu-tool 重置板。让我认为波特率很好。 在加载任何固件后可以看到正在从 PuTTy 创建的文件系统。让我认为固件没问题。 尝试了多个开发板,结果相同 找到错误消息device-info.js的来源。第 45 行或第 49 行 我不知道“响应:6935962”是什么意思。这是我的芯片 ID 还是错误代码? 在过去的几天里,新的commit 被添加到固件源中。不知道这是否相关。 希望在我进入 Docker 兔子洞之前解决这个问题。懒惰的。我知道。

9/6/2019 - 创建第一个固件以开始开发

使用https://nodemcu-build.com/ 和这些模块(cron、file、gpio、i2c、mdns、mqtt、net、node、sjson、tmr、uart、wifi)构建固件 使用NodeMCU-PyFlasher-4.0上传固件 此固件没有问题。我已经能够上传 lua 脚本并成功测试它们。即使是现在,我也可以恢复到这个固件并毫无问题地使用它。我什至从原始链接重新下载了这个固件,它工作正常。

9/7/2019 - 创建了一个新固件来使用 adc 和其他好东西

使用https://nodemcu-build.com/ 和这些模块(adc、cron、file、gpio、i2c、mdns、mqtt、net、node、rtctime、sjson、tmr、uart、wifi)构建固件 使用NodeMCU-PyFlasher-4.0上传固件 遇到上述问题。

9/8/2019 - 用最少的模块构建固件

使用https://nodemcu-build.com/ 和这些模块(file、gpio、net、node、tmr、uart、wifi)构建固件 使用NodeMCU-PyFlasher-4.0上传固件 遇到上述问题。

平台和工具

Windows 10 开发板:HiLetgo ESP8266 NodeMCU LUA CP2102 ESP-12E Internet WiFi Development Board Open Source Serial Wireless Module 固件生成器:https://nodemcu-build.com/ 串行监视器:PuTTy 0.72 固件加载器:NodeMCUPyFlasher 4.0 Lua 脚本加载器:nodemcu-tool 3.0.2

【问题讨论】:

我删除了固件下载链接,因为它们已失效(仅 24 小时可用)。您还链接到的PR #2886 结束了我们对 SDK 3.0 的多月升级。你可以在the milestone 看到所有的 PR。另请注意,NodeMCU-Tool 有 no "official" support 用于 NodeMCU 超过 1.5.4。 关注github.com/AndiDittrich/NodeMCU-Tool/issues/65 【参考方案1】:

fetchDeviceInfo() 第一次调用node.info() https://github.com/AndiDittrich/NodeMCU-Tool/blob/master/lib/connector/device-info.js#L9。然后它会执行if-else 来确定它是在 ESP8266 还是 ESP32 上运行。

随着最近升级到 SDK 3.0,node.info() 在 PR #2830 中发生了更改。请参阅https://nodemcu.readthedocs.io/en/latest/modules/node/#nodeinfo 上的文档。它现在返回脚本不认为来自 ESP8266 的值。然后脚本在else 分支中调用node.chipId()。因此,它从 ESP8266 获取芯片 ID,但 期望 来自 ESP32。因此,例外。

我不知道“响应:6935962”是什么意思。这是我的芯片 ID 还是错误代码?

这是你的芯片 ID。

长话短说:NodeMCU-Tool 需要按照上面的说明进行调整,以适用于当前的 NodeMCU 版本。

【讨论】:

【参考方案2】:

我从最近的云构建中缓存了相同的问题 (https://nodemcu-build.com/)。当我切换回旧的时它可以工作。它看起来像是构建系统或最近源代码的问题。您可以切换到其他构建方法并尝试使用旧代码。

【讨论】:

请阅读 OP 的 cmets。我能够通过从 repo 下载 nodemcu-tool 的最新源来解决这个问题。

以上是关于无法将 Lua 脚本加载到 NodeMCU:无效的 node.chipid()的主要内容,如果未能解决你的问题,请参考以下文章

ESP8266 NodeMCU Lua 如何清除堆?

无法上传到 NodeMCU Lua

物联网 Nodemcu esp8266 LUA 脚本的 DAST 安全扫描 www HTML 服务器连接到摄像头和空调继电器

NodeMCU:可用堆大小下降,直到内存不足错误

如何让KY-022红外接收器模块在Lua的NodeMCU上工作?

是否可以 OTA 更新 NodeMCU Lua 文件?