El poder del IoT híbrido
Introducción
Ahora es el momento de unir los componentes del edge y de la nube, éste es el verdadero poder de las plataformas híbridas.
En este tutorial crearemos todos los elementos necesarios:
Una cuenta en el CloudLab.
Una ontología (modelo de datos) que se utilizará en la comunicación.
Un Cliente Digital, en este caso, la información será enviada a la nube utilizando el protocolo Kafka, por lo que habilitaremos el Kafka Topic durante la definición de la ontología.
Un cliente Edge-Kafka y contenedores Edge-Modbus que deben ser desplegados en tu entorno Edge Engine (aka con el contenedor Edge-Inner-MQTT).
¡Edge y Cloud juntos para casos de uso sorprendentes!
Como puedes ver en el diagrama anterior, los flujos de información field-to-edge (de campo a borde) y edge-to-cloud (de borde a nube), como de costumbre los protocolos involucrados en el primer flujo se denominan protocolos "southbound", los protocolos involucrados en el segundo flujo se denominan protocolos "northbound". Los protocolos Souhtbound (Modbus en este caso) están más relacionados con la automatización, el hogar inteligente (smart home), la robótica, la OT, etc. Por otro lado los Northbound (en este caso Kafka) provienen de los sistemas nativos de IoT o IA.
Ahora es fácil darse cuenta de cómo funciona el enfoque del IoT Híbrido:
El contenedor Edge-Modbus adquiere las señales (registros) del PLC (o cualquier otro dispositivo Modbus) y rellena un mensaje JSON.
Este mensaje JSON se publica en el broker MQTT interno. A partir de este momento, esta información está disponible para todos los contenedores de aplicaciones desplegados en el Edge Engine.
El Edge Kafka Client (suscrito a los temas de Modbus) recibe los mensajes JSON, los prepara en un paquete por lotes y cuando se llena, publica un mensaje Kafka al IoT Broker en la nube con un token de ID de cliente y una ontología determinados.
El IoT Broker analiza el mensaje, las concesiones (grants) para el token de ID de cliente, si el mensaje sigue la ontología de forma correcta y si es así, inserta la información en el Módulo de Datos en Tiempo Real.
¡Reunamos todos los elementos!
Acceso a CloudLab
El acceso principal es onesait Platform CloudLab: https://lab.onesaitplatform.com/controlpanel/
Primero, debes crear un usuario. Para ello, en la página de acceso, selecciona Nueva cuenta e introduce tu identificación, contraseña, nombre y dirección de correo electrónico para acceder a la plataforma. Si quieres acceder a la plataforma como desarrollador, debes seleccionar el rol de Desarrollador:
Una vez creada la cuenta, podrás acceder con tu usuario y contraseña:
Creación de una ontología
El primer paso es modelar los datos que quieres utilizar. Para ello, ve a la opción de menú DESARROLLO -> Mis Ontologías.
Esta opción muestra las ontologías disponibles. Usa la opción Crear, en la esquina superior derecha, para crear una nueva Ontología.
Una Ontología representa el modelo de datos de tus datos.
Completa la siguiente información para tu nueva Ontología:
Nombre: proporciona un nombre único para la ontología. Por ejemplo Temperatura_nuevo_usuario_1
Meta-Información: inserta palabras clave para clasificar las ontologías. Utiliza comas para introducir varias palabras clave.
Activo: indica si la ontología está activa o no. Las ontologías inactivas no pueden utilizarse.
Pública: indica si la ontología es pública o no. Todos los usuarios podrán consultar los datos almacenados en las ontologías públicas.
Descripción: proporciona una descripción que ayude a identificar el objetivo de la ontología.
Plantilla de la ontología: selecciona una de las plantillas disponibles para crear la ontología. La plantilla más básica es General -> EmptyBase. Una vez seleccionada la plantilla, añade todas las propiedades que necesites en la ontología utilizando el botón AÑADIR NUEVA PROPIEDAD.
Si vas a comunicarte con la Plataforma Onesait a través de Kafka, ve a Configuración Avanzada y habilita el Tema Kafka para la ontología.
Cuando termines de añadir propiedades, usa ACTUALIZAR ESQUEMA para añadir todas las nuevas propiedades a la ontología. Esto muestra el esquema interno de la Ontología. La plataforma valida todos los mensajes de este tipo con este esquema:
Por último, guarda la ontología usando el botón Nuevo al final de la página.
También puedes basar tus mensajes en ontologías existentes. Para la mensajería Edge, proponemos las ontologías públicas Edge y EdgeFeedWoT.
También es posible crear nuevas ontologías basadas en estas ontologías existentes:
Edge Ontology
{
"properties": {
"value": {
"type": "string"
},
"number": {
"type": "number"
},
"description": {
"type": "string"
},
"timeStamp": {
"type": "number"
},
"signal": {
"type": "string"
},
"deviceId": {
"type": "string"
},
"deviceType": {
"type": "string"
},
"signalId": {
"type": "string"
},
"timeStampInNanos": {
"type": "number"
},
"profile": {
"type": "string"
}
},
"type": "object",
"description": "Onesait Edge Data Ontology",
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Edge",
"additionalProperties": true
}
EdgeFeedWoT
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"feeds": {
"type": "array",
"items": {
"type": "object",
"properties": {
"businessid": {
"type": "string"
},
"property": {
"type": "string",
"enum": [
"activeenergy",
"activeenergy_ph1",
"activeenergy_ph2",
"activeenergy_ph3",
"activeenergydelta",
"activeenergydeltacost",
"activepower",
"activepower_ph1",
"activepower_ph2",
"activepower_ph3",
"ambienttemp",
"apparentenergy",
"apparentenergy_ph1",
"apparentenergy_ph2",
"apparentenergy_ph3",
"apparentpower",
"apparentpower_ph1",
"apparentpower_ph2",
"apparentpower_ph3",
"current",
"current_ph1",
"current_ph2",
"current_ph3",
"frequency",
"frequency_ph1",
"frequency_ph2",
"frequency_ph3",
"humidity",
"low_battery",
"mode",
"powerfactor",
"powerfactor_ph1",
"powerfactor_ph2",
"powerfactor_ph3",
"reactiveenergy",
"reactiveenergy_ph1",
"reactiveenergy_ph2",
"reactiveenergy_ph3",
"reactivepower",
"reactivepower_ph1",
"reactivepower_ph2",
"reactivepower_ph3",
"setpoint",
"setpoint_cool",
"setpoint_heat",
"status",
"system_mode",
"voltage",
"voltage_ph1_ph2",
"voltage_ph1_ph3",
"voltage_ph2_ph3",
"zigbeenetwork"
]
},
"timestamp": {
"type": "string"
},
"value": {
"type": "string"
},
"unit": {
"type": "string",
"enum": [
"Kwh",
"W",
"V",
"VA",
"Hz",
"VAr",
"A",
"C",
"kVAh",
"kVArh",
"m3",
"m3h",
"bar",
"boolean",
"percentage",
""
]
}
},
"required": [
"businessid",
"property",
"timestamp",
"value",
"unit"
]
}
}
},
"required": [
"feeds"
],
"description": "Info EdgeFeedWoT",
"title": "EdgeFeedWoT",
"additionalProperties": true
}
Creación de un cliente digital para la ontología
Después de definir la ontología, se pueden definir Clientes Digitales que trabajen con esa ontología. Un Cliente Digital es la representación de un dispositivo o sistema físico que está conectado a la plataforma.
Estos dispositivos generarán y/o consumirán datos. Para crear uno de ellos, ve a la opción de menú Clientes Digitales-> Mis Clientes Digitales.
Usa el botón Crear situado en la esquina superior derecha para definir un nuevo Cliente Digital.
Completa la siguiente información para el nuevo Cliente Digital:
Identificación: proporciona un nombre único para el Dispositivo. Por ejemplo, nodo1Gateway
Descripción: añade una descripción para el Dispositivo.
Ontologías: Puedes configurar el acceso a varias ontologías. En este caso, selecciona la ontología previamente creada Edge:
Ontología: identificación de la ontología.
Nivel de acceso: el tipo de acceso configurado.
Meta Información: Información adicional sobre el dispositivo. La información se añadirá como pares clave-valor.
nombre: nombre de la clave.
valor: valor de la propiedad.
Ahora puedes guardar tu Dispositivo con el botón Nuevo. En la lista de Dispositivos, puedes ver:
Si has seguido los pasos anteriores, y has configurado una Red Modbus y habilitado el cliente Kafka, ya deberías estar recibiendo la información en Onesait Platform. Ve a la Herramienta de Consulta y busca la información reciente de tu Ontología: