2.1 安装和测试Home Assistant
不管是在Windows、MacOS还是在Linux(包括树莓派的嵌入式Linux)上,都可以用常规的方式安装Home Assistant。
1.安装Home Assistant
在已正确安装并能正常运行Python 3后,在命令行执行命令pip3install homeassistant进行Home Assistant的下载和安装。安装时会下载一些库文件,时间会比较长。
如果下载过程中出现如图2.1所示的错误,再次执行上述命令即可(如果要安装指定版本,安装时可以在命令中指定版本信息,如pip3 install homeassistant==0.86.2)。
图2.1 下载过程中可能出现的错误
安装成功后,执行命令pip3 list,查看安装Home Assistant后的库文件,如图2.2所示。对比图1.6,可以发现在安装Home Assistant时又安装了一些库文件。
图2.2 安装Home Assistant后的库文件
2.启动Home Assistant
Home Assistant安装完成后,在命令行中输入hass,启动系统。
Home Assistant启动的机制如下:
(1)读取配置文件。
(2)如果没有与配置文件中包含的组件对应的依赖库,会自动从网络下载相应的库文件并进行安装。
hass由两部分组成:内核(core)和组件(component)。如果将hass比作人体的神经系统,那么内核就是中枢神经系统(大脑),组件就是周围神经系统。
hass内核并不与外部世界直接互动,而是通过组件连接外部世界。这类似于大脑并不直接与感觉器官、运动器官连接,而是通过周围神经系统进行连接。例如,light.hue组件负责与飞利浦HUE智能灯进行互动。
当hass第一次启动或者升级版本时,因为大量组件依赖的库没有被安装,因此可能会有比较大的安装工作量,甚至网络不好的时候会安装失败(如果发生这种情况,可以关闭再启动命令行界面,多运行几次)。这就是hass第一次启动时间往往会比较长的原因。
当出现Timer:starting时,表示Home Assistant服务器启动成功,如图2.3所示。
3.访问Home Assistant
通过浏览器访问Home Assistant,建议使用谷歌公司的浏览器Chrome。
(1)在浏览器中输入127.0.0.1:8123访问Home Assistant,第一次访问时需要创建账户,如图2.4所示。
(2)单击“创建账户”按钮。创建账户后的登录界面如图2.5所示。
图2.3 Home Assistant服务器启动成功
图2.4 第一次启动时创建账户
图2.5 登录界面
(3)单击NEXT按钮,Home Assistant首页如图2.6所示。
4.YAML文件
在配置目录(Window的%APPDATA%一般位于C:\Users\用户名\AppData\Roaming\,如C:\Users\Administrator\AppData\Roaming\.homeassistant)下有一个文件名为configuration.yaml,这就是Home Assistant的主配置文件,包含了要加载的组件以及这些组件的配置信息。
YAML是一种可读性高、用来表达资料序列的编程语言。YAML参考了其他多种语言(包括XML、C、Python、Perl)以及电子邮件格式RFC 2822,是专门用来编写配置文件的语言,语法简洁,功能强大。
需要注意的是,YAML是一个对缩进以及空格等元素敏感的编程语言,而configuration.yaml中的语法错误会导致Home Assistant无法正常运行。
图2.6 Home Assistant首页
YAML基本语法规则如下:
(1)区分大小写。
(2)使用缩进表示层级关系。
(3)缩进时不允许使用Tab键,只允许使用空格键。
(4)缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。
建议配置文件采用Notepad++等代码编辑器进行编辑。对配置文件进行更改后,需要重新启动Home Assistant使新的配置生效。
5.主配置文件
图2.7是主配置文件configuration.yaml的内容。
主配置文件决定Home Assistant加载哪些组件,以及这些组件该如何运行。例如,sensor.yr组件的配置信息可以包含获取哪个地方的、什么时间的天气预报,tts组件的配置信息指定采用哪种文字转语音服务组件。
以图2.7中的配置为例,有一些信息对于Home Assistant来说是基础性的,例如名字、位置、时区等。这些信息配置在homeassistant域中,如表2.1所示,均为可选配置项。
表2.1 主配置文件homeassistant域中的基础配置项
图2.7 主配置文件内容
只要记住4条规则,就能理解Home Assistant的主配置文件。
(1)井号(#)右边的文字用于注释,不起实际作用。
(2)冒号(:)左边的字符串代表配置项的名称,冒号右边是配置项的值。例如,图2.7中的“time_zone:”右边的值Asia/Shanghai表示选择的时区。
(3)如果冒号右边是空的,那么从下一行开始,所有缩进的行都是这个配置项的值,例如图2.7中的sensor和tts。
(4)如果配置项的值以连字符(-)开始,则表示这个配置项有若干个并列的值(也可能仅有一个值),每个值都以相同缩进位置的连字符开始。
6.基本语法规则
如果检查主配置文件时出现错误,可以首先从以下几方面尝试消除错误:
(1)冒号和连字符后面要加一个空格。
(2)缩进必须使用空格(不能按Tab键),一般用两个空格代表一层缩进。
(3)如果在配置文件中存在中文字符,必须保存为utf-8编码格式。
当configuration.yaml文件越来越大的时候,可以将其拆分成若干文件,以方便阅读和编辑。
在默认的configuration.yaml中,通过“!include”可以在主配置文件中包含子配置文件。例如,可以在图2.7所示的configuration.yaml中包含以下3行语句(具体含义在后面的相应内容中介绍)。
group: !include groups.yaml automation: !include automations.yaml script: !include scripts.yaml