树莓派打造家庭中枢教程(完整版)
追加修改(2017-05-01 23:38:35):
实话讲,不知道按着教程实操的人有多少,但是我还是尽量完善、更新这份教程。首先,Hassbian系统自带了Home-assistant,因此请使用Hassbian系统的值友跳过3.1,直接前往3.1.1。其次,3.1.1步骤如果执行失败,可以手动安装。具体代码:sudo apt-get install samba(回车) sudo smbpasswd -a homeassistant -n(回车)sudo nano /etc/samba/smb.conf(回车)文件内容和原来的一致,将force user = root 更换为 force user = homeassistant,之后ctrl+x,y,回车。sudo systemctl restart smbd.service(回车);其次,Hassbian系统于2017.4.29正式更新到1.21版本,下载地址为 https://github.com/home-assistant/pi-gen/releases/download/v1.21/image_2017-04-29-Hassbian.zip
追加修改(2017-04-27 13:14:19):
3.1.1 smb部分由于编辑的原因,remote browse sync =[HOME ASSISTANT] 代码黏在一起了,正确的应该是:
remote browse sync =
[HOME ASSISTANT]
多一个回车,望周知。(其实就是这是2个部分的内容)
本篇教程所谓家庭中枢即智能家居控制系统+媒体播放系统。提及的小米产品仅供举例,系统本身可以接入多品牌、多系统设备,优势在于打通了设备之间的壁垒,比如可以让原来不支持Homekit的智能家居设备亦接入Homekit,实现siri控制。同时该系统可以使用网页端控制,也就是说,用户端的设备限制也打通了。
另:有评论指出都是现成的代码,照搬就好了。我的回应是:首先所有引用我皆已注明,其次汇编作品亦是作品,另收集搜索整合代码也是一项技能,至少这一篇文章中的代码每一行我能做到知其然并知其所以然,也指导了一些网友成功实现了这个方案,希望你能尊重我的劳动成果。我是文科生,编程能力肯定不如一些程序员值友,但是不代表我不会编程,该debug的时候也能debug。
有关代码整合为镜像的要求,我目前的看法是:这个系统受Homeassistant、homebrdige、小米、Homekit多个因素制约,变动性很大,另树莓派版本、配置、网络环境不一,很难协调,更适合见招拆招,一步一步安装,因此暂不考虑。
前几天在张大妈上发布了树莓派打造家庭中枢的简版教程,得到了值友们的热情响应,居然还上了首页,真的是吓死宝宝了。
由于值得买不允许发布似个人宣传的信息(其实我根本无意如此),评论中又有诸多值友强烈反应需要完整版本的教程,那么我就将此教程发布大家,欢迎有意有能力的值友参考。
本篇教程参考的代码和内容有:威锋网 hhalibo 的 教程 ,什么值得买 Yang_John 的 分享 ,少数派网站Junyi Lou的 教程 ,Homebridge Github源码,Home Assistant Github源码,感谢以上提及作者的分享。
将Pi接入智能家具控制系统,Junyi Lou的教程本身已经非常全面,但是有一个缺陷:因为Homebridge插件的方法将小米网关2当做“桥”,因此缺失了控制网关本身夜灯的功能。
为了摆脱这一束缚,我想到了利用另一个系统:Home-assistant(下称“Haas”)。Home-assistant是一个成熟完整的基于Python的智能家居系统,能实现全系统支持的智能家居设备控制,并且支持大量的智能家居设备,功能十分强大。
Home-assistant主页在此:链接
将树莓派整合为家庭中枢,有三种思路供选择: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)的系统。因此安装方法和其他系统并无不同,格卡,刷入系统镜像即可,这里我就不再赘述了。
官方镜像文件地址:1.1稳定版本:链接
1.2 预发布版本 链接
要注意的是,Hassbian初次启动时需要联网进行原始设置,由于无法在初次启动前设置无线网络,因此务必将树莓派与电脑或者路由器有线连接起来,以保证树莓派在有网环境下顺利设置。
官方教程告知初次启动需要等待5分钟左右,基于国内的网络环境,我这里测试多次,都需要等待近10分钟方可,所以大家不要焦躁,可以看部番剧或者往下研究一下此篇文章以便接下来顺利进展。
大约等待10分钟后,在浏览器输入:https://树莓派的ip地址:8123 查找树莓派IP地址可以直接前往路由器界面,另外注意冒号为英文字符,请勿输入中文冒号。如果出现类似下图,则表示初始安装完成;如若没有出现界面,或者无法连接,有很大可能是尚未安装完毕,不要着急再等等。
注意:初次启动后请等待初始安装出现以下界面后,再进行后续操作,否则你的一切都是前功尽弃。并且初次启动时,勿SSH,勿输入任何代码,保持通电、联网、静置状态!非常重要!
如果你使用的是安卓移动终端,或者没有使用苹果系统控制智能设备的需求,到这里,基本就完成了你需要的设置。
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 https://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
deb-src https://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
deb https://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
$ pip3 install 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. 智能控制中心配置
登陆树莓派(之后开头默认此状态,不再重复)输入以下代码安装homebridge的homeassistant插件,从而实现两者的联动: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": "https://树莓派地址: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上获得,修改后保存。具体操作:app——网关——右上角选项——关于——空白处狂点————局域网通信协议)
现在我们已经完成了HASS的所有设置了。
6. 安装KODI媒体中心
回到树莓派,输入下面的代码,第一步是为了取得这个源地址的认证。Raspbian源默认的Kodi版本是15,然而最新版本已经到了17,目前只有该源支持安装最新版的Kodi,这也是为什么在前面的步骤要添加源的原因:
wget -O - https://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第四代及iPad系列产品,将他们设置为家庭中枢,否则不支持局域网外的Homekit控制及自动化配置(当然,如果使用的是米家产品,本身米家app就可以进行相关操作)。好在家里还有一台年迈的iPad mini 2,果断设置起来。(过程很简单,我就不赘述了)
Kodi的设置我就不赘述了,主要流程就是:设置中文(可选)-添加资源库-添加中文插件库-刮削器刮削内容-强迫症整理文件,我最终的显示效果如下:
9. 后续:
9.1 遥控
由于之前使用的是OSMC系统,为了统一性从英国OSMC官方商店购买了壳和遥控,但是切换到Hassbian以后,遥控的一些功能不被支持,所以我又重新进行了设置。
首先安装"lirc“服务
apt-get install lirc
然后安装OSMC遥控的配置文件:(以下代码针对树莓派3,其他版本树莓派可至对应库寻找)
wget https://ftp.fau.de/osmc/osmc/apt/pool/main/a/armv7-remote-osmc/armv7-remote-osmc_1.2.1_armhf.debwget https://ftp.fau.de/osmc/osmc/apt/pool/main/a/armv7-lirc-osmc/armv7-lirc-osmc_0.9.0-5_armhf.debwget https://ftp.fau.de/osmc/osmc/apt/pool/main/a/armv7-eventlircd-osmc/armv7-eventlircd-osmc_1.2.0_armhf.debsudo dpkg -i armv7-lirc-osmc_0.9.0-5_armhf.debsudo dpkg -i armv7-*.debsudo apt-get -f install
重启之后就大功告成啦~
9.2 日常维护
既然是系统就免不了升级,以下为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








项sir
校验提示文案
Cong_He
校验提示文案
X丶佑小一
博联rm pro已经接入成功了 控制空调只能开关 但是我看视频有人可以增加调节温度 ,怎么实现的
还有电视自动换台
校验提示文案
丿丶泠风
校验提示文案
qianp
校验提示文案
eric824
校验提示文案
i大猫
校验提示文案
cjake8010
校验提示文案
云在流浪
校验提示文案
碧邪
校验提示文案
FelixL
校验提示文案
sunny22
校验提示文案
值友4184872212
另外,
3.1.2 安装MQTT
sudo ./hassbian-scripts/install_mosquitto.sh
sudo systemctl start mosquitto
这两条命令也无法执行,求指导。最好能短个联系方式。
校验提示文案
xueyunfei
校验提示文案
夜风习习
校验提示文案
Kuncle
校验提示文案
嗳逗趣
校验提示文案
奶霸奶爸
校验提示文案
云栖隐者
校验提示文案
mayat
校验提示文案
值友6316205643
校验提示文案
值友6481433614
校验提示文案
U571kkk
校验提示文案
少年大叔
校验提示文案
嗳逗趣
校验提示文案
_tion
校验提示文案
snail散步
校验提示文案
whuiscool
校验提示文案
Ringoo
校验提示文案
轩辕巽
校验提示文案
Kuncle
校验提示文案
夜风习习
校验提示文案
丿丶泠风
校验提示文案
X丶佑小一
校验提示文案
X丶佑小一
校验提示文案
一生喂你话梅
校验提示文案
一生喂你话梅
校验提示文案
呆呆小虫
校验提示文案
值友6155770684
校验提示文案
不系之舟_辰
校验提示文案