Ayer le mostramos cómo crear una luz de wifi para Wi-Fi Cómo hacer una luz de Wi-Fi con control de Siri para bricolaje Cómo hacer una luz de Wi-Fi con control de Siri para bricolaje En esta guía, aprenderá a crear una luz controlable por Wi-Fi, y contrólala con Siri. Lea más que podría controlarse con Siri; hoy vamos a aprovechar ese conocimiento para hacer que Siri trabaje con un sistema de sonido Sonos también, y luego poner todo junto en una escena romántica.
Mira el resultado final:
El video de arriba no fue copiado ni montado, todo es posible usando Siri y la guía a continuación. No se requiere jailbreak, aunque hay algo de programación, para lo cual proporcioné el código.
Cosas que necesitará:
- Raspberry Pi
- dispositivo iOS
- Iluminación de color compatible con Siri, como Philips Hue con un concentrador de segunda generación, o nuestra DIY Wi-fi Light
- Sonos (u otro dispositivo de reproducción con una API HTTP)
- (Opcional) NodeMCU / ESP8266, relé y tomas de corriente; o un accesorio de toma de corriente comercial HomeKit
¿Por qué es ésto tan complicado?
HomeKit, y controlar sus dispositivos a través del control de voz es realmente limpio. Desafortunadamente, el ecosistema cerrado que es Apple, HomeKit está restringido a un puñado de dispositivos. Sonos no es uno de ellos. Sin embargo, no todo está perdido. Gracias a algunos hackers trabajadores, el protocolo HomeKit fue recientemente diseñado por ingeniería inversa, y como se demostró en nuestro último proyecto, ahora puedes crear tus propios dispositivos HomeKit falsos. Nos aprovecharemos de eso.
Empieza por seguir nuestro tutorial de luz DIY Wi-Fi Cómo hacer una luz DIY Wi-Fi controlada por Siri Cómo hacer una luz DIY Wi-Fi controlada por Siri En esta guía, aprenderás cómo crear un Wi-Fi Light. Luz controlable por Fi, y contrólala con Siri. Lea más, porque eso formará la base de todo lo demás. De hecho, si aún no tiene un sistema de iluminación Philips Hue, puede seguir adelante y realmente construir la luz de Wi-Fi descrita en ese tutorial.
Incluso si tiene un sistema Hue, siga adelante y siga el tutorial porque necesitará crear accesorios HomeKit falsos para todo lo demás (código proporcionado a continuación). Al continuar con esta guía, supondré que ya tienes el servidor HAP-NodeJS ejecutándose, y has agregado una luz falsa con éxito y probado el servidor, incluso si no está conectado a un poco de bricolaje. hardware.
Hacer una lista de reproducción
Continúa y crea una nueva lista de reproducción de Sonos llamada "Romántica". No es necesario que tenga exactamente el mismo nombre, pero tendrá que ajustar las secuencias de comandos de los accesorios más adelante si lo cambia. He agregado algunas pistas de Marvin Gaye y Sade a las mías. Suave .
Luego, en la Raspberry Pi que ejecuta HAB-NodeJS (si no sabes de lo que estoy hablando, no has leído el tutorial de la luz de Wi-Fi. Hazlo primero), navega hasta tu directorio de inicio y escribe lo siguiente para instalar la API HTTP para Sonos. Esto nos dará una URL web a la que podemos hacer ping para desencadenar ciertas acciones en Sonos.
git clone https://github.com/jishi/node-sonos-http-api.git sonos cd sonos npm install production npm install basic-auth sonos-discovery require-fu request-promise node-static async npm start
Si ve un mensaje acerca de tal y tal módulo no encontrado, simplemente haga otra instalación npm y el nombre del módulo, luego pruebe npm start again. Es posible que ya tuviera algunos módulos instalados globalmente de otros proyectos, y es posible que deba instalar más. Con suerte, verá algo como esto:
Felicitaciones, ahora tiene una API HTTP simple que puede usar para activar su Sonos. Lea la documentación de la lista completa de comandos, pero el formato que más nos interesa es:
http: // [IP del servidor]: 5005 / [ROOM NAME] / [ACTION]
o como un ejemplo específico:
http://192.168.1.99:5005/master%20bedroom/playlist/romantic
El caso no parece importar. El% 20 es una codificación URL de un carácter de espacio, pero también debe poder escribir un espacio real y su navegador lo convertirá automáticamente. El comando anterior simplemente activa la lista de reproducción romántica para el dispositivo del dormitorio principal. Use el comando de pausa para detenerlo:
http://192.168.1.99:5005/master%20bedroom/pause
Además, la API también nos da una función que será muy útil para otros proyectos: la capacidad de decir una declaración específica, como una notificación, y luego continuar jugando en la cola actual. Tratar:
http://192.168.1.99:5005/master%20bedroom/say/make%20use%20of%20is%20awesome/en-gb
La primera vez que haga esto, recibirá un mensaje sobre la necesidad de registrarse en una clave API en VoiceRSS.org (hasta 350 solicitudes por día son gratuitas). Cuando haya terminado con eso, escriba:
nano settings.json
y pegue su clave en el siguiente ejemplo:
{ "voicerss":"YOURAPIKEY" }
Reinicie el servidor y haga ping a la URL nuevamente. Después de unos segundos, debería escuchar una deliciosa voz en inglés. Puede cambiar el final de la URL a en-us si prefiere una voz estadounidense. ¡Ordenado! Totalmente irrelevante para este proyecto, ¡pero ordenado de todos modos!
Finalmente, hagamos que este servidor se reinicie cuando se reinicie el Pi:
sudo nano /etc/rc.local
Agregue una línea antes de la salida 0 :
sudo node /home/pi/sonos/server.js< /dev/null &
CTRL-X, Y para guardar. Puedes ver que estoy ejecutando esto junto con OpenHAB, un detector de presencia DIY Bluetooth y el servidor HAP-NodeJS HomeKit; también deberías tenerlo funcionando si sigues el prerrequisito tutorial de Wi-Fi light.
Hacer un dispositivo HomeKit para Sonos
El quid de este proyecto es que Siros no puede ser controlado por Siri, sin embargo, podemos agregar cierto grado de control creando un dispositivo HomeKit falso que active una lista de reproducción en particular cuando lo encienda - una luz falsa es la forma más fácil de hacerlo.
Primero vaya a su directorio HAP-NodeJS / e instale el módulo "solicitud".
sudo npm install request
Luego salte al directorio accesorios / y agarre mi accesorio prefabricado con el siguiente comando simple:
wget https://gist.githubusercontent.com/jamesabruce/72bd250fbcf054acaa25/raw/8272d4b9a4ef76db752cab2ddd9bdc47d09a65f1/Romantic_accessory.js
Realice algunos cambios si es necesario: esto está configurado para la ubicación predeterminada del "Dormitorio principal" de Sonos, por lo tanto, cambie la cadena maestra% 20bedroom hacia el inicio del código si desea que se dirija a una sala diferente. Como hemos fingido ser una luz, enviar el comando de brillo en realidad no hará nada, aunque en algún momento lo actualizaré para lidiar con el volumen. Este es el bloque de código que hace la magia:
setPowerOn: function(on) { console.log("Turning the light %s!", on ? "on" : "off"); FAKELIGHT.powerOn = on; console.log(on); if(on){ request('http://localhost:5005/master%20bedroom/playlist/romantic', function (error, response, body) { console.log("Sent play request"); }) } else{ request('http://localhost:5005/master%20bedroom/pause', function (error, response, body) { console.log("Sent pause request"); }) } },
Puedes ver que es sorprendentemente simple: cuando la luz recibe un comando setPowerOn de HomeKit, verifica si el valor es 1 (o verdadero), y en qué punto hace sonar la URL de la API HTTP de Sonos para reproducir esa lista de reproducción. Si es cualquier otra cosa (es decir, 0, falso), envía el comando de pausa. Reinicie su servidor HAP-NodeJS, luego diríjase a un dispositivo iOS y siga el mismo procedimiento que antes para agregar su luz falsa de "Lista de reproducción romántica" (necesitará el código de sincronización 031-45-154) .
Verifique que su nuevo dispositivo esté funcionando, luego continúe. Si está sintiendo hasta un poco de programación, intente mapear los cambios de brillo a volumen (¡y comparta su código en los comentarios, por favor!).
(Opcional) Luces de hadas y otros dispositivos de CA
Puede que te sorprenda saber que no hay luces de hadas HomeKit oficiales, ni tampoco he podido encontrar ninguna toma de corriente genérica HomeKit que me haya gustado el aspecto / precio de, así que combiné una de bricolaje usando una placa de desarrollo NodeMCU / ESP8266. el Arduino Killer: ESP8266 Conoce al asesino de Arduino: ESP8266 ¿Qué pasa si te digo que hay una placa de desarrollo compatible con Arduino con Wi-Fi incorporado por menos de $ 10? Bueno, lo hay. Lea más, un relevo y una toma de corriente de dos patillas estándar. No detallaré demasiado el hardware ya que no deberías poner cosas dentro de enchufes si no estás totalmente seguro con ese tipo de cosas, pero te proporcionaré mi código para el lado NodeMCU (conecta el disparador de relé para pinar D2 / GPIO4) y el accesorio para ir con él.
Al igual que la luz de Wi-Fi, esto comunica los comandos en un canal MQTT ("bedroomplug"), por lo que deberá modificar el código con su dirección de intermediario MQTT (consulte la parte 2 de nuestra guía de OpenHAB sobre cómo configurar un MQTT Broker OpenHAB Beginner's Guide Parte 2: ZWave, MQTT, reglas y gráficos OpenHAB Beginner's Guide Parte 2: ZWave, MQTT, reglas y gráficos OpenHAB, el software de automatización del hogar de código abierto, supera con creces las capacidades de otros sistemas de automatización del hogar en el mercado, pero no es fácil configurarlo. De hecho, puede ser francamente frustrante. Lea más), cambie los nombres de los canales si lo desea y, por supuesto, introduzca sus propios detalles de Wi-Fi.
Poniendolo todo junto
Finalmente, vamos a hacer algunas "escenas" usando la aplicación Elgato Eve, o su administrador de HomeKit preferido. En el lenguaje HomeKit, una escena puede consistir en cualquier cantidad de accesorios y comandos para esos accesorios.
Puede nombrar una escena como quiera, y Siri podrá hacerla coincidir incluso sin decir "escena establecida" . Así que hice dos escenas: una llamada "los niños están en la cama", y otra "vamos a ponernos serios ahora".
El primero apaga una de las luces Hue, convierte la otra en rosa, luego enciende el accesorio de la lista de reproducción romántica y las luces de hadas. Este último hace que las luces se vuelvan blancas de nuevo, y pausa el Sonos (es decir, apaga el accesorio de la lista de reproducción romántica). Simples!
Espero que hayan disfrutado de este tutorial y realmente puedan ver cómo podemos extender el control de Siri a cualquier cosa sin demasiados problemas, gracias al poder de HAP-NodeJS. ¿Hay algo por lo que te gustaría ver algunas acciones especiales de Siri? Háganos saber en los comentarios y cuéntenos cómo ha estado usando Siri para controlar su hogar.