iPlace SDK
iPlace cuenta con un SDK que permite la integración de cualquier dispositivo IP.
Para realizar una integración sencilla va a ser necesario seguir los pasos que se detallan a continuación. El tipo de integración descrita va permitir, por una parte, recibir los cambios relativos a las entradas del dispositivo, y por otra, actuar sobre las salidas del mismo.
Crear un fichero descriptor del dispositivo a integrar.
Para comenzar será necesario crear un fichero descriptor del dispositivo hardware a integrar. Este fichero, con extensión .conf, deberá presentar una estructura similar a la mostrada en la siguiente tabla.
Por otra parte, las propiedades controller.digitaloutputX van a identificar los registros que van a funcionar como salidas digitales. El número asociado a esa etiqueta será el identificador con el que después se va a trabajar en el dispositivo en cuestión para hacer referencia a ese registro. Es decir, toda acción enviada al dispositivo va a ser realizada con este identificador. El número de elementos va a depender de la cantidad de salidas digitales que posea el dispositivo físico. Lo mismo sucede con la propiedad controller.analogicoutputX, pero en el caso de las salidas analógicas.
En cuanto a las entradas identificadas por las propiedades controller.digitalinputX y controller.analogicinputX, estos identificadores estarán asociados a las entradas del dispositivo IP. Por lo tanto serán utilizados para referenciar las actualizaciones recibidas. De esta manera, toda actualización procedente del dispositivo ha de venir acompañada de éste identificador para que el sistema sepa que tipo de entrada es y a que registro pertenece ese cambio de valor.
Crear un proyecto nuevo.
Para comenzar a desarrollar la implementación que va a permitir integrar el dispositivo IP es necesario crear un nuevo proyecto JAVA. Para ello se pueden utilizar IDEs como Netbeans o Eclipse. Una vez creado el proyecto, es necesario incorporar las librerías QuarkSDK.jar y log4j-1.X.XX.jar, lo que va a permitir disponer de los métodos necesarios para desarrollar nuestro propio Device. Para ello será necesario crear una clase que extienda de CustomDevice. En la siguiente imagen se puede ver una clase ejemplo (ExampleDevice).
- initialize(): una vez el dispositivo IP establece conexión con la plataforma, se inicia el intercambio de información. Es en este momento cuando se ejecuta el método initialize(). Éste método puede ser útil para el envío de información de interés para el dispositivo. Por ejemplo se pueden enviar el conjunto de inputs de los cuales se desea recibir información, de esta manera se puede optimizar el intercambio de datos, obviando el resto de elementos del dispositivo.
- processReceivedData(String data): cada vez que el dispositivo IP envía datos, este método es el encargado de recibir esa información y procesarla según convenga. Por ejemplo, en caso de tratarse del cambio de una entrada dada, este método será el responsable de analizar los datos recibidos en busca del registro actualizado y del nuevo valor recibido.
- processDataToSend(String id, String value): cuando se envía una acción al dispositivo, este método es el encargado de construir la petición. Como parámetros recibe el identificador del registro y el nuevo valor. Por lo tanto, este método va a ser el responsable de confeccionar el paquete que será enviado al dispositivo.
- destroy(): antes de que el sistema se detenga, iPlace realiza una parada controlada de la monitorización de cada dispositivo. Por lo tanto éste método puede ser utilizado para llevar a cabo ciertas tareas como cerrar conexiones auxiliares o liberar otro tipo de estructuras.
Métodos del SDK.
Métodos | Descripción |
List getDigitalOutputs() | lista las entradas digitales del dispositivo |
List getDigitalInputs() | lista las entradas digitales del dispositivo |
List getAnalogicOutputs() | lista las salidas analógicas del dispositivo |
List getAnalogicInputs() | lista las entradas analógicas del dispositivo |
String getPreviousValue(String element) | devuelve el valor actual del elemento |
boolean isNewValue(String element,String value) | devuelve si el valor es diferente al anterior |
boolean containsInput(String element): | devuelve si el elemento está cargado como entrada |
boolean containsOutput(String element): | devuelve si el elemento está cargado como salida |
boolean updateInputValue(String element, String value) | Envía la actualización del elemento a iPlace |
boolean sendAction(String element, String value) | Envía la acción cambio al dispositivo |
Añadir el dispositivo desarrollado a iPlace
Una vez desarrollada y probada la implementación de nuestro Device, para poder disponer de dicho dispositivo en la plataforma iPlace será necesario seguir los pasos detallados a continuación:
- Disponer de una licencia para desarrollador. La demo habilitada para la integración de nuevos dispositivos cuenta con una licencia de desarrollador. Dicha licencia ofrece la posibilidad de trabajar con 5 dispositivos. Los números de serie de prueba coinciden con iplacesn1, iplacesn2, iplacesn3, iplacesn4 y iplacesn5. Por lo tanto para probar nuestro dispositivo, usaremos alguno de esos cinco números de serie ficticios. En caso de necesitar un número de serie en concreto es necesario solicitar una licencia personalizada.
- Añadir la implementación: Una vez compilado el proyecto desarrollado, el .jar resultante debe ser incluido en las carpetas donde iPlace tiene sus ejecutables. Concretamente, el .jar debe ser ubicado en la ruta iplace/core/extension.
- Añadir los datos al sistema. Para que iPlace conozca los datos relativos al nuevo dispositivo será necesario añadir un nuevo controlador encargado de monitorizar al Device implementado. Para llevar a cabo esta tarea se utiliza la interfaz de configuración de iPlace, concretamente será necesario acceder a la pestaña Controladores Domóticos. Pulsando en Añadir se mostrará el siguiente formulario para crear un controlador.