Lua如何实现获取1-4范围内排除指定输入值的其余可用数值
Lua Luup 环境下HDMI矩阵输入源状态切换实现方案
你可以通过遍历1-4的输入源编号,匹配当前激活值的方式一次性完成点亮与关闭操作,无需单独生成剩余数值列表,具体实现如下:
完整实现代码
-- 替换为你实际查询接口返回的当前在用输入源编号 local current_active_input = 2 -- 遍历所有4个输入源,自动设置对应状态 for input_id = 1, 4 do local target_state = input_id == current_active_input and 'true' or 'false' -- 注意:请将下方代码末尾的[你的设备ID]替换为你的HDMI矩阵对应的luup设备编号 luup.variable_set("urn:upnp-net:serviceId:Matrix1", "input"..input_id, target_state, [你的设备ID]) end
逻辑说明
- Lua中使用
..实现字符串拼接,"input"..input_id会自动生成input1、input2等符合你参数要求的变量名 - 上述代码一次性完成了激活按钮点亮、未激活按钮关闭的操作,无需分两次执行
- 如果你的业务逻辑要求必须分开执行点亮和关闭操作,可以使用以下写法:
local current_active_input = 2 -- 先点亮激活的输入源 luup.variable_set("urn:upnp-net:serviceId:Matrix1", "input"..current_active_input, 'true', [你的设备ID]) -- 遍历关闭其余输入源按钮 for input_id = 1, 4 do if input_id ~= current_active_input then luup.variable_set("urn:upnp-net:serviceId:Matrix1", "input"..input_id, 'false', [你的设备ID]) end end
注意事项
你贴出的luup.variable_set调用缺少第四个参数(设备编号),实际运行时需要替换为你自己的HDMI矩阵设备对应的luup ID,否则接口调用会失败。
内容的提问来源于stack exchange,提问作者nodecentral
相关产品推荐
相关产品推荐

