Tal vez veamos interesante añadir una nueva funcionalidad a nuestro proyecto de alarma domótica: el envío de emails a nuestro correo para cuando se produce una intrusión en nuestra vivienda y estamos ausentes de esta.
Esto será enormemente práctico, por ejemplo, durante el tiempo en que estamos trabajando en una oficina o en algún puesto de trabajo desde donde podamos tener
acceso a nuestro correo; o si disponemos de algún dispositivo personal como un PDA, teléfono móvil, etc. que nos permita recibir al instante una alerta email.
Para los que no coincidan en estas circunstancias y disponen de un móvil, tal vez les sea interesante habilitar una cuenta email en su operadora de telefonia móvil (por
ejemplo: Vodaphone, Movistar, y cualquier otra peradora que disponga de dicho servicio) que permitirá, cuanto menos, recibir un aviso SMS al móvil cuando nuestro sistema de alarma domótico remita el correspondiente email de alerta al buzón email de dicha cuenta.
Notad que, entre otras cosas, el envío de un email desde el módulo PINK nos permitirá además contar con un práctico sistema para fechar el día y hora en el que se produce
eventos significativos en la vigilancia de nuestra vivienda o local. Para lo más avanzados, les dejo pensando en la posibilidad de diseñar un sistema complementario, o un sistema avanzado que nada tenga que ver con alarmas, consistente en un Datalogger, Base de Datos, o rellenado automático de datos de una Hoja de cálculo (PLX-DAQ) donde sería posible el registro de los diferentes eventos que se producen en la vivienda, según cada uno de los sensores que se activan. Porque ¿es necesario ceñirnos sólo a un sistema de alarma domótico para nuestra vivienda? Pensad un poco más y encontrareis nuevas posibilidades...
En fin, estas son algunas de las múltiples facetas que pueden hacerse servir desde un módulo PINK con una tarjeta con BASIC Stamp, pero que nos desvian un poco del aspecto concreto que queremos darle a nuestro sistema de alarma domótico que se explica en este proyecto. Así que, centrémonos de nuevo en dotar de la nueva funcionalidad del envío de email.
Variables de registro especiales para el envío de email
El envío de un mensaje de correo es posible gracias a algunas de las variables específicas de registro que dispone el PINK. Aquí se van a explicar el uso de algunas de estas, pero para los que quereis saber más, en la Hoja de producto del PINK,
concretamente en la pág. 8, teneis toda la lista completa y la explicación de su uso (en inglés).
Las que nos interesan aquí son:
SEROUT TX, Baud, ["!NB0WET:someone@somewhere.com", CLS]
SEROUT TX, Baud, ["!NB0WEF:pink@parallax.com", CLS]
SEROUT TX, Baud, ["!NB0WES:Test Message From PINK", CLS]
SEROUT TX, Baud, ["!NB0WEC:Message Content Goes Here!",CLS]
SEROUT TX, Baud, ["!NB0WEV:smtp.server.com", CLS]
SEROUT TX, Baud, ["!NB0WEU:username", CLS] ' (Optional)
SEROUT TX, Baud, ["!NB0WEP:password", CLS] ' (Optional)
SEROUT TX, Baud, ["!NB0WEA:1", CLS] ' Turn Authentication On (Optional)
SEROUT TX, Baud, ["!NB0SM"] ' Command To Send E-Mail
Añadidos al listado del programa
A partir de las indicaciones anteriores, construyamos la correspondiente subrutina que añadiremos en nuestro listado del programa de código PBASIC:
EMAIL_BEEP:
IF modo = 1 THEN FREQOUT 4, 250, 3000 ' beep
IF cont0 > 1 THEN 'envía email sólo en caso de apertura puerta
IF email = 0 THEN
SEROUT 8,396,["!NB0WET: tu_direccion_email_destino",CLS]
SEROUT 8,396,["!NB0WEF:tu_direccion_email_remitente",CLS]
SEROUT 8,396,["!NB0WES:Alerta, puerta principal de la casa abierta",CLS]
SEROUT 8,396,["!NB0WEV:tu_servidor_SMTP",CLS]
SEROUT 8,396,["!NB0SM"]
email = 1 'email ya enviado
ENDIF
ENDIF
RETURN
Expliquemos: si en nuestro sistema de alarma hemos habilitado los 2 modos de funcionamiento (Modo vigilancia para cuando estamos en casa, pero queremos tener avisos discretos de las activaciones de los sensores; y Modo alarma, para cuando nos ausentamos de la vivienda) está claro que, en el primer modo no nos interesará el envío automático de emails de alerta. Así que, en el primer caso y según la primera línea, sólo producirá un BEEP.
La línea IF cont0 > 1 THEN... nos sirve para asignar el envío de email sólo para cuando el contador del sensor que vigila la apertura de la puerta principal se ponga en marcha.
A continuación, la variable email nos sirve de flag o bandera para controlar que sólo se envíe un mensaje de alerta, de manera que el sistema no nos envíe continuamente
emails, sobre todo si la puerta se queda abierta por un tiempo. Cuando el primer y único email ha sido enviado mediante las siguientes líneas SEROUT, la variable email será cargada con el valor 1; después el control del programa será devuelto al ciclo de contadores.
Si nuestro servidor de correo precisa la autentificación del envío, será necesario añadir en la subrutina comentada las siguientes líneas SEROUT:
SEROUT 8, 396, ["!NB0WEU:username", CLS] ' (Optional)
SEROUT 8, 396, ["!NB0WEP:password", CLS] ' (Optional)
donde username es el nombre de usuario de nuestra cuenta de correo remitente y password es la contraseña.
Ahora veamos que otras modificaciones obvias habrá que hacer al listado del programa: hemos comentado el uso de la nueva variable email; pues hay que declararla al comienzo del listado del código:
email VAR Byte
Otro añadido que hay que hacer es la línea que hace la llamada a la subrutina comentada anteriormente; esta línea la añadiremos en la siguiente parte del programa, que controla la apertura de la puerta:
Helvetica, sans-serif" size="1"">APERTURAPUERTA:
IF IN0 = 1 THEN
cont0 = 1 'OJO puerta
abierta
GOSUB EMAIL_BEEP
ENDIF
IF cont0 > 0 THEN
SELECT cont0
CASE > 24000
cont0 = 0 'contador ha
llegado a
60minutos -> vuelve a estado alerta
SEROUT 8,396,["!NB0W00:0",CLS]
'inicializa después de 60 minutos
RETURN
CASE > 2000
SEROUT 8,396,["!NB0W00:3",CLS] 'sensor
ha sido activado hace más de 5 minutos->
mostrar
huella
CASE > 400
SEROUT 8,396,["!NB0W00:2",CLS] 'sensor
ha sido activado hace más de 1 minuto->
mostrar
huella
CASE > 0
SEROUT 8,396,["!NB0W00:1",CLS] 'sensor
ha sido activado
ENDSELECT
cont0 = cont0 +1 'contador
en marcha
(aunque se haya cerrado la puerta)
PAUSE 10
ENDIF
RETURN
Ojo: Para las primeras pruebas que podamos hacer con relación a esta nueva funcionalidad de envío de email, será importante que tomemos las debidas precauciones de utilizar los necesarios flags o banderas, o simplemente insertando algún que otro STOP en el código del programa, para que no se produzca un
"accidentado" envío continuo de emails que llegue a saturar el buzón email que utilizamos como destinatario de las alertas. Teniendo en cuenta la velocidad en la que
se ejecuta el control del programa y lo rápido que se enviará el email, estamos hablando de cientos de mensajes que recibiremos en poco tiempo que nos descuidemos, si no tenemos el necesario cuidado en este aspecto.