场景:DHT 温湿度传感器 + 继电器联动
大约 5 分钟
场景:DHT 温湿度传感器 + 继电器联动
场景描述
配置 DHT11/DHT22 温湿度传感器定时采集环境数据,当温度超过设定阈值时自动打开继电器(控制风扇/空调),温度恢复正常后自动关闭。同时在 OLED 显示屏上实时显示温湿度数据。
硬件清单
| 模块 | 型号 | 数量 | 接线 |
|---|---|---|---|
| 温湿度传感器 | DHT22 | 1 | DATA→GPIO4 |
| 继电器模块 | 5V单路 | 1 | IN→GPIO15 |
| OLED显示屏 | SSD1306 128x64 | 1 | SDA→GPIO21, SCL→GPIO22 |
| (可选)蜂鸣器 | 有源蜂鸣器 | 1 | IN→GPIO25 |
完整配置流程
方式1:Web界面配置(推荐)
本场景需要先添加温湿度传感器、继电器和显示屏,再用外设执行规则完成采集、阈值判断、控制和显示。
温控场景按闭环拆解为:DHT 采集温湿度、规则判断阈值、继电器或显示屏执行动作、MQTT 或日志记录结果。
第一步:配置外设
步骤1:进入外设管理页面
- 打开浏览器访问 ESP32 IP 地址
- 登录后点击左侧菜单 外设配置
步骤2:添加DHT22温湿度传感器
点击 新增外设 按钮
填写配置:
字段 填写内容 说明 外设ID dht22_room房间温湿度 名称 房间温湿度显示名称 外设类型 通用传感器 (type: 38) DHT驱动 引脚配置 4DATA对应GPIO4 传感器类别 DHTDHT系列 传感器型号 DHT22DHT22精度更高 采集间隔 50005秒 点击 保存
步骤3:添加风扇继电器
再次点击 新增外设 按钮
填写配置:
字段 填写内容 说明 外设ID relay_fan风扇继电器 名称 风扇继电器显示名称 外设类型 GPIO数字输出 (type: 12) 继电器控制 引脚配置 15IN对应GPIO15 初始状态 0默认关闭 点击 保存
步骤4:添加报警蜂鸣器(可选)
第三次点击 新增外设 按钮
填写配置:
字段 填写内容 说明 外设ID buzzer_alarm报警蜂鸣器 名称 报警蜂鸣器显示名称 外设类型 GPIO数字输出 (type: 12) 蜂鸣器控制 引脚配置 25IN对应GPIO25 初始状态 0默认关闭 点击 保存
第二步:配置外设执行规则
规则1:定时采集温湿度数据
切换到 外设执行管理 标签
点击 新增规则 按钮
填写基础配置:
- 规则名称:
温湿度定时采集 - 上报数据:✅ 启用
- 启用:✅ 启用
- 规则名称:
配置触发器:
- 触发类型:选择 定时触发
- 定时模式:选择 固定间隔
- 间隔时间:
30(30秒)
配置动作(需要3个动作):
- 动作1:选择 传感器读取,目标
dht22_room,字段temperature - 动作2:选择 传感器读取,目标
dht22_room,字段humidity - 动作3:选择 OLED显示,目标
oled1(需提前配置),模板:# 环境监测 温度: ${dht22_room.temperature}°C 湿度: ${dht22_room.humidity}%
- 动作1:选择 传感器读取,目标
点击 保存
规则2:温度超限开启风扇
创建规则,名称:
高温开风扇触发器配置:
- 触发类型:选择 事件触发
- 事件ID:填写
ds:dht22_room_temperature - 运算符:选择
大于 (>) - 阈值:
30(30°C)
动作配置:
- 动作类型:选择 高电平
- 目标外设:选择
relay_fan
点击 保存
规则3:温度恢复关闭风扇
创建规则,名称:
温度正常关风扇触发器配置:
- 触发类型:选择 事件触发
- 事件ID:填写
ds:dht22_room_temperature - 运算符:选择
小于等于 (<=) - 阈值:
26(26°C)
动作配置:
- 动作类型:选择 低电平
- 目标外设:选择
relay_fan
点击 保存
💡 提示:开启30°C,关闭26°C,形成4°C迟滞区间,防止频繁切换
规则4:高温报警(超过35度)
创建规则,名称:
高温报警触发器配置:
- 触发类型:选择 事件触发
- 事件ID:填写
ds:dht22_room_temperature - 运算符:选择
大于 (>) - 阈值:
35(35°C紧急报警)
动作配置(需要2个动作):
- 动作1:选择 闪烁,目标
buzzer_alarm,间隔500(500ms) - 动作2:选择 触发事件,事件ID
high_temperature
- 动作1:选择 闪烁,目标
点击 保存
方式2:JSON配置文件导入
工作流程图
┌──────────────┐ 每30s ┌────────────────┐
│ 定时触发器 │──────────────>│ 读取DHT22温度 │
└──────────────┘ │ 读取DHT22湿度 │
│ OLED显示数据 │
└───────┬────────┘
│ 采集结果缓存为
│ ds:dht22_room_temperature
│ ds:dht22_room_humidity
▼
┌────────────────┐
│ 事件触发规则匹配 │
└───┬────┬───┬───┘
│ │ │
温度>30°C ─────┘ │ └───── 温度>35°C
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────────┐
│ 开启风扇 │ │ 关闭风扇 │ │ 蜂鸣器报警 │
│ (继电器高) │ │ (继电器低) │ │ + 事件上报 │
└──────────┘ └──────────┘ └──────────────┘
温度≤26°C参数调整建议
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 采集间隔 | 30s | 室内环境变化缓慢,30s足够 |
| 开风扇阈值 | 30°C | 根据实际需求调整 |
| 关风扇阈值 | 26°C | 低于开风扇阈值4°C,形成迟滞防抖 |
| 报警阈值 | 35°C | 紧急报警,高于正常控制阈值 |
| 蜂鸣器闪烁间隔 | 500ms | 0.5s间隔提示音 |
迟滞控制说明
开启阈值(30°C)与关闭阈值(26°C)之间的 4°C 差值形成了迟滞区间,避免温度在阈值附近频繁波动时继电器快速通断(抖动),延长继电器寿命。
扩展建议
- 多级温控:增加中间温度段,使用 PWM 控制风扇转速
- 湿度联动:湿度过高时开启除湿设备
- 时间段控制:白天/夜间使用不同阈值(通过每日时间点触发切换规则启用状态)
- 远程覆写:保留平台触发器,允许 IoT 平台远程强制控制
