Post

HomeBridge|树莓派串接米家家电到HomeKit,打造智慧居家WFH环境

透过树莓派架设HomeBridge主机,将米家智慧家电无缝接入Apple HomeKit,解决多APP切换与反应慢问题,达成iPhone一指控管家电、提升WFH居家舒适度与效率。

HomeBridge|树莓派串接米家家电到HomeKit,打造智慧居家WFH环境

Click here to view the English version of this article.

點擊這裡查看本文章正體中文版本。

基于 SEO 考量,本文标题与描述经 AI 调整,原始版本请参考内文。


打造舒适的 WFH 智慧居家环境,控制家电尽在指尖

示范使用树莓派当 HomeBridge 主机,将所有米家家电串上 HomeKit

photo by [picjumbo.com](https://www.pexels.com/zh-tw/@picjumbo-com-55570?utm_content=attributionCopyText&utm_medium=referral&utm_source=pexels){:target="_blank"}

photo by picjumbo.com

关于

因为疫情的关系,在家时间变长了;尤其是要 Work From Home 的话,家里的电器设备最好都能在 APP 上智能控制,就不用一下子离开去开灯、一下子去开电锅…等等,很浪费时间。

之前写过一篇「 智慧家居初体验 — Apple HomeKit & 小米米家 ,初试使用 HomeBridge 将小米家电串上 HomeKit,实证理论上可行,但实际应用提到的不多,今天这篇算是综合前篇的进阶完整版,包含选择树莓派当主机的话该怎么设定,从头到尾手把手教学。

起因是最近换了 iPhone 11 Pro 能支援 iOS ≥ 13 捷径的 NFC 自动化功能,就是手机感应到 NFC Tag 就能执行相应的捷径;虽然 可以直接拿旧的悠游卡当 NFC Tag ,但太占空间也没那么多张卡;我去光华问了一圈都没有再卖 NFC Tag 感应贴纸,最后才在虾皮找到 $50 一张,买了 5 张来玩玩,卖家还很贴心的帮我用颜色区隔开。

*NFC 自动化功能是绑机型的,只有 iPhone XS/XS max/XR/11/11pro/11pro max 支援这个功能,之前拿 iPhone 8 完全没 NFC这选项。

稍微把玩了一下发现有个问题,就是执行米家 APP 的捷径时一定要打开「执行时显示」选项(否则不会真的执行), 感应到 Tag 要执行时还要解锁 iPhone 、执行时也会开启捷径,无法在后台直接感应执行 ;另外实测了如果捷径是原生苹果的服务(如:HomeKit 的家电)就能在背景&免解锁下直接执行;而且 homeKit 的反应速度、稳定度都比米家好很多。

这在爽度上有很大的差别,所以就又深入研究了将米家智慧家居系列的产品都接上 HomeKit,有支援 HomeKit 的就直接绑定本篇不赘述;不支援的就照此文教学也一起绑定上去!

我的米家智慧家居项目

  1. 米家智慧摄影机 云台版 1080P

  2. 米家直流变频电风扇

  3. 米家 LED 智慧台灯

  4. 小米空气净化器 3

  5. 米家台灯 Pro(本身就支援 HomeKit)

  6. 米家 LED 智慧灯泡 彩光版 * 2 (本身就支援 HomeKit)

运作原理

做了一张简易的参考图,如果智慧家电有支援 HomeKit 就直接串上去、 不支援的智慧家电透过架设「HomeBridge」服务主机(要一直开机)也能桥接串上去 ;在同一个网路环境下(EX: 同个 WiFi)iPhone 可以自由地控制 HomeKit 中的所有家电项目;但若在外部网路,如 4G 行动网路情况下,就需要有一台 Apple TV/HomePod 或 iPad 当家庭中枢主机,在家待命(一样要一直开著) 才能在外面控制家中的 HomeKit,若无家庭中枢在外面打开家庭 APP 会显示「 无回应 」。

*若是米家的话,会经由米家伺服器控制家里的电器,要说的话 会有安全问题,资料都要经过大陆

需求环境

所以一共有两个设备要一直开著待命,一台是 Apple TV/HomePod 或 iPad 家庭中枢主机;这部分目前无解,无法用其他方式模拟,只能想办法取得这些设备,如果没有就只能在家使用 HomeKit

另一台只要是能 24 hr 待命的电脑(如您的 iMac/MacBook)、闲置的主机(旧的 iMac、Mac Mini)或树莓派都可以。

*windows 系列未尝试,不过应该也可以!

亦或是你想玩玩也可以直接用目前的电脑来用(可搭配 前篇文章 一起服用)。

本文将以树莓派(Raspberry Pi 3B)、使用 Macbook Pro (MacOS 10.15.4) 操作下作示范,从设定树莓派的环境从头开始讲;若不是使用树莓派的朋友可以直接略过跳到 HomeBridge 串接 HomeKit 的部分(这里都一样)。

Raspberry Pi 3B (special thanks to [Lu Xun Huang](https://medium.com/u/b32ce1b681f8){:target="_blank"} )

Raspberry Pi 3B (special thanks to Lu Xun Huang )

若是使用树莓派还需要一张 micro SD 记忆卡(不用太大,我用 8G)、读卡机、网路线(设定用,之后可连 WiFi);还有树莓派需要的软体:

  1. 树莓派桌面版作业系统(方便大家入门,使用 GUI 版)

  2. Etcher 烧录软体

树莓派环境设定

烧录作业系统

下载完需求的两个软体后,我们先将记忆卡放入读卡机插上电脑;打开 Etcher 程式(balenaEtcher)

第一项选择刚下载的树莓派作业系统「xxxx.img」、第二项选择你的记忆卡装置,然后点击「Flash!」开始烧录!

第一项选择刚下载的树莓派作业系统「xxxx.img」、第二项选择你的记忆卡装置,然后点击「Flash!」开始烧录!

此时会跳出要你输入 **MacOS 的密码** ,输入后按「Ok」继续。

此时会跳出要你输入 MacOS 的密码 ,输入后按「Ok」继续。

烧录中…请稍候….

烧录中…请稍候….

验证中…请稍候….

验证中…请稍候….

烧录成功!

烧录成功!

*若有出现红色的 Error ,可尝试将记忆卡格式化后再次烧录。

重新将读卡机接上电脑,并在记忆卡内容目录下建立一个空的 「ssh」 档案( 或点此下载 )内容空白、不用副档名,就是个「ssh」档;让我们可以用 Terminal 连线进树莓派。

ssh

ssh

设定树莓派

将记忆卡退出,插入树莓派上并接上网路线,然后通电开机;并让 MacBook 跟树莓派在同个网路环境下。

查看树莓派分配到的 IP 位置

得到 树莓派分配到的 IP 位置是: 192.168.0.110 (本文所有出现的 IP 请自行更换成你查到的结果)

建议将树莓派设定为指定/保留 IP,否则开机重连后 IP 位置可能会变动,要重新查。

使用 SSH 连入树莓派进行操作

打开 Terminal 输入:

1
ssh pi@你的树莓派IP位址

有询问就输入 yes ,密码输入预设密码: raspberry

**连线成功!**

连线成功!

*若有出现 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED 之类的错误讯息就先去 /Users/xxxx/.ssh/known_hosts 用文字编辑器打开清空即可

树莓派基本工具安装、设定

  1. 输入以下指令安装 Vim 编辑器:
1
sudo apt-get install vim

2.解决以下语系警告:

1
2
3
4
5
6
7
8
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_LANG = "zh_TW.UTF-8",
    LANG = "zh_TW.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

输入

1
vi .bashrc

按「Enter」进入

按「 i 」进入编辑模式

移动到文件最底部,加上一行「 export LC_ALL=C

按「Esc」输入「 :wq! 」储存退出。

再下「 source .bashrc 」更新即可。

3.安装 nvm 管理 nodejs/npm:

1
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh \\| bash

4.用 nvm 安装最新版 nodejs

nvm install 12.16.2

*这边选择安装「12.16.2」版本

5.确认环境安装完成:

输入以下指令

npm -v

node -v

确认

没错误讯息即可!

没错误讯息即可!

6.建立 nodejs 连结

输入以下指令

1
which node

取得 nodejs 所在路径资讯

再输入

1
sudo ln -fs 这边贴上你 which node 查到的路径(不用"双引号) /usr/local/bin/node

建立连结

设定完成!

启用树莓派 VNC 远端桌面功能

这边我们虽然是装 GUI 版,你当然可以直接将树莓派接上键盘、HDMI 当一般电脑使用,但为了方便我们将使用远端桌面的方式控制树莓派。

输入:

1
sudo raspi-config

进入设定:

选择第五项「 **Interfacing Options** 」

选择第五项「 Interfacing Options

选择第三项「 **P3 VNC** 」

选择第三项「 P3 VNC

使用 「 **←** 」选择「 **Yes** 」打开

使用 「 」选择「 Yes 」打开

**VNC 远端桌面功能启用成功!**

VNC 远端桌面功能启用成功!

使用 「 **→** 」直接切到「 **Finish** 」退出设定介面。

使用 「 」直接切到「 Finish 」退出设定介面。

将 VNC 远端桌面服务加入到开机自动启动项

我们希望 VNC 远端桌面服务是树莓派开机后就自动启用的。

输入

1
sudo vim /etc/init.d/vncserver

按「Enter」进入

按「 i 」进入编辑模式

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
35
#!/bin/sh
### BEGIN INIT INFO
# Provides:          vncserver
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop vncserver
### END INIT INFO

# More details see:
# http://www.penguintutor.com/linux/vnc

### Customize this entry
# Set the USER variable to the name of the user to start vncserver under
export USER='pi'
### End customization required

eval cd ~$USER

case "$1" in
  start)
    su $USER -c '/usr/bin/vncserver -depth 16 -geometry 1024x768 :1'
    echo "Starting VNC server for $USER "
    ;;
  stop)
    su $USER -c '/usr/bin/vncserver -kill :1'
    echo "vncserver stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/vncserver {start\\|stop}"
    exit 1
    ;;
esac
exit 0

「Commend」+「C」、「Commend」+「V」复制贴上以上内容进去,按「Esc」输入「:wq!」储存退出。

再输入:

1
sudo chmod 755 /etc/init.d/vncserver

修改文件权限。

再输入:

1
sudo update-rc.d vncserver defaults

加入到开机自动启动项目。

最后输入:

1
sudo reboot

重新启动树莓派。

*重新启动完成后,再照之前的步骤重新使用 ssh 连线进来。

使用 VNC Client 进行连线:

这边使用的是 Chrome 的 APP 「 VNC® Viewer for Google Chrome™ 」,安装完启动后,输入 树莓派 IP 位置:1 ,请注意后面的 Port:1 要加上!

*我使用 Mac 自带的 VNC:// 无法连线,不确定原因。

点选「 **Connect** 」。

点选「 Connect 」。

点选「 **OK** 」。

点选「 OK 」。

**输入登入帐号密码** ,同 SSH 连线,帐号 `pi` 预设密码 `raspberry` 。

输入登入帐号密码 ,同 SSH 连线,帐号 pi 预设密码 raspberry

**成功连入!**

成功连入!

完成树莓派初始化设定:

再来都是图形介面!很容易!

设定语言、地区、时区。

设定语言、地区、时区。

更改树莓派预设密码,输入你要设定的密码。

更改树莓派预设密码,输入你要设定的密码。

直接下一步「 **Next** 」。

直接下一步「 Next 」。

设定使用 WiFi 连线,之后就不用在插线了。

设定使用 WiFi 连线,之后就不用在插线了。

*但请注意树莓派 IP位置可能会改变,要再进路由器查询

是否要更新当前作业系统,不赶时间就选「 **Next** 」更新吧!

是否要更新当前作业系统,不赶时间就选「 Next 」更新吧!

*更新大约需要20~30分钟(依照你的网路速度)

更新完成后,点击「 **Restart** 」重新启动。

更新完成后,点击「 Restart 」重新启动。

树莓派环境设定完成!

HomeBridge 安装

正式进入重头戏,安装使用 HomeBridge。

使用Terminal ssh 连线进树莓派或直接使用 VNC 远端桌面里的 Terminal。

输入:

1
npm -g install homebridge - unsafe-perm

^( 不加 sudo )

安装 HomeBridge

安装完成!

建立/修改设定档(config.json):

为了方便编辑,使用 VNC 远端桌面连线至树莓派 (也可直接用指令)

点左上角打开「 档案管理程式 」-> 进入「 /home/pi/.homebridge

若没看到「config.json」档案则在空白处点右键「 New File 」-> 输入档案名称「 config.json

在「 config.json 」上按右键用「 Text Editor 」打开

贴上以下基础设定内容:

1
2
3
4
5
6
7
{
   "bridge": {
  "name": "Homebridge",
  "username": "CC:22:3D:E3:CE:30",
  "port": 51826,
  "pin": "123-45-568"
}

内容不用特别更改,直接照搬即可!

记得存档!

完成!

绑定 HomeBridge 到 Homekit

输入:

1
homebridge start

^( 不加 sudo )

启用

*若出现 Error: Service name is already in use on the network / port被占用之类的错误可尝试砍掉服务、改用 homebridge restart 重启、或重新开机。

*若出现was not registered by any plugin之类的错误则代表你还没有安装相应的homebridge plugin。

启动中有更改 设定档(config.json)内容的话要改下:

sudo homebridge restart

重新启动 HomeBridge

*按「Control」+「C」可在 Terminal 关闭退出 HomeBridge 服务。

拿出 iPhone 打开「家庭」APP,在「家庭」右上角点「+」,选「加入配件」, 扫描你出现的 QRCode

这时应该会出现「 找不到配件 」,别担心!因为我们还没有加入任何配件到 HomeBridge 桥接器上,没关系,让我们继续往下看。

至少要有一个配件才能扫描加入! ! ! (这边以摄影机为范例) 至少要有一个配件才能扫描加入! ! ! (这边以摄影机为范例) 至少要有一个配件才能扫描加入! ! ! (这边以摄影机为范例)

第一次扫描加入会出现警告视窗,按「强制加入」即可!

加入过一次后,后面再新增的配件都不用再次扫描了,会自己更新进去!

将 HomeBridge 服务加入树莓派开机自动启动项目

同 VNC 远端桌面服务,我们也希望 HomeBridge 服务是树莓派开机后就自动启用的,不然一但重开机就要再次手动连进来启用。

输入:

1
which homebridge

取得 homebridge 路径资讯

记下此路径。

再输入:

1
sudo vim /etc/init.d/homebridge

按「Enter」进入

按「 i 」进入编辑模式

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/bin/sh
### BEGIN INIT INFO
# Provides:
# Required-Start:    $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=* 这边贴上你 which 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

将:

cmd=”DEBUG=* 这边贴上你 which homebridge 查到的路径”

替换入你查到的路径资讯(不用“双引号)

「Commend」+「C」、「Commend」+「V」复制贴上以上内容进去,按「Esc」输入「:wq!」储存退出。

再输入:

1
sudo chmod 755 /etc/init.d/homebridge

修改文件权限。

最后输入:

1
sudo update-rc.d homebridge defaults

加入到开机自动启动项目。

完成!

可直接使用 sudo /etc/init.d/homebridge start 启用 homebridge 服务。

另可使用: tail -f /var/log/homebridge.err 查看启动错误讯息、 tail -f /var/log/homebridge.log 查看 log 。

米家智慧家电串接前准备

Homebridge on 起来后,我们就可以开始逐个将所有米家家电加入至 Homebridge 接上 homeKit!

首先我们要先将米家智慧家电都加入「 米家APP ,我们要从其中获取串接上 HomeBridge 的资讯。

智慧家电都加入米家 APP 后:

将 iPhone 接上 Mac 电脑,打开 Finder/Itunes 介面,选择接上的手机

选备份到「 这部电脑 」、 「 不要勾!替本机备份加密」 ,点「 立即备份

备份完成后, 下载 安装备份查看软体: iBackupViewer

打开「 iBackupViewer

初次启动会要你去 Mac「系统偏好设定」- 「安全性与隐私权」-「隐私权」-「+」- 加入「iBackupViewer」

**如有隐私顾虑可关闭网路使用这套软体、并在使用后移除*

再次打开「 iBackupViewer 」成功读取到备份档后,点击「刚备份的手机」

选择「 **App Stroe** 」Icon

选择「 App Stroe 」Icon

左方找到「米家 APP (MiHome.app)」-> 右方找到「 **数字_mihome.sqlite」** 这个档案并「 **选择** 」 -> 右上角「 **Export** 」-> 「 **Selected Files** 」

左方找到「米家 APP (MiHome.app)」-> 右方找到「 数字_mihome.sqlite」 这个档案并「 选择 」 -> 右上角「 Export 」-> 「 Selected Files

*若有两个 「数字_mihome.sqlite」档案,则挑 Created 建立时间最新的来用。

将刚刚汇出的 数字_mihome.sqlite 档案 拖曳进这个网站查看内容:

可将查询语法换成:

1
SELECT `ZDID`,`ZNAME`,`ZTOKEN` FROM 'ZDEVICE' LIMIT 0,30

仅显示我们需要的栏位资讯 (若有特别的家电套件需要其他的栏位资讯也可以加上去做筛选)

  1. ZDID: 装置 ID

  2. ZNAME: 装置名称

  3. ZTOKEN: 装置 ZToken

ZTOKEN 不能直接用,要转换成 “Token” 才能使用。

这边以摄影机的 ZToken 转换 Token 为例:

首先,我们从上面列表取得摄影机的 ZToken 栏位内容

1
7f1a3541f0433b3ccda94beb856c2f5ba2b15f293ce0cc398ea08b549f9c74050143db63ee66b0cdff9f69917680151e

但这边拿到的 TOKEN 还不能用,我们还需要将他转换

打开 http://aes.online-domain-tools.com/ 这个网站:

  1. 将刚刚复制出来的 ZTOKEN 贴在「Input Text」,选「Hex」

  2. Key输入「00000000000000000000000000000000」32个0,ㄧ样选「Hex」

  3. 然后按下「Decrypt!」转换

  4. 全选复制右下角两行的输出内容&去掉空格后就是我们要的结果 Token

「 **6d304e6867384b704b4f714d45314a34** 」就是我们要的 Token 结果!

6d304e6867384b704b4f714d45314a34 」就是我们要的 Token 结果!

*Token 去得方式这块有尝试用「miio」直接嗅探的方式,但好像是米家韧体有更新过,已无法用这个方法快速方便得到 Token 了!

最后,我们还要知道 装置的 IP 位址 (这边一样以摄影机为例):

打开米家APP → 摄影机 → 右上角「…」→设定→网路讯息,得到 IP位址

记录下 ZDID/Token/IP 这些资讯,供后续使用。

将米家智慧家电逐个串入 HomeBridge

依照个别装置需要用到的套件、连线资讯不同,逐个安装、设定,加入至 HomeBridge。

再来打开 Terminal ssh 连线进树莓派或直接使用 VNC 远端桌面里的 Terminal,继续后续作业….

1.米家摄影机云台版:

在 Terminal 下命令安装 MijiaCamera 这个 homebridge 套件 ( 不加 sudo ):

1
npm install -g homebridge-mijia-camera

参考前文的修改设定档(config.json)教学,在档案中加入 accessories 区块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
   "bridge":{
      "name":"Homebridge",
      "username":"CC:22:3D:E3:CE:30",
      "port":51826,
      "pin":"123-45-568"
   },
   "accessories":[
      {
         "accessory":"MijiaCamera",
         "name":"Mi Camera",
         "ip":"",
         "token":""
      }
   ]
}

accessories: 加入米家摄影机的设定资讯,ip 带入摄影机 ip、token 带入带入前文教学教的 token

记得存档!

然后照 Homebridge 章节教的,启动/重新启动/扫描加入 Homebridge;就能在「家庭」APP 中看到摄影机的控制项目了。

可控制项目:摄影机开/关

2.米家直流变频电风扇

在 Terminal 下命令安装 homebridge-mi-fan 这个 homebridge 套件 (不加 sudo)

1
npm install -g homebridge-mi-fan

参考前文的修改设定档(config.json)教学,在档案中加入 platforms 区块(若已有则在区块内「,」新增一个子区块)

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
{
   "bridge":{
      "name":"Homebridge",
      "username":"CC:22:3D:E3:CE:30",
      "port":51826,
      "pin":"123-45-568"
   },
   "platforms":[
      {
         "platform":"MiFanPlatform",
         "deviceCfgs":[
            {
               "type":"MiDCVariableFrequencyFan",
               "ip":"",
               "token":"",
               "fanName":"room fan",
               "fanDisable":false,
               "temperatureName":"room temperature",
               "temperatureDisable":true,
               "humidityName":"room humidity",
               "humidityDisable":true,
               "buzzerSwitchName":"fan buzzer switch",
               "buzzerSwitchDisable":true,
               "ledBulbName":"fan led switch",
               "ledBulbDisable":true
            }
         ]
      }
   ]
}

platforms: 加入米家电风扇设定资讯,ip 带入摄影机 ip、token 带入前文教学教的 token、humidity/temperature 可控制是否连动显示温湿度计资讯、 type 需带入对应型号的文字 ,支援四种不同型号的电风扇:

  1. 智米直流变频落地扇:ZhiMiDCVariableFrequencyFan

  2. 智米自然风风扇:ZhiMiNaturalWindFan

  3. 米家直流变频:MiDCVariableFrequencyFan (台湾卖的)

  4. 米家风扇:DmakerFan

请自行带入自己的风扇型号。

记得存档!

然后照 Homebridge 章节教的,启动/重新启动/扫描加入 Homebridge;就能在「家庭」APP 中看到摄影机的控制项目了。

可控制项目:电风扇开/关、风力大小调整

3.小米空气净化器 3

在 Terminal 下命令安装 homebridge-xiaomi-air-purifier3 这个 homebridge 套件 (不加 sudo)

1
npm install -g homebridge-xiaomi-air-purifier3

参考前文的修改设定档(config.json)教学,在档案中加入 accessories 区块(若已有则在区块内「,」新增一个子区块)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
   "bridge":{
      "name":"Homebridge",
      "username":"CC:22:3D:E3:CE:30",
      "port":51826,
      "pin":"123-45-568"
   },
   "accessories":[
      {
         "accessory":"XiaomiAirPurifier3",
         "name":"Xiaomi Air Purifier",
         "did":"",
         "ip":"",
         "token":"",
         "pm25_breakpoints":[
            5,
            12,
            35,
            55
         ]
      }
   ]
}

accessories: 加入米家电风扇设定资讯,ip 带入摄影机 ip、token 带入前文教学教的 token、did 带入 zdid

记得存档!

然后照 Homebridge 章节教的,启动/重新启动/扫描加入 Homebridge;就能在「家庭」APP 中看到摄影机的控制项目了。

可控制项目:空气清净机开关、风力大小调整 可查看项目:当前温湿度

4.米家 LED 智慧台灯

在 Terminal 下命令安装 homebridge-yeelight-wifi 这个 homebridge 套件 (不加 sudo)

1
npm install -g homebridge-yeelight-wifi

参考前文的修改设定档(config.json)教学,在档案中加入 platforms 区块(若已有则在区块内「,」新增一个子区块)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
   "bridge":{
      "name":"Homebridge",
      "username":"CC:22:3D:E3:CE:30",
      "port":51826,
      "pin":"123-45-568"
   },
   "platforms":[
      {
         "platform":"yeelight",
         "name":"Yeelight"
      }
   ]
}

