Community라이팅 & 에디팅github.com

KoBa-beep/ClaudeCode-Skill

Fibaro Home Center 3 / Yubii Home (HC3, 펌웨어 5.x)용 Lua 장면(Scene)을 작성하고 디버깅합니다. 선언(트리거 및 조건 — 장치, cron, 일출/일몰, 전역 변수, 사용자 정의 이벤트, 중앙 장면 버튼), 액션 코드, sourceTrigger, 장면 변수, 재시작 옵션, 그리고 장면과 QuickApp 중 선택을 다룹니다. 사용자가 자동화, 규칙, '언제 X이면 Y'를 HC3에서 요청하거나, 블록 장면을 Lua로 변환하거나, 장면이 시작되지 않는 이유를 묻거나, 'fibaro 장면'을 언급할 때(Lua 단어가 없더라도) 이 스킬을 사용하세요.

ClaudeCode-Skill란 무엇인가요?

이 스킬은 Fibaro Home Center 3 (HC3, 펌웨어 5.x 이상)에서 Lua로 장면(Scene)을 작성하고 디버깅하는 전문 가이드를 제공합니다. 사용자가 'X가 발생하면 Y를 실행'하는 자동화 규칙을 만들거나, 블록 장면을 Lua로 변환하거나, 기존 장면이 작동하지 않는 이유를 분석할 때 유용합니다. 스킬은 장면과 QuickApp의 차이점을 설명하고, 조건/트리거를 정의하는 선언(Declarations) 부분과 실제 실행 로직을 담는 액션(Actions) 부분을 명확히 구분합니다. 또한 장면 디버깅 시 흔히 발생하는 함정(메모리 부족, 재시작 옵션, 트리거 변경 감지 등)을 상세히 경고하며, 최종 결과물로 붙여넣기 가능한 선언 블록과 액션 블록, 장면 옵션 설정, 및 테스트 절차를 제공합니다. 주요 플랫폼은 Claude Code이며, 참고 문서와 예제를 통해 초보자도 쉽게 따라할 수 있도록 구성되어 있습니다.

지원 대상✓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 장면

사용자의 언어로 답변하세요. 식별자는 영어로 유지하세요. 초보자에게는 클릭할 위치를 설명하세요.

장면(Scene) 또는 QuickApp?

용도장면QuickApp
이벤트(버튼, 문, 시간, 변수)에 반응하여 몇 가지 동작 수행✅더 무거움
메모리에 상태 유지, 영구 실행, 장치와 통신(HTTP, TCP, MQTT)❌ 매 실행마다 처음부터 시작✅
UI에 버튼/레이블 표시❌✅
경험 법칙: QuickApp은 드라이버 역할을 하고, 장면은 QA 메서드를 호출하여 동작을 연결합니다
(fibaro.call(qaId, "setMode", "Away")). QuickApp의 경우 hc3-quickapp 스킬을 사용하세요.

두 부분

  1. 선언(Declarations) (조건/트리거): Lua 테이블 — 코드가 아님 — 장치가 언제 시작되는지 정의.
  2. 액션(Actions): 각 시작 시 실행되는 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: 60초 동안 true 상태를 유지해야 함 [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("태그", "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. 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.

관련 스킬