yeskery

Home-Assistant 实现接入 HomeKit 实现控制智能硬件

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也提供一行安装指令

  1. sudo npm install -g --unsafe-perm homebridge

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

  1. sudo apt-get install git make
  2. sudo apt-get install g++
  3. curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
  4. sudo apt-get install -y nodejs
  5. sudo apt-get install libavahi-compat-libdnssd-dev
  6. sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp
  7. cd /usr/local/lib/node_modules/homebridge/
  8. sudo npm install --unsafe-perm bignum
  9. cd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdns
  10. sudo node-gyp BUILDTYPE=Release rebuild

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

Homebridge 设置

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

修改 config.json

  1. {
  2. "bridge": {
  3. "name": "YeskerysHome", //Homebridge 名称
  4. "username": "B8:27:EB:A0:2C:A1", //树莓派MAC地址
  5. "port": 45536, //Homebridge 端口
  6. "pin": "475-68-572" //Homebridge密码
  7. },
  8. "platforms": [
  9. {
  10. "platform": "HomeAssistant",
  11. "name": "HomeAssistant",
  12. "host": "http://192.168.1.X:8123", //Home-Assistant地址
  13. "password": "xxxxxx", //Home-Assistant密码
  14. "supported_types": ["binary_sensor", "cover", "fan", "input_boolean", "light", "lock", "media_player", "scene", "sensor", "switch"],
  15. "logging": true
  16. }
  17. ]
  18. }

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

  1. Scan this code with your HomeKit App on your iOS device to pair with Homebridge:
  2. ┌————————————┐
  3. 475-68-572
  4. └————————————┘
  5. [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 属性关闭。

  1. customize:
  2. switch.a_switch:
  3. homebridge_hidden: true

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

设置 Homebridge 开启启动

添加配置文件

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

添加以下内容

  1. [Unit]
  2. Description=Node.js HomeKit Server
  3. After=syslog.target network-online.target
  4. [Service]
  5. Type=simple
  6. User=pi
  7. EnvironmentFile=/etc/default/homebridge
  8. ExecStart=/usr/lib/node_modules/homebridge/bin/homebridge $HOMEBRIDGE_OPTS
  9. Restart=on-failure
  10. RestartSec=10
  11. KillMode=process
  12. [Install]
  13. WantedBy=multi-user.target

设置开机启动

  1. sudo systemctl start homebridge
  2. sudo systemctl enable homebridge

评论

发表评论 点击刷新验证码

提示

该功能暂未开放