树莓派 + Homekit + Kodi = Home center

作者 donggua

2017-08-01 02.开源硬件, 04.智联网 无评论 脚印:

最近极客圈似乎又掀起了一阵树莓派热潮,各色教程涌出水面。从在英国入手Pi 2B初版到现在折腾Pi 3,我也算半个Pi迷了。之前我在个人网站中分享了通过安装OSMC将树莓派打造成家庭媒体中心的教程,上周在少数派看到文章分享的Homebridge插件,便动起了升级的想法,欲一步到位将树莓派直接升级为集媒体与智能设备中控为一体的家庭枢纽。之后我也查阅了其他网站和外网大量的教程和论坛问答,反复尝试代码,遂提出如下的方法并成功实现。

本篇文章参考的代码和内容有:威锋网hhalibo教程,什么值得买Yang_John分享,少数派网站Junyi Lou的教程,HomebridgeGithub源码,Home AssistantGithub源码,感谢以上提及作者的分享。

将Pi接入智能家具控制系统,Junyi Lou教程本身已经非常全面,但是有一个缺陷:因为Homebridge插件的方法将小米网关2当做“桥”,因此缺失了控制网关本身夜灯的功能。

为了摆脱这一束缚,我想到了利用另一个系统:Home-assistant(下称“Haas”)。Home-assistant是一个成熟完整的基于Python的智能家居系统,能实现全系统支持的智能家居设备控制,并且支持大量的智能家居设备,功能十分强大。

Home-assistant主页在此:https://home-assistant.io/

将树莓派整合为家庭中枢,有三种思路供选择:1. 以Raspbian为根系统,安装Home-assistant智能控制系统及KODI媒体系统;2. 以OSMC(KODI)媒体系统为根系统,再安装Home-assistant智能控制系统;3. 以Hassbian智能控制系统为根系统,再安装KODI媒体系统。

以上3种方法从性能上来说并无二异,都能支持最新的Raspbian和Kodi version 17。我也全部都尝试了一遍,当中的心路历程就不多言了。总而言之,最终我选择了方法3进行操作。下面的教程也是基于方法三展开,但是我也有部分顾及到采用其他2个方法的内容,欢迎借鉴。

提示:如果你不需要设置小米网关本身灯光功能,欢迎参考Junyi的教程进行设定,过程更为简单,而后再跳转到本篇教程的KODI安装即可。

0. 配置背景

我的设备:树莓派3B,华硕AC66U-B1路由器(外接硬盘),宽带50M,一台显示器,小米网关2,小米温湿度传感器

你需要的环境:一个树莓派(版本可和我不一致,但是步骤和代码有可能不同,自行甄别),一个路由器,一条网线,对树莓派有初级认识(如对基本操作和设置不熟,也欢迎阅读少数派另一位作者XX的系列教程),一些智能家居设备

下面开始正式教程,注意所提供的代码,每复制粘贴一行就回车运行一次,不要一次性粘贴多行回车:

1. 安装Hassbian系统

Hassbian顾名思义就是建立在树莓派官方系统Raspberry系统上,添加了智能家庭功能(HASS, Homeassistant)的系统。因此安装方法和其他系统并无不同,格卡,刷入系统镜像即可,这里我就不再赘述了。

官方镜像文件地址:https://github.com/home-assistant/pi-gen/releases/download/v1.1/image_2017-02-03-HASSbian.zip

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

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

大约等待10分钟后,在浏览器输入:http://树莓派的ip地址:8123 查找树莓派IP地址可以直接前往路由器界面,另外注意冒号为英文字符,请勿输入中文冒号。如果出现类似下图,则表示初始安装完成;如若没有出现界面,或者无法连接,有很大可能是尚未安装完毕,不要着急再等等。

如果你使用的是安卓移动终端,或者没有使用苹果系统控制智能设备的需求,到这里,基本就完成了你需要的设置。

2. 初始设置树莓派

