树莓派安装homekit

找完实习做毕设,这学期真是累成狗,趁着闲下来几天鼓捣了一下落灰已久的树莓派。研究了利用树莓派作为家里面智能硬件的网关,利用IOS自带的homekit进行控制。简单记录下过程。

一、前期准备

1、镜像选择

这次没有选择官方的镜像,而是另一个镜像2016-09-26-Hassbian-Bluetooth。

下载地址 链接:http://pan.baidu.com/s/1miJTjuS 密码:oxvw

烧写过程都是一样的,上电以后,树莓派会自动安装最新版本的HomeAssitant软件。该软件会在树莓派的8123端口开一个http服务器,在我这里树莓派的IP地址是192.168.1.102,所以在浏览器输出192.168.1.102:8123,最开始的时候会无法访问,等几分钟后会显示出一个网站,说明更新已经完成。

1

2、配置树莓派环境

  1. 修改密码:系统默认的用户名和密码为:pi和raspberry,输入命令:

    1
    sudo raspi-config
  2. 修改时间:这一步很重要,如果时间不正确,在下面的git或者npm命令之后会出现很多奇怪的问题

    1
    sudo date  --s="2017-04-27 10:34:00"
  3. 更新软件源:

    1
    sudo nano /etc/apt/sources.list

    将第一行注释掉,并将下面的代码复制到最后,换成阿里云的源

    1
    2
    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

    2

    最后在更新软件:

    1
    sudo apt-get update
  4. 安装基础软件:xrdp,用于远程桌面连接

    1
    sudo apt-get install xrdp

二、homebridge安装

接下来就是homebridge的安装了。

1、安装基础组件

安装“Samba,Screen和Git”这三个系统组件,接下来的安装过程中我们会用到。

1
sudo apt-get install -y samba screen git

3

2、安装nodejs

如上图所示输入命令:

1
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -

4

安装nodejs,如上图所示输入命令:

1
sudo apt-get install -y nodejs

5

然后再安装依赖包libavahi,如上图所示输入命令:

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

至此就可以使用node npm等命令了。

6

3、安装homebridge

输入命令:

1
sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp

与上面不同的是使用npm进行安装,在最开始会有一个光标在那一直转,时间比较长耐心等待就可以了。

7

如上图所示输入下面四行命令:

1
2
3
4
5
cd /usr/lib/node_modules/homebridge/
sudo npm install --unsafe-perm bignum#这个很快就可以安装完
cd /usr/lib/node_modules/hap-nodejs/node_modules/mdns
sudo node-gyp BUILDTYPE=Release rebuild#这个时间会长一点
cd /#最后返回根目录

完成之后如下图:

8

4、安装HomeBridge-HomeAssitant

输入命令:

1
sudo npm install -g homebridge-homeassistant

9

现在就可以运行homebridge啦:

1
homebridge

10

如图可以看见黄色字体提示缺少config.json文件,也就是homebridge的配置文件。

三、homebridge插件的安装

homebridge是一个桥接ios与智能硬件的平台,想要控制智能硬件,还必须要有相应的插件,在github上面有非常多的插件,而且可以通过npm进行安装,他们的明明都是homebridge-XXX。

比如我想加入一个智能硬件用来控制树莓派的GPIO,就可以在npm上面搜索,可以发现有很多相关的插件。我基本尝试了所有的插件,也都遇到了各种问题,最后选定了homebridge-gpio-wpi2这个插件。github地址为https://github.com/rsg98/homebridge-gpio-wpi2

下面以这个插件为例继续下一步的操作。

1、安装依赖包与插件

1
2
sudo apt-get install wiringpi#wiringpi是用于控制树莓派GPIO的库
sudo npm install -g homebridge-gpio-wpi2

11

2、修改配置文件

配置文件最开始是不存在的,需要新建

1
sudo nano /home/pi/.homebridge/config.json

把下面内容复制进去

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:30",
"port": 51826,
"pin": "133-45-678"
},


"platforms": [{
"platform" : "WiringPiPlatform",
"name" : "Pi GPIO (WiringPi)",
"overrideCache" : "true",
"autoExport" : "true",
"gpiopins" : [{
"name" : "灯",
"pin" : 27,
"enabled" : "true",
"mode" : "out",
"pull" : "down",
"inverted" : "false",
"duration" : 0,
"polling" : "true"
},{
"name" : "门",
"pin" : 22,
"enabled" : "true",
"mode" : "in",
"pull" : "off",
"inverted" : "false",
"duration" : 0
}]
}]
}

再次打开homebridge

1
homebridge

12

运行成功,保证手机与树莓派在同一网段内,即可在家庭应用中添加设备并且可以控制。

13

此时打开siri,就可以进行语音控制啦。

四、后记

  1. 控制io只是实现了最基础的功能,npm上面有很多插件等着我们去探索,不过插件也是良莠不齐会出现各种问题,要学会去github上面看参考文档。
  2. 上面用到的插件是我试过的唯一好用的pgio的插件,具体的配置参数github主页上有非常详细的说明。
  3. homebridge的插件开发文档还很少,后期可以尝试着自己开发插件。

五、参考地址

http://bbs.feng.com/forum.php?mod=viewthread&tid=10857822

https://github.com/nfarina/homebridge

https://github.com/rsg98/homebridge-gpio-wpi2

https://www.npmjs.com/