Lua QuickApp报错:attempt to index a nil value (field 'eth0')求助
Broadlink RM4 Lua QuickApp 崩溃报错:attempt to index a nil value (field 'eth0')
问题背景
一年前安装的Broadlink RM4 Lua QuickApp原本运行正常,电力故障后重新连接WiFi,出现持续崩溃报错。
相关代码段
function BroadlinkDeviceManager:discover(func) local blDevices = {} local network = api.get("/proxy?url=http://localhost:11112/api/settings/network") local myIP = network.networkConfig.eth0.ipConfig.ip -- for debugging if dofile then myIP = "192.168.1.59" -- Util.getIPaddress() -- end
报错信息
[DEBUG] [QUICKAPP1613]: ./include/manager.lua:97: attempt to index a nil value (field 'eth0') [ERROR] [QUICKAPP1613]: QuickApp crashed [ERROR] [QUICKAPP1613]: Unknown error occurred: handleJsonRpc
问题原因
电力故障重新连接WiFi后,设备当前使用的网络接口是无线wlan0,而非代码中硬编码的有线接口eth0,network.networkConfig.eth0为nil,直接索引该字段导致崩溃。
修复方案
方案1:直接替换为无线接口(确认当前用WiFi)
如果确定设备现在通过WiFi连接,直接把eth0替换为wlan0:
function BroadlinkDeviceManager:discover(func) local blDevices = {} local network = api.get("/proxy?url=http://localhost:11112/api/settings/network") local myIP = network.networkConfig.wlan0.ipConfig.ip -- 替换为wlan0 -- for debugging if dofile then myIP = "192.168.1.59" -- Util.getIPaddress() -- end
方案2:自动检测可用网络接口(更健壮)
为了兼容有线/无线切换,遍历所有网络接口,自动获取有有效IP的接口:
function BroadlinkDeviceManager:discover(func) local blDevices = {} local network = api.get("/proxy?url=http://localhost:11112/api/settings/network") local myIP = nil -- 遍历所有网络接口,查找带有效IP的接口 for ifaceName, ifaceConfig in pairs(network.networkConfig) do if ifaceConfig.ipConfig and ifaceConfig.ipConfig.ip then myIP = ifaceConfig.ipConfig.ip break end end -- 兜底逻辑:如果没找到可用IP,优先用调试固定IP,否则抛出错误 if not myIP then if dofile then myIP = "192.168.1.59" else error("Failed to get valid IP from any network interface") end end
验证方法
修改代码后重启QuickApp,观察是否再出现崩溃报错。调试时可添加以下代码,查看所有网络接口的实际配置:
-- 调试用:打印所有网络接口信息 print(require("inspect")(network.networkConfig))
内容的提问来源于stack exchange,提问作者Abdullah
相关产品推荐
相关产品推荐

