C.A.F.E. 在 Home Assistant 中:无需 Node-RED 的 Node-RED 风格自动化…

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.中重新打开它:两者编辑的是同一个源。

在Home Assistant中安装C.A.F.E.(通过HACS)

推荐的方法是通过HACS,并添加自定义库。官方README给出了详细步骤:在HACS中,进入Integrations部分,点击三点菜单,选择“自定义库”,然后添加https://github.com/FezVrasta/cafe-hass作为集成。

然后,在HACS中找到C.A.F.E.并进行安装(下载)。

重启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提供访问权限(这完全可以理解),我已经在我提供的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解释了“脚本响应”的机制(response_variable)以及在后续节点中如何使用Jinja {{ variable.champ }}

对于安装者或高级用户:一旦我们谈论循环、回退、不线性逻辑,C.A.F.E.宣布了一个“优化”的编译,可以在必要时生成一种类型的“状态机”结构,同时保持100%兼容Home Assistant。

限制和注意事项(因为是的,它是一个beta版)

该项目被描述为“非破坏性”,但仍处于beta测试阶段,频繁修复。第一条规则:在修改重要内容之前,对您的自动化进行备份。

第二条规则:对于关键自动化(警报、供暖、安全),逐步进行。首先在一个简单的自动化中测试,比较YAML的前后,然后检查跟踪,然后增加复杂性。这有点像“我们不会一次打破所有墙来翻新房屋”(您的未来平静会感谢您!)。

第三条规则:接受这样一个观点,即自动布局和可视化重构对于非常手工制作的YAML而言不会是100%完美的。项目承认:导入复杂的手动YAML可能会有一些瑕疵。

现在要采纳它吗?

如果您对原生编辑器感到舒服,且您的自动化保持简单,C.A.F.E.不是“必需品”。但是,如果您有脚本变得复杂,如果您讨厌重读像没有Wi-Fi的一天那样长的YAML,或者如果您喜欢Node-RED的视觉舒适度但又不想额外的引擎,C.A.F.E.复合许多条件:可视化、本土、无开销,并且没有长期陷阱,因为我们保持在标准的Home Assistant自动化中。在这里它已经被采纳了!

為了讓您知道,這篇文章可能包含聯盟連結,但不會影響您自己賺取的收入或產品的價格。通過此連結,您可以感謝我每天在部落格上所做的工作,並幫助支付網站的費用(主機託管、比賽郵資等)。您不需要花費任何金錢,但對我幫助很大!所以感謝所有一起玩的人!
您對這篇文章有何看法?請留下您的意見!請保持禮貌:問候和感謝並不費用!我們在此進行建設性的討論。巨魔將被刪除。

Leave a reply

19 − 16 =

Maison et Domotique
Logo
Compare items
  • Casques Audio (0)
  • Sondes de Piscine Connectées (0)
  • Smartphones (0)
Compare