在云服务器上从零搭建 Home Assistant + 米家设备接入完整教程

水宝灬 发布于 阅读:5

在云服务器上搭建 Home Assistant 接入米家设备

最近把 Home Assistant(HA)从本地迁移到了云端服务器,通过小米云端 API 接入家里的米家设备。这篇文章记录了完整的踩坑过程,如果你也有类似需求,照着做就行。

为什么选择云端方案

米家设备在家里,服务器在云上——不在同一个局域网。传统 HA 需要局域网直连设备,但用 Xiaomi Miot Auto 云端模式就不需要,所有通信走小米云 API。

优点

缺点

环境准备

我用的是一台 2 核 4G 的腾讯云服务器(Ubuntu 24.04),上面已经跑了 nginx、宝塔面板、EMLOG 博客等。

最低配置建议:1 核 2G 就能跑,但 2 核 4G 更舒服。

第一步:安装 Python 3.13

HA 最新版(2026.x)要求 Python ≥ 3.13.2。服务器自带的是 3.12,不够。

uv 装 Python 3.13 是最省心的方式:

# 安装 uv(如果没有)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 安装 Python 3.13
uv python install 3.13

第二步:创建虚拟环境并安装 HA

# 创建 venv
uv venv /opt/homeassistant/venv --python 3.13

# 安装 Home Assistant
source /opt/homeassistant/venv/bin/activate
uv pip install homeassistant

安装过程大概 2-3 分钟,会自动解析 90+ 个依赖包。

第三步:初始化并启动

# 创建配置目录
mkdir -p /opt/homeassistant/config

# 启动 HA(首次启动会初始化数据库,比较慢)
source /opt/homeassistant/venv/bin/activate
hass --config /opt/homeassistant/config

启动后访问 http://服务器IP:8123,进入 onboarding 页面创建管理员账号。

第四步:配置 systemd 自启

创建 /etc/systemd/system/homeassistant.service

[Unit]
Description=Home Assistant
After=network-online.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/homeassistant
ExecStart=/opt/homeassistant/venv/bin/hass --config /opt/homeassistant/config
Restart=on-failure
RestartSec=5
Environment=PATH=/opt/homeassistant/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable homeassistant
systemctl start homeassistant

第五步:安装 HACS

HACS 是 HA 的第三方插件市场,Xiaomi Miot Auto 需要通过它安装。

由于 GitHub 在国内访问不稳定,建议:

  1. 在电脑浏览器打开 https://github.com/hacs/integration/releases/latest/download/hacs.zip
  2. 下载后上传到服务器 /opt/homeassistant/config/custom_components/hacs.zip
  3. 解压:unzip hacs.zip -d .
  4. 确保文件结构是 custom_components/hacs/__init__.py 这样的

重启 HA 后生效。

第六步:安装 Xiaomi Miot Auto

同样需要手动下载:
https://github.com/al-one/hass-xiaomi-miot/releases

下载 xiaomi_miot.zip,解压到 custom_components/xiaomi_miot/

重启 HA。

第七步:配置小米云端接入

  1. HA 前台 → 配置 → 设备与服务 → 添加集成
  2. 搜索 Xiaomi Miot Auto
  3. 选择小米账号登录(云端模式)
  4. 输入小米账号密码
  5. 设备自动同步,完成

踩坑记录

1. aiodns 报错

症状TypeError: Channel.getaddrinfo() takes 3 positional arguments

原因:aiodns 3.2.0 与 Python 3.12+ 不兼容

解决:升级到 Python 3.13 + HA 最新版,彻底解决

2. ffmpeg 缺失

症状FileNotFoundError: [Errno 2] No such file or directory: 'ffmpeg'

apt-get install -y ffmpeg

3. nginx 反代后 400 错误

HA 默认会校验 Host header,反代需要在 configuration.yaml 里加:

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 127.0.0.1
    - ::1

4. 设备删了又自动回来

云端模式下,删除的设备会在下次同步时自动恢复。需要在 Xiaomi Miot Auto 的集成配置里排除不需要的设备。

效果

目前接入了 20 个设备,覆盖卧室和客厅:

后续计划

有问题欢迎留言讨论 👇

Home Assistant 云服务器 教程 智能家居 米家


扫描二维码,在手机上阅读