Tabla de contenido:

Proyecto de escuela de IoT Philips Hue: 19 pasos
Proyecto de escuela de IoT Philips Hue: 19 pasos

Video: Proyecto de escuela de IoT Philips Hue: 19 pasos

Video: Proyecto de escuela de IoT Philips Hue: 19 pasos
Video: Proyecto de Switch, Interruptor, Enchufe de Internet de Las Cosas (IOT) 2024, Mes de julio
Anonim
Proyecto de escuela de IoT Philips Hue
Proyecto de escuela de IoT Philips Hue

Este es un manual que tuve que escribir para la escuela. No está completo y no estoy seguro de que pueda usarlo. Mi conocimiento de las API es mínimo. Queríamos hacer un espejo interactivo con luces en la parte trasera que reaccionaran a la intemperie, luz del exterior, etc.

Miré cómo podría programar una lámpara Philips Hue con un Arduino. En esto, explico todos mis pasos y lo lejos que he llegado. No he logrado programar el Hue con el Arduino pero creo que es un buen comienzo.

Necesitaba esto: una lámpara Arduino a hue una cuenta de desarrollador puente Philips Hue

Fuentes: https://www.developers.meethue.com/documentation/g…https://github.com/bsalinas/ArduinoHuehttps://arduino-esp8266.readthedocs.io/en/latest/e…https:// www.makeuseof.com/tag/control-philips-hue-…

Paso 1: Empiece

Antes de poder acceder a la documentación de la API, deberá registrarse como desarrollador. Es gratis, pero debes aceptar los términos y condiciones. Puedes hacer uno aquí>

Paso 2: Aplicación Hue

Descargue la aplicación oficial Philips Hue. Conecte su teléfono a la red en la que desea que esté activado el puente Hue.

Paso 3: conecte el puente

Conecte su puente con su red y está funcionando correctamente. Pruebe que la aplicación del teléfono inteligente pueda controlar las luces en la misma red. Tiene que estar en la misma red Wi-Fi.

Paso 4: dirección IP

Entonces necesita descubrir la dirección IP del puente en su red. Presione el enlace para conectarse al puente en la aplicación e intente controlar las luces.

Paso 5:

Si todo funciona, vaya al menú de configuración en la aplicación. Luego, vaya a "Mi puente", vaya a "Configuración de red". Apague la palanca DHCP y verá la dirección IP del puente. Anote la dirección IP y vuelva a activar DHCP.

Paso 6: depura tu tono

Depura tu tono
Depura tu tono

Cuando escribiste eso, necesitas depurar tu Hue. Necesita la dirección IP para este paso. Tienes que visitar el siguiente sitio.

/debug/clip.html

La interfaz se verá así en la imagen. Esta es la base de todo el tráfico web y de la interfaz RESTful de hue.

Obtuve esta información sobre la interfaz Restful del sitio de Philips Hue.

URL: esta es en realidad la dirección local de un recurso (cosa) específico dentro del sistema de tonos. Puede ser luz, un grupo de luces o muchas cosas más. Este es el objeto con el que interactuará dentro de este comando.

Un cuerpo: esta es la parte del mensaje que describe qué desea cambiar y cómo. Aquí ingresa, en formato JSON, el nombre del recurso y el valor que desea cambiar / agregar.

Un método: aquí puede elegir entre los 4 métodos HTTP que puede utilizar la llamada hue.

OBTENER: este es el comando para obtener toda la información sobre el recurso direccionado

PUT: este es el comando para modificar un recurso direccionado

POST: este es el comando para crear un nuevo recurso dentro del recurso direccionado

ELIMINAR: este es el comando para eliminar el recurso direccionado. Respuesta: En esta área, verá la respuesta a su comando. También en formato JSON.

Paso 7: comencemos

Empecemos
Empecemos

Ahora necesitamos un nombre de usuario generado aleatoriamente que el puente crea para usted. Obtendrá uno al completar este.

Ingrese la URL:

/ api /

Poner en el CUERPO:

y presione GET

