Home Assistant (HA) 是一个免费开源的智能家居自动化平台,它致力于将你家中所有不同品牌的智能设备连接起来,并提供统一的控制界面,实现设备间的联动自动化。与依赖云端的智能家居平台不同,Home Assistant 强调本地化控制隐私保护。它是智能家居爱好者的终极控制中心,让你真正掌控自己的智能生活。

“拥有 Home Assistant,意味着拥有一个由你完全掌控的智能家居大脑。”


一、Home Assistant 是什么?

Home Assistant 是一个用 Python 编写的开源项目,它能让你本地运行智能家居控制中心。它支持超过 2000 个集成(integrations),可以与市面上绝大多数智能设备和服务进行连接,包括但不限于:

  • 各种协议设备:Wi-Fi、Zigbee、Z-Wave、蓝牙、MQTT 等。
  • 主流品牌设备:飞利浦 Hue、小米、宜家、Sonos、谷歌 Home、亚马逊 Alexa、各种智能插座、传感器等。
  • 服务集成:天气预报、日历、邮件、通知服务、网络设备(路由器、NAS)监控等。

核心优势:

  • 本地控制,注重隐私:大部分功能可以在本地网络中运行,不依赖云服务,数据不会上传到第三方。你的隐私得到最大程度的保护。
  • 强大的自动化:Home Assistant 提供了非常灵活和强大的自动化引擎。你可以根据传感器数据、时间、日落日出、人员状态等各种条件触发自动化。
  • 统一的用户界面 (Lovelace):将所有智能设备集成到一个直观的 Web 界面,可以高度自定义卡片、仪表盘,满足个性化需求。
  • 开放性和可扩展性:庞大的社区驱动开发,持续有新的集成和功能加入。你可以通过 YAML 配置深度定制所有功能。
  • 跨平台:支持多种部署方式(树莓派、Docker、虚拟机、NAS 等)。
  • 活跃的社区:拥有庞大且热情的全球社区,提供丰富的文档、教程和故障排除支持。

二、为什么选择 Home Assistant?

  • 打破品牌壁垒:不再受限于单个品牌的生态系统,你可以自由选择不同品牌的智能设备,并通过 Home Assistant 将它们连接起来。
  • 实现高级自动化:简单的“如果…就…”自动化已经过时。Home Assistant 可以让你构建复杂的自动化逻辑,例如“如果所有家人都离开家,并且窗户已关闭,并且是晚上,则关闭所有灯光并布防安防系统。”
  • 摆脱云服务依赖:许多智能设备在制造商的云服务器关闭后会变成“砖头”,而 Home Assistant 让你摆脱这种风险,即使互联网中断,你的本地自动化依然可以运行。
  • 数据安全与隐私:你的所有传感器数据、设备状态等都存储在本地,而非上传到第三方服务器。
  • DIY 乐趣:对于喜欢动手、探索和定制的用户,Home Assistant 提供了无与伦比的乐趣和成就感。

三、部署前的准备

Home Assistant 有多种安装方式,这里主要介绍两种最常见的部署方式:Home Assistant Operating System (HAOS)Home Assistant Container (Docker)

1. 部署方式选择

  • Home Assistant Operating System (HAOS)

    • 优点:最简单、最官方的部署方式。HAOS 是一个基于 Linux 的操作系统,专门为 Home Assistant 优化,集成了 Home Assistant Core、Supervisor、Add-ons (插件商店) 等所有组件。提供了最完整的体验,包括图形化的升级和备份。
    • 缺点:通常需要一个独立的硬件 (如树莓派、NUC 或虚拟机)。如果你想在现有服务器上同时运行其他服务,HAOS 可能不适合,因为它会接管整个系统。
    • 适用人群:智能家居入门用户、希望获得最完整和最稳定体验的用户、拥有独立硬件的用户。
  • Home Assistant Container (Docker)

    • 优点:最灵活的部署方式。你可以在任何支持 Docker 的 Linux、Windows、macOS 系统上运行 Home Assistant,与服务器上的其他 Docker 容器共享资源。适用于 NAS、Mini PC 或现有服务器用户。
    • 缺点:不包含 Supervisor 和 Add-ons 商店。你无法直接从 Home Assistant 界面安装插件,需要手动部署其他 Docker 容器来替代插件功能(例如 MQTT Broker、文件编辑器等)。
    • 适用人群:有 Docker 使用经验的用户、希望在现有服务器上共存其他服务的用户、希望最大化资源利用率的用户。

本教程将主要侧重于 Home Assistant Container (Docker) 的部署,因为这在 NAS 和通用服务器上更为常见和灵活。

2. 硬件要求

  • 一台运行 Docker 的服务器(NAS、树莓派 4B/5、NUC、Mini PC、旧电脑等)。
    • CPU:双核及以上 CPU。对于小型部署,树莓派 4B 足够。随着设备和自动化增多,建议更强的 CPU。
    • 内存:建议 2GB 及以上,随着集成的设备和自动化增多,建议 4GB 及以上。
    • 存储:建议使用 SSD 存储,可以显著提升 Home Assistant 的响应速度和数据库操作性能。至少 8GB 空间,建议 32GB 及以上。

