Docker 部署 Home Assistant 并接入米家与 ESPHome

2026.04.03 更新:

  • 使用 Home Assistant 米家集成取代 Xiaomi Miot Auto,把旧的 Miot Auto 加上了删除线
  • 补充 Portainer 安装方式
  • 注意:由于历史原因,文章排版是有些奇怪的

安装 Home Assistant

安装 Docker 环境后,运行命令:

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

或,在 Portainer 内新建 Stack,输入:

services:
  homeassistant:
    image: ghcr.io/home-assistant/home-assistant:stable
    restart: unless-stopped
    network_mode: host
    environment:
      TZ: Asia/China
    volumes:
      - /volume1/docker/homeassistant:/config #修改为配置文件目录
      - /run/dbus:/run/dbus:ro 

运行后访问 IP:8123 打开控制台页面进行初始化,注意初始化需要外网链接

这里省略初始化过程,简单点击几个按钮即可

安装 HACS

HACS 是 HA 的社区插件市场,无论是第三方还是官方的米家插件都需要它作基础

在命令行执行:

docker exec -it homeassistant bash
wget -O - https://get.hacs.xyz | bash -
reboot

或在 Portainer 内的 Container 列表里找到容器,点击命令行按钮

执行:

wget -O - https://get.hacs.xyz | bash -
reboot

点击左下角的齿轮图标,选择 设备与服务,然后点击 添加集成 在弹出的页面中搜索 HACS,并选择进行安装。 按提示输入 GitHub 授权码完成登录。

安装 Xiaomi Miot Auto

在左侧菜单中点击 HACS,搜索 Xiaomi Miot Auto,然后选择下载安装 下载完成后,重启 Home Assistant

注:已经有官方的插件了,在响应速度上比这个好,见下文

安装 Home Assistant 米家集成

在左侧菜单的 HACS 内搜索 Xiaomi Home,点击 Xiaomi Home 后在右下角安装,然后 HA 会自动重启

接入米家设备

点击左下角的齿轮图标,选择 设备与服务,然后点击 设备 点击添加设备,搜索 Xiaomi Miot Auto,并选择 Add devices using Mi Account 进行账号集成。 输入小米账号(即米家 APP 我的页面顶部的数字) 和密码。 在设备连接模式下,选择 Auto

在设备与服务页的右下角添加设备,搜索 Xiaomi Home,勾选了解风险后下一步,选择米家账号的地区和语言,在下一页点击登录,在跳转页正常登录小米账号,回到 HA 就自动登录上了(这里注意如果跳转到的 homeassistant.local 域名无法打开,手动修改为 HA 的 IP/网址),米家内的设备也自动同步了

安装 ESPHome

这里以 ESP32+DHT11 温湿度传感器为例 于使用 Docker 部署,无法直接通过 Home Assistant 添加插件

docker run -d  --name="ESPHome" -e TZ=Asia/Shanghai   -v /home/esphome:/config  -v /run/udev:/run/udev  --privileged  --restart=always  --net=host esphome/esphome

IP:6052

安装 ESPHome 到 ESP32

点击右下角的 NEW DEVICE,然后点击 OPEN ESPHOME WEB 在新页面中选择 CONNECT,选择 ESP32,并点击 INSTALL 进行安装, 安装完成后,进行 WIFI 配置,注意 ESP32 只支持 2.4GHz 的 WIFI 回到 ESPHome 页面,点击 ADOPT 当出现安装页面时,直接点击右下角的 STOP,我们将使用另一种更快的方法

接线

DHT11(有孔那面,由左到右) VCC DATA NC GND

VCC > 3.3V DATA > D2 NC GND > GND P.S: 这里需要注意,必须在 VCC 与 DATA 中串一个 4.7kΩ的电阻

编译固件

以下配置基于我的需求,请根据实际情况进行相应修改

substitutions:
  name: esphome-web-xxxxxx
  friendly_name: ESPHome Web xxxxxx

esphome:
  name: ${name}
  friendly_name: ${friendly_name}
  min_version: 2024.6.0
  name_add_mac_suffix: false
  project:
    name: esphome.web
    version: dev

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:

# Allow Over-The-Air updates
ota:
- platform: esphome

# Allow provisioning Wi-Fi via serial
improv_serial:

wifi:
  # Set up a wifi access point
  ap: {}

# In combination with the `ap` this allows the user
# to provision wifi credentials to the device via WiFi AP.
captive_portal:

dashboard_import:
  package_import_url: github://esphome/example-configs/esphome-web/esp32.yaml@main
  import_full_config: true

# Sets up Bluetooth LE (Only on ESP32) to allow the user
# to provision wifi credentials to the device.
esp32_improv:
  authorizer: none

# To have a "next url" for improv serial
web_server:

# Example configuration entry
sensor:
  - platform: dht
    pin: GPIO2 
    temperature:
      name: "Temperature"
    humidity:
      name: "Humidity"
    update_interval: 60s
pip install esphome 
esphome compile 0.yaml #修改成上方的 yaml 文件

编译后的固件位于.pioenvs\esphome-web-8ffb98\firmware.bin

ESP32 的 IP:80 OTA Update>选择 firmware.bin 文件>Update

接入 ESPHome

点击左下角的齿轮图标,选择 设备与服务,然后点击设备 点击添加设备,选择 ESPHome,并在主机字段中输入 ESP32 的 IP 地址(注意:这里输入的是 ESP32 的 IP,而非 ESPHome 服务端的 IP) 再后回到设备页面,应该会看到设备名为 ESPHome Web xxxxxx


[AD] 下方可能会显示来自赞助商的广告,请继续下滑到评论 ↓↓↓

广告位特价招租
支付宝扫码得红包,每天刷新

↑↑↑广告完结,感谢支持本博客 ヽ( ̄ω ̄〃)ゝ


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理