在物联网(IoT)飞速发展的今天,你是不是也遇到过这样的场景——家中五花八门的智能设备,各自都需要依赖自己的 App 或云端才能完成控制?

米家的灯、涂鸦的窗帘电机、Aqara 的传感器……这些品牌林林总总,但往往无法彼此联动,用户也只能在不同的 App 间频繁切换。对于刚开始接触智能家居的人来说,这还算勉强能接受;可一旦设备数量多起来,或你想做更复杂的自动化场景,操作就变得繁琐凌乱。

在这样的背景下,Home Assistant(HA) 横空出世。它是一个开源、免费且可在本地部署的智能家居控制平台,目标是为家庭中所有智能设备提供一个“中央大脑”。不论是 Wi-Fi、Zigbee、Z-Wave 等协议,还是国内外各大品牌,Home Assistant 都能用“集成(Integration)”的形式汇聚到同一个界面里,用一套逻辑来统一调度、管理和控制。

Home Assistant 最早于 2013 年在 GitHub 上发布,经过十年左右的发展,已成为 GitHub 上 Star 数量最多的智能家居项目之一(可以说是没有之一)。它的开发者社区异常活跃,不但保持了一周或两周就更新一次的频率,而且又衍生出丰富的官方/社区插件和可选功能。这种高度的模块化与可扩展性,让很多极客玩家和技术团队视它为搭建“私有智能家居中枢”的不二之选。

如果我们将居家的所有智能设备比作乐队里的不同乐器,那么 Home Assistant 就是那位指挥家,通过精准的指挥和规则安排,协同所有“乐器”在恰当的时间演奏、变调或休止,从而奏出和谐美妙的“音乐”——也就是高效、舒适并贴合个人需求的家居环境。

为什么选择 Home Assistant(HA)?

  1. 打破单一品牌束缚,实现跨制造商的产品集成:
    无论是米家、涂鸦、Aqara 还是飞利浦、博联等厂商的设备,Home Assistant 都可以将它们纳入同一个管理面板,避免你在多个手机 App 间来回切换。对用户来说,这才是真正的“互联互通”。
  2. 掌握自己的数据,守护隐私:
    当智能家居数据只存储在本地时,你就不必再担心被不断推送的广告或数据外泄可能带来的隐患。Home Assistant 作为一个“私有化平台”,可以让你的数据与操作习惯牢牢掌控在自己手里,不必依赖任何第三方云端。
  3. 高度灵活的自动化逻辑:
    不同品牌设备之间的联动,往往是最能体现智能化价值的部分。比如:
    • 回家时,窗帘自动打开、灯光调到柔和模式。
    • 检测到温度或湿度超标时,自动开启空调或除湿机。
    • 夜间模式下,某些场景触发自动地更柔和,不会吵醒家人。 这些之前需要多个平台或大量编程才能实现的细致情景,在 Home Assistant 里通过图形化配置或简单的 YAML 配置就能完成。
  4. 社区生态与可扩展性 (社区活跃、功能扩展性强):
    Home Assistant 的插件系统异常活跃,像 HACS(Home Assistant Community Store)为你提供了海量的第三方扩展和主题皮肤。你可以毫不费力地下载并安装这些扩展,为自己的智能家居系统赋予更多创意功能。
  5. 界面好看、配置简单(不是核心,但不会第一眼把小白用户吓住) 经过层层迭代,HA 于 2019 年采用的 Lovelace UI 提供了现代化且可定制的仪表板界面,不再需要你从头编写大量代码;即便是零基础用户也能快速上手。

HA 作为开源智能家居平台的典范,GitHub Star 数量最大的 Smart Home 项目,让它受欢迎三个点

  • 开源且免费(你不必太担心恶意代码,不用为强大的功能支付费用)
  • 社区活跃(插件集成丰富)、文档清晰
  • 简单易用(相对于其它开源平台,不用过多的进行代码配置)、界面好看而不失简约(Project Grace based on Lovelace UI);

