Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Introducción

Un Gemelo Digital o Digital Twin puede definirse como un modelo virtual de activos físicos o procesos industriales que aprende continuamente, proporciona datos y responde a los cambios realizados en su entorno. El concepto de Digital Twin se utilizó originalmente en entornos CAD y de simulación, pero ahora se utiliza comúnmente en las tecnologías IoT. Según Gartner, la tecnología Digital Twin será una de las 10 principales tecnologías estratégicas y disruptivas en 2018.

Como se ha dicho antes, un Digital Twin es la representación virtual de un sistema o dispositivo físico. Esta representación está definida por tres elementos:

  • Estado: valor de cada una de sus propiedades, que representa en tiempo real lo que el dispositivo está "haciendo"; por ejemplo, un motor girando a 1800 rpm a una temperatura óptima de trabajo.

  • Acciones: acciones u órdenes externas que se pueden aplicar al dispositivo o a las que éste puede responder; por ejemplo, un motor se puede apagar.

  • Eventos: notificaciones que puede enviar un dispositivo por determinados eventos; por ejemplo, un motor puede enviar un evento de apagado si su temperatura de trabajo supera un valor umbral.

Para crear una representación estándar de Digital Twin, utilizamos la "Web Thing API" de Mozilla (https://iot.mozilla.org/wotapi). Este estándar está considerado como uno de los líderes del mercado debido a su facilidad para adoptar estándares tecnológicos: estructuras de datos JSON fáciles y legibles, independencia del protocolo de intercambio de datos y proporciona una implementación para dos de los estándares de interfaces más extendidos, : REST y WebSockets.

Estas representaciones virtuales (Digital Twins) modeladas dentro de la plataforma permiten:

  • Gestionar dispositivos físicos, obteniendo en tiempo real su estado.

  • Realizar operaciones enviando comandos o acciones.

  • Enriquecer su comportamiento mediante la ingesta continua de datos y el procesamiento de eventos.

  • Crear sistemas complejos a través de la orquestación de diferentes Digital Twins.

  • Facilitar la depuración y simulación. La plataforma realiza las mismas acciones que un Digital Twin o que un sistema real: son mutables.

Ejemplo: Sense Hat como Digital Twin

Widget Connector
overlayyoutube
_templatecom/atlassian/confluence/extra/widgetconnector/templates/youtube.vm
width600px
urlhttps://www.youtube.com/watch?v=nTsUzhATlxc
height300px

...

  • Definir el tipo de Gemelo Digital: tras el análisis del sistema a definir, el desarrollador ha identificado una o varias entidades relevantes en el sistema, sus propiedades, los eventos que generan en su entorno y las acciones externas a las que responderán. Con todo esto, es posible definir un tipo de Gemelo Digital por entidad.

  • Definir instancias (Digital Twins) específicas para cada tipo. Un Digital Twin supone asume una clasificación de un determinado tipo de entidad. El sistema real serán instancias en ejecución de estos tipos, cada una con su propio estado en función del entorno donde se despliegue.

  • Monitorizar y controlar los Digital Twins.

...

 1)    Ve al Panel de Control de la Onesait Platform (https://lab.onesaitplatform.com/controlpanel/) y entra como desarrollador. Primero, crea el tipo de Digital Twin definiendo sus propiedades, acciones y eventos de acuerdo con las definiciones proporcionadas por la “Web Thing Description” (https://iot.mozilla.org/wotapi/#web-thing-description).

2)    Para crear el tipo de Digital Twin, ve al siguiente menú: Clientes & Digital Twin - > Definiciones de Digital Twin.

...

Una vez allí, podrás empezar a crear tu tipo de Digital Twin pulsando el botón Crear.

...

Para acelerar la ejecución de la prueba, el tipo de Digital Twin ya ha sido creado con el nombre de "Sensehat" por lo que, a partir de este momento, cada paso proporcionará información sobre cómo se creó el Digital Twin "Sensehat".

...

  • Eventos: notificaciones y acciones que el Digital Twin envía a la plataforma. Hay diferentes tipos de eventos:

    • Register (registro): Registro del Digital Twin en la plataforma. Es necesaria una clave de autenticación.

    • Ping: Realiza pings activos periódicos para comprobar el estado del Digital Twin (activo o no activo).

    • Update_Shadow (actualizar sombra): actualiza los valores de las propiedades (estado) del Digital Twin en la plataforma. Es importante saber que la plataforma almacena los valores históricos de las propiedades para poder realizar algunas acciones de analítica.

    • Notebook, Rule (regla), Flow (flujo), Pipeline: el Digital Twin envía una notificación a la plataforma para ejecutar un notebook, una regla, un flujo o un pipeline.

    • Log: el Digital Twin puede enviar logs a las plataformas. Estos registros pueden ser almacenados para ser visualizados.

    • Other (Otros): eventos personalizados.

...

  • Lógica: la plataforma permite definir qué tipo de lógica ejecutará el Digital Twin. Para este ejemplo, la lógica está programada en JavascriptJavaScript. Por defecto, al crear un Digital Twin, se añaden las siguientes funciones:

    • Init: se ejecuta sólo al registrar el Digital Twin en la plataforma.

    • Main: ejecuta periódicamente el Digital Twin.

    • onActionXXX: se creará un método para cada acción definida en la sección Acciones, donde podremos puedes definir la lógica que queremos quieres ejecutar cuando el Digital Twin reciba una acción de la plataforma.

Nota: Aunque este demostrador usa JavascriptJavaScript, la lógica del Digital Twin no está limitada exclusivamente a este lenguaje. Cualquier dispositivo o sistema que soporte los estándares REST o Websocket WebSocket puede utilizar los servicios del broker de Digital Twin.

Después analizamos en detalle la lógica que hemos programado en Javascript JavaScript para el tipo de DigitalTwin "Sensehat".

...

  • Funciones onActionXXX: estas funciones se ejecutan cada vez que el Digital Twin recibe una acción de la plataforma. Por ejemplo, cuando enviamos envías al Digital Twin la acción de empujar el joystick hacia la derecha, se ejecutaría la función onActionJoystickRight, que enviaría la orden de pintar una flecha hacia la derecha en su matriz de LEDs.

    JSON: una vez definidos todos los elementos anteriores del Digital Twin, podemos generar la representación del Digital Twin siguiendo el estándar “Web Thing API” para la “Web Thing Description”. En este caso, podemos ver el siguiente esquema JSON:

...

3)    Para crear una instancia del Digital Twin, ve al siguiente menú: Digital Twin - > Mis Digital Twins.

 

Ten en cuenta que, como antes, la instancia de Digital Twin ya ha sido creada, por lo que no es necesario crearla. Puedes simplemente ver las propiedades de la instancia de Digital Twin haciendo clic en el botón de opción (en la columna de opciones).

...

  • Tipo de Digital Twin corresponde al Tipo de Digital Twin que se ha creado previamente y, por tanto, define la "Web Thing Description". Además, al seleccionar el tipo de Digital Twin, asignamos también la lógica definida para este tipo.

  • Esquema URL, interfaz, puerto, ContextPath e IPV6.: Proporcionan al Digital Twin la información necesaria para inferir su URL y que ésta sea enviada a la plataforma en el mensaje de Registro. De este modo, la plataforma puede notificar las acciones. 

...

Una vez hemos definido nuestro Digital Twin, la plataforma me permite generar el código correspondiente. En la versión actual de la plataforma, el código se genera en Java.

4)    Para ver el código generado del Digital Twin, ve otra vez a Digital Twin - > Mis Digital Twins y selecciona la instancia ya creada de Digital Twin "SenseHatHelsinki".

...

Ten en cuenta que este proyecto, junto con el correspondiente JAR de Java, estará disponible en el Platform Market Place, junto con el Digital Twin Demonstrator.

Monitorizar y controlar el Digital Twin

1)    Una vez desplegado el Digital Twin "SenseHatHelsinki", podrás monitorizar su estado ejecutando una consulta desde la siguiente opción del menú Digital Twin -> Estado Digital Twins.

...

Aquí podrás configurar la consulta mediante:

  • Type (Tipo): Tipo de Digital Twin. En este caso, selecciona "Sensehat".

  • Device (Dispositivo): Instancia de Digital Twin que implementa el tipo de Digital Twin seleccionado. En este caso, selecciona "SensehatHelsinki".

  • Operation (Operación): Tipo de operación que queremos quieres consultar. Es posible filtrar por las siguientes operaciones:

    • Shadow (Sombra): Estado histórico de los valores de las propiedades definidas para el Digital Twin.

    • Register (Registro): Histórico de eventos enviados desde el Digital Twin y registrados en la plataforma.

    • Ping: Histórico de pings.

    • Log: Histórico de trazas de log enviadas desde el Digital Twin.

    • Notebook, Pipeline, Rule (Regla), Flow (Flujo), Other (Otro): Eventos históricos enviados por el Digital Twin a la plataforma. Si se elige eliges la opción Other, se puede puedes filtrar por el nombre del evento personalizado.

    • Action name (Nombre de la acción): disponible para consultar las acciones realizadas.

  • Number of results per device (Número de resultados por dispositivo).

...

7)    Vuelve a seleccionar la operación Acción. A continuación, selecciona el número deseado de resultados para esta consulta; por ejemplo, “3”. Después, haz clic en “Ejecutar consulta” y comprueba el resultado:Go back and select the operation Action. Then select the desired number of results for this query; e.g. “3”. Then click on “Execute Query” and see the result:

[

    {

        "action": "joystickUp",

        "_id": {

            "$oid": "5b07df4ae732b200013e7cc1"

        },

        "type": "Sensehat",

        "deviceId": "555c9564-048c-424b-ae92-19b3ce73e6b8",

        "timestamp": {

            "$date": "2018-05-25T10:02:50.043Z"

        }

    }

]

...