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

 找回密码
 立即注册
查看: 27543|回复: 39

自动化进阶教程(从入门到入坑)——Templates模版大全

  [复制链接]

219

主题

1287

帖子

7951

积分

超级版主

Rank: 8Rank: 8

积分
7951
金钱
6634
HASS币
86

教程狂人论坛风云人物突出贡献

发表于 2017-8-10 13:43:47 | 显示全部楼层 |阅读模式
本帖最后由 lidicn 于 2017-8-10 14:31 编辑

这里拿大家都有的zone.home来举例子。实际使用只要将zone.home换成其他entity_id即可。测试模版使用开发者工具测试:
模版测试.jpg

{{states.zone.home}}
返回设备的所有状态,包括属性、friendname等等一大堆。
模版使用.jpg
{{states.zone.home.state}} 
返回设备的状态值  这里会是zoning。

{{states.zone.home.attributes}} 
返回设备的所有属性。这里会是经纬度、zone半径、等等。

{{states.zone.home.attributes.friendly_name}} 
这里读取属性下面的friendly_name,其他属性读取方法类似。

is_state的用法,直接举例子说明。用的是template sensor 模版传感器
#设备在线
sensor:
  - platform: template
    sensors:
      mibox:
        friendly_name: '小米盒子'
        value_template: "{{ 'Online' if is_state('device_tracker.nidexiaomihezi', 'home') else 'Offline' }}"

trigger.to_state,自动化触发对象的状态【注:to_state应该是改变状态后的状态】。用法跟上面的类似。下面这个例子是播报正在播放音乐的歌曲名的自动化https://bbs.hassbian.com/thread-424-1-1.html
#正在播放的是
  - alias: 'Status Play'
    initial_state: 'on'
    trigger:
      platform: state
      entity_id: media_player.chuangmi_radio_v1_dxxxxxxxf, media_player.hassbian
      to: 'playing'
    action:
      - service: tts.baidu_say
        data_template:
          entity_id: media_player.vlc_player
          message:  >
            {{ trigger.to_state.attributes.friendly_name }} 正在播放 {{ trigger.to_state.attributes.media_title }}

trigger.from_state 与上面例子类似,这个是状态改变前的状态。下面这个例子来自官网,当设备从一个状态改变到状态时推送改变的情况。
automation:
  trigger:
    platform: state
    entity_id: device_tracker.paulus
  action:
    service: notify.notify
    data_template:
      message: >
        Paulus just changed from {{ trigger.from_state.state }}
        to {{ trigger.to_state.state }}

trigger.event 触发事件,下面的例子新设备连入HA将发推送信息
#发现新设备
  - alias: Notify for new devices
    trigger:
      platform: event
      event_type: device_tracker_new_device
    action:
      - service: notify.notifypushbullet
        data_template:
          message: >
            New device:
            {{trigger.event.data.host_name}}
            ({{trigger.event.data.entity_id}})
          title: New device

重要模板规则

编写自动化模板时要记住几个非常重要的规则:
  • 您必须使用data_template代替data在data服务调用部分使用模板时。
  • 您必须使用service_template代替service在service服务调用部分使用模板时。
  • 您必须使用双引号(")或单引号(')包围单行模板。
  • 建议您使用if ... is not none或default过滤器或两者来准备未定义的变量。
  • 建议在比较数字时,使用相应的过滤器将数字转换为a float或a 。int
  • 虽然float和int过滤器确实允许默认回退值,如果转换不成功,他们不提供捕获未定义的变量的能力。
  • 记住这些简单的规则将有助于在使用自动化模板时从许多头痛和无休止的沮丧时段中挽救您。








回复

使用道具 举报

123

主题

4664

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16442
金钱
11693
HASS币
45
发表于 2017-8-10 14:13:53 | 显示全部楼层
非常有用的进阶版教程
回复

使用道具 举报

68

主题

302

帖子

1968

积分

金牌会员

Rank: 6Rank: 6

积分
1968
金钱
1666
HASS币
0
发表于 2017-8-10 22:40:57 | 显示全部楼层
very nice, thanks!!
回复

使用道具 举报

13

主题

193

帖子

1062

积分

金牌会员

Rank: 6Rank: 6

积分
1062
金钱
868
HASS币
0

教程狂人

发表于 2017-8-10 23:31:51 | 显示全部楼层
大大的受用,谢谢提供
回复

使用道具 举报

35

主题

533

帖子

2901

积分

金牌会员

Rank: 6Rank: 6

积分
2901
金钱
2368
HASS币
0
发表于 2017-8-11 10:14:03 | 显示全部楼层
非常需要这种对案例的解析说明。
官网很多内容,小白看部懂……
谢谢lidicn !
回复

使用道具 举报

62

主题

603

帖子

6428

积分

论坛元老

Rank: 8Rank: 8

积分
6428
金钱
5750
HASS币
240

教程狂人论坛风云人物

发表于 2017-8-11 18:46:49 | 显示全部楼层
lidicn出品 必属精品
回复

使用道具 举报

39

主题

749

帖子

4841

积分

论坛元老

Freddy.

Rank: 8Rank: 8

积分
4841
金钱
4067
HASS币
0

最佳新人卓越贡献

发表于 2017-8-15 09:28:00 | 显示全部楼层
非常有用的进阶版教程
回复

使用道具 举报

20

主题

700

帖子

3106

积分

论坛元老

Rank: 8Rank: 8

积分
3106
金钱
2406
HASS币
0
发表于 2017-8-15 11:10:00 | 显示全部楼层
先收藏,下午来学习!
回复

使用道具 举报

20

主题

700

帖子

3106

积分

论坛元老

Rank: 8Rank: 8

积分
3106
金钱
2406
HASS币
0
发表于 2017-8-15 12:30:21 | 显示全部楼层
新手是不是要先学学yaml语言?
回复

使用道具 举报

219

主题

1287

帖子

7951

积分

超级版主

Rank: 8Rank: 8

积分
7951
金钱
6634
HASS币
86

教程狂人论坛风云人物突出贡献

 楼主| 发表于 2017-8-15 12:41:51 | 显示全部楼层
gzroc 发表于 2017-8-15 12:30
新手是不是要先学学yaml语言?

对的,论坛里面有
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-23 16:44 , Processed in 0.063480 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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