Telegram es una de las aplicaciones de mensajería más populares de los últimos años, y una de las principales causas de su popularidad es la integración de los bots. En Telegram existen una gran variedad de bots para multitud de tareas diferentes, por ejemplo bots que transcriben los mensajes de voz a texto, muestran noticias, moderan grupos, y un largo etcétera. Pero lo más interesante es que cualquier persona se puede crear sus propios bot.
En esta entrada os enseñaremos a crear vuestro propio bot de Telegram para usarlo en vuestros proyectos de Arduino y los módulos ESP8266. Lo cual puede resultar muy útil para multitud de proyectos, dándoles una nueva dimensión y ampliando enormemente el potencial de vuestros proyectos de electrónica. Tanto para usuarios principiantes como más avanzados.
Creando un bot con Botfather
- Lo primero que haremos, como es lógico, es descargar la aplicación Telegram. Dispone de versiones tanto para Android, iOS, Windows, Mac y Linux. Link de descarga: https://telegram.org/apps?setln=es
- Abrimos la aplicación y en el buscador ponemos BotFather
- Seleccionamos el primer resultado que nos muestra y se abrirá un chat con el bot
- Una vez dentro de la conversación, pincharemos sobre el botón START o escribiremos /start en el chat
- Lo siguiente que haremos es escribir /newbot para que empezar a crear un nuevo bot
- Por último, le daremos un nombre que acabe con el texto «bot», por ejemplo Ardu_bot o cualquier cosa que queramos (aunque el nombre debe ser único y no debe estar cogido por otra persona).
- Al poner el nombre, el BotFather nos dará un Token único para empezar a utilizar el bot que acabamos de crear. Es importante no compartir este token públicamente, ya que si no, cualquier persona podrá manipular nuestro bot a su antojo.
Adquiriendo nuestro ID de Telegram
- Además de crear el bot como ya os hemos mostrado, necesitaremos adquirir nuestro ID en Telegram. Para ello volvemos al buscador de Telegram y buscaremos por «IDBot»
- Pulsaremos sobre el botón START o escribiremos /start
- Y a continuación, escribiremos /getid, y el bot IDBot nos devolverá nuestro ID de usuario.
- Apuntaremos este ID de usuario, junto al token de nuestro Bot, ya que necesitaremos ambos valores para después.
Integrando nuestro Bot con Arduino
Una vez nuestro bot de Telegram está creado, ya podemos hacer uso de él en nuestros proyectos de Arduino. Para ello necesitamos configurar nuestro Arduino IDE:
- Para el proyecto podremos usar un Arduino con una placa de expansión WiFi o usar un módulo ESP8266, los cuales incluyen la posibilidad de usar WiFi de fábrica a muy bajo precio.
- En caso de usar un módulo ESP8266, deberemos integrarlo a nuestro IDE de Arduino para programarlo. Tal como ya os enseñamos en la entrada que podéis ver en el siguiente enlace: https://bugeados.com/arduino/como-programar-esp8266-con-el-ide-de-arduino/
- Instalaremos la librería que se encargará de integrar el bot de Telegram con nuestro Arduino IDE. Para ello usaremos la librería llamada «Universal Telegram Bot Library«, la cuál podéis descargar desde el siguiente enlace: https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot/archive/master.zip
- Abriremos a continuación el IDE de Arduino.
- Dentro del menú Programa, buscaremos Incluir Librería y seleccionaremos la opción Añadir biblioteca .ZIP, y seleccionamos el fichero .zip que descargamos previamente.
- Lo siguiente que haremos será descargar la biblioteca ArduinoJson, dentro del IDE de Arduino iremos a Programa > Incluir Librería > Administrar Bibliotecas…
- Y buscaremos ArduinoJson e instalaremos la última versión que nos aparezca.
Probando nuestro bot
Ya tenemos todo listo para probar el bot. Para ello, vamos a hacer un pequeño programa de prueba que nos mandará un mensaje de texto a través de nuestro Bot de Telegram, cada vez que pulsemos un botón.
Para esta prueba, utilizaremos el siguiente circuito:
Se trata de un circuito muy simple en el que usaremos un pulsador para mandar una señal de aviso al nodeMCU y que este a su vez notifique a nuestro bot de Telegram que debe nos mande un mensaje.
El código para que la detección de esa pulsación de botón se convierta en una aviso a nuestro bot, es el siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include <ESP8266WiFi.h> #include <WiFiClientSecure.h> #include <UniversalTelegramBot.h> // Credenciales de acceso a tu red WiFi const char* ssid = "*************"; const char* password = "******************"; // Configura los parametros de tu bot de Telegram #define BOTtoken "XXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" // your Bot Token (Get from Botfather) #define BOT_ID "XXXXXXXXX" X509List cert(TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure client; UniversalTelegramBot bot(BOTtoken, client); const int buttonPin = 4; int buttonState = 0; void setup() { Serial.begin(115200); pinMode(buttonPin, INPUT); client.setTrustAnchors(&cert); // Add root certificate for api.telegram.org WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.println("WiFi conectado"); // El bot mandará un mensaje cuando esté listo para usarse bot.sendMessage(BOT_ID, "Bot preparado", ""); } void loop() { buttonState = digitalRead(buttonPin); // Cuando se pulsa el botón, se le pide al bot que mande un mensaje diciendo "Boton presionado" if (buttonState == HIGH) { bot.sendMessage(BOT_ID, "Boton presionado", ""); delay(300); } else { // No hace nada si no se pulsa el botón } } |
Para adaptar el código a vuestra red WiFi y a vuestro bot, deberéis rellenar las siguientes variables con vuestros propios datos:
- ssid: Este es el nombre de vuestra red WiFi a la que se conectará el módulo 8266 que estéis usando.
- password: La contraseña de vuestra red WiFi.
- BOTtoken: El token único de nuestro bot, el cual debisteis obtener previamente al hacer la configuración mediante BotFather.
- BOT_ID: Vuestro ID de usuario en Telegram, el cual debisteis obtener previamente.
Una vez cargamos el código en el módulo 8266 y tengamos montado el circuito, podremos abrir la aplicación de Telegram, y buscar por el nombre que le dimos a nuestro bot. Esto nos abrirá una ventana de chat con el bot, y en ella podremos ver los mensajes que nos mandará el bot, a medida que pulsemos el botón de nuestro circuito.
Tal como muestra la captura de pantalla previa, el bot nos mandará un primer mensaje inicial («Bot preparado») cuando esté listo para empezar a funcionar y el mensaje «Boton presionado» cada vez que pulsemos el botón de nuestro circuito.
Como veis se trata de una herramienta muy interesante con la cual podremos ampliar el potencial de nuestros proyectos de electrónica de una forma sencilla. En futuras entradas os enseñaremos ejemplos prácticos más interesantes en los que usaremos esta técnica. ¡Permaneced atentos a la web!
Por último, os animamos a que os subscribáis a nuestro canal de Youtube en el siguiente enlace: https://www.youtube.com/channel/UCkKsD0oRG7E_UUBu1vJv7ng?sub_confirmation=1, en el cual vamos subiendo todos nuestros proyectos de electrónica creados con Arduino y Raspberry Pi.
Hola, estoy compilando el programa para un esp32 y en la linea
X509List cert(TELEGRAM_CERTIFICATE_ROOT);
me tira error:
‘X509List’ does not name a type; did you mean ‘xList’?
cual puede ser el problema?
Gracias
Hola Gerardo,
Quizá necesites actualizar la librería «Universal Telegram Bot Library», ya que es esta la que contiene el método X509List. Para ello ve a Herramientas > Administrar Bibliotecas, y busca esa librería, por último, pincha en el botón Actualizar.
Un saludo y gracias por leernos!
De igual manera me sale el error X509 List y al actualizar la libreria, sigue el mismo error.
alguna solucion?
Hola para un esp32 esa linea no te va servir, eliminala o comentala con //
Buenas, tengo un problema que no me envia el mensaje a telegram? alguien le paso? gracias