选择什么样的 HA?

HA 现在提供了 Home Assistant Operating System、Home Assistant Container、Home Assistant Core 和 Home Assistant Supervised 四种安装方式

  1. Home Assistant 的起源和核心:Home Assistant Core
    • 背景:
      • 诞生时间: 2013 年。
      • Home Assistant 起初是一个纯 Python 应用,设计为在本地运行的开源家庭自动化平台,用户可以通过配置 YAML 文件来管理和控制智能设备。
    • 定位: Home Assistant Core 是 Home Assistant 最原始的形态,专注于平台核心功能和集成能力。它是一种灵活但需要一定技术基础的安装方式。
    • 特性:
      • 运行环境: 直接在 Python 环境中运行(需 Python 3.10+)
    • 适用人群: 开发者、高级用户或想完全控制系统环境的人。
    • 优点:
      • 灵活,用户可以自由选择运行环境(如裸机、虚拟环境)。
      • 依赖最少,更新周期灵活。
    • 缺点:
      • 无图形化管理界面(如备份、插件管理)。
      • 手动管理依赖和更新。
    • 类比: 就像一个 DIY 工具箱,功能强大但需要用户自己组装。
  2. Home Assistant Container 的出现:轻量化与灵活性
    • 背景:
      • 诞生时间: 随着 Docker 容器技术的普及,Home Assistant 项目团队推出了 Home Assistant Container 版本。
      • 动机: 解决开发者和高级用户希望在容器化环境中运行 Home Assistant 的需求,同时与更复杂的 Home Assistant Supervised 区分开。
    • 特性:
      • 运行环境: 作为 Docker 容器运行。
    • 适用人群: 熟悉 Docker 的用户。
    • 优点:
      • 易于部署和移植。
      • 支持用户自定义容器环境,与其他容器化服务(如数据库、Node-RED)无缝协作。
      • 不依赖特定操作系统。
    • 缺点:
      • 无 Home Assistant 的附加功能(如插件系统和备份)。
    • 类比: 像一个轻便的旅行箱,可以随时搬到任何 Docker 支持的地方,但功能需要手动配置。
  3. Home Assistant Supervised 的诞生:插件与管理集成
    • 背景:
      • 诞生时间: Home Assistant 项目逐步扩展功能时,为了解决用户对更全面的管理工具需求而推出。
      • 动机: 将 Home Assistant Core 和其附加功能(如插件、备份、更新管理)集成到一起,同时允许用户保留操作系统的完全控制权。
      • 曾称为: 早期版本叫 “Hass.io”。
    • 特性:
      • 运行环境: Docker + Supervisor 服务(允许在任意 Linux 系统上安装)。
    • 适用人群: 想使用 Home Assistant 的附加功能但又希望保留操作系统控制权的用户。
    • 优点:
      • 支持插件(如 MariaDB、Mosquitto MQTT)。
      • 图形化管理界面。
      • 自定义性较强,用户可选择自己的底层 Linux 系统。
    • 缺点:
      • 需要手动维护底层 Linux 环境,且可能与更新的官方要求不兼容。
      • 安装稍复杂。
    • 类比: 像定制版操作系统,你可以享受高级功能但仍需自己维护基础环境。
  4. Home Assistant Operating System:一体化与开箱即用
    • 背景:
      • 诞生时间: Home Assistant 团队发现部分用户对操作系统和依赖的配置缺乏兴趣,推出了 Home Assistant OS 版本。
      • 动机: 提供开箱即用的完整解决方案,将 Home Assistant 和底层操作系统整合为一个独立系统。
      • 曾称为: HassOS。
    • 特性:
      • 运行环境: 定制的轻量化 Linux 操作系统(基于 Buildroot)。
    • 适用人群: 普通用户或不熟悉 Linux 的用户。
    • 优点:
      • 开箱即用,不需要额外配置操作系统或依赖。
      • 提供完整功能,包括插件、备份和图形化管理界面。
      • 自动更新操作系统和核心服务。
    • 缺点:
      • 操作系统不可定制,用户无法安装其他非 Home Assistant 的应用。
    • 类比: 像一台预装了所有应用的家电,用户只需通电即可使用。

