DHT11/DHT22¶
Environment - DHT11/12/22 SONOFF2301/7021/MS01 NORMAL CLIMATE
Introduction¶
DHT11 and its sibling DHT22 are temperature and humidity sensors which using a custom 1-wire protocol. That means that they are not compatible with the same 1-wire bus as standard 1-wire units.
- Specifications:
Temperature (-40C to +85C)
Humidity (0-100 % rel. humidity)
Wiring¶
The DHT sensor needs to be connected to a configurable GPIO on the ESP module. In case you have a simple ESP-01 module, it’s best to use the GPIO-2 pin.
DHT11 (blue)
DHT22 (white)
ESP DHT11/DHT22
GPIO (X) <--> Data (2nd pin)
Power
5.0V <--> VCC (1st pin)
GND <--> GND (4th pin)
Note
Do not use GPIO 15 as an input for the DHT11/22. During startup of the
ESP8266, this pin must be LOW for proper operation. It is good to
avoid using GPIO 0 as an input as well. This pin must be HIGHT at
startup, unless program mode is required. The data pin of the DHT11/22
needs a pull-up resistor. A value of 4.7k - 10k proves to be sufficient.
Setup¶
Task settings¶
Device: Name of plugin
Name: Name of the task (example name DHT)
Enable: Should the task be enabled or not
Sensor¶
GPIO <–> Data: Pulse input is generally set to GPIO 14 (D5).
Sensor model: Pick your sensor model, either DHT11 or DHT22.
Data Acquisition¶
This group of settings are standard available configuration items.
Single event with all values: When this setting is enabled, all available values will be sent in a single event
<TaskName>#All, with all values in order as arguments to the event.Show derived values: When checked, the Devices overview page, and the
/jsonendpoint (used for updating the Devices overview page) will include any Derived values as defined. See theTaskValueSetDerivedandTaskValueSetPresentationcommands.Event & Log derived values: When checked, the Derived values will be generated as Events, to be handled in Rules, and sent to logging devices like the Syslog server and/or SD-card logging.
(The derived values options are only available if String variables feature is included in the build.)
Send to Controller: Select the Controller(s) to send the Values to, either on a
TaskRuncommand applied to the task, or on an Interval time action.
Send to Controller is only visible when one or more Controllers are configured.
Depending on the controller capabilities, some configuration settings may be shown:
All configured Controllers are shown here, including the enabled or disabled state (multiple Controllers can be enabled, only a single MQTT Controller can be enabled at one time!).
For each controller the user can select wether the data should be sent on each Interval (or explicit TaskRun).
For the Domoticz controllers the value index (IDX) has to be configured.
For some controllers, like Home Assistant/openHAB, there are extra options available.
Group: This represents the group id to combine all values from multiple tasks into a single grouped-device during MQTT AutoDiscovery. Groups, by design, can span multiple ESPEasy devices, if desired, as long as the Task/Valuename combinations are unique. If a group should only combine Tasks from a single ESPEasy unit, the group id should be unique across multiple ESPEasy units. The group description, default Group <n>, can be adjusted in Home Assistant. If the Group value matches the current Unit nr, the Unit name,
%sysname%, is used instead of Group <nr>.Retained: For MQTT Controllers, this setting can be enabled to send the values for the current task with the Retain flag set. The Publish Retain flag in the Controller settings will override this by sending all task values with Retain flag enabled.
Send derived: This checkbox determines if any configured Derived values should also be sent to the controller (and included in the AutoDiscovery if that’s available and enabled).
Resend MQTT Discovery: When checked, will start a resend of the MQTT Discovery process for this task after a random delay, when Submit is clicked, so any changed settings will be updated in the MQTT broker. This setting is only available if the controller is enabled, the Auto Discovery feature is available and enabled for the controller. This setting is not stored.
Other controllers, like f.e. FHEM HTTP, do not support additional settings besides the checkbox to enable sending the data.
Interval: How often should the task publish its value (5..15 seconds is normal).
Indicators (recommended settings)¶
Indicator |
Value Name |
Interval |
Decimals |
Extra information |
|---|---|---|---|---|
Temperature |
Celsius |
10 |
1 |
|
Humidity |
RH |
10 |
1 |
Rules examples¶
On DHT#Celsius Do
If [DHT#Celsius]>-15
NeoPixelAll,255,0,0 //Red light
Else
NeoPixelAll,0,255,0 //Green light
EndIf
EndOn
How to patch Wemos DHT shield¶
The Wemos DHT shield uses a pin which is also toggled at boot disrupting the connected DHT22 sensor.
This causes the sensor to become unresponsive after a reboot.
The DHT sensor needs to be connected to a configurable GPIO on the ESP module. In case you have a simple ESP-01 module, it’s best to use the GPIO-2 pin.
See this elaborate post on GitHub describing the problem and how to patch the board to make it work like it should.
Where to buy¶
Store |
Link |
|---|---|
AliExpress |
|
Banggood |
|
eBay |
$ = affiliate links which will give us some money to keep this project running, thank you for using those.