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

 找回密码
 立即注册
查看: 4743|回复: 6

[已解决] 请教HA模板的问题

[复制链接]

16

主题

135

帖子

1097

积分

金牌会员

Rank: 6Rank: 6

积分
1097
金钱
962
HASS币
0
发表于 2019-2-13 11:17:30 | 显示全部楼层 |阅读模式
本帖最后由 roc634 于 2019-2-14 15:15 编辑

===================最近更新======================
谢谢楼下多位朋友的热情帮助。由于找不出原因,顺着二楼那位朋友提供的思路,从sun入手,我现在通过在官方文档中看到对于sun太阳高度角的描述,现在我将破晓设置为太阳高度角-6度,日落为below_horizon,这样目前看来是可以触发的,就是不知道会不会出现以后无法触发的情况,如果有后续再更新。再次感谢各位的帮助!!官方文档关于sun的描述在这里
https://www.home-assistant.io/do ... rigger/#sun-trigger
下面是我改为使用太阳高度角的自动化代码:
- alias: living_win_curtain_dawn #破晓厅帘状态开
  hide_entity: false
  initial_state: on
  trigger: 
    platform: numeric_state
    entity_id: sun.sun
    value_template: "{{ state.attributes.elevation }}"
    above: -6.0
  action: 
    - service: mqtt.publish
      data_template:
        topic: "mqtt/living_win_curtain_status"
        payload: 'open'
        retain: true


==================稍早前内容=========================
我想让窗帘在每天破晓时打开,在日落后关闭,但是我发现下面这两个表示方法,有一个是可以触发的,另一个就不行,但是放在开发者工具中,显示又是正常的。请问是什么原因呢?
我的自动化是这样的:
- alias: living_win_curtain_dusk #日落厅帘状态关
  hide_entity: false
  initial_state: on
  trigger:
    platform: template
    #value_template: '{{ now().strftime("%H:%M") == as_timestamp(states.sun.sun.attributes.next_setting)  | timestamp_custom("%H:%M") }}'
    value_template: '{{ now().strftime("%H:%M") == states("sensor.sunset_time") }}'
  action: 
    - service: mqtt.publish
      data: 
        topic: "mqtt/living_win_curtain_status"
        payload: 'closed'
        retain: true


在模板中,下面这个是可以触发自动化的:
    #这个可以触发自动化
    value_template: '{{ now().strftime("%H:%M") == as_timestamp(states.sun.sun.attributes.next_setting)  | timestamp_custom("%H:%M") }}'

这是我直接调用系统中sun.sun的日落属性的时间:
sun.sun.jpg


这个就不行:
    #这个可以触发自动化
    value_template: '{{ now().strftime("%H:%M") == states("sensor.sunset_time") }}'

我为了在HA中显示了日出日落的时间,也用template加了一个sensor,就是sensor.sunset_time,在HA中显示的是这样的:
sunset.jpg

但是在开发者工具中,格式是一样的,显示结果又都是正常的:
template.jpg

百思不得其姐,不得不请教各位,先谢谢了!


回复

使用道具 举报

8

主题

139

帖子

1263

积分

论坛技术达人

积分
1263
金钱
1109
HASS币
40
发表于 2019-2-13 11:53:55 | 显示全部楼层
直接用sun不好吗?
  trigger:
    platform: sun
    event: sunset
回复

使用道具 举报

16

主题

135

帖子

1097

积分

金牌会员

Rank: 6Rank: 6

积分
1097
金钱
962
HASS币
0
 楼主| 发表于 2019-2-13 12:38:10 | 显示全部楼层
yinjiong 发表于 2019-2-13 11:53
直接用sun不好吗?
  trigger:
    platform: sun

谢谢你的建议。一开始我也是用的这个,但是早上我想在破晓时就开窗,而不是日出,但是sun没有破晓的事件,只有next_dawn这个属性,为了统一,我就把晚上的日落关窗帘也换成了时间。
回复

使用道具 举报

4

主题

100

帖子

830

积分

高级会员

Rank: 4

积分
830
金钱
730
HASS币
0
发表于 2019-2-13 15:56:42 | 显示全部楼层
我也遇到过类似的问题, 印象中好像是因为"as_timestamp(states.sun.sun.attributes.next_setting)"在trigger里不会自动更新.
你要不试试把"{{ now().strftime("%H:%M") == as_timestamp(states.sun.sun.attributes.next_setting)  | timestamp_custom("%H:%M") }}"自定义成sensor然后再在trigger里调用.
回复

使用道具 举报

16

主题

135

帖子

1097

积分

金牌会员

Rank: 6Rank: 6

积分
1097
金钱
962
HASS币
0
 楼主| 发表于 2019-2-13 16:40:24 | 显示全部楼层
抚音 发表于 2019-2-13 15:56
我也遇到过类似的问题, 印象中好像是因为"as_timestamp(states.sun.sun.attributes.next_setting)"在trigge ...

谢谢你的回复,我目前遇到的是"{{ now().strftime("%H:%M") == as_timestamp(states.sun.sun.attributes.next_setting)  | timestamp_custom("%H:%M") }}"是可以触发的,但是有时又不能触发,但是把它自定义成一个sensor后,也就是sensor.sunset_time,反而不能触发了。这正是我的疑问所在。
回复

使用道具 举报

27

主题

2144

帖子

8968

积分

论坛元老

Rank: 8Rank: 8

积分
8968
金钱
6819
HASS币
30

论坛元老

发表于 2019-2-13 17:13:00 | 显示全部楼层
不太懂破晓是什么,不过,可以在日出日落的基础上提前或延后时间点触发事件的
automation:
  trigger:
    platform: sun
    # event的可选值是“sunset”和“sunrise”
    event: sunrise
    # 可选,此处代表日出前45分钟触发
    offset: '-00:45:00'
回复

使用道具 举报

16

主题

135

帖子

1097

积分

金牌会员

Rank: 6Rank: 6

积分
1097
金钱
962
HASS币
0
 楼主| 发表于 2019-2-14 15:15:02 | 显示全部楼层
情非殇 发表于 2019-2-13 17:13
不太懂破晓是什么,不过,可以在日出日落的基础上提前或延后时间点触发事件的
...


不知道破晓和日出之间的时间间隔是不是一样的,所以没有用延迟这项。现在我通过sun中的太阳高度角,暂时解决了问题。谢谢!
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-26 23:46 , Processed in 0.180092 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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