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

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

 找回密码
 立即注册
查看: 210|回复: 11

[已解决] 随机时间触发如何实现?

[复制链接]

64

主题

1075

帖子

5202

积分

论坛元老

Rank: 8Rank: 8

积分
5202
金钱
4122
HASS币
30
发表于 2022-5-16 12:15:44 | 显示全部楼层 |阅读模式
本帖最后由 xuyang 于 2022-5-16 19:40 编辑

想要随机时间对自动化进行触发:
  - platform: time_pattern
    seconds: "/24"


#    seconds: "/{{ ['10','15','24'] | random }}"  使用这个报错,请教一下宅在哪里?

解决方法:  - platform: time_pattern,可能不支持模板

采用- delay,它支持模板

  trigger:  - platform: time_pattern
    seconds:  '/60'
  condition: []
  action:
  - delay: '{{ [1,5,11,15,18]|random() }}'
  - service: switch.turn_on
    data:
      entity_id: switch.ddd


每六十秒触发一次,延迟1,5,11,15,18中的随机某个秒,然后打开开关。

回复

使用道具 举报

50

主题

704

帖子

3968

积分

论坛技术达人

积分
3968
金钱
3229
HASS币
210
发表于 2022-5-16 12:59:06 | 显示全部楼层
感觉这种逻辑应该是:先创建一个随机值的变量,当时间==变量时触发,触发之后再创建下一次的随机值变量,依次循环。

而应该是这样:不断变化的时间==随机变化的一个变量
回复

使用道具 举报

64

主题

1075

帖子

5202

积分

论坛元老

Rank: 8Rank: 8

积分
5202
金钱
4122
HASS币
30
 楼主| 发表于 2022-5-16 13:23:46 | 显示全部楼层
本帖最后由 xuyang 于 2022-5-16 13:25 编辑
dscao 发表于 2022-5-16 12:59
感觉这种逻辑应该是:先创建一个随机值的变量,当时间==变量时触发,触发之后再创建下一次的随机值变量,依 ...

能指点一下,60秒以内随机数。
另外:
  trigger:
  - platform: time_pattern
    seconds: "{{'55'}}"


这些写也报错,不知道什么原因。
回复

使用道具 举报

5

主题

214

帖子

1350

积分

金牌会员

Rank: 6Rank: 6

积分
1350
金钱
1136
HASS币
0
发表于 2022-5-16 13:54:38 | 显示全部楼层
xuyang 发表于 2022-5-16 13:23
能指点一下,60秒以内随机数。
另外:
  trigger:

time pattern不支持模板吧,所以你写的两个都报错。
然后这个随机应该用nr会好实现一些,如果要用原生的话必须用模板,应该只能分钟级更新。
我设想如下,没验证过。
trigger:
  - platform: time_pattern
    minutes: /1
condition:
  - condition: template
    value_template: '{{ now().minute == range(0, 59)|random }}'
回复

使用道具 举报

5

主题

214

帖子

1350

积分

金牌会员

Rank: 6Rank: 6

积分
1350
金钱
1136
HASS币
0
发表于 2022-5-16 14:02:59 | 显示全部楼层

w哦

wdscao 发表于 2022-5-16 12:59
感觉这种逻辑应该是:先创建一个随机值的变量,当时间==变量时触发,触发之后再创建下一次的随机值变量,依 ...

你说的很对,两头随机的话相当于命中的概率变成1/3600,这确实是个问题。
我上面写的也有这个问题。等大佬看看有什么好办法
回复

使用道具 举报

64

主题

1075

帖子

5202

积分

论坛元老

Rank: 8Rank: 8

积分
5202
金钱
4122
HASS币
30
 楼主| 发表于 2022-5-16 14:06:07 | 显示全部楼层
yuyuye 发表于 2022-5-16 13:54
time pattern不支持模板吧,所以你写的两个都报错。
然后这个随机应该用nr会好实现一些,如果要用原生的 ...

我想实现60秒内随机触发。
比如:
5秒触发一次
下次8秒触发一次
以此类推。
nr能给例子吗,谢谢了
回复

使用道具 举报

5

主题

214

帖子

1350

积分

金牌会员

Rank: 6Rank: 6

积分
1350
金钱
1136
HASS币
0
发表于 2022-5-16 14:53:41 | 显示全部楼层
xuyang 发表于 2022-5-16 14:06
我想实现60秒内随机触发。
比如:
5秒触发一次

我自动化都在ha上,nr用的不多。
不过刚发现原来有个random集成,作为condition配合time_pattern,应该可以凑和用了
trigger:
  - platform: time_pattern
    seconds: /6

https://www.home-assistant.io/integrations/random/
回复

使用道具 举报

50

主题

704

帖子

3968

积分

论坛技术达人

积分
3968
金钱
3229
HASS币
210
发表于 2022-5-16 16:59:27 | 显示全部楼层
本帖最后由 dscao 于 2022-5-16 17:01 编辑
xuyang 发表于 2022-5-16 14:06
我想实现60秒内随机触发。
比如:
5秒触发一次

这样的话,我感应可以这样:
触发:自己看着办
环境:自己看着办
行为:
   循环:
      延时“随机”秒 #随机可指定范围 {{ [1,n,59]|random() }}
      想做的行为

但是不知 delay: 给不给随机,没测试过。
回复

使用道具 举报

64

主题

1075

帖子

5202

积分

论坛元老

Rank: 8Rank: 8

积分
5202
金钱
4122
HASS币
30
 楼主| 发表于 2022-5-16 17:26:29 | 显示全部楼层
dscao 发表于 2022-5-16 16:59
这样的话,我感应可以这样:
触发:自己看着办
环境:自己看着办

经过实践,方法可行,谢谢
回复

使用道具 举报

72

主题

1990

帖子

7558

积分

超级版主

Rank: 8Rank: 8

积分
7558
金钱
5503
HASS币
380

教程狂人突出贡献

发表于 2022-5-16 17:39:34 | 显示全部楼层
对的,触发必须是确定的事件,random也只有被调用才会有输出。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2022-7-7 21:21 , Processed in 0.056913 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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