RaspberryPi折腾记(贰)——搭建HomeBridge,桥接Apple HomeKit
本帖最后由 cnmb11 于 2017-9-7 11:33 编辑[上期回顾]上期主讲内容:1. 在树莓派上安装Raspbian Jessie操作系统;2. 通过SSH和VNC远程登录树莓派;3. 实现树莓派的无线连接。详见:RaspberryPi折腾记(壹)——安装Raspbian Jessie系统及基础功能
本期主要讲解在树莓派上搭建HomeBridge,桥接Apple的HomeKit(Apple的智能家居平台),实现在iOS设备上通过系统级应用Home(家庭App)和Siri语音控制智能家居设备(主要是米家生态链的智能设备)。
[第贰回] 搭建HomeBridge,桥接Apple HomeKit一. HomeBridge目前支持的米家智能设备列表:1. 米家多功能网关升级版(二代)2. 米家智能插座-ZigBee版3. 米家智能插座-基础版4. 米家智能插座-USB版5. 米家智能插线板6. 青米智能插线板7. 青米智能插线板-USB版8. Yeelight床头灯9. Yeelight LED智能灯泡-彩光版10. Yeelight LED智能灯泡-白光版11. Yeelight LED-吸顶灯12. 米家LED智能台灯13. 米家空调伴侣14. Aqara空调伴侣15. 米家人体传感器16. 米家门窗传感器17. 米家温湿度传感器18. Aqara温湿度传感器19. 智米电风扇20. 米家小白摄像机(只能控制开关)21. 米家扫地机器人22. 米家空气净化器(正在适配)23. 米家无线开关(正在适配)24. Aqara墙壁开关-单火双键版25. Aqara墙壁开关-单火单键版26. Aqara墙壁开关-零火双键版27. Aqara墙壁开关-零火单键版28. Aqara86型无线开关-双键版29.Aqara86型无线开关-单键版30. Aqara86型墙壁插座31. 魔方控制器32. 米家烟雾报警器33. 米家天然气报警器34. Aqara窗帘电机35. Aqara水浸传感器… … 我手中的设备如下:1. 米家多功能网关升级版(二代)2. 米家智能插座-ZigBee版3. 米家智能插座-基础版4. 米家智能插线板5. Yeelight床头灯6. Yeelight LED智能灯泡-白光版7. 米家LED智能台灯8. 米家空调伴侣9. 米家温湿度传感器10. 米家小白摄像机11. 米家扫地机器人12. 米家无线开关 本教程只涉及到我有的设备,其它设备的教程请自行搜索教程(百度、Google、GitHub、NPM等网站)。 注:本教程中所涉及的软件和插件,均来自于开发者分享。
二. 修改Raspbian软件源地址1. 什么是软件源? 软件源是Linux系统(Raspbian是一个基于Debian的OS,Debian是基于Linux内核的OS)免费的应用程序安装仓库,很多的应用软件都会这收录到这个仓库里面。直接使用软件源中的软件进行安装就无需自行编译,这对于速度不快的树莓派来说能节省不少时间。
软件源配置文件为/etc/apt/sources.list,里面写了你所用的软件源地址(注意不是软件安装包在这个文件夹,而是仅有服务器的描述信息,所有的软件安装获取还是需要联网的)。
Rasbpian有一个官方的软件源(就是默认写在配置文件中的地址),然而官方的软件源在国外,下载速度很慢。国内一些大学和企业由于需要大量下载软件,或者为了公益目的,就会下载到自己的服务器上,提供更快的下载速度。 我们把软件源地址从默认的国外服务器切换到国内服务器上,有两个目的:1. 为了提高下载和安装软件的速度;
2. 为了确保下载的软件包是完整且可靠的。
2. 修改软件源1. SSH登录树莓派;
2. 编辑sources.list; pi@raspberrypi:~$ sudo nano /etc/apt/sources.list
3. 在deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi前面加上 # 号,把这一条源地址注释掉;并在上一行空白处添加以下两条,每条一行;
[*]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
4. 编辑完毕,同时按下 Ctrl+O,点击 回车保存,再同时按下 Ctrl+X退出nano编辑器,返回 pi@raspberrypi:~$ 界面。
5. 更新软件源 pi@raspberrypi:~$ sudo apt-get update
三. 安装HomeBridge的依赖组件1. 安装node.js pi@raspberrypi:~$ curl -sLhttps://deb.nodesource.com/setup_7.x | sudo -E bash - pi@raspberrypi:~$ sudo apt-get install -y nodejs 2. 安装Avahi和相关依赖软件包 pi@raspberrypi:~$ sudo apt-get install -y build-essential pi@raspberrypi:~$ sudo apt-get install -ylibavahi-compat-libdnssd-dev pi@raspberrypi:~$ sudo npm install -g --unsafe-permhomebridge
四. 安装相关插件1. 安装MiAqara插件,支持米家二代多功能网关及子设备(米家智能插座-ZigBee版、米家温湿度传感器、米家无线开关); pi@raspberrypi:~$ sudo npm install -g homebridge-mi-aqara2. 安装Yeelight插件,支持Yeelight LED智能灯泡-白光版和米家LED智能台灯; pi@raspberrypi:~$ sudo npm install -g homebridge-yeelight
注:本次教程只涉及这两个插件,下次教程会有基础版插座、米家插线板、扫地机器人和小白摄像机。
五. 获取小米多功能网关的sid和password1. 找一台Android手机(不建议使用iPhone来获取,出故障的概率比较大);2. 下载 米家 App,打开并登陆你的小米账号;3. 找到多功能网关图标,点击图标下方的文字,进入多功能网关操作界面,点击左上角的…图标;4. 点击进入 关于;5. 疯狂点击底部的 插件版本,紧接着会出现 局域网通信协议 和 网关信息 ;6. 点击 网关信息,找到图示位置,抄写下来,这是网关的mac地址;7. 点击 加密,进入 局域网通信协议,在 局域网通信协议 后面 勾选,此时会出现一组密码,点击右边的 刷新(建议多刷新几遍),记下 密码(注意:如果密码是小写,就记录小写,如果是大写,就记录大写,必须区分大小写!)
六. 创建Config.json1. 在/home/pi/路径下新建.homebridge文件夹; pi@raspberrypi:~$ sudo mkdir .homebridge
2. 在/home/pi/.homebridge/路径下创建config.json文件,并编辑。pi@raspberrypi:~$ sudo nano .homebridge/config.json
{ "bridge": { "name": "Homebridge", "username": "EE:22:11:EE:06:11", "port": 51826, "pin": “000-00-001” }, "platforms": [ { "platform": "MiAqaraPlatform", "sid": ["你的二代网关的mac地址,去掉:号,改成小写"], "password": ["你的二代网关的局域网通信协议的密码"] }, { "platform": "yeelight", "name": "yeelight" }}
Example:
3. 编辑完毕,同时按下 Ctrl+O,点击 回车保存,再同时按下 Ctrl+X退出nano编辑器,返回 pi@raspberrypi:~$ 界面;
七. 启动Homebridge1. 启动Homebridge; pi@raspberrypi:~$ homebridge -D2. 如果出现MiAqaraPlatform start success和下面的Homebridge的代码(000-00-001),即启动成功。
八. 设置Homebridge开机自启动
1. Homebridge启动成功后,一旦我们退出SSH或者重启树莓派,Homebridge服务就会关闭,所以我们需要把Homebridge设置为开机自启动;
2. 解锁root权限,修改root密码; pi@raspberrypi:~$ sudo passwd root Enter new UNIX password: 输入你想设置的密码 Retype new UNIX password: 再次输入你想设置的密码 pi@raspberrypi:~$ sudo passwd --unlock root
3. 这里会提示passwd: password expiry information changed. 原因是新版的系统默认禁止 ssh 登录 root 账户,我们需要修改一下配置文件; pi@raspberrypi:~$ sudo nano /etc/ssh/sshd_config4. 用 Ctrl + W 搜索 PermitRootLogin,找到之后将PermitRootLogin without-password改成PermitRootLogin yes,然后按 Ctrl+O 保存,回车之后,按 Ctrl+X 退出编辑器;
5. 在/etc/init.d/路径下创建homebridge自启动脚本; pi@raspberrypi:~$sudo nano /etc/init.d/homebridge6. 在nano下编辑homebridge自启动脚本;#!/bin/sh### BEGIN INIT INFO# Provides: homebridge# Required-Start: $network $remote_fs $syslog# Required-Stop: $remote_fs $syslog# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: Start daemon at boot time# Description: Enable service provided by daemon.### END INIT INFOdir="/home/pi"cmd="DEBUG=* /usr/local/bin/homebridge"user="pi"name=`basename $0`pid_file="/var/run/$name.pid"stdout_log="/var/log/$name.log"stderr_log="/var/log/$name.err"get_pid() { cat "$pid_file"}is_running() { [ -f "$pid_file" ] && ps -p `get_pid` > /dev/null 2>&1}case "$1" in start) if is_running; then echo "Already started" else echo "Starting $name" cd "$dir" if [ -z "$user" ]; then sudo $cmd >> "$stdout_log" 2>> "$stderr_log" & else sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" & fi echo $! > "$pid_file" if ! is_running; then echo "Unable to start, see $stdout_log and $stderr_log" exit 1 fi fi ;; stop) if is_running; then echo -n "Stopping $name.." kill `get_pid` for i in 1 2 3 4 5 6 7 8 9 10 # for i in `seq 10` do if ! is_running; then break fi echo -n "." sleep 1 done echo if is_running; then echo "Not stopped; may still be shutting down or shutdown may have failed" exit 1 else echo "Stopped" if [ -f "$pid_file" ]; then rm "$pid_file" fi fi else echo "Not running" fi ;; restart) $0 stop if is_running; then echo "Unable to stop, will not attempt to start" exit 1 fi $0 start ;; status) if is_running; then echo "Running" else echo "Stopped" exit 1 fi ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;;esacexit 0
7. 编辑完后,按 Ctrl+O 保存,回车之后,按 Ctrl+X 退出编辑器;
8. 赋予/etc/init.d/homebridge脚本 755 权限; pi@raspberrypi:~$ sudo chmod 755 /etc/init.d/homebridge
9. 添加自启动管理; pi@raspberrypi:~$ sudo update-rc.d homebridge defaults
10. 安装chkconfig; pi@raspberrypi:~$ sudo apt-get install chkconfig
11. 将homebridge脚本添加到chkconfig; pi@raspberrypi:~$ sudo chkconfig --add homebridge
12.重新加载服务; pi@raspberrypi:~$ sudo systemctl daemon-reload
13. 重启树莓派,测试Homebridge是否可以自启动。 pi@raspberrypi:~$ sudo reboot
九. iPhone&iPad添加设备1. iPhone&iPad在App Store上搜索 家庭 并下载安装;2. 打开家庭App,点击右上角的 + 号,选择添加配件,点击 没有代码或无法扫描 ;3. 界面会显示homebridge的图标,输入你的homekit代码,添加完成。详见:iPhone端操作视频
非常感谢,详细的原创教程,支持楼主! Jones 发表于 2017-9-7 12:17
非常感谢,详细的原创教程,支持楼主!
:handshake 说的很细致,感谢分享 很详细,谢谢楼主分享 虽然我还没购入小米产品,不过还是支持您的分享,谢谢您:lol very nice, support!! 好教程,收藏了!~ 好教程。必须支持 楼主的教程很详细