ESP32 智能家居实战:用自制节点接入 Home Assistant 打造本地可控的传感与自动化
智能家居的痛点往往是两极化:要么被厂商云绑定、断网就变砖,要么现成设备没有你想要的那个特殊传感。ESP32 这块十几块钱、自带 Wi-Fi/蓝牙和一堆 GPIO 的小板子,正好是“自己动手做传感与控制节点”的最佳底座。再配上 Home Assistant 做统一编排,你就能搭一套本地可控、数据不出家的自动化系统。本文面向想动手的运维和 maker,给一套从选型、集成到具体项目、再到避坑的实操链路。
1. 为什么是 ESP32,而不是 Arduino 或成品
ESP32 的核心便宜是“无线 + 算力 + 低价 + 生态”四者齐备:板载 Wi-Fi 和蓝牙,Arduino 大多没有;价格比树莓派低得多,适合“一个房间一个节点”地铺;MicroPython 和 Arduino 框架都成熟,社区项目海量。它最擅长的是商业设备覆盖不到的场景——定制传感器、本地自动化、特殊控制器。但要清醒:它不取代所有商业智能设备,而是补上那块空白。预算紧、要本地可控、需要独特传感,选它最合适;纯“买个现成开关”的需求,没必要折腾。
2. ESP32 节点怎么接进 Home Assistant
三条路,按省事到灵活排:
- ESPHome(推荐新手):写一份 YAML 描述引脚和传感器,一条命令刷固件,HA 自动发现设备并生成实体,改配置不用写代码。
- MQTT(最灵活):ESP32 跑自写固件,通过 MQTT 主题上报状态、接收指令,适合 ESPHome 覆盖不到的复杂逻辑,但要自己管 broker 和主题约定。
- Matter(跨生态):想让设备被苹果/谷歌家庭平台直接识别时走 Matter over Thread,但调试复杂度高。
实战建议:日常传感全部走 ESPHome,真有自定义算法再上 MQTT,跨生态互通才考虑 Matter。
3. ESPHome 快速起步
一份最小温湿度节点 YAML:
esphome:
name: living-room-sensor
esp32:
board: esp32dev
wifi:
ssid: "你的SSID"
password: "你的密码"
api:
ota:
sensor:
- platform: bme280
temperature:
name: "客厅温度"
humidity:
name: "客厅湿度"
address: 0x76
4. 五个从易到难的项目
- 温湿度节点:BME280/DHT22 接 I2C,是最适合入门的项目,可做“超阈值开风扇”“湿度过高提醒”。
- 门磁:干簧管接一个数字 GPIO,门开/关变状态,通过 MQTT 或 ESPHome 上报,可做“门开超两分钟提醒”。
- 人体感应:PIR 或 mmWave 雷达接 GPIO,配合“夜间+有人”条件开走廊灯,比单纯 motion 触发实用。
- 风扇调速:温度传感器 + PWM 驱动直流风扇,按温度分档;交流风扇要用额定开关电路,不能直连。
- 空气质量:SEN66 这类传感器测 CO2/PM2.5/VOC,接 HA 做仪表盘和超标告警。
架构上建议分布式:每个房间一个节点负责自己的传感与控制,HA 做系统级逻辑,而不是把所有东西堆在一块板子上。
5. 强电安全:绝不能含糊的红线
ESP32 工作电压 3.3V,绝不能直连 220V。正确做法:低压侧用 GPIO 驱动一个隔离且额定足够的继电器/MOSFET 模块,再由这个经过认证、带外壳和熔断保护的器件去控制强电回路;强电布线要符合电气规范,必要时请有资质的人施工。实验阶段一律从低压直流负载起步。原则只有一条:低压逻辑与高压负载之间要有物理隔离和额定保护,ESP32 只出控制信号,绝不出力。
6. 别把全部逻辑赌在 Wi-Fi 和云上
Wi-Fi 有死角、拥塞和重启瞬断。缓解:关键本地自动化尽量在 HA 或 ESP32 本地完成,断外网也不影响“人来了灯亮”;给电池或关键节点设计离线/降级行为,用 MQTT 的 last-will 让 HA 知道节点掉线。节点分布式布置,一个板子挂了不影响其他房间。
7. 上线后的巡检与防退化纪律
自制节点比成品更“会悄悄退化”:电源纹波导致偶发重启、Wi-Fi 信道拥塞导致掉线、继电器触点粘连导致控制失灵。建立纪律:
- 每周:看 HA 里各 ESP32 节点的在线率和最后上报时间,发现长期沉默的节点。
- 每月:抽检强电节点的继电器温升和接线松动,这是火灾隐患点。
- 每次加节点前:先单板接电脑验证固件稳定,再上电带载;带载后再并入 HA。
- 红线:禁止 ESP32 直驱强电;禁止用面包板做长期强电实验;禁止把关键自动化只剩云端一条路径、无本地兜底。