¿Cómo enviar notificaciones de voz en los altavoces sonos

El sueño de cualquier entusiasta de la casa inteligente es un hogar se puede hablar, pero la realidad es muy lejos de eso.

Amazon Eco, por ejemplo, le permite usar cualquier número de características de voz controlado, pero de diálogo debe ser iniciada por usted con una pregunta - no se puede simplemente tenerla anunciar un mensaje importante.

poder hacer esto con un sistema Sonos sin embargo, y un poco de magia DIY Frambuesa Pi. Hoy os voy a mostrar cómo configurar notificaciones de voz en su sistema Sonos, la introducción de un par de recetas útiles IFTTT, integraciones OpenHAB, y más, para hacer uso de la función de notificación.

Tenga en cuenta que hay un Sonos nativa vinculante para OpenHAB disponibles, pero se sabe que causa problemas de memoria debido a una biblioteca uPnP defectuoso. Yo sugeriría que saltar por ahora, y utilizando el método en este tutorial en su lugar.

Una Frambuesa Pi ejecutan Linux Raspian es ideal para este tutorial, pero también debería funcionar en cualquier servidor para el hogar basados ​​en Linux que se estén ejecutando. En este caso, estoy usando el mismo Pi frambuesa que se ejecuta OpenHAB, el sistema domótico de código abierto. El resto de este tutorial asume que también está ejecutando esto en un Raspberry Pi, y, o bien tener una ventana de terminal local abierta en el escritorio, o están ha iniciado la sesión en forma remota a través de SSH.Introducción a OpenHAB Home Automation en la Raspberry PiIntroducción a OpenHAB Home Automation en la Raspberry PiOpenHAB es una plataforma madura, abierta casa fuente de automatización que se ejecuta en una variedad de hardware y es el protocolo agnóstico, lo que significa que se puede conectar a casi cualquier hardware de automatización del hogar en el mercado hoy en día.Lee mas

Necesitarás

  • Frambuesa Pi 2 (modelos más antiguos deben trabajar, pero comprobar si hay cambios específicos en las instrucciones)
  • Al menos un altavoz Sonos (otros sistemas de audio no son compatibles, esto es un tutorial para Sonos solamente)
  • cuenta gratuita en VoiceRSS.org. Registro, y luego encontrar la clave de API, que vamos a necesitar más adelante para generar los mensajes de voz.

Instalar Nodo reciente

Comprobar la versión de nodo que tiene escribiendo:

-v nodo

Tenga en cuenta que la versión 6 no es compatible. Si tiene nodo 6, tendrá que quitar primero que, a continuación, siga las instrucciones a continuación para instalar v5.5.

Si usted no tiene v5 o si se obtiene un error que no se encuentra, sigue estas instrucciones para instalar el Nodo. El siguiente comando asume una Frambuesa Pi 2- para los modelos más antiguos, el uso armv6l en lugar de armv7l.

wget https://nodejs.org/download/release/latest-v5.x/node-v5.12.0-linux-armv7l.tar.gzalquitrán -xvf nodo-v5.12.0-linux-armv7l.tar.gzdiscos compactos node-v5.12.0-linux-armv7lsudo cp -R * / usr / local

Confirmar de nuevo al teclear:

-v nodo

Y hay que ver v5.12 (o cualquiera que sea el último fue descargado).

A continuación, tenemos algunos módulos de nodo para instalar. También queremos que el gestor de paquetes de nodo.

sudo apt-get instalar NPMsudo NPM instalar -gramo NPMsudo NPM instalar -g nodo-gyp

Esos son los pre-requisitos fuera del camino, ahora hacia la parte divertida.

Sonos API HTTP

La API de Sonos HTTP crea un servidor web en la red local, lo que nos permite hacer ping a una URL con un mensaje para anunciar en un Sonos (y para controlar de forma remota si se quiere, aunque este tutorial se centra sólo en el aspecto de notificación de voz).

Git clon https://github.com/jishi/node-sonos-http-api.git Sonosdiscos compactos SonosNPM instalar --producciónNPM comienzo

Si ve un mensaje acerca de tal y tal módulo no encontrado, acaba de hacer otra NPM instalar y el nombre del módulo, a continuación, tratar inicio NPM de nuevo. Si se producen errores en relación con “Requiere un compilador C ++ 11”, fijar con los siguientes comandos:

