从零开始,围绕 Home Assistant 构建家庭自动化中枢

Awaken your home.

此前的文章提到,笔者在家中部署了 10GbE 的局域网络,无线网络接入采用了 Ubiquiti 的 UniFi nanoHD 吸顶部署完成覆盖。在进行全屋弱电系统设计之初,就有计划引入一部分可以远程采集、控制的弱电设备。后来在部署过程中踩了不少坑,也中途变更过方案,草草以此文记录之。

Table of Contents

平台选择:商用与个人消费领域的十字路

提起家庭自动化,在个人消费领域有 Apple HomeKit、Google Home、Amazon Alexa 等平台,国内则是米家的 MIoT,还有之前和米家合作的 Aqara 等。而在酒店、写字楼等商用领域的主流则是 KNX 协议,KNX 并不是某家商业公司的产品或平台,而是一个全球性的住宅楼宇控制标准,由企业去设计生产符合 KNX 协议标准的设备。

平台的选择限制了后续智能设备的挑选:

KNX 的稳定性和开放性是最高的,而且有成千上万设计给酒店、写字楼、大型商场的设备可以选择,但出于对家装工人技术的不信任,这种需要额外布线,需要专业强弱电知识的平台首先被笔者放弃。

相反,商业公司的平台接入成本较低,不需要前期施工的基础,一般是基于 Wi-Fi、以太网等协议接入互联网,通过 Zigbee、BLE 等协议进行设备间通信。但选择商业公司的平台注定要同时接受其封闭性,经常会出现两家企业闹掰(例如小米与 Aqara)导致心仪的设备无法接入平台的情况;加上互联网企业 mobile first 趋势,将来可能会出现开个灯都需要找手机的尴尬情况;最后但最重要的一点是,这类型设备普遍具备互联网连接能力和固件更新能力,一方面设备间联动需要互联网连接,路由器故障会导致设备间联动失效,还有过度收集信息之嫌。同时,在局域网中部署一台有计算能力、能联网更新固件的第三方设备十分危险——一个提权漏洞就足以让智能设备成为跳板让黑客骇进内网。科技公司对安全有多重视,可以参考两年前 Intel 的 Spectre 和 Meltdown 漏洞,更别说是在新兴市场追逐占有率的中国企业了。

在这个商用与个人消费领域的十字路,笔者想起了老朋友, Home Assistant(下面简称 HA)。

Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.

三年前初识 HA 之时,大部分配置都必须通过编写 yaml 配合 Python 下的 Jinja 模板引擎,现在的 HA 大部分场景已经可以通过 UI 完成操作了。

现在,拉起 HA 只需要一个 Docker 镜像,妈妈再也不用担心我的 Python 版本有兼容性问题了。

version: "3"
services:
homeassistant:
image: homeassistant/home-assistant:stable
restart: always
network_mode: host
volumes:
- ./homeassistant:/config
environment:
TZ: Asia/Hong_Kong

设备选择:眼花缭乱,我全都要

小米多模网关

笔者第一个看上的设备是小米多模网关(ZNDMWG03LM),通过 Wi-Fi 接入互联网,支持 Zigbee 3.0、Bluetooth、Bluetooth Mesh 三种协议。

mi-gateway-3

诸君别误会,笔者没有打自己的脸,选择这款网关并不是计划使用它的米家平台,而是有位俄罗斯开发者 AlexxIT 基于这款网关固件的一个漏洞开发了插件 XiaomiGateway3,支持将网关及其子设备接入 HA。顺便提一句,这个漏洞可以在网关上开启一个没有密码保护的 Telnet,所以这也是笔者不信任智能设备的原因。

