前不久,小米官方发布了 Home Assistant 的米家集成,允许米家平台的大部分设备接入 Home Assistant,整个智能家居社区迎来了不小的狂欢。 但我也留意到,在我介绍米家官方集成的文章评论区里,有人向我发出了灵魂一问:用这个平台(Home Assistant)跟直接用小米平台啥区别?

要和这位朋友说抱歉的是,我没有回复——但并不是我高冷,而是我觉得需要解释清楚这个问题有些复杂。恰好距离过去写 Home Assistant 基础的文章也已经过去许多年,也正好趁着米家集成和 2024 年最后的一次 Home Assistant 更新及硬件的发布,来好好聊聊关于 Home Assistant 的一切:它是什么,有什么用,以及怎么去用这些基本问题了。

Home Assistant 是什么

用官方的标准介绍来说,Home Assistant(简称 HA)是一个开源的智能家居平台,允许不同品牌、不同协议和不同标准的智能家居设备接入,并通过它进行控制或实现自动化。但如果用更好理解的直白语言来讲,Home Assistant 就是一个与米家、Apple 家庭、Google Home 这样类似的智能家居平台,可以让智能家居设备加入到其中进行控制、管理或设置自动化。

不过,尽管 Home Assistant 也称为智能家居平台,但它与米家、Apple 家庭和 Google Home 这些大厂智能家居平台不同的是,Home Assistant 是一个开源的智能家居平台。作为开源软件,你不仅可以查看 Home Assistant 的完整源代码,还能将 Home Assistant 部署(即安装)在你的本地设备,如树莓派、NAS、旧电脑或其它虚拟机中。而得益于 Home Assistant 的本地化部署,你可以完全且自由地掌控自己的智能家居设备和数据。

开源,也意味着来自全世界开源社区开发者的支持和高度自定义,这便赋予了 Home Assistant 两个极为重要的特点:能接入成千上万的智能家居设备和平台,让你实现跨平台自动化;同时,还能让你自由地编写前端界面,自定义让什么设备显示出来。

Home Assistant 有什么用

接入不同平台、协议和品类的智能家居设备

上面「能接入成千上万的智能家居设备和平台」虽然只是一句简单的描述,但却概括了 Home Assistant 至今最伟大的成就。因为有全世界无数开源社区开发者的支持,Home Assistant 能支持几乎所有主流的智能家居设备、协议和平台,用户可以完全自定义 Home Assistant 的功能。

举一个简单的例子吧。你可以通过官方或第三方的「集成」功能,将智能家居设备添加到 Home Assistant 里;又或者给运行 Home Assistant 的设备增加各类硬件,如 Zigbee 模块、Thread 模块或蓝牙模块等,赋予它充当网关中枢和连接这些协议设备的能力;最后,如果你实在找不到满意的接入方式或 bug 太多,能力允许的情况下,你甚至可以自己给设备开发接入 Home Assistant 的硬件或集成。

目前,Home Assistant 官方已经支持包括 Apple 家庭、Matter 标准等设备直接接入,也能够通过官方开发的集成接入飞利浦 Hue、Nanoleaf、易来等设备。但除了官方之外,Home Assistant 还倚靠活跃的开发者开发的第三方集成,接入更多品牌、协议和平台的智能家居,如美的空调、德业除湿机及涂鸦智能、易微联等平台的设备。恰恰也正是这种积极活跃的社区开发氛围和用户基础,也反向地推动了厂商主动拥抱 Home Assistant,像是最近的例子小米。

桥接不同设备到不同平台

曾经 Home Assistant 最为人津津乐道的功能一定是「将米家设备接入 Apple 家庭」,我也围绕这个功能写过不少选题。但在 2025 年即将到来的时刻,Home Assistant 官方支持互相桥接的设备和平台其实相较之前并无太大变化,好在它内置的 HomeKit Bridge 依旧稳定发挥,相信也是绝大部分非 Apple HomeKit 智能家居接入 Apple 家庭用户的首选。

但随着 Matter 协议的到来,第三方开发者给 Home Assistant 增加了无限的可能性。前不久,有开发者为 Home Assistant 开发了 Matter 桥接工具,意味着你可以将接入了 Home Assistant 的设备暴露为 Matter 标准的设备,直接接入到 Apple 家庭、Google Home、三星 SmartThings 等这些支持 Matter 的平台去使用和控制,大大拓展了智能家居设备之间的互联互通。

这是一个前景十分璀璨的理想。Matter Hub 的出现,相当于过去一个极为普通的智能灯,通过 Home Assistant 的接入和 Matter Hub 的桥接之后,就能成为如今多个平台通吃的 Matter 设备,有望彻底打掉大部分智能家居生态的壁垒。

设置跨平台自动化

这是 Home Assistant 能接入海量设备带来的必然优势。由于 Home Assistant 对协议、平台和设备近乎来者不拒,都能靠在它这颗大树下乘凉,因此实现跨平台智能家居自动化对于已经接入 Home Assistant 的设备来说简直就是轻而易举的事情:你可以让米家的温湿度传感器帮你读温度数据,再通过 Apple HomeKit 的人在传感器查看人在不在,最后打开美的的空调,关上 Aqara 的窗帘和易来的灯。

