Una manera fácil de crear una alerta de voz en el sistema de automatización del hogar ("Smart Home")

Después de probar la consola del cliente SIP Linphonec, vi en él la posibilidad de una manera simple y rápida de implementar alertas de voz en un teléfono móvil, para un sistema de automatización del hogar.

Creo que este método es adecuado para muchos sistemas de automatización del hogar de bricolaje, daré mi versión.

Tengo un sistema de automatización del hogar inteligente MajorDoMo que está instalado en una computadora de placa única Raspberry Pi (que ejecuta Raspbian (Debian 9).

Crearemos la posibilidad de notificación de MajorDoMo a un teléfono inteligente sin el uso de equipos adicionales y nuestro servidor VoIP.

Un breve principio de la alerta: en caso de un accidente crítico (todos pueden determinar su propia lista de accidentes), el sistema de automatización administra el cliente VoIP de la consola y llama al propietario a través del protocolo SIP, después de la respuesta reproduce el archivo de sonido previamente grabado con el mensaje del accidente.

En primer lugar, necesitamos dos cuentas del proveedor SIP con entrada / salida gratuita dentro de la red. Por ejemplo, tome el servicio de telefonía en la nube de Zadarma.com.

El primer paso: nos registramos con el proveedor, mientras accedemos a su cuenta personal y su cuenta SIP. Podemos registrarnos en varios buzones, pero podemos reponer la cuenta y obtener números adicionales. En cualquier caso, deberíamos tener 2 números (cuentas) y una contraseña.

En un teléfono inteligente (funciona para mí con Androd OS) instalamos una aplicación móvil del mercado, cualquier cliente SIP lo hará. Para mayor comodidad y minimizar la configuración inicial, podemos usar la aplicación patentada para llamadas de Zadarma, pero podemos ser más funcionales.
Después de la instalación, realizamos el registro indicando su número y contraseña, esto completa la configuración del teléfono inteligente. Entonces usamos un número.

En el servidor Raspberry Home Automation, necesitamos un cliente terminal SIP Linphonec. Al instalar desde el repositorio de Raspbian, se instala una versión 3.6.1 bastante antigua, que no funciona correctamente con el sistema de sonido ALSA, pero como no hay necesidad de usar la voz directamente, sigamos el camino fácil.

Instalando la versión actual del paquete Linphone (3.12.0) sin una interfaz gráfica para Debian 9, describí en un artículo anterior: Botón de llamada de bricolaje. Raspberry Pi, MajorDoMo, Freeswitch y Linphonec . Allí puede encontrar información sobre la instalación de una tarjeta de sonido USB y la configuración de sonido para Raspberry Pi.

En la terminal, ejecute el siguiente comando:

sudo apt-get install linphone-nogtk 

Se realiza la instalación de la utilidad de cliente de consola linphonec y linphonecsh, un programa de consola para administrar linphonec que se ejecuta en segundo plano en el directorio / usr / bin.
Hagamos la primera ejecución escribiendo:

 linphonec 

Lo lanzamos, el cliente SIP jura en ALSA, no le prestamos atención.

Ejecutamos el comando de registro del cliente (Linphonec) en el servidor de zadarma, especifique su segundo número y contraseña:

 register sip:xxxxxx@sip.zadarma.com sip.zadarma.com PASSWORD 

Si la entrada es correcta, vemos la respuesta sobre el registro exitoso:

imagen

Salimos del cliente (Ctrl + c, mientras el cliente guarda la configuración en el archivo .linphonerc del usuario actual, en mi caso, el directorio / home / pi /. La próxima vez que se inicie SIP, el cliente se registra automáticamente en el servidor del proveedor.

Grabamos un mensaje de voz (por ejemplo: "La atención del sistema se ha reiniciado, el estado ahora está en funcionamiento":

 arecord -D plughw:1,0 -f cd /home/pi/alarm_restart.wav 

Para ejecutar y controlar Linphonec en modo demonio, se utiliza la utilidad Linphonecsh. Inicialmente, al inicio, se requiere la inicialización del cliente linphonecsh -init. Cuando se ejecuta este comando, el cliente de la consola se inicia sin cargar el archivo de configuración.

Para que al inicio se lea la configuración, ejecute con la bandera con:

  linphonecsh init -c /home/pi/.linphonerc 

Ahora podemos administrar el cliente de la consola desde la terminal.

Lista de comandos de Linphonecsh
 Usage: linphonecsh <action> [arguments] where action is one of init : spawn a linphonec daemon (first step to make other actions) followed by the arguments sent to linphonec generic : sends a generic command to the running linphonec daemon followed by the generic command surrounded by quotes, for example "call sip:joe@example.net" register : register; arguments are --host <host> --username <username> --password <password> unregister : unregister dial : dial <sip uri or number> status : can be 'status register', 'status autoanswer' or 'status hook' soundcard : can be 'soundcard capture', 'soundcard playback', 'soundcard ring', followed by an optional number representing the index of the soundcard, in which case the soundcard is set instead of just read. exit : make the linphonec daemon to exit. 



Probemos los siguientes comandos:

 linphonecsh generic 'soundcard use files' 

 linphonecsh generic 'play alarm.wav' 

 linphonecsh dial sip:@sip.zadarma.com 

Donde genéricos son los equipos del programa Linphonec en sí. XXXXXX es nuestro número SIP instalado en el teléfono inteligente.

En este caso, se produce una llamada al responder: puede escuchar la reproducción de un archivo previamente grabado con un accidente.

Manualmente funcionó. Para integrarse con el sistema de automatización del hogar basado en MajorDoMo, por ejemplo, tome la emergencia de reiniciar el servidor.
Escribimos la siguiente línea en crontab (cuando se carga la PC, se carga el cliente de la consola:

 crontab -e 

 @reboot sudo -u pi linphonecsh init -c /home/pi/.linphonerc 

A continuación, vaya a la página web del sistema DD, vaya al Panel de control - Scripts - Eventos - Inicio. .



Los scripts se implementan en el lenguaje de programación PHP. Ya hay una línea en el código que, al iniciar el sistema, pronuncia una frase con la dirección IP del servidor.

Agregue algunos más:

 exec ("sudo -u pi linphonecsh generic 'soundcard use files'"); 

 exec ("sudo -u pi linphonecsh generic 'play alarm.wav'"); 

 exec ("sudo -u pi linphonecsh dial sip:576935@sip.zadarma.com "); 

Instalamos para ejecutar después de guardar , guardamos, al mismo tiempo hay una llamada en el teléfono móvil.

Reiniciamos el sistema MajorDoMo, a través del Servicio - Reinicio / apagado .
Después de reiniciar, llega una notificación de voz en el teléfono. Se puede hacer el mismo algoritmo de acciones para otro accidente crítico para usted.

Después de cambiar ligeramente la secuencia de acciones, puede instalar su propio servidor de telefonía IP (Asterisk, Freeswitch, etc.) en su sistema de automatización del hogar, conectarle una puerta de enlace VoIP y acceder directamente a un operador móvil o PSTN. Esta opción es más funcional, tiene más funciones, pero también requiere algunos costos importantes, tanto materiales como para configurar el sistema.

Source: https://habr.com/ru/post/466735/


All Articles