孙亮亮
返回 智能家居

智能家居

智能家居窗帘光照联动实战:ESPHome 电机 + 光照传感器 + HA 日出日落自动化

2026年9月26日

用 ESPHome 接管 MQTT 窗帘电机并接入 BH1750 光照,在 HA 实现日出开窗帘、强光遮阳、傍晚关帘的全本地自动化。

智能家居Home AssistantESPHome窗帘自动化

智能家居窗帘光照联动实战:ESPHome 电机 + 光照传感器 + HA 日出日落自动化

摘要:本文以 ESPHome 驱动光照传感器、接管成品 MQTT 窗帘电机,在 Home Assistant(HA)中实现"日出开窗帘、强光遮阳、傍晚关帘"的全本地自动化,并给出固件配置与避坑清单。

一、为什么要把窗帘做成"会看光"的自动化

多数成品智能窗帘只支持 App 点按或语音,本质依赖厂商云:断网即失控,离家后状态不可控,还把"家里几点拉帘"这类作息隐私送上了云。更关键的是,它们不会根据光照主动动作——夏天正午西晒时客厅被晒到 40℃,窗帘却还开着。

把窗帘接入 Home Assistant 后,我们可以实现三个典型场景:清晨随日出自动拉开引入晨光;正午室内照度超过阈值时自动闭合遮阳;傍晚光线低于阈值自动关帘保护隐私。整套逻辑在局域网内本地闭环,不依赖外网。

二、硬件方案与选型

普通家庭建议走"成品电机 + 本地协议接管"的省事路线:

  • 窗帘电机:选 Zemismart、Tuya 系支持涂鸦串口协议的管状/开合电机(如 M515E)。这类电机内部是 Tuya MCU,可用 ESP32 刷 OpenBEKEN(LibreTiny)固件,把云协议换成本地 MQTT 指令,彻底摆脱厂商云。
  • 光照传感器:BH1750(I2C 数字光照,量程 1–65535 lux,误差约 20%)最稳;预算更低可用光敏电阻接 ESP32 的 ADC,但需做线性标定。

极客路线则是 ESP32 + 28BYJ-48 步进电机 + ULN2003 驱动板直接驱动轨道,成本最低但需 3D 打印支架、校准行程,不适合已装好轨道的家庭。

三、ESPHome 固件配置

以"ESP32 读取 BH1750 + 通过 Tuya MCU 控制电机"为例,关键片段如下:

i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true

sensor:
  - platform: bh1750
    name: "客厅光照 Lux"
    address: 0x23
    update_interval: 10s

uart:
  tx_pin: GPIO1
  rx_pin: GPIO3
  baud_rate: 9600

tuya:
# 通过 Tuya MCU 协议读取电机百分比位置并下发开关/停指令

BH1750 的 name 会作为实体出现在 HA;电机经 tuya 组件解析后暴露为 cover 实体,可直接用 cover.open/close/stop 控制,HA 端无需再写复杂驱动逻辑。

四、Home Assistant 自动化逻辑

核心是利用 sun.sun 实体的 elevation(太阳高度角)与光照传感器做组合判断。两条例程示例:

automation:
  - alias: 日出开窗帘
    trigger:
      - platform: numeric_state
        entity_id: sun.sun
        attribute: elevation
        above: 5
    condition:
      - condition: time
        after: "06:30"
    action:
      - service: cover.open_cover
        target: { entity_id: cover.living_room_curtain }

  - alias: 强光遮阳
    trigger:
      - platform: numeric_state
        entity_id: sensor.lux
        above: 30000
    action:
      - service: cover.close_cover
        target: { entity_id: cover.living_room_curtain }

傍晚关帘用 sun.sun 的 elevation 低于 -2 或固定时间触发即可。注意所有动作加当前位置判断,避免频繁抖动。

五、避坑与注意事项

  1. 行程校准:首次安装务必在电机 App 里完成上/下行程学习,否则 HA 里 100% 与实际位置不符。
  2. 传感器摆放:BH1750 要朝天、避开直射阳光和灯具,否则照度数值失真导致误动作。
  3. 断电回零:部分电机断电后位置归零,HA 重启会误判。建议在 HA 用 input_number 持久化"上次目标位置",恢复后校正。
  4. 动作抖动:光照在阈值附近波动会反复开关,务必在自动化里加 for: 00:02:00 持续时间判定。

小结

用 ESPHome 接管电机 + BH1750 做光照感知,再以 HA 的太阳高度角和照度做双条件触发,就能得到一套不依赖云、断网也能跑的窗帘自动化。落地成本可控(成品电机几百元 + ESP32 二十元),却显著提升了居住舒适度和隐私安全性。

本模块其他文章

把米家/涂鸦设备接入 Apple HomeKit:Homebridge 桥接与本地控制实战Home Assistant 蓝牙代理实战:ESP32 蓝牙中继扩展米家/涂鸦 BLE 设备覆盖Home Assistant 接入 Matter 设备实战:Thread 边界路由、多生态互通与本地自动化ESPHome 智能插座能耗监测实战:待机功耗摸底、定时断电与 Home Assistant 电费看板用 ESPHome 红外万能遥控把传统空调电视纳入 Home Assistant:码值学习与场景联动实战智能门锁与门禁接入 Home Assistant:指纹锁状态同步、临时密码与回家离家自动化智能家居漏水与燃气安全监测实战:ESPHome 传感器接入 Home Assistant 并自动关阀告警毫米波雷达存在检测接入 Home Assistant:LD2410 + ESPHome 解决人体感应误触发与无人区漏检Home Assistant 离线语音助手搭建:Whisper 语音识别 + Piper 中文 TTS 本地控制全屋把 Aqara/米家 Zigbee 设备接入 Home Assistant:ZHA 网关配置与回家离家自动化实战ESPHome 从零打造 WiFi 温湿度传感器并接入 Home Assistant:固件编译、配网与自动化联动Home Assistant 本地部署与 MQTT 设备接入实战:从 Docker 安装到自动化规则家庭能耗监测实战:用智能插座 + Home Assistant 把每月电费拆到每个电器毫米波人体存在传感器实战:彻底解决智能灯"人不动就关"的尴尬回家即亮灯、离家自动布防:用 Home Assistant 把场景自动化串起来Zigbee 还是 Matter?智能家居协议选型Home Assistant 本地优先实践
智能家居窗帘光照联动实战:ESPHome 电机 + 光照传感器 + HA 日出日落自动化 · 孙亮亮