项目地址:https://github.com/home-assistant/core
Star:67 K
1 引言
最近去南方玩,住了一些智能酒店,自动开关电视、窗帘、灯、空调,还挺好用的,尤其喜欢关灯这功能。先不说它的理解能力(对同一命令的不同描述),单讲控制能力,还比较粗糙。比如:无法细化具体开关哪个灯;有的只能控制部分电器;有的只是把语音控制转换成遥控器按键,完成一个功能需要多个步骤…… 更喜欢住智能酒店的原因主要是:这些酒店多是这两年建的,比较新、比较干净。
对智能家居产生了一点兴趣。现在的智能家居用品真的不贵,比如小米的产品,就想要不也把自己家改造一下。刚好在 github 的趋势榜 top15 中看到了智能家居工具 Home Assistant,下面就一起来了解一下智能家居系统。
Home Assistant(后简称 HA)诞生于 2013 年,是一款基于 Python 的智能家居开源系统,它的主要功能是将不同品牌的智能家居设备连接起来互联互通,并将本地控制和隐私放在首位。
2 背景知识
2.1 使用方法
一般的操作流程是:用户通过语音与智能助理进行交互,或者用手机以及其它输入设备进行控制;通过主控设置或者直接与智能硬件连接;智能硬件可以作为输入产生数据如温度传感器,也可以作为输出设备接受控制如空调;用户还可以在主控中进行设置,比如在低温时打开空调,以实现智能家居的自动化。使用场景包括:智能音箱、手机、手表、PC、家电、汽车、交通等。
2.2 设备通讯
我们的计算机无法与智能设备直接通讯,常需要一些附加设备。智能家居有很多连接方式,目前主要使用的有:wifi 连接、蓝牙连接和 Zigbee 连接。
- WiFi:许多智能设备(如智能灯泡、智能插座、智能热水器)都支持 WiFi,可以直接通过家庭的无线网络与 HA 进行通信。使用的协议通常包括 HTTP、MQTT 等。
- ZigBee:许多低功耗的智能设备(如传感器、开关等)使用 ZigBee 协议。如需使 HA 与这些设备通信,需要外加一个 ZigBee 设备,如 ConBee 或 ZigBee2MQTT,设备可通过 USB 接口连接到运行 HA 的物理机上。
- Z-Wave:Z-Wave 是另一种常用于智能家居设备的无线通信协议。也需要一个 Z-Wave 控制器(如 Aeotec Z-Stick)连接到物理机上。
- 蓝牙:一些设备(如某些智能锁和温湿度传感器)使用蓝牙进行通信。如果物理机支持蓝牙,那么 HA 就可以直接与这些设备通信。
- 红外/射频:一些设备(如空调、电视和其他遥控设备)使用红外或射频信号进行通信。可以使用如 BroadLink 等红外/射频桥接设备,让 HA 能够控制这些设备。
3 功能和用途
3.1 用途
Home assistant 是一种智能家居总控软件,它通过一个软件控制各种智能硬件。轻松实现设备的语音控制、自动化;集中管理各品牌的智能家居,避免了在多个应用程序之间来回切换。当前的版本已经支持了 1000 多个模块,如果需要添加较新的设备,可以通过插件商店 HACS 安装新插件。此外,添加设备和设置自动化只需要在图形界面上进行操作,无需修改配置文件。
3.2 功能
- 集成设备和服务:HA 支持很多品牌和类型的智能设备,这些设备通常通过 API 接口与 HA 通信,而 HA 通过集成的通讯协议来实现对它们的控制和管理。
- 跨平台:HA 可以运行在不同的操作系统上,如:Linux, macOS,Windows,树莓派等。
- 自动化:允许用户设置设备之间的联动和自动化规则,通过多种触发器来实现复杂的功能,以提升智能化水平。
- 打通语音助手与智能家居:HA 支持通过 Google Assistant, Amazon Alex 虚拟助手来进行语音命令操作,进一步增强用户体验的便利性。除了控制硬件设备,也可通过组件方式提供服务,比如 openai 对话功能。
- 个性化扩展:HA 使用插件和组件的形式,允许用户安装第三方提供的功能和服务,以增加平台的可扩展性和个性化能力。
4 部署
我觉得,开始使用时,与其弄个树莓派从头开始学习刷系统,不如直接在计算机上安装 HA,外加一些 USB 设备来支持 ZigBee、Z-Wave 和红外设备,这样省时省力省钱。等到设备都能正常使用后,再考虑购买嵌入式硬件。
4.1 源码
$ git clone https://github.com/home-assistant/core
代码分析:
- 代码 100% 由 Python 编写,代码量 155W 行,其中一半是核心代码一半是测试用例。
- homeassistant/components 目录中包含组件,代码 68W 行,目前支持 1200 多种智能硬件和服务,前端、用户管理也分别作为组件实现。
4.2 部署
$ docker pull homeassistant/home-assistant:latest
$ docker run --rm -d --name homeassistant -v /exports/data/homeassistant/config:/config -e TZ=Asia/Shanghai -p 8123:8123 homeassistant/home-assistant:latest
docker 具体参数请参考:https://www.home-assistant.io/installation/linux
此时,可以在 8123 端口打开服务:
(设置时建议科学上网)
主站:https://www.home-assistant.io/
插件商店:https://hacs-repositories.web.app/
(建议科学上网,并使用英文搜索,如:xiaomi)
加入设备方法:设置 (左)->集成 (上)->添加集成 (右下)
5 一些想法
理想很丰满,现实却很骨感。目前来看,由于硬件的种种限制,能把灯和空调控制好就不错了。
随着自然语言大模型应用的进展,对语言理解的大幅提升,以及自动将复杂问题细化成简单问题。智能家居技术可能很快就能普及到普通家庭中。
统一管理不仅是智能家居领域的问题,几乎我们所有的数据都需要统一管理,也许能实现更广泛意义的互联互通和智能助手。而 HA 提供了很好的框架,让智能家居系统不再是一个黑盒,而是可以被我们所用。也许有一天,我们可以用某种方式把自己的”脑子“也作为模块接入。
6 参考
智能家居达人QA专栏篇十四:homeassistant最新教程,十几块钱DIY的空调伴侣升级版,增加更多选择和可玩性
好玩的开源项目 Docker下部署HomeAssistant智能家居系统
万物皆可HA?教你把各种智能设备接入Home Assistant 图文教程