Espeasy: 确定 Plugin_ptr 索引的错误

创建于 2019-10-21  ·  5评论  ·  资料来源: letscontrolit/ESPEasy

在 __Plugin.ino 代码中发现了一个非常非常严重的错误,看起来我是在 20180705 左右引入的。参见: https :

问题在于处理一些函数,如 PLUGIN_xxx (WRITE/READ/etc)
然后它使用错误的索引来做一些事情,这可能会在没有包含所有插件的构建上产生奇怪的结果(主要是测试和自定义)

影响有点难以预测,但我猜它可能会导致奇怪的崩溃。
这也是开始报告 WDT 重新启动的时间。
因此,修复后,它有望解决许多问题。

Plugin_ptr 将仅使用基于构建中包含的插件数量的索引。
因此必须使用基于 DeviceIndex 的索引(不确定这是否是正确的索引)而不是插件 ID 号(例如,达拉斯传感器的 004)来解决它

Stabiliy Bug

所有5条评论

所以也许这就是为什么我在使用没有 IRTX 插件的自定义构建替换 ESP_Easy 固件后,最近经历了从 IRTX 到 Switch 的设备更改,同时保持配置...:-)
干得好,Gijs,你发现了这个错误!

该错误似乎很旧,所以不确定您在版本中做了什么大的跳跃?

此外,我已经在对代码进行一些重构,以使变量的命名更具描述性,因为我也对它们感到困惑。
可能这个bug没那么严重,但是还是应该清楚代码是做什么的,现在的代码真的不清楚。

嗯,配置非常旧,并且在过去 2 年中在该节点上执行了许多固件升级......过去 IRRX 和 IRTX 都在标准或测试官方版本中,但现在情况不再如此,所以我不得不从自定义版本开始使用 Vagrant(顺便说一句,非常感谢您准备了这么好的环境!)。 由于我需要很多插件,而当前的 IRRX 和 IRTX 插件太大了,我禁用了 IRTX,因为 IRRX 对我来说更重要,但是当我将自定义固件上传到节点时,配置保持不变。 然后 IRTX(设备 11)更改为 Switch。

是的,如果找不到插件,它会将其设置为第一个。
这也是一个错误,我可以通过这些更改来修复。

IR 插件的大小使我决定将它们移动到单独的构建中。
但是就像您也发现的那样,您不能拥有 1-build-fits-all,所以这就是我研究 Vagrant 设置的原因。

也解决了沿途的长期烦恼。
如果任务设置为当前构建中未包含的 pluginID,则它会将“Switch”显示为插件。
此外,如果您随后编辑该页面,会发生什么也不是很清楚。

这是修复后的样子:

image

将显示插件 ID 和名称。 启用状态将显示为禁用,其余将留空。
键入此内容时,我意识到红色按钮应显示“添加”或其他一些文本,表明您将在按下按钮时创建一个新条目。

此页面是否有帮助?
0 / 5 - 0 等级