找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 155|回复: 0

01HomeAssistant 中Node-RED Companionh和Nod-red的使用和关系,小白原理讲解。

[复制链接]

30

主题

4

回帖

228

积分

管理员

积分
228
发表于 2025-12-28 11:48:48 | 显示全部楼层 |阅读模式

Node-RED 是 Home Assistant (HA) 中最强大的自动化工具之一。基于 2025.12.2+ 版本,HA 的集成方式已经非常成熟。

HA系列主机发货之前均已经安装了Nodered端口为默认的1880

前置确认

确保你的两个容器都已经正常运行。[1]


第一步:在 Home Assistant 中生成“长期访问令牌”

这是 Node-RED 登录 HA 的“钥匙”。

  • 打开 Home Assistant 网页版。

  • 点击左下角的用户头像(你的个人资料页)。

  • 向下滚动页面,找到 “长期访问令牌” (Long-Lived Access Tokens) 区域。

  • 点击 “创建令牌” (Create Token)

  • 在弹出的窗口中输入名称,例如 NodeRED_Docker,点击确定。

  • 重要: 系统会生成一串很长的字符。立即复制这串字符并保存好(例如先粘贴到记事本),因为关掉窗口后你就再也看不到了。



第二步:在 Node-RED 中安装 HA 插件

