Community写作与编辑github.com

KoBa-beep/ClaudeCode-Skill

编写和调试 Fibaro Home Center 3 / Yubii Home (HC3, firmware 5.x) 的 Lua 场景——包括声明(触发器和条件:设备、定时、日出日落、全局变量、自定义事件、中央场景按钮)、动作代码、sourceTrigger、场景变量、重启选项,以及场景与 QuickApp 的选择。当用户需要自动化、规则、“当 X 时执行 Y”的 HC3 场景、将块场景转换为 Lua、询问场景为何不启动,或提及 fibaro 场景(即使未提及 “Lua”)时,请使用此技能。

ClaudeCode-Skill 是什么?

此技能专门用于在 Fibaro Home Center 3 / Yubii Home (HC3, firmware 5.x) 上编写和调试 Lua 场景。它完整覆盖场景开发的两个核心部分:声明(定义场景何时启动的触发器和条件,支持设备、定时、日出日落、全局变量、自定义事件和中央场景按钮)和动作(场景启动后执行的 Lua 代码)。技能还提供了场景与 QuickApp 的选择指南——QuickApp 负责驱动和设备通信,场景则通过调用 QuickApp 方法串联动作链。文档中包含大量实用技巧,如调试步骤(通过 `sourceTrigger` 查看启动原因)、常见陷阱(无内存持久化、重启选项的影响、触发器仅对变化响应、值类型问题等),以及可直接粘贴的声明和动作代码块交付模板。支持平台:HC3 和 Yubii Home(firmware 5.x)。适合需要创建自动化规则、排查场景故障、或将块场景转换为 Lua 代码的用户。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/KoBa-beep/ClaudeCode-Skill/tree/HEAD/fibaro-hc3/hc3-lua-scenes

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

HC3 Lua 场景

用用户的自然语言回答;标识符保持为英文。向初学者解释在哪里点击。

场景还是 QuickApp?

需求场景QuickApp
响应事件(按钮、门、时间、变量)并执行少量动作✅较重
在内存中保持状态、持续运行、与设备通信(HTTP、TCP、MQTT)❌ 每次运行从零开始✅
UI 中的按钮/标签❌✅
经验法则:QuickApp 是驱动程序,场景通过调用 QA 方法串联动作链(fibaro.call(qaId, "setMode", "Away"))。对于 QuickApp,请使用 hc3-quickapp 技能。

两部分

  1. 声明(条件/触发器):Lua 表,而非代码——何时场景启动。
  2. 动作:每次启动时执行的 Lua 代码。 提示:先在 块模式 中构建场景,然后“转换为 Lua”:HC3 会生成精确的声明(属性名称、星期编号)。转换是单向的。

声明

{
  operator = "all",               -- "all"(AND)| "any"(OR);组可以嵌套
  conditions = {
    { type = "device", id = 201, property = "value", operator = "==", value = true, isTrigger = true },
    { type = "date", property = "cron", operator = "match", value = {"*", "*", "*", "*", "*", "*"}, isTrigger = false },
  }
}
  • isTrigger = true:此条件的变化会启动场景(然后评估所有条件);false:仅作为过滤器。至少需要一个触发器,否则场景永远不会自行启动。
  • 运算符:==、!=、>、>=、<、<=、anyValue(任意变化)、match(日期)。
  • 设备条件中的 duration = 60:必须保持 true 60 秒 [V](在转换后的块场景中可见)。 条件类型和示例:references/declarations.md(设备、中央场景按钮、定时、日出日落、全局变量、自定义事件、警报、位置、天气、HC3 启动)。

动作

fibaro.debug("MyScene", json.encode(sourceTrigger))      -- 开发时第一行:查看是什么启动了场景
if sourceTrigger.type == "device" then                    -- .id, .property, .value
elseif sourceTrigger.type == "date" then
elseif sourceTrigger.type == "user" then                  -- 手动启动(运行按钮、应用)
end

函数:fibaro.call、fibaro.getValue、fibaro.get(值 + 时间戳)、fibaro.getGlobalVariable / setGlobalVariable(字符串)、fibaro.getSceneVariable / setSceneVariable(在同一场景的多次运行之间持久化)、fibaro.alert、fibaro.emitCustomEvent、fibaro.scene("execute"|"kill", {ids})、fibaro.profile、fibaro.alarm、fibaro.setTimeout(ms, fn)、api.*、net.HTTPClient、json。日志需要标签:fibaro.debug("Tag", "msg")。 通知:规则与 QuickApp 相同(用户与手机 ID,无关键推送)——请参见 hc3-quickapp 技能、references/notifications.md。

陷阱(在回答“我的场景不工作”之前阅读)

  1. 运行之间没有内存 → 使用场景变量或全局变量。
  2. “允许重新启动正在运行的场景” 选项:是 = 新触发器会终止正在运行的实例(待处理的 setTimeout 丢失)并重新开始——适用于“最后一次运动后 5 分钟关灯”;否 = 在运行期间忽略触发器(包括 setTimeout 等待期间)。
  3. 手动模式忽略声明。
  4. 触发器仅在变化时触发:相同值再次出现 → 无反应。
  5. 值类型:开关 true/false、调光器/卷帘 0–99、传感器数值;全局变量始终是字符串(== "1",而非 == 1);在声明中写 value = true 不带引号。
  6. 改变自身触发设备的场景可能造成循环:用 sourceTrigger 过滤。
  7. 只有设备属性能触发场景;QuickApp 的内部变量不能(全局变量可以,且 QA 属性更新如 value 可以)。
  8. 避免 while true / 长时间 fibaro.sleep:使用触发器、setTimeout 或 QuickApp。
  9. 定时中的星期编号和某些属性名称可能不同:检查转换后的块场景 [V]。

交付物

声明块 + 动作块(分开,可粘贴)、要设置的场景选项(重启是/否、自动模式、房间)、需要替换的 ID(ID_DOOR_SENSOR…)或用户库存中的真实 ID,以及测试步骤(“打开门,场景的控制台显示……”)。工作示例:references/examples.md。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相关技能