Framboesa Pi – Notificando correos electrónicos nuevos y citas del calendario

Hace tiempo que quería pasaros un par de scripts que suelo usar para que una Raspberry Pi que tengo conectada a un altavoz me hable; en este documento únicamente veremos como configurar la Pi para que nos hable por el altavoz y nos diga si hemos recebido algún correo electrónico, y si es así nos indicará el remitente y el asunto del correo; así como si tenemos alguna cita en el calendario en los próximos 5 ata, nos lo recordará por el altavoz!

Raspberry Calendario Mail 01 Bujarra

 

Convirtiendo el texto en voz,

Empezamos montando o sistema que nos falará, mediante um conversor de texto a voz, um Text-to-Speech (TTS) usaremos o sintetizador de voz 'festival', instalaremos no nosso Raspberry Pi, que é compatível com qualquer idioma, posteriormente baixaremos os dífões em castelhão desde a força de guadalinex, tendremos dos voces, una femenina (Silvia) y otra masculina (Pedro), cada que use la que más le guste 😉

 

Instalamos festival en nuestras Raspberry Pi:

[sourcecode language=”plain”]sudo apt-get -y install festival[/Código-fonte]

Si queremos usar la salida 3,5 del jack de audio para el sonido en vez del HDMI executaremos:

[sourcecode language=”plain”]amixer cset numid=3 1[/Código-fonte]

 

Será interessante poner bien el volume que queremos oir, y grabamos los cambios:

[sourcecode language=”plain”]alsamixer
sudo alsactl store[/Código-fonte]

 

Nada mau, ahora descargaremos los idiomas que nos interesen, poner el que queráis, os dejo en orden primero voz femenina y el otro la masculina. Además los instalamos e indicamos en el fichero de configuración cual usar:

[sourcecode language=”plain”]
wget https://github.com/guadalinex-archive/hispavoces/raw/master/packages/festvox-sflpc16k_1.0-1_all.deb
wget https://github.com/guadalinex-archive/hispavoces/raw/master/packages/festvox-palpc16k_1.0-1_all.deb
sudo dpkg -i festvox-sflpc16k_1.0-1_all.deb
sudo dpkg -i festvox-palpc16k_1.0-1_all.deb
sudo vim /etc/festival.scm [/Código-fonte]

 

Al final añadimos la que nos interese, y comentamos las demás:

[sourcecode language=”plain”];(set! voice_default ‘voice_JuntaDeAndalucia_es_pa_diphone)
(set! voice_default ‘voice_JuntaDeAndalucia_es_sf_diphone)[/Código-fonte]

 

Y ya podremos probar a convertir un texto en audio con:

[sourcecode language=”plain”]echo Hola manolo que tal estas | festival –Tts[/Código-fonte]

 

Si nos interesa, podremos generar un script que al ejecutarlo con un parámetro nos lea dicho parámetro, más útil para luego llamarlo desde otros scripts, en mi caso le llamotextoAvoz.sh’:

[sourcecode language=”plain”]ECO $1 | festival –Tts[/Código-fonte]

 

Leer calendario desde la Raspberry Pi,

Si queremos leer nuestro calendario, la mejor experiencia la he tenido con ‘gcalcli’, ya que se puede gestionar cualquier calendario, podremos agregar tantos calendarios a nuestra cuenta de Gmail que nos interesen, sean de nuestros Exchange u otros sistemas, así como suscribirnos a calendarios que nos interesen

 

Instalamos gcalcli o Google Calendar Command Line Interface:

[sourcecode language=”plain”]sudo apt-get install git python-pip python-gdata python-dateutil python-gflags python-vobject python-parsedatetime
sudo pip install gcalcli[/Código-fonte]

 

Uma vez instalado, ejecutaremos el siguiente comando para obtener la URL que nos permita obtener el código de activación y darle permisos en nuestra cuenta de Gmail. Ejecutamos el siguiente comando y abrimos la URL en un navegador, pegaremos el código y listo!

[sourcecode language=”plain”]gcalcli listnoauth_local_webserver[/Código-fonte]

 

Probamos a ver si vemos los calendarios de nuestra cuenta:

[sourcecode language=”plain”]gcalcli list[/Código-fonte]

 

Y probamos a que nos muestre si tenemos eventos en los próximos 15 ata:

[sourcecode language=”plain”]gcalcli remind 15 ‘echo %s'[/Código-fonte]

 

Creamos el siguiente scriptlee_calendario.sh’ e torná-lo executável:

[sourcecode language=”plain”]
#!/bin/bash

CITA=`/usr/local/bin/gcalcli remind 4 ‘echo %s’ –cal=Personal`
echo $CITA

se [ "$CITA" == "" ]; em seguida,
echo "No hay citas"
mais
echo "Hay citas"
HORA=$(cut -c-7 &Tenente;&Tenente;&Tenente; "$CITA")
echo $HORA
ASUNTO=${CITA:7:1000}
FRASE1="Hector, en cinco minutos, em "
FRASE2=" acuerdate de "
FRASE="$FRASE1 $HORA $FRASE2 $ASUNTO"
echo $FRASE
echo $FRASE | /usr/bin/festival –Tts
Fi
[/Código-fonte]

E tentamos executá-lo!

[sourcecode language=”plain”]./lee_calendario.sh[/Código-fonte]

Lo ponemos en crontab para que se ejecute cada 5 minutos y listo!

[sourcecode language=”plain”]*/5 * * * * /home/pi/lee_calendario.sh[/Código-fonte]

Leer el mail desde la Raspberry Pi,

Con este sencillo script de python podremos obtener los mails no leidos mediante una conexión IMAP a nuestro servidor de correo, nos leerá el remitente y el asunto de cada correo. Creamos el archivo ‘lee_mail.py’:

[sourcecode language=”plain”]
import imaplib
from email.header import decode_header

mail = imaplib.IMAP4_SSL(‘FQDN_SERVIDOR_CORREO’)
mail.login(‘USUARIO@DOMINIO’, ‘CONTRASEÑA’)
mail.select(‘INBOX’, readonly=True)
typ, new = mail.search(Nenhum, "UNSEEN")
new = new[0].fender()

Se Len(novo) > 1:
Mails = ‘Tienes ‘ + str(len(novo)) + ‘ correos nuevos
import subprocess
subprocess.call(["/home/pi/textoAvoz.sh", Mails])
elif len(novo) == 1:
Mails = ‘Tienes un correo nuevo
import subprocess
subprocess.call(["/home/pi/textoAvoz.sh", Mails])

se (len(novo) > 0):
res = list()
res1 = list()
for msg in new:
typ, data = mail.fetch(Msg, ‘(BODY[HEADER.FIELDS (SUBJECT)])’) # FROM, DATE, etc
data = data[0][1].strip()
decoded = decode_header(data[9:])[0] # "Subject: " é 9 characters long
text = decoded[0].Substituir("\r\n", "")
se (decoded[1] != Nenhum):
text = unicode(Texto, decoded[1])
res.append(text.encode(‘utf-8’))

typ, data1 = mail.fetch(Msg, ‘(BODY[HEADER.FIELDS (FROM)])’) # FROM, DATE, etc
data1 = data1[0][1].strip()
Arroba = data1.index(‘<‘)
decoded1 = decode_header(data1[6:Arroba-1])[0] # "Subject: " é 9 characters long
text1 = decoded1[0].Substituir(‘"’, "")
se (decoded1[1] != Nenhum):
text1 = unicode(text1, decoded1[1])
res1.append(text1.encode(‘utf-8’))
text1 = unicode(text1)
text = unicode(Texto)
import unicodedata
text1output = unicodedata.normalize(‘NFKD’, text1).encode(‘ascii’,’ignore’)
textoutput = unicodedata.normalize(‘NFKD’, Texto).encode(‘ascii’,’ignore’)
Texto = ‘"Correo de ‘ + text1output + ‘, con asunto: ‘ + textoutput + ‘"
imprimir (Texto)
import subprocess
subprocess.call(["/home/pi/textoAvoz.sh", Texto])
[/Código-fonte]

Recordamos hacerlo ejecutable, ponerlo en el cron igualmente si nos interesa con la programación que nos interese.

Fácil y sencillo cómo saber si tenemos citas en el calendario o mails y queremos que una dulce voz nos lo indique! Espero que lo disfrutéis!

Postagens recomendadas

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Não hesite em contactar-me, Vou tentar ajudá-lo sempre que puder, Compartilhar é viver ;) . Desfrute de documentos!!!