本帖最后由 louis_lee 于 2025-4-2 11:41 编辑
直接问Deepseek就可以解决:
在 Home Assistant 中,通知是通过调用 `notify` 服务发送的(例如 `notify.mobile_app`)。要监听通知并将其作为 Node-RED 自动化触发条件,需通过 **事件监听** 实现。以下是具体步骤:
---
一、监听通知的原理
当调用 notify 服务时,Home Assistant 会触发一个 call_service 事件。通过捕获此事件并筛选 notify 服务调用,即可监听通知。
二、Node-RED 实现步骤
1. 添加 Home Assistant 事件监听节点
- 拖入一个
events: all 节点(用于监听所有事件)。
- 双击节点,设置
Event Type 为 call_service (监听服务调用事件)。
2. 过滤 notify 服务调用
3. 细化通知来源(可选)
如果需要监听特定通知来源(如手机应用),进一步过滤 service 名称:
// 示例:监听发送到手机的通知
[{
"property": "payload.event.service",
"op": "eq",
"value": "notify.mobile_app" // 替换为你的通知服务名称
}]
4. 提取通知内容(可选)
5. 触发自动化逻辑
将处理后的消息连接到后续节点(如延时、HTTP请求等),完成自动化流程。
三、验证通知服务名称
- 在 Home Assistant 的 开发者工具 > 服务 中,查找你的通知服务名称。
- 例如:
notify.mobile_app_iphone 或 notify.telegram 。
- 发送测试通知,观察事件数据:
- 在 Node-RED 的调试面板中查看
msg.payload 结构。
四、完整流程示例
[events: all] --> [switch 节点(过滤 notify 服务)] --> [function 节点(提取内容)] --> [自动化动作]
五、注意事项
- 权限问题:确保 Node-RED 的 Home Assistant 配置拥有读取事件的权限。
- 事件延迟:高频事件可能导致延迟,建议过滤条件尽量精确。
- 自定义通知内容:如需根据特定关键词触发,可在
switch 节点中检查 data.message 。
通过以上步骤,即可在 Node-RED 中捕获 Home Assistant 的通知事件并驱动自动化!
|