ラズベリーパイ – 新しいメールとカレンダーの予定を通知する
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 議事録, nos lo recordará por el altavoz!
Convirtiendo el texto en voz,
Empezamos montando el sistema que nos hablará, mediante un conversor de texto a voz, un Text-to-Speech (TTSの) 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:
[ソースコード language=”平地”]sudo apt-get -y install festival[/ソースコード]
Si queremos usar&アンプ;nbsp;la salida 3,5 del jack de audio para el sonido en vez del HDMI ejecutaremos:
[ソースコード language=”平地”]amixer cset numid=3 1[/ソースコード]
Será interesante poner bien el volumen que queremos oir, y grabamos los cambios:
[ソースコード language=”平地”]alsamixer
sudo alsactl store[/ソースコード]
悪くありません, 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:
[ソースコード language=”平地”]
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 [/ソースコード]
最後に自分が興味のあるものを追加し, 他のものはコメントアウトします:
[ソースコード language=”平地”];(set! voice_default ‘voice_JuntaDeAndalucia_es_pa_diphone)
(set! voice_default ‘voice_JuntaDeAndalucia_es_sf_diphone)[/ソースコード]
これでテキストを音声に変換して試すことができます:
[ソースコード language=”平地”]echo Hola manolo que tal estas | festival –TTSの[/ソースコード]
興味があれば, パラメータを与えて実行すると、そのパラメータを読み上げるスクリプトを作成できます, 他のスクリプトから呼び出す場合に便利です, 私の場合は ‘textoAvoz.sh’:
[ソースコード language=”平地”]エコー $1 | festival –TTSの[/ソースコード]
Raspberry Piからカレンダーを読む,
カレンダーを読みたい場合, 私が最も良い体験をしたのは ‘gcalcli’ です, なぜならどんなカレンダーでも管理できるからです, Gmailのアカウントに興味のある限りカレンダーを追加することができます, Exchangeや他のシステムのカレンダーも追加できます, さらに興味のあるカレンダーを購読することも可能です…
gcalcliをインストールします
[ソースコード language=”平地”]sudo apt-get install git python-pip python-gdata python-dateutil python-gflags python-vobject python-parsedatetime
sudo pip install gcalcli[/ソースコード]
インストールしたら, 次のコマンドを実行して、認証コードを取得し、Gmailアカウントに権限を付与するためのURLを取得します. 次のコマンドを実行し、ブラウザでURLを開きます, コードを貼り付ければ準備完了です!
[ソースコード language=”平地”]gcalcli list –noauth_local_webserver[/ソースコード]
アカウントのカレンダーが表示されるか確認してみます:
[ソースコード language=”平地”]gcalcli list[/ソースコード]
次に、今後のイベントが表示されるか確認します 15 議事録:
[ソースコード language=”平地”]gcalcli remind 15 ‘echo %s'[/ソースコード]
Creamos el siguiente script ‘lee_calendario.sh’ そしてそれを実行可能にします:
[ソースコード language=”平地”]
#!/ビン/バッシュ
CITA=`/usr/local/bin/gcalcli remind 4 ‘echo %s’ –cal=Personal`
echo $CITA
もし [ "$CITA" == "" ]; そうしたら
echo "No hay citas"
然も無くば
echo "Hay citas"
HORA=$(cut -c-7 &アンプ;中尉;&アンプ;中尉;&アンプ;中尉; "$CITA")
echo $HORA
ASUNTO=${CITA:7:1000}
FRASE1="Hector, en cinco minutos, で "
FRASE2=" acuerdate de "
FRASE="$FRASE1 $HORA $FRASE2 $ASUNTO"
echo $FRASE
echo $FRASE | /usr/bin/festival –TTSの
FIの
[/ソースコード]
そして、私たちはそれを実行しようとしました!
[ソースコード language=”平地”]./lee_calendario.sh[/ソースコード]
Lo ponemos en crontab para que se ejecute cada 5 minutos y listo!
[ソースコード language=”平地”]*/5 * * * * /home/pi/lee_calendario.sh[/ソースコード]
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’:
[ソースコード language=”平地”]
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(何一つ, "UNSEEN")
new = new[0].割る()
len の場合(新機能) > 1:
Mails = ‘新しいメールがあります ‘ + str(レン(新機能)) + ‘ 新しいメール’
import サブプロセス
subprocess.call を呼び出します。(["/home/pi/textoAvoz.sh", メール])
elif len(新機能) == 1:
Mails = ‘新しいメールがあります’
import サブプロセス
subprocess.call を呼び出します。(["/home/pi/textoAvoz.sh", メール])
もし (レン(新機能) > 0):
res = list()
res1 = list()
for msg in new:
typ, data = mail.fetch(メッセージ(Msg), ‘(BODY[HEADER.FIELDS (SUBJECT)])’) # 差出人, 日付, 等
data = data[0][1].strip()
decoded = decode_header(日付[9:])[0] # "Subject: " です 9 文字の長さ
text = decoded[0].取り替える("\r\n", "")
もし (decoded[1] != None):
text = unicode(テキスト, decoded[1])
res.append(text.encode(‘utf-8’))
typ, data1 = mail.fetch(メッセージ(Msg), ‘(BODY[HEADER.FIELDS (差出人)])’) # 差出人, 日付, 等
data1 = data1[0][1].strip()
Arroba = data1.index(‘<‘)
decoded1 = decode_header(data1[6:Arroba-1])[0] # "Subject: " です 9 文字の長さ
text1 = decoded1[0].取り替える(‘"’, "")
もし (decoded1[1] != None):
text1 = unicode(text1, decoded1[1])
res1.append(text1.encode(‘utf-8’))
text1 = unicode(text1)
text = unicode(テキスト)
import unicodedata
text1output = unicodedata.normalize(‘NFKD’, text1).encode(‘ascii’,’ignore’)
textoutput = unicodedata.normalize(‘NFKD’, テキスト).encode(‘ascii’,’ignore’)
Texto = ‘"Correo de ‘ + text1output + ‘, con asunto: ‘ + textoutput + ‘"’
プリント (テキスト)
import サブプロセス
subprocess.call を呼び出します。(["/home/pi/textoAvoz.sh", テキスト])
[/ソースコード]
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!









