Este comando básicamente dice "por favor cree un nuevo recurso dentro de / api" (donde se encuentran los nombres de usuario) con las siguientes propiedades. Al principio, obtendrá un error, y eso se debe a que es el paso de seguridad de Philips Hue. Al presionar el botón, demuestran que tienes acceso físico al puente.

Paso 8:

Imagen
Imagen

Ahora presione el botón en el puente y haga clic en POST nuevamente.

Ahora obtendrá un nombre de usuario que el puente creó para usted.

Paso 9: Hagamos algo con las luces

Hagamos algo con las luces
Hagamos algo con las luces

Copie su nombre de usuario y colóquelo en la siguiente línea.

Pon esto en tu URL

/ api / / luces

Presione OBTENER

Debería obtener una respuesta JSON con todas las luces de su sistema y sus nombres.

Paso 10:

Imagen
Imagen

Tomé prestadas algunas luces Hue de la escuela, la que uso es la que tiene la identificación 3. Quiero información específica sobre esta luz.

Coloque esto junto a la URL que ya tenía:

/ api / / lights / 3

Presione OBTENER

Ahora obtienes toda la información sobre el Led 3 (si tienes otro número como 1 verás información sobre ese).

Paso 11: controlemos la luz

Controlemos la luz
Controlemos la luz

Ves en "estado" que mi led está "encendido". Queremos controlar la luz en "estado".

Coloque esto junto a la URL que ya tenía: https:// / api / / lights / 3 / state

Pon la siguiente línea en el CUERPO

Presione PUT

¡Ahora tu luz se apagará! Cambie el valor en el cuerpo a verdadero y la luz se encenderá nuevamente.

Paso 12:

Ahora todo está funcionando, quiero hacer esto con mi Arduino. Miré el enlace que dio Philips Hue para hacer que el color de la luz cambiara. Pero necesitas Python para esto, nunca trabajé con Python, así que busqué otra cosa.

Si desea ver este código, tengo el enlace de Github aquí:

github.com/bsalinas/ArduinoHue

Paso 13:

Miré cómo podía obtener información de este sitio para desarrolladores en mi arduino. La mayor parte del tiempo no entendía el idioma. Pero encontré un código en un sitio web de James Bruce.

Este es el enlace al sitio web.

www.makeuseof.com/tag/control-philips-hue-lights-arduino-and-motion-sensor/

Paso 14:

Primero vi que estaba usando un cable Ethernet. Solo tenía una bombilla Hue Light y Bridge un Arduino, y poca comprensión del código. Me tomó un tiempo entender su código, pero todavía no lo entiendo realmente.

Primero agregué esta biblioteca para Internet.

#incluir

Esto es para su red (tiene que ser igual que la bombilla Hue)

const char * ssid = ""; // ponga aquí su red WiFi SSIDconst char * password = ""; // ponga aquí su contraseña de red WiFi

Estos son el ID de su puente y el nombre de usuario que le dio su puente. (No sé qué significa el 80, pero cuando investigué un poco, vi que se usaba para redes).

// Constantes de tono const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Hue nombre de usuario const int hueHubPort = 80;

// Variables de tono bool hueOn; // encendido / apagado int hueBri; // valor de brillo long hueHue; // valor de tono String hueCmd; // comando de tono

búfer largo sin firmar = 0; // búfer para el almacenamiento de datos recibidos unsigned long addr;

Paso 15:

Para la configuración vacía, hice más por la conexión a Internet. En este código, Arduino está buscando si puede conectarse a la red.

configuración vacía () {Serial.begin (9600);

Serial.println ();

Serial.printf ("Conectando a% s", ssid);

WiFi.begin (ssid, contraseña);

while (WiFi.status ()! = WL_CONNECTED) {

retraso (500);

Serial.print ("."); }

Serial.println ("conectado"); }

Paso 16:

En el bucle de James, vi que tenía una declaración If y else. Pero eso era para el cable ethernet, así que traté de omitirlo. A veces también intenté ajustarlo, pero aún no lo sabía con muchos datos. Algunas cosas en el código que entendí, en la cadena son los datos que se le dan a la luz Hue.