首先使用任何方法连接到树莓派(有显示器接键盘,SSH等),先把树莓派设置成我们独一无二的宝贝,输入raspi-config进入设置。(更详细教程欢迎参考梓姵君文章

首先调整地区设置,把时区、语言都设置成天朝,键盘的话依自己的选择。这里注意,第一次先把US UTF-8设置成默认语言,要不然重启后会有小方块,想要中文显示的话,重启后再设置一次即可。

如果你想要启动媒体功能,还需要将调整GPU-memory调整到160MB以上;

如果是Hassbian系统的话,SSH功能默认是打开的,其他系统请在设置中打开。

接下来,设置树莓派的WIFI功能,树莓派3自带WIFI模块,输入:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

在尾部添加

network={ ssid=”你的wifi名字” psk=”wifi密码” }

而后ctrl+x,y,回车(请记住这个操作,未来会频繁用到)

现在我们的树莓派就可以脱离网线自如操作了。输入:sudo reboot重启后,自行选择方法连接至树莓派(SSH,电脑直连,接显示器键盘操作)

人在天朝的小伙伴,最好更换一下源:sudo nano /etc/apt/sources.list在第一行首添加”#“号,再在最上方添加如下代码(如果不安装KODI,最后一行可忽略):

deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib

deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib

deb http://pipplware.pplware.pt/pipplware/dists/jessie/main/binary /

然后按ctrl+x,y,回车

一切大功告成。

3. 安装Home-assistant

Hassbian系统自带了Home-assistant,但是官网也提供数种方法基于raspbian或者其他树莓派系统安装HASS,我这里也一并介绍,大家可以尝试。(注意:我在这个步骤屡败屡战,屡战屡败,所以并不能给大家提供更多的帮助。)

方法一:All-in-one,最简单的一行代码搞定一切,但是只适用于树莓派3,注意,只适用于树莓派3。代码在此,大家可以一试。

$ 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

如果你是使用此方法安装HAAS的话,未来更新固件代码如下:

sudo su -s /bin/bash homeassistant

sudo su -s /bin/bash homeassistant

pip3 install –upgrade homeassistant

exit

方法二:手动安装

$ sudo apt-get install python3 python3-venv python3-pip

$ sudo useradd -rm homeassistant

$ cd /srv

$ sudo mkdir homeassistant

$ sudo chown homeassistant:homeassistant homeassistant

$ sudo su -s /bin/bash homeassistant

$ cd /srv/homeassistant

$ python3 -m venv .

$ source bin/activate

(homeassistant) homeassistant@raspberrypi:/srv/homeassistant $ pip3 install homeassistant

(homeassistant) $ hass

再次声明,我在安装Raspbian with Pixel系统下,屡次安装失败,我也是没脾气了。实在是不想一句句命令行看下去来排错。估计的原因有:1. 由于某WALL的原因,一些依赖包可能被墙,导致无法顺利下载安装;2. 但是我在路由器部署全局科学上网前提下,依旧报错,可能是由于系统本身的原因;3. 可能是阿里云镜像源原因,但是我在使用原始源安装还是不行。

3.1 安装附加功能

3.1.1 安装SMB(必须)

sudo ./hassbian-scripts/install_samba.sh

sudo smbpasswd -a pi

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.original

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 = root

force create mode = 0777

force directory mode = 0777

hosts allow =

ctrl+x,y,回车

再输入sudo systemctl restart home-assistant@homeassistant.service

3.1.2 安装MQTT

sudo ./hassbian-scripts/install_mosquitto.sh

sudo systemctl start mosquitto

4. 安装Homebridge插件

Homebridge是一款插件以在苹果终端外接入Apple Homekit,从而实现Siri和苹果原生“家庭”app控制原本不被苹果认证支持的智能家庭设备。Homebridgede的安装,Junyi Lou的文章介绍的比我详尽,大家可以参考。我的方法是基于非Raspbian系统,所以开头会多几行代码装一些依赖包。另外Homebridge也提供一行安装指令: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/

sudo npm install –unsafe-perm bignum

cd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdns

sudo node-gyp BUILDTYPE=Release rebuild

进行到这里,Homebridge就已经安装完成了,设置问题我们稍后再说。

5. 智能控制中心配置

登陆树莓派(之后开头默认此状态,不再重复)输入以下代码:sudo npm install -g homebridge-homeassistant而后输入:

cd /home/pi/.homebridge

sudo nano config.json

在文件中新增

{

“bridge”: {

“name”: “Homebridge”,

“username”: “CC:22:3D:E3:CE:30(树莓派MAC地址)”,

“port”: 51826,

“pin”: “123-45-678(自行设定)”

},

“platforms”: [

{

“platform”: “HomeAssistant”,

“name”: “HomeAssistant”,

“host”: “http://树莓派地址:8123”,

“password”: “raspberry”,

“supported_types”: [“fan”, “binary_sensor”, “sensor”, “garage_door”, “input_boolean”, “light”, “lock”, “media_player”, “rollershutter”, “scene”, “switch”]

}

]

}

ctrl+x,y,回车。我们就完成了Homebridge的设置。

接下来是hass的设置:使用smb服务连接树莓派,macOS在Finder中点击工具栏的前往-连接服务器-输入smb://树莓派地址,用户名为pi,密码就是你之前设定的smb的密码。出现Home assistant共享文件夹,创建custom_components文件夹,到https://github.com/lazcad/homeassistant下载文件,将文件夹内文件复制进新建的文件夹,退回到上层文件夹,打开configuration.yaml,随便找个地方,添加小米网关

xiaomi:

gateways:

– sid: mac地址

– key: 通讯密码(小米网关的地址和密码可从米家app上获得,修改后保存。)

现在我们已经完成了HASS的所有设置了。

6. 安装KODI媒体中心

回到树莓派,输入下面的代码,第一步是为了取得这个源地址的认证。Raspbian源默认的Kodi版本是15,然而最新版本已经到了17,目前只有该源支持安装最新版的Kodi,这也是为什么在前面的步骤要添加源的原因:

wget -O – http://pipplware.pplware.pt/pipplware/key.asc | sudo apt-key add –

sudo apt-get install kodi

sudo addgroup –system input

sudo nano /etc/udev/rules.d/99-input.rules

复制粘贴

SUBSYSTEM==input, GROUP=input, MODE=0660

KERNEL==tty[0-9]*, GROUP=tty, MODE=0660

ctrl+x,y,回车输入:

sudo nano /etc/udev/rules.d/10-permissions.rules复制粘贴

#input

KERNEL==”mouse|mice|event”, MODE=”0660″, GROUP=”input”

KERNEL==”ts[0-9]|uinput”, MODE=”0660″, GROUP=”input”

KERNEL==js[0-9], MODE=0660, GROUP=input#tty

KERNEL==tty[0-9]*, MODE=0666

#vchiq

SUBSYSTEM==vchiq, GROUP=video, MODE=0660

ctrl+x,y,回车,输入:

sudo usermod -a -G audio pi

sudo usermod -a -G video pi

sudo usermod -a -G input pi

sudo usermod -a -G dialout pi

sudo usermod -a -G plugdev pi

sudo usermod -a -G tty pi

至此,最新版本17.1的KODI也已经安装完成了,大家可以输入Kodi进入进行更详细的设置。

7. 添加自动开机任务

忙活了那么久,即将大功告成了。最后临门一脚,我们把HAAS、homebridge、KODI添加至树莓派开机任务中,这样每次启动就会自动开启上述2个功能,并且跳转到KODI界面。

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 wget -O /etc/init.d/kodi https://gist.githubusercontent.com/shyamjos/60ea61fd8932fd5c868c80543b34f033/raw;sudo chmod +x /etc/init.d/kodi

sudo systemctl enable kodi

sudo systemctl enable mosquitto

最后重启:sudo reboot

OK,重启过后,稍作等待,一个完美的家庭枢纽就这样诞生啦!

8. 最终设置

打开iOS设备的“家庭”app,点击右上角添加,不出意外的话,Homebridge就会被自动搜索到了,照流程一路下一步,所有连接到树莓派的智能设备都会自动添加。全部完成后,我们先调戏一下Siri:

请输入图片标题

由于苹果的安全要求,除非你拥有Apple TV第四代,否则不支持局域网外的Homekit控制,这是这个系统目前最大的遗憾。

Kodi的设置我就不赘述了,主要流程就是:设置中文(可选)-添加资源库-添加中文插件库-刮削器刮削内容-强迫症整理文件,我最终的显示效果如下:

后续:日常维护

既然是系统就免不了升级,以下为HAAS日常维护命令:

$ sudo apt-get update

$ 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

作者:cxlwill
链接:http://www.jianshu.com/p/e2daf528619d
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

发表评论

电子邮件地址不会被公开。 必填项已用*标注