不用特别带什么参数进去!若要做更细节的设定可参考 官方文件 (如亮度/色温…)

记得存档!

智慧台灯还需改绑定到「 Yeelight 」APP,然后将「区域网路控制」打开才能给 Homebridge 控制。

1.在 iPhone 上下载安装「 Yeelight 」APP

App Store 搜寻「Yeelight」安装

App Store 搜寻「Yeelight」安装

安装完打开 Yeelight APP -> 「增加装置」-> 找到「米家台灯」-> 重新配对绑定

安装完打开 Yeelight APP -> 「增加装置」-> 找到「米家台灯」-> 重新配对绑定

最后一步记得打开「 **区域网路控制** 」

最后一步记得打开「 区域网路控制

*如果不小心没点到打开,可以在「装置」页 -> 选台灯装置进入 -> 点右下角「△」Tab -> 点「局域网控制」进入设定 -> 打开区域网路控制

吐槽一下这个真的有够烂,米家本身的 APP 没有此开关功能,一定要绑到 Yeelight APP,也不能解绑或重绑回米家…否则会失效。

然后照 Homebridge 章节教的,启动/重新启动/扫描加入 Homebridge;就能在「家庭」APP 中看到摄影机的控制项目了。

可控制项目:灯开关、色温调整、亮度调整

