Paso 5: Configuración de la Pi para VoIP
Frambuesa Pi se supone para hacer algunas llamadas telefónicas alerta mediante una lista de números de teléfono y un archivo .wav "prespoken". Un gran esfuerzo en este tema ha sido realizado por Binerry. Incorporamos su trabajo en el proyecto actual.
Binerry ha incluido un motor de texto a voz (TTS) que no necesitamos ya que utilizamos un archivo de voz grabado por nosotros mismos. Todavía instalar un motor TTS con el fin de evitar un cambio demasiado de sus guiones. Por lo tanto, vamos a instalar eSpeak.
apto-conseguir instalar espeak espeak-datos
Para hacer llamadas, que utilizamos un sistema basado en sip/voip. La herramienta favorita es PJSIP. Ofrece no sólo una interfaz de línea de comandos - proporciona una potente biblioteca/api (PJSUA) para usar en proyectos propios basados en sip. Primero instalamos algunas bibliotecas:
apto-conseguir instalar subversion automake build-essential autoconf libtool libasound2-dev libpulse-dev libssl-dev libsamplerate0-dev libcommoncpp2-dev libccrtp-dev libzrtpcpp-dev libdbus-1-dev libdbus-c ++-dev libyaml-dev libpcre3-dev libgsm1-dev libspeex-dev libspeexdsp-dev libcelt-dev
Para comenzar a utilizar PJSIP/PJSUA tenemos que descargar y compilarlo. Estoy usando un Fritz! Caja para hacer las llamadas al exterior. Se recomienda para el uso de un Fritz! Caja para desactivar ciertas opciones con PJSIP/PJSUA y codecs según el comentario de tgwaste en la página de Binerry. Evita problemas de sonido. Por lo tanto, creamos un fichero bash "PJSIP_INSTALL.sh" en la carpeta water_alarm_system con el siguiente contenido (véase adjunta archivos):
#! / bin/bash
opts = "--disable--punto flotante--disable-speex-aec--desactivar filtro grande"
codecs = "--disable-gsm-codec, codec--disable-speex---disable-l16-codec, codec--disable-ilbc---disable-g722-codec, codec--disable-g7221"
CD/usr/src
RM -rf /usr/src/trunk
svn checkout http://svn.pjsip.org/repos/pjproject/trunk
CD /usr/src/trunk;. / configure $opts $codecs & & hacer dep & & hacer limpia & & hacer & & hacer instalar
Ejecutar el archivo con el bash comando
PJSIP_INSTALL.sh
descargar y compilar PJSIP/PJSUA con la configuración anterior. Acabado compilación llevará tiempo (usted puede tomar un café o dos mientras tanto).
Es necesario registrar la frambuesa Pi como un teléfono nuevo en el Fritz! caja para obtener el nombre de usuario (por ejemplo, 625) y la contraseña de su elección.
Binerry desarrolló la herramienta SIPCALL que fácilmente puede hacer una llamada automática a un número determinado con un motor de texto a voz o reproducir un archivo .wav. En el proyecto actual sólo reproducir un archivo .wav ya que es suficiente para dar una alerta.
SIPCALL es fácil utilizable mediante script en bash por ejemplo verificar un estado de sistema o sensor y coloque una llamada si se alcanza un umbral crítico. SIPCALL puede descargarse del repositorio github de Binerry. Los archivos 'Makefile' y 'sipcall.c' son necesarios y tienen que ser almacenados en la carpeta ' home/pi/water_alarm_system'. Información general también está disponible en el archivo readme. Para compilar sipcall necesita el paquete pkg-config:
apt-get install pkg-config
Antes de compling cambiamos el script para evitar el uso del archivo .wav generado por el motor TTS pero utilizando nuestro propio archivo de voz grabado declarado por la variable play_file, por ejemplo 'alarm_phrase.wav' (véase la lista de variables al final de este artículo).
CD /home/pi/water_alarm_system
Buscar en sipcall.c para sintetizar la voz. En la línea debajo de añadir ' / / desactivado: ' llegar ' / / desactivado: synthesize_speech(app_cfg.tts_file);' Ahora compila con el comando
hacer sipcall
Si tienes error mensajes "callejeros '\240'" y "los ' \302'" se refieren probablemente a algunos caracteres no visibles extraños que tienes en tu código al copiar desde el explorador web. Puede ser debido a la configuración del teclado. De todos modos, usted se librará de estos falsos personajes escribiendo el comando
TR-d "\240\302" sipcall2.c
Luego borrar 'sipcall.c' y cambiar el nombre de 'sipcall2.c' a 'sipcall.c'. Vuelva a ejecutar el comando 'make sipcall' y lo logras compilar. Para simplificar tu vida, sólo puede tomar los archivos adjuntos de la lista para usar 'sipcall.c' y 'Makefile'.
Es una buena opción en 'sipcall.c' que le permite elegir una PJSUA_LOG_LEVEL entre 0 y 6. Le permite controlar la cantidad de mensajes sipcall volverá en la ejecución y es muy útil en problemas de localización. Pero no olvide compilar después de cada cambio.
El archivo WAV tiene que ser generada por separado por su "discurso" de la grabación con un micrófono. Una manera es utilizar Grabadora de sonidos de Microsoft que está disponible gratis en todas las versiones de la ventana. El archivo wma resultante tiene que ser convertida en un archivo .wav. Esto puede hacerse en Windows con el software comercial AVS Audio Converter. La configuración debe ser
para evitar problemas de sonido (por lo menos con un Fritz! Caja). El play_file tiene que ser copiado en la carpeta "water_alarm_system" en la Raspberry Pi. Esto puede hacerse en Windows por ejemplo con el cliente SSH Tunnelier. Requiere SSH activado en la frambuesa Pi. Cómo hacer está bien explicado en este video.
Se recomienda actualizar regularmente el código de fuente PJSIP/PJSUA a la última versión ejecutando el comando 'bash PJSIP_INSTALL.sh' una vez más.