登录后台

页面导航

本文编写于 2584 天前,最后修改于 1504 天前,其中某些信息可能已经过时。

HomeKit介绍

苹果2014年发布智能家居平台HomeKit。2015年1月,苹果推出HomeKit智能家居平台的时间表可能要有推迟,因为在许多相关的支持小工具(及其所需的底层芯片)上,苹果还在与相关厂商谈判。在2015年早些时候举行的CES上,已有多家公司如Elgato和iDevices正式发布了自己的首款HomeKit产品。苹果之所以延期推出HomeKit,是因为坚守“严格的性能标准”,这与当前AirPlay和MFi严格认证要求非常类似。

2015年6月3日,首批发布的HomeKit智能家居产品,分别来自5家厂商,这些产品可以通过iPhone、iPad或iPod Touch控制灯光、室温、风扇以及其他家用电器。自iOS10发布后,人们可以使用其中增加的“Home”应用,以管理控制支持HomeKit框架的智能家居设备。

Homebridge 介绍

自从苹果推出了 HomeKit 以来,鉴于苹果庞大的用户量,不断开始有家电厂商开发出兼容 HomeKit 的家电。然而第一个吃螃蟹的人总是有代价的,这些电器的价格不是太贵就是中国买不到,所以使用 HomeKit 的仍然是小众群体。

通过 HomeAssistant 我们实现了把普通家电接到同一个平台,并且实现了 Amazon Echo 进行语音控制,能否把 Amazon Echo 替换成 Siri 呢?答案当然是可以的,不然就不会有这篇文章了。

这回又是美帝的极客站出来拯救世界,隆重介绍这个重量级的开源库:homebridge,通过逆向 HomeKit 协议让普通的 Wifi 设备也能接入 HomeKit 从而通过 Siri 控制。你可以这里找到所有 homebridge 相关的 plugin,已经有超过500个。

所以 homebridge 诞生之初和 HomeAssistant 并没有关系,但你可能注意到了,如果你每一个设备都安装一个 homebridge 相关的 plugin,太分散也不利于管理,所以,最好的办法是,把一个平台整体迁移过来。毋庸置疑,HomeAssistant 是目前管理智能家居最成熟也是最流行的平台,所以你只管把电器设备加到 HomeAssistant 就行,和 HomeBridge 只需要一个 Plugin 连接就行,这个 Plugin 就是 homebridge-homeassistant ,它在 HomeAssistant 和 HomeKit 之间架起了一座桥梁,让 HomeBridge 可以直接使用 HomeAssistant 平台下的所有设备。

Homebridge 安装

Homebridge也提供一行安装指令

sudo npm install -g --unsafe-perm homebridge

如果无法安装成功,可以使用命令手动安装

sudo apt-get install git make
sudo apt-get install g++
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install libavahi-compat-libdnssd-dev
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

完成以上操作,Homebridge已经成功。

Homebridge 设置

在成功安装 Homebridge 之后,Homebridge 配置文件 config.json/home/pi/.homebridge 目录下

修改 config.json

{
    "bridge": {
        "name": "YeskerysHome", //Homebridge 名称
        "username": "B8:27:EB:A0:2C:A1", //树莓派MAC地址
        "port": 45536, //Homebridge 端口
        "pin": "475-68-572" //Homebridge密码
    },
     "platforms": [
      {
        "platform": "HomeAssistant",
        "name": "HomeAssistant",
        "host": "http://192.168.1.X:8123", //Home-Assistant地址
        "password": "xxxxxx", //Home-Assistant密码
        "supported_types": ["binary_sensor", "cover", "fan", "input_boolean", "light", "lock", "media_player", "scene", "sensor", "switch"],
        "logging": true
      }
    ]
}

输入命令 homebridge 启动 homebridge服务,如果看到以下内容,就安装成功

Scan this code with your HomeKit App on your iOS device to pair with Homebridge:
┌————————————┐

│ 475-68-572 │

└————————————┘
[5/9/2017, 10:47:47 AM] Homebridge is running on port 45536.

如果启动失败,请按照以下内容操作:

  1. 重新修改 bridge.namebridge.port
  2. 输入命令:sudo killall homebridge 关闭所有正在运行的 HomeBridge 服务
  3. 手动删除 HomeBridge 文件夹下的 persist 文件夹;
  4. 输入命令:sudo systemctl restart home-assistant.service 重启 HomeAssistant 服务;
  5. 等待 HomeAssistant 服务完全启动之后,再次使用 homebridge 命令启动 Homebridge 服务。

添加 Homebridge 到 HomeKit

打开 IOS 的 家庭 应用,点击 添加配件,搜索到 Homebrige 会提示此配件未经过认证,点击仍然添加,输入配置文件中的8位PIN密码。

这样你在Home-Assistant里添加的智能设备就已经全部显示出来。

如国有不希望显示的设备,可以在 Home-Assistant 的配置文件 configuration.yaml 里通过 homebridge_hidden 属性关闭。

customize:  
  switch.a_switch:
    homebridge_hidden: true

到现在,已经可以通过Siri开控制 Home-Assistant 里的智能设备了。

设置 Homebridge 开启启动

添加配置文件

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

添加以下内容

[Unit]
Description=Node.js HomeKit Server 
After=syslog.target network-online.target
[Service]
Type=simple
User=pi
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

设置开机启动

sudo systemctl start homebridge
sudo systemctl enable homebridge