Communityライティング&編集github.com

KoBa-beep/ClaudeCode-Skill

Fibaro Home Center 3 / Yubii Home(HC3、ファームウェア 5.x)向けのLuaシーンを作成・デバッグします。宣言(トリガーと条件:デバイス、cron、日の出/日の入り、グローバル変数、カスタムイベント、セントラルシーンボタン)、アクションコード、sourceTrigger、シーン変数、再起動オプション、シーンとQuickAppの選択に対応します。ユーザーがオートメーション、ルール、「when X then Y」をHC3上で希望する場合、ブロックシーンをLuaに変換する場合、シーンが起動しない理由を尋ねる場合、またはfibaroシーンに言及する場合(「Lua」という言葉がなくても)にこのスキルを使用してください。

ClaudeCode-Skill とは?

このスキルは、Fibaro Home Center 3 / Yubii Home(HC3、ファームウェア 5.x)上で動作するLuaシーンとQuickAppの作成、デバッグ、トラブルシューティングを支援します。ユーザーの要望に応じて、シーンとQuickAppのどちらを使用すべきかを判断し、適切な設計を提案します。具体的には、条件/トリガーの宣言(デバイス、cron、日の出/日の入り、グローバル変数、カスタムイベント、セントラルシーンボタンなど)とアクションコードを生成し、sourceTriggerの活用方法、シーン変数による状態保持、再起動オプションの適切な設定についてガイドします。また、シーンが動作しない一般的な落とし穴(メモリ不足、再起動設定ミス、値の型不一致、トリガーの変更検知条件など)を事前に警告し、デバッグ方法(fibaro.debug、sourceTriggerの確認)を提供します。ブロックモードからLuaへの変換、手動モードと自動モードの違い、デバイスプロパティとグローバル変数のトリガー動作の違いについても説明します。Claude Code、Cursor、CodexなどのAIエージェントで利用でき、初心者向けにHC3上のクリック操作手順も含まれています。

対応✓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に質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

HC3 Lua シーン

ユーザーの言語で回答し、識別子は英語のままにします。初心者にはどこをクリックするか説明してください。

シーンかQuickAppか?

ニーズシーンQuickApp
イベント(ボタン、ドア、時間、変数)に反応し、いくつかのアクションを実行する✅負荷が大きい
メモリに状態を保持し、常時実行し、デバイスと通信する(HTTP、TCP、MQTT)❌ 毎回ゼロから開始✅
UI内のボタン/ラベル❌✅
経験則:QuickAppはドライバーであり、シーンはQAメソッドを呼び出してアクションを連鎖させます
(fibaro.call(qaId, "setMode", "Away"))。QuickAppについては hc3-quickapp スキルを使用してください。

2つの部分

  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:フィルタのみ。少なくとも1つのトリガーが必要です。そうでなければシーンは自動的に起動しません。
  • 演算子:==、!=、>、>=、<、<=、anyValue(任意の変更)、match(日付)。
  • デバイス条件の duration = 60:60秒間真の状態が続く必要があります [V](変換されたブロックシーンで表示されます)。 条件の種類と例:references/declarations.md(デバイス、セントラルシーンボタン、cron、日の出/日の入り、グローバル変数、カスタムイベント、アラーム、ロケーション、天気、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と同じルール(ユーザー vs 電話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. cronの曜日番号と一部のプロパティ名は異なる場合があります:変換されたブロックシーンを確認してください [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.

関連スキル