Uncategorized

ESP32 MQTT Smart Home: Dati al Cloud in 30 Minuti

Il Problema

Hai costruito una stazione meteo con l’ESP32. Temperatura e umidità vengono visualizzate perfettamente sul serial monitor. Ma ecco il problema — quei dati sono intrappolati nel tuo laptop. Non puoi controllarli dal telefono. Non puoi registrarli. Non puoi innescare automazioni.

MQTT risolve tutto questo. È il protocollo di comunicazione che alimenta la maggior parte dei sistemi IoT nel mondo — dalle fabbriche intelligenti alle installazioni Home Assistant.

Cosa Costruirai

Un nodo sensore ESP32 che:

  • Legge temperatura e umidità ogni 30 secondi
  • Pubblica i dati su un broker MQTT cloud gratuito
  • Ti permette di monitorare tutto da qualsiasi browser web, ovunque

Difficoltà: Principiante  |  Tempo: 30 minuti  |  Costo: ~$23 di componenti

Hardware Necessario (Bill of Materials)

Componente Modello Qtà Prezzo Acquista
Microcontrollore ESP32 DevKitC V4 1 $13.49 Vedi Prodotto
Sensore Temp/Umidità DHT22 1 $5.24 Vedi Prodotto
Display (opzionale) 0.96″ OLED SSD1306 1 $5.99 Vedi Prodotto
Breadboard 830 punti 1 $4.49 Vedi Prodotto
Cavi Jumper M-M 40 pz 1 $2.99 Vedi Prodotto

Passo 1: Cablaggio

ESP32 ↔ DHT22

Pin DHT22 Pin ESP32 Nota
VCC 3V3 Alimentazione
GND GND Terra
DATA GPIO 13 Linea dati

ESP32 ↔ OLED (opzionale)

Pin OLED Pin ESP32 Nota
VCC 3V3 Alimentazione
GND GND Terra
SDA GPIO 21 Dati I2C
SCL GPIO 22 Clock I2C

Passo 2: Installa le Librerie

Apri Arduino IDE → Sketch → Includi Libreria → Gestisci Librerie e installa:

  1. PubSubClient di Nick O’Leary (comunicazione MQTT)
  2. DHT sensor library di Adafruit (driver DHT22)
  3. Adafruit SSD1306 (display OLED, se lo usi)

Passo 3: Carica il Codice

#include <WiFi.h>
#include <PubSubClient.h>
#include "DHT.h"

// --- WiFi Settings ---
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";

// --- MQTT Settings ---
const char* mqtt_server = "broker.hivemq.com";
const int mqtt_port = 1883;
const char* temp_topic = "sensbench/home/temperature";
const char* hum_topic = "sensbench/home/humidity";

// --- Sensor Settings ---
#define DHTPIN 13
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

// --- Globals ---
WiFiClient espClient;
PubSubClient client(espClient);

void setup_wifi() {
  delay(10);
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("nWiFi connected! IP: ");
  Serial.println(WiFi.localIP());
}

void reconnect() {
  while (!client.connected()) {
    Serial.print("Connecting to MQTT...");
    String clientId = "sensbench-" + String(random(0xffff), HEX);
    if (client.connect(clientId.c_str())) {
      Serial.println("connected!");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" retrying in 5s");
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);
  dht.begin();
  setup_wifi();
  client.setServer(mqtt_server, mqtt_port);
}

void loop() {
  if (!client.connected()) reconnect();
  client.loop();

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    Serial.println("Sensor read failed!");
    return;
  }

  char tempStr[8], humStr[8];
  dtostrf(t, 4, 2, tempStr);
  dtostrf(h, 4, 2, humStr);

  client.publish(temp_topic, tempStr);
  client.publish(hum_topic, humStr);

  Serial.printf("Temp: %s°C  Humidity: %s%%n", tempStr, humStr);
  delay(30000);
}

Passo 4: Guarda i Tuoi Dati nel Cloud

  1. Apri https://www.hivemq.com/mqtt-web-client/ nel browser
  2. Clicca su Connect
  3. Sotto Subscriptions, aggiungi il topic: sensbench/home/#
  4. Guarda il tuo ESP32 inviare dati in tempo reale ogni 30 secondi

E Adesso?

Ora che i tuoi dati sono nel cloud, puoi:

  • Creare una dashboard con Node-RED o Home Assistant per visualizzare i dati
  • Aggiungere altri sensori — BME280 per la pressione atmosferica, umidità del terreno per le piante
  • Innescare automazioni — “se la temperatura > 30°C, accendi la ventola”
  • Passare a batteria — aggiungi la modalità deep sleep per mesi di funzionamento

Leave a Reply

Your email address will not be published. Required fields are marked *