利用Siri实现HomeAssistant控制

使用Siri实现控制需要用到开源库homebridge,它通过逆向HomeKit协议让普通Wifi设备也能接入HomeKit接受Siri控制。这里要使用的是homebridge-homeassistant这个插件,它让HomeBridge可以直接使用HomeAssistant下的所有设备。

安装HomeBridge

更新相关packages

sudo apt-get update
sudo apt-get upgrade

安装C++14

Homebridge中的一些包使用了C++14,老版本的g++可能不支持,可以用g++ -v来看当前的g++版本。
如果是4.9.2以上可以不用理会了。

安装Node

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs

安装完成后可以通过node -v检查是否安装完成。
该方法需要芯片高于ARMv7,可以通过uname -a来看芯片版本

安装Avahi和其它依赖

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

安装HomeBridge

sudo npm install -g –unsafe-perm homebridge

添加开机自动启动

如果网站打不开,自己新建也可以。
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/lib/homebridge
# If you uncomment the following line, homebridge will log more
# You can display this via systemd's journalctl: journalctl -f -u homebridge
# DEBUG=*

homebridge.service文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Unit]
[Unit]
Description=Node.js HomeKit Server
After=syslog.target network-online.target
[Service]
Type=simple
User=homebridge
EnvironmentFile=/etc/default/homebridge
# 将下面的内容改为自己的homebridge启动位置 (可能是 /usr/bin/homebridge)
ExecStart=/usr/local/bin/homebridge $HOMEBRIDGE_OPTS
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target

  • 将homebridge拷贝到/etc/default,将homebridge.service拷贝到/etc/systemd/system下。
  • 新建名为homebridge的用户:sudo useradd --system homebridge
  • 新建文件夹/var/lib/homebridge:sudo mkdir /var/lib/homebridge
  • 设置写权限:sudo chmod -R 0777 /var/homebridge
  • 设置开机启动并开启服务

    systemctl daemon-reload
    systemctl enable homebridge
    systemctl start homebridge

这里运行可能会报错,因为我们制定了配置文件(/var/lib/homebridge/config.json),但是并没有建立这个文件,在稍后会新建并设置。

安装homebridge-homeassistant

安装

npm install -g homebridge-homeassistant

新建HomeBridge的配置文件

sudo vi /var/lib/homebridge/config.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"bridge": {
"name": "KittensHome", # 可修改
"username": "B8:27:EB:A0:2C:A1", # 树莓派的MAC地址,大写
"port": 45536, # 可修改
"pin": "775-82-588" # 可修改
},
"platforms": [
{
"platform": "HomeAssistant",
"name": "HomeAssistant",
"host": "http://192.168.**.**:8123", # 可修改
"password": "xxxxxx", # homeassistant配置文件中的登录密码,建议设置
"supported_types": ["binary_sensor", "cover", "fan", "input_boolean", "light", "lock", "media_player", "scene", "sensor", "switch"],
"logging": false
}
]
}

重新启动服务

sudo systemctl restart home-assistant.service
sudo systemctl restart homebridge

如果homebridge启动失败,按照下面步骤重新操作

  • 改用新的bridge.name,新的bridge.port
  • 输入命令:sudo killall homebridge关闭所有正在运行的HomeBridge服务
  • 手动删除HomeBridge文件夹下的persist文件夹
    在手机中添加对应的设备。