尽管设备接入 Home Assistant 可能自动化条件会比原厂商的要少,但跨平台自动化的魅力实在让人无法抗拒。毕竟,相比起用「虚拟开关」这种复杂的跨平台自动化借道流程(而且厂商还可以随时选择关闭),谁能拒绝「我终于不用被捆绑在一家智能家居厂商里」和「各种产品随便挑反正都能接入」这种好事呢?

更重要的是,Home Assistant 的跨平台自动化全部都在本地,反应极快且数据安全更有保障。毕竟,能跑 Home Assistant 的设备里,几乎都要比厂商的网关、中枢性能更强且存储更大,处理你设定好的自动化绰绰有余,不需要经过网络发送到云端计算。

编写完全由你自定义的 UI 界面

也许你已经早就看腻了米家或 Apple 家庭的 UI 风格,想要尝试点新玩意,那么 Home Assistant 也不在话下。你可以在 Home Assistant 中完全自定义你的智能家居控制 UI,想要显示 / 不想要显示什么设备、如何分类 / 排列这些设备,全由你说了算。

我目前自己使用的 Home Assistant 前端 UI

与此同时,高度自定义的 Home Assistant 还允许你设置多个不同的 UI 界面,哪天看腻了就换一套,绝不重样。你甚至还可以给每个用户设定不同的 UI 界面,方便他们控制自己的设备。

Home Assistant 的缺点

完美无缺的事务只存在于想象之中,Home Assistant 亦是如此。前面讲述了 Home Assistant 如此多的优点,但它的缺点同样显而易见:太复杂,新手上手难度高。这就像是你自己盖房子,你当然可以按照你的规划和想象,想盖成什么样就盖成什么样,但这也意味着,在盖房子阶段你必须得了解物理学、建筑学、工程学和结构学,乃至后面装修还要学室内设计、室内装修和水电网气 —— Home Assistant 正好就是这座房子。

首先,就算如今图形化界面解决了很多曾经代码操作过于复杂的问题,但 Home Assistant 仍然需要用户对科技数码甚至代码都有一定的了解,否则别说使用,连安装都成问题。其次,你还要有对应的浏览、搜索和 debug 能力,知道要去哪里找教程,知道出问题的时候要去什么地方、用什么办法解决。最后,你可能还需要一定的审美和设计能力,以便于你设计自己的 Home Assistant 面板。

网上总是会有各种写了「新手小白」都能看懂的 Home Assistant 教程,但似乎作者们都默认了读者都有这些能力(又或者能对 Home Assistant 感兴趣的人都多多少少拥有这些能力?)。然而种种原因都表明,它并不是适合纯粹「新手小白」学习的内容。

官方的安装指南下就已经有 10 个分类

但如果这些都没难倒你,还是跃跃欲试,那我们就正式进入安装的过程吧。

Home Assistant 的安装

想要使用 Home Assistant,至少你得有一个设备能运行它。目前,Home Assistant 已经支持在许多硬件平台上运行:包括但不限于电脑、树莓派、工控机、NAS,以及 Home Assistant 官方出品的硬件 Green 和 Yellow 等。

但为了保障 Home Assistant 能时刻为你服务,选择一台常年开机且功耗较低的设备来运行它是最佳的选择,毕竟你也不想电脑一带出家门之后 Home Assistant 服务断开,导致家人发现设备全部显示「未响应」而疯狂催你回家吧。所以,对于这种需要稳定、持续运行的服务,NAS、工控机、独立的硬件其实是比电脑更好的选择。

安装种类区别

Home Assistant 提供了四种不同的安装方法,从简单到困难一应俱全。

目前来说,最好的方式仍旧还是选择独立的设备或独立设备中运行虚拟机来运行 Home Assistant Operating System,即 Home Assistant 打包好的操作系统。它可以支持 Home Assistant 的所有功能,直接将它刷入存储或下载镜像文件安装,即可一键部署好所有环境,近乎「开箱即用」。

但使用 Home Assistant 的人群里,还有大量「高级玩家」。对于这类人,Home Assistant 还准备了其它的安装方法,包括 Docker 安装、Core 安装和 Supervised 安装。不过,这些安装方法虽然能为高级用户提供一些功能,但它们在功能性上却有着不同限制,具体如下表:

安装种类Home Assistant Operating SystemHome Assistant ContainerHome Assistant CoreHome Assistant Supervised
自动化
仪表盘
集成
加载项
一键升级ℹ️1
备份ℹ️2ℹ️2
  • ℹ️1:Home Assistant Supervised 要求用户自己维护运行它的操作系统;
  • ℹ️2:Home Assistant Core 和 Home Assistant Container 可以通过用户界面创建备份,但需要手动恢复;Home Assistant Core 和 Home Assistant Container 的备份可以用在 Home Assistant 操作系统中恢复,或者完全依靠手动恢复。

