📦 Progetto ESPHome: Rilevazione temperatura, umidità e movimento con LED RGB controllabile via MQTT

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

ComponentePin consigliati (ESP32)
DHT22GPIO4
PIRGPIO12
LED RGBRed → 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

  1. Copia il codice YAML sopra riportato in un nuovo file .yaml su ESPHome.
  2. Sostituisci i segnaposto (YOUR_SSIDYOUR_PASSWORD, ecc.) con le tue credenziali reali.
  3. Compila e carica il firmware sul tuo ESP32 tramite l’interfaccia web di ESPHome.
  4. 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 / ModuloPin ESP32Descrizione
DHT22GPIO4VCC → 3.3 V, GND → terra comune, DATA → GPIO4 (pull‑up interno).
PIRGPIO12VCC → 5 V (o 3.3 V se il modulo è a 3.3 V), GND → terra comune, OUT → GPIO12 (INPUT_PULLUP con inversione).
LED RGBRed → GPIO16Green → GPIO17Blue → GPIO18VCC → 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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *