- Integrazione della libreria UniversalTelegramBot per semplificare la comunicazione HTTPS con l'API di Telegram.
- Controllo remoto dei pin GPIO per azionare attuatori come i LED e leggere lo stato degli interruttori.
- Implementazione della sicurezza tramite convalida dell'ID chat e utilizzo di certificati SSL.

Avete mai pensato di controllare i vostri dispositivi di domotica comodamente dal divano usando il vostro cellulare? Ebbene, configurare un sistema per controllare un ESP32 tramite Telegram è uno dei modi più semplici ed efficaci per entrare nel mondo della domotica senza complicarsi la vita con costosi server esterni o configurazioni impossibili.
Il segreto sta nel trasformare la tua scheda in un piccolo server che riceve comandi da un bot. Non serve essere un genio della programmazione, perché con un paio di librerie e un po' di pazienza puoi far sì che il tuo dispositivo accenda le luci o ti avvisi in tempo reale sullo stato di un sensore, il tutto tramite messaggi di testo istantanei.
Materiali di cui avrai bisogno
Per iniziare, non è necessario spendere una fortuna. La cosa più importante è avere una scheda ESP32 ; non importa se si tratta di un modello vecchio o di uno dei più recenti, poiché la compatibilità è totale. Oltre al "cervello" del progetto, avrai bisogno di alcuni componenti di base per i test:
- Un diodo a emissione di luce (LED) per verificare che tutto funzioni correttamente.
- Una resistenza da 220 ohm per evitare di bruciare il LED.
- Un pulsante o un interruttore per rilevare gli stati fisici.
- Cavi di collegamento e una breadboard, così non dovrai saldare nulla all'inizio.
Assemblaggio di circuiti elettronici
Prima di modificare il codice, è necessario preparare l'hardware. Per questo esempio, collegheremo il LED al pin GPIO 33 e l'interruttore al pin GPIO 14. È fondamentale ricordare che è possibile modificare questi pin a seconda delle necessità, ma sarà necessario aggiornare le costanti del programma in seguito.
Il LED è collegato alla sua resistenza corrispondente per protezione, mentre il pulsante è configurato internamente per evitare cablaggi aggiuntivi. Una volta assemblato il circuito sulla breadboard , si può passare alla parte software, dove avviene tutta l'azione.
Configurazione del bot su Telegram
Per consentire all'ESP32 di sapere chi ascoltare, dobbiamo innanzitutto creare l'identità del bot all'interno dell'applicazione Telegram. Questo processo è fondamentale perché fornisce due informazioni chiave: il token del bot (una lunga stringa di numeri e lettere) e il tuo ID utente personale . Senza queste due chiavi, il dispositivo non può autenticarsi né determinare chi è autorizzato a impartirgli comandi.
Se a un certo punto la chat dovesse diventare caotica, ricorda che puoi sempre cancellare la cronologia dal menu in alto a destra. In questo modo il bot verrà riavviato e tornerà al pulsante principale con i comandi disponibili, permettendoti di ricominciare da capo.
Preparazione dell'ambiente di sviluppo
Affinché il codice funzioni, dobbiamo installare uno strumento che ci semplifica la vita: la libreria UniversalTelegramBot . Invece di scrivere centinaia di righe di codice per gestire l'API di Telegram, questa libreria fa quasi tutto per noi.
Per installarla, è sufficiente accedere al gestore delle librerie dell'IDE di Arduino, digitare il nome della libreria e fare clic su Installa. Assicurarsi inoltre di aver installato le librerie WiFi e WiFiClientSecure , poiché queste consentono all'ESP32 di connettersi a Internet e utilizzare il protocollo HTTPS per una comunicazione sicura.
Analisi del codice di controllo
Il programma inizia definendo le credenziali della rete WiFi e le chiavi del bot. È fondamentale sostituire i valori di esempio con i propri. SSID e passwordcosì come il token e l'ID della chat. Per l'interattività, definiamo una variabile chiamata info che contiene l'elenco dei comandi che il bot riconoscerà, come /led_on o /sw_state.
Gestione dei messaggi e dei comandi
Il cuore del sistema è la funzione che controlla la presenza di nuovi messaggi. L'ESP32 utilizza il metodo getUpdates per controllare la coda dei messaggi Da Telegram. Per impedire a qualsiasi estraneo di controllare la tua casa, il codice include un filtro che verifica che l'ID del mittente corrisponda esattamente al tuo. ID CHAT predefinito.
Una volta convalidato l'utente, il bot analizza il testo ricevuto: se rileva /led_onInvia un segnale digitale al pin 33 per accendere la luce; se riceve /led_off, lo spegne. C'è anche l'opzione per /led_toggleil che è molto pratico perché inverte lo stato attuale del LED senza che tu debba sapere se era acceso o spento in precedenza.
Lettura del sensore e completamento
Oltre a impartire comandi, il bot può anche fornire informazioni. Utilizzando il comando /sw_stateL'ESP32 legge lo stato del pin 14. Poiché abbiamo configurato il pin come INPUT_PULLUPIl dispositivo rileverà se il pulsante è stato premuto o meno e ci invierà un SMS di conferma.
Durante il processo di avvio, il dispositivo si connette al Wi-Fi in modalità bloccata, il che significa che non eseguirà alcuna operazione finché la connessione non sarà stabile . Per migliorare ulteriormente la sicurezza, viene utilizzato il certificato radice di Telegram, garantendo che il traffico dati sia crittografato. Il ciclo principale si limita a ripetere il controllo dei messaggi ogni secondo per mantenere il sistema agile e reattivo.
Con questo sistema, abbiamo integrato con successo hardware e software per creare un ponte di comunicazione wireless. Abbiamo configurato un bot, gestito la sicurezza tramite ID e certificati e programmato le risposte dei pin GPIO per interagire con il mondo fisico da qualsiasi luogo con una connessione internet.
Domande frequenti
Quale libreria è necessaria per connettere l'ESP32 a Telegram?
È consigliabile utilizzare la libreria UniversalTelegramBot, che semplifica l'interazione con l'API di Telegram e facilita l'invio e la ricezione dei messaggi.
Come posso assicurarmi che solo io possa controllare il bot?
Il codice implementa un filtro che confronta l'ID della chat del messaggio ricevuto con un CHAT_ID predefinito, ignorando qualsiasi comando proveniente da un altro utente.
È necessario utilizzare HTTPS per comunicare con il bot?
Sì, Telegram richiede connessioni sicure, quindi viene utilizzato WiFiClientSecure e il certificato radice di Telegram deve essere configurato sull'ESP32.
Qual è lo scopo del comando /led_toggle nel codice?
Questo comando viene utilizzato per invertire lo stato attuale del LED, accendendolo se era spento o spegnendolo se era acceso.
Perché si utilizza INPUT_PULLUP per l'interruttore?
Viene utilizzato per attivare la resistenza interna della scheda, evitando così la necessità di aggiungere una resistenza fisica esterna al circuito del pulsante.
Dove posso trovare il token del bot e l'ID utente?
Il token si ottiene creando il bot tramite BotFather su Telegram, mentre l'ID utente può essere ottenuto tramite bot specializzati nell'acquisizione dell'identità del profilo.