bucle vacío () {

// Una serie de cuatro comandos de muestra, cuyo color difumina dos luces entre rojo y rosa. Lea la documentación de la API de Hue // para obtener más detalles sobre los comandos exactos que se utilizarán, pero tenga en cuenta que las comillas deben omitirse.

Comando de cadena = "{" en / ": verdadero, \" tono / ": 50100, \" sat / ": 255, \" bri / ": 255, \" tiempo de transición / ":" + Cadena (aleatorio (15, 25)) + "}"; setHue (1, comando);

comando = "{" en / ": verdadero, \" tono / ": 65280, \" sat / ": 255, \" bri / ": 255, \" tiempo de transición / ":" + Cadena (aleatorio (15, 25)) + "}"; setHue (2, comando);

comando = "{" tono / ": 65280, \" sat / ": 255, \" bri / ": 255, \" tiempo de transición / ":" + Cadena (aleatorio (15, 25)) + "}"; setHue (1, comando);

comando = "{" tono / ": 50100, \" sat / ": 255, \" bri / ": 255, \" tiempo de transición / ":" + Cadena (aleatorio (15, 25)) + "}"; setHue (2, comando);

}

Paso 17:

El siguiente código fue un booleano, pero en Arduino debes escribir Bool. Al principio, recibí muchos errores debido a la palabra cliente. Así que lo busqué y vi que algún código usaba la línea "Cliente WifiClient;". Así que lo usé y funcionó.

En la declaración if, a menudo ve client.print. Si observa el código, verá que la URL que ingresó anteriormente está dividida en partes. Ahora ingrese su propio código. Tuve que elegir mi tercera luz LED.

/ * setHue () es nuestra función de comando principal, a la que se le debe pasar un número ligero y una * cadena de comando con el formato adecuado en formato JSON (básicamente una matriz de estilo Javascript de variables * y valores. Luego realiza una simple solicitud HTTP PUT para el puente en la IP especificada al principio. * /

bool setHue (int lightNum, comando String) {

Cliente WiFiClient;

if (client.connect (hueHubIP, hueHubPort)) {

while (cliente.conectado ()) {

client.print ("PUT / api /"); client.print (hueUsername); client.print ("/ luces /"); client.print (lightNum); // hueLight basado en cero, agregue 1 cliente.println ("3 / estado"); // aquí cambié el nombre del tono y stateclient.print ("Host:"); client.println (hueHubIP); client.print ("Content-Length:"); client.println (command.length ()); client.println ("Tipo de contenido: texto / plano; juego de caracteres = UTF-8"); cliente.println (); // línea en blanco antes del cuerpo client.println (comando); // comando de tono

} client.stop (); devuelve verdadero; // comando ejecutado}

si no, devuelve falso; // Error de comando }

Paso 18:

En el segundo booleano, hice lo mismo cambiando algunas palabras. Lo subí para ver si funcionaba.

/ * Una función auxiliar en caso de que su lógica dependa del estado actual de la luz. * Esto establece una serie de variables globales que puede verificar para averiguar si una luz está encendida o no * y el tono, etc. No es necesario solo para enviar comandos * /

bool getHue (int lightNum) {

Cliente WiFiClient;

if (client.connect (hueHubIP, hueHubPort)) {

client.print ("GET / api /"); client.print (hueUsername); client.print ("/ luces /"); client.print (lightNum); client.println ("3 / estado"); client.print ("Host:"); client.println (hueHubIP); client.println ("Tipo de contenido: aplicación / json"); client.println ("mantener vivo"); cliente.println ();

while (client.connected ()) {if (client.available ()) {client.findUntil ("\" en / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "verdadero"); // si la luz está encendida, establezca la variable en true client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // establece la variable en el valor de brillo client.findUntil ("\" hue / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // establece la variable para romper el valor de tono; // todavía no captura otros atributos de luz}} client.stop (); devuelve verdadero; // capturado en, bri, hue} else return false; // error al leer en, bri, hue}

Paso 19:

Imagen
Imagen

Creo que podría hacer una conexión con Philips Hue. Recibo información pero aún es necesario utilizarla.

Desafortunadamente, esto va más allá de lo que puedo codificar. Si conoce la respuesta, o si hay errores reales que deben corregirse, me encantaría escucharla.:-)

Recomendado: