Anuncio

La gama de luces Philips Hue ciertamente no es barata (hay algunas alternativas Alternativas de Philips Hue que realmente valen la penaEl sistema Philips Hue lidera la carga cuando se trata de iluminación inteligente, pero hay algunas alternativas valiosas. Hemos elegido tres que ofrecen el mismo conjunto de características básicas y capacidad de piratería. Lee mas ), pero una cosa que realmente aprecio es el bien documentado API ¿Qué son las API y cómo las API abiertas están cambiando Internet?¿Alguna vez se ha preguntado cómo los programas en su computadora y los sitios web que visita "hablan" entre sí? Lee mas para hacer tus propias aplicaciones Hue. Hoy te mostraré cómo controlar tus luces Hue desde un Arduino, y luego agregaré un sensor de movimiento simple.

¿Por qué estamos haciendo esto? Porque los sistemas de automatización del hogar pueden ser bastante rígidos y costosos. Al aprender cómo controlar el Hue de Arduino, abre las puertas a una variedad de proyectos de automatización del hogar hechos a medida que simplemente no pueden ser superados por los componentes estándar. Si piratear cosas juntas no es lo tuyo, prueba estas

instagram viewer
8 fabulosas aplicaciones Hue Las 7 mejores aplicaciones de Philips Hue para Android y iPhone¿Estás buscando las mejores aplicaciones de Philips Hue para usar con tus luces inteligentes? Aquí hay varias aplicaciones geniales para iPhone y Android. Lee mas en lugar.

El sistema Hue

Vamos a ponernos técnicos por un momento para que conozcas los sistemas subyacentes con los que estás trabajando. Las luces hue crean un red de malla Redes de malla: el futuro de la comunicaciónLas redes de malla son casi invulnerables. En una red de malla, no hay puntos de estrangulamiento a través de los cuales pasa todo el tráfico. En cambio, la información se pasa de un dispositivo a otro hasta que llega a su destino. Lee mas , usando un protocolo inalámbrico de corto alcance llamado ZigBee, específicamente, son Enlace de luz ZigBee certificado, lo que significa que otros productos ZLL también deberían funcionar junto con el Hue (en teoría).

Aunque técnicamente es de corto alcance, la función de red de malla de ZigBee significa que cada bombilla nueva extiende la red y transmite mensajes a otras bombillas. Esto significa que si tiene problemas para controlar una luz al otro lado de la casa, intente colocar otra luz entre los dos.

Zigbee es un gran protocolo, pero es bastante diferente al Wi-Fi o una red informática con cable, por lo que necesitamos el puente Philips Hue para unirlos. El puente Hue ejecuta un firmware de Linux de código abierto modificado, que transmite un servidor web básico.

Esto es lo que verá si simplemente escribe la dirección IP de su puente Hue en su navegador. Sin embargo, no puedes hacer mucho desde aquí.
Esto es lo que verá si solo escribe la dirección IP de su puente Hue en su navegador. Sin embargo, no puedes hacer mucho desde aquí.

Es interactuando con este servidor web local que puede averiguar el estado actual de las luces y controlarlas.

Es un sistema maravillosamente simple y maduro para proyectos de bricolaje. Felicitaciones a Philips por hacer que esto sea tan pirateable.

Empezando

Antes de que pueda acceder a la documentación de la API, deberá registrarse como desarrollador. Es gratis, pero debe aceptar los términos y condiciones. Hacerlo ahora.

Cualquier persona familiarizada con los servicios web estándar o Javascript debería poder trabajar con Hue: todos los datos se pasan y se reciben como Paquetes JSON ¿Qué es el JSON? Descripción general de un laicoYa sea que planee ser un desarrollador web o no, es una buena idea al menos saber qué es JSON, por qué es importante y por qué se usa en toda la web. Lee mas .

Para echar un vistazo a esto en acción, necesitará saber la dirección IP de su puente Hue. Hay algunas formas de hacer esto:

  • Mire la tabla de asignación de direcciones DHCP en la interfaz de administración de su enrutador
  • Ejecute un programa de mapeo de red como IP Scanner Home
  • Prueba el Herramienta de agente UPnP de Philips
  • Haga ping en "philips-hue.home"
mapeo de red para encontrar puente

Cuando haya terminado, continúe y escríbalo en la barra de direcciones de su navegador con debug / clip.html anexado a la URL. En mi caso, esto fue:

http://192.168.1.216/debug/clip.html

Esta es una herramienta de depuración que le permite enviar y recibir los paquetes JSON a través de una interfaz web simple. El primer paso es habilitar el perfil de desarrollador en el propio Hue Bridge, que está deshabilitado de forma predeterminada por razones de seguridad. Pegue lo siguiente en el campo CUERPO, deje la URL como /api/y envíe una solicitud POST haciendo clic en el botón de publicación:

{"devicetype": "usuario de prueba", "nombre de usuario": "nuevo desarrollador"}

La primera vez que haga esto, verá un "botón de enlace no presionado" en alguna parte de la respuesta. Esta es una característica de seguridad que requiere que cada nueva aplicación que use esté autorizada físicamente. Ve y encuentra tu puente, presiona el botón y vuelve a enviar la misma solicitud dentro de 30 segundos. Esta vez obtendrá una respuesta diferente y el usuario estará autorizado. Si desea utilizar un nombre de usuario diferente, lea los documentos de la API sobre creando usuarios. Por ahora, esto será suficiente.

Una vez que su usuario está configurado, la URL base con la que debe interactuar se convierte en /api/newdeveloper/. Puede enviar una solicitud GET para averiguar todo lo que su Bridge sabe actualmente sobre luces conectadas, alarmas, escenas y un breve registro de las aplicaciones que se han utilizado. Aquí hay una muestra de parte de la información de estado contenida para una sola bombilla.


"state": {"on": true, "bri": 254, "hue": 14910, "sat": 144, "effect": "none", "xy": [0.4596, 0.4105], "ct": 369, "alert": "none", "colormode": "ct", "alcanzable": false}, "type": "Extended color light", "name": "Bedroom 1", "modelid": "LCT001", 

Tenga en cuenta que el "On": verdadero el estado no muestra si la bombilla está encendida o no; solo que de acuerdo con la configuración del puente, debería estar en. "Alcanzable": falso puede indicar tanto una bombilla que está demasiado lejos o simplemente apagada en el interruptor de encendido.

Un último ejemplo antes de integrar esto en el Arduino: asegúrese de que una de sus luces esté visible y encendida, y que sepa qué número es. Cambiar la URL a /api/newdevelopers/lights/1/state (cambiando el número a su luz) y envíe una solicitud PUT con los siguientes datos:

{"hue": 50100, "sat": 255, "bri": 255}

Deberías ver que tu luz reacciona así:

demostración de hue

Lo que has hecho es empujar un nuevo estado a la bombilla. También puede agregar "tiempo de transición", que es un método de animación primitivo que indica cuántos segundos desea que tome el cambio de estado.

El color se puede configurar en una serie de formas diferentes, pero desafortunadamente no hay una manera simple de enviar un valor RGB. En el ejemplo anterior, enviamos matiz, se sentóuration, y brightness Intente cambiar el valor de tono y envíe la solicitud PUT nuevamente.

Trabajando desde Arduino

Hay una biblioteca Hue / Arduino existente llamada ArduinoHue a los que Philips se vincula en la documentación de la API, pero el problema con esta biblioteca es que se comunica a través de la conexión USB a su PC, que también debe estar ejecutando una aplicación Python constantemente. Eugh. También puede dejar que su computadora ejecute todo en ese punto y cortar el Arduino por completo.

En cambio, te mostraré cómo controlar el Hue desde el Arduino usando un escudo Ethernet. Su Arduino no necesita estar conectado a una computadora, por lo que puede funcionar de forma independiente en cualquier lugar donde pueda colocar un cable Ethernet. De hecho, también debería funcionar con un escudo de Wi-Fi, pero no tengo uno con el que jugar.

ehternet-sheild-box

Si desea saltar, el código de muestra completo está incrustado a continuación, o disponible aquí. Lo he adaptado de un ejemplo publicado por Gilson Oguime. Si nunca antes jugaste con tu escudo de Ethernet, es posible que desees echar un vistazo rápido a tutorial de cliente web - Asumiré cierto nivel de familiaridad con esto y no cubriré el código utilizado para establecer una IP de red, etc. También te hemos mostrado Cómo crear un mini servidor web con el escudo de Ethernet Dele a su proyecto Arduino su propio mini servidor web, con un escudo EthernetHace un tiempo, le mostré cómo configurar un sistema de control de Internet para su Arduino, pero tenía que permanecer conectado a una computadora a través de USB para mantener la conexión a Internet ... Lee mas .

Crear cambios de estado

Crear un nuevo estado para impulsar las bombillas es un caso simple de crear un nuevo Cuerda variable, y escapando a todas las comillas dobles. He añadido un aleatorio() funcionar allí también para crear una animación algo dinámica. Intente hacer que la variable de tono sea aleatoria también para diferentes colores.

String command = "{\" on ": true, \" hue \ ": 50100, \" sat \ ": 255, \" bri \ ": 255, \" transitiontime \ ":" + String (random (15, 25)) + "}";

Enviando el comando

Para enviar realmente el comando, tiene una función auxiliar llamada setHue () que toma el número de luz y la cadena de comando como argumento, así:

setHue (1, comando);

Todo lo que hace es conectarse al puente, escupe el comando como una solicitud PUT, junto con todas las otras tonterías que implica la creación de una solicitud HTTP.


client.print ("PUT / api /"); client.print (hueUsername); client.print ("/ lights /"); client.print (lightNum); client.println ("/ estado HTTP / 1.1"); client.println ("mantener vivo"); client.print ("Host:"); client.println (hueHubIP); client.print ("Content-Length:"); client.println (command.length ()); client.println ("Tipo de contenido: text / plain; juego de caracteres = UTF-8 "); client.println (); // línea en blanco antes del cuerpo. client.println (comando); // Comando hue. 

Agregar un sensor de movimiento

Finalmente, conecté un simple Sensor de movimiento HC-SR501 al pin de E / S digital 2. Cuando se detecta movimiento, se empujan una serie de estados hacia el puente para obtener 2 bombillas para crear una animación lenta y dinámica. Cuando el sensor de movimiento se desactiva, se envía un solo comando de apagado a ambos. Idealmente, volverían al estado en el que se encontraban antes de detectar el movimiento, pero la lógica no es tan inteligente: solo los vamos a encender y apagar.

Limitaciones

Aunque es cierto que el código no está optimizado, la interfaz de red del Arduino tarda casi un segundo en enviar una única solicitud de comando. Probé el mismo comando desde una Mac, usando la misma conexión Ethernet, y era capaz de diez a veinte veces esa velocidad (aquí está el AppleScript en caso de que quieras probar). En consecuencia, cualquier tipo de animación rápida (estaba intentando crear un efecto de vela parpadeante) simplemente no es posible desde un Arduino. Esto no debería ser un problema para la mayoría de los proyectos, solo para animaciones ligeras de alta velocidad, pero es bueno tener en cuenta la limitación.

También es difícil analizar completamente cualquier respuesta JSON que reciba del puente; simplemente no hay suficiente RAM en el Arduino para almacenar todos los datos en bruto. Por esta razón, es posible que desee limitarse principalmente al envío.

Hack the Hue

Ahora que está armado con el conocimiento de cómo controlar Hue de forma completamente independiente, abre un mundo de hacks de automatización del hogar Hue. La verdadera pregunta es: que harás

James tiene una licenciatura en Inteligencia Artificial y está certificado por CompTIA A + y Network +. Es el desarrollador principal de MakeUseOf, y pasa su tiempo libre jugando VR paintball y juegos de mesa. Ha estado construyendo computadoras desde que era un niño.