树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统 篇二:初步配置 Home Assistant 并连接小米设备与 HomeKit
通过本篇教程,你将完成对 Home Assistant 的初步配置,接入小米智能家居设备,并在安装配置 Home Bridge 插件后,实现 HomeKit 功能,即在 iOS 家庭 App 中控制这些设备。
如同很多开源项目,Home Assistant 对新手十分不友好,它更像是 Geek 们的玩物,你需要去阅读大量的英文文档,在编辑器里编辑自己的配置文件、手动添加智能设备、自定义每一个细节,这巨大的工作量使人望而却步。而 Hass.io 就是在这样一个背景下推出,它拥有了全新的可视化安装配置界面,能够轻松的安装与升级(不要在意那些网络细节),更重要的是依托于 Docker 技术,Hass.io 提供了插件(Add-ons)功能,你能够非常方便的安装与管理一些之前需要在命令行环境下部署的功能。如果你随同上一篇文章安装好了自己的 Hass.io,那么今天,我们将一起让它真正工作起来。
一、初步配置 Home Assistant
- 插件的安装
▲安装插件
点击左边栏 Hass.io 选项,于右上方进入插件商店。
插件(Add-ons)扩展了 Home Assistant 的功能,官方提供了 Duck DNS、Google Assistant、SSH Server、Samba 等插件,用户还可以通过简单的操作,安装第三方插件,实现更多功能。
▲插件商店
安装 Samba 插件
Samba 是 SMB/CIFS 网络协议的重新实现, 它作为 NFS 的补充使得在 Linux 和 Windows 系统中进行文件共享、打印机共享更容易实现。
Smaba 服务是必装的一个插件,Hass.io 通过它与局域网内的其他设备进行文件共享,是之后编辑 Hass.io 配置文件的前提。在插件商店找到 Smaba Share,点击进入安装界面,点击 INSTALL 进行安装。
▲Smaba
安装结束后(耐心等待)进入 Info 及 Options 界面,打开自动更新,点击 Start,SMB服务就启动了。
▲配置 Smaba
{ /*配置说明*/"workgroup": "WORKGROUP", /*用户组(可选),默认值 WORKGROUP。*/"name": "hassio", /*用户名(可选),默认值 hassio。*/"guest": true, /*(可选)是否允许客人用户(无用户名无密码)默认值 true。*/"map": { /*开放文件夹(可选),可选有 config,addons,share,backup,ssl。*/"config": true,"addons": true,"ssl": false,"share": true,"backup": true},"username": "", /*登录用户名(可选)。*/"password": "", /*登录密码(可选)*/"interface": "eth0" /*开放接口(可选),有线网连接使用 eth0,无线网连接使用 wlan0。*/}
安装 SSH server 插件
{ /*配置说明*/"authorized_keys": [], # 公钥,与下一个选项二选一,两种登陆方式"password": "1234567" # 填入SSH登陆密码}
通过 SSH 登录的用户名是 root。
- Home Assistant 配置框架
在 Windows 或 macOS 的网络共享中找到并打开 hassio,(如果在 Windows 网络中不显示,在资源管理器中输入“ HASSIO” 回车后进入)config 文件夹内的 configuration.yaml,是我们配置的主文件,通过编辑此文件来设置 Hass.io、添加组件、个性化配置系统。
▲ HASSIO 文件结构
你必须重新启动 Home Assistant 才能使更改后的 configuration.yaml 生效。
YAML 是一个可读性高,用来表达资料序列的编程语言。YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822,是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。
需要注意的是 YAML 是一个对缩进以及空格等元素敏感的编程语言,而 configuration.yaml 的语法错误会造成 Hass.io 无法正常运行。
YAML 基本语法规则:
大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
推荐使用 Sublime 或者 Atom 编辑 configuration.yaml 文件,你可以使用 YAMLLint 检查您的YAML语法是否正确。
下面是典型的 configuration.yaml 文件。
homeassistant:# 后面的文字是注释,被系统忽略。# 智能家居系统的名字,显示在主界面顶部。name: Home# 下面填入纬度和经度,计算太阳升起和设定时间所需位置,越精确越好。latitude: 30.169813longitude: 114.192472# 海拔高度用于修正天气参数和日出日落时间参数 (默认单位是:米)。elevation: 37# 度量衡单位制式(metric)是公制,(imperial)是英制。unit_system: metric# 时区,从这里选择你的:http://en.wikipedia.org/wiki/List_of_tz_database_time_zones,一般不需要修改。time_zone: Asia/Shanghai#下面这个区域,用于自定义设备属性,后期文章会有涉及。customize: !include customize.yaml#在网页界面的首页显示简介(那一大段英文),不想看到的话,请在前面加上#号。introduction:# 是否使用默认的“首页”frontend:http:# 给系统网页的登录加上一个密码,先去掉下面这行的#号,然后把PASSWORD改成你想要的密码。api_password: raspberry# 升级提示,当 HomeAssitant 有新版本发布的时候,“日出日落”图标会变成(Updater)字样updater:# 系统自动发现新的设备discovery:# 启动浏览器的语音命令conversation:# 在系统数据库中保存“历史数据”history:# 在logbook查看所有的“已发生事项”logbook:# 设置config:# Hass.iohassio:# 太阳“跟踪器”,也就是“日出日落时间”sun:# 小米智能网关xiaomi:gateways:- mac: xxxxxxkey: xxxxxxsensor: !include sensors.yamlgroup: !include groups.yamlautomation: !include automations.yaml
- 添加第一个设备/服务
在 Home Assistant 中,所有接入设备或者服务,只需要将相关组件写入 configuration.yaml 文件中即可。
组件(Components)是 Home Assistant 的设备/服务接入形式,官方支持了 700 多种设备(虚拟设备)的接入,在 0.50 版本中,支持了小米智能家居的多种设备。通过自定义组件以及第三方组件,能够实现更多设备的接入。
示例:添加 Denon 功放
Home Assistant 对组件进行了分类,同品牌的设备会归于一个平台。根据官方文档,在 configuration.yaml 文件中添加以下内容。
# 天龙功放media_player: # 设备类型- platform: denon # 所属平台host: 192.168.1.13 # IP地址
重启 Home Assistant 服务。
重启 Home Assistant 服务的几种方法:
在 Advanced Settings 中,还可以直接重启树莓派。
是不是很贴心,再加上 SSH 连接下的命令行重启,Home Assistant 为我们展示了服务重启的五种方法,这个知识点大家一定要牢记,必考题。初步配置 Home Assistant 并连接小米设备与 HomeKit
刷新浏览器,Marantz NR1504 设备就显示在 Home Assistant 首页上了。
▲关闭状态
▲开启状态
▲点击右下进入控制面板
二、小米设备接入 Home Assistant
小米设备众多,我仅选择官方原生支持接入的作为初级教程内容,
智能家居是一个系统化的工程,设备之间的通信就是基础建设。消费级智能家居硬件设备的爆发,使得我们能够轻松的搭建个人智能家居系统,而平台与产品的多样性也带来了多种的通信方式,诸如 Zigbee、蓝牙、WiFi、LAN。
小米生态链企业绿米联创生产的米家智能家庭组合使用的就是网关+子设备的模式,网关通过 WiFi 连入家庭网络,子设备通过 Zigbee 与网关连接。这可能是目前最适入手的智能家居模式了,体积小、功耗低、无需布线、不干扰 WiFi 设备,这也是我选择小米平台的一个主要原因。
小米旗下生态链企业众多,不同的产品也需要不同的连接方式。一般采用 Zigbee 技术的设备需要网关支持,在 Home Assistant 中只需要接入网关,就可以控制网关下的所有设备,而其他独立入网的设备,如米家扫地机器人等,需要单独接入。0.50 之后版本的 Home Assistant 提供的原生组件,支持了部分小米平台的设备。
▲Home Assistant 小米组件
小米多功能网关
第一代小米多功能网关无法接入。
我们需要准备小米多功能网关的 mac 地址和局域网通信协议密码 key。
在米家 App 中打开小米多功能网关,按图示获得相关信息。
▲获取 mac & key
▲获取 mac & key
iOS 与 Android 显示或有不同。
在 configuration.yaml 文件中添加如下代码:
xiaomi:gateways:- mac: 你的网关mac,不含冒号key: 你的局域网通信协议key(注意空格与缩进)多个网关,格式如下:xiaomi:gateways:- mac: xxxxxxxxxxxxkey: xxxxxxxxxxxxxxxx- mac: xxxxxxxxxxxxkey: xxxxxxxxxxxxxxxx
重启 Home Assistant 服务后即可识别相关设备。
小米路由器
在 configuration.yaml 文件中添加如下代码:
device_tracker:- platform: xiaomihost: 路由器 IPpassword: 路由器 密码
Yeelight
Home Assistant 支持 Yeelight 以下型号产品。
· YLDP01YL: LED Bulb (White)
· YLDP02YL: LED Bulb (Color)
· YLDP03YL: LED Bulb (Color) - E26
·YLDD02YL: Lightstrip (Color)
首先你需要 Yeelight App 中打开“极客模式”,在 configuration.yaml 文件中按以下模板添加代码:
如果你在 configuration.yaml 中开启了 discovery: 功能,那么在开启极客模式后,重启 Home Assistant,系统会自动添加相关灯具。
light:- platform: yeelightdevices:192.168.1.25: #改为你的 Yeelight 相应IP地址。name: Living Roomtransition: 1000use_music_mode: True #(音乐随动模式,默认关闭)save_on_change: False #(记忆设置,默认开启)192.168.1.13: #多个 Yeelight 接入。name: Front Door
三、Home Bridge 插件
Home Bridge 是前苹果员工的作品,基于 NodeJS,模拟 iOS HomeKit API。有如其名,作为“桥”来连接 iOS 设备,使得本不支持 HomeKit 的设备能够接入。
在 Hass.io 中安装第三方插件 Home Bridge
打开侧边栏 Hass.io,点击进入插件商店
▲安装 Home Bridge 插件
添加插件地址:后保存。(换行后可添加多个地址)
▲安装 Home Bridge 插件
在页面底部找到新的 Home Bridge 插件,进入安装。
▲安装 Home Bridge 插件
▲安装 Home Bridge 插件
由于网络原因,安装可能较慢,不要着急,睡一觉起来它肯定安装好了。初步配置 Home Assistant 并连接小米设备与
配置 Home Bridge 插件
打开 HASSIOconfighomebridgeconfig.json 文件,按以下模板修改:
{"bridge": {"name": "Home Assistant","pin": "123-45-678", /*随意八位pin码*/"port": 51826,"username": "XX:XX:XX:XX:XX:XX" /*你的树莓派mac地址*/},"description": "Homebridge for Home Assistant","platforms": [{"platform": "HomeAssistant","name": "HomeAssistant","host": "http://192.168.1.11:8123", /*你的 Home Assistant 地址*/"password": "raspberry", /*你的 Home Assistant 密码*/"supported_types": ["fan", "binary_sensor", "sensor", "garage_door", "input_boolean", "light", "lock", "media_player", "rollershutter", "scene", "switch"],"default_visibility": "visible","logging": true}]}
重启 Home Assistant,并在 Hass.io 中开启 Home Bridge 插件。
▲ Home Bridge 插件
整体而言,除了网络的问题之外,Hass.io 的安装还是很方便的,如果你曾经折腾过 Home Bridge 的话,Hass.io 使你不用费心搭建环境、设置启动、手动调试,一切都在 Hass.io 页面中就可以完成了。初步配置 Home Assistant 并连接小米设备与
如果你有其他的 Home Bridge 插件需要安装,按以下格式在 Options 内添加。
{"debug": false,"plugins": ["homebridge-dummy --registry=https://registry.npm.taobao.org","homebridge-mysmartlock --registry=https://registry.npm.taobao.org"]}
四、设置 iOS 设备中的“家庭”App
此节 Android 用户可略过。
▲家庭 App
▲场景
有了家庭 App,你就可以轻松安全地掌控各种 HomeKit 配件。比如通过 iPhone 让 Siri 帮你关灯,或者从 iPad 上看看门口是谁。家庭 App 能让你连接的各种设备,更高效、智能地为你工作。
家庭 App 会按照房间将配件分组,让你只需轻点一下,就可轻松控制家中任何角落的装置。你甚至可以对 Siri 说“关掉卧室的灯”或是“打开楼上的空调”。而通过 3D Touch,按住一个图标,就能执行调暗灯光或是调节恒温器之类更复杂的任务。
家庭 App 能让你设置多种场景,从而通过一个指令让多个配件联合工作。比如,你可以创建一个名为“我出门了”的场景,便可关闭灯光,锁好房门,以及调低恒温器的温度。
Apple 官方页面,以及设置教程。
在家庭 App 中添加 “桥”
Home Assistant 结合 Home Bridge 插件,使得原本不支持 HomeKit 的设备也能够接入 iOS 的家庭 App,Home Bridge 插件启动后,打开家庭 App 进行以下操作:
▲接入家庭 App
▲接入家庭 App
手动输入 PIN 码,就是在配置文件中任意写入的那个,你就可以通过这个“桥”连接到 Home Assistant 内的设备了。然后按照官方设置教程进行进一步命名设备。
自动化和远程访问 HomeKit 配件
你可以将 iPad 或 Apple TV(第 4 代)设置为家居中枢,以便在 iOS 设备上实现对 HomeKit 配件的自动化和进行远程控制。设为家居中枢的设备必须留在家中、连接到家中 Wi-Fi 网络且处于开机状态。
▲自动化和远程访问 HomeKit 配件
将 iPad 设置为家居中枢:
在“设置”>“iCloud” 中打开“iCloud 钥匙串”和“家庭”,前往“设置”>“家庭”并打开“将此 iPad 用作家庭中枢”
将 Apple TV 设置为家居中枢:
在 iOS 设备或 Mac 上,为您的 Apple ID 设置双重认证。然后,前往 iCloud 并确保“iCloud 钥匙串”已开启。在 Apple TV 上,前往“设置”>“帐户”并确保已登录到 iCloud,且使用的 Apple ID 与 iOS 设备上的相同。登录到 iCloud 后,Apple TV 会自动被设置为家居中枢。要检查家居中枢的状态,请前往“设置”>“帐户”>“iCloud”,然后在“HomeKit”下查看家居中枢是否已连接。
五、下节预告
完成设备的接入,智能家居系统开始有点像样了。我想你们肯定还存在很多问题,“我的设备怎么在 Home Assistant 里重新命名?”“如何分组?”“有些设备我不想加入 HomeKit 里。”“我想要更炫酷的界面!”“这不就是个遥控器嘛,我不需要。”诸如此类。下节教程将对 Home Assistant 进行进一步配置,实现个性化布局,同时对 Home Assistant 的自动化(Automations)做入门讲解。
-
Home Assistant 进阶设置
-
Home Assistant 自动化