其他米家智慧家电 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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
{
   "bridge":{
      "name":"Homebridge",
      "username":"CC:22:3D:E3:CE:30",
      "port":51826,
      "pin":"123-45-568"
   },
   "accessories":[
      {
         "accessory":"MijiaCamera",
         "name":"Mi Camera",
         "ip":"192.168.0.105",
         "token":"6d304e6867384b704b4f714d45314a34"
      },
      {
         "accessory":"XiaomiAirPurifier3",
         "name":"Xiaomi Air Purifier",
         "did":"270033668",
         "ip":"192.168.0.108",
         "token":"5c3eeb03065fd8fc6ad10cae1f7cce7c",
         "pm25_breakpoints":[
            5,
            12,
            35,
            55
         ]
      }
   ],
   "platforms":[
      {
         "platform":"MiFanPlatform",
         "deviceCfgs":[
            {
               "type":"MiDCVariableFrequencyFan",
               "ip":"192.168.0.106",
               "token":"dd1b6f582ba6ce34f959bbbc1c1ca59f",
               "fanName":"room fan",
               "fanDisable":false,
               "temperatureName":"room temperature",
               "temperatureDisable":true,
               "humidityName":"room humidity",
               "humidityDisable":true,
               "buzzerSwitchName":"fan buzzer switch",
               "buzzerSwitchDisable":true,
               "ledBulbName":"fan led switch",
               "ledBulbDisable":true
            }
         ]
      },
      {
         "platform":"yeelight",
         "name":"Yeelight"
      }
   ]
}