这些功能在后面的常见概念中都有介绍,这里需要重点提醒的是加载项(Addons)。加载项是 Home Assistant 中提供附加功能的第三方应用程序商店,可以视为官方或社区开发的「插件」,通过它们可以显著增强 Home Assistant 的功能,例如数据库、备份工具、文件编辑器等。由于它运行在独立的容器中,与 Home Assistant 核心功能相对独立,所以只支持在 Home Assistant 操作系统和 Home Assistant Supervisor 中运行。

加载项商店

如果你需要深度使用 Home Assistant,那么加载项是不可或缺的。总的来说,为了体验到最佳的图形化操作体验和功能完整性,以及更简单快捷的安装方式,建议大家还是使用 Home Assistant 操作系统。

安装 Home Assistant Core

顾名思义,Home Assistant Core 是 Home Assistant 的核心组件,你可以将它部署在 Linux、Windows 和 macOS 系统之上,提供最基本的 Home Assistant 功能。这也是 Home Assistant 最初的安装方式。

要安装 Home Assistant Core,首先确保你的操作系统中已经安装好了 Python 3.13(包括 python3-dev 软件包)或更新版本。如果没有安装,请直接到 Python 官网下载或通过代码进行安装。

由于 Home Assistant Core 是最简的 Home Assistant,因此安装过程没有图形化界面,全程需要在终端使用代码操作,安装结果可能会根据网络的情况有所不同,且依赖项也有所不同或缺失,具体取决于你的系统或你需要使用 Home Assistant 的什么功能。但我相信,选择 Core 安装方式的你一定有自行解决这些问题的能力。下面我们以 Debian 系的 Linux 为例,其他系统请按需修改其中的命令。

# 更新软件源和所有已经按照的软件
sudo apt-get update
sudo apt-get upgrade -y

# 安装必要的依赖项
sudo apt-get install -y python3 python3-dev python3-venv python3-pip bluez libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff6 libturbojpeg0-dev tzdata ffmpeg liblapack3 liblapack-dev libatlas-base-dev

# 创建一个名叫 homeassistant 的账户,并添加到指定的附加用户组 dialout,gpio 和 i2c 组。
# 第一个是使用 Z-Wave 和 Zigbee 控制器所必须的组件,第二个是与 GPIO 通信所必须的组件。
sudo useradd -rm homeassistant -G dialout,gpio,i2c

# 创建一个 Home Assistant Core 的目录,并将所有者改为我们上面创建的 homeassistant 账户
sudo mkdir /srv/homeassistant
sudo chown homeassistant:homeassistant /srv/homeassistant

# 切换到 homeassistant 用户的上下文环境,再切换到相关的工作目录
sudo -u homeassistant -H -s
cd /srv/homeassistant

# 用 Python venv 模块在 /srv/homeassistant 创建一个虚拟环境并激活
python3 -m venv .
source bin/activate

# 安装成功并启动了虚拟环境后,终端的提示符会更改为
# (homeassistant) homeassistant@你的设备名称:/srv/homeassistant $)
# 这时候,就可以运行以下命令来安装所需的 Python 包。
 python3 -m pip install wheel
 pip3 install homeassistant==2024.12.5

需要注意的是,2024.12.5 是发稿时最新的 Home Assistant Core 版本。如果后续有更新,你需要将这行数字改为最新版,具体的最新版版本号可以在 Home Assistant 官网和 Home Assistant Core 的 GitHub 页面查看到。

Logo 的右边就有当前的正式版版本号

上面的代码全部成功运行后,就可以在终端输入 hass 来第一次启动 Home Assistant Core 了。这行代码会帮你跑完最后的安装程序,自动下载、安装和缓存必要的库和依赖项,自动在 /home/homeassistant 目录中创建 .homeassistant 配置目录,并安装所需的基本依赖项,整个过程可能需要 5 到 10 分钟,或因为网络原因导致失败。在此期间,你除了坐和放宽等待之外,还可能需要继续解决各种报错问题。当然,后面的启动就不需要再花上这么久了。

全部安装完毕后,你就可以通过浏览器的 http://homeassistant.local:8123http://你设备的 IP 地址:8123来访问 Home Assistant 了。

安装 Home Assistant 操作系统

Home Assistant 操作系统是一个基于 Linux 优化而来的全功能 Home Assistant,曾经也叫 HassOS。不过,它基于的 Linux 不是像 Ubuntu 这样的常规 Linux 发行版,而是使用 builroot 构建并为 Home Assistant 做了适配。它不仅可以在树莓派这样的单板计算设备上安装运行,也支持带有 UEFI 的 X86-64 主机。

一个树莓派第五代

Home Assistant 操作系统和其他操作系统的安装类似。相比于 Home Assistant Core 的安装,Home Assistant 操作系统就要简单不少。

树莓派

树莓派的安装非常简单。

第一步,是根据你的不同硬件,到这里下载对应树莓派的 Home Assistant 操作系统:

  • 树莓派第三代下载 haos_rpi3-64-X.X.img.xz
  • 树莓派第四代下载 haos_rpi4-64-X.X.img.xz
  • 树莓派第五代下载 haos_rpi5-64-X.X.img.xz

