Lampone Pi – Notifica di nuove email e appuntamenti 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 cómo configurar la Pi para que nos hable por el altavoz y nos diga si hemos recibido 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 verbale, nos lo recordará por el altavoz!

Raspberry Calendario Mail 01 Bujarra

 

Convirtiendo el texto en voz,

Empezamos montando el sistema que nos hablará, mediante un conversor de texto a voz, un Text-to-Speech (Sintesi vocale) usaremos el sintetizador de voz ‘festival’, lo instalaremos en nuestra Raspberry Pi, que es compatible con cualquier idioma, posteriormente nos bajaremos los dífonos en castellano desde la forja de guadalinex, tendremos dos voces, una femenina (Silvia) y otra masculina (Pedro), cada cual que use la que más le guste 😉

 

Instalamos festival en nuestras Raspberry Pi:

[linguaggio del codice sorgente=”Pianura”]sudo apt-get -y install festival[/Codice sorgente]

Si queremos usar&Registro delle emissioni;la salida 3,5 del jack de audio para el sonido en vez del HDMI ejecutaremos:

[linguaggio del codice sorgente=”Pianura”]amixer cset numid=3 1[/Codice sorgente]

 

Será interesante poner bien el volumen que queremos oir, y grabamos los cambios:

[linguaggio del codice sorgente=”Pianura”]alsamixer
sudo alsactl store[/Codice sorgente]

 

Non male, 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:

[linguaggio del codice sorgente=”Pianura”]
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 [/Codice sorgente]

 

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

[linguaggio del codice sorgente=”Pianura”];(set! voice_default ‘voice_JuntaDeAndalucia_es_pa_diphone)
(set! voice_default ‘voice_JuntaDeAndalucia_es_sf_diphone)[/Codice sorgente]

 

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

[linguaggio del codice sorgente=”Pianura”]echo Hola manolo que tal estas | festival –tts[/Codice sorgente]

 

Se siamo interessati, 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’:

[linguaggio del codice sorgente=”Pianura”]ECO $1 | festival –tts[/Codice sorgente]

 

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:

[linguaggio del codice sorgente=”Pianura”]sudo apt-get install git python-pip python-gdata python-dateutil python-gflags python-vobject python-parsedatetime
sudo pip install gcalcli[/Codice sorgente]

 

Una volta installato, 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!

[linguaggio del codice sorgente=”Pianura”]gcalcli listnoauth_local_webserver[/Codice sorgente]

 

Probamos a ver si vemos los calendarios de nuestra cuenta:

[linguaggio del codice sorgente=”Pianura”]gcalcli list[/Codice sorgente]

 

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

[linguaggio del codice sorgente=”Pianura”]gcalcli remind 15 ‘echo %s'[/Codice sorgente]

 

Creamos el siguiente scriptlee_calendario.sh’ e renderlo eseguibile:

[linguaggio del codice sorgente=”Pianura”]
#!/bin/bash

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

se [ "$CITA" == "" ]; allora
echo "No hay citas"
altro
echo "Hay citas"
HORA=$(cut -c-7 ≪≪≪ "$CITA")
echo $HORA
ASUNTO=${CITA:7:1000}
FRASE1="Hector, en cinco minutos, a "
FRASE2=" acuerdate de "
FRASE="$FRASE1 $HORA $FRASE2 $ASUNTO"
echo $FRASE
echo $FRASE | /usr/bin/festival –tts
Fi
[/Codice sorgente]

E abbiamo cercato di metterlo in pratica!

[linguaggio del codice sorgente=”Pianura”]./lee_calendario.sh[/Codice sorgente]

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

[linguaggio del codice sorgente=”Pianura”]*/5 * * * * /home/pi/lee_calendario.sh[/Codice sorgente]

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’:

[linguaggio del codice sorgente=”Pianura”]
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(Nessuno, "UNSEEN")
new = new[0].diviso()

Se Len(new) > 1:
Mails = ‘Tienes ‘ + str(Len(new)) + ‘ correos nuevos
Sottoprocesso di importazione
sottoprocesso.chiamata(["/home/pi/textoAvoz.sh", Mails])
elif len(new) == 1:
Mails = ‘Tienes un correo nuevo
Sottoprocesso di importazione
sottoprocesso.chiamata(["/home/pi/textoAvoz.sh", Mails])

se (Len(new) > 0):
res = list()
res1 = list()
for msg in new:
typ, data = mail.fetch(Msg, ‘(BODY[HEADER.FIELDS (SUBJECT)])’) # DA, DATE, and so on
data = data[0][1].strip()
decoded = decode_header(dattero[9:])[0] # "Subject: " is 9 characters long
text = decoded[0].Sostituire("\r\n", "")
se (decoded[1] != None):
text = unicode(Testo, decoded[1])
res.append(text.encode(‘utf-8’))

typ, data1 = mail.fetch(Msg, ‘(BODY[HEADER.FIELDS (DA)])’) # DA, DATE, and so on
data1 = data1[0][1].strip()
Arroba = data1.index(‘<‘)
decoded1 = decode_header(data1[6:Arroba-1])[0] # "Subject: " is 9 characters long
text1 = decoded1[0].Sostituire(‘"’, "")
se (decoded1[1] != None):
text1 = unicode(text1, decoded1[1])
res1.append(text1.encode(‘utf-8’))
text1 = unicode(text1)
text = unicode(Testo)
import unicodedata
text1output = unicodedata.normalize(‘NFKD’, text1).encode(‘ascii’,’ignore’)
textoutput = unicodedata.normalize(‘NFKD’, Testo).encode(‘ascii’,’ignore’)
Texto = ‘"Correo de ‘ + text1output + ‘, con asunto: ‘ + textoutput + ‘"
Stampare (Texto)
Sottoprocesso di importazione
sottoprocesso.chiamata(["/home/pi/textoAvoz.sh", Texto])
[/Codice sorgente]

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! Spero che ti piaccia!

Post consigliati

Autore

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Non esitate a contattarmi, Cercherò di aiutarti ogni volta che potrò, Condividere è vivere ;) . Goditi i documenti!!!

Gateway unificato Citrix NetScaler

24 di maggio de 2016