Node-RED 原生不支持 HA,需要安装专门的节点包。

  • 打开 Node-RED 网页版 (http://IP:1880)。

  • 点击右上角的 “三道杠”菜单 -> 设置 (Settings)

  • 在左侧选择 “节点管理” (Palette)

  • 切换到 “安装” (Install) 选项卡。

  • 在搜索框输入:node-red-contrib-home-assistant-websocket

    • 注意:一定要认准带有完整的节点名字


  • 点击右下角的 “安装” (Install),等待安装完成。

  • 安装完成后,关闭设置窗口。你会发现左侧节点栏多出了很多蓝色的 “Home Assistant” 节点。



第三步:配置服务器连接 (最关键一步)

这一步将把你的 Node-RED 容器与 HA 容器绑定。

  • 在左侧节点栏找到 events: state (或者叫 events: all) 节点,把它拖到中间的工作区。

  • 双击 这个节点,进入编辑界面。

  • Server 栏的右侧,点击 小铅笔图标 (Add new Server)。

  • 进入配置界面,按照以下标准填写(针对 Docker 环境):

    • Name (名称): 随意填,例如 My Home Assistant。

    • Base URL (基础地址): 输入 HA 的完整地址。

      • 强烈建议使用 Linux 宿主机的真实 IP,例如:http://192.168.1.100:8123

      • 避坑指南: 除非你精通 Docker 网络,否则千万不要填 http://localhost:8123 或 http://127.0.0.1:8123,因为在 Node-RED 容器眼里,localhost 是它自己,而不是旁边的 HA 容器。


    • Access Token (访问令牌): 粘贴第一步里你保存的那长串字符。

    • Enable Heartbeat (启用心跳): 勾选(保持默认)。

    • Cache Location (缓存位置): 保持默认(通常是 LocalStorage)。


  • 点击右上角的 “添加” (Add)

  • 回到节点编辑界面,点击右上角的 “完成” (Done)

  • 最后一步: 点击 Node-RED 界面右上角红色的 “部署” (Deploy) 按钮。



第四步:验证是否连接成功
  • 观察刚才拖出来的那个节点。

  • 如果节点下方出现一个小绿点,并显示 “connected” (已连接)“ready”或“state_changed”,恭喜你,绑定成功![1]

  • 如果显示红色 “disconnected” 或 “connecting”,请检查:

    • IP 地址是否填错(必须是局域网 IP)。

    • 防火墙是否拦截了 8123 端口。

    • 令牌是否复制完整。




第五步:创建一个简单的自动化(测试)

我们做一个简单的测试:当“灯”打开时,在 Node-RED 调试窗口输出消息。

  • 拖入节点:

    • 拖入一个 events: state (事件: 状态) 节点。

    • 拖入一个 debug (调试) 节点(绿色)。


  • 连线:

    • 把 events: state 的右侧端口连到 debug 的左侧端口。


  • 配置

    • 双击它。

    • Entity ID (实体 ID): 系统应该会自动加载出你 HA 里的设备。输入一个灯或开关的 ID,例如 light.living_room。如果能自动补全,说明连接绝对没问题。

    • If State (如果状态): 输入 on (注意全是小写)。

    • 点击“完成”。


  • 部署:

    • 点击右上角 “部署”


  • 触发:

    • 去 Home Assistant 页面把那个灯打开。

    • 回到 Node-RED,看右侧边栏的 调试图标 (小虫子) 选项卡。

    • 你应该能看到一条包含该设备信息的 JSON 消息弹出来。





进阶建议 (Home Assistant 2025+)

虽然上述 WebSocket 方式已经完美够用,但为了更好的体验,建议在 Home Assistant 的 HACS (Home Assistant Community Store) 中安装 "Node-RED Companion" 集成。

  • 作用: 它可以让你直接在 Node-RED 里创建实体(例如创建一个虚拟开关),并同步显示在 HA 的仪表盘上。

  • 安装方法: HACS -> Integrations -> 搜索 "Node-RED Companion" -> 下载并重启 HA -> 设置 -> 设备与服务 -> 添加集成 -> 搜索 "Node-RED Companion" 添加即可。




-----------------------------------------接下来讲解Node-RED Companionh和Nod-red的关系-------------------------------------------------------------------------------------------

用最通俗的话来说:Docker 安装的是“房子和人”,而 HACS 安装的是“高级对讲机”。

它们根本不是替代关系,而是互补关系

下面我用大白话给你拆解一下它们的区别:

1. 核心角色的区别
  • Docker 安装的 Node-RED

    • 角色: 它是大脑(应用程序本体)。

    • 作用: 它是真正干活的地方,你的自动化逻辑、连线图全部运行在这个 Docker 容器里。如果没有它,就没有 Node-RED。

    • 类比: 这就像是你买了一台电脑


  • HACS 安装的 "Node-RED Companion"

    • 角色: 它是 Home Assistant 里的一个增强补丁(集成/驱动)。

    • 作用: 它本身不能运行自动化,它的作用是帮 Home Assistant 更好地“理解”和“配合” Docker 里的那个 Node-RED。

    • 类比: 这就像是你给电脑装了一个特殊的驱动程序




2. 功能上的区别(为什么要装 HACS 这个?)

如果你用 Docker 部署了 Node-RED,并且安装了第二步提到的那个 websocket 节点包,你能做的是:

  • Node-RED 控制 HA: 比如在 Node-RED 里让 HA 的灯打开。

  • Node-RED 读取 HA: 比如在 Node-RED 里知道 HA 的温度计是多少度。


但是! 此时 Node-RED 在 HA 眼里只是一个“外人”。

如果你安装了 HACS 里的 Node-RED Companion,神奇的事情发生了:

  • 🚀 Node-RED 可以造设备 (Entity)

    • 场景: 你想在 Node-RED 里通过计算算出一个“今日电费”,然后把这个结果直接显示在 Home Assistant 的仪表盘上。

    • 没装 Companion: 很难实现,需要写复杂的 API 代码。

    • 装了 Companion: 直接拖一个 sensor 节点,填个名字,Home Assistant 里立刻就会多出一个 sensor.today_cost 的实体,像原生设备一样好用。


  • 🚀 Webhooks (网络钩子) 更方便

    • 它能帮你在 Node-RED 和 HA 之间建立更高效的通信通道,不需要你自己去配置复杂的 URL。




3. 总结与建议

为了让你看得更清楚,请看这个简单的关系图:

  • Home Assistant (Docker):你的智能家居中心。

    • (里面装了 HACS Node-RED Companion):负责给 Node-RED 开后门,允许 Node-RED 往 HA 里塞数据。


  • Node-RED (Docker):你的自动化中心。

    • (里面装了 websocket 节点):负责拿着钥匙去连 HA。



结论:

  • 必须装: Docker 里的 HA 和 Node-RED(这是基础)。

  • 必须装: Node-RED 里的 node-red-contrib-home-assistant-websocket 节点(不然连不上)。

  • 强烈建议装: HACS 里的 Node-RED Companion。


小白教程建议:
先不要纠结 HACS 这个 Companion。你目前只用前文提到的 Docker 环境 + Node-RED 内部插件,已经足够你控制家里的灯光开关了。等你玩熟了,想在 Node-RED 里“创造”虚拟传感器并在 HA 界面显示时,再去装 HACS 的这个集成也不迟。


-------------HACS 里的 Node-RED Companion 安装之后是不是就不需要在docker里面安装nodered了?---------------------------------

完全不是!

这是新手最容易产生的误解。直接回答你的问题:安装了 HACS 的插件,你依然必须保留 Docker 里的 Node-RED。

如果不装 Docker 里的 Node-RED,你装的那个 HACS 插件就是个“光杆司令”,没有任何用处。

为了让你彻底明白,我们可以用**“手机和手机壳”或者是“游戏机和手柄”**来做比喻:

1. 形象的比喻
  • Docker 里的 Node-RED = 一台游戏机(主机)

    • 它是真正运行游戏(自动化程序)的地方。没它,你玩不了任何东西。


  • HACS 里的 Node-RED Companion = 一个增强型手柄

    • 它是插在 Home Assistant 上的一个配件。

    • 它的作用是让你玩游戏更顺手,或者能玩一些特殊功能的游戏。



问: 我买了“增强型手柄”(HACS插件),是不是就可以把“游戏机”(Docker容器)扔了?
答: 当然不行!扔了游戏机,手柄连什么?

2. 为什么你会产生这个误解?

通常是因为看了一些基于 Home Assistant OS (HassOS) 的教程。

  • HA OS 用户: 他们在 HA 商店里点一下“安装 Node-RED”,系统会自动在后台帮他们装一个 Docker 容器,看起来好像只装了一个插件。

  • Docker 用户(你): 你是手动挡玩家。你需要自己维护 HA 容器,也需要自己维护 Node-RED 容器。HACS 里的那个东西,仅仅是一段代码,用来帮 HA 更好地接收 Node-RED 的指令,它本身不包含 Node-RED 的运行环境。


3. 如果你删了 Docker 里的 Node-RED 会发生什么?

如果你现在去把 Node-RED 的 Docker 容器停掉或删掉:

  • 你的 http://IP:1880 页面将无法打开。

  • 你所有的自动化流程全部消失。

  • Home Assistant 里的 HACS Companion 插件会一直在那“空转”,因为它等着 Node-RED 来连接它,但 Node-RED 已经不在了。


总结

请记住这个公式:

完整好用的系统 = Docker Node-RED (必须有) + Docker Home Assistant (必须有) + HACS Companion 集成 (选装,推荐)

所以,请保持你的 Docker 容器正常运行,不要删除它。


-----------------------------------------------------应用案例------------------------------------------------------


在 HA 中安装 Companion 集成

这里的操作全部在 Home Assistant 网页端进行。

  • 下载组件:

    • 点击左侧栏的 HACS

    • 点击 集成 (Integrations)

    • 点击右下角的 “浏览并下载存储库” (Explore & Download Repositories) 蓝色按钮。

    • 在搜索框输入:Node-RED。

    • 找到 Node-RED Companion (通常作者是 Zachary Barett),点击进入。

    • 点击右下角的 下载 (Download),再次点击下载确认。

    • 等待下载完成后,必须重启 Home Assistant (设置 -> 系统 -> 右上角电源按钮 -> 重启 Home Assistant)。


  • 添加集成:

    • 重启完成后,进入 设置 (Settings) -> 设备与服务 (Devices & Services)

    • 点击右下角 添加集成 (Add Integration)

    • 搜索 Node-RED。

    • 点击出现的 Node-RED Companion 图标。

    • 系统通常会自动完成配置。如果它询问配置,直接点提交即可(它会自动侦测)。

    • 安装成功后,你会在集成列表里看到 "Node-RED"。




第一阶段:实战教程——“凭空创造”一个虚拟开关

为了演示 Companion 的强大,我们不仅是读取数据,我们要在 Node-RED 里创造一个开关,显示在 HA 上,并用它控制流程。

步骤 1:在 Node-RED 中找到“实体”节点
  • 打开 Node-RED 界面。

  • 在左侧节点栏向下滚动,找到深蓝色的 Home Assistant Entities 分类(注意不是之前的 Home Assistant 灰色/浅蓝色分类)。

  • 找到 entity (或者叫 sensor, switch 等独立节点,新版本通常合并了或者有独立图标) 节点。

    • 推荐做法: 搜索 switch,找到深蓝色的那个,名字通常叫 Entity 但图标是开关,或者直接找 switch (属于 Home Assistant Entities)。

    • 注意: 确保选的是 Home Assistant Entities 分组下的节点,而不是普通的 WebSocket 节点。



步骤 2:配置虚拟开关
  • 拖入一个 switch (属于 Home Assistant Entities 分组) 节点到工作区。

  • 双击编辑

    • Name (名称): 输入 My Virtual Test。

    • Server: 选择你之前配好的 HA 服务器。

    • Entity Config (实体配置): 这里的 Entity ID 留空会自动生成,或者手动填 switch.my_virtual_test点击确认。

    • Output on Connect: 勾选(连接时输出状态)。


  • 点击 完成 (Done)


步骤 3:连接逻辑

这个开关在 HA 里被点击时,Node-RED 会收到消息。

  • 拖入一个 Debug (调试) 节点。

  • 将刚才的 switch 节点输出连到 debug 节点。

  • 点击右上角 部署 (Deploy)


步骤 4:见证奇迹 (验证)
  • 回到 Home Assistant 网页。

  • 设置 -> 设备与服务 -> Node-RED 集成,点击“1 个设备”或“实体”。

  • 你会发现多了一个叫 My Virtual Test 的开关!

  • 把它添加到你的仪表盘(概览)上。

  • 测试: 在 HA 仪表盘上点击这个开关(打开它)。

  • 观察: 回到 Node-RED,看右侧调试窗口,你会收到一条 true 或 on 的消息。



第二阶段:进阶玩法——双向同步

上面的例子只是 HA 控制 Node-RED。真正的强大在于 Node-RED 也可以改变这个开关的状态(比如自动化运行结束了,自动把开关关掉)。

场景模拟: 你在 HA 打开开关 -> 触发 Node-RED 里的一个 5 秒倒计时 -> 倒计时结束,Node-RED 自动把 HA 里的开关关掉。

  • 修改连线:

    • switch 节点 (输出) -> delay 节点 (设置延时 5 秒) -> switch 节点 (输入)。

    • 注意: 这里我们用同一个 switch 节点,既做输入也做输出。如果是新版节点,可能需要分开拖一个 switch 实体节点作为输入(监听),另一个作为输出(设置状态),或者该节点本身支持双向。

    • 更稳妥的方法(使用 API 设置状态):

      • 拖入 switch (实体节点) 作为触发源。

      • 连线到 delay (5秒)。

      • 连线到 change (转换) 节点,将 msg.payload 设置为 false (关闭)。

      • 最后连回到 switch (实体节点) 的输入端。



  • 部署并测试:

    • 在 HA 打开开关。

    • 等待 5 秒。

    • 你会看到 HA 界面上的开关自动变回关闭状态




总结

Node-RED Companion 的核心价值在于:把 Node-RED 的逻辑处理能力,伪装成 HA 的原生设备。 按照上述步骤,你已经成功打通了这层“伪装”,可以开始构建复杂的自动化了!



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|HomeAssistant 莱特智能 ( 渝ICP备11002672号-1 )

GMT+8, 2026-3-3 00:14 , Processed in 0.075153 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表