3. 软件要求

  • Docker 和 Docker Compose:确保你的服务器已安装。
  • SSH 客户端:用于连接服务器进行命令行操作。

四、部署 Home Assistant Container (Docker)

这种部署方式是在现有的 Docker 环境中运行 Home Assistant Core。

1. 创建目录结构

通过 SSH 连接到你的服务器,创建一个目录来存储 Home Assistant 的配置数据。

1
2
sudo mkdir -p /opt/homeassistant/config
sudo chmod -R 777 /opt/homeassistant/config # 确保容器有读写权限

注意: /opt/homeassistant 仅为示例路径,你可以根据自己的喜好和 NAS 的卷结构调整。

2. 创建 Docker Compose 文件

进入刚刚创建的目录,并创建一个 docker-compose.yml 文件。

1
2
cd /opt/homeassistant
sudo nano docker-compose.yml # 或者其他你喜欢的编辑器,如 vi

将以下内容粘贴到 docker-compose.yml 文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
version: '3'
services:
homeassistant:
container_name: homeassistant
image: ghcr.io/home-assistant/home-assistant:stable # 使用稳定版镜像,或者 specific version
# image: homeassistant/home-assistant:latest # 另一个镜像源,但官方推荐 ghcr.io

# 网络模式,通常 host 模式更简单,方便 Home Assistant 发现局域网设备
network_mode: bridge
# 或者用 bridge 模式,需要手动映射端口
ports:
- "8123:8123" # Home Assistant Web UI 默认端口

volumes:
- /config:/config # 映射配置文件目录
- /etc/localtime:/etc/localtime:ro # 同步时区

# 对于需要访问 USB 设备的情况,例如 Zigbee/Z-Wave 棒
# devices:
# - /dev/ttyUSB0:/dev/ttyUSB0 # Zigbee / Z-Wave USB Stick
# # 如果有多个USB设备,可以添加更多行,或映射整个/dev/ttyUSB*
# # 确保 /dev/ttyUSB0 是你的设备路径,可以通过 ls -l /dev/ttyUSB* 查询

environment:
# 在某些系统上,PUID/PGID 可能有助于文件权限
# - PUID=1000
# - PGID=100
- TZ=Asia/Shanghai # 设置时区

restart: unless-stopped # 容器崩溃或服务器重启后自动重启

配置说明:

  • image: ghcr.io/home-assistant/home-assistant:stable:使用 Home Assistant 官方容器注册表的稳定版镜像。
  • network_mode: host推荐使用。 让 Home Assistant 容器直接使用宿主机的网络堆栈。这样 Home Assistant 就可以更容易地发现局域网中的各种智能设备(如 Hue Hub、智能电视等),而无需复杂的端口转发或 Bridge 网络配置。缺点是容器不再拥有独立 IP。
  • volumes:
    • /opt/homeassistant/config:/config核心配置数据。 将宿主机的 /opt/homeassistant/config 目录映射到容器内部的 /config。Home Assistant 的所有配置、数据库、日志等都会存储在这里,实现数据持久化。
    • /etc/localtime:/etc/localtime:ro:同步容器与宿主机的时区,避免时间显示错误。
  • devices: (如果需要)
    • 如果你有连接到服务器的 Zigbee 或 Z-Wave USB 棒,你需要将这些设备映射到容器内部,以便 Home Assistant 能够访问它们。
    • 你需要通过 ls -l /dev/ttyUSB*ls -l /dev/serial/by-id 命令来确定你的 USB 设备的实际路径。
  • environment:
    • TZ=Asia/Shanghai:设置容器的时区。
    • PUID/PGID:在某些文件权限敏感的系统上,设置这些环境变量以确保容器的用户拥有正确的权限。通常对于 Docker 部署,默认用户 root 权限足够。

保存并关闭文件。

3. 启动 Home Assistant 容器

/opt/homeassistant 目录下,执行以下命令来启动 Home Assistant:

1
sudo docker compose up -d
  • docker compose up:根据 docker-compose.yml 文件创建并启动服务。(旧版本 Docker 可能需要用 docker-compose 命令)
  • -d:表示在后台运行容器。

如果一切顺利,Home Assistant 容器应该已经启动并运行。

4. 检查容器状态和日志

1
2
sudo docker ps -a | grep homeassistant
sudo docker logs -f homeassistant # 查看实时日志,检查是否有错误

在日志中,你可能会看到一些 Home Assistant 启动和设备发现的信息。

5. 访问 Home Assistant Web UI 进行初始化

打开你的浏览器,访问 http://你的服务器IP:8123

首次访问时,你需要进行初始化设置:

  1. Welcome: 创建你的第一个管理员账户(用户名和密码)。
  2. Name your Home: 为你的家起一个名字,并设置地理位置、时区和海拔高度。这些信息对于一些基于位置和日照的自动化非常重要(例如,日出时开灯)。
  3. Discovered devices: Home Assistant 会自动扫描你的本地网络,并列出它发现的所有兼容设备。你可以选择立即设置它们,或者稍后再添加。
  4. Finish: 完成设置。

