HomeKit初体验

对话Siri

2017年香港光顾苹果旗舰店时,看到了一些第三方Homekit产品,于是萌生了折腾Homekit的想法。

折腾时所用的硬件,可以根据个人需要自行更改:

  • 树莓派 3 代 B 型(包含 Micor SD 卡)
  • YeeLight 智能灯泡
  • E27螺口灯座
  • 网线、MicroUSB线
  • MacMini 电脑 ( Windows PC、Ubuntu、Linux 均可)

树莓派

1.安装Raspbian系统

系统镜像采用 2016-09-26-Hassbian-Bluetooth.img
下载地址 http://pan.baidu.com/s/1qYs6hn2

Mac制作命令

1
2
3
4
df -h
diskutil unmount /dev/disk3s1
dd bs=4m if=2016-09-26-Hassbian-Bluetooth.img of=/dev/rdisk3
diskutil unmountdisk /dev/disk3

可参考 http://cuiqingwei.github.io/2016/02/15/2016-02-15-Raspberry-Pi/

2.登录Raspberry

安装完成之后,用网线连接好树莓派和路由器,打开电脑的终端,用 ssh 登录树莓派。

1
2
3
ssh pi@raspberrypi.local
或者
ssh pi@ip

ip可以在路由器的运行网页查看到,当然,Windows系统可以通过 MyLanViewer Network/IP Scanner 扫描等到目标地址。
之后终端会要求输入密码,输入 raspberry 回车即可。输入密码的途中终端不会显示任何字符,只需要正常输入即可。

3.更新软件源

登录树莓派之后,先升级软件源,在终端下输入以下代码,等待一段时间即可。

1
2
sudo apt-get update
sudo apt-get upgrade

配置选项

1
sudo raspi-config

change_locale – 更改语言设置。在Locales to be generated: 中,选择en_US.UTF-8和zh_CN.UTF-8。在Default locale for the system environment:中,选择en_US.UTF-8(等启动完机器,装完中文字体,再改回zh_CN.UTF-8,否则第一次启动会出现方块)。

可参考 http://blog.csdn.net/xdw1985829/article/details/38816375

打开 Yeelight 的极客模式

在 App Store 下载官方的 Yeelight 应用,先连接上灯泡.然后点右上角的三根横杠,在下方打开极客模式。

安装 Node.js

回到终端,我们继续来安装 Node.js 。从版本 4.0.0 开始,Node.js 默认支持基于 ARM 的平台,我们只需要输入相关代码即可。

依次在终端输入以下命令:

1
2
3
4
wget https://nodejs.org/dist/v4.3.2/node-v4.3.2-linux-armv6l.tar.gz
tar -xvf node-v4.3.2-linux-armv6l.tar.gz
cd node-v4.3.2-linux-armv6l
sudo cp -R * /usr/local/

完成之后,输入 node -v 检查一下是否安装完成,如果显示 v4.3.2 ,则表示 Node.js 安装成功。
安装 Avahi 和相关依赖软件包

在终端输入以下命令即可:

1
sudo apt-get install libavahi-compat-libdnssd-dev

安装 HomeBridge 和相关依赖软件包

依次在终端输入以下命令:

1
2
3
4
5
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

添加 Yeelight 配置文件

输入以下命令:

1
sudo npm install -g homebridge-yeelight

等待命令运行结束后,输入

1
2
cd /home/pi/.homebridge/
vi config.json

点击键盘的 i 键,终端左下角出现 – INSERT – ,如下图所示。

将以下代码复制到终端:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"bridge": {
"name": "IoTBridge",
"username": "28:6C:07:10:BF:16",
"port": 51825,
"pin": "031-45-154"
},

"platforms": [
{
"platform" : "yeelight",
"name" : "yeelight"
}
]
}

粘贴完成后,按Esc键,输入 :wq 然后回车。

之后,便可以运行 HomeBridge :

1
homebridge

这一步完成之后,HomeBridge 就安装完毕并且开始运行, YeeLight 彩光灯也成功接入 Apple HomeKit ,打开 iOS 10 自带的家庭 App, 点击添加配件即可。会有两个配件,第一个是 IoTBridge ,这是一个桥接器;还有一个才是我们要控制的灯泡。

现在,你就可以享受 「嘿 Siri ,帮我开个灯」 了。
在树莓派启动后自动运行 HomeBridge 服务

最后一步,把 HomeBridge 服务加入到树莓派的系统服务里。

方法一

首先我们要开启 root 账户,首先在终端输入:

1
sudo passwd root

然后会提示你设置 root 账户密码,第一次输入之后还要确认一次,一样两次输入不会有任何字符显示。输入完毕之后,启用 root 账户,输入以下命令:

1
sudo passwd --unlock root

然后会提示报错: passwd: password expiry information changed. ,原因是新版的系统默认禁止 ssh 登录 root 账户,我们需要修改一下配置文件。在终端输入以下命令:

1
sudo nano /etc/ssh/sshd_config

Ctrl + W 搜索「 PermitRootLogin 」,找到之后将 PermitRootLogin without-password 改成 PermitRootLogin yes ,然后按 Ctrl + O 保存,回车之后退出编辑器。

GitHub 提供了三种让树莓派启动后自动运行 HomeBridge 服务的方法,我选择的是 init.d 的方式。打开 这个网页 ,将文件下载到本地,然后将 template 重命名为 homebridge (或者任何你想要的名字) ,放到树莓派目录 /etc/init.d 下。注意这里一定要

用 root 账户 ssh 登录Raspberry。

1
2
cd /etc/init.d
vi homebridge

点击键盘的 i 键,终端左下角出现 – INSERT – ,如下图所示。

将以下代码复制到终端:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/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"

完成后保存,然后回到终端,依次输入以下代码:

1
2
sudo chmod 755 /etc/init.d/homebridge
sudo update-rc.d homebridge defaults

现在,你可以在终端输入 HomeBridge ,等待服务运行之后关掉终端,看是否可以继续使用家庭 App 开关灯泡;或者重启一下树莓派,看看 HomeBridge 服务是否正常运行。

方法二

将homebridge设置成随系统启动

1
2
3
4
5
6
7
8
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

将下面的内容复制粘贴进去

1
2
3
4
5
6
7
# 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,回车,保存退出

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

将下面的内容复制粘贴进去

1
2
3
4
5
6
7
8
9
10
11
12
13
[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,回车,保存退出

1
2
3
4
5
6
cd /
sudo systemctl daemon-reload
sudo systemctl enable homebridge
sudo systemctl start homebridge
sudo systemctl status homebridge
sudo reboot ####重启树莓派####

如果以上均成功运行,那么恭喜你,一切都大功告成。

文章目录
  1. 1. 对话Siri
  2. 2. 树莓派
    1. 2.1. 1.安装Raspbian系统
    2. 2.2. 2.登录Raspberry
    3. 2.3. 3.更新软件源
  3. 3. 配置选项
  4. 4. 打开 Yeelight 的极客模式
  5. 5. 安装 Node.js
  6. 6. 最后一步,把 HomeBridge 服务加入到树莓派的系统服务里。
    1. 6.1. 方法一
    2. 6.2. 方法二