其中,X.X 是 Home Assistant 操作系统的版本,会随着时间不断更新。截至发稿前(2024 年 12 月末)的最新版本是 14.1。所以如果你用树莓派 5,你下载到的文件就是 haos_rpi5-64-14.1.img.xz

下载完成后,再到这里下载并安装 Balena Etcher。选择「从文件烧录」,选择你刚下好的适用于树莓派的 Home Assistant 操作系统镜像。然后,将树莓派用的 MicroSD 卡连接到电脑,在「选择目标磁盘」下选中这个 MicroSD 卡,点击「现在烧录!」即可。

Balena Etcher 会提醒你烧录过程会对 MicroSD 卡进行格式化,如有资料请提前做好备份。等待烧录完成后,将 MicroSD 卡插进树莓派,上电开机就宣告安装完成了。

X86 主机

其实 X86 的安装方法与 PE 下安装 Windows 类似,但由于 X86 主机的存储并不像树莓派那样可以随意插拔,而且 PE 下大部分的写盘工具也无法选择 Home Assistant 操作系统文件,因此要将 Home Assistant 操作系统写进去就有些复杂。

官方给出的方案是使用 Ubuntu 系统来替代 PE 系统,我们这里也采用这种方式。需要注意的是,给 X86 主机安装 Home Assistant 操作系统同样会对硬盘进行格式化操作,如果你此前的硬盘上有数据,务必进行备份。

要给 X86 主机安装 Home Assistant 操作系统,你需要准备这些工具:

  • 一台能用的电脑,操作系统随便;
  • 一个 8GB 以上的 U 盘,最好是 USB 3 或以上的协议;
  • 一套能够使用的键鼠和显示器(如需要);
  • 良好的网络连接。

第一步,到 Ubuntu 的网站下载一个 Ubuntu 操作系统的镜像文件,LTS 和普通版都可以。

第二步,按照树莓派安装的方式,将 Ubuntu 系统的镜像文件写入 U 盘。

第三步,将 U 盘插入需要安装 Home Assistant 操作系统的主机,连接好键鼠和显示器,开机。

第四步,开机后按下 F10 / F12 或 Delete(根据机型不同按键也不同,具体以机器为准)进入 BIOS,选择 U 盘启动。然后,在出现系统选择提示时,务必选择「Try Ubuntu」,否则会导致后续写盘失败

第五步,给 X86 主机连接网络,打开 Ubuntu 系统的浏览器,直接到这里找到 haos_generic-x86-64-X.X.img.xz 这个文件进行下载。同样的,X.X 指的是 Home Assistant 操作系统的版本,后面就不再赘述了。

第六步,点击 Ubuntu 系统左下角的「显示应用程序」,找到磁盘应用,打开它。

第七部,在左侧的磁盘列表中,找到 X86 主机内置的、你想要安装 Home Assistant 操作系统的磁盘,选中它。

第八步,点击右上角的三个点,在弹出的菜单中点击「恢复磁盘镜像」,选择刚刚下载的 Home Assistant 操作系统文件,点击开始恢复并确认,等待写盘完成。

恢复磁盘映像:选择三个点菜单
图片来自 Home Assistant 官方安装教程

最后,写盘完成后,将 X86 主机关机,然后拔掉 U 盘、显示器和键鼠的连接,再次启动,X86 小主机就自动启动到 Home Assistant 操作系统了。

虚拟机安装

在智能家居玩家中,有不少人都选择将 Home Assistant 安装到 NAS,我也不例外。这里我以我使用的威联通举例,演示如何在虚拟机里安装 Home Assistant 操作系统。

进入威联通 NAS 的后台,在 App Center 里安装好《Virtualization Station 虚拟工作站》,接着,还是到这里下载最新的 Home Assistant 操作系统虚拟机镜像 haos_ova-X.X.vmdk.zip。下载完成后先解压,然后上传到 NAS 的任意一个文件夹中。

第二步,给虚拟机创建存储目录。在 NAS 里任意一个你顺眼的位置(比如 VM)创建一个文件夹,就叫 HomeAssistant 吧,用来存储你 Home Assistant 虚拟机产生的数据。

第三步,我们需要先进行虚拟机的映像转换。打开 NAS 上的 Virtualization Station 虚拟工作站 App,点击右上角的三个点,在「工具」目录下找到「映像转换器」,选择你刚刚上传的 vmdk 文件和转换后的保存位置,点击确定并等待一段时间。

转换好虚拟机镜像后,我们可以开始第三步。点击上方右侧的创建虚拟机按钮,按照以下步骤来填写:

  • 虚拟机名称:随便取,就叫 Home Assistant 吧;
  • 描述:随便写,不写也可以;
  • 文件位置:定位到你刚刚创建的 HomeAssistant 文件夹;
  • 操作系统:Linux;
  • 操作系统版本:Debian 9.1.0。

点击下一步来到自定义设置,同样按照以下步骤来操作:

  • CPU 型号:默认即可,无需调整;
  • CPU:你核心数够多就可以多分几个,一般一个也够用;
  • 内存:内存多就可以多分几个 GB 给它,建议 2G 以上;
  • 下方的选项不用改;
  • 启动选项下的 BIOS:UEFI