时间线总结与对比:

安装方式诞生时间定位适合用户功能特点
Home Assistant Core2013基础版本开发者、高级用户最灵活,最小化功能,依赖 Python 环境
Home Assistant Container随后容器化轻量版本Docker 用户灵活的容器化部署,功能不包括插件和图形化管理
Home Assistant Supervised随后高级用户综合版本技术爱好者、定制需求用户提供插件和图形化管理界面,但需要维护底层 Linux 系统
Home Assistant OS较晚开箱即用完整版本普通用户开箱即用,提供完整功能但底层操作系统不可更改

推荐选择:根据需求

  1. 我喜欢技术折腾,想最大化控制环境: 选择:Home Assistant Core 或 Container。
  2. 我想要完整功能,但也希望保留对 Linux 系统的控制: 选择:Home Assistant Supervised。
  3. 我只想简单地用起来,不想管底层细节: 选择:Home Assistant OS。

作为普通玩家,选择 OS 就好了,不用太折腾底层,也会更加稳定、省心。

安装 OS 级别 的 Home Assistant(即 Home Assistant OS)意味着要完整安装一个专用操作系统。因此,只有像树莓派这种通过刷写 OS 镜像启动的方式,或者在虚拟机中部署,才能安装并运行 HA OS。

Step 1. 安装 Home Assistant OS

虽然 Home Assistant 支持许多种方式去安装,但对于身处国内网络环境以及不想深究 HA 内部的开发及管理,可以直接选择冬瓜 HAOS。

冬瓜 HAOS 是对官方的 HAOS 一个分支(fork),除了内置了常用的下载 加速 和预装了常用集成(Integrations)和 add-ons 外以及些许小工具,与官网毫无差别,特别适合没有良好网络环境的傻瓜用户。从烧录系统镜像到访问 HA 页面一般不会超过 20 分钟。

详情请访问:冬瓜 HAOS - Hassbian/瀚思彼岸

优势如下

  • 支持国内网络环境
  • 内置常用的下载加速
  • 预装常用集成(Integrations)和 add-ons
  • 附带小工具,操作更便捷
  • 从烧录镜像到访问页面仅需 20 分钟

选择你的硬件平台(如树莓派 4b),然后选择对应的镜像(系统)进行下载。

冬瓜 HAOS 下载指向链接

Step 2. 连接设备

当把 HA 系统镜像(软件)烧录(安装)到了你的设备之后,对于初学者来说,可以不用管 HA 的 IP 地址是什么。

当 HA 加载完毕,可以在浏览器输入 homeassistant.local:8123 访问 Home Assistant 页面「当然你可以通过移动端设备如手机 App 去帮你自动加入本地 HA 的服务器直接访问: iOS or Android 」。

Step 3. 添加设备

HA 已经内置了 3000 多个 Integrations(集成),里面存在的厂商和协议,你都可以接入;

添加小米家居设备

由于米家生态已经是国内智能家居的大头了,所以我们以添加一个米家设备作为开始。默认的小米集成只支持部分和有限的交互,所以我们最好是去安装一个小米组件:官方第三方

官方的插件采用了 MQTT 消息订阅的方式,而不是像第三方采用轮询去获取信息,所以官方的组件延迟会低很多,但是第三方 HA 组件发展比较久,有些功能用起来会更方便一些,比如现在(2025-01-14),只有第三方的组件才有小爱音箱的 STT 获取文本。也就是说如果你想用小爱同学去控制你的 DIY 设备或者其它设备,需要借助第三方组件去实现。

说了这么多,你完全可以下载两个组件,用官方组件管理传感器类型的,第三方组件来获取其它类型的设备信息。

