『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 25224|回复: 44

RaspberryPi折腾记(贰)——搭建HomeBridge,桥接Apple HomeKit

  [复制链接]

3

主题

20

帖子

239

积分

论坛分享达人

积分
239
金钱
219
HASS币
0
发表于 2017-9-7 10:21:51 | 显示全部楼层 |阅读模式
本帖最后由 cnmb11 于 2017-9-7 11:33 编辑

[上期回顾]
上期主讲内容:
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登录树莓派;
01.png

2. 编辑sources.list
    pi@raspberrypi:~$ sudo nano /etc/apt/sources.list
02.png

3. 在deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi前面加上 # 号,把这一条源地址注释掉;并在上一行空白处添加以下两条,每条一行;  
03.png

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-aqara
2. 安装Yeelight插件,支持Yeelight LED智能灯泡-白光版和米家LED智能台灯;
      pi@raspberrypi:~$ sudo npm install -g homebridge-yeelight

注:本次教程只涉及这两个插件,下次教程会有基础版插座、米家插线板、扫地机器人和小白摄像机。

五.    获取小米多功能网关的sid和password
1. 找一台Android手机(不建议使用iPhone来获取,出故障的概率比较大);
2. 下载 米家 App,打开并登陆你的小米账号;
3. 找到多功能网关图标,点击图标下方的文字,进入多功能网关操作界面,点击左上角的…图标;
04.png
4. 点击进入 关于
05.png
5. 疯狂点击底部的 插件版本,紧接着会出现 局域网通信协议网关信息
06.png
6. 点击 网关信息,找到图示位置,抄写下来,这是网关的mac地址;
07.png
7. 点击 加密,进入 局域网通信协议,在 局域网通信协议 后面 勾选,此时会出现一组密码,点击右边的 刷新(建议多刷新几遍),记下 密码注意:如果密码是小写,就记录小写,如果是大写,就记录大写,必须区分大小写!
08.png

六.    创建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:
09.jpg

3. 编辑完毕,同时按下 Ctrl+O,点击 回车保存,再同时按下 Ctrl+X退出nano编辑器,返回 pi@raspberrypi:~$ 界面;

七.    启动Homebridge
1. 启动Homebridge;
    pi@raspberrypi:~$ homebridge -D
2. 如果出现MiAqaraPlatform start success和下面的Homebridge的代码(000-00-001),即启动成功。

10.png

八.    设置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代码,添加完成。
详见:

评分

参与人数 1金钱 +18 收起 理由
+ 18 666!

查看全部评分

回复

使用道具 举报

123

主题

4626

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16015
金钱
11304
HASS币
45
发表于 2017-9-7 12:17:00 | 显示全部楼层
非常感谢,详细的原创教程,支持楼主!
回复

使用道具 举报

3

主题

20

帖子

239

积分

论坛分享达人

积分
239
金钱
219
HASS币
0
 楼主| 发表于 2017-9-7 13:55:32 | 显示全部楼层
Jones 发表于 2017-9-7 12:17
非常感谢,详细的原创教程,支持楼主!

回复

使用道具 举报

1

主题

105

帖子

416

积分

中级会员

Rank: 3Rank: 3

积分
416
金钱
311
HASS币
0
发表于 2017-9-9 16:59:13 | 显示全部楼层
说的很细致,感谢分享
回复

使用道具 举报

7

主题

207

帖子

1027

积分

金牌会员

Rank: 6Rank: 6

积分
1027
金钱
820
HASS币
20
发表于 2017-9-11 04:08:17 | 显示全部楼层
很详细,谢谢楼主分享
回复

使用道具 举报

5

主题

91

帖子

375

积分

中级会员

Rank: 3Rank: 3

积分
375
金钱
284
HASS币
0
发表于 2017-9-11 10:51:41 | 显示全部楼层
虽然我还没购入小米产品,不过还是支持您的分享,谢谢您
回复

使用道具 举报

68

主题

302

帖子

1964

积分

金牌会员

Rank: 6Rank: 6

积分
1964
金钱
1662
HASS币
0
发表于 2017-9-11 13:20:17 | 显示全部楼层
very nice, support!!
回复

使用道具 举报

0

主题

36

帖子

296

积分

中级会员

Rank: 3Rank: 3

积分
296
金钱
260
HASS币
0
发表于 2017-9-11 16:08:36 | 显示全部楼层
好教程,收藏了!~
回复

使用道具 举报

8

主题

174

帖子

626

积分

高级会员

Rank: 4

积分
626
金钱
452
HASS币
0

最佳新人

发表于 2017-9-12 06:01:04 | 显示全部楼层
好教程。必须支持
回复

使用道具 举报

0

主题

27

帖子

107

积分

注册会员

Rank: 2

积分
107
金钱
80
HASS币
0
发表于 2017-9-14 14:51:11 | 显示全部楼层
楼主的教程很详细
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-27 01:53 , Processed in 0.067286 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表