Home Assistant 中文文档 下载 App

WiFi 与 Bluetooth LE 设备接入

WiFi 设备

WiFi 是最常见的智能家居设备协议——灯泡、插座、摄像头、传感器、空气净化器等几乎所有设备都有 WiFi 版本。Home Assistant 接入 WiFi 设备有几种方式:

方式一:厂商原生集成(最佳)

很多厂商的设备在 Home Assistant 官方集成列表里:

厂商集成名特点
飞利浦 Huehue局域网直连 Hue Bridge,不走云
小米 / Aqaraxiaomi_miotMIoT 协议,支持大多数小米设备
SONOFFsonoff / tasmota局域网 API 或刷 Tasmota 固件本地控制
TP-Link / Kasatplink局域网 API
Yeelightyeelight局域网 UDP 协议
Xiaomi Mijia (旧版)mijia_cloud需要米家账号,走云
Amazon Alexaalexa_mediaAlexa 设备的媒体控制
Google Homegoogle_homeGoogle Home / Nest 的媒体和设备控制

添加路径:Settings → Devices & services → Add integration → 搜索厂商名。

方式二:刷 Tasmota 固件

很多 SONOFF、BlitzWolf、Kogan 等设备可以刷 Tasmota 固件(开源),刷完后设备开放 Mqtt 和 HTTP API,完全本地控制:

刷好 Tasmota 后,Home Assistant 用 MQTT 集成就能接。

方式三:ESPHome DIY

如果设备支持 ESP8266/ESP32(绝大多数 WiFi 设备的芯片),可以用 ESPHome 自己写固件——完全本地、可定制、和 Home Assistant 深度集成。详见 ESPHome 页面。

Bluetooth LE 设备

蓝牙 LE(BLE)是低功耗短距离协议,适合电池供电的小设备(温湿度传感器、门锁、体重秤)。Home Assistant 内置了 BLE 扫描器。

Home Assistant 内置 BLE 集成

Home Assistant OS 在支持的硬件上自动开启 BLE 扫描:

Home Assistant 内置支持的 BLE 设备:

设备集成功能
Mi Band / 小米手环xiaomi_ble步数、心率、电量
Aqara 温湿度传感器xiaomi_ble温度、湿度、气压
Govee 灯光govee_btled颜色控制
一些体重秤xiaomi_ble / 其他体重、体脂
BlueMaestro 温度/湿度bluemaestro温湿度数据
RuuviTag 传感器ruuvitag环境监测

BLE 扫描范围

蓝牙扫描受限于:

如果家里大、设备分散,可以用 ESPHome 代理——在远程放一个 ESP32 设备作为蓝牙扫描代理,把扫描到的数据通过 WiFi 传给 Home Assistant。

Container 部署的 BLE 问题

Docker 部署时,Home Assistant 容器默认访问不到蓝牙适配器。解决方案:

  1. 在宿主机安装 BlueZ:apt install bluez
  2. Docker run 时加 --net=host -v /run/dbus:/run/dbus:ro 和 --cap-add=NET_ADMIN
  3. Home Assistant 就能访问宿主机的蓝牙

或者更简单——在 Home Assistant OS 上跑,BLE 直接就能用。

MQTT:万能中间件

MQTT 是 Home Assistant 的瑞士军刀——任何支持 MQTT 的设备都能接入,不管它走的是 WiFi、Zigbee 还是蓝牙。

Home Assistant 有两种 MQTT 使用方式:

内置 Mosquitto Broker(Home Assistant OS)

  1. Settings → Apps → 搜索 Mosquitto(官方推荐的 MQTT Broker)
  2. 安装并启动
  3. Settings → Devices & services → Add integration → MQTT → Configure
  4. 默认自动连接到安装的 Mosquitto

手动配置

如果已经有 Mosquitto(跑在 NAS、路由器等),MQTT 集成可以连外部 Broker:

mqtt:
  broker: 192.168.1.100
  port: 1883
  username: user
  password: pass

MQTT 设备在 Home Assistant 里的定义

通过 mqtt: platform 在 YAML 里定义 MQTT 实体:

mqtt:
  switch:
    - name: "车库门"
      command_topic: "home/garage/door"
      payload_on: "open"
      payload_off: "close"
      state_topic: "home/garage/door/state"
      state_on: "open"
      state_off: "closed"

这段 YAML 会创建一个 switch.garage_door 实体,订阅 home/garage/door/state 主题获取状态,往 home/garage/door 主题发送命令。