现在,你已经进入了 Home Assistant Lovelace 界面。

五、首次运行后的配置与使用

1. 添加集成 (Integrations)

这是 Home Assistant 的核心。通过添加不同的集成,你可以将你的智能设备连接到 Home Assistant。

  1. 在 Home Assistant Web UI 中,点击左侧导航栏的 设置
  2. 点击 设备与服务
  3. 点击右下角的 添加集成 按钮。
  4. 搜索你家中的智能设备品牌或协议(例如:Philips HueXiaomi MiotMQTTZigbee Home Automation)。
  5. 按照提示完成集成配置。

常见集成示例:

  • MQTT:如果你的设备支持 MQTT 协议,你需要先部署一个 MQTT Broker (例如 Eclipse Mosquitto)。然后在 Home Assistant 中配置 MQTT 集成。
  • Zigbee/Z-Wave:如果使用 USB 棒,你需要安装 Zigbee2MQTT 或 ZHA (Zigbee Home Automation) 集成,或 OpenZWave/ZwaveJS 集成,并确保 USB 棒已正确映射到容器。
  • HomeKit Bridge:Home Assistant 可以模拟 HomeKit Hub,让你通过 Apple Home 应用控制未原生支持 HomeKit 的设备。
  • 通知服务:设置 Notify 集成,可以通过 Telegram、微信(PushDeer)、邮件等方式发送通知。

2. 创建自动化 (Automations)

这是 Home Assistant 的魅力所在。

  1. 在 Home Assistant Web UI 中,点击左侧导航栏的 设置
  2. 点击 自动化与场景
  3. 点击右下角的 创建自动化
  4. 你可以使用图形界面来配置“触发器 (Triggers)”、“条件 (Conditions)”和“动作 (Actions)”。
    • 触发器:什么时候自动化会开始运行?(例如:传感器值变化时间达到天黑
    • 条件:自动化只有在满足这些条件时才会运行。(例如:只有当所有人都离家时只有当温度高于25度时
    • 动作:自动化启动后会做什么?(例如:打开灯发送通知调整空调温度

3. 定制仪表盘 (Lovelace UI)

Lovelace 是 Home Assistant 的用户界面。你可以高度自定义它,创建多个仪表盘,添加不同类型的卡片来显示设备状态、传感器数据、图表、照片等。

  1. 在主界面的右上角,点击三个点 (菜单) -> 编辑仪表盘
  2. 你可以添加新卡片、调整卡片位置、更改布局。
  3. 对于高级用户,可以通过 YAML 模式进行更深度的自定义。

4. 外部访问 (可选,但推荐)

如果想在家庭网络外部访问 Home Assistant,你需要:

  • 固定 IP:为你的服务器或路由器设置静态 IP。
  • 路由器端口转发 (Port Forwarding):将外部端口转发到 Home Assistant 的内部 IP 地址和 8123 端口。
  • 域名和 SSL (非常推荐)
    • 注册一个域名并使用 DDNS (动态 DNS) 服务。
    • 通过 Nginx Proxy Manager 或 Caddy 等工具设置反向代理,并配置 SSL 证书(如 Let’s Encrypt),实现 HTTPS 安全访问。
    • Home Assistant Cloud (Nabu Casa):如果你不想自己配置端口转发和 SSL,可以考虑订阅 Home Assistant Cloud (Nabu Casa)。它能提供简单的外部访问和 Alexa/Google Home 语音助手集成,并且费用可以支持 Home Assistant 的开发。

六、常见问题与注意事项

  • 文件权限:确保 /opt/homeassistant/config 目录对 Docker 容器的用户有读写权限。如果遇到 Permission Denied 错误,通常是权限问题。
  • MQTT Broker:如果你计划使用 MQTT 设备,你需要独立部署一个 MQTT Broker,例如 Eclipse Mosquitto,作为另一个 Docker 容器。
  • Zigbee/Z-Wave 设备:确保 USB 棒已正确映射到容器内部,且服务器的驱动已安装。
  • 备份:定期备份 /opt/homeassistant/config 目录,这是你 Home Assistant 的所有配置和数据所在。
  • 性能:随着集成设备和自动化的增多,Home Assistant 可能会消耗更多资源。监控你的服务器资源使用情况,并在需要时升级硬件。
  • YAML 配置:虽然 Home Assistant 提供了图形界面来创建自动化,但很多高级功能和调试仍然需要编辑 YAML 文件。学习一些 YAML 基础知识会很有帮助。

七、总结

Home Assistant 是一个强大、灵活且高度可定制的智能家居平台。通过本地部署和开放性,它为你提供了前所未有的智能家居控制权和隐私保护。虽然入门可能需要一点学习曲线,但一旦你掌握了它,你将能够打造一个真正属于你自己的、无缝联动的高级智能家居系统。

开始你的 Home Assistant 之旅吧!一个全新的智能生活正在等待你。