继续点击下一步。硬盘部分,直接删掉默认的硬盘,然后点击新增,选择「添加现有硬盘」,然后选择我们刚刚转换好的虚拟机文件。

接着就来到了网络设定、CD/DVD ROM 设置和配置其他设置,一般默认,直接下一步即可。

到了这里,设定就完成了,点击建立并启动虚拟机。然后点开左下角的虚拟机屏幕,等待一段时间,直到虚拟机页面显示下方的界面,就可以在下方找到 Home Assistant 的 IP 地址。在浏览器中输入这个 IP 地址,然后加上 :8123 ,就能进入到 Home Assistant 后台管理界面了。

第一次启动 Home Assistant 操作系统时,同样需要安装一些依赖,依据网络情况的不同,需要等待大概 20 分钟或更长,耐心等待即可。如果报错了,请检查自己的网络情况,然后重新启动虚拟机。

至此,我们就在 NAS 的虚拟机里安装好了 Home Assistant 操作系统。

Proxmox VE 安装

除了上述方法以外,Home Assistant 官方还提供了很多其他安装方式,具体可以移步这里查看。不过 Home Assistant 并没有为开源社区备受欢迎的 1 类虚拟机管理器(也被称为虚拟机管理平台) Proxmox VE 提供完整的 Home Assistant 系统安装方法,所以我们这里也简单介绍一下。

 

首先前往这里下载好适用于 KVM/Proxmox 版本的 Home Assistant 系统镜像,解压缩并上传到 Proxmox VE 路径下(在本案例用将以 /root 目录为例);你也可以直接在 Proxmox VE 节点的终端中使用 wget 直接下载1并解压缩2

接着进入 Proxmox VE 的管理中心,按照以下步骤新建虚拟机:

  • 常规:根据自身情况填写,VM ID 需要记住;
  • 操作系统:选择「不使用任何介质」、选择「Linux」、选择「6.x - 2.6 Kernel」;
  • 系统:选择「q35」、选择「OVMF (UEFI)」、选择「EFI 存储」(要记住名称后续要用)、取消勾选「预注册密钥」;
  • 硬盘:删除所有的硬盘;
  • CPU:至少 2 个核心;
  • 内存:至少 2G 内存;
  • 网络:根据需求调整,一般不用动。

确认后,我们需要在 Proxmox VE 节点的终端中输入以下的命令来继续配置:

# 使用 qm 管理指令向一个虚拟机中加入一块现有的虚拟硬盘
# 比如:qm importdisk 104 /root/haos_ova-14.1.qcow2 local-lvm
qm importdisk <VM ID> </path/to/file.qcow2> <EFI location>

但这还没完,我们还要点开相关虚拟机的「硬件」标签页,选择「未使用的硬盘」,点击「编辑」,再点击「添加」。如果你存放虚拟机的位置是 SSD 的话,记得要在这一步把丢弃给勾选上。

接着点击「选项」标签页,选择「引导顺序」,点击「编辑」,勾选唯一的那个「scsi0」设备,取消勾选其余的设备。最后点击「OK」保存即可。

这时启动虚拟机,等待启动完毕,通过域名或者 IP:8123 访问即可。

安装 Home Assistant Container

Home Assistant Container 是采用 Docker 容器运行 Home Assistant 的方式,仅包含 Home Assistant 核心功能,没有 Supervisor,因此也不支持加载项和备份管理。不过,它简单、轻量化、跨平台、易安装和高度可定制的特点,也让它吸引了不少用户。

Home Assistant Container 可以安装在 Linux 设备、NAS 甚至是支持 Docker 的路由器上。这里我们以 Linux 设备和威联通 NAS 为例,演示如何将 Home Assistant Container 安装在这些设备中。

Linux 设备

首先,你需要自己先搞定 Docker 的安装,请参考 Docker 的官方网站。而且需要注意的是,Home Assistant 只能在 Docker 引擎(也称 Docker CE)下安装,直接从 Docker 官网下载安装的 Docker 桌面无法安装 Home Assistant。

不过好玩的是,因为 Windows 提供了 WSL(Windows Subsystem for Linux 2),即 Windows 下的 Linux 子系统功能,因此你可以通过套娃的方式,在 Windows 下安装 Linux 子系统,再在 Linux 子系统中安装 Docker Engine 进而实现在 Windows 下安装 Home Assistant Container。

截至发稿前,你的 Docker 版本最低支持到 19.03.9,最好目前的公开最新版,否则可能会出现错误。此外,你还需要安装好 libseccomp 2.4.2或更新的版本。

搞定 Docker 安装之后,就可以来安装 Home Assistant Container 了。首先,在主机系统下创建一个存储 Home Assistant 配置并运行它的文件夹,并记录下它的路径,如 /home/elliana/homeassistant

接着,给这个文件夹赋予权限,避免后续出现 Home Assistant 安装时无法创建文件的问题。

sudo chmod -R 777 <你的 Home Assistant 配置文件夹>

