C.A.F.E. (Редактор Комплексных Автоматизационных Потоков) является интеграцией, которая добавляет в Home Assistant визуальный редактор «в потоке», немного в духе Node-RED, но с одной важной разницей: C.A.F.E. не является движком выполнения. Home Assistant остается единственным, кто выполняет ваши автоматизации. C.A.F.E. просто преобразует вашу визуальную схему в 100% соответствующий YAML и хранит его непосредственно в системе Home Assistant.
Проще говоря, вы рисуете логику с помощью блоков, соединенных стрелками, а затем сохраняете… и Home Assistant выполняет, как обычно. Никаких контейнеров Docker, чтобы добавить, никаких баз данных, которые нужно поддерживать, никаких дополнений, которые становятся слабым звеном, как это бывает с 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.: оба редактируют один и тот же источник.
Установка C.A.F.E. в Home Assistant (через HACS)
Рекомендуемый способ — через HACS, с добавлением пользовательского репозитория. Официальный README дает порядок действий: в HACS, разделе Интеграции, в меню с тремя точками, «Пользовательские репозитории», затем добавьте https://github.com/FezVrasta/cafe-hass в качестве интеграции.

Далее ищем C.A.F.E. в HACS и устанавливаем (скачиваем).
Перезагрузка Home Assistant, затем добавление интеграции C.A.F.E. через Настройки → Устройства и службы → Добавить интеграцию.

Как только все настроено, C.A.F.E. появится в боковой панели Home Assistant в виде панели. Это не «дашборд» Lovelace, это именно пункт в боковой боксе.

Хотите протестировать без установки?
Можно попробовать C.A.F.E. без установки через веб-интерфейс, если вы имеете удаленный доступ к Home Assistant.

На практике помните, что выставлять Home Assistant в Интернет следует аккуратно (Nabu Casa, обратный прокси, аутентификация и т.д.). Это возможно, но лучше избегать режима «юло», когда речь идет о домашней автоматизации.
Если вы не хотите предоставлять доступ к вашему Home Assistant (что совершенно понимаемо), я установил C.A.F.E. на тестовом сервере Home Assistant, который я предоставил вам несколько недель назад, что позволит вам протестировать в условиях, не разрушая вашу систему и не требуя удаленного доступа;-)
Основы: как это используется в повседневной жизни
Оказавшись в C.A.F.E., интерфейс очень «редактор потоков»: палитра узлов слева (триггеры, условия, действия, задержки, ожидания…), большой центральный холст, на который помещаются блоки, и панель свойств справа для настройки каждого узла. Вы можете зумировать, перемещаться и даже использовать мини-карту для навигации по сложным автоматизациям.

Типичный сценарий выглядит так: вы помещаете триггер (например, «обнаружено движение»), добавляете условие (например, «ночь»), затем действие (например, «включить свет в коридоре») и соединяете все это. Затем вы открываете каждый узел, чтобы выбрать сущности и службы. C.A.F.E. полагается на интеллект сущностей со стороны Home Assistant (автозаполнение, знание состояний через API), чтобы избежать ввода идентификаторов вручную.
Очень удобный момент: вы можете открыть существующую автоматизацию, увидеть, как она «отображается» на холсте, перемещать блоки для лучшего понимания, редактировать, а затем сохранять в Home Assistant. Вы редактируете, сохраняете, и возвращаетесь к автоматизации в родном редакторе, с YAML, дополненным метаданными компоновки!

Импорт, экспорт, отладка
C.A.F.E. может импортировать существующую автоматизацию, а также он может импортировать YAML или JSON, а затем экспортировать поток в JSON. Это полезно для обмена «схемой» или архивирования версии перед переработкой немного сложной логики.
Что касается отладки, идея проста: сохранить ясное представление о выполнении. Есть режим отладки с индикатором «по шагам» и опциями для симуляции результатов условий, чтобы визуализировать путь, пройденный в автоматизации.
А что касается проекта, интеграция с Trace View Home Assistant является одной из сильных сторон: вы остаетесь в официальных инструментах, чтобы анализировать, что произошло.
Конкретные примеры, где C.A.F.E. действительно делает разницу
Возьмите автоматизацию «вечерние огни» с достаточно реалистичными параметрами. Событие: за несколько минут до заката. Условие: только если мы до определенного времени (иначе слишком поздно, бесполезно). Действие: включить определенные лампы, но с различной яркостью в зависимости от временного окна. В YAML это часто заканчивается вложенными «выборами» и пересекающимися условиями. В C.A.F.E. такая логика становится картой: мы видим развилки, видим пути, можем дышать. И это именно тот тип примеров, показанный в транскрипции.
Другой наглядный случай: сценарии с переменными. Простой пример: вы вызываете скрипт, который возвращает информацию (температура, стоимость, сводное состояние), вы сохраняете ответ в переменной, а затем снова используете эту переменную в следующих действиях через шаблоны Jinja. README объясняет механизм «ответов скрипта» (response_variable) и использование в Jinja {{ variable.champ }} в следующих узлах.

А для установщиков или продвинутых пользователей: как только речь заходит о циклах, возвратах, нелинейной логике, C.A.F.E. обещает «оптимизированную» компиляцию, которая может генерировать структуру типа «машины состояния», когда это необходимо, оставаясь полностью совместимой с Home Assistant.
Ограничения и предостережения (потому что да, это бета)
Проект представлен как «недеструктивный», но он все еще в бета-версии, с частыми исправлениями. Первое правило: сделайте резервную копию ваших автоматизаций перед внесением важных изменений.
Второе правило: в критических автоматизациях (сигнализация, отопление, безопасность) действуйте постепенно. Сначала протестируйте на простой автоматизации, сравните YAML до/после, проверьте след, затем повышайте сложность. Это немного как метод «не реновируй дом, ломая все стены сразу» (и ваше будущее спокойствие скажет вам спасибо!).
Третье правило: примите мысль о том, что авторазметка и визуальное восстановление не будут идеальными на 100% для очень ручного YAML. Проект это признает: импорт сложного ручного YAML может иметь неровности.
Стоит ли его принимать сейчас?
Если вы уверены в родном редакторе и ваши автоматизации остаются простыми, C.A.F.E. не является «обязательным». Однако, если у вас есть сценарии, которые выходят за рамки, если вы ненавидите перечитывать длинный YAML как день без Wi-Fi, или если вам нравится визуальный комфорт Node-RED, но без второго движка, C.A.F.E. отмечает много пунктов: визуально, нативно, без нагрузки и без ловушек на долгий срок, так как мы остаемся на стандартных автоматизациях Home Assistant. Здесь, по крайней мере, его приняли!