给大家做参考!

我有用到的米家家电如上教学,其他我没有的就没去试了,大家可以自己 上 npm 查询(homebridge-plugin XXX英文名称) ,然后照上面逻辑大同小异安装、设定串接上去!

这边附上几个我找到但没试过的 homebridge 套件(不保证能用):

  1. 小米空气清净机1代: homebridge-mi-air-purifier

  2. 米家智能插座系列: homebridge-mi-outlet

  3. 小米扫地机器人: homebridge-mi-robot_vacuum

  4. 米家智能网关: homebridge-mi-aqara

小叮咛

  1. 建议到路由器将所有米家家电设定为指定/保留 IP,否则 IP 位置可能会变动,要重新更改 config.json 设定。

  2. 如果发现步骤都对但就是串不起来出现错误或是在 HomeKit 上一直显示「无回应」,可以重新尝试看看;如果还是一样可能代表套件已失效,要找其他的套件来串接了。(可查看 github issue)

  3. 功能失效、反应慢;这个也无解,可以发 issue 告知作者等作者更新,由于是开源专案,不可要求太多了!

  4. 绑定完每个家电,都可以启动一次 Homebridge,再回到 iPhone 上看能不能运作,能的话可以再下「Controle」+「C」终止;当全部家电都绑定好后,可重新启动树莓派,让他在重启后自己在后台启动 homebridge 服务;这才是我们要的。