从 Docker 拉取 Home Assistant Container 的镜像:

docker pull ghcr.io/home-assistant/home-assistant:stable

接着,通过 Docker 命令启动 Home Assistant 容器:

docker run -d \
  --name homeassistant \
  --privileged \
  --restart=unless-stopped \
  -e TZ=MY_TIME_ZONE \
  -v /PATH_TO_YOUR_CONFIG:/config \
  -v /run/dbus:/run/dbus:ro \
  --network=host \
  ghcr.io/home-assistant/home-assistant:stable

其中,TZ 后面的 MY_TIME_ZONE 请替换为你所在的城市,一般国内填写 Shanghai 即可。后面的/PATH_TO_YOUR_CONFIG 字段需要替换为上面的文件夹路径。

这里展示根据我的时区和路径给出我的 Docker 完整代码供你参考,请根据你的不同调整上面两个参数。

docker run -d \
  --name homeassistant \
  --privileged \
  --restart=unless-stopped \
  -e TZ=SHANGHAI \
  -v home/elliana/homeassistant:/config \
  -v /run/dbus:/run/dbus:ro \
  --network=host \
  ghcr.io/home-assistant/home-assistant:stable

至此 Home Assistant Container 安装完成。你可以访问 http://<主机IP>:8123 进入 Home Assistant 图形化界面进行操作,同时可以在你的 Home Assistant 配置文件夹内看到 Home Assistant 生成的文件,如 config 下的 configuration.yaml

威联通 NAS

在 NAS 上安装 Home Assistant Container 要简单不少,毕竟目前大部分的 NAS 品牌都提供了图形化的 Docker 安装和管理应用。

进入威联通 NAS。在文件管理应用中的任意一个位置新建 homeassistant 共享文件夹,然后在文件夹内再创建一个 config 文件夹,用于存储 Home Assistant 所产生的配置文件。接着,在 App Center 中搜索《Container Station 容器工作站》,下载并安装。

点击右上角的「浏览」按钮,在弹出的创建容器或应用程序窗口内,搜索 homeassistant,找到官方的 homeassistant/home-assistant,也就是星标数最高的那个,点击右侧的部署。

接着选择映像版本,一般选择最新即可。随后根据图片中的设置一步一步进行操作。

名称随意即可,一般叫 HomeAssistant 啦。接着点击下面的高级设置:

  • 网络:选择自定义,然后在右侧的列表中选择 Host;
  • 环境:点击右上角的添加新变量,变量填写 TZ,值填写 Asia/Shanghai;
  • 存储:点击右上角的添加卷,选择「绑定装载主机路径」,主机选择你刚刚创建的 Home Assistant 配置文件夹,容器填写 /config。

最后点击应用,回到配置容器页面,点击下一步和创建,等待 Container Station 完成容器创建。

完成创建之后,你就可以通过 http://<你 NAS 的 IP 地址>:8123 来访问 Home Assistant 了。

安装 Home Assistant Supervisor

Home Assistant Supervisor 虽然提供了近似 Home Assistant 操作系统的完整 Home Assistant 体验,但却是一种比较特殊且麻烦的安装方式,只适合「知道为什么要选择它」的超级玩家。为此,官方也做了强提醒,告诉你这是一个几乎是需要你完全手动,且有特别多要求需要遵守的安装方式。例如,它只支持 Debian,其它的 Linux 发行版都无法安装。

尽管如今的安装方式已经简单了许多,但由于它的难度过高,这里就不再多介绍了。如果你确实感兴趣,可以从官方的安装指南找到具体的安装方法。

Home Assistant 中的常见概念

仪表盘

仪表盘每次打开 Home Assistant 默认显示的页面,是展示 Home Assistant 设备和实体的地方,也是我们通常说的 UI 控制界面,你可以在这里自定义添加你想要显示的设备和实体,以及它们的显示方式。

一个仪表板下可以有多个视图。你可以根据任何喜好来创建视图,例如房间、设备种类或场景等等,创建好的视图会出现仪表盘标题下方的选项卡中。视图下还可以有子视图,子视图不会显示在选项卡中,并且具有后退按钮。

Home Assistant 默认有概览、地图和能源三个仪表盘。你可以在「设置 > 仪表盘」里新增你的自定义仪表盘。

灯光视图

集成

也就是我们俗称的「插件」,是 Home Assistant 最主要的功能之一。通过集成,我们可以让 Home Assistant 连接到其它智能家居平台和设备。例如,你可以添加飞利浦 Hue 集成来让 Home Assistant 与 Hue 网桥连接,进而控制 Hue 网桥连接的设备;你也可以通过添加小米米家集成,让 Home Assistant 获得与米家设备和平台沟通的能力,进而接入米家的设备。

集成可以是本地的,也可以依赖于云端,它们会在集成卡片上显示。还有些集成不支持通过 UI 界面进行配置,需要在 config/configuration.yaml 文件里进行手动代码设置。

此外,你还可通过导入或从 HACS 商店下载官方没有收入的集成,例如米家集成。对于这些集成,它会显示一个自定义图标。

设备和实体

