智能家居 / 软件心得 · 2018/05/06 0

智能家居(Home Kit):Home Assistant + Home Bridge

Apple的HomeKit默认是没办法加入如小米智能家居的产品的,为了能够统一管理以及Siri控制,折腾了好久,查了好多资料,终于发现了一种方式。

也就是Apple的Home Kit连接Home Bridge,Home Bridge连接Home Assistant,以这种方式实现对非Apple的智能家居产品的控制。


什么是Home Assistant?(HA)

Home Assistant 是一款基于 Python 的智能家居开源系统,支持众多品牌的智能家居设备,可以轻松实现设备的语音控制、自动化等。

具体介绍可以参考https://www.home-assistant.io/

什么是Home Bridge?(HB)

简单来说,就是把苹果的家庭也就是Homekit不支持的设备,模拟成Homekit支持的设备,并加入到Homekit中,从而可以愉快的调戏Siri。Homebridge就是可以理解成穷人的法拉利,实现了对非苹果的智能产品的连接和控制。而且Homebridge可以通过插件把目前一些智能平台如Domoticz、Home Assistant也桥接进来,从而获取更多的可玩性。

以上为baidu所得。


以下是基于群晖Dock的形式安装HA和HB的具体步骤。

Home Assistant的安装

1. 进入群晖的docker,打开注册表,搜索home,会出现Home Assistant镜像,双击下载“homeassistant/home-assistant”。

2. 下载完后,到“映像”里,双击刚才下载的HA,会弹出创建容器的界面。点击“高级设置”。

勾选上“启用自动重新启动”

点击“卷”,然后“添加文件夹”,并在docker目录下面新建一个homeassistant文件夹

装载路径填“/config”。

网络那,勾选”使用与Docker Host”相同的网络

环境那,添加两个变量。value=Asia/Shanghai和variable=TZ,点确定。

最后确认界面,点击“应用”。

容器自动创建并启用了。

3. configuration.yaml的配置。浪费了我很多时间,这里yaml对大小写,空格都很敏感。yaml里的空格一定要用空格键,不能使用tab等进行缩进和对奇。

下面是典型的 configuration.yaml 文件。

homeassistant:

# 后面的文字是注释,被系统忽略。

# 智能家居系统的名字,显示在主界面顶部。

name: Home

# 下面填入纬度和经度,计算太阳升起和设定时间所需位置,越精确越好。

latitude: 30.169813

longitude: 114.192472

# 海拔高度用于修正天气参数和日出日落时间参数 (默认单位是:米)。

elevation: 37

# 度量衡单位制式(metric)是公制,(imperial)是英制。

unit_system: metric

# 时区,从这里选择你的:http://en.wikipedia.org/wiki/List_of_tz_database_time_zones,一般不需要修改。

time_zone: Asia/Shanghai

#下面这个区域,用于自定义设备属性,后期文章会有涉及。

customize: !include customize.yaml

#在网页界面的首页显示简介(那一大段英文),不想看到的话,请在前面加上#号。

introduction:

# 是否使用默认的“首页”

frontend:

http:

# 给系统网页的登录加上一个密码,先去掉下面这行的#号,然后把PASSWORD改成你想要的密码。

api_password: raspberry

# 升级提示,当 HomeAssitant 有新版本发布的时候,“日出日落”图标会变成(Updater)字样

updater:

# 系统自动发现新的设备

discovery:

# 启动浏览器的语音命令

conversation:

# 在系统数据库中保存“历史数据”

history:

# 在logbook查看所有的“已发生事项”

logbook:

# 设置

config:

# 太阳“跟踪器”,也就是“日出日落时间”

sun:

# 小米智能网关

xiaomi——aqara:

gateways:

– discovery_retry: 10

mac: xxxxxx

key: xxxxxx

host:

sensor: !include sensors.yaml

group: !include groups.yaml

automation: !include automations.yaml

其中小米网关的MAC地址和密码,通过安装“米家”app获得。在找到米家里的网关后,点击“关于”,在中间空白处(iOS)/中间下方(Android),连续点击不要停,会出来网关的具体信息。具体可以百度之。注意要点:

– mac地址要去掉冒号,并小写。

– 局域网通信要开启,并且点击确定后密码才生效。

可以把你更新后的yaml文件通过群晖的file station应用上传更新覆盖homeassistant文件夹内的同名文件。

然后,请重启HA这个容器,以便生效。如下图,点击“重新启动”

4. 如果一切顺利的话, 打开 http://本地群晖地址:8123 就可以看到HA的界面了。比如群晖地址是192.168.2.5,则打开192.168.2.5:8123。

没任何配置和美化的话, 大概的界面是如下那种。

这个时候,其实就可以通过HA进行智能家居的控制和自动化了,而不需要米家APP了,也可以集成各种不同品牌的相关产品,比如sony的电视机,比如特斯拉的相关信息。

Home Bridge的安装

1. HB的安装和HA类似,先在注册表搜索“home”,找到marcoraddatz/homebridge后,下载。下载完成后,双击,创建容器。一样的,点击“高级设置”。

2. 一样选择自动重启

3. 一样,创建一个文件夹,装载路径是“/root/.homebridge” ,注意有个.

4. 网络一样,使用宿主的网络。

5. 确定后,应用。

6. 这时候,这个容器,肯定是出错的。需要在之前创建的homebridge文件夹内,创建2个配置文件。config.json和install.sh文件。

下面是典型的 install.sh 文件。

#!/bin/bash

apt-get install libavahi-compat-libdnssd-dev

npm install -g homebridge-homeassistant

npm install -g homebridge-aqara

下面是典型的 config.json文件。

{

“bridge”: {

“name”: “Homebridge”,

“username”: “02:42:XX:XX:XX:XX”,  /* 群晖 docker 0 的 HWaddr */

“port”: 51826,

“pin”: “123-45-678”

},

“platforms”: [{

“platform”: “HomeAssistant”,

“name”: “HomeAssistant”,

“host”: “http://192.168.2.xxx:8123”, /*HA的访问地址*/

“password”: “”,  /*HA如果有密码,就输入 */

“supported_types”: [“binary_sensor”, “climate”, “cover”, “fan”, “garage_door”, “device_tracker”, “input_boolean”, “light”, “lock”, “media_player”, “rollershutter”, “sensor”, “scene”, “switch”],

“default_visibility”: “visible”,

“verify_ssl”: false

}, {

“platform”: “AqaraPlatform”,

“sid”: [“xxxxx”], /*小米网关的mac地址,和HA的yaml一样,小写,并且没有冒号*/

“password”: [“xxxx”] /*小米网关的密码,和HA的yaml一样 */

}

]

}

把这两个文件,上传到homebridge文件夹内,然后重启HB这个容器。

7. HB容器运行后,双击容器,找到”终端机“,过一会,应该会看到类似下面的二维码。打开iOS的“家庭”,扫面这个二维码就行。或者手动输入之前config里写的12345678也可以手动添加。

 

8. 这样,通过iOS的HomeKit就可以连接到家里所有接入HA的智能设备了。比如下图中,小米的那些温感,动作感应,智能插座等都可以联动了。