注:
Home Assistant,简称HA或HASS,独立平台。
Homebridge,简称HB,桥梁插件。
Pi指树莓派Raspberry Pi
今天,我们只说一个疯狂的屌丝级故事,把米家的智能家居接到 HomeKit 上!分享玩转智能家居带来新的启发和收获。
将Pi接入智能家居控制系统并不新鲜,Homebridge 接入 Homekit 已经非常常见,但是由于 Homekit 本身的局限性,使其对智能家居设备的支持广度和深度不足,间接影响了用户的使用体验。例如早期 Homebridge-aqara 插件并不支持小米网关 2 的自带灯光控制,白白浪费了设备的功能。
为了摆脱这一束缚,我们可以利用另一个强大的智能家居平台:Home Assistant,Home Assistant 是一个成熟完整的基于 Python 的智能家居系统,设备支持度高,支持自动化(Automation)、群组化(Group)、UI 客制化(Theme) 等等高度定制化设置。背后又有庞大的社群基础,且不断在更新。最重要的是我们可以通过Homeassistant-homebridge 插件打通两个平台,同样实现设备的 Siri 控制。
Home Assistant 作为接入所有智能家居设备的平台,通过 Homebridge 这一桥梁,最终实现 iOS 及 macOS 设备对智能家居的设置。我们知道 Homebridge 本身可以接入部分原生不支持 Apple Homekit 的设备,但由于 Homekit 本身的局限性,“桥梁”再强大,也无法逾越其极限。
HomeKit 集成在 iOS 系统上,凭借 iOS 的易用美观以及 Siri 操控家居的炫酷感,深得大众喜爱。HomeKit 正版授权的硬件的成本都比较高昂,唯有把目光投向同样把脚踏入智能家居的小米。
Home Assistant存在的意义
打个比方来说,每个人都能单独过桥到对岸,但是速度始终有限,如果我们把人装进车里一起运送过桥,效率则更高,同时多了车内这么一个空间,这里的“车”就可以看作是 HA。HA 本身作为一个独立的平台,有能力集成大量量产或 DIY 的智能家居设备,并且拥有独立的控制前端,在层级上来说是和 Appple HomeKit平台平起平坐的大 Boss。换言之,通过 HB 接入 Homekit 只是这个平台应用的一部分,对于其他非 Apple 生态用户,HA 也同样给予其完整丰富的智能家居体验。
安装Home Assistant和Homebridge
HA 支持大部分平台,包括 Docker、macOS、Linux、Windows等。简而言之,只要你的主机能跑 Python,基本就能安装 HA,本篇以树莓派 3B型号为例。
初始安装HA
在树莓派安装 HA,有 3 种方法供选择:以树莓派官方系统 Raspbian 为根系统,再通过指令安装;直接安装集成了 HA 的 Hassbian 操作系统;直接安装最新高度集成系统 Hass.io。
以上 3 种方法从性能上来说并无二异,均能实现 HA 全部功能,Hassbian 实际上亦基于 Raspbian ,唯一需要纳入考虑的是图形化操作界面的需求。原生 Hassbian 没有 GUI,但是我们可以手动进行安装。对于刚入门的新手和想摆脱大量代码的朋友,方法推荐度依次为:3 > 2 > 1。
Homebridge 安装
HASS 本身可以通过网页控制,这也赋予了其全平台的控制能力。当然,想必不少人还是冲着语音控制功能考虑智能家居的,对于 iOS 用户来说,想要更自由地使用 HomeKit,HB 依然是绕不开的环节。
安装 HB 的目的在于通过 HB 打通 HA 和 Apple Homekit 两大平台,实现联动。HB 提供一行安装指令: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/
(注意这里如果显示不存在文件夹,替换成 cd /usr/lib/node_modules/homebridge/)
sudo npm install –unsafe-perm bignum
cd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdns
(注意这里如果显示不存在文件夹,替换成 cd
/usr/lib/node_modules/hap-nodejs/node_modules/mdns)
sudo node-gyp BUILDTYPE=Release rebuild
安装完成后,建议大家直接输入homebridge运行一次 HB,以生成示例配置文件,然后 Ctrl + C 退出进程。
接着,安装“homebridge-homeassistant”插件,实现平台联动:
sudo npm install -g homebridge-homeassistant
智能家居设备接入
大多数人初接触 HASS 的时候经常一头雾水,原因是 HASS 的配置体系十分混乱,一个设备的完美接入需要涉及多个配置文件。实际上,系统架构不清晰也是 HASS 的最大缺点,因此,在开始配置教程前,先捋一捋 HASS 的配置框架。
HASS 配置框架
HASS 的核心配置围绕configuration.yaml文件展开, 在这里你可以进行时区、度量单位、开发者模式、主题选择等等基础配置。最为重要的是,你将在该文件内完成所有设备的接入。
HASS 的运行依赖于一个个相对独立的功能组件(Components),比如小米米家平台就可以视作一个组件。有些时候,部分设备或者功能仍未得到 HASS 的官方支持,你必须在主目录下新建自定义组件custom_components文件夹,添加相关的设备支持文件。完成上述的文件修改,加上 HB 的配置,你就可以自如控制所有智能家居设备了。
然而,使用一段时间后,可能会觉得设备太多显示凌乱,想给界面换个风格,或者configuration.yaml文件看起来要炸了。此时,可以考虑把部分配置剥离出去形成独立的文件。例如你开启了“设备追踪功能”(Device Tracker),那么HASS将在主文件下自动生成 known_devices.yaml 文件,将在这里配置需要追踪的设备。
主文件设置
打开树莓派的 SMB 服务,通过 SMB 打开 HASS 主目录。(macOS 在 FInder 左侧栏“共享的”接入,Windows 在计算机-地址栏 里直接输入//树莓派地址即可跳转)
打开configuration.yaml,文件默认包含如下内容,我们按需修改:
homeassistant:
#经纬度
latitude: 32.87336
longitude: 117.22743
#海拔
elevation: 430
#度量单位,默认米
unit_system: metric
#时区
time_zone:Asia/Shanghai
#系统昵称,显示在主界面顶部
name: Home
正常情况下,剩下的部分便无须变动了。现在小试牛刀添加雅虎天气服务:
weather:
– platform: yweather
woeid:2151849
其中,woeid是城市代码,打开雅虎天气官网输入城市后搜索,url的最后几位数字便是:
https://www.yahoo.com/news/weather/china/shanghai/shanghai-2151849
保存,重启 HASS。
第一个 HASS 组件接入成功,你应该大概已明白 HASS 的操作原理,HASS 支持上千款智能家居设备,使用者可以寻找其他设备按上述方法接入。
如果你是果家用户,需要 Homekit 服务,那么我们还需要转到 Homebridge 进行相关设置。
Homebridge 设置
执行指令前,请先运行一次 Homebridge。注意:如果添加了开机自启任务,勿重复运行 Homebridge,否则会出现端口占用错误。
Homebridge – homeassistant 插件版本为 2.3.0 以上的,特别注意添加最后一行配置,否则家庭 APP 内设备为空。
cd /home/pi/.homebridge
sudo nano config.json
{
“bridge”: {
“name”: “Homebridge”,
“username”: “CC:22:3D:E3:CE:30”, //树莓派 mac 地址
“port”: 51826, //运行端口
“pin”: “123-45-678” //连接密码,自行设定
},
“platforms”: [
{
“platform”: “HomeAssistant”,
“name”: “HomeAssistant”,
“host”: “http://127.0.0.1:8123”, //HA 运行的网址,可以是 ip 也可以是域名
“password”: “raspberry”, //HA 的 api_password,及密码,如有设置请添加
“supported_types”: [“automation”, “binary_sensor”, “climate”, “cover”, “device_tracker”, “fan”, “group”, “input_boolean”, “light”, “lock”, “media_player”, “remote”, “scene”, “sensor”, “switch”],
“default_visibility”: “visible” //特别注意此项
}
]
}
ctrl+x,y,回车。之后清除 Homebridge 的缓存:
sudo rm -rf /home/pi/.homebridge/persist/
请大家记住此步指令,今后若出现重新配置 HA、HB 导致 iOS 设备无法识别新设备或树莓派的,大部分情况均可以使用此指令解决。
这样我们就完成了 Homebridge 的设置,重启Homebridge:
sudo systemctl restart homebridge
经过上述设置,智能家居设备已经在 HA 和 HB 里稳定运转了,现在不妨尝试使用 Siri 操控你的设备。
鹬蚌相争
上面介绍了 Homebridge 通过安装插件的方式将智能设备接入Apple HomeKit平台,有的时候设备同时支持HA和Apple Homekit两个平台,这时我们就面临平台选择。
首先,这个问题只存在 iOS 以及未来的 macOS 用户身上,因为只有你们可以使用 Siri,才可以痛并快乐着。对于其他终端系统的用户而言,要么和设备厂家的app斗智斗勇,要么享受HA网页操控的快感。
其次,以米家设备为例,同是网关,HA可以控制夜灯功能,获取光感数据,Homekit 则不能;而针对扫地机器人,HASS的接入方法十分复杂,且现阶段只能实现开关功能,HB的插件安装配置更为容易,且可以控制吸力……可以说两个平台之间没有绝对的胜者,都需要具体情况具体分析。个人认为大多数情况下,HA对设备的支持更好,并且基于社群支持,跟进速度也更快。
最后,初学者在驾驭两个平台的同时,二者必须取其一,同一设备请通过一个平台接入,否则未经“自定义设置”将产生冲突。
对于已经将设备通过 HB 接入,但想转入 HA 平台,这里提供如下兼容方案:
1、在 HA 接入相关设备,上文已经介绍过。
2、在 HA 主页面侧边栏,点击下方 “<>”,获取设备的 entity ID:
3、在 HA configuration.yaml 配置文件中添加如下设置:
则该设备将在 Homebridge 中被隐藏,重启后不会被家庭 APP 重复识别添加。
此时,可以通过 Apple Homekit 和 Hass 平台同时控制该设备。
设备追踪设置
HA 可以追踪同一路由器内网设备联网状态,可以利用这个系统判断家人是否在家等,非常方便。
HASS 原生支持大部分品牌的路由器,包括小米路由器、TP-LINK 等。不同的路由器对应配置方法不同,设置前需要打开路由器的 SSH 模式,设置好密码等,保护数据安全。建议设置仅限 LAN 用户拥有 SSH 权限。
打开configuration.yaml文件,末尾添加:
device_tracker:
– platform: asuswrt (按需填写,小米为“xiaomi”,Netgear为“netgear”,TP-LINK为“tplink”)
host: 192.168.xx.1 #路由器IP
username: ***** #管理员账号
password: ****** #管理员密码
track_new_devices: no #是否自动添加新设备
重启HASS后,主文件夹下便会自动生成 known_devices.yaml 文件,打开之后你会发现,系统已经自动为嗅探到的连接到路由器的设备添加了默认配置:
devicename:
name: Friendly Name #昵称
mac: EA:AA:55:E7:C6:94 #mac地址
picture: https://home-assistant.io/images/favicon-192×192.png #图片icon: mdi:human-female #图标,和图片取一个设置
track: yes #是否追踪
hide_if_away: no #离开后是否自动隐藏
经过自动化配置,可以真正实现人工智能。摆脱遥控的束缚、更换主题,展现个性、设置简洁大方的控制面板。
小米的接入
截止2018年2月底,支持的HASS已经支持975款设备,其中多为国外品牌,我们这里只截图了小米的设备,每个版本的迭代大概会增加十几款设备。(具体设备支持查看网址:https://home-assistant.io/components/#search/)。
因为小米生态链的产品过多,也并不是所有设备都支持HA,所以只以三款典型智能设备举例。
网关类设备
一个设备需要小米多功能网关才可以使用,一般都走的是 Zigbee 协议,只要小米网关接入了 HA 就可以完美适配。如果一个设备是独立接入网络的,比如米家 Wi-Fi 插座、扫地机器人、Yeelight 灯具等,我们则需要单独在 HASS 里接入它们。
类似的标准也适用于 Homeridge,homebridge-mi-aqara 插件正常情况下只支持 Zigbee 设备,其他设备需要另安装插件。
以小米多功能二代网关为代表的网关类设备,是大部分米家及绿米Aqara的Zigbee 设备的联动基础,也是整个米家智能家居系统的核心。除多功能网关外,空调伴侣和 Aqara 监控摄像头都具备网关功能。
要将网关接入 HA,我们需要先打开网关的通信协议,并获取通讯密码。打开米家 app,连接设置多功能网关,点击进入网关页面,点击右上角“…”,进入“设置”。点击第二行“关于”,狂点空白处,便会跳出“局域网通信协议”以及“网关信息”。进入“局域网通信协议”,打开开关,记录下密码,这就是之后待填的“key”。回到上级页面,进入“网关信息”,记录下 mac 地址,这就是之后待填的“sid 或 mac”。
HA 0.50.0 及之后版本已经添加对米家平台的官方支持,我们只需要直接配置即可。如果之前复制过 custom_componets 文件夹,升级后请删除该文件夹。打开 configuration.yaml 文件,添加以下配置(此设置适用于 HA 0.54.0版及之后):
xiaomi_aqara:
gateways:
– mac: MAC 地址 (地址不带 “-” 或 “:” ,行首的「-」必须保留)
key: 通讯密码
重启后,HA 主界面将会自动识别网关及捆绑的所有设备。
如果有多个网关,则按以下格式设定:
xiaomi_aqara:
gateways:
– mac: xxxxxxxxxxxx
key: xxxxxxxxxxxxxxxx
– mac: xxxxxxxxxxxx
key: xxxxxxxxxxxxxxxx
获取 token
所有的小米 Wi-Fi 设备都必须先取得设备的 token 方可接入 HA,以下简要介绍获取 token 的方法之一。
首先在安装有 Node.js 的电脑上安装 miio 库
sudo npm install miio
之后,重置待连小米设备的网络,使其产生 Wi-Fi热点,将电脑连接至该热点上,之后输入:
miio –discover
即获取设备的 token,请集中保存。获取 token 后,如需绑定米家 APP,请直接在 APP 中添加设备,切勿继续重置设备,否则 token 将重新生成,原有 token 将失效。
空气净化器
HA 目前原生支持 2 代空净,暂不支持 Pro 版。按照上方教程获取空气净化器的 token,之后在configuration.yaml中填入以下配置:
fan:
– platform: xiaomi_miio
name: Xiaomi Air Purifier 2
host: 192.168.130.66
token: YOUR_TOKEN
Wi-Fi 插座及智能插线板
0.56.0 的更新带来了插座的支持,接入前先获取设备的token,具体方法见前文。之后,在configuraiton.yaml添加如下设置:
switch:
– platform: xiaomi_miio
name: Original Xiaomi Mi Smart WiFi Socket
host: 192.168.130.59
token: YOUR_TOKEN
往期干货
《智能家居》杂志第135期现已出刊上市
点击「阅读原文」即可购买
长按图片 识别二维码 订阅全年杂志