聊小米的网关,就不能不提它与 Aqara 的爱恨情仇。在最初,Aqara 这家深圳公司拿到了小米的投资,多了个中文名绿米。Aqara 负责为小米代工网关和传感器,后来除了代工,Aqara 生产的传感器都能被米家官方支持。Aqara 的技术栈都是基于 Zigbee 的,小米最初的低功耗智能设备也顺理成章基于 Zigbee。但 Zigbee 这套协议需要网关才能协同,小米糊里糊涂地卖半天,发现不行——总不能让那些买完红米手机顺手买了个 39 块的温度传感器的客户,回到家发现看温度还需要再买一个比传感器贵十倍的网关吧?这朋友没交到,却成了年轻人的第一次退货。小米低头看着自家手机里的 Bluetooth 芯片,打起了 Bluetooth Mesh 的主意,从 2018 年开始小米的智能设备就全面转向 Bluetooth Mesh 这个 2017 年才刚刚确定标准的协议,换言之大部分手机安装米家 App 就能和设备通讯。而 Aqara 这边也不再单纯陪着小米交个朋友不赚钱,搭上了 Apple HomeKit 的大船,同时推出了不少品质更高、溢价更高的设备。

这也是小米多模网关同时支持 Zigbee 和 Bluetooth 的原因,总不能让消费者买个新款网关的同时把家里旧的 Zigbee 设备全换了吧。

说个题外话,Aqara 的 G2H / M1S / M2 也有开发者在研发通过破解固件接入 HA 的方法,有兴趣的读者可以给个小星星留意一下。

Aqara 智能墙壁开关 D1

d1

D1 款开关是 Aqara 最后一款能接入小米多模网关的墙壁开关,后续的 T1 / H1 两款开关升级到了 Zigbee 3.0 但无法接入小米多模网关,只能接入 Aqara 网关,在目前 Aqara 网关暂时无法接入 HA 的情况下不太适合购买。

另外需要注意的是,墙壁开关也是用电器,正常情况下需要零火线构成回路。传统的家装是不会在开关部署零线的,这种情况下只能选择单火版本。单火版本比零火版本有更严格的功率限制,而且单火版本会在回路断开时间断性接通来偷电,所以对用电器有一定的损害。有条件强烈建议使用零火版本。

⚠️ 注意:后续推出的智能墙壁开关 E1已支持接入小米多模网关,并升级到了 Zigbee 3.0,不建议再购买老款的 D1 开关。

DAIKIN 中央空调网关(DTA117C611)

笔者人生中第一个智能硬件是小米的空调伴侣,居住在每年 4 - 11 月都需要开空调的广州,到家前十分钟打开空调,进门就马上能感受到凉意,绝对是大幅提升了生活品质,这个定时+地理围栏触发空调是笔者使用最频繁的智能场景。在搬家之后,房子安装的是中央空调,空调伴侣便显得不合适了,中央空调一般使用面板控制,支持红外的面板一般是额外选配的。除了空调伴侣,还有其他选择吗?

实际上,在办公室、酒店、会场广泛使用的中央空调,被远程控制的需求是更强烈的,而且业界早就有成熟而广泛使用的解决方案了,以笔者选择 DAIKIN 空调为例,使用的是 Modbus 协议。通过选配的空调网关,网关通过 Modbus 协议控制空调,并向局域网提供基于 TCP 协议的服务。虽然官方只提供 App 操作,并没有公开协议格式,但有开发者通过逆向工程与抓包,还原了大部分协议格式,并以 HA 组件的方式提供出来

对于其他中央空调,还可以考虑选购第三方的网关,例如中弘公司生产的 VRF 多联机空调温控器,但记得检查是否符合安装条件,主要是网络接入和电源供电。

传感器与其他设备

除了上面提到的智能硬件,笔者还购买了下述硬件接入 HA:

  • Aqara 水浸传感器(Zigbee)
  • Aqara 温湿度传感器(Zigbee)
  • Aqara 人体传感器(Zigbee)
  • Aqara 无线开关(Zigbee)
  • 小米全自动智能门锁(Bluetooth Mesh)
  • 米家电子温湿度计 Pro(Bluetooth Mesh)
  • 海康威视摄像头(rtsp)
  • 石头扫地机器人 T7(miio)

购买这类设备时候注意设备能接入到小米多模网关或者能直接接入 HA 即可。

All rights reserved
Except where otherwise noted, content on this page is copyrighted.