基本概念 & 术语

对于 HA 的使用,我们需要了解一下 HA 应用中基本的概念,就像学习使用电脑那样知道什么是浏览器的菜单栏、链接等等概念。

HA 使用到的名词概念较多,但核心的有如下几个:Concepts and terminology - Home Assistant Add-ons

1. 集成 (Integrations)

  • Home Assistant 通过“集成”来支持各种品牌和协议的设备或云服务。
  • 常见集成如 Tuya、Aqara、Philips Hue 等,学员可以在“设置 → 设备与服务 → 添加集成”中直接搜索、安装。

2. 设备 (Devices)

  • 指现实中的智能硬件(如一颗温湿度传感器、一台空调、一把智能门锁等)在 HA 中的映射。
  • 每个“设备”下面可能会包含多个可以独立控制或读取的“实体”。

3. 实体 (Entities)

  • 更细化的逻辑对象,常见的实体类型包括“传感器 (sensor)”、“开关 (switch)”、“灯 (light)”等等。
  • 如果说“设备”是一个物理对象,那“实体”就是这个设备在 HA 系统中的各项可监测或可操作的子功能。

要发现对应的设备,必须要有对应的集成去管理、发现;对于实质的控制是针对于实体来的(但也由编写集成组件的人来定义)

4. 管理 (Organization)

Grouping your assets - Home Assistant

  • 区域 (Area): 按房间或区域将设备进行分组,如“客厅”“卧室”“厨房”等;
  • 楼层 (Floor): 当房屋有多层时,可以用此来对“区域”做更上层的划分;
  • 标签 (Labels): 用于快速检索或给设备/实体打上自定义标签,便于分类管理。

5. 加载项、插件 (Add-ons)

在 Home Assistant 中,Add-ons 是基于 Supervisor(的一种特殊功能拓展机制,主要用来为 Home Assistant 补充一些辅助服务或工具,而不必在系统外独立部署。常见的 Add-ons 包括:

  • Advanced SSH & Web Terminal 对于 OS,利用此插件可以方便的进行终端交互,访问 Editor 无法进行的层面;
  • File Editor 则给初学者带来最直观的配置文件编辑体验,主要用于基本的配置文件的 YAML 配置文件编辑。
  • Node-RED 用可视化编程提升自动化复杂度与可玩性;
  • ESPHome Device Builder 是 DIY 与硬件改造爱好者的得力助手;
  • EMQX 替换官方的 MQTT Broker,便于更加清晰的管理;

6. 自动化 (Automations)

6.1 基本的自动化 (Basic automations)

  • 触发器(Triggers): 事件(开关变化、时间调度、传感器数值超限等)
  • 条件(Conditions): 对触发条件作出进一步判断(如“只在晚上进行”或“只有在温度高于 30℃ 时执行”)
  • 动作(Actions): 要让系统执行的操作,比如“打开灯”、“发送通知”、“切换场景”等。

例如:当玄关门锁打开时,若时间在晚上 7 点后,则自动亮起客厅主灯,并播放背景音乐。自动化的“触发—条件—动作”三步曲。

6.2 场景 (Scenes)

在设置场景的时候, 可以以当前你的环境状态作为一个模板,比如,你在看书,那么可以复制当前的家庭情况为“看书”。

  • 一次性设置多个设备的目标状态,比如“回家场景”中灯光亮度、窗帘打开程度、音响音量等,全部只需一键切换。
  • 适合营造不同氛围或处理多设备联动,操作起来更省心。

场景是一个模板,当进入这个模板,就会按照这个模板去规划所有设备的行为。

6.3 脚本 (Scripts)

  • 类似一段可重复调用的“动作集合”,可与自动化逻辑或场景结合使用,减少重复配置。
  • 也可以在脚本内添加延时、条件等,构建更灵活的操作流程。

脚本只是执行器,没有任何的条件判断。

More to Read

Reference