ESP32 Estación IoT de Habitación (Relé + DHT22)
Enciende tu lámpara desde el móvil y mira la temperatura y la humedad de tu habitación en directo, estés donde estés. Este proyecto es la guía paso a paso de la plantilla IoT Estación de habitación de la app, con un ESP32, un módulo de relé y un DHT22. Ve a Taller › Dispositivos › Añadir dispositivo y elige Estación de habitación; Ohmi prepara el código con tu clave de dispositivo. El código de aquí es un ejemplo: la clave y el Wi-Fi son de relleno.

Controla este dispositivo desde la app
Conecta tu ESP32 o Raspberry Pi Pico W al wifi, enciéndelo y apágalo desde el móvil y mira las lecturas en directo. Ohmi prepara el código; tú solo pones los datos de tu wifi y lo subes.
Plantilla en la app: Estación de habitación
- ¿Dónde está en la app?Añade un dispositivo nuevo desde la pestaña Herramientas o en Taller › Dispositivos y elige esta plantilla.
- Librería de ArduinoAbre el Gestor de librerías en el Arduino IDE, busca BlueGraysIoT e instálala.
El plan gratis incluye 1 dispositivo, 1 gráfica y 24 horas de historial. Con Premium tienes más dispositivos, más gráficas y un historial más largo.
Diagrama del circuito

Código fuente
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// ESP32 Estación IoT de Habitación (Relé + DHT22)
4// ─────────────────────────────────────────
5// La plantilla IoT "Estación de habitación" de la app BlueGrays: enciendes
6// y apagas una lámpara con un relé desde el móvil, y el DHT22 envía la
7// temperatura y la humedad de la habitación a la app cada 2 segundos. Ohmi
8// prepara el código real en la app con tu propia clave de dispositivo
9// (Taller › Dispositivos › Añadir dispositivo); el código de aquí es un
10// ejemplo, la clave del dispositivo y los datos del Wi-Fi son de relleno.
11// Gestor de bibliotecas: BlueGraysIoT (con sus dependencias). La placa
12// solo se conecta a redes Wi-Fi de 2,4 GHz. El relé se activa con LOW.
13// Conecta una lámpara de 220 V solo con alguien con experiencia; prueba
14// primero con un LED.
15//
16// Pines:
17// GPIO26 -> IN del módulo de relé
18// 5V, GND -> Módulo de relé VCC, GND
19// Relé COM -> 5V, NO -> 220 ohm -> ánodo del LED, cátodo del LED -> GND
20// GPIO4 -> DHT22 OUT (datos)
21// 3V3, GND -> DHT22 VCC, GND
22// Pico W: relé IN GP15, DHT22 OUT GP16
23
24/*
25 * Estación de habitación · BlueGrays IoT
26 * BlueGrays · bluegrays.com
27 * No compartas este código: contiene la clave de tu dispositivo y la contraseña del Wi-Fi.
28 */
29
30#include <BlueGraysIoT.h>
31#include <DHT.h>
32
33const char *DEVICE_KEY = "TU_CLAVE_DE_DISPOSITIVO";
34const char *WIFI_NAME = "TU_RED_WIFI";
35const char *WIFI_PASSWORD = "TU_CONTRASENA_WIFI";
36
37BlueGraysIoT bg(DEVICE_KEY);
38
39const int RELAY_PIN = 26;
40const bool RELAY_ACTIVE_LOW = true; // la mayoría de los módulos de relé se activan con LOW
41void setRelay(bool on) { digitalWrite(RELAY_PIN, (on != RELAY_ACTIVE_LOW) ? HIGH : LOW); }
42DHT dht(4, DHT22);
43unsigned long lastReadMs = 0;
44
45void setup() {
46 Serial.begin(115200);
47 pinMode(RELAY_PIN, OUTPUT);
48 setRelay(false);
49 bg.onSwitch("lamba", setRelay);
50 dht.begin();
51 bg.setDeadband("sicaklik", 0.1);
52 bg.setDeadband("nem", 1.0);
53 bg.setDebug(Serial);
54 bg.setLanguage(BG_LANG_EN);
55 bg.begin(WIFI_NAME, WIFI_PASSWORD);
56}
57
58void loop() {
59 bg.loop(); // evita aquí los delay() largos
60 if (millis() - lastReadMs >= 2000) {
61 lastReadMs = millis();
62 bg.send("sicaklik", dht.readTemperature());
63 bg.send("nem", dht.readHumidity());
64 }
65}
66Preguntas frecuentes
¿Puedo subir a la placa el código de esta página tal cual?
Puedes, pero no se conectará: la clave del dispositivo y los datos del Wi-Fi son de relleno. En la app ve a Taller › Dispositivos › Añadir dispositivo y elige Estación de habitación; Ohmi prepara el código con tu clave, el nombre de tu red y tu contraseña. Copia ese código y súbelo. Después puedes ver el código completo en Dispositivo › Código y clave.
¿Funciona también con una Pico W?
Sí. Al añadir el dispositivo elige Pico W como placa; el código es el mismo y solo cambian los pines: el relé va a GP15 y el DHT22 a GP16. En el Arduino IDE instala el paquete "pico" desde el Gestor de placas. El circuito y la foto de esta página se hicieron con un ESP32.
¿Puedo conectar una lámpara real de 220 V?
La red de 220 V puede matar y provocar incendios. Prueba primero con un LED, como en esta página. Si pasas a una lámpara real, hazlo con alguien que sepa de electricidad: el enchufe desconectado, solo la fase pasa por los terminales COM y NO del relé, ningún cable pelado a la vista, el circuito dentro de una caja cerrada y la potencia de la lámpara por debajo del límite impreso en el módulo.
¿Están seguras mi contraseña del Wi-Fi y la clave del dispositivo?
La contraseña del Wi-Fi se queda en tu móvil y nunca se envía a nuestro servidor; se añade al código en el móvil. La clave del dispositivo solo viaja en la cabecera de la conexión segura y nunca se muestra en el Monitor Serie. Aun así, las dos están dentro del código, así que no compartas el código que copias de la app. Si alguien vio tu clave, consigue una nueva con Renovar clave y sube el código nuevo.
