DHT22 + PIR + LED RGB: a cosa serve
1️⃣ Obiettivo del post
In questo articolo mostrerò come realizzare un firmware completo e pronto all’uso per l’ESP32, in grado di:
- leggere temperatura e umidità con il sensore DHT22;
- rilevare movimento tramite un modulo PIR;
- controllare un LED RGB (RGB) con effetti personalizzati;
- pubblicare tutti i dati su un broker MQTT (discovery per Home Assistant);
- aggiornarsi in modalità OTA;
- registrare eventi e errori con livello di log DEBUG.
Il file YAML è stato generato esattamente secondo la tua richiesta ed è pronto da caricare tramite ESPHome.
2️⃣ Requisiti hardware
| Componente | Pin consigliati (ESP32) |
|---|---|
| DHT22 | GPIO4 |
| PIR | GPIO12 |
| LED RGB | Red → GPIO16, Green → GPIO17, Blue → GPIO18 |
Nota: collega il VCC del DHT22 a 3.3 V e il GND al terra comune.
3️⃣ Configurazione Wi‑Fi
Il firmware tenta di connettersi alla rete domestica (YOUR_SSID / YOUR_PASSWORD). Se la connessione fallisce, l’ESP32 avvia un punto di accesso “ESP32-DHT-PIR-RGB-Fallback” (password: fallback_password) per consentire la configurazione manuale.
4️⃣ Funzionalità MQTT
- Broker:
YOUR_MQTT_BROKER_IP(porta 1883) - Discovery abilitato (
homeassistant) → i sensori e il LED vengono aggiunti automaticamente a Home Assistant. - Messaggi di “birth” e “will” indicano lo stato online/offline.
5️⃣ Aggiornamenti OTA
Con il modulo ota è possibile aggiornare il firmware senza collegamento fisico, usando l’app ESPHome o la riga di comando. La password OTA è impostata su “OTA_PASSWORD” (sostituire con una stringa sicura).
6️⃣ Logging dettagliato
Il livello di log è DEBUG, così da avere traccia di ogni evento, utile per il debug e la verifica del corretto funzionamento.
7️⃣ Esempio completo di file YAML
esphome:
name: esp32_dht_pir_rgb
platform: ESP32
board: nodemcu-32s
wifi:
ssid: "YOUR_SSID"
password: "YOUR_PASSWORD"
fast_connect: true
ap:
ssid: "ESP32-DHT-PIR-RGB-Fallback"
password: "fallback_password"
captive_portal:
ota:
password: "OTA_PASSWORD"
logger:
level: DEBUG
mqtt:
broker: "YOUR_MQTT_BROKER_IP"
port: 1883
username: "MQTT_USER"
password: "MQTT_PASS"
discovery: true
discovery_prefix: homeassistant
birth_message:
topic: "homeassistant/status"
payload: "online"
qos: 1
retain: true
will_message:
topic: "homeassistant/status"
payload: "offline"
qos: 1
retain: true
sensor:
- platform: dht
pin: GPIO4
temperature:
name: "Living Room Temperature"
id: temp_living_room
filters:
- lambda: return x * 9 / 5 + 32; # Convert to Fahrenheit if desired
humidity:
name: "Living Room Humidity"
id: hum_living_room
update_interval: 60s
binary_sensor:
- platform: gpio
pin:
number: GPIO12
mode: INPUT_PULLUP
inverted: true
name: "Living Room Motion Sensor"
output:
- platform: ledc
pin: GPIO16
id: red_led
frequency: 1000Hz
- platform: ledc
pin: GPIO17
id: green_led
frequency: 1000Hz
- platform: ledc
pin: GPIO18
id: blue_led
frequency: 1000Hz
light:
- platform: rgb
name: "Living Room RGB LED"
red: red_led
green: green_led
blue: blue_led
id: living_room_rgb
effects:
- pulse:
name: "Pulse Effect"
transition_length: 2s
update_interval: 1s
interval:
- interval: 60s
then:
- mqtt.publish:
topic: "homeassistant/sensor/temperature/state"
payload_template: "{{ states('sensor.living_room_temperature') }}"
qos: 0
8️⃣ Come procedere
- Copia il codice YAML sopra riportato in un nuovo file
.yamlsu ESPHome. - Sostituisci i segnaposto (
YOUR_SSID,YOUR_PASSWORD, ecc.) con le tue credenziali reali. - Compila e carica il firmware sul tuo ESP32 tramite l’interfaccia web di ESPHome.
- Verifica la connessione MQTT in Home Assistant o con un client MQTT come Mosquitto.
9️⃣ Conclusioni
Con questo progetto hai a disposizione una soluzione modulare, sicura e pronta all’uso per monitorare temperatura/umidità, rilevare movimento e controllare un LED RGB, tutto gestito tramite MQTT. L’integrazione con Home Assistant è automatica grazie al discovery, mentre l’OTA e il logging garantiscono manutenzione semplice e tracciabilità completa.
📌 Schema di collegamento dei sensori all’ESP32
Di seguito trovi una descrizione testuale del cablaggio, da inserire subito dopo la conclusione dell’articolo.
| Sensore / Modulo | Pin ESP32 | Descrizione |
|---|---|---|
| DHT22 | GPIO4 | VCC → 3.3 V, GND → terra comune, DATA → GPIO4 (pull‑up interno). |
| PIR | GPIO12 | VCC → 5 V (o 3.3 V se il modulo è a 3.3 V), GND → terra comune, OUT → GPIO12 (INPUT_PULLUP con inversione). |
| LED RGB | Red → GPIO16, Green → GPIO17, Blue → GPIO18 | VCC → 5 V (o 3.3 V a seconda del LED), GND → terra comune; i pin sono configurati come PWM tramite ledc. |
Suggerimento di cablaggio rapido
- Utilizza un breadboard per una prototipazione veloce.
- Per il DHT22, inserisci un resistore da 10 kΩ tra VCC e DATA (pull‑up).
- Se usi un LED RGB a 5 V, aggiungi resistenze limitanti (220 Ω–330 Ω) su ciascun pin di colore.
Con questo schema i componenti sono correttamente collegati all’ESP32 e pronti per essere programmati con il file YAML fornito.