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

标签: home assistant 树莓派 | 发表时间:2017-07-20 07:03 | 作者:cxlwill
出处:https://sspai.com

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

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

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

基本框架


本系列将围绕安装、配置、开发等内容,详细介绍 HASS 平台的方方面面,同时针对 HASS 与 HB 兼容与选择,自动化配置方法等等问题给出自己的观点和探索,希望可以给大家玩转智能家居带来新的启发和收获。

HASS 支持大部分平台,简而言之,只要你的主机能跑 Python,基本就能安装 HASS。配合「魔镜」项目,以及便捷性的考虑,我选择的平台是 树莓派 3,本系列教程也将基于树莓派展开,兼顾其他平台。

1. 初始安装

1.1 树莓派

在树莓派安装 HASS,有 2 种方法供选择:

1. 以其他操作系统(这里以树莓派官方系统 Raspbian 为例)为根系统,再通过指令安装;

2. 直接安装集成了 HASS 的 Hassbian 操作系统。

以上 2 种方法从性能上来说并无二异,均能实现 HASS 全部功能,Hassbian 实际上亦基于 Raspbian ,唯一需要纳入考虑的是 图形化操作界面的需求。由于树莓派基金会官方尚未公开单独安装图形化操作界面的方法,在当下,如果有该需求,只能通过官方图形化操作系统 Raspbian with Desktop 实现。


方法 1 :

安装前,请参考  梓姵君 的  文章 对树莓派进行初始基础设置,重点关注地区、WiFi、源替换的内容,这里不再展开。特别注意:2016 年 11 月后的官方系统默认关闭 SSH 功能,请务必打开。

使用任何方法连接到树莓派终端,输入以下安装代码:

    
       $ 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 个小时,国内网络环境大家自行改善。

如果你是使用此方法安装 HASS 的话,未来更新指令如下:

  sudo su -s /bin/bash homeassistant   
source /srv/homeassistant/homeassistant_venv/bin/activate
pip3 install --upgrade homeassistant
exit

方法 2 :

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

感谢少数派友 DJ 千辛万苦的搬运至 度娘盘(password:  2e98

要注意的是,Hassbian 初次启动时需要联网进行原始设置,由于无法在初次启动前设置无线网络,因此务必将树莓派与电脑或者路由器 有线连接起来,以保证树莓派在有网环境下顺利设置。

官方教程告知初次启动需要等待 5 分钟左右,基于国内的网络环境,我这里测试多次,都需要等待 近 10 分钟方可,所以大家不要焦躁,可以看部番剧或者往下研究一下此篇文章以便接下来顺利进展。

如果等待时间过久却没有出现初始界面,可尝试使用以下命令强制初始安装:

    

sudo systemctl enable install_homeassistant.service

sudo systemctl start install_homeassistant.service

如果使用此方法,未来更新指令如下:

    
       $ sudo systemctl stop home-assistant@homeassistant.service
$ sudo su -s /bin/bash homeassistant
$ source /srv/homeassistant/bin/activate
$ pip3 install --upgrade homeassistant
$ exit
$ sudo systemctl start home-assistant@homeassistant.service

无论使用哪种方法,等待过后,在浏览器输入: http://树莓派的ip地址:8123(查找树莓派 IP 地址可以直接前往路由器界面)

如果出现类似下图,则表示初始安装完成;如若没有出现界面,或者无法连接,有很大可能是尚未安装完毕,不要着急再等等。(注意地址冒号为英文字符,请勿输入中文冒号)。

Hassbian 安装注意:初次启动后请等待初始安装出现以下界面后,再进行后续操作,否则你的一切工作都是前功尽弃。并且初次启动时,勿 SSH,勿输入任何代码,保持通电、联网、静置状态!非常重要!

home-assistant

1.2 macOS

macOS 自带 Python,如果你不小心误删,请先重新安装。macOS 下安装 HASS 也相当简单:

   $ pip3 install homeassistant

2. 附加功能安装

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 systemctl restart smbd.service


Hassbian 提供了一个附加功能工具包  hassbian-config ,这使我们的安装更加简便。使用工具包安装原则上已经自动配置好一切,建议大家还是修改一下权限和密码。

安装指令:

  sudo hassbian-config install samba   
sudo smbpasswd -a pi

重启服务

 sudo systemctl restart home-assistant@homeassistant.service


2.2 MQTT

MQTT  是基于二进制消息的发布、订阅编程模式的消息协议,广泛用于物联网部署中。部分智能家居设备需要 MQTT 连接。

通用安装指令:
   sudo apt-get install mosquitto mosquitto-clients python-mosquitto
sudo systemctl start mosquitto
Hassbian 工具包安装:
  sudo hassbian-config install mosquitto   
sudo systemctl start mosquitto

3. Homebridge 安装

HASS 本身可以通过网页控制,这也赋予了其全平台的控制能力。当然,想必不少人还是冲着语音控制功能考虑智能家居的,对于 iOS 用户来说,想要更自由地使用 HomeKit,HB 依然是绕不开的环节。

HB 的安装我就更不多说了,欢迎大家参考另外几篇文章,这里我根据之前指导派友的经验简单概括一下。

HB 提供一行安装指令: sudo npm install -g --unsafe-perm homebridge  但是安装成功率比较低,推荐大家使用下面的手动安装指令。

  sudo apt-get install git make   
sudo apt-get install g++
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install libavahi-compat-libdnssd-dev
sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp
cd /usr/local/lib/node_modules/homebridge/ (注意这里如果显示不存在文件夹,替换成 cd /usr/lib/node_modules/homebridge/)
sudo npm install --unsafe-perm bignum
cd /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

进行到这里,HB 就已经安装完成了,这里建议大家直接输入 homebridge运行一次,以生成示例配置文件,然后 Ctrl + C 退出。

接着,安装 Homeassistant-homebridge 插件,实现平台联动:

sudo npm install -g homebridge-homeassistant


4. 添加自启任务

忙活了那么久,即将大功告成了。最后临门一脚,我们把 HASS 和 HB 添加至树莓派开机任务中,这样每次启动后就会自动运行上述 2 个进程。

注意:配置 HB 前程序会运行错误,提示缺少配置文件,可先不理会。

  cd /   
sudo useradd --system homebridge
sudo mkdir /var/homebridge
sudo cp ~/.homebridge/config.json /var/homebridge/
sudo cp -r ~/.homebridge/persist /var/homebridge
sudo chmod -R 0777 /var/homebridge
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=-U /var/homebridge
# If you uncomment the following line, homebridge will log more 
# You can display this via systemd's journalctl: journalctl -f -u homebridge
# DEBUG=*

Ctrl+X,Y,回车

  cd /etc/systemd/system   
sudo nano homebridge.service

复制粘贴

  [Unit]   
Description=Node.js HomeKit Server 
After=syslog.target network-online.target
[Service]
Type=simple
User=homebridge
EnvironmentFile=/etc/default/homebridge
ExecStart=/usr/lib/node_modules/homebridge/bin/homebridge $HOMEBRIDGE_OPTS
Restart=on-failure
RestartSec=10
KillMode=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,重启过后,一切就绪。

我将在下一篇「设备接入篇」中继续介绍如何将智能家居设备接入 HASS 。


欢迎大家加入项目相关   Slack  进行讨论,该讨论组还包括了魔镜项目的内容。


Changelog

7.19:删除 KODI 相关内容,文章系列化。

7.16:今天 HASS 发布了 49.0 更新,终于支持主题和小米扫地机器人了!

7.15:魔镜项目已经步入收尾阶段,Home Assistant其实是个非常强大的平台,之后我将定期撰文介绍更多有关 Home Assistant 配置方法等,敬请期待。

7.12: 前天买了 Yeelight 彩光灯带,尝试接入 Home Assistant 平台,开启后发现错误。谷歌一下才知道如果要在 HA 中控制 Yeelight,一定要打开 HA 的开发者模式。考虑到功耗,遂改为直接使用 Homebridge 了。

7.5:树莓派于前几天推出系统更新 4.9,HA 最新版本为 48.1。另外有一些PI友向我询问如何接入Yeelight。有2种方法:其一通过 Homebridge-yeelight 插件,由 homebridge 接入;其二在 homeassistant 中添加 Yeelight 的 platform。相应的配置我就不赘述了,基本就是安装对应插件,然后修改相关配置文档。还有一些 Pi 友问我如何接入扫地机器人。目前 Homeassistant 上我没看到相关插件,请使用 Homebridge 接入,GitHub 地址  在此 输入:

  npm install -g homebridge-xiaomi-mi-robot-vacuum miio

6.6:陆续有 Pi 友出现控制设备失败的现象,大部分由于在 configure.yaml 文件中小米网关的 sid 采用了小写字母。请大家特别注意使用 大写字母。另目前最新版本 Home Assistant 为 46.0。

鸣谢

本篇文章参考的代码和内容有:

感谢以上提及作者的分享。

封面来源: 链接


相关 [home assistant 树莓派] 推荐:

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

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

Siri 真对手 —— Google Assistant

- - 爱范儿 · Beats of Bits
如果有人问我 iPhone 4S 的 S 代表什么,我不会说 Speed,也不会说 Steve,我会说 Siri. 尽管 iPhone 4S 在外观设计上没有任何突破,但它还是凭借 Siri 这个智能语音助手出尽了风头. 而 Google,这个苹果在智能手机系统市场的主要竞争对手,显然不会甘愿在这方面落后于人.

树莓派初级折腾

- - 极客范 - GeekFan.net
前些天在网上买了一个二手的树莓派 裸板子190包邮 (新品套装280 360什么的太贵了啊岂可修). 到手目测没有问题 主IC还有一个铜质散热片 不错. 电源就用买移动电源送的充电器(标称5v 1000mA输出 )和数据线. SD卡么… 把很久没玩的PSP掏出来 把马甲卡中的东西倒到记忆棒里 记忆棒插回PSP TF卡装到转接卡上 (话说还是个class10的呢).

安装树莓派 Raspberry PI

- - CSDN博客综合推荐文章
树莓派终于到货了,是这个样子的. 上面有一行日期是 Raspberry PI (c) 2011.12. 选择这个镜像: RASPBIAN Debian 2014-01-07. 780M的压缩包,很大的样子. 似乎还有个NOOBS的安装方式,完全无感. 顺便展示一下SD卡,通过查阅可用SD卡列表,似乎是支持个别的64G Class10的卡的,就像这个,编号是 Transcend SDXC 64G Class10 TS64GSDXC10.

Home · JohnLangford/vowpal_wabbit Wiki · GitHub

- -
There are two ways to have a fast learning algorithm: (a) start with a slow algorithm and speed it up, or (b) build an intrinsically fast learning algorithm.

鄰家有 Siri,我們有《Speaktoit Assistant》

- Eastar Lee - Android 資訊雜誌 android-hk.com
無可否認,iPhone 4S 內置的 Siri 語音系統因整合了人工智能技術,可以回答各種問題,的確比 Google 家的 Voice Action 更勝一籌. 或許您會因看到 Siri 的示範影片而很妒忌. 其實幾個月前,我們 Android 也有一個擁有類似功能的應用程式推出,名為 Speaktoit Assistant,不單整合了人工智能技術,答案同樣極富幽默感,最重要的,這軟體是完全免費.

在树莓派上用python控制LED

- - 极客范 - GeekFan.net
初步学习RPi.GPIO模块的过程中写了一个控制8个LED的模块,基本上只是一个对RPi.GPIO的一个封装. 一个已经安装配置好了的树莓派. 连接控制树莓派所用的其他必须设备. 按照电路图所示,在面包板上进行连接. 首先得确定RPi.GPIO已安装. 最新的系统已经自带了,如果没有的可以使用命令.

PiLarm: 便携式树莓派警报器

- - 极客范 - GeekFan.net
我一直在寻找一些能给自己孩子带来教益的瞬间. 当我五岁的儿子来寻求我的帮助,别再让他的弟弟偷偷溜进他的房间的时候,我突然灵光一现,发现这是教他关于输入、输出和其他一些编程知识的绝佳时机. 而且让他在解决自己实际问题中学习这些也会相对容易. 我本来可以用很多不同的方法来建立一个简单的警报系统,但是我想要让这个系统是一体化的并且在功能上不止能满足我儿子最初的原始需求.

树莓派的10个最佳资源

- - 极客范 - GeekFan.net
如果还没有找到答案,你是时候要从线上或者线下的资源寻找一些想法和项目,来帮助你将树莓派的潜能完全发掘出来. 树莓派没有内置的操作系统,也经常甚至连存储设备都没有. 但树莓派已经被证明了是一个非常成功的小型计算设备. 而很多学校(树莓派的目标用户),狂热爱好者,和那些想要打造一个小型家庭影音中心(包括其他设备)的用户都将树莓派作为他们的一个选择.

树莓派2 折腾记录

- - 操作系统 - ITeye博客
淘宝买来的 树莓派2代 B型. 这玩意还分国产和UK产,价格差距在10-20左右 不过不超过200. 另外就是要单独配个 5V2A 的电源,可选外壳和散热片,必备的是 TF 卡,可以用8G,我直接用的 32G TF 卡. 这玩意安装比较麻烦,简单的说第一次进系统你需要显示器,他只有HDMI接口,可以考虑用 HDMI转VGA连显示器,要么就直接HDMI连液晶电视(我就用的电视装的).