- Integració de la llibreria UniversalTelegramBot per simplificar la comunicació HTTPS amb l'API de Telegram.
- Control remot de pins GPIO per accionar actuadors com LEDs i llegir estats dinterruptors.
- Implementació de seguretat mitjançant la validació del Xat ID i l'ús de certificats SSL.

T'has plantejat mai manejar els trastos de casa teva des del sofà usant el mòbil? Doncs bé, muntar un sistema per controlar un ESP32 a través de Telegram és una de les formes més senzilles i potents de ficar-se al món de la domòtica sense complicar-se la vida amb servidors externs costosos o configuracions impossibles.
La màgia és convertir la teva placa en un petit servidor que escolta les ordres d'un bot. No cal que siguis una destral de la programació, ja que amb un parell de llibreries i una mica de paciència pots aconseguir que el teu dispositiu encengui llums o t'avisi sobre l'estat d'un sensor a temps real, tot mitjançant missatges de text instantanis.
Materials que necessitaràs
Per posar-te fil a l'agulla, no cal que gastis una fortuna. El més important és disposar d'una placa ESP32 ; és igual si és un model antic o un dels més moderns, ja que la compatibilitat és total. A banda del cervell del projecte, necessitaràs alguns components bàsics per fer les proves:
- Un díode emissor de llum (LED) per comprovar que tot funciona.
- Una resistència de 220 ohms per no fondre el LED.
- Un polsador o interruptor per llegir estats físics.
- Cables de connexió i una protoboard per no haver de soldar res al principi.
Muntatge del circuit electrònic
Abans de tocar el codi, cal deixar el maquinari llest. Per aquest exemple, connectarem el LED al pin GPIO 33 i l'interruptor al GPIO 14 . És fonamental que recordis que pots canviar aquests pins segons et convingui, però hauràs de reflectir aquest canvi més tard a les constants del programa.
El LED es connecta amb la resistència corresponent per protegir-lo, mentre que el polsador es configurarà internament per evitar cables extra. Quan tinguis el muntatge a la protoboard , ja pots passar a la part del programari, que és on passa tota l'acció.
Configuració del Bot a Telegram
Perquè l'ESP32 sàpiga a qui fer cas, primer hem de crear la identitat del bot a la pròpia aplicació de Telegram. Aquest procés és fonamental perquè ens proporcionarà dues dades clau: el token del bot (una cadena llarga de números i lletres) i el vostre ID d'usuari personal. Sense aquestes dues claus, el dispositiu no es podrà autenticar ni saber qui té permís per donar-li ordres.
Si en algun moment sents que el xat ha tornat un caos, recorda que sempre pots esborrar l'historial des del menú superior dret. En fer-ho, el bot es reinicia i tornarà a mostrar el botó d'inici amb les ordres disponibles per començar de zero.
Preparació de lentorn de desenvolupament
Perquè el codi funcioni, necessitem instal·lar una eina que ens faciliti la vida: la llibreria UniversalTelegramBot . En lloc d'escriure centenars de línies de codi per gestionar l'API de Telegram, aquesta llibreria ho fa gairebé tot per nosaltres.
Per instal·lar-la, simplement aneu al gestor de llibreries de l'Arduino IDE, escriu el nom de la llibreria i prem instal·lar. Assegureu-vos també de tenir instal·lades les llibreries de WiFi i WiFiClientSecure , que són les que permeten que l'ESP32 es connecti a internet i utilitzi el protocol HTTPS perquè la comunicació sigui totalment segura.
Anàlisi del codi de control
El programa comença definint les credencials de la xarxa WiFi i les claus del bot. És vital que substitueixis els valors d'exemple pel teu propi SSID i contrasenya, així com el token i l'ID de xat. Per a la interactivitat, definim una variable anomenada info que conté la llista d'ordres que el bot reconeixerà, com ara /led_on o /sw_state.
Gestió de missatges i ordres
El cor del sistema és la funció que revisa si hi ha missatges nous. L'ESP32 utilitza el mètode getUpdates per consultar la cua de missatges de Telegram. Per evitar que qualsevol desconegut controli casa teva, el codi inclou un filtre que verifica que l'ID del remitent coincideixi exactament amb el teu CHAT_ID predefinit.
Un cop validat l'usuari, el bot analitza el text rebut: si detecta /led_on, envia un senyal digital al pin 33 per encendre la llum; si rep /led_off, l'apaga. També hi ha l'opció de /led_toggle, que és molt pràctica perquè inverteix l'estat actual del LED sense que hagis de saber si estava encès o apagat prèviament.
Lectura de sensors i finalització
A més d'enviar ordres, el bot ens pot informar. Usant l'ordre /sw_state, l'ESP32 llegeix l'estat del pin 14. Com hem configurat el pin com INPUT_PULLUP, el dispositiu detectarà si el botó està pressionat o no i ens enviarà una resposta textual confirmant-ho.
En el procés d'arrencada, el dispositiu es connecta al WiFi de forma bloquejant, cosa que significa que no farà res fins que la connexió sigui estable . Per tancar el cercle de seguretat, s'utilitza el certificat arrel de Telegram i garanteix que el trànsit de dades estigui xifrat. El bucle principal simplement repeteix la comprovació de missatges cada segon per mantenir el sistema àgil i reactiu.
Amb aquest sistema hem aconseguit integrar maquinari i programari per crear un pont de comunicació sense fil. Hem configurat un bot, gestionat la seguretat mitjançant IDs i certificats, i hem programat la resposta de pins GPIO per interactuar amb el món físic des de qualsevol lloc amb connexió a internet.
Preguntes freqüents
Quina llibreria és necessària per connectar l'ESP32 amb Telegram?
S'ha d'utilitzar la llibreria UniversalTelegramBot, la qual simplifica la interacció amb l'API de Telegram i facilita l'enviament i la recepció de missatges.
Com s'assegura que només jo pugui controlar el bot?
El codi implementa un filtre que compara l'ID del xat del missatge rebut amb un CHAT_ID predefinit, ignorant qualsevol ordre que vingui d'un altre usuari.
És necessari utilitzar HTTPS per comunicar-se amb el bot?
Sí, Telegram requereix connexions segures, per la qual cosa s'utilitza WiFiClientSecure i cal configurar el certificat arrel de Telegram a l'ESP32.
Per què serveix l'ordre /led_toggle al codi?
Aquesta ordre serveix per invertir l'estat actual del LED, encenent-lo si estava apagat o apagant-lo si estava encès.
Per què utilitzeu INPUT_PULLUP per a l'interruptor?
Es fa servir per activar la resistència interna de la placa, evitant així la necessitat d'afegir una resistència física externa al circuit del polsador.
On puc aconseguir el token del bot i l'ID d'usuari?
El token s'obté en crear el bot mitjançant BotFather a Telegram, i l'ID d'usuari es pot aconseguir mitjançant bots especialitzats en obtenir la identitat del perfil.