设备和实体贯穿了整个 Home Assistant。设备指的就是单个的智能家居设备,如灯、开关、传感器或其它硬件。实体则是在 Home Assistant 中具体保存和展示数据的构建块,从属于某个设备或服务,通常用来显示设备中的传感器、属性或功能,是不可分割的最小组成。展示设备具体状态、触发自动化都需要使用实体而不是设备。

一个设备可以只有一个实体,也可以多个实体。例如,一个插座可以只有一个「开关」的实体,一个温湿度传感器可以有温度、湿度、空气质量三个实体,一个空气净化器可以有空气净化器控制、温度、湿度、空气质量、铜锁开关、提示音开关等 N 多个实体。

仪表盘可以显示实体的状态。

区域、楼层

区域相当于房间,可以对设备和实体进行分类。区域可以调用为集体控制服务,例如关掉整个客厅的灯。楼层则位于区域的上层,如果你家住的大别野,就可以将几个区域添加到楼层里。

自动化与场景

自动化相信已经不用再解释太多,它们是 Home Assistant 乃至整个智能家居世界的最核心功能之一。Home Assistant 的自动化会在这里集中进行创建、展示和管理,包括由传感器、时间、天气和人在 / 不在等条件触发的全自动化和手动按下开关会触发的半自动化。

场景是一组设备的预定义设置,与 iOS 上的专注模式类似。例如,我的「夜晚工作」场景就是「打开屏幕挂灯、偏置照明、桌面氛围灯和桌底灯带,调整至白光和特定的亮度,关上窗帘」,那么我每次点击「夜晚工作」场景时,设备就会自动切换到我设置好的状态,而无需每次都单独设定。

脚本与蓝图

与自动化类似,脚本是可以运行的可重复操作,但和自动化之间的区别在于脚本没有触发器。这意味着脚本不能主动运行,除非你在自动化中调用它们,例如不同的自动化中执行相同的操作或从仪表盘触发它们。

蓝图(Blueprint)是预定义的自动化模板,也是一种共享和复用自动化的模板机制。用户可以分享自己的自动化蓝图,而其它用户可以直接下载这个蓝图导入到自己的 Home Assistant 中使用,只需提供必要的输入(如设备、触发条件)即可生成定制的自动化。它可以帮助用户快速创建自动化,而无需从头从 UI 进行设定或编写复杂的 YAML 配置文件。

新老玩法荟萃

安装好了 Home Assistant,你就可以通过集成来接入设备了。接入了设备之后,我们就能来探索一些更高级的玩法。这里总结了目前比较常见的三种玩法,为你日后玩转 Home Assistant 埋下垫脚石。

安装 HACS

HACS(Home Assistant Community Store) 是 Home Assistant 的一个第三方扩展商店,用于方便地安装和管理社区开发的自定义集成、前端插件、自动化蓝图和主题,帮助我们扩展 Home Assistant 的功能和外观。例如,米家集成就可以通过 HACS 到 Home Assistant 中。

要安装 HACS,首先需要保障网络的顺畅访问。对于能够使用加载项的 Home Assistant,直接点击这个链接即可一键进行安装,接着再在集成页面添加 HACS 集成,按照指引一步步就能搞定。

而对于 Home Assistant Container,你需要用连接到 Home Assistant 的终端,使用 docker exec -it <你正在运行 Home Assistant 的 Container 名字> bash 来进入容器里,接着使用 wget -O - https://get.hacs.xyz | bash - 来进行安装。

Home Assistant Core 的操作类似,只是在第二步换成了「更改为运行家庭助理的用户」。

值得一提的是,由于 HACS 官方服务器位于海外,国内访问可能会出现不畅的问题,因此有国内用户发起了 hacs-china 项目,类似于 HACS 的镜像版。它们也提供了非常简单的安装方式,具体可以参考这里

成功安装 HACS 后,你需要对它进行配置。来到「设置 > 设备与服务」界面,点击右下角的「添加集成」按钮,搜索 HACS 进行添加。在添加集成的过程中,需要你连接 GitHub 进行验证授权,具体可以参考官方教程的第六步进行设置,这里就不在重复介绍了。

搞定所有的步骤之后,你的 Home Assistant 侧边栏就会出现 HACS 的选项卡,点击进去你就可以在这里寻找到海量的新玩意。如果连 HACS 商店都没收录的,你还可以手动添加「软件源」,将对应的插件添加到 HACS 中一键安装、升级。

米家、美的接入 HomeKit

到了这里,关于 Home Assistant 的大部分「地基」都已经打好,我们终于可以开始「室内装修」了。过去,Home Assistant 就经常用来将不同平台的设备接入到 HomeKit,这里会以米家和美的设备为例,演示如何将它们添加到 HomeKit 并使用 Apple 家庭进行控制。

目前,米家已经有了官方的集成,而美的的集成为第三方开发者开发。不过由于他们还均未被 HACS 官方收录,因此需要通过自定义软件源的形式进行添加。

来到 HACS,点击右上角的三个点,选择「自定义软件源(Custom repositories)」,在下方的软件源(Repository)填写米家集成和美的集成的软件源地址:

