- 积分
- 562
- 金钱
- 526
- 威望
- 0
- 贡献
- 0
- HASS币
- 0
高级会员
- 积分
- 562
- 金钱
- 526
- HASS币
- 0
|
本帖最后由 afkkk 于 2023-5-2 01:51 编辑
去年装修后开始使用HA,经过一段时间调整,目前各项配置属于比较稳定、便捷的状态。其中使用了一些技巧很少被提及,特别是对新人来说难以找到这方面的资料。所以用《HA+NR流程控制》为标题总结分享一下。每篇帖子单独分享一个技巧。
这个系列将给读者带来的帮助:
- 熟悉NR常用排名在10以后的节点
- 熟悉多种不同复杂度的范式,并运用其实现更强大的智能家居控制流
- 了解一些使用HA+NR接入/控制外围设备的例子
阅读需要具备的背景知识:
- 运行和维护Home Assistant系统;
- 以任何方式安装了Node-RED,并将Node-RED接入Home Assistant系统;
- 熟悉Home Assistant中常用基本概念:如Integration, Device, Service, Entity;
- 在Node-RED中编写过Flow,了解NR内置以及node-red-contrib-home-assistant-websocket插件中常用节点;
环境:Home Assistant 20230309.1 + Node-RED 3.0.1
-----------------------------------------------以下为正文-----------------------------------------------
容易的范式 - 等待无人状态持续x秒
设计效果:开灯 - 等待无人状态持续x秒 - 关灯
经典实现:配置两条规则:1. 当传感器感应到人,则打开灯;2. 当传感器超过x秒未感应到人,则关闭灯;
以上两条规则是逻辑完全独立的。即使灯并非由规则1打开,规则2仍然可能将其关闭。如果我们需要NR仅关闭自己打开的灯,则需要稍复杂一点的Flow
流程图:
解释:开灯后会流转到第一个wait until节点,流程会阻塞直到传感器探测到无人(off)。接下来继续流转到第二个wait until节点,这个节点会阻塞直到传感器探测到有人(on) 或者 timeout,这两种情况分别由Output 1/2输出。其中Output 1将回到第一个wait until节点继续等待,Output 2则是我们需要的传感器无人X秒。
这里涉及wait until节点的Timeout的使用,参数填写如下图所示
lessen_1.json
(4.63 KB, 下载次数: 96)
顺便介绍一下wait until节点。它来自node-red-contrib-home-assistant-websocket插件。它是插件中唯一可以阻塞流程直到Entity状态满足特定条件的节点,因此具有不可替代的作用。
和它有相似功能的节点有:
1. current state:在流程中获取Entity当前状态,但不能阻塞流程;
2. events: state / events: all:当Entity满足特定条件时触发,发起一个流程。但events*只能作为流程的开始而不能作为流程的中间节点;
3. poll state: 定时拉取Entity的状态,等效于设置的定时条件的Inject + current state节点;相比于events*,会忽略拉取间隔中的变化;
另外,wait until节点只能基于state而非attributes设置等待条件。特殊情况可能需要用template定义一个新的Entity,而其值是源Entity的attributes。
下一篇预告:同时满足多个条件X秒后关闭灯光,主要会涉及逻辑运算节点和trigger节点的使用
|
评分
-
查看全部评分
|