Aplicación Personalizada para Dispositivos IoT

Un interruptor de encendido que muestra un mango grueso y una posición de encendido y apagado. Esto se utiliza para adornar nuestro artículo sobre una aplicación personalizada para controlar dispositivos IoT.
Recientemente se nos pidió que desarrolláramos un prototipo de aplicación personalizada para dispositivos IoT. (IoT es 'Internet de las cosas'). La aplicación personalizada necesitaba controlar un conjunto de lámparas en el hogar. En este artículo explico cómo logramos esto y cómo se podría usar la misma técnica para controlar cualquier dispositivo IoT.

Recientemente nos involucramos en un proyecto muy interesante. Nos pidieron que creáramos un prototipo de aplicación personalizada que pudiera usarse para controlar un conjunto de lámparas. Para lograr esto, necesitábamos encontrar un interruptor que formara parte del ‘internet de las cosas’ (IoT), con el que pudiéramos comunicarnos desde una aplicación personalizada desarrollada en la plataforma Claris/FileMaker. El interruptor se usaría para interrumpir, o permitir, el flujo de electricidad a cada lámpara, controlando así las lámparas.

Hicimos algunas investigaciones sobre dispositivos IoT adecuados y, finalmente, seleccionamos el interruptor BasicR3 fabricado por Sonoff. Tiene las características que necesitábamos, a saber:

  • Una conexión de red Wi-Fi.
  • Una API RESTful basada en HTTP. (Para una explicación de esta frase, por favor visite las páginas de Wikipedia para ‘RESTful‘ y ‘API‘.)

Configuración de los Interruptores

Necesitábamos controlar tres lámparas desde la aplicación personalizada prototipo, así que configuramos un espacio con una ampolleta conectada a cada uno de los tres interruptores BasicR3.

La configuración de prueba consiste en tres lámparas unidas a tres interruptores unidos a tres fuentes de alimentación (no en la foto).
La configuración de prueba consiste en tres lámparas unidas a tres interruptores unidos a tres fuentes de alimentación (no en la foto).

Los tres interruptores estaban conectados a la red Wi-Fi. Utilizamos un escáner de red para identificar los interruptores en la red y obtener sus direcciones IP. Si hubiéramos estado instalando las lámparas de forma permanente, habríamos utilizado el panel de administración de nuestro router de red para asignar una dirección IP reservada a cada interruptor. Sin embargo, para nuestros propósitos de prueba, esto no era necesario; simplemente anotamos las direcciones IP actuales.

Comunicación con los Interruptores

Al desarrollar una aplicación personalizada para controlar dispositivos IoT, la tarea principal es codificar la conexión entre la aplicación personalizada y el dispositivo. Antes de trabajar en una interfaz en una aplicación personalizada, siempre probamos la conexión con una herramienta creada para el trabajo. En nuestro caso, probamos cada interruptor, y si podíamos comunicarnos con él, utilizando una herramienta de software que nos permitió crear varias solicitudes HTTP y enviarlas a través de API a los interruptores. La aplicación específica que usamos se llama Paw (inglés), pero otra aplicación popular que hace el mismo trabajo es Postman (inglés).

Usando Paw, primero probamos si podíamos obtener información de cada uno de los tres interruptores. Para ayudarnos a compilar las solicitudes HTTP correctamente, utilizamos la página que Sonoff ha dedicado a explicar su API RESTful (inglés).

Este video muestra cómo nos fue:

Después de obtener con éxito la información de cada interruptor, usamos Paw para enviar una solicitud para apagar cada interruptor y luego encender cada interruptor nuevamente. Esto también tuvo éxito.

Ahora que sabíamos que podíamos controlar los interruptores usando Paw, conocíamos la estructura de las solicitudes HTTP que podían implementar ese control. Nuestra siguiente tarea fue transferir esas solicitudes a nuestra app personalizada basada en Claris/FileMaker.

Nuestra Aplicación Personalizada basada en Claris/FileMaker

El paso de guión que se puede utilizar para enviar solicitudes HTTP es ‘Insertar desde URL’.

Una captura de pantalla del paso de guión Insertar desde URL en Claris/FileMaker.
Una captura de pantalla del paso de guión Insertar desde URL en Claris/FileMaker.

El ‘Destino’ para nuestros propósitos era una variable que puede capturar el código de resultado devuelto por la solicitud HTTP. En el guión que contenía este paso de guión ‘Insertar desde URL’, evaluamos el código devuelto y la bifurcación en consecuencia, mostrando un mensaje de error si es necesario.

Desde Paw, sabíamos que en ‘Especificar URL’ necesitábamos ingresar ‘http://[Dirección IP 1]:8081/zeroconf/info’ como URL para el interruptor 1, donde ‘[IP Address 1]’ se reemplaza con algo así como ‘10.0.1.15’, que representaba la ubicación real del interruptor 1 en la red.

Para nuestros propósitos, ‘Verificar certificados SSL’ no era necesario.

Para ‘Especificar opciones de cURL’, necesitábamos hacer un poco de procesamiento para convertir la solicitud HTTP que enviamos en Paw a una solicitud que funcionaría en Claris/FileMaker. En esto nos ayudó enormemente un gran trabajo realizado por un Claris Partner con sede en EE.UU. llamado Proof+Geist. Desarrollaron una extensión para Paw (inglés) que hace la mayor parte del trabajo de conversión por usted.

La extensión FileMaker resaltada en la ventana Paw.
La extensión FileMaker resaltada en la ventana Paw.

Para que el guión sea más fácil de seguir, editar y corregir errores, utilizamos variables para almacenar varios elementos del paso ‘Insertar desde URL’. Los pasos resultantes en el script se veían así:

				
					Establecer Variable: $url = 
"http://[IP Address]:8081/zeroconf/info"

Establecer Variable: $json =
JSONSetElement ( "{}" ; 
    [ "data" ; "" ; JSONString ] ; 
    [ "deviceid" ; "" ; JSONString ] 
)

Establecer Variable: $curl =
"curl -X POST --trace-ascii $trace --dump-header $header \
    -H \"Content-Type: application/json; charset=utf-8\" \
    -d " & $json & " \ 
"

Insertar desde URL [ Seleccionar ; Con diálogo:Inactivo; Destino: $result; $url; Opciones de cURL: $curl ]
				
			

Como puede ver, estas variables se correspondían con el contenido de la extensión FileMaker en la aplicación Paw. Para obtener más información sobre cURL, consulte el sitio web de cURL (inglés) y la página de ayuda de Claris FileMaker 19 sobre las opciones de cURL admitidas.

Probando nuestra Aplicación Personalizada

Ahora estábamos listos para probar la aplicación personalizada. Creamos una interfaz de usuario (UI) simple. Este video muestra el resultado de nuestra prueba:

La Conclusión

Puede utilizar una aplicación personalizada desarrollada en la plataforma Claris/FileMaker para controlar cualquier dispositivo IoT. Siempre que un dispositivo utilice un método abierto de comunicación, como una API RESTful, en lugar de un sistema propietario cerrado, entonces la conexión a ese dispositivo es razonablemente sencilla. Porque de la amplia gama de dispositivos IoT que están disponibles, el alcance de lo que se puede hacer con una aplicación personalizada como este prototipo es enorme.

Índice
Autor, Categoría y Etiquetas
Artículos Recientes
Compartir Artículo
Un interruptor de encendido que muestra un mango grueso y una posición de encendido y apagado. Esto se utiliza para adornar nuestro artículo sobre una aplicación personalizada para controlar dispositivos IoT.

Workplace Innovation Software

Our English website is:
Nuestro sitio web inglés es: