技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit

技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit

技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit


技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit

注:

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,手把手教你米家对接HomeKit


Home Assistant 作为接入所有智能家居设备的平台,通过 Homebridge 这一桥梁,最终实现 iOS 及 macOS 设备对智能家居的设置。我们知道 Homebridge 本身可以接入部分原生不支持 Apple Homekit 的设备,但由于 Homekit 本身的局限性,“桥梁”再强大,也无法逾越其极限。


HomeKit 集成在 iOS 系统上,凭借 iOS 的易用美观以及 Siri 操控家居的炫酷感,深得大众喜爱。HomeKit 正版授权的硬件的成本都比较高昂,唯有把目光投向同样把脚踏入智能家居的小米。

技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit


Home Assistant存在的意义


打个比方来说,每个人都能单独过桥到对岸,但是速度始终有限,如果我们把人装进车里一起运送过桥,效率则更高,同时多了车内这么一个空间,这里的“车”就可以看作是 HA。HA 本身作为一个独立的平台,有能力集成大量量产或 DIY 的智能家居设备,并且拥有独立的控制前端,在层级上来说是和 Appple HomeKit平台平起平坐的大 Boss。换言之,通过 HB 接入 Homekit 只是这个平台应用的一部分,对于其他非 Apple 生态用户,HA 也同样给予其完整丰富的智能家居体验。

技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit


安装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。

技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit


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 的配置框架。

技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit


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

技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit


其中,woeid是城市代码,打开雅虎天气官网输入城市后搜索,url的最后几位数字便是:

https://www.yahoo.com/news/weather/china/shanghai/shanghai-2151849


保存,重启 HASS。


第一个 HASS 组件接入成功,你应该大概已明白 HASS 的操作原理,HASS 支持上千款智能家居设备,使用者可以寻找其他设备按上述方法接入。


如果你是果家用户,需要 Homekit 服务,那么我们还需要转到 Homebridge 进行相关设置。


Homebridge 设置


执行指令前,请先运行一次 Homebridge。注意:如果添加了开机自启任务,勿重复运行 Homebridge,否则会出现端口占用错误。

技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit


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 操控你的设备。

技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit


鹬蚌相争


上面介绍了 Homebridge 通过安装插件的方式将智能设备接入Apple HomeKit平台,有的时候设备同时支持HA和Apple Homekit两个平台,这时我们就面临平台选择。

首先,这个问题只存在 iOS 以及未来的 macOS 用户身上,因为只有你们可以使用 Siri,才可以痛并快乐着。对于其他终端系统的用户而言,要么和设备厂家的app斗智斗勇,要么享受HA网页操控的快感。


其次,以米家设备为例,同是网关,HA可以控制夜灯功能,获取光感数据,Homekit 则不能;而针对扫地机器人,HASS的接入方法十分复杂,且现阶段只能实现开关功能,HB的插件安装配置更为容易,且可以控制吸力……可以说两个平台之间没有绝对的胜者,都需要具体情况具体分析。个人认为大多数情况下,HA对设备的支持更好,并且基于社群支持,跟进速度也更快。


最后,初学者在驾驭两个平台的同时,二者必须取其一,同一设备请通过一个平台接入,否则未经“自定义设置”将产生冲突。


对于已经将设备通过 HB 接入,但想转入 HA 平台,这里提供如下兼容方案:


1、在 HA 接入相关设备,上文已经介绍过。


2、在 HA 主页面侧边栏,点击下方 “<>”,获取设备的 entity ID:

技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit

技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit



3、在 HA configuration.yaml 配置文件中添加如下设置:


则该设备将在 Homebridge 中被隐藏,重启后不会被家庭 APP 重复识别添加。

技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit


此时,可以通过 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 #离开后是否自动隐藏


经过自动化配置,可以真正实现人工智能。摆脱遥控的束缚、更换主题,展现个性、设置简洁大方的控制面板。

技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit


小米的接入


截止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 将失效。

技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit


空气净化器


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


往期干货


一“眼”认出独一无二的你 一文解析眼纹识别技术原理

畅享无线智能生活 一文解密无线充电技术如何实现?

开启无线设备通信新纪元 蓝牙mesh技术详解

智能音箱大火的背后推手—麦克风阵列技术解析


技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit

《智能家居》杂志第135期现已出刊上市

点击「阅读原文」即可购买

长按图片 识别二维码 订阅全年杂志

技术干货 | 玩转Home Assistant,手把手教你米家对接HomeKit

发表评论