Home Assistant + 树莓派:强大的智能家居系统 · 安装篇

时间:2021-06-29 07:21:12

Home Assistant + 树莓派:强大的智能家居系统 · 安装篇

Home Assistant + 树莓派:强大的智能家居系统 · 安装篇

目录
  1. 1. 初始安装
  2. 3. Homebridge 安装
  3. 4. 添加自启任务
  4. 更新日志
  5. 鸣谢
  6. 作者的话

最近少数派掀起了一阵树莓派热潮,各色教程涌出水面。将 Pi 接入智能家居控制系统并不新鲜,现有通过 Homebridge (下称「HB」)接入 Homekit 的教程本身已经非常全面,但是由于 Homekit 本身的局限性,使其对智能家居设备的支持广度和深度不足,间接影响了用户的使用体验。例如,早期 homebridge-aqara 插件并不支持小米网关 2 的自带灯光控制,白白浪费了设备的功能。

为了摆脱这一束缚,我们可以利用另一个强大的智能家居平台:Home Assistant(下称「HA」)。

Home Assistant 是一个成熟完整的基于 Python 的智能家居系统,设备支持度高,支持自动化(Automation)、群组化(Group)、UI 客制化(Theme) 等等高度定制化设置。背后又有庞大的社群基础,且不断在更新。最重要的是我们可以通过 Homeassistant-homebridge 插件打通两个平台,同样实现设备的 Siri 控制。整套体系的框架如下:

Home Assistant + 树莓派:强大的智能家居系统 · 安装篇基本框架

可以看出,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):

参考 copriwolf 的 教程 使用 Etcher 安装官方 固件 镜像。
 

最新 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 文件

Home Assistant + 树莓派:强大的智能家居系统 · 安装篇

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 + 树莓派:强大的智能家居系统 · 安装篇home-assistant


2. 附加功能安装

 
以下教程不适用于 Hass.io,Hass.io 对附加功能使用模块式一键安装方法,大家可以登录主界面左侧栏的 Hass.io 项下进行点击安装。基于系统才刚发布,更多信息详见『Hass.io 特别篇』。

2.1 SMB( 强烈建议)

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

MQTT 是基于二进制消息的发布、订阅编程模式的消息协议,广泛用于物联网部署中。
 
All-in-one 安装指令已经安装了 MQTT 和 OpenZwave 服务,故无需重复安装。
 
注意:Hassbian V1.3 暂不能使用工具包安装 MQTT。 
已恢复。
 
Hassbian 用户请使用 Hassbian 工具包安装:
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 篇文章:

入门智能家居,从米家到HomeKit (一)

iOS 上自带的 HomeKit 功能易用美观且可以通过 Siri 操控,但是 HomeKit 授权硬件价格比...

查看原文

从米家到 HomeKit,你只需要一个树莓派

米家是小米很早就推出的智能家庭系统,其最大的特点是便宜和基础。它的很多设备都可以实现和 Homekit 相同的...

查看原文

这里我根据之前指导派友的经验简单概括一下:

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


加速技巧:
 
由于某些原因,国内连接 npmjs.org 会十分缓慢,我们可以用淘宝 npm 镜像来代替。
 
输入下列指令:
 
npm config set registry https://registry.npm.taobao.org
 
之后,所有安装流程一致。
 
另外国内加载默认 pypi 源的速度亦较慢,可在 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 。