结语

另外可以在「设定」->「控制中心」->「自订」中将「家庭」APP 拉上去就能在下拉控制中心中快速操作 HomeKit !

另外可以在「设定」->「控制中心」->「自订」中将「家庭」APP 拉上去就能在下拉控制中心中快速操作 HomeKit !

全部串上 HomeKit 后只有一个字「爽」!开关的反应更快,只差我没有家庭中枢没办法远端控制而已,此篇进阶 Homebridge 也到此结束,感谢阅读。

回到文章开头,全都加入 HomeKit 后我们就可以无痛使用 iOS ≥ 13的捷径自动化功能了。

之后再想要来研究 homebridge 套件是怎么做的?感觉很有趣呢!所以如果有 HomeBridge 套件不合你的操作需求、有套件坏了找不到替代的,就在等我去研究吧!

Home assistant

还有另一个智慧家庭的平台 Homeassistant 可以刷入树莓派使用( 但请注意:需要 2A 的电源才有办法启动 ); Homeassistant 我也有灌来玩玩看,全 GUI 图型操作,点一点就能串入家电;之后再来深入研究,感觉他等同于另一个米家平台而已,如果有很多不同厂商的 IOT 元件,更适合使用这个。

参考资料

  1. https://www.domoticz.cn/forum/viewtopic.php?t=52

  2. https://or2.in/2017/07/02/Homekit-and-MiJia-with-pi/#3-%E5%8F%B7%E5%A4%96-%E5%BC%80%E5%90%AF%E5%8F%AF%E8%A7%86%E5%8C%96VNC

延伸阅读

  1. 小米智慧家居新添购(AI音箱、温湿度感应器、体重计2、直流变频电风扇)

  2. iOS ≥ 13.1 使用「捷径」自动化功能搭配米家智慧家居(直接使用 iOS ≥ 13.1 内建的捷径APP完成自动化操作)

  3. 米家 APP / 小爱音箱地区问题

  4. 智慧家居初体验 — Apple HomeKit & 小米米家 (米家智慧摄影机及米家智慧台灯、Homekit设定教学)

有任何问题及指教欢迎 与我联络


Buy me a beer

本文首次发表于 Medium (点击查看原始版本),由 ZMediumToMarkdown 提供自动转换与同步技术。

Improve this page on Github.

This post is licensed under CC BY 4.0 by the author.