智慧家庭 - HA(2) - 認(rèn)識(shí) Home Assistant 的配置系統(tǒng)

本文索引:

前言

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

mqttrest 都屬于 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è)面找到:

Entity ID 查詢(xún)頁(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í)體支持該值:
  • 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 入口如下:

Web UI 的定制入口

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末芦拿,一起剝皮案震驚了整個(gè)濱河市士飒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蔗崎,老刑警劉巖酵幕,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異缓苛,居然都是意外死亡芳撒,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)未桥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)笔刹,“玉大人,你說(shuō)我怎么就攤上這事冬耿∩嗖耍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵亦镶,是天一觀的道長(zhǎng)日月。 經(jīng)常有香客問(wèn)我,道長(zhǎng)缤骨,這世上最難降的妖魔是什么山孔? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮荷憋,結(jié)果婚禮上台颠,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好串前,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布瘫里。 她就那樣靜靜地躺著,像睡著了一般荡碾。 火紅的嫁衣襯著肌膚如雪谨读。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天坛吁,我揣著相機(jī)與錄音劳殖,去河邊找鬼。 笑死拨脉,一個(gè)胖子當(dāng)著我的面吹牛哆姻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播玫膀,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼矛缨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了帖旨?” 一聲冷哼從身側(cè)響起箕昭,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎解阅,沒(méi)想到半個(gè)月后落竹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡货抄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年述召,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碉熄。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡桨武,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出锈津,到底是詐尸還是另有隱情呀酸,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布琼梆,位于F島的核電站性誉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏茎杂。R本人自食惡果不足惜错览,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望煌往。 院中可真熱鬧倾哺,春花似錦轧邪、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至却邓,卻和暖如春硕糊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背腊徙。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工简十, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撬腾。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓螟蝙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親时鸵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胶逢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容