『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 6633|回复: 9

[流程系列] 这样一个自动化ha轻松做到nr不行?

[复制链接]

18

主题

352

帖子

2237

积分

金牌会员

North丶

Rank: 6Rank: 6

积分
2237
金钱
1880
HASS币
0

活跃会员卓越贡献

发表于 2020-2-23 02:40:15 | 显示全部楼层 |阅读模式
本帖最后由 raspberry0316 于 2020-2-23 02:55 编辑

晚上睡不着手机码字,明日再电脑排版。
回归主题,大家都知道 ha自动化里面可以调用服务 automation.turn on/off非常好用。
那么请问nr如何实现类似的功能呢? 一个流程去控制另外流程生效或者效。

例如这样一个自动化:
传感器a触发on,触发动作A,
传感器a触发off,触发动作B。
如果动作A没执行或执行完,即使传感器off也不会执行动作B,
如果动作B没执行或执行完,即使传感器on也不会执行动作A。

先扔个坑在这里求有空的大神解答。这个内容ha做起来很简单,求nr解决思路。
回复

使用道具 举报

15

主题

158

帖子

1368

积分

论坛技术达人

积分
1368
金钱
1200
HASS币
40
发表于 2020-2-23 03:49:29 | 显示全部楼层
用traffic节点,它可以在不满足条件的情况下阻止流里面的信息传递
回复

使用道具 举报

15

主题

158

帖子

1368

积分

论坛技术达人

积分
1368
金钱
1200
HASS币
40
发表于 2020-2-23 03:52:04 | 显示全部楼层
例如“如果动作A没执行或执行完,即使传感器off也不会执行动作B”

在A动作执行前对traffic发送stop,阻止b的触发条件。在A结束后对traffic发送GO,释放对b的阻止
回复

使用道具 举报

18

主题

352

帖子

2237

积分

金牌会员

North丶

Rank: 6Rank: 6

积分
2237
金钱
1880
HASS币
0

活跃会员卓越贡献

 楼主| 发表于 2020-2-23 14:02:29 | 显示全部楼层
minions123 发表于 2020-2-23 03:52
例如“如果动作A没执行或执行完,即使传感器off也不会执行动作B”

在A动作执行前对traffic发送stop,阻止b ...

能够给出一个实例呢,如何向traffic注入go 或者 stop 节点得属性还不是很了解。
第二是,按照理解是应该把traffic节点放B流程中,那流程A给了allow,会不会直接开始执行B后面得流程了(而不是等待触发)
回复

使用道具 举报

15

主题

158

帖子

1368

积分

论坛技术达人

积分
1368
金钱
1200
HASS币
40
发表于 2020-2-23 15:09:01 | 显示全部楼层
微信截图_20200223150452.png
我这个是用node-red的pid 来控制风管机风速的,这个pid风速必须在1.开机状态2.自动风速状态下才能发送,当这两个条件不满足时候,traffic会阻止(节点下面那个红绿指示灯),后面mqtt就接收不到数据了。

你可以把你的流程发上来看看,不知道你要求什么样的

回复

使用道具 举报

20

主题

348

帖子

2541

积分

金牌会员

Rank: 6Rank: 6

积分
2541
金钱
2193
HASS币
0
发表于 2020-2-23 16:04:08 | 显示全部楼层
我也有这个困惑,楼上大神发的教程看不太懂,不知还有没有简单的方法,就是通过条件让整个流有效或者无效。
回复

使用道具 举报

18

主题

352

帖子

2237

积分

金牌会员

North丶

Rank: 6Rank: 6

积分
2237
金钱
1880
HASS币
0

活跃会员卓越贡献

 楼主| 发表于 2020-2-23 17:05:57 | 显示全部楼层
本帖最后由 raspberry0316 于 2020-2-23 23:07 编辑
minions123 发表于 2020-2-23 15:09
我这个是用node-red的pid 来控制风管机风速的,这个pid风速必须在1.开机状态2.自动风速状态下才能发送,当 ...

根据老哥的提示,我上午也做了一些测试,大概整理出来思路。按照刚看到老哥给的示例,也根据我自己上午测试体验发现一些问题例如:老哥流程中的节点 判断风速挡位 判断后会给 自动风速节点发送 msg 自动风速节点触发allow,并且还会触发 自动风速节点后的流程,也就导致自动风速节点前的流程无论是否触发 因为接受到allow的指令 导致会执行后面流程 。后来我自己使用switch 把msg 分流 大概解决了 因触发allow 导致的触发后面进程。
测试流程图如下:
TIM截图20200223163733.png
解释:traffic 默认状态是stop,当流程B执行结束后 会给traffic发送 open 命令使traffic节点 allow 从而使得流程A生效。
在traffic后面增加switch节点,对traffic 发送过来的msg进行筛选,只通过流程A本身的msg,从而避免因触发traffic时导致后面流程执行。
当流程A执行结束,会向traffic节点发送close 使流程失效,除非流程B的下次触发。

更新:只要把resend选项关了 就不会因为触发traffic 而触发后面的流
回复

使用道具 举报

18

主题

352

帖子

2237

积分

金牌会员

North丶

Rank: 6Rank: 6

积分
2237
金钱
1880
HASS币
0

活跃会员卓越贡献

 楼主| 发表于 2020-2-23 17:49:59 | 显示全部楼层
aobolee 发表于 2020-2-23 16:04
我也有这个困惑,楼上大神发的教程看不太懂,不知还有没有简单的方法,就是通过条件让整个流有效或者无效。 ...

7楼,问题解决了。
回复

使用道具 举报

9

主题

358

帖子

3123

积分

论坛元老

Rank: 8Rank: 8

积分
3123
金钱
2765
HASS币
0
发表于 2020-2-24 08:46:27 | 显示全部楼层
樓主   可否分享一下你測試的流來看看呢?
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2020-2-24 12:00:15 | 显示全部楼层
感觉没有什么自动化是ha做到,nr做不到的,如果做不到 function 就肯定能做到哈哈
Nero
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-22 16:06 , Processed in 0.058008 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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