sudo apt-get instalar gcc-4.8 g ++ - 4,8sudo update-alternativas --install / usr / bin / GCCGCC / usr / bin / gcc-4.6 20sudo update-alternatives --install / usr / bin / gcc gcc /usr/bin/gcc-4.8 50sudo update-alternatives --install / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20sudo update-alternatives --install / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50

Eventualmente debería ver algo como esto:

Sonos-http-api de trabajo

El servidor se está ejecutando ahora, la interfaz con Sonos. El formato de esta API es fácil:

http: // [IP de servidor]: 5005 / [NOMBRE DE LA HABITACIÓN] / [Acción]

O como un ejemplo concreto:

http://192.168.1.99:5005/kitchen/playlist/chillout

La acción que nos interesa es el comando “decir”, que se utiliza de la siguiente manera:

http://192.168.1.99:5005/kitchen/say/make%20use%20of%20is%20awesome/en-gb

Usted escuchará un mensaje de error acerca de tener que registrarse para una clave de API en VoiceRSS.org. Ya debería haber hecho esto, por lo que escribir el siguiente y pegue su clave de API como appropirate:

nano settings.json

{

 "voicerss":"YOURAPIKEY"}

(Hit CTRL-X, Y, para guardar el archivo)

Reiniciar el servidor, y haga ping a la URL de nuevo. Después de unos segundos, se debe escuchar una voz Inglés deliciosa (aunque cambia el final de la URL para es-es si prefieres). Para hacer que el servidor HTTP API Sonos empezar de nuevo cuando se reinicie el Pi:

sudo nano /etc/rc.local

Añadir una línea antes de la exit 0:

Vídeo: Reseña: Sistema de audio inalámbrico SONOS

sudo /home/pi/sonos/server.js nodo lt; / Dev / null &

Ahora tiene la posibilidad de crear un mensaje de voz desde cualquier punto de la red local, simplemente haciendo ping a una dirección URL, por lo que las posibilidades están abiertas en este momento. Si usted está luchando por las ideas, sin embargo, sigue leyendo durante unos notificaciones útiles que he segregaba.

Notificaciones OpenHAB en Eventos

Vamos a dar un ejemplo sencillo en primer lugar: la detección de movimiento. Se trata de un caso de uso común para la activación de las luces, pero puede que desee una notificación de voz también si se trata de un sensor de movimiento en una zona con poco tráfico, o tal vez como una advertencia hacia adelante que alguien se acerca el sendero del jardín.

regla "Jardín de movimiento detecta"whenItem Garden_Motion changedthenvar mensaje de cadena = "Tiene una visita"sendHttpGetRequest("http: // localhost: 5005 / cocina / decir /"+mensaje.codificar("UTF-8")+"/ En-gb")fin

Debería ver cómo se puede integrar estas notificaciones de voz simples en cualquiera de sus reglas, pero vamos a probar algo un poco más complejo.

Previsión del tiempo todos los días de IFTTT a OpenHAB a Sonos

En esta receta, vamos a tener Sonos anunciar un informe meteorológico diario en su tiempo preferido.

Necesitará el My.OpenHAB vinculación habilitada, ya que esto crea una conexión segura entre el servidor OpenHAB interna y externa del servicio IFTTT. Poner esto en marcha, si no lo ha hecho - se puede hacer referencia a parte 1 de nuestra guía OpenHAB para obtener instrucciones completas, de lo contrario voy a suponer que ya lo tienes configurado con persistencia habilitado para todos los elementos.Introducción a OpenHAB Home Automation en la Raspberry PiIntroducción a OpenHAB Home Automation en la Raspberry PiOpenHAB es una plataforma madura, abierta casa fuente de automatización que se ejecuta en una variedad de hardware y es el protocolo agnóstico, lo que significa que se puede conectar a casi cualquier hardware de automatización del hogar en el mercado hoy en día.Lee mas

A continuación, crear un nuevo elemento de cuerda en su OpenHAB instalar, que almacenará el informe del tiempo diario. Antes de que esto es visible en el canal My.OpenHAB, necesitaremos inicializar con un poco de variable por defecto. Ping a la siguiente dirección URL (modificar raspberrypi.local a su servidor OpenHAB, o simplemente usar su dirección IP, y El tiempo de hoy al nombre que haya elegido String):

http: //raspberrypi.local:? 8080 / CMD Todays_Weather=Soleado

Entre para My.OpenHAB y comprobar el Artículos lista para asegurar la variable ahora se ha exportado.

mi punto de control de exportación openhab

De vuelta en IFTTT, crear una nueva receta, y utilizar el canal del tiempo como el disparador a la hora preferida del día. Tendrá que establecer su ubicación en primer lugar si usted nunca ha usado antes.

