Home Assistant + 树莓派:强大的智能家居系统 · 安装篇
最近少数派掀起了一阵树莓派热潮,各色教程涌出水面。将 Pi 接入智能家居控制系统并不新鲜,现有通过 Homebridge (下称「HB」)接入 Homekit 的教程本身已经非常全面,但是由于 Homekit 本身的局限性,使其对智能家居设备的支持广度和深度不足,间接影响了用户的使用体验。例如,早期 homebridge-aqara 插件并不支持小米网关 2 的自带灯光控制,白白浪费了设备的功能。
为了摆脱这一束缚,我们可以利用另一个强大的智能家居平台:Home Assistant(下称「HA」)。
Home Assistant 是一个成熟完整的基于 Python 的智能家居系统,设备支持度高,支持自动化(Automation)、群组化(Group)、UI 客制化(Theme) 等等高度定制化设置。背后又有庞大的社群基础,且不断在更新。最重要的是我们可以通过 Homeassistant-homebridge 插件打通两个平台,同样实现设备的 Siri 控制。整套体系的框架如下:
基本框架
可以看出,Home Assistant 作为接入所有智能家居设备的「平台」,通过 Homebridge 这一「桥梁」,最终实现 iOS 及 macOS 设备对智能家居的设置。
我们知道 Homebridge 本身可以接入部分原生不支持 Apple Homekit 的设备,但由于 Homekit 本身的局限性,“桥梁”再强大,也无法逾越其极限。
打个比方来说,每个人都能单独过桥到对岸,但是速度始终有限,如果我们把人装进车里一起运送过桥,效率则更高,同时多了车内这么一个空间。这里的“车”就可以看作是 HA。
HA 本身作为一个独立的平台,有能力集成大量量产或 DIY 的智能家居设备,并且拥有独立的控制前端,在层级上来说是和 Appple Home 平台平起平坐的大 Boss。换言之,通过 HB 接入 Homekit 只是这个平台应用的一部分,对于其他非 Apple 生态用户,HA 也同样给予其完整丰富的智能家居体验。
本系列将围绕安装、配置、开发等内容,详细介绍 HA 平台的方方面面,同时针对 HA 与 HB 兼容与选择,自动化配置方法等等问题给出自己的观点和探索,希望可以给大家玩转智能家居带来新的启发和收获。
HA 支持大部分平台,包括 Docker、macOS、Linux、Windows等。简而言之,只要你的主机能跑 Python,基本就能安装 HA。配合『魔镜』项目,以及便捷性的考虑,我选择的平台是树莓派 3B,本系列教程也将基于树莓派展开。
1. 初始安装
在树莓派安装 HA,有 3 种方法供选择:
1. 以其他操作系统(这里以树莓派官方系统 Raspbian 为例)为根系统,再通过指令安装;
2. 直接安装集成了 HA 的 Hassbian 操作系统;
3. 直接安装最新高度集成系统 Hass.io。
以上 3 种方法从性能上来说并无二异,均能实现 HA 全部功能,Hassbian 实际上亦基于 Raspbian ,唯一需要纳入考虑的是图形化操作界面的需求。原生 Hassbian 没有 GUI,但是我们可以手动进行安装。
对于刚入门的新手和想摆脱大量代码的朋友,方法推荐度依次为:3 > 2 > 1。
近期,Raspbian 正在经历 Jessie 至 Stretch 的大版本更新,Home Assistant 同样正在进行 Python 3.5 的兼容工作。因此,当下的程序包、依赖包可能出现兼容性问题。我将跟随『树莓派基金会』以及『HA』的官方说明和文档,及时更新教程。希望大家在安装过程中遇到问题不要着急,举一反三,勤搜索,多提问。
方法 1 (Raspbian):
参考其他教程,安装树莓派官方系统 Raspbian。
目前最新版本的 Raspbian 已经更新至 Debian Stretch,已经非常稳定,推荐大家更新。
安装后,请参考 梓姵君 的 文章 对树莓派进行初始基础设置,重点关注地区、WiFi、源替换的内容,这里不再展开。
注意:1. 2016 年 11 月后的官方系统默认关闭 SSH 功能,请务必打开;2. 如果使用 Stretch 系统,请将中文源中的『Jessie』改为『Stretch』,否则安装包版本不正确。
2017.11.19 修正:此一行指令已被作者宣布停止维护,因此可用性不能保证。
使用任何方法连接到树莓派终端,输入以下安装代码,请整段复制粘贴:
curl -O https://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && sudo chown pi:pi hass_rpi_installer.sh && bash hass_rpi_installer.sh
注意:不要以 sudo
运行,然后泡杯茶,做点别的事情,等待程序跑完。安装时间根据网络情况不等,大约需要 1 - 2 个小时,国内网络环境请大家自行改善。第一次安装进程可能跳错,重复运行该代码即可。
如果你是使用此方法安装 HA 的话,未来更新指令如下:
sudo systemctl stop home-assistant.service
sudo su -s /bin/bash homeassistantsource /srv/homeassistant/homeassistant_venv/bin/activatepip3 install --upgrade homeassistant -i http://pypi.doubanio.com/simpleexit
sudo systemctl start home-assistant.service
方法 2 (Hassbian):
最新 1.3.1 版 Hassbian 已伴随 Raspbian 更新至 Debian Stretch,已经非常稳定,推荐大家更新。
感谢少数派友 DJ 千辛万苦地搬运至 度娘盘(password: 2e98
),我本人也转存了一份,欢迎 前往下载。
要注意的是,Hassbian 初次启动时需要联网进行原始设置,因此请保证树莓派在有网(有线/无线)环境下。初始 WIFI 设置:
1. 将 TF 卡通过读卡器插入电脑;
2. 在TF 卡 /boot 目录下 新建 wpa_supplicant.conf 文件;
3. 添加如下设置,保存:
country=CN ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="WIFI 名称" psk="WIFI 密码" key_mgmt=WPA-PSK priority=1 }
官方教程告知初次启动需要等待 5 分钟左右,基于国内的网络环境,我这里测试多次,都需要等待近 10 分钟方可,所以大家不要焦躁,可以看部番剧或者往下研究一下此篇文章以便接下来顺利进展。
如果等待时间过久却没有出现初始界面,可尝试使用以下命令强制初始安装:
sudo systemctl enable install_homeassistant.service
sudo systemctl start install_homeassistant.service
2017.11.19 添加:
Hassbian 默认没有 GUI,但我们可以手动安装,最终实现和 Raspbian with Desktop 一样的效果。
sudo apt-get install --no-install-recommends xserver-xorg sudo apt-get install --no-install-recommends xinit sudo apt-get install --no-install-recommends raspberrypi-ui-mods lxterminal gvfs
如果使用此方法,未来更新指令如下:
sudo systemctl stop home-assistant@homeassistant.service
sudo su -s /bin/bash homeassistant
source /srv/homeassistant/bin/activate
pip3 install --upgrade homeassistant -i https://http://pypi.doubanio.com/simple
exit
sudo systemctl start home-assistant@homeassistant.service
方法 3(Hass.io)
此方法目前只适用于全系列树莓派及 Intel NUC,关于 Hass.io 更深入的介绍详见『Hass.io 特别篇』。
同样,请参考 copriwolf 的 教程 使用 Etcher 安装官方最新 固件镜像。(按需选择合适固件)
需要设置WIFI链接的朋友,请修改 TF 卡下 /system-connections/resin-sample
文件
https://docs.resin.io/deployment/network/2.0.0/
之后将 TF 卡插入树莓派,在树莓派联网状态下,等待 10 - 20 分钟左右,系统将自动完成安装。
使用前 2 种方法的朋友,等待过后,在其他设备的浏览器输入:http://树莓派的ip地址:8123
(查找树莓派 IP 地址可以直接前往路由器界面)
安装 Hass.io 的朋友,等待过后,在其他设备的浏览器输入:http://hassio.local:8123。
如果出现类似下图,则表示初始安装完成;如若没有出现界面,或者无法连接,有很大可能是尚未安装完毕,不要着急再等等。(注意地址冒号为英文字符,请勿输入中文冒号)。
特别提醒:请确保出现以下界面后,再进行后续操作,否则你的一切工作都是前功尽弃。初次启动时,勿进行任何额外操作,保持树莓派通电、联网状态!非常重要!
home-assistant
2. 附加功能安装
2.1 SMB( 强烈建议)
sudo apt-get install samba
sudo smbpasswd -a homeassistant -n
sudo nano /etc/samba/smb.conf
[global]
netbios name = raspberrypi
server string = The Pi File Center
workgroup = WORKGROUP
hosts allow =
remote announce =
remote browse sync =
[HOME ASSISTANT]
path = /home/homeassistant/.homeassistant
comment = No comment
browsable = yes
read only = no
valid users =
writable = yes
guest ok = yes
public = yes
create mask = 0777
directory mask = 0777
force user = homeassistant
force create mode = 0777
force directory mode = 0777
hosts allow =
Ctrl+X,Y,回车
sudo service smbd restart
Hassbian 提供了一个附加功能工具包 hassbian-config
,这使我们的安装更加简便。使用工具包安装原则上已经自动配置好一切,建议大家还是修改一下权限和密码。
Hassbian 工具包仅限使用 Hassian 用户使用。(下同)
安装指令:
sudo hassbian-config install sambasudo smbpasswd -a pi
重启服务
sudo systemctl restart home-assistant@homeassistant.service
2.2 MQTT
sudo hassbian-config install mosquitto
3. Homebridge 安装
该步骤仅适用于 Apple 生态链用户,特别是想要通过『家庭 App』 及 Siri 控制智能家居设备的用户。其他平台用户可跳过。
在文章开头,我已经简要介绍了 HA 和 HB 的区别。我们在这里安装 HB 的目的在于通过 HB 打通 HA 和 Apple Homekit 两大平台,实现联动。
我们知道 HB 本身可通过安装插件的方式接入部分设备,有时候同个设备同时支持 HB 插件和 HA,也有部分用户已经配置好了 HB 但现在想转入 HA,因此产生质疑。
这里我做一个说明:桥梁和平台分工不同,不可能产生冲突,也就是原有 HB 配置当然可以保留。但是仅使用 HB 就是将设备直接接入 Apple Home 这个平台,而如果设备同时接入了同样是平台的 HA,那么平台之间就会产生冲突,导致设备被重复识别添加。当然,我们可以进行进一步的设置避免这一点,我将在未来的『设备接入篇』中详细介绍。
对于初学者,我建议一个设备仅连接一个平台使用,即要么单接入 HA,要么通过安装 HB 插件的方式单接入 Apple Homekit。
HB 的详细安装流程我就不多言了,欢迎大家参考少数派上的另外 2 篇文章:
这里我根据之前指导派友的经验简单概括一下:
HB 提供一行安装指令:sudo npm install -g --unsafe-perm homebridge
但是安装成功率比较低,如果安装失败,请大家使用下面的手动安装指令。
注意:以下指令仅适用于树莓派 3B,2B 用户无法使用。
sudo apt-get install git makesudo apt-get install g++curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -sudo apt-get install -y nodejssudo apt-get install libavahi-compat-libdnssd-devsudo npm install -g --unsafe-perm homebridge hap-nodejs node-gypcd /usr/local/lib/node_modules/homebridge/ (注意这里如果显示不存在文件夹,替换成 cd /usr/lib/node_modules/homebridge/)
sudo npm install --unsafe-perm bignumcd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdns (注意这里如果显示不存在文件夹,替换成 cd /usr/lib/node_modules/hap-nodejs/node_modules/mdns) sudo node-gyp BUILDTYPE=Release rebuild
安装完成后,建议大家直接输入homebridge
运行一次 HB,以生成示例配置文件,然后 Ctrl + C 退出进程。
接着,安装『homebridge-homeassistant』插件,实现平台联动:
sudo npm install -g homebridge-homeassistant
日后插件更新,请使用下列命令:
sudo npm upgrade -g homebridge-homeassistant
npm config set registry https://registry.npm.taobao.org
pip install xxx
命令后添加 -i https://pypi.doubanio.com/simple/
切换为豆瓣源提速。4. 添加自启任务
忙活了那么久,即将大功告成了。HA 在安装过程中已经自行添加了自启任务,现在我们只需要把 HB 添加至树莓派开机任务中,这样每次启动后就会自动运行上述 2 个进程。
注意:配置 HB 前程序会运行错误,提示缺少配置文件,可先不理会。
cd /etc/default
sudo nano homebridge
复制粘贴
# Defaults / Configuration options for homebridge # The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others)
HOMEBRIDGE_OPTS= /home/pi/.homebridge
所有带有 # 字的行皆为注释,可整行删除不影响。上述指令的作用是指定 Homebridge 的配置文件及缓存所在文件夹。
如果你想要 Homebridge 显示更详细的日志,可以继续添加如下字段:
DEBUG=*
之后 Ctrl+X,Y,回车。继续输入:
cd /etc/systemd/systemsudo nano homebridge.service
复制粘贴
[Unit]Description=Node.js HomeKit Server After=syslog.target network-online.target[Service]Type=simpleUser=piEnvironmentFile=/etc/default/homebridgeExecStart=/usr/lib/node_modules/homebridge/bin/homebridge $HOMEBRIDGE_OPTSRestart=on-failureRestartSec=10KillMode=process[Install]WantedBy=multi-user.target
Ctrl+X,Y,回车
cd /
sudo systemctl daemon-reload
sudo systemctl enable homebridge
sudo systemctl start homebridge
sudo systemctl status homebridge
sudo systemctl enable mosquitto
最后重启:sudo reboot
OK,重启过后,一切就绪。
我将在下一篇『设备接入篇』中继续介绍如何将智能家居设备接入 HA 。