Desarrollo Back-end
Con nuestro producto m铆nimo viable listo podemos iniciar el proceso de desarrollo, en este caso tomaremos nuestros objetivos y utilizaremos cada objetivo para desarrollar la aplicaci贸n. Para recordar, nuestros objetivos son los siguientes:
- Codificar un script en Ignition para encender y apagar las luces.
- Escribir un c贸digo en Ignition para cambiar la intensidad de las luces.
- Desarrollar una interfaz de usuario para el control de las luces.
- Codificar un script en Ignition para cambiar el color de las luces.
- Desarrollar la aplicaci贸n con la facilidad de permitir al usuario controlar sus propias luces.
En el proceso de desarrollo tenemos el back-end y el front-end, el back-end se encarga del funcionamiento interno de la aplicaci贸n, o sea de la "magia" que sucede detr谩s de la interfaz visible al usuario, y el front-end es la interfaz de usuario o la interacci贸n con el usuario.

Informaci贸n de luces de usuario
El primer paso para controlar las luces de un usuario es obtener la informaci贸n de sus luces, y aunque en papel ya tenemos resuelto nuestro primer objetivo, no lo estamos integrando realmente a Ignition, y con esto no hablamos de la parte de interfaz, sino que los c贸digos pueden usar funciones de Ignition como las etiquetas, bases de datos, entre otros, es posible que los c贸digos no requieran una integraci贸n con otras funciones de Ignition, pero en este caso nuestro c贸digo actual por s铆 solo presenta varios problemas y tenemos herramientas de Ignition que lo pueden solucionar.
El primer problema que encontramos es que esta instrucci贸n da la informaci贸n de todas las luces en un solo diccionario, esta informaci贸n debemos procesarla, y tambi茅n hay mucha informaci贸n que no necesariamente utilizaremos.
Tambi茅n, la informaci贸n de IP y nombre de usuario ser铆a siempre la misma para un mismo usuario, por lo que estarla ingresando con cada instrucci贸n no tiene sentido.
Estos dos puntos pueden resolverse de forma similar utilizando etiquetas de Ignition, el primero se puede resolver procesando la informaci贸n e ingresando la informaci贸n de las luces a etiquetas en Ignition, y el 煤ltimo tambi茅n se puede resolver permitiendo al usuario ingresar la informaci贸n en etiquetas para guardarla, esto tambi茅n podemos hacerlo con bases de datos, Ignition tambi茅n nos da esa posibilidad de integraci贸n, pero en este ejemplo utilizaremos etiquetas.
El primer punto que atacaremos ser谩 el de ingresar la IP y nombre de usuario, para esto crearemos una nueva funci贸n, y al igual que cuando empezamos nuestro producto m铆nimo viable desarrollaremos primero en el Script Console.
Lo primero que debemos hacer es investigar si no sabemos lo que necesitamos para desarrollar, en este caso vamos a suponer que ya pasamos la investigaci贸n para este punto y descubrimos que necesitamos la instrucci贸n system.tag.configure(), esta instrucci贸n recibe de entradas la ruta de las etiquetas, el cuerpo de las etiquetas y el m茅todo de creaci贸n.
La ruta de las etiquetas adem谩s requiere de ingresar el nombre del proveedor de tags, y queremos que cualquier usuario pueda utilizar esta aplicaci贸n en sus distintos sistemas de Ignition, por lo que vamos a hacerlo din谩mico obteniendo con funciones de sistema el nombre del proveedor, por lo que nuestro c贸digo quedar铆a de la siguiente forma:

Con esta funci贸n el usuario puede ingresar la IP y el nombre de usuario y se guardar谩n en dos etiquetas separadas para utilizar en nuestras otras funciones o en nuestra aplicaci贸n.
Ahora centraremos la atenci贸n en el c贸digo de obtenci贸n de la informaci贸n, este c贸digo es similar al anterior en la parte de creaci贸n de las etiquetas, pero lo que debemos hacer es recorrer la informaci贸n que nos devuelve nuestro producto m铆nimo viable, la respuesta de este c贸digo como vimos anteriormente es en formato JSON por lo que podemos recorrerlo con un for para obtener las llaves de acceso, y estas llaves de acceso si analizamos la informaci贸n es el n煤mero de nuestras luces.
Cada luz dentro de la informaci贸n que devuelven vemos que tienen su nombre, su tipo, el nombre del producto, si son alcanzables (conexi贸n correcta), su brillo, su estado y si la luz lo permite, su color (hue). Las luces tienen muchos m谩s valores, pero nos centraremos en esos, ya que son los b谩sicos para lo que necesitamos.
Este c贸digo es m谩s grande, pero su base se mantiene de forma similar, aqu铆 en este c贸digo tambi茅n cambiamos la ip y el usuario para obtenerlos de las etiquetas que creamos en el c贸digo anterior, este c贸digo tambi茅n se desarroll贸 primero en el Script Console para probarlo y quitarle pulgas y luego se pas贸 a la biblioteca de scripts de Ignition.

Encendido y apagado de luces
Para iniciar este desarrollo iremos a nuestro recurso principal del API de Philips Hue para determinar la instrucci贸n que debemos utilizar, en este caso ser铆a lo siguiente:

Podemos ver que el m茅todo ya no es del tipo get, sino que ahora es del tipo put, nuestra url cambia y ahora tenemos que enviar un cuerpo en el mensaje.
Nuevamente, el manual nos da informaci贸n sobre el cuerpo del mensaje, en este caso el cuerpo es un diccionario y en los par谩metros del m茅todo put podemos ver que se pueden enviar datos, por lo que probaremos nuestro c贸digo inicialmente en el Script Console para verificar su funcionamiento.

Con este c贸digo funcionando podemos integrarlo al desarrollo que ya realizamos anteriormente vi茅ndose de la siguiente forma:

En este c贸digo adem谩s de obtener las etiquetas de los c贸digos anteriores, y adem谩s de obtener tambi茅n el nombre del proveedor de tags de forma din谩mica, tambi茅n agregamos la actualizaci贸n de la etiqueta de estado y la revisi贸n del c贸digo de estado, esto ya que si el env铆o falla as铆 no cambiamos el valor de la etiqueta de estado, esto se descubri贸 que era necesario mediante las pruebas realizadas en el Script Console, ya que se enviaron muchas consultas en un corto periodo de tiempo y varias fallaron dejando el estado de la etiqueta con el estado real de la luz desincronizados y por esto es de gran importancia probar los c贸digos realizados.
Cambiar brillo y color de las luces
El c贸digo para cambiar el brillo y el color de las luces es muy similar a lo ya realizado para el estatus por lo que los c贸digos son los siguientes:

Y con estas funciones programadas ya tenemos nuestro Back-end listo.