Seleccionar My.OpenHAB como la acción, y elegir el Todays_Weather como la variable de actualizar.

informe del tiempo ifttt

Por ahora, sólo debes elegir la siguiente ranura de media hora para la prueba - se puede actualizar la receta más adelante una vez que sepa que está funcionando.

Efectivamente, en el momento de prueba (de hecho, un poco antes), que tiene el pronóstico de hoy ha actualizado correctamente.

27/02/2016 10: 28: 01,689 [DEPURAR] [o.o.i.m.i.MyOpenHABServiceImpl] - Recibido mando Nublado hoy! Con un máximo de 7C y un mínimo de 1C. Repetir. Las condiciones serán Parcialmente nublado hoy, con un máximo de 7C y un mínimo de 1C. para Todays_Weather2016-02-27 artículo 10: 28: 01,697 [DEPURAR] [o.o.i.m.i.MyOpenHABServiceImpl] - almacenar(El tiempo de hoy), estado = Nublado hoy! Con un máximo de 7C y un mínimo de 1C. Repetir. Las condiciones serán Parcialmente nublado hoy, con un máximo de 7C y un mínimo de 1C.

El siguiente, necesitamos una regla OpenHAB para enviar esta variable para el Sonos “decir” URL. Lo siguiente debe hacerlo:

regla "Anunciar informe meteorológico diario"whenItem Todays_Weather recibido la actualizaciónentoncessendHttpGetRequest("http: // localhost: 5005 / cocina / decir /"+Todays_Weather.state.toString.encode("UTF-8")+"/ En-gb")fin

Esto es bastante simple: cada vez que se actualiza la variable Todays_Weather (que será, de forma automática, a las 8 am todos los días), ping a la URL. Usamos codificar ( “UTF-8”) función de cadena para que la oración de IFTTT adecuado para su uso en una URL. Para probar manualmente esta parte del sistema, sólo tiene que utilizar la API HTTP OpenHAB nuevo:

http: //raspberrypi.local:? 8080 / CMD Todays_Weather=Nublado, la posibilidad de albóndigas.

Conectarse a IFTTT Sin OpenHAB, Al-Si-Entonces-Este nodo

Por último, vamos a ver cómo conectar desde cualquier receta IFTTT sin la intermediación OpenHAB. En su lugar, vamos a instalar otro servidor web, y que exponemos a la Internet abierta. Esto no está exento de riesgos: cualquier tipo de servidor abierto es un riesgo para la seguridad, pero estamos mitigar esto no se está ejecutando una pila completa del servidor, sólo un pequeño servicio específico que sólo acepta ciertos comandos en un formato de paquete de datos segura JSON (por lo que no ataques de inyección SQL o autenticación será posible). Una vez que hemos terminado, tendrá una URL pública a la que puede enviar mensajes desde el canal IFTTT Maker.

Comience por la creación de uno de los muchos servicios gratuitos de DNS dinámico por ahí - recomiendo DuckDNS, en concreto, ya que da un simple conjunto de instrucciones para Raspberry Pi, lo que le permite actualizar su adddress IP automáticamente. Siga junto con estos, y recordar su URL para los próximos pasos. Su router también puede tener una función de DNS dinámico incorporado, a fin de comprobar allí primero. En mi caso, puedo obtener una * .mynetgear.com URL de forma gratuita, por lo que he utilizado.5 mejores proveedores de DNS dinámico Usted puede buscar para Hoy Gratis5 mejores proveedores de DNS dinámico Usted puede buscar para Hoy GratisDynDNS siempre fue una mención superior cuando DNSes dinámicos libres fueron criados. Pero ahora que se ha ido, ¿hay buenas alternativas? Seguro que hay.Lee mas

A continuación, encontrará su router el reenvío de puertos configuración página- aquí es donde vamos a indicarle lo que debe hacer con las solicitudes entrantes. Remitir todas las peticiones HTTP (puerto 80) al puerto 1337 en el servidor de Frambuesa Pi. Estoy asumiendo que tienes una dirección IP reservada ya para su Frambuesa Pi - si no es así, consulte la página de configuración del router para obtener direcciones IP reservadas, mientras que estás ahí, ya que no lo hace para cambiar la próxima semana y para que el servidor deje de funcionar repentinamente.

enrutador de reenvío de puerto config

Ahora para instalar el último bit de software de servidor.

https://github.com/sebauer/if-this-then-node.gitdiscos compactos si-este-then-nodo /NPM instalarserver.js nodo

