[上期回顾]
上期主讲内容:
1. 在树莓派上安装Raspbian Jessie操作系统;
2. 通过SSH和VNC远程登录树莓派;
3. 实现树莓派的无线连接。
详见:
本期主要讲解在树莓派上搭建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
4. 编辑完毕,同时按下 Ctrl+O,点击 回车保存,再同时按下 Ctrl+X退出nano编辑器,返回 pi@raspberrypi:~$ 界面。
5. 更新软件源
pi@raspberrypi:~$ sudo apt-get update
三. 安装HomeBridge的依赖组件
1. 安装node.js
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-aqara
2. 安装Yeelight插件,支持Yeelight LED智能灯泡-白光版和米家LED智能台灯;
pi@raspberrypi:~$ sudo npm install -g homebridge-yeelight
注:本次教程只涉及这两个插件,下次教程会有基础版插座、米家插线板、扫地机器人和小白摄像机。
五. 获取小米多功能网关的sid和password
1. 找一台Android手机(不建议使用iPhone来获取,出故障的概率比较大);
2. 下载 米家 App,打开并登陆你的小米账号;
3. 找到多功能网关图标,点击图标下方的文字,进入多功能网关操作界面,点击左上角的…图标;
4. 点击进入 关于;
5. 疯狂点击底部的 插件版本,紧接着会出现 局域网通信协议 和 网关信息 ;
6. 点击 网关信息,找到图示位置,抄写下来,这是网关的mac地址;
7. 点击 加密,进入 局域网通信协议,在 局域网通信协议 后面 勾选,此时会出现一组密码,点击右边的 刷新(建议多刷新几遍),记下 密码(注意:如果密码是小写,就记录小写,如果是大写,就记录大写,必须区分大小写!)
六. 创建Config.json
1. 在/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:~$ 界面;
七. 启动Homebridge
1. 启动Homebridge;
pi@raspberrypi:~$ homebridge -D
2. 如果出现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_config
4. 用 Ctrl + W 搜索 PermitRootLogin,找到之后将PermitRootLogin without-password改成PermitRootLogin yes,然后按 Ctrl+O 保存,回车之后,按 Ctrl+X 退出编辑器;
5. 在/etc/init.d/路径下创建homebridge自启动脚本;
pi@raspberrypi:~$ sudo nano /etc/init.d/homebridge
6. 在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 INFO
dir="/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
;;
esac
exit 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代码,添加完成。
详见: