[譯]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地址,在國內可能比較難辦到),這些功能可能用不了。

可是實際上提供了不少新的自動化設計的思路。嗯。又能夠玩了(讓鈔票飛)

相關文章
相關標籤/搜索