Después de solventar los problemas de alimentación con el ESP8266 toca leer datos y mandarlos hacía nuestros servidores para su almacenamiento.
| Componente | Cantidad |
| ESP8266 | 1 |
| DHT11/DHT22 | 1 |
| Resistencia 4K7Ω ( o equivalentes) | 1 |
Lecturas del DHT22
Primero que todo vamos a conectar el pin2 de datos del DHT22 a GPIO02 del ESP8266 con una resistencia de 4k7Ω en pull-up (A la alimentación). En mi caso como no dispongo de una resistencia de ese valor. He enseriado varias resistencias de 1kΩ.

Luego agregamos la dependencia de la librería y configuramos la velocidad de comunicación:
monitor_speed = 115200
lib_deps =
adafruit/DHT sensor library@^1.4.7
Abrimos el GPIO02 para lecturas e instanciamos los valores de la librería para leer el DHT.
#include <DHT.h>
...
DHT dht(2, DHT22);
void setup() {
...
pinMode(2, INPUT);
dht.begin();
...
}
Es importante saber saber que entre lecturas hay que dejar 2 segundos para obtener las lecturas de forma correcta. Si no lo hacemos podemos obtener números valores erróneos o incluso el valor nan (Not a Number).
Comunicando con MQTT
Para la mensajería de he decidido hace uso del protocolo MQTT por su sencillez. Y en el servidor he instalado el servidor de Mosquitto
Incluimos la librería PubSubClient@^2.8 al proyecto
Creamos las funciones para configurar la conexión con el servidor, y formamos el json en texto que mandamos con los datos de temperatura y humedad.
#include <PubSubClient.h>
const char* mqtt_server = "<MQTT-Server-IP>";
const int mqtt_port = 1883; // Default port
WiFiClient espClient;
PubSubClient mqttClient(espClient);
void reconnect() {
while (!mqttClient.connected()) {
if (!mqttClient.connect("ESP8266Client", MQTT_USER, MQTT_PASSWORD)) {
delay(5000);
}
}
}
void setup() {
...
mqttClient.setServer(mqtt_server, mqtt_port);
...
}
void loop() {
if (!mqttClient.connected()) {
reconnect();
}
mqttClient.loop();
float temperature = dht.readTemperature();
delay(2500);
float humidity = dht.readHumidity();
String payload = "{ \"temperature\": " + String(temperature, 2) + ", \"humidity\": " + String(humidity, 2) + ", \"name\": \"ESP8266-DHT\" }";
mqttClient.publish("spuertes/test/temperature", payload.c_str());
delay(10000);
}

Siguiente Paso: Recepción y almacenaje
El próximo paso será crear el proceso de recepción que almacenará los datos en una base de datos.
![[DIY] Sensor IoT temperatura y humedad [3]: Leyendo del DHT22 y enviando por MQTT](https://spuertes.com/wp-content/uploads/2026/06/ESP8266DHT11_frame.jpg)