Web Thing API como lenguaje para definir Digital Twins
Web Thing API es la propuesta de Mozilla para describir un modelo común de datos y un API para la “Web of Things”.
Se compone de (1) la Web Thing Description que provee un vocabulario para describir dispositivos físicos conectados a Internet en un formato codificado en JSON, y de (2) Web Thing REST API y Web Thing WebSocket API que permiten que un cliente web pueda acceder a las propiedades de un dispositivo, ejecutar acciones sobre este y suscribirse a eventos que representan un cambio en su estado.
La especificación incluye:
- Web Thing Types como tipos adicionales que pueden ser definidos usando extensiones semánticas sobre JSON-LD.
- Un Web Thing API Protocol Bindings para escribir bindings a la Web Thing API para otros protocolos IoT .
- El documento Web of Things Integration Patterns que describe patrones para integrar dispositivos con la Web Thing API.
A continuación podemos ver el «Thing Description» de un dispositivo con diferentes sensores y eventos:
Podemos ver que el dispositivo (Digital Twin) tiene una propiedad temperatura, otra humidity y otra led, así como una acción (que alguien puede ejecutar sobre el dispositivo) y un evento (que se publica cuando se desencadena) reboot, así como links para acceder a las propiedades, acciones ,eventos,…
Siguiendo la especificación podemos ver como:
Ejecutando esta petición:
Obtengo la descripción del dispositivo concreto.
Si hago:
Me devolverá el valor de la propiedad.
Si quiero cambiar el valor de una propiedad ejecutaré:
Si quiero lanzar una acción reboot:
También puedo obtener una lista de peticiones de acciones:
Para acceder a los eventos:
Una de las ventajas de esta especificación es su sencillez y que es fácil de implementar tanto en dispositivos potentes como en dispositivos con recursos limitados.
El último draft es del 25 de mayo de 2022. Podéis consultar el estado desde la web de IoT de Mozilla.