智慧家庭 - HA(2) - 认识 Home Assistant 的配置系统

本文索引:

前言

HA 是由「组件」堆砌出的系统,官方提供了海量的组件及其用法的介绍,其中涵盖了使 HA 成为「家庭大脑」的方方面面,一个「组件」大致由两部分组成:

  • 组件模块: 组件功能的核心逻辑
  • 配置信息: 组件由外部加载的必要信息,可能包括 platform 信息,第三方服务的 key 等等

以下代码展示了一个 notify 组件,并采用 pushbullet platform 所有定义的配置信息:

notify:
  platform: pushbullet
  api_key: "o.1234abcd"
  name: pushbullet

组件描述了功能的抽象含义,platform 指定可提供该功能的具体实现

HA 将所有「组件」通过配置信息定制,因此,配置信息成了描述整个 HA 的数据源,虽然 HA 社区正致力于实现通过 Web UI 来配置所有内容,但了解其数据模型对于解决问题及理解其运作方式非常有好处。HA 的配置信息会随着接入系统的设备增多而包含越来越多的信息,为了将不同类别的配置信息分开管理,官方推荐的做法是把根配置文件 configuration.yaml 下的不同节点以不同文件的形式进行管理,例如,默认的配置文件就包含了:

  • configuration.yaml
    • automations.yaml
    • customize.yaml
    • groups.yaml
    • scripts.yaml
    • ...

由于配置信息会随时间增大,社区还推荐将配置文件夹作为 Git Repository 与远端进行同步,以防止数据丢失,并可跟踪修改历史。

不应将敏感信息文件纳入版本管理,请将 secrets.yaml 文件等包含敏感数据的配置文件添加至 .gitignore 中。

YAML

HA 使用 YAML 语法定义配置信息,几乎每种组件都定义了单独的配置节,YAML 语法需要注意以下细节:

  • - 开头表示集合元素
  • : 分割代表键值映射
  • 默认使用两个空格代表一级缩进,Tab 不能用于缩进

使用环境变量

!env_var {VAR_NAME} 从系统环境变量中取得值:

http:
  api_password: !env_var PASSWORD

使用缺省值

配置信息可包含缺省值,例如:

http:
  api_password: !env_var PASSWORD {default_password}

default_password 代表缺省值

包含其他文件

可将同一类别的配置分割到单独的文件中以提高可读性,例如:

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 添加设备

默认情况下,Discovery 组件开启,HA 会自动查找同一网络中的设备与服务。通常,每种「实体(entity)」都需要在 configuration.yaml 文件中进行手动配置,HA 支持两种风格来组织它们。

风格1: 将所有实体以父级类聚

例如:

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 类别,将他们作为集合元素排列至 sensor 节点之下是以「类别」作为父级进行类聚。

风格2: 单独定义每个设备

为了区分不同的实体,必须在其后跟上数字或名称,并且保持唯一:

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

类别 名称单独定义实体,此处定义的 entity name 会转换为以 _ 分隔的 entity_id,例如 Living Room 会转换为 living_room

群组

一旦设置好设备,便可对它们进行「逻辑分组」,每个群组由其名称和一组「实体 ID」组成,「实体 ID」可在 Web UI 的 Developer Tools 面板的 Set State 页面找到:

Entity ID 查询页面

可由以下两种风格定义群组:

group:
  # 数组风格
  living_room:
    entities: light.table_lamp, switch.ac
  # 集合风格
  bedroom:
    entities:
      - light.bedroom
      - media_player.nexus_player

自定义实体特性

不同类别的「实体」提供了一组通用的 attribute 用于实现定制化,这些值包括但不限于:

  • friendly_name: 在 UI 中显示的名称
  • homebridge_name: 在 HomeBridge 中显示的名称
  • hidden: 是否在 HA 中隐藏实体,true 为隐藏,默认值为 false
  • homebridge_hidden: 是否在 HomeBridge 中隐藏实体,true 为隐藏,默认值为 false
  • emulated_hue_hidden: 是否在 emulated_hue 中隐藏实体,true 为隐藏,默认值为 false
  • entity_picture: 指定一个图片的 url 与实体关联
  • icon: 从 MaterialDesignIcons.com(Cheatsheet) 选择的任何图标,前缀为 mdi:,示例值为 mid:home
  • assumed_state: 为「开关」类别指定预设状态,如果设置为 false,将得到默认的开关图标,默认值为 true
  • device_class: 实体类别,该值将决定 UI 的显示图标及状态,但不会影响测量单位,默认值为 None,暂时有以下实体支持该值:
  • unit_of_measurement: 测量单位,未指定测量单位的传感器将显示离散值,默认值为 None
  • initial_state: 为自动化设置初始状态,on 或者 off

定制化特性可在配置目录的 customize.yaml 中指定

light.yeelight_ct2_7c49eb1551e8:
  friendly_name: Lamp
sensor.yr_symbol:
  friendly_name: Wether

HA 社区开发团队正在致力于实现通过 Web UI 来完成所有信息的配置,例如,Customize 的 UI 入口如下:

Web UI 的定制入口

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容