下方的种类(Type)选择集成(Integration),然后点击添加(ADD)即可将它们添加到 HACS 中。接下来,只需要在 HACS 主界面搜索 Xiaomi Home 和 Midea AC LAN,进入到对应页面,点击右下角的下载按钮,然后重启 Home Assistant,就能将这些集成安装到 Home Assistant 了。

随后,我们再来到「设置 > 设备与服务」,点击右下角的添加集成,分别添加米家集成和 Midea AC LAN。米家集成的具体添加方法可以到这里查看,这里主要讲如何将美的设备添加到 Home Assistant。

添加 Midea AC LAN 集成后,来到添加新设备界面。第一次配置过程中,可能会被输入您的美的帐户和密码,用来从美的云服务器检索设备信息。搞定后,直接在添加设备界面选择「Discover automatically」,让 Midea AC LAN 自行搜索同一网络下美的设备即可。

这样,我们就成功将米家平台和美的平台的设备添加到了 Home Assistant,你已经可以在 Home Assistant 对它们进行查看和控制了。不过我们的目标不止于此,我们还要将它们添加到 HomeKit,方便我们使用 Apple 设备和 Siri 进行控制。

再次回到「设置 > 设备与服务」页面添加集成,搜索 Apple 并点击下面的「HomeKit Bridge」。之后的步骤就和这篇文章里的「接入 HomeKit」的部分一样,为了避免刷字数赚稿费的嫌疑,也还是不再重复撰写了。

Home Assistant 设备暴露为 Matter 设备

Matter 标准给智能家居行业带来了许多新机遇,而 Home Assistant 也迅速支持了 Matter 标准设备的接入。与此同时,第三方开发者也积极响应,开发出了 Home Assistant Matter Hub 插件,让接入 Home Assistant 的设备暴露为支持 Matter 标准的设备,让它们能方便地接入到其它 Matter 平台,实现了 Home Assistant 与 Matter 的「双向奔赴」。

Home Assistant Matter Hub 支持多种安装方法。最简单是用加载项引入,但由于 Home Assistant Core 和 Home Assistant Container 并不支持加载项,因此 Home Assistant Matter Hub 也提供了对应的安装方式,具体可以参考它的介绍页面进行安装。

这里我们以加载项商店的方式演示安装。和 HACS 类似,加载项商店也允许添加第三方软件源。点击「设置 > 加载项 > 加载项商店」,点击右上角的三个点,选择「仓库」,并在下方填写 Home Assistant Matter Hub 的地址 https://github.com/t0bst4r/home-assistant-addons

点击添加。完成之后刷新 Home Assistant,你就可以在加载项商店里安装 Home Assistant Matter Hub 了。在安装的过程中,记得把开机启动、自动恢复、自动更新和显示于侧边栏都打开,方便操作。

完成安装后,你就能在侧边栏看到 Home Assistant Matter Hub 的选项卡,点击它,就可以开始添加设备了。

点击「My Bridge」,再点击右上角的 + 号,就能来到桥接设定的界面:

  • Name(名称):给你的 Matter Bridge 命名。我习惯给不同设备类型分别设定一个 Bridge,方便管理,你可以根据你的需求来设置;
  • Port(端口):默认即可。每个不同的 Bridge 都必须有不同的 Port,每创建一个新的 Bridge,在末尾数 +1 即可。不过,Amazon Alexa 仅支持 5540 端口。

下方的 Include or exclude entities 用来添加你想映射为 Matter 标准的设备。其中,Include 是想要包含的设备,Exclude 是想要排除的设备。在它们之下,还包含几个字段:

  • pattern,可以在这里直接输入包含或排除的单个实体 ID;
  • domain:包含或排除的设备类型,如 Light 就是灯。具体的类型列表请参考这里;
  • platform:要包含或排除的集成;
  • label:要包含或排除的标签(不常用,基本用不上);
  • area:要包含或排除的 Home Assistant 区域。

例如,我的灯光 Brdige 里,先直接在 Include 下用 domain 字段的 Light 将所有灯添加进来,再在下方的的 Exclude 用 pattern 一个一个剔除掉不需要映射为 Matter 设备的实体,最终实现自定义将哪些灯光设备暴露到 Matter 中。

最后,点击 Save 保存设定,然后就可以用支持 Matter 标准的智能家居平台 App 扫码,以 Matter 在多个平台添加这些设备了。

总结

我终于写完这篇了,好累啊……

虽然我已经尽量尝试用简单的语言来讲述 Home Assistant,但写完之后发现它的门槛依旧很高,不适合完全不懂代码的小白用户。虽然「折腾的过程就是体会挫折与克服困难的过程」,但并不是所有人都有这样的信心和耐力。

不过不管怎样,能看到这里的你,肯定是对智能家居有浓厚的兴趣,相信这就是一个非常好的开始了。

*封面图片来自 Home Assistant 官方博客,作者 Clelia Rella。

> 关注 少数派小红书,感受精彩数字生活 🍃

> 实用、好用的 正版软件,少数派为你呈现 🚀