ESPHome 光照传感器智能照明指南:一个周末搭好自动控灯系统

发布时间:2026/9/14 12:09:32

ESPHome 光照传感器智能照明指南:一个周末搭好自动控灯系统 ESPHome 光照传感器智能照明指南一个周末搭好自动控灯系统【免费下载链接】esphomeESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.项目地址: https://gitcode.com/GitHub_Trending/es/esphome推开门玄关灯已经根据天黑程度自动调亮——这不是智能家居套盒而是 BH1750 光照传感器加一块 ESP32用 ESPHome 的 yaml 配置写出来的环境光自动控灯方案。整套流程三步走完这篇指南把我踩过的坑也一起写给你。 先看成品最终效果光照低于 250 lx 持续 10 秒灯自动亮起光照高于 400 lx 持续 30 秒灯自动关闭两个阈值之间的空隙避免了临界抖动每晚 21:00 进入夜间模式灯光在 3 秒内缓降到 50% 亮度全程无需编程一份 yaml 搞定刷进 ESP32 就能跑。 备料清单角色型号接口关键规格主控ESP32 开发板WROOM 模组GPIO / I2C40 个以上可用 GPIOI2C 引脚任选光照传感器BH1750 数字光敏模块I2C量程 165535 lx供电 3.3V耐压 3.6V默认地址 0x23执行器WS2812B 灯带 逻辑电平 MOS 管AO3400单线数据 / PWM 控制灯带 5V 供电MOS 管隔离 GPIO 与灯带辅助4.7kΩ 电阻 2 个、面包板、跳线—用于 I2C 上拉 三步点亮1️⃣ 接线3.3V、上拉电阻和 MOS 管隔离三条接线纪律每条都有原因BH1750 供电只用 3.3V。芯片耐压上限 3.6V直接接 5V 会烧I2C 的 SDA、SCL 各接一个 4.7kΩ 到 3.3V 的上拉电阻。I2C 是开漏输出没有上拉总线无法拉高现成小模块一般已内置接线前看一眼板子确认灯带不能直接插 GPIO。WS2812 整条峰值电流轻松上 1AESP32 单个 GPIO 只保证 40mA。用 MOS 管或继电器做开关灯带走独立 5V 电源ESP32 与灯带共地GPIO 只控制 MOS 管的栅极。2️⃣ 配置一份 yaml 写全传感器、灯和输出新建smart_light.yaml。传感器驱动在 esphome/components/bh1750/sensor.py灯光抽象层在 esphome/components/light/light_output.h读数从 esphome/components/sensor/sensor.h 上报。esphome: name: hall-light platform: ESP32 board: nodemcu-32s wifi: ssid: !secret wifi_ssid password: !secret wifi_password i2c: sda: GPIO21 scl: GPIO22 scan: true sensor: - platform: bh1750 name: 玄关照度 id: hall_lux update_interval: 5s filters: - sliding_window_moving_average: window_size: 5 send_every: 3 light: - platform: monochromatic name: 玄关灯 id: hall_light output: strip_out default_transition_length: 1s output: - platform: ledc id: strip_out pin: GPIO4 frequency: 1000Hz sensor: # 传感器自身规则放在传感器下 - platform: numeric_state id: hall_lux_trig variable: hall_lux below: 250 for: 10s on_triggered: then: - light.turn_on: id: hall_light brightness: 1.0 - platform: numeric_state variable: hall_lux above: 400 for: 30s on_triggered: then: - light.turn_off: hall_light time: - platform: sntp id: hall_clock time: - platform: time_id id: hall_time script: - name: 夜间柔光 mode: once then: - light.turn_on: id: hall_light brightness: 0.5 transition_length: 3s关键参数取值理由参数取值为什么update_interval5s环境光变化很慢采样太频繁只会占 I2C 总线、放大读数抖动PWM frequency1000Hz低于 800Hz 肉眼能看到颗粒感1kHz 以上肉眼基本无感是 LEDC 的常用起点default_transition_length1s灯跟着传感器读数走渐变 1 秒以内能把读数波动吸收掉3️⃣ 自动化滞回阈值加持续时长防抖自动控灯别只写一个阈值。光照卡在临界值上时灯会一秒一翻。正确写法是上下限拉开一个滞回带低于 250 lx 开灯高于 400 lx 才关灯中间 250400 lx 是谁都不动区。再叠加for持续时长——必须连续 10 秒低于下限才动作路过的一瞬阴影、电梯门缝里闪过的人都不够 10 秒天然被过滤。时间触发的场景扩展每天 21:00如果天已经黑透照度低于 300 lx把灯缓降到 50% 亮度过渡 3 秒避免啪一下变暗。- alias: 夜间柔光 trigger: platform: time at: 21:00:00 condition: - lambda: return id(hall_lux).state 300.0; action: - light.turn_on: id: hall_light brightness: 0.5 transition_length: 3slight.is_on、light.dim_relative等动作条件都在 esphome/components/light/automation.py 里注册可查可组合。 部署与验证esphome compile smart_light.yaml # 本地编译先确认配置能过 esphome run smart_light.yaml # 编译并上传 esphome logs smart_light.yaml # 串口看日志验证顺序上电后串口先打 I2C 扫描结果看到Found 1 address(es): 0x23即 BH1750 在线logs窗口里每 5 秒刷出一条照度读数对着传感器遮挡、对着窗户看数值应单调地大起大落读数稳定后再看自动化拉窗帘压暗房间约 10 秒后灯亮把台灯光打到 400 lx 以上30 秒后灯灭。想深入读数链路可以顺着 esphome/components/sensor/sensor.cpp 找到publish_state的调用点那里就是数值离开驱动的位置。️ 踩坑实录坑一读数上下乱跳灯跟着抽风。现象是日志里照度在 230270 lx 之间反复横跳卡在阈值附近灯每几十秒开一次关一次。原因有两个BH1750 自身的输出噪声约 1%3%加上窗外树叶影子扫过会造成瞬时毛刺。我的解法是给传感器加sliding_window_moving_average滑动均值滤波窗口 5、每 3 次上报一次再配合自动化的for: 10s持续时长双重防抖之后灯彻底不抽了。坑二亮度调到一半灯带肉眼可见地闪。我把 PWM 频率设成 500Hz低亮度下红绿通道占空比太小闪烁很扎眼。把frequency提到 1000Hz 之后闪烁消失。如果你调到 1kHz 还有闪先查共地——灯带电源和 ESP32 的地没接在一起时抖动会比频率问题更明显。 还能玩什么加一颗 PIR环境光决定亮度人体红外决定开关人来才亮比单纯看天黑省电得多接 Home AssistantESPHome 刷好后默认接入 HA照度曲线、能耗统计、跨房间联动场景都能在 UI 里配升级 RGBW 灯带把monochromatic换成rgb平台按色温分时段调光白天偏冷、入夜偏暖。✅ 收尾一个传感器、一份 yaml、三次按键自动控灯就跑起来了。想继续往下挖各模块的源码都在 esphome/components 目录下按组件名直接翻。项目主页在 ESPHome 仓库欢迎 Star 跟踪后续版本。【免费下载链接】esphomeESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.项目地址: https://gitcode.com/GitHub_Trending/es/esphome创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/14 12:04:32

