En esta sección describiremos de manera general qué elementos suelen ser los más comunes dentro de una plataforma de desarrollo. Hay que considerar que cada framework tendrá algunas abstracciones, otras no, y su propia nomenclatura.
Modelo de Datos y abstracción del sistema
Gracias a este elemento, podemos tener una forma homogénea de interactuar con los distintos dispositivos y sistemas. Por ejemplo, si pensamos en un sensor de temperatura, habrá que leer de su patilla correspondiente un valor y luego interpretarlo y codificarlo. Todas esas operaciones quedan abstraídas gracias al modelo de datos que representa ese dispositivo como:
{
“sensor1” = “/sensortemp1
{
“tempActual”=”25”
“magnitud”=”centígrados”
}
}
Estas abstracciones posibilitan sustituir los elementos de bajo nivel de manera transparente a los elementos de capas superiores. Durante ese proceso de abstracción, hay ciertos elementos de información que quizá no sean contemplados, como en este caso concreto, el tiempo de refresco de la medición o los valores máximos y mínimos que el sensor puede medir.
Hay una serie de lenguajes que suelen ser usados para escribir estos modelos. Entre los más populares encontramos: JSON (Javascript Object Notation), XML (eXtensible Markup Language) y YAML (Yet Another Markup Language). Este último está adquiriendo mucha popularidad debido a la claridad de lectura por los humanos y minimización de errores de sintaxis. Prueba de ello es que está siendo adoptado por numerosas tecnologías (Ubuntu, Ansible, SnapperML, etc.).
Nodo IoT y Operaciones
Es frecuente encontrar la abstracción Nodo dentro del modelo de datos. Estos nodos encapsulan distintos sistemas que pueden estar compuestos por múltiples dispositivos.
La forma en la que estos nodos interactúan entre sí es reflejada mediante la abstracción de operación. Estas operaciones entre nodos engloban el cómo se descubren entre ellos, intercambio de mensajes, registro de eventos, etc.
Estas operaciones también pueden incluir elementos de conectividad más específicos, así como cuestiones relacionadas con la seguridad. Respecto a esta última, es normal que los framework proporcionen roles, credenciales y políticas de acceso para los nodos abstractos (e incluso físicos). También suelen proveer de mecanismos para implementar la seguridad en las comunicaciones con los nodos y entre éstos.
Elementos de gestión y seguridad
El framework puede llegar a dar soporte para la gestión de dispositivos, hasta el punto de poder aplicar actualizaciones en el software de los dispositivos. No obstante, los fabricantes de dispositivos suelen dificultar esta tarea con el fin de que el software y el control del dispositivo sea lo más privativo posible.
Dentro de la gestión también podemos incluir aspectos de seguridad como la gestión del almacenamiento que puede contener datos sensibles.
También es probable encontrar mecanismos que permitan validar el estado del dispositivo y confirmar que el estado lógico (a nivel de software) se corresponde con el estado físico (lo que está haciendo/midiendo el hardware).