C.A.F.E. (복잡한 자동화 흐름 편집기)는 Home Assistant에 비주얼 에디터 “흐름”을 추가하는 통합입니다. 이는 Node-RED와 비슷한 개념이지만, 중요한 차이점이 있습니다: C.A.F.E.는 실행 엔진이 아닙니다. Home Assistant가 여전히 귀하의 자동화를 실행합니다. C.A.F.E.는 단순히 귀하의 비주얼 다이어그램을 100% 호환되는 YAML로 변환하여 Home Assistant 시스템에 직접 저장합니다.
간단히 말해서, 블록을 화살표로 연결하여 논리를 그린 다음 저장하면… Home Assistant가 평소처럼 실행합니다. 추가할 도커 컨테이너도 없고, 유지해야 할 데이터베이스도 없으며, Node-Red와 같이 약점이 되는 애드온도 없습니다. 이는 프로젝트에서 강조하는 “제로 오버헤드” 약속과 정확히 일치합니다.

Home Assistant에 유용한 이유
YAML을 좋아하신다면 이미 이유를 아실 것입니다: 견고하고, 기본적이며, 예측 가능하죠… 하지만 자동화가 커지면 금세 텍스트의 벽에 부딪히게 됩니다. C.A.F.E.는 “스파게티 접시가 되는” 바로 그 순간을 겨냥하고 있습니다. 기존 자동화를 읽고 비주얼 맵을 재구성하여 감사하고 이해하며 정리하는 데 매우 유용합니다.
Node-RED에서 오셨다면, 안심할 수 있는 점은 다음과 같습니다: 노드 기반의 논리를 다시 찾을 수 있지만, Home Assistant 밖으로 실행을 전환하지는 않습니다. C.A.F.E.는 인터페이스를 변경하지만 엔진은 변경하지 않으며, 언제든지 기본 에디터로 돌아갈 수 있습니다.
또한 많은 사람들에게 의미 있는 두 가지 “보너스”가 있습니다:
- C.A.F.E.는 비주얼 인터페이스 측에서 변수를 더 잘 처리합니다. 반면 Home Assistant의 기본 비주얼 에디터는 이러한 것을 위해 종종 YAML에 손을 대야 하곤 합니다.
- C.A.F.E.는 Home Assistant의 트레이스와 통합됩니다: 목표는 공식 도구 내에서 디버깅을 유지하고 평행 우주를 만들지 않는 것입니다.

스마트한 기능: 잠금 없음, 이국적인 형식 없음
가장 안심이 되는 주장은 아마도 이것일 것입니다: C.A.F.E.를 제거하면 자동화가 계속 작동합니다. 비주얼 레이아웃(블록의 위치)을 잃겠지만, 논리는 여전히 표준 YAML입니다.
이 레이아웃을 유지하기 위해 C.A.F.E.는 자동화의 variables 블록 내에 “무해한” 객체로 메타데이터(노드 위치 등)를 저장합니다. Home Assistant에서 자동화를 수정한 다음 C.A.F.E.에서 다시 열 수 있습니다: 두 시스템이 동일한 소스를 편집합니다.
Home Assistant에 C.A.F.E. 설치하기 (HACS를 통해)
추천하는 방법은 HACS를 통해 진행하며, 사용자 지정 리포지토리를 추가하는 것입니다. 공식 README는 절차를 안내합니다: HACS에서 통합 섹션으로 가서, 점 세 개의 메뉴에서 “사용자 지정 리포지토리”를 선택한 후 https://github.com/FezVrasta/cafe-hass를 통합으로 추가합니다.

그 후, HACS에서 C.A.F.E.를 찾아 설치(다운로드)합니다.
Home Assistant를 재시작한 다음, 설정 → 장치 및 서비스 → 통합 추가를 통해 C.A.F.E. 통합을 추가합니다.

설치 후, C.A.F.E.는 Home Assistant의 사이드바에서 패널 형태로 나타납니다. 이는 Lovelace “대시보드”가 아니라 사이드바의 입력입니다.

설치 없이 테스트하고 싶으신가요?
원거리에서 Home Assistant에 접근할 수 있는 경우, C.A.F.E.를 설치하지 않고 시도해볼 수 있습니다.

실제로는, Home Assistant를 인터넷에 노출하는 경우 안전하게 진행해야 합니다(Nabu Casa, 리버스 프록시, 인증 등). 가능하지만, 스마트 홈과 관련하여 “요로” 모드는 피하는 것이 좋습니다.
Home Assistant에 접근하고 싶지 않다면(완전히 이해할 수 있는 부분입니다), 무너뜨리지 않고 테스트할 수 있도록 몇 주 동안 제공해온 Home Assistant 실험 서버에 C.A.F.E.를 설치해 두었습니다. 이를 통해 귀하의 환경에서 손상시키지 않고도 테스트할 수 있습니다.
사용 방법: 일상에서 사용하기
C.A.F.E.에 들어가면 인터페이스는 매우 “흐름 편집기” 같습니다: 왼쪽에는 노드 팔레트(트리거, 조건, 동작, 지연, 대기 등), 중앙에는 블록을 배치하는 큰 캔버스, 오른쪽에는 각 노드를 구성하는 속성 패널이 있습니다. 확대하고 이동할 수 있으며, 복잡한 자동화에서 탐색을 위해 미니 맵을 사용할 수 있습니다.

전형적인 시나리오는 다음과 같습니다: “움직임 감지” 트리거를 놓고, “어두운 경우” 조건을 추가한 후, “복도 조명 켜기”와 같은 행동을 추가하고 모두 연결합니다. 그런 다음 각 노드를 열어 엔티티와 서비스를 선택합니다. C.A.F.E.는 Home Assistant 측의 엔티티의 지능(자동 완성, API를 통한 상태 인식)을 사용하여 사용자 정의 ID를 수동으로 입력하지 않도록 합니다.
매우 유용한 점: 기존 자동화를 열어 캔버스에 “올려놓을” 수 있으며, 블록을 이동시켜 명확히 보고 수정한 후 Home Assistant에 저장할 수 있습니다. 편집하고 저장하여 기본 에디터에서 자동화를 다시 찾을 수 있으며, 메타데이터로 풍부해진 YAML을 포함합니다!

가져오기, 내보내기, 디버깅
C.A.F.E.는 기존 자동화를 가져오고 YAML 또는 JSON도 임포트할 수 있으며, 흐름을 JSON으로 내보낼 수 있습니다. 이는 “도식”을 공유하거나 복잡한 논리를 재구성하기 전에 버전을 아카이브하는 데 유용합니다.
디버깅 측면에서는 간단한 아이디어입니다: 실행의 명확한 해독을 유지하는 것입니다. 단계별로 진행하는 디버깅 모드가 제공되며, 조건 결과를 시뮬레이션할 수 있는 옵션이 있어 자동화에서 경로를 시각화할 수 있습니다.
또한 프로젝트 측면에서 Home Assistant의 Trace View와의 통합은 발표된 주요 장점 중 하나입니다: 발생한 내용을 분석하기 위해 공식 도구 내에 남아 있습니다.
C.A.F.E.가 정말로 차이점을 만드는 구체적인 예
저녁 조명 자동화를 현실적으로 고려해 보세요. 트리거: 일몰 직전. 조건: 특정 시간 전에만 (그렇지 않으면 너무 늦음, 필요 없음). 동작: 특정 조명을 켜지만, 시간에 따라 다르게 밝기를 조절합니다. YAML에서는 종종 “choose”가 중첩되고 서로 교차하는 조건이 발생합니다. C.A.F.E.에서 이러한 논리는 로드맵처럼 변모하여 분기점을 보고 경로를 확인하며 숨을 쉴 수 있습니다. 그리고 이는 전사에서 보여준 정확한 예입니다.
또 다른 매우 말하기 쉬운 사례: 변수를 사용하는 시나리오입니다. 간단한 예: 정보를 반환하는 스크립트를 호출하고(온도, 요금, 요약 상태 등) 응답을 변수에 저장한 다음 후속 동작에서 Jinja 템플릿을 통해 이 변수를 재사용합니다. README는 “script responses” (response_variable)의 메커니즘과 Jinja에서 {{ variable.champ }}의 사용을 다음 노드에서 설명합니다.

설치자나 고급 사용자에게: 루프, 되돌리기, 비선형 논리에 대해 이야기하면, C.A.F.E.는 필요한 경우 “최적화된” 컴파일을 발표하여 “상태 머신” 유형의 구조를 생성할 수 있으며, Home Assistant와 100% 호환성을 유지합니다.
제한 사항 및 주의사항 (왜냐하면 네, 베타 버전입니다)
이 프로젝트는 “비파괴적”이라고 소개되지만 여전히 베타 버전이며, 자주 수정됩니다. 첫 번째 규칙: 중요한 사항을 수정하기 전에 자동화의 백업을 만드십시오.
두 번째 규칙: 중요한 자동화(경보, 난방, 보안)에서는 점진적으로 진행하십시오. 간단한 자동화에서 먼저 테스트하고, YAML을 전후로 비교한 다음, 트레이스를 확인하고 복잡하게 진행하십시오. 이는 “모든 벽을 한 번에 부수며 집을 리노베이션하지 않는다”는 방법과 유사합니다(미래의 안도감을 위해 감사합니다!).
세 번째 규칙: 자동 레이아웃과 비주얼 재구성이 매우 수공예적인 YAML에서는 100% 완벽하지 않을 것이라는 아이디어를 수용하십시오. 프로젝트에서 인정합니다: 복잡한 수동 YAML의 가져오기에는 괴리가 있을 수 있습니다.
지금 도입할까요?
기본 에디터에 능숙하고 자동화가 간단하다면, C.A.F.E.는 “필수가” 아닙니다. 그러나 각기 다른 시나리오로 나아가거나, 긴 YAML 문서를 읽는 것을 싫어하거나, Node-RED의 비주얼 편안함을 좋아하지만 두 번째 엔진을 원하지 않는다면, C.A.F.E.는 많은 요소를 충족시킵니다: 비주얼, 기본 상태, 오버헤드 없음, 그리고 장기적인 함정이 없으므로 Home Assistant 표준 자동화에 남아 있습니다. 여기서는 이미 사용하고 있습니다!