SpringBoot+Vue音乐推荐系统:协同过滤全流程实现

简介:这是一套基于Spring Boot与Vue实现的协同过滤音乐推荐系统,专为计算机专业本科生毕业设计、课程设计及期末大作业打造,兼顾算法原理理解与全栈工程实践,适合零基础开发者快速上手。资源包共893个文件,涵盖104个Ja…

2026/9/14 12:04:32

常数模算法CMA在自适应滤波器中的原理、Python实现与参数调试指南

简介:一个名为cma.rar的压缩包,面向正在学习自适应滤波器与CMA算法的通信、信号处理方向学生或工程师,内容聚焦滤波器权重更新、误差优化及卡尔曼滤波等核心概念,并针对实践中的常见疑问提供代码示例。资源仅含2个文件&#xff0c…

2026/9/14 13:04:38

多Agent协作如何通信?hermes peer协议与全栈实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 13:04:38

SpringBoot电商系统开发实战与架构解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 13:04:38

2026主流代码模型横评:选型、部署与成本避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 12:59:37

二维码生成技术详解:原理、实现与应用

1. 二维码生成技术概述 二维码(QR Code)作为一种高效的信息载体,已经渗透到我们日常生活的方方面面。从简单的网址链接到复杂的WiFi连接配置,二维码都能以简洁的图形化方式承载大量数据。与传统的条形码相比,二维码具…

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码