本文索引:
前言
HA 是由「組件」堆砌出的系統(tǒng),官方提供了海量的組件及其用法的介紹央拖,其中涵蓋了使 HA 成為「家庭大腦」的方方面面寂曹,一個(gè)「組件」大致由兩部分組成:
- 組件模塊: 組件功能的核心邏輯
- 配置信息: 組件由外部加載的必要信息,可能包括
platform
信息谭贪,第三方服務(wù)的key
等等
以下代碼展示了一個(gè) notify
組件,并采用 pushbullet platform
所有定義的配置信息:
notify:
platform: pushbullet
api_key: "o.1234abcd"
name: pushbullet
組件描述了功能的抽象含義锦担,
platform
指定可提供該功能的具體實(shí)現(xiàn)
HA 將所有「組件」通過(guò)配置信息定制俭识,因此,配置信息成了描述整個(gè) HA 的數(shù)據(jù)源洞渔,雖然 HA 社區(qū)正致力于實(shí)現(xiàn)通過(guò) Web UI 來(lái)配置所有內(nèi)容套媚,但了解其數(shù)據(jù)模型對(duì)于解決問(wèn)題及理解其運(yùn)作方式非常有好處缚态。HA 的配置信息會(huì)隨著接入系統(tǒng)的設(shè)備增多而包含越來(lái)越多的信息,為了將不同類(lèi)別的配置信息分開(kāi)管理堤瘤,官方推薦的做法是把根配置文件 configuration.yaml
下的不同節(jié)點(diǎn)以不同文件的形式進(jìn)行管理玫芦,例如,默認(rèn)的配置文件就包含了:
-
configuration.yaml
automations.yaml
customize.yaml
groups.yaml
scripts.yaml
- ...
由于配置信息會(huì)隨時(shí)間增大本辐,社區(qū)還推薦將配置文件夾作為 Git Repository
與遠(yuǎn)端進(jìn)行同步桥帆,以防止數(shù)據(jù)丟失,并可跟蹤修改歷史慎皱。
不應(yīng)將敏感信息文件納入版本管理老虫,請(qǐng)將
secrets.yaml
文件等包含敏感數(shù)據(jù)的配置文件添加至.gitignore
中。
YAML
HA 使用 YAML
語(yǔ)法定義配置信息茫多,幾乎每種組件都定義了單獨(dú)的配置節(jié)祈匙,YAML
語(yǔ)法需要注意以下細(xì)節(jié):
- 以
-
開(kāi)頭表示集合元素 - 以
:
分割代表鍵值映射 - 默認(rèn)使用兩個(gè)空格代表一級(jí)縮進(jìn),
Tab
不能用于縮進(jìn)
使用環(huán)境變量
以 !env_var {VAR_NAME}
從系統(tǒng)環(huán)境變量中取得值:
http:
api_password: !env_var PASSWORD
使用缺省值
配置信息可包含缺省值天揖,例如:
http:
api_password: !env_var PASSWORD {default_password}
default_password
代表缺省值
包含其他文件
可將同一類(lèi)別的配置分割到單獨(dú)的文件中以提高可讀性菊卷,例如:
lights: !include lights.yaml
基本配置信息
首先編輯 configuration.yaml
的基本配置信息:
homeassistant:
# Location required to calculate the time the sun rises and sets
latitude: {latitude-for-your-home}
longitude: {longitude-for-your-home}
# Impacts weather/sunrise data (altitude above sea level in meters)
elevation: {elevation-for-your-home}
# metric for Metric, imperial for Imperial
unit_system: metric
# Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
time_zone: America/Los_Angeles
# Name of the location where Home Assistant is running
name: My Awesome Home
向 HA 添加設(shè)備
默認(rèn)情況下,Discovery 組件開(kāi)啟宝剖,HA 會(huì)自動(dòng)查找同一網(wǎng)絡(luò)中的設(shè)備與服務(wù)洁闰。通常,每種「實(shí)體(entity)」都需要在 configuration.yaml
文件中進(jìn)行手動(dòng)配置万细,HA 支持兩種風(fēng)格來(lái)組織它們扑眉。
風(fēng)格1: 將所有實(shí)體以父級(jí)類(lèi)聚
例如:
sensor:
- platform: mqtt
state_topic: "home/bedroom/temperature"
name: "MQTT Sensor 1"
- platform: mqtt
state_topic: "home/kitchen/temperature"
name: "MQTT Sensor 2"
- platform: rest
resource: http://IP_ADDRESS/ENDPOINT
name: "Weather"
switch:
- platform: vera
- platform: tplink
host: IP_ADDRESS
mqtt
和 rest
都屬于 sensor
類(lèi)別,將他們作為集合元素排列至 sensor
節(jié)點(diǎn)之下是以「類(lèi)別」作為父級(jí)進(jìn)行類(lèi)聚赖钞。
風(fēng)格2: 單獨(dú)定義每個(gè)設(shè)備
為了區(qū)分不同的實(shí)體腰素,必須在其后跟上數(shù)字或名稱(chēng),并且保持唯一:
sensor bedroom:
platform: mqtt
state_topic: "home/bedroom/temperature"
name: "MQTT Sensor 1"
sensor kitchen:
platform: mqtt
state_topic: "home/kitchen/temperature"
name: "MQTT Sensor 2"
sensor weather:
platform: rest
resource: http://IP_ADDRESS/ENDPOINT
name: "Weather"
switch 1:
platform: vera
switch 2:
platform: tplink
host: IP_ADDRESS
以類(lèi)別 名稱(chēng)單獨(dú)定義實(shí)體雪营,此處定義的 entity
name
會(huì)轉(zhuǎn)換為以 _
分隔的 entity_id
弓千,例如 Living Room
會(huì)轉(zhuǎn)換為 living_room
。
群組
一旦設(shè)置好設(shè)備献起,便可對(duì)它們進(jìn)行「邏輯分組」洋访,每個(gè)群組由其名稱(chēng)和一組「實(shí)體 ID」組成,「實(shí)體 ID」可在 Web UI 的 Developer Tools 面板的 Set State 頁(yè)面找到:
可由以下兩種風(fēng)格定義群組:
group:
# 數(shù)組風(fēng)格
living_room:
entities: light.table_lamp, switch.ac
# 集合風(fēng)格
bedroom:
entities:
- light.bedroom
- media_player.nexus_player
自定義實(shí)體特性
不同類(lèi)別的「實(shí)體」提供了一組通用的 attribute
用于實(shí)現(xiàn)定制化谴餐,這些值包括但不限于:
- friendly_name: 在 UI 中顯示的名稱(chēng)
- homebridge_name: 在 HomeBridge 中顯示的名稱(chēng)
- hidden: 是否在 HA 中隱藏實(shí)體姻政,
true
為隱藏,默認(rèn)值為false
- homebridge_hidden: 是否在 HomeBridge 中隱藏實(shí)體岂嗓,
true
為隱藏汁展,默認(rèn)值為false
- emulated_hue_hidden: 是否在 emulated_hue 中隱藏實(shí)體,
true
為隱藏,默認(rèn)值為false
- entity_picture: 指定一個(gè)圖片的
url
與實(shí)體關(guān)聯(lián) - icon: 從 MaterialDesignIcons.com(Cheatsheet) 選擇的任何圖標(biāo)食绿,前綴為
mdi:
侈咕,示例值為mid:home
- assumed_state: 為「開(kāi)關(guān)」類(lèi)別指定預(yù)設(shè)狀態(tài),如果設(shè)置為
false
器紧,將得到默認(rèn)的開(kāi)關(guān)圖標(biāo)耀销,默認(rèn)值為true
- device_class: 實(shí)體類(lèi)別,該值將決定 UI 的顯示圖標(biāo)及狀態(tài)品洛,但不會(huì)影響測(cè)量單位树姨,默認(rèn)值為
None
摩桶,暫時(shí)有以下實(shí)體支持該值:- Binary Sensor: 具體參考 Binary Sensor
- Sensor: 具體參考 Sensor
- Cover: 具體參考 Cover
- unit_of_measurement: 測(cè)量單位桥状,未指定測(cè)量單位的傳感器將顯示離散值,默認(rèn)值為
None
- initial_state: 為自動(dòng)化設(shè)置初始狀態(tài)硝清,
on
或者off
定制化特性可在配置目錄的 customize.yaml
中指定
light.yeelight_ct2_7c49eb1551e8:
friendly_name: Lamp
sensor.yr_symbol:
friendly_name: Wether
HA 社區(qū)開(kāi)發(fā)團(tuán)隊(duì)正在致力于實(shí)現(xiàn)通過(guò) Web UI 來(lái)完成所有信息的配置辅斟,例如,Customize
的 UI 入口如下: