使用ESPHome、Home Assistant和DFRobot传感器构建有线自动化系统
在翻新我的工作室时,我决定为未来的自动化做好准备,而不是依赖Wi-Fi设备。每面墙上的开关和插座位置都额外增加了网线,为传感器、开关和控制器提供了可靠的通信通道。
这种方法在安装时需要付出更多努力,但带来了多项重要优势:通信稳定、不受Wi-Fi拥堵影响、支持与兼容设备的以太网供电(PoE),以及分布式传感器功耗显著降低。
本项目的目标是自动化两项日常任务:
•当有人进入时自动开启车间灯光,房间空置15分钟后关闭所有灯光。
•根据人员占用情况和室内二氧化碳浓度控制通风系统,确保空气新鲜,避免不必要的风机运行。
为了实现这一点,我使用了两个最近发布的DFRobot传感器:
•C4002 毫米波人体存在传感器,用于可靠的人体存在检测。
•STCC4 二氧化碳传感器,用于监测空气质量并控制通风系统。
为什么选择有线连接而不是Wi-Fi?
无线智能家居设备安装简便,但随着系统规模扩大,也会带来一些明显限制。每台电池供电的传感器都需要定期维护,Wi-Fi网络会随着时间推移变得越来越拥挤,而系统的可靠性则取决于无线电信号覆盖范围。
由于装修期间我的工作室墙壁已经开放,添加以太网线的成本相比整个项目来说非常低。这一小决策使得我们能够构建出一个自动化系统,其行为更接近工业控制设备,而非典型的家用智能家居。
包括以下好处:
•可靠的有线通信
•无需依赖Wi-Fi覆盖
•远程设备功耗更低
•支持PoE(电源即以太网),适用时
•轻松实现未来扩展,无需再次拆除墙体
当然,有一个明显的缺点——在完成房间之前,你必须先规划好布线。
系统概览
自动化系统由两个通过以太网连接的ESPHome设备组成。
第一台设备是DT-R008以太网继电器控制器,作为中央PLC,负责切换车间照明、读取墙壁开关、控制通风风扇,并通过以太网与Home Assistant通信。
第二个设备基于WT32-ETH01模块构建,作为环境监测节点。它从DFRobot传感器收集数据,并通过ESPHome将数据报告给Home Assistant。
这种分离使控制逻辑保持模块化。继电器控制器专注于切换负载,而传感器节点则负责环境测量和占用检测。由于两者通过以太网连接,系统完全独立于Wi-Fi。
当前的实现自动化了两项任务:
•照明 - C4002毫米波传感器可检测到人员在场并自动开启灯光。如果车间空置15分钟,灯光及其他选定设备将自动关闭。
•通风 - 每10分钟,Home Assistant会检查STCC4传感器报告的二氧化碳浓度。如果在车间有人时,空气质量下降至设定阈值以下,通风风扇将自动启动。
实际的自动化逻辑在 Home Assistant 中运行,而 ESPHome 设备均将传感器和输出暴露为标准实体。
硬件
该项目有意使用大多数现成的组件。除了定制的3D打印传感器外壳外,其他所有部件均可从常见的电子供应商处购买。
•DT-R008 以太网继电器控制器——主PLC,负责负载切换、输入读取以及与Home Assistant通信。
•WT32-ETH01 - 用于作为专用传感器节点的带以太网功能的ESP32模块。
•DFRobot C4002 - mmWave 人体感应器,用于人员占用检测。
•DFRobot STCC4 - 用于空气质量监测和通风控制的CO2传感器。
•MeanWell HDR-30-12 - 用于继电器控制器和继电器的12V DIN导轨电源。
•5V交流-直流电源 - 为WT32-ETH01传感器节点供电。
•DIN导轨继电器——控制车间照明,并提供状态反馈的手动 override 功能。
•以太网(UTP)布线 - 为所有ESPHome设备提供可靠的有线通信。
为什么选择PLC而不是独立的智能继电器?
该项目的目标之一是可靠性。
无需在每面墙开关后安装独立的Wi-Fi中继器,所有线路都集中于一个控制面板内。这种做法大大简化了维护工作,并可将整个电气系统集中管理于一处。
另一个重要优势是,即使 Home Assistant 或网络不可用,墙开关仍会继续运行。
继电器 #8 与手动墙开关连接,构成一个双向开关。该电路驱动一个独立的 DIN 导轨继电器,实际为照明电路供电。DIN 继电器上的额外辅助触点向 DT-R008 提供反馈,使 Home Assistant 能够了解灯光的真实状态,无论其是手动还是自动开关。
对于多档通风风扇,继电器1-3取代了原有的机械选择开关。它们串联连接,因此每次只能使一个风扇档位通电,从而防止因软件或配置错误导致的意外短路。
构建控制面板
为了容纳所有所需部件,我按所需尺寸裁剪了一个安装板,并安装了DIN导轨、线夹以及用于电缆管理的走线槽。
布线
实际的布线过程并不困难,而是重复性的。每根电线都需要测量、剪断、剥皮、穿过布线管道,并进行端接。
尽管耗时,但仔细规划线缆布线能大大方便日后故障排查。
完整的接线图已附在本项目中,因此我不会在此重复每一条连接。相反,我想解释一些使系统可靠的设计决策。
手动控制照明
我的一个要求是,即使 Home Assistant、ESPHome 或网络不可用,工作坊的灯光也必须继续工作。
为此,Relay 8 和墙开关被连接成一个双向开关。它们并不直接切换照明电路,而是控制一个独立的DIN导轨继电器,该继电器为灯具供电。
DIN继电器的辅助触点连接回DT-R008数字输入端,用于反馈照明电路的实际状态。
因此,无论灯光是手动还是自动开关,Home Assistant 都能始终知道它们是开启还是关闭。
安全风扇转速选择
车间通风风扇支持多种风速设置。
我并未用单个继电器替换原有的选择开关,而是专门将三个继电器用于风扇转速控制。
这些继电器串联连接,以模拟原始的旋转开关。这种接线方式可确保每次仅能激活一个速度,防止因软件错误或配置问题导致多个绕组意外启动。
这种硬件保护使系统比仅依赖软件逻辑要稳定得多。
为什么选择以太网?
许多DIY自动化项目完全依赖Wi-Fi,但我特意在核心基础设施上避免了它。
ESPHome设备仅通过以太网进行通信,提供:
•稳定通信,无信号中断
•确定性延迟,
•无需依赖Wi-Fi覆盖
•微控制器功耗更低,
•为未来支持PoE的设备预留空间。
由于在车间翻新期间已安装了以太网线,之后添加新设备只需连接到现有网络即可。
刷写 DT-R008
DT-R008 配备了出厂固件,已支持 MQTT 和 Home Assistant 集成。对许多用户而言,该固件已完全足够,无需任何修改。
不过,我想将继电器控制器集成到我现有的ESPHome生态系统中,因此决定更换出厂固件。
如果你打算这样做,请务必订购DT-R008的开发者版本。标准版本配备ESP32,可防止重刷,而开发者版本则允许上传自定义固件,无需硬件修改。
为了支持 ESPHome,我使用了 kecajtop 提供的优秀组件 dtr0xx_io,它可实现与继电器板的原生集成。
调试端口引脚布局:
1 - 地线
2 - IO3(U0RXD/RS485 接收)
3 - IO1(U0TXD/RS485_TX)
4 - NRST
5 - IO0(RMII_RST/PWR)
6 - 3.3V
7 - IO4(CAN_RX)
9 - IO5(CAN_TX)
传感器节点
该工作坊使用基于WT32-ETH01的专用以太网传感器节点。与将每个传感器直接连接到继电器控制器不同,这个独立节点负责处理所有环境监测,并通过ESPHome将测量数据发布给Home Assistant。
该节点结合了两个DFRobot传感器:
•C4002 毫米波人体感应器,用于人员占用检测。
•STCC4 二氧化碳传感器,用于室内空气质量监测。
两个传感器通过不同的接口进行通信。C4002 使用 UART,而 STCC4 通过 I²C 进行通信,因此它们与 WT32-ETH01 配合良好。
为了简化安装,我设计并3D打印了一个新的外壳,用于容纳传感器和WT32-ETH01模块。STL文件已随本项目附上。
STCC4 二氧化碳传感器
STCC4 是一种基于热导率测量的低功耗二氧化碳传感器。虽然它并非实验室级仪器,但其精度完全满足需求控制通风的要求。
该传感器可测量500 ppm至5000 ppm的二氧化碳浓度,典型精度为±100 ppm。在实际应用中,这一精度足以判断车间内是否需要换气。
另一个实用的功能是内置的温湿度传感器,用于内部补偿。如果需要更高的温度精度,也可以连接外部传感器。
测试过程中,CO2读数证明其稳定且响应足够,适合自动化使用。
ESPHome 支持
在构建此项目时,STCC4尚未包含在官方ESPHome版本中。
幸运的是,我找到了 will-tm 提交的一个开放的拉取请求,其中已经包含了该组件的可用实现。
我直接在我的项目中使用了该实现,而不是等待拉取请求被合并。
对应仓库已链接在本项目的致谢部分。
C4002 毫米波存在传感器
存在检测是整个自动化系统中最重要的部分之一。
C4002 的检测距离可达 11 米,并可为每个距离段分别设置灵敏度阈值。此外,它还配备环境光传感器,可根据需要实现基于光照的额外自动化功能。
遗憾的是,软件支持最初不如硬件那么完善。
改进 ESPHome 组件
DFRobot 社区为 C4002 提供了一个外部 ESPHome 组件。
虽然它暴露了传感器的基本功能,但无法提供许多用于正确调优所需的配置参数。
如果没有这些设置,我注意到有几个问题:
•测量的距离明显大于实际距离。
•读数在移动过程中波动显著,
•夜间发生了误报。
为了解决这些问题,我重写了ESPHome组件,并实现了传感器协议中暴露的缺失配置命令。
更新后的组件支持以下配置:
•灵敏度模式
•按区域检测阈值
•检测参数
•附加诊断实体
完整的源代码可在 GitHub 上获取,并在项目资源中提供链接。
传感器校准
启用自动校准后,我检查了传感器生成的阈值,并根据我的车间需求进行了微调。
我还将传感器切换到0.2米灵敏度模式,显著提高了距离估计的准确性。
差异立刻就显而易见了。
校准前,测量的距离与实际位置可能相差近一米,行走时还会出现较大的波动。
经过校准和适当的阈值调整后,读数变得更加稳定,并且与实际距离非常接近。
最重要的是,夜间偶尔出现的误检问题已完全消失。
关于毫米波传感器的说明
最初,我打算将C4002直接与另一个我已使用的毫米波传感器进行比较。
然而,测试发现了一个意外的问题。
当两个传感器同时工作且检测区域重叠时,它们会相互干扰。C4002持续报告存在状态,而第二个传感器的准确性明显下降。
尽管这种行为取决于传感器的安装位置和运行条件,但它提醒我们:在未进行周密规划的情况下,不应让多个毫米波传感器同时监控同一区域。
正确的放置与正确的配置同样重要。
Home Assistant 自动化
由于所有实体都在 Home Assistant 中可用,自动化逻辑变得简单明了。
我更倾向于将自动化功能留在 Home Assistant 中,而不是将复杂的逻辑嵌入微控制器。这样可以更方便地维护、调试和扩展功能,而无需重新刷写设备。
自动照明
照明自动化设计得十分简洁。
每当C4002检测到有人时,车间灯光就会自动开启。
如果15分钟内未检测到有人,Home Assistant 就会认为工作坊已被离开,并关闭灯光及其他非必要设备。
夜间,可配置的静默时段会禁用自动灯光开启功能,防止系统因意外检测而打开灯光。
这种组合在日常使用中已被证明可靠有效,同时对进入车间的任何人完全透明。
智能通风
通风控制结合了两个传感器的信息。
每十分钟,Home Assistant 会检查当前的二氧化碳浓度。
如果:
车间里有人在,
•二氧化碳浓度超过设定阈值,
•通风扇会自动开启。
空气质量改善或车间空置后,风扇将再次关闭。
这种方法在长时间工作期间可保持舒适的空气质量,同时避免不必要的风扇运行。
为什么选择 Home Assistant?
尽管ESPHome能够本地运行自动化,但Home Assistant为该项目提供了多项优势:
•自动化逻辑无需重新刷写设备即可修改。
•所有传感器和执行器均可通过一个界面访问。
•历史数据有助于调整阈值,
•仪表盘让监控变得简单,
•可随时添加额外的自动化功能。
将设备专注于硬件控制,同时让 Home Assistant 负责决策,从而实现了职责的清晰分离。
结果
这个系统已经在我的工作室运行了几周,有线方式的确如我所期望的那样。
每当我进入车间时,灯光就会自动开启,离开后自动关闭,完全无需再费心考虑。
通风系统可在长时间工作期间控制二氧化碳浓度,同时在车间无人时避免不必要的风机运行。
同样重要的是,手动墙开关仍可独立于Home Assistant运行,因此即使自动化系统暂时无法使用,车间依然可以完全正常运作。
使用以太网代替Wi-Fi也取得了成功。通信完全稳定,我不再需要担心无线信号覆盖或电池供电设备的问题了。
结论
搭建有线自动化系统比安装一组Wi-Fi智能设备需要更多的规划,但最终成果值得付出的努力。
ESPHome、Home Assistant、以太网以及DFRobot C4002和STCC4传感器的结合,为车间自动化提供了可靠且响应迅速的解决方案。更重要的是,模块化架构使得系统能够随着新需求的出现而轻松扩展。
如果您计划新建车间或翻新现有车间,我强烈建议从一开始就考虑有线基础设施。即使您不立即实现全部自动化,但在关键位置提供以太网连接,也能为未来的项目带来更大的灵活性。
本文编译自hackster.io





