Scenario: DHT Sensor and Relay Linkage
Scenario: DHT Sensor and Relay Linkage
Synchronized Device Documentation
This page corresponds to the synchronized Chinese source. Commands, JSON examples, API paths, field names, and screenshots are kept aligned with the Chinese device-side source documentation.
What This Page Covers
- Scenario: DHT Sensor and Relay Linkage context and expected reader workflow.
- Configuration, verification, and release-readiness details.
- Source-aligned implementation notes, screenshots, and troubleshooting references.
Source Reference
The detailed operational source is preserved below so implementation details stay exact while the English navigation, titles, and reading path remain available.
场景: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 平台远程强制控制
