DHT11/DHT22 Sensor Configuration
DHT11/DHT22 Sensor Configuration
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
- Peripheral capability, supported device types, and wiring constraints.
- Web console configuration fields and recommended parameter values.
- PeriphExec integration, validation steps, and troubleshooting notes.
Source Reference
The detailed operational source is preserved below so implementation details stay exact while the English navigation, titles, and reading path remain available.
DHT11/DHT22 温湿度传感器配置指南
1. 功能说明
DHT11 和 DHT22(AM2302) 是常用的数字温湿度传感器,通过单总线协议与 ESP32 通信。FastBee 通过 SensorDriver 驱动实现自动初始化、缓存读取和异步采集。
传感器对比
| 参数 | DHT11 | DHT22/AM2302 |
|---|---|---|
| 温度范围 | 0~50°C | -40~80°C |
| 温度精度 | ±2°C | ±0.5°C |
| 湿度范围 | 20~80% RH | 0~100% RH |
| 湿度精度 | ±5% | ±2~5% |
| 采样周期 | ≥1s | ≥2s |
| 工作电压 | 3.3~5.5V | 3.3~5.5V |
工作原理
- 单总线数字信号输出,无需 ADC
- 首次读取时自动初始化(惰性初始化)
- 内置 2 秒最小读取间隔缓存,避免频繁读取导致数据错误
- 读取失败时 10 秒内返回旧缓存值(优雅降级)
DHT 读数会先写入传感器缓存,再供外设执行事件、显示动作或 MQTT 上报使用;排查时先确认外设页能读数,再检查规则和平台侧数据。
2. 接线说明
DHT11/DHT22 模块 ESP32
┌─────────────┐
│ VCC (1) │───────── 3.3V 或 5V
│ DATA (2) │───────── GPIO (如 GPIO4)
│ GND (3/4) │───────── GND
└─────────────┘
注意:部分模块已内置 10K 上拉电阻;
若使用裸传感器,需在 DATA 和 VCC 之间接 4.7K~10K 上拉电阻。推荐引脚(ESP32):GPIO4, GPIO5, GPIO13, GPIO14, GPIO15, GPIO25, GPIO26, GPIO27
3. 配置方式
方式1:Web界面配置(推荐)
DHT 传感器保存前重点核对 DATA 引脚、传感器型号和采集间隔。
步骤1:进入外设管理页面
- 打开浏览器访问 ESP32 IP 地址
- 登录后点击左侧菜单 外设配置
步骤2:添加DHT传感器外设
点击 新增外设 按钮
填写配置:
字段 填写内容 说明 外设ID dht11_01或dht22_01唯一标识符 名称 DHT11温湿度或DHT22温湿度显示名称 外设类型 通用传感器 (type: 38) DHT驱动 引脚配置 4DATA引脚 传感器类别 DHTDHT系列 传感器型号 DHT11或DHT22根据实际型号 采集间隔 50005秒(≥2000ms) 点击 保存
步骤3:验证配置
- 在外设列表中找到刚添加的外设
- 点击 启用 开关
- 等待5秒后查看温度和湿度数据
💡 提示:DHT22精度更高(±0.5°C),推荐用于精密测量
方式2:JSON配置文件导入
将以下配置添加到 data/config/peripherals.json 的 peripherals 数组中:
DHT 传感器在外设配置中使用 SENSOR(类型ID=38) 类型,通过 params.sensor.sensorType 区分 DHT11(3) 和 DHT22(4)。
DHT11 配置示例
{
"id": "dht11_01",
"name": "DHT11温湿度",
"type": 38,
"enabled": false,
"pinCount": 1,
"pins": [4, 255, 255, 255, 255, 255, 255, 255],
"params": {
"sensor": {
"sensorType": 3,
"sampleInterval": 5000
}
}
}DHT22 配置示例
{
"id": "dht22_01",
"name": "DHT22温湿度",
"type": 38,
"enabled": false,
"pinCount": 1,
"pins": [4, 255, 255, 255, 255, 255, 255, 255],
"params": {
"sensor": {
"sensorType": 4,
"sampleInterval": 5000
}
}
}字段说明
| 字段 | 含义 | 取值 |
|---|---|---|
| type | 外设类型 | 38 (SENSOR) |
| pins[0] | 数据引脚 | 有效 GPIO 号 |
| params.sensor.sensorType | 传感器类别 | 3=DHT11, 4=DHT22 |
| params.sensor.sampleInterval | 采样间隔(ms) | ≥2000 |
4. 外设执行联动
DHT 传感器的数据通过外设执行规则的 ACTION_SENSOR_READ(actionType=19) 动作进行采集,采集后的数据缓存为数据源,可被其他规则作为事件触发源使用。
Web界面配置步骤
创建定时采集规则
- 切换到 外设执行管理 标签
- 点击 新增规则 按钮
- 配置定时触发器:
- 触发类型:定时触发
- 执行间隔:30 秒
- 添加动作:
- 动作1:读取温度
- 动作类型:传感器读取
- 目标外设:dht11_01
- 数据字段:temperature
- 动作2:读取湿度
- 动作类型:传感器读取
- 目标外设:dht11_01
- 数据字段:humidity
- 动作1:读取温度
- 开启 执行后上报数据
- 点击 保存
创建温度超限报警规则
- 创建新规则
- 配置事件触发器:
- 触发类型:事件触发
- 事件ID:ds:dht11_01_temperature
- 比较操作:大于
- 比较值:35
- 添加动作:
- 动作类型:高电平
- 目标外设:relay_01(风扇继电器)
- 点击 保存
💡 提示:事件ID格式为
ds:{外设ID}_{字段名}
JSON配置示例
传感器采集规则配置
{
"id": "exec_dht_read",
"name": "DHT11定时采集",
"enabled": false,
"triggers": [
{
"triggerType": 1,
"timerMode": 0,
"intervalSec": 30
}
],
"actions": [
{
"targetPeriphId": "dht11_01",
"actionType": 19,
"actionValue": "temperature"
},
{
"targetPeriphId": "dht11_01",
"actionType": 19,
"actionValue": "humidity"
}
],
"reportAfterExec": true
}温度超限报警规则
{
"id": "exec_dht_alarm",
"name": "温度超限报警",
"enabled": false,
"triggers": [
{
"triggerType": 4,
"eventId": "ds:dht11_01_temperature",
"operatorType": 2,
"compareValue": "35"
}
],
"actions": [
{
"targetPeriphId": "relay_01",
"actionType": 0,
"actionValue": ""
}
],
"reportAfterExec": true
}5. 注意事项
- 最小读取间隔:DHT11/DHT22 硬件限制最小 2 秒,配置 sampleInterval 应 ≥2000ms
- 引脚选择:避免使用 GPIO6-11(Flash引脚)、GPIO34-39(仅输入,无内部上拉)
- 上拉电阻:裸传感器需外接 4.7K~10K 上拉电阻,模块版一般已内置
- 数据线长度:建议 ≤20m,超过时增加上拉电阻值或使用屏蔽线
- 首次读取延迟:传感器上电后需 1~2 秒稳定期,首次读取可能返回 NAN
- Flash占用:DHT库约 3KB,通过
FASTBEE_ENABLE_SENSOR_DRIVER=1编译开关控制
6. 常见问题
Q: 读取始终返回 NAN?
- 检查接线是否正确(VCC/GND/DATA)
- 确认上拉电阻是否存在
- 确认引脚号配置正确
- 传感器上电后等待 2 秒再首次读取
Q: 数据跳变很大?
- DHT11 精度为 ±2°C,正常波动
- 建议使用 DHT22 获得更高精度
- 可在外设执行中配置多次采样取平均
Q: 多个 DHT 传感器如何配置?
- 每个传感器使用不同引脚,配置不同 id(如 dht11_01、dht11_02)
- SensorDriver 内部按引脚缓存实例,互不干扰
