[译]Home assistant自动化触发器

触发器(trigger)是用来启动自动化过程。能够经过在一个触发器下面定义多个触发条件(用多个规则定义符号-),当任意一个触发器条件知足(条件为真)的状况下,自动化就会启动。一旦触发器出发,Home assistant会验证全部的条件(condition),若是知足,则执行行动(action)。app

事件(event)触发器

当一个事件发生时的触发器。事件是Home assistant自带的基础功能。能够经过匹配事件名称或者特殊的事件数据发生时。ide

事件能够经过API由集成的设备触发(这里须要验证一下)。事件没有类型限制。内置的事件列表能够查表(todo 尚未翻译)。tornado

automation:
  trigger:
    platform: event
    event_type: MY_CUSTOM_EVENT
    # optional
    event_data:
      mood: happy

Home Assistant触发器

当Home assistant启动或者关闭的时候触发。翻译

MQTT触发器

(译者注,由于好像暂时没有找到MQTT的设备,这里就跳过了)设计

数字状态触发器

该类型触发器是当某个传感器的数值超过某个阀值的时候,触发。若是某个实体(entity)的状态改变,状态是一种数字,或者一旦数值从一个阀值上下发生变化时,采用这个触发器。code

automation:
  trigger:
    platform: numeric_state
    entity_id: sensor.temperature
    # Optional
    value_template: "{{ state.attributes.battery }}"
    # 至少下面一个选项须要写,大于或者低于
    above: 17
    below: 25

    # 若是使用for条件,须要这个状态保持了超过多少时间,可使用天(days)或者毫秒(milliseconds)。
    for:
      hours: 1
      minutes: 10
      seconds: 5

Note,上述的例子是指,电池电量的数值(numeric_state)在大于17或者小于25这两个数值中。上述的例子中,这个数值状态,须要在17.1到24.9之间,会触发这个触发器。orm

for:能够也用 HH:MM:SS 描述事件

for: "01:10:05"

一样for选项能够用模板。(模板感受跟tornado的模板很像,可是又不太同样)get

automation:
  trigger:
    platform: numeric_state
    entity_id:
      - sensor.temperature_1
      - sensor.temperature_2
    above: 80
    for:
      minutes: "{{ states('input_number.high_temp_min')|int }}"
      seconds: "{{ states('input_number.high_temp_sec')|int }}"
  action:
    service: persistent_notification.create
    data_template:
      message: >
        {{ trigger.to_state.name }} too high for {{ trigger.for }}!

for模板在一个实体变化时赋值评估。(这一段的功能,应该是定时提醒,超温保持了多久,可是模板是怎么产生功能的尚未看懂。)input

状态触发器

给定的实体的状态发生改变时触发。只要entity_id给到触发器,任何状态变化都会致使触发器触发,甚至只有状态属性变化。

automation:
  trigger:
    platform: state
    entity_id: device_tracker.paulus, device_tracker.anne_therese
    # Optional
    from: "not_home"
    # Optional
    to: "home"

    # If given, will trigger when state has been the to state for X time.
    for: "01:10:05"

fromto的值须要带上引号,防止YAML渲染器把值解释成bool值。

太阳触发器

日升日落触发器

太阳升起或者落山触发。例如,太阳的高度角为0°

一个可选的时间偏移量能够添加到触发器上,让日升或者日落后必定时间触发。

注,因为晨昏的时间长度在一年内是不同的。因此建议使用太阳高度角触发器而不是日升、日落触发器加上一个时间偏移量,来触发在清晨或者黄昏的自动化。

automation:
  trigger:
    platform: sun
    # Possible values: sunset, sunrise
    event: sunset
    # Optional time offset. This example will trigger 45 minutes before sunset.
    offset: "-00:45:00"

太阳高度角触发器

有时候你须要更精确的根据太阳高度角来执行一些控制器。例如当太阳低于地平线必定角度后再触发,或者好比太阳落山后,天空并非很是暗或者户外不是特别暗的状况。因此你须要在太阳落山后到必定的角度后,才打开户外的灯光。对于大多数须要在黄昏或者黎明触发的设备,0°到-6°是比较合适的,例如在例子中,采用的是-4°:

automation:
  alias: "Exterior Lighting on when dark outside"
  trigger:
    platform: numeric_state
    entity_id: sun.sun
    value_template: "{{ state.attributes.elevation }}"
    # Can be a positive or negative number
    below: -4.0
  action:
    service: switch.turn_on
    entity_id: switch.exterior_lighting

尽管时间的光照强度和天气,地理位置,陆地覆盖等有关,可是通常是定义成:

  • 民用黄昏:0°>太阳角>-6°
  • 航海黄昏:-6°到-12°
  • 天文黄昏: -12°到-18°

模板触发器

(模板相关的会在译者对模板深刻了解后在详细翻译)

时间触发器

用来在天天的固定时刻来执行运行一次的任务。

automation:
  trigger:
    platform: time
    # Military time format. This trigger will fire at 3:32 PM
    at: "15:32:00"

时间规律触发器

当时间规律触发,能够根据时间,分钟,秒,是否知足如今的时间来触发。能够在数值之间用/匹配数值是否能被该数字整除(每几分钟,几小时执行)。也能够用*匹配任何数字。

automation:
  trigger:
    platform: time_pattern
    # 每一个小时的第5分钟,例如00:05,01:05,可是不是每5分钟
    minutes: 5

automation 2:
  trigger:
    platform: time_pattern
    # 天天的3点
    hours: "3"
    minutes: "*"

automation 3:
  trigger:
    platform: time_pattern
    # 每5分钟
    minutes: "/5"

Warning:
不要在数字前面用0的前缀,例如00会报错,可是0不会。

网页触发器

(译者注,等看懂了或者用到了。。在翻译。。)

区域触发器

当实体进入或者离开某个区域时触发。例如须要到达工做区域是触发自动,须要设置一个追踪器支持反馈gps信息。包括用GPS Logger,OwnTracks Platform或者Icloud platform。

automation:
  trigger:
    platform: zone
    entity_id: device_tracker.paulus
    zone: zone.home
    # Event is either enter or leave
    event: enter # or "leave"

坐标信息触发器

当实体出现或从某个区域消失时,坐标信息触发器触发。

多个触发器

当某个自动化规则,有多个触发器时,只须要每一个触发器钱,用横线(-)标记,而且每一个触发器都用该标记标记便可。只要任何一个触发器知足条件,规则就会被执行。

automation:
  trigger:
    # first trigger
    - platform: time_pattern
      minutes: 5
      # our second trigger is the sunset
    - platform: sun
      event: sunset

总结

对于触发器的类型,就是用platform来区分采用了什么类型的触发器。而后采用该触发器的各类参数来定义触发器的出发条件。可是实际上因为有条件(condition)的存在,致使触发器只是一个启动,至因而否真的触发,仍是要看条件是否知足。

此外能够看到Home Assistant支持不少不少功能,远比现有的大多数智能化软件的功能来的多。只是因为若是是我的家里布置的话,如何传输这些遥测信号(例如GPS数据,可能须要固定IP地址,在国内可能比较难办到),这些功能可能用不了。

可是实际上提供了不少新的自动化设计的思路。嗯。又能够玩了(让钞票飞)

相关文章
相关标签/搜索