请选择 进入手机版 | 继续访问电脑版

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

 找回密码
 立即注册
查看: 14070|回复: 22

[经验分享] node-red自动化:门打开10分钟不关,则微信和tts警报

[复制链接]

69

主题

690

帖子

4151

积分

论坛元老

Rank: 8Rank: 8

积分
4151
金钱
3456
HASS币
80
发表于 2021-3-4 12:44:08 | 显示全部楼层 |阅读模式
本帖最后由 zhenxiwen 于 2021-3-4 12:58 编辑

在ha的自动化中,比如,门打开了10分钟没有关,则发出警报:   可以用  for:  seconds: 300来表示动作的持续时间, 自动化yaml的写法:

- alias: door time
    initial_state: true
    trigger:
      - platform: state
        entity_id:
          - binary_sensor.door_window_sensor_158d0001c2e45c #后门的内门被打开
          - binary_sensor.door_window_sensor_158d0002288fc4  #后门的外门被打开
        from: 'off'
        to: 'on'  
        for:
          seconds: 300
    action:
    # 百度TTS报警
      - service: tts.baidu_say               
        data_template:
          entity_id:
            - media_player.mpd
          message: "后门好像没关好,请查看!"
          cache: false


但是,在node-red中,什么节点可做到:如果某动作(比如turn on)持续10分钟不变,则触发另一个动作的(比如,报警);如果设备打开了(turn on)但在设定的10分钟内又关了(turn off),则不触发任何下个动作。


这个用”for“作为条件的自动化非常多,做node-red中,有没有一个单一的node可以做到上面的”for“的意思的,如果没有单一节点,用什么最简单的节点组合可以实现上述自动化,具体的流和节点怎么设置。

我搜遍国内中文和国外英文帖子,有各种做法,有的非常复杂,包括用:stoptimer,trigger、trigger-state,delay,timeout、timeouttrigger等等节点或节点组合,但我一直没有实现,请教大神出马,造福小白。





回复

使用道具 举报

8

主题

650

帖子

4093

积分

论坛元老

Rank: 8Rank: 8

积分
4093
金钱
3438
HASS币
0
QQ
发表于 2021-3-4 13:24:25 | 显示全部楼层
先顶在看
回复

使用道具 举报

11

主题

313

帖子

1324

积分

金牌会员

Rank: 6Rank: 6

积分
1324
金钱
1011
HASS币
10
发表于 2021-3-4 14:11:09 | 显示全部楼层
楼主 我看不清。。。
回复

使用道具 举报

54

主题

614

帖子

3712

积分

论坛元老

Rank: 8Rank: 8

积分
3712
金钱
3093
HASS币
20
发表于 2021-3-4 17:02:36 | 显示全部楼层
这个意思? 截屏2021-03-04 下午4.59.29.png flows-2.json.zip (2.59 KB, 下载次数: 22)


回复

使用道具 举报

69

主题

690

帖子

4151

积分

论坛元老

Rank: 8Rank: 8

积分
4151
金钱
3456
HASS币
80
 楼主| 发表于 2021-3-4 18:17:38 | 显示全部楼层

非常感谢 ,这个可以 。原来这么简单 ,真是会者不难,难者不会啊 。
会可以把事情搞得简单 不会就把事情搞得复杂。有的帖子把事情搞得复杂化了 ,我也跟着走了好多弯路 。

但是要有一个节点能做到这个简单的功能就好了 ,希望 有人能写这样一个节点 。
回复

使用道具 举报

54

主题

614

帖子

3712

积分

论坛元老

Rank: 8Rank: 8

积分
3712
金钱
3093
HASS币
20
发表于 2021-3-4 18:32:09 | 显示全部楼层
zhenxiwen 发表于 2021-3-4 18:17
非常感谢 ,这个可以 。原来这么简单 ,真是会者不难,难者不会啊 。
会可以把事情搞得简单 不会就把事情 ...

这个流 等待10分钟有个问题  假设开门后。进入等待10分钟  然后一直多次开关门 最后门是开的。 会触发多次播报tts。  这里想到可以用持久变量解决 触发等待10分钟节点前 变量是0,同时进入等待10分钟和把变量变成1
,等到等待时间过后把变量变成0
回复

使用道具 举报

69

主题

690

帖子

4151

积分

论坛元老

Rank: 8Rank: 8

积分
4151
金钱
3456
HASS币
80
 楼主| 发表于 2021-3-4 18:35:55 | 显示全部楼层

不知道delay这个节点

本帖最后由 zhenxiwen 于 2021-3-4 18:48 编辑
gmshiwoge 发表于 2021-3-4 18:32
这个流 等待10分钟有个问题  假设开门后。进入等待10分钟  然后一直多次开关门 最后门是开的。 会触发多 ...

是有你说的这个问题,这个流不能充分反映门是持续打开的状态过程  期待你出一个更完善的流

所以还是原来ha通过yaml的方法更可靠


不知道delay这个节点,在门再次打开的时候 它会不会resed,重新计算时间。如果会这不会有你说的这个问题

回复

使用道具 举报

54

主题

614

帖子

3712

积分

论坛元老

Rank: 8Rank: 8

积分
3712
金钱
3093
HASS币
20
发表于 2021-3-4 18:45:25 | 显示全部楼层
zhenxiwen 发表于 2021-3-4 18:35
是有你说的这个问题,这个流不能充分反映门是持续打开的状态过程  期待你出一个更完善的流

所以还是原 ...

确实有些方面  但是noed-red快捷一些 调试方便点
回复

使用道具 举报

69

主题

690

帖子

4151

积分

论坛元老

Rank: 8Rank: 8

积分
4151
金钱
3456
HASS币
80
 楼主| 发表于 2021-3-4 18:48:45 | 显示全部楼层
gmshiwoge 发表于 2021-3-4 18:45
确实有些方面  但是noed-red快捷一些 调试方便点


不知道delay这个节点,在门再次打开的时候 它会不会resed,重新计算时间。如果会这不会有你说的这个问题
回复

使用道具 举报

54

主题

614

帖子

3712

积分

论坛元老

Rank: 8Rank: 8

积分
3712
金钱
3093
HASS币
20
发表于 2021-3-4 19:08:08 来自手机 | 显示全部楼层
zhenxiwen 发表于 2021-3-4 18:48
不知道delay这个节点,在门再次打开的时候 它会不会resed,重新计算时间。如果会这不会有你说的这个问题 ...

我好早发现 会这样才想到用  持久变量解决。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-3-19 12:41 , Processed in 0.059213 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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