Tutorial Arduino Yún - Mandar un correo electrónico con Gmail

¡Hola! En este tutorial vamos a sacar nuestros Arduinos para mandar un correo electrónico con Gmail a través de la plataforma Temboo. Yo voy a utilizar un Arduino Yún, aunque si no lo tenéis, pero sí disponéis de un Ethernet Shield o WiFi Shield, también podréis hacerlo. Básicamente necesitamos conexión a Internet para mandar el correo electrónico. Ya hicimos un tutorial en Geeky Theory sobre cómo mandar correos con Arduino y Python, pero este va a ser algo diferente.

Qué es Temboo

Temboo es un servicio que sirve de intermediario para conectarse con otras aplicaciones Web. Permite integrar diversas plataformas para que se comuniquen entre sí. Con Temboo podremos usar desde Arduino las APIs de Twitter, Facebook, Instagram, YouTube, Xively, MySQL o incluso PayPal.

Para realizar este tutorial necesitamos tener una cuenta en Temboo. Podemos crearla desde aquí.

Pasos a seguir

Antes de nada, tenemos que tener un objetivo claro. Mandar un correo electrónico desde nuestro Arduino Yún o cualquier Arduino con conexión a Internet. Podemos hacer que el correo se mande cuando pulsemos un botón, cuando un sensor lea una muestra que se salga de lo normal, cuando se detecte movimiento, etc. En este tutorial vamos a hacer que se mande una única vez, sin sensores ni botones. Crearemos una función que se llamará mandarCorreo() y la ejecutaremos cuando creamos conveniente.

Paso 1. Crear los archivos del proyecto

Tenemos que crear dos archivos para ejecutar el proyecto:

  • SketchArduino.ino: contiene el código principal de Arduino.
  • TembooAccount.h: contiene los datos de nuestra cuenta Temboo.

Es muy importante que estos archivos estén en la misma carpeta.

Paso 2. Instalar la librería Temboo

El IDE de Arduino Yún ya tiene la librería por defecto. Si utilizáis otro IDE, podéis seguir estos pasos. Al final, se resume en algo tan simple como descargar un fichero comprimido y descomprimir su contenido en la carpeta donde están las librerías de Arduino.

Paso 3. Fichero de configuración Temboo

El archivo de configuración llamado TembooAccount.h es realmente importante. Va a contener nuestro nombre de usuario y los datos de nuestra aplicación Temboo. Podemos tener una aplicación para mandar correos, otra para actualizar bases de datos, otra para usar PayPal, etc. El límite gratuito de peticiones al mes es de 1000. Para conocer los datos de vuestras aplicaciones o crear una, podéis ir a esta página. El fichero debe contener esto:

#define TEMBOO_ACCOUNT "tu_cuenta_aqui" #define TEMBOO_APP_KEY_NAME "nombre_aplicacion_temboo" #define TEMBOO_APP_KEY  "key_aplicacion_temboo"

Paso 4. Sketch Arduino

El sketch de Arduino es un poco largo porque he puesto la explicación del código paso a paso. Es el siguiente:

#include <Bridge.h> #include <Temboo.h> #include "TembooAccount.h" const String GMAIL_USER_NAME = "usuario@gmail.com"; const String GMAIL_PASSWORD = "pass"; const String TO_EMAIL_ADDRESS = "destinatario@dominio.com"; boolean action = true; /** * Funcion que manda un correo haciendo uso de Temboo. */ void mandarCorreo() { // Creacion de un objeto para mandar el correo. TembooChoreo SendEmail; SendEmail.begin(); // Credenciales de la cuenta Temboo (las coge de TembooAccount.h) SendEmail.setAccountName(TEMBOO_ACCOUNT); SendEmail.setAppKeyName(TEMBOO_APP_KEY_NAME); SendEmail.setAppKey(TEMBOO_APP_KEY); // Ruta de la libreria que hemos linstalado (Google > Gmail > SendEmail) SendEmail.setChoreo("/Library/Google/Gmail/SendEmail"); // Configuracion de parametros: usuario, contraseña y destinatario SendEmail.addInput("Username", GMAIL_USER_NAME); SendEmail.addInput("Password", GMAIL_PASSWORD); SendEmail.addInput("ToAddress", TO_EMAIL_ADDRESS); // Asunto del correo SendEmail.addInput("Subject", "Tutorial Geeky Theory usando Arduino y Temboo"); // Cuerpo del correo SendEmail.addInput("MessageBody", "El mensaje se ha mandado!"); // Cuando ejecutemos el metodo run() devolvera un valor: //     0 -> exito en el envio. //     1 -> error en el envio. unsigned int returnCode = SendEmail.run(); if (returnCode == 0) { Serial.println("Success! Email sent!"); } else { // Mostramos el error por monitor serial. while (SendEmail.available()) { char c = SendEmail.read(); Serial.print(c); } } SendEmail.close(); } void setup() { Serial.begin(9600); Bridge.begin(); } void loop() { // Mandar el correo electronico si ha ocurrido alguna accion // como pulsar un boton, leer un valor de un sensor, etc. if (action) { mandarCorreo(); action = false; } }

Cuando carguemos el código al Arduino, se deberá ejecutar una única vez, ya que la variable action la ponemos a false para que no vuelva a entrar en el bucle.

Me ha llegado un correo así:

¡Esto es todo por hoy! Me apetece seguir escribiendo sobre Arduino Yún y mucho más después de descubrir esta herramienta. Si tenéis alguna sugerencia para un tutorial, no dudéis en dejar un comentario.

¡Saludos!