Debería ver lo siguiente.

Si este error valores predeterminados entonces el nodo

Eso está bien, eso sólo significa que tenemos que actualizar nuestros datos. Abrir config.js en Nano y editar dichos datos a otro distinto del predeterminado, a continuación, guardar. Cuando se ejecuta el servidor de nuevo, debería ver esto:

Si este servidor en funcionamiento entonces el nodo

Estupendo. Pon a prueba tu máquina es accesible desde el mundo exterior escribiendo tu nombre de host DNS dinámico, y anexar /ifttn / al final de la URL. Si todo funciona, el mensaje “IFTTN - si-esto-entonces-nodo de la versión 2.0.1 está en marcha!” se mostrará en su navegador. Una vez más, para que este script se ejecute en el arranque, editar el /etc/rc.local presentar y añadir:

sudo /home/pi/if-this-then-node/server.js nodo lt; / Dev / null &

Si-Este-Then-Nodo funciona a través de plugins - hay unos pocos que vienen por defecto suministrados, pero no son de interés para nosotros. En cambio, descargar este plugin personalizado que he escrito para usted con los siguientes comandos.

Vídeo: Sonos Play 1. Música en streaming y Home Cinema sin cables

discos compactos pluginswget https://gist.githubusercontent.com/jamesabruce/4af8db24ba3452b94877/raw/d11c1cff3aa44dbb6a738eeb15202f3db461de75/sonos.js

También tendrá que instalar el solicitud módulo.

NPM instalar solicitud

A continuación, reinicie el servidor. El plugin es bastante simple, pero un poco diferente a la URL que estamos acostumbrados hasta ahora. En este caso, he utilizado la acción especial “sayall”, que envía el mensaje a todos los dispositivos de Sonos.

solicitud(`Http: // localhost: 5005 / sayall /`+params.mensaje+`/ En-gb`, función (error, respuesta, cuerpo)

Si prefieres ser capaz de dirigirse a dispositivos específicos, reemplazar esa línea con:

solicitud(`Http: // localhost: 5005 /`+params.device +`/decir/`+params.message +`/ En-gb`, función (error, la respuesta, el cuerpo)

Añadir otro parámetro de línea de llamada dispositivo a la solicitud JSON a continuación en el que especificar el nombre del dispositivo de Sonos.

Para probar esto, estoy usando la IFTTT “hacer” la aplicación botón. Crear una nueva receta, navegar a canales y seleccionar el Fabricante canal.

botón hacer

Crear una nueva receta. Introduzca la URL configuró con anterioridad de un proveedor de DNS dinámico libre (incluyendo / Ifttn / al final de la URL. No se olvide de esas barras). Seleccionar ENVIAR solicitud, application / json contenido, y el cuerpo del mensaje de la siguiente manera, en sustitución de todas las variables, según sea necesario, con los que ha configurado previamente:

{"acción":"Sonos","usuario":"YOURUSER","PW":"TU CONTRASEÑA","mensaje":"mensaje de entrada para todo el mundo: La cena está lista! Repetir. La cena está lista. Obtener el culo arriba ahora."}

Ahora tengo un botón de fácil acceso que se dará a conocer el mensaje en todos los dispositivos Sonos en la casa. Por supuesto, puede emparejar esto con cualquier canal IFTTT desea hacer un mensaje personalizado utilizando las variables de ese canal. Usted debería ser capaz de replicar el informe del tiempo desde arriba sin utilizar OpenHAB ahora, sin embargo no tomar el esfuerzo adicional de instalar otro servidor.

Nota: los hackers que escanear automáticamente. Esto sucede todo el tiempo, pero si usted está viendo registros, puede parecer alarmante. A continuación se puede ver que alguien trató sistemáticamente para determinar si alguna de las interfaces estándar phpMyAdmin eran accesibles. Los que no lo eran. No se alarme si ve algo similar. Es el equivalente de Internet de frío llamar a números de teléfono al azar para ver si alguien está ahí.

intentos de hackers servidor web

¿Qué va a anunciar?

Ahora debe tener las herramientas y kwowledge para bañar constantemente toda la casa en las notificaciones de voz sobre todo lo que pueda imaginar. ¿Quién necesita la música? Su único límite es de 350 peticiones diarias de VoiceRSS.org - pero eso es uno cada 4 minutos, por lo que debe estar bien.

Entonces, ¿qué vas a hacer con esto? Compartir sus ideas o recetas IFTTT en los comentarios!

Artículos Relacionados