La API SensorThings [ 1 ] es un estándar del Open Geospatial Consortium (OGC) que proporciona un marco abierto y unificado para interconectar dispositivos de detección, datos y aplicaciones de IoT a través de la Web. Es un estándar abierto que aborda la interoperabilidad sintáctica y semántica del Internet de las Cosas. Complementa los protocolos de red de IoT existentes, como CoAP , MQTT , HTTP y 6LowPAN . Mientras que los protocolos de red de IoT mencionados anteriormente abordan la capacidad de diferentes sistemas de IoT para intercambiar información, la API SensorThings de OGC aborda la capacidad de diferentes sistemas de IoT para usar y comprender la información intercambiada. Como estándar de OGC, la API SensorThings también permite una fácil integración en infraestructuras de datos espaciales o sistemas de información geográfica existentes .
La API SensorThings de OGC tiene dos partes: (1) Parte I - Detección y (2) Parte II - Tareas. La Parte I de la API SensorThings de OGC - Detección se publicó para comentarios públicos el 18 de junio de 2015. [ 2 ] El Comité Técnico (CT) de OGC aprobó el inicio de la votación electrónica el 3 de diciembre de 2015, y la Parte I de la API SensorThings - Detección pasó la votación del CT el 1 de febrero de 2016. La especificación estándar oficial de OGC se publicó en línea el 26 de julio de 2016. En 2019, la API SensorThings también se publicó como una Especificación Técnica de la UIT-T de las Naciones Unidas. [ 3 ]
La API SensorThings Parte II - Núcleo de Tareas de OGC se publicó para comentarios públicos el 20 de febrero de 2018, [ 4 ] y fue aprobada por el Comité Técnico el 1 de junio de 2018. La especificación estándar oficial de OGC para la API SensorThings Parte II - Núcleo de Tareas se publicó en línea el 8 de enero de 2019.
Para ofrecer una mejor experiencia a los desarrolladores, el documento de debate sobre la API de SensorThings, Parte II: Núcleo de Tareas, se publicó en línea el 18 de diciembre de 2018. Este documento proporciona 15 ejemplos en formato JSON que muestran cómo se puede utilizar la API de SensorThings, Parte II: Núcleo de Tareas.
Diseño
La API de SensorThings está diseñada específicamente para dispositivos IoT con recursos limitados y para la comunidad de desarrolladores web. Sigue los principios REST , la codificación JSON y el protocolo OData de OASIS , así como las convenciones de URL. Además, cuenta con una extensión MQTT que permite a los usuarios y dispositivos publicar y suscribirse a actualizaciones, y puede utilizar CoAP además de HTTP.

La API de SensorThings se basa en su modelo de datos, fundamentado en la norma ISO 19156 ( Observaciones y mediciones ISO/OGC ), que define un modelo conceptual para las observaciones y las características involucradas en el muestreo. En el contexto de SensorThings, estas características se modelan como Objetos , Sensores ( es decir , Procedimientos de Operación y Mantenimiento) y Características de Interés . Como resultado, la API de SensorThings proporciona una vista interoperable centrada en la observación, especialmente útil para conciliar las diferencias entre sistemas de detección heterogéneos (por ejemplo, sensores in situ y sensores remotos).
Un dispositivo o sistema IoT se modela como un Thing . Un Thing tiene un número arbitrario de Locations (incluyendo 0 Locations ) y un número arbitrario de Datastreams (incluyendo 0 Datastreams ). Cada Datastream observa una ObservedProperty con un Sensor y tiene muchas Observations recopiladas por el Sensor . Cada Observation observa una FeatureOfInterest en particular . El modelo basado en O&M permite que los SensorThings se adapten a dispositivos IoT heterogéneos y a los datos recopilados por los dispositivos. [ 5 ]
La API de SensorThings proporciona dos funcionalidades principales, cada una gestionada por una parte. Los dos perfiles son la parte de detección y la parte de asignación de tareas. La parte de detección proporciona una forma estándar de gestionar y recuperar observaciones y metadatos de sistemas de sensores IoT heterogéneos, y sus funciones son similares al Servicio de Observación de Sensores de OGC . La parte de asignación de tareas proporciona una forma estándar de parametrizar (también llamada asignar tareas) dispositivos IoT configurables, como sensores o actuadores. Sus funciones son similares al Servicio de Planificación de Sensores de OGC . La parte de detección está diseñada en base al modelo de Observaciones y Mediciones (O&M) ISO/OGC, y permite a los dispositivos y aplicaciones IoT CREAR, LEER, ACTUALIZAR y ELIMINAR ( es decir , HTTP POST, GET, PATCH y DELETE) datos y metadatos IoT en un servicio de SensorThings.
Entidades (recursos)
La API de SensorThings Parte I - Detección define los siguientes recursos. Como SensorThings es un servicio web RESTful, cada entidad puede ser CREAR, LEER, ACTUALIZAR y ELIMINAR con verbos HTTP estándar ( POST , GET , PATCH y DELETE): [ 6 ] [ 7 ]
Thing: Un objeto del mundo físico (cosas físicas) o del mundo de la información (cosas virtuales) que es capaz de ser identificado e integrado en redes de comunicación. [ 8 ]Locations: Localiza la cosa o las cosas con las que está asociada.HistoricalLocations: El conjunto proporciona las ubicaciones actuales (es decir, las últimas conocidas) y anteriores del Objeto con su hora.Datastream: Una colección de Observaciones y las Observaciones en un flujo de datos miden la misma Propiedad observada y son producidas por el mismo Sensor .ObservedProperty: Especifica el fenómeno de una Observación .Sensor: Un instrumento que observa una propiedad o fenómeno con el objetivo de producir una estimación del valor de la propiedad.Observation: Acto de medir o determinar de otro modo el valor de una propiedad. [ 9 ]FeatureOfInterest: Una observación da como resultado que se asigne un valor a un fenómeno. El fenómeno es una propiedad de una característica, siendo esta última la Característica de Interés de la Observación . [ 9 ]
Además de los recursos de detección mencionados anteriormente, la API SensorThings Parte II - Tasking Core define los siguientes recursos: [ 10 ]
TaskingCapabilities: Especifica los parámetros configurables de un actuador.Tasks: Una colección de tareas que se ha creado.Actuator: Un tipo de transductor que convierte una señal en alguna acción o fenómeno del mundo real. [ 11 ]
Ejemplo de carga útil
http://example.org/v1.0/Datastream(id)/Observations
{"@iot.count" : 2 ,"valor" : [{"@iot.id" : 1 ,"@iot.selfLink" : "http://example.org/v1.0/Observations(1)" ,"phenomenonTime" : "2016-01-01T05:00:00.000Z" ,"resultado" : "-9" ,"resultTime" : null ,"Datastream@iot.navigationLink" : "http://example.org/v1.0/Observations(1)/Datastream" ,"FeatureOfInterest@iot.navigationLink" : "http://example.org/v1.0/Observations(1)/FeatureOfInterest"},{"@iot.id" : 2 ,"@iot.selfLink" : "http://example.org/v1.0/Observations(2)" ,"phenomenonTime" : "2016-01-01T04:00:00.000Z" ,"resultado" : "-10" ,"resultTime" : null ,"Datastream@iot.navigationLink" : "http://example.org/v1.0/Observations(2)/Datastream" ,"FeatureOfInterest@iot.navigationLink" : "http://example.org/v1.0/Observations(2)/FeatureOfInterest"}]}extensiones de matrices de datos
Para reducir el tamaño de los datos transmitidos a través de la red, la extensión de matriz de datos de la API de SensorThings permite a los usuarios solicitar múltiples entidades de Observación y formatearlas en formato dataArray. Cuando un servicio de SensorThings devuelve una respuesta dataArray, agrupa las entidades de Observación por Datastream o MultiDatastream, lo que significa que las entidades de Observación vinculadas al mismo Datastream o al mismo MultiDatastream se agregan en un único dataArray.
Ejemplo de solicitud de matriz de datos
http://example.org/v1.0/Observations?$resultFormat=dataArray
Ejemplo de respuesta de matriz de datos
{"valor" : [{"Datastream@iot.navigationLink" : "http://example.org/v1.0/Datastreams(1)" ,"componentes" : ["identificación" ,"fenómeno del tiempo" ,"tiempo de resultado" ,"resultado"],"dataArray@iot.count" : 3 ,"dataArray" : [[1 ,"2005-08-05T12:21:13Z" ,"2005-08-05T12:21:13Z" ,20],[2 ,"2005-08-05T12:22:08Z" ,"2005-08-05T12:21:13Z" ,30],[3 ,"2005-08-05T12:22:54Z" ,"2005-08-05T12:21:13Z" ,0]]}]}Evaluación
Interoperabilidad entre OpenIoT y SensorThings : « Creemos que la implementación de la API de SensorThing supondrá una mejora importante para el middleware de OpenIoT. Proporcionará a OpenIoT una interfaz estandarizada y realmente fácil de usar para los valores de los sensores. Esto complementará los servicios de razonamiento semántico avanzado con una interfaz sencilla basada en recursos. Además, la asignación consistente del modelo de datos ofrece un contexto común para describir el internet de las cosas ». [ 12 ]
Eficiencia de la API de SensorThings Una evaluación exhaustiva de la API de SensorThings se publica en Jazayeri, Mohammad Ali, Steve HL Liang y Chih-Yuan Huang. "Implementación y evaluación de cuatro estándares abiertos interoperables para el Internet de las cosas." Sensors 15.9 (2015): 24343-24373 .
Citas
La API de SensorThings se demostró en un proyecto piloto [ 13 ] patrocinado por la Dirección de Ciencia y Tecnología del Departamento de Seguridad Nacional . El Dr. Reginald Brothers, subsecretario de Ciencia y Tecnología de Seguridad Nacional, se mostró impresionado por el estado actual de la aplicación práctica, donde estos diversos sensores industriales pueden integrarse hoy en día mediante estándares abiertos que eliminan las limitaciones de las tecnologías aisladas. [ 14 ]
Especificación estándar de la API de SensorThings de OGC
- API de OGC® SensorThings Parte 1: Detección [ 6 ]
- Número de referencia interna de este documento OGC®: 15-078r6
- Fecha de envío: 18/06/2015
- Fecha de publicación: 26/07/2016
- Editor: Steve Liang ( Universidad de Calgary / SensorUp )
- Coeditores: Chih-Yuan Huang ( Universidad Nacional Central ) / Tania Khalafbeigi ( Universidad de Calgary / SensorUp )
- API de OGC® SensorThings Parte 2: Núcleo de tareas [ 10 ]
- Número de referencia interna de este documento OGC®: 17-079r1
- Fecha de envío: 13/10/2017
- Fecha de publicación: 8 de enero de 2019
- Editor: Steve Liang ( Universidad de Calgary / SensorUp )
- Coeditora: Tania Khalafbeigi ( Universidad de Calgary / SensorUp )
- Documentación de la API para desarrolladores
- Parte I - Percepción
- Parte II - Asignación de tareas
- Entorno de pruebas de la API de SensorThings archivado el 16 de septiembre de 2016 en Wayback Machine .
- Conjunto de pruebas de conformidad de SensorThings
Implementaciones de la API de SensorThings gratuitas y de código abierto.
Bigotes
En marzo de 2016, SensorUp y el GeoSensorWeb Lab de la Universidad de Calgary presentaron una propuesta de proyecto de software de código abierto a la Fundación Eclipse , la cual fue aprobada. El proyecto se llama Whiskers . [ 15 ] Whiskers es un marco de trabajo de la API SensorThings de OGC. Contará con un cliente JavaScript y un servidor ligero para dispositivos de puerta de enlace IoT (por ejemplo, Raspberry Pi o BeagleBone). Whiskers busca fomentar un ecosistema IoT abierto y saludable, en contraposición a uno dominado por silos de información propietarios. Whiskers pretende simplificar el desarrollo de SensorThings para la amplia y creciente comunidad de desarrolladores de IoT.
GOST
GOST [ 16 ] es una implementación de código abierto de la API de SensorThings en el lenguaje de programación Go, iniciada por Geodan. Contiene un software de servidor de fácil implementación y un cliente JavaScript. Actualmente (junio de 2016) se encuentra en desarrollo, pero ya se puede descargar e implementar una primera versión. El software se puede instalar en cualquier dispositivo compatible con Docker o Go (por ejemplo, Windows, Linux, Mac OS y Raspberry Pi). Por defecto, los datos de los sensores se almacenan en una base de datos PostgreSQL .
HELADA
FROST-Server [ 17 ] es una implementación de servidor de código abierto de la API OGC SensorThings. FROST-Server implementa la especificación completa, incluyendo todas las extensiones. Está escrito en Java y puede ejecutarse en Tomcat o Wildfly, y está disponible como imagen Docker. Entre sus numerosas características, destaca la capacidad de utilizar identificadores de entidad basados en cadenas de texto o UUID.
FROST-Client [ 18 ] es una biblioteca cliente de Java para comunicarse con un servidor compatible con la API de SensorThings.
SDK de gráficos HcDT de SensorThings
SensorThings HcDT [ 19 ] es una biblioteca de gráficos JavaScript para la API SensorThings de OGC. Se basa en la biblioteca de código abierto Highcharts y DataTables . Es una biblioteca de gráficos de interfaz que permite a los desarrolladores conectarse a flujos de datos desde cualquier servicio de la API SensorThings de OGC y mostrar las observaciones de los sensores en gráficos, tablas o widgets de panel para aplicaciones web.
Mozilla STA
Mozilla desarrolló una implementación de nodo de la API SensorThings de OGC. [ 20 ]
52°Norte STA
52N SensorThingsAPI [ 21 ] es una implementación de código abierto de la API SensorThings de OGC. Sus características principales son la interoperabilidad con el sistema 52N SOS , que implementa el Servicio de Observación de Sensores de OGC , asignaciones de bases de datos personalizables y varias extensiones de conveniencia. Se puede implementar como un contenedor Docker, dentro de un servidor Apache Tomcat o como una aplicación independiente.
Ejemplos de aplicaciones
Experimento Operacional Shaken Fury del Departamento de Seguridad Nacional de Ciencia y Tecnología
En 2019, el experimento operativo Shaken Fury [ 22 ] del programa DHS Next Generation First Responder describe un escenario de un terremoto que provoca el colapso parcial de la estructura y una fuga de materiales peligrosos en un estadio. La API OGC SensorThings se utiliza como interfaz estándar [ 23 ] que interconecta múltiples sensores y ofrece conocimiento de la situación en tiempo real habilitado por IoT.
Ciudadanos inteligentes para ciudades inteligentes YYC: detección de la calidad del aire mediante colaboración ciudadana
El 8 de octubre de 2016, [ 24 ] un grupo de voluntarios (ciudadanos inteligentes) en Calgary se reunieron, ensamblaron sus propios sensores, los instalaron en sus casas y formaron una red de sensores de calidad del aire colaborativa. Todos los datos están disponibles públicamente a través de la API SensorThings de OGC. [ 25 ] Este esfuerzo ciudadano de detección aumentó el número de sensores de calidad del aire de Calgary de 3 a más de 50.
Proyecto de emisiones inteligentes en Nijmegen, Países Bajos
Smart Emission [ 26 ] es un proyecto de monitoreo de la calidad del aire en la ciudad de Nijmegen, Países Bajos. El proyecto desplegó múltiples sensores de calidad del aire en toda la ciudad. Los datos se publican con estándares abiertos, incluida la API OGC SensorThings. Parte del proyecto es un motor ETL de código abierto para cargar los datos de los sensores del proyecto en una API OGC SensorThings. [ 27 ]
Panel de control de SensorThings
Este panel de control ofrece una visualización sencilla del lado del cliente de los datos de sensores del Internet de las Cosas (IoT) procedentes de servidores compatibles con la API SensorThings de OGC. Se pueden organizar y configurar diversos tipos de widgets en el panel. Es una aplicación web que se puede integrar en cualquier sitio web. Hay una demostración en vivo disponible en la página del proyecto : https://github.com/SensorThings-Dashboard/SensorThings-Dashboard
Panel de control GOST v2
GOST Dashboard v2 es una biblioteca de código abierto de elementos HTML personalizados (componentes web) compatibles con la API de SensorThings. Estos elementos facilitan el desarrollo de aplicaciones HTML que integran funcionalidades y datos de servicios compatibles con la API de SensorThings. Los componentes se desarrollan con Predix-UI y Polymer .
Conector OGC del proyecto AFarCloud
El conector permite la interoperabilidad entre fuentes de datos compatibles con OGC y el middleware semántico [ 28 ] desarrollado en el proyecto AFarCloud de Horizonte 2020 ECSEL . Se trata de una aplicación Java modular con despliegue basado en Docker, implementada según el estándar de implementación 15-078r6 de la API SensorThings 1.0 de OGC.
Comparación entre la API de OGC SensorThings y los servicios de observación de sensores de OGC.
La API de SensorThings proporciona funciones similares al Servicio de Observación de Sensores de OGC , una especificación de OGC aprobada en 2005. Ambas especificaciones estándar forman parte del conjunto de estándares de Habilitación Web de Sensores de OGC . La siguiente tabla resume las diferencias técnicas entre ambas especificaciones. [ 29 ]
Enlaces externos
- API de SensorThings - GitHub
- Presentación : Mejora la conectividad de tus aplicaciones con la API SensorThings de OGC (FOSS4G)
- Capítulo: Mapeo de la API SensorThings de OGC sobre el middleware OpenIoT
- Tutoriales en YouTube: Serie de introducción n.° 1 , Serie de tutoriales de SensorThings n.° 2 (archivada el 5 de mayo de 2016 en Wayback Machine) y Serie de tutoriales de SensorThings n.° 3 ( archivada el 20 de agosto de 2016 en Wayback Machine) .
- Aplicación : SensorThings Playground, archivada el 3 de febrero de 2016 en Wayback Machine, permite a las personas y organizaciones interesadas experimentar con un sistema SensorThings mediante un proceso sencillo y paso a paso.
Referencias
- ↑ "API de SensorThings de OGC" . Open Geospatial Consortium . Consultado el 20 de febrero de 2018 .
- ↑ "OGC solicita comentarios públicos sobre el estándar de la API SensorThings para el Internet de las Cosas | OGC" . www.opengeospatial.org . Consultado el 26 de enero de 2016 .
- ↑ "Especificación técnica D3.2 - API de SensorThings - Detección" . www.itu.int . Consultado el 17 de julio de 2019 .
- ↑ "OGC solicita comentarios públicos sobre el estándar candidato 'SensorThings API Parte 2 – Tasking Core' para su uso en el Internet de las Cosas | OGC" . www.opengeospatial.org . Consultado el 21 de febrero de 2018 .
- ↑ "Referencia de la API" . www.sensorup.com . Archivado del original el 3 de febrero de 2016. Consultado el 26 de enero de 2016 .
- 1 2 Liang, Steve; Huang, Chih-Yuan; Khalafbeigi, Tania, eds. (2016-07-26). OGC® SensorThings API Parte 1: Detección .
- ↑ "Modelo de datos de SensorThings" . ogc-iot.github.io . Consultado el 26 de enero de 2016 .
- ↑ tsbmail. "Y.2060 : Panorama general del Internet de las cosas" . www.itu.int . Consultado el 26 de enero de 2016 .
- 1 2 "ISO 19156:2011 - Información geográfica - Observaciones y mediciones" . www.iso.org . Consultado el 26 de enero de 2016 .
- 1 2 Liang, Steve; Khalafbeigi, Tania, eds. (2019-01-08). OGC® SensorThings API Parte 2: Tasking Core .
- ↑ "Sensor Model Language (SensorML) | OGC" . www.opengeospatial.org . Consultado el 21 de febrero de 2018 .
- ↑ Schaaf, Hylke van der; Herzog, Reinhard (1 de enero de 2015). Žarko, Ivana Podnar; Pripužić, Krešimir; Serrano, Martín (eds.). "Asignación de la API OGC SensorThings al middleware OpenIoT" . Apuntes de conferencias sobre informática. Publicaciones internacionales Springer. págs. 62– 70. doi : 10.1007/978-3-319-16546-2_6 . ISBN 9783319165455.
- ↑ "OGC anuncia la finalización exitosa del proyecto piloto de IoT para el intercambio de información sobre la gestión de incidentes" .
- ↑ "El proyecto piloto de Internet de las Cosas de S&T demuestra el 'estado actual de la práctica'"" . 2016-01-25 . Consultado el 2016-02-14 .
- ↑ "Whisker, una propuesta de proyecto de Eclipse" . 11 de marzo de 2016. Consultado el 24 de marzo de 2016 .
- ↑ "Geodan/gost" . GitHub . Consultado el 30 de junio de 2016 .
- ↑ "FraunhoferIOSB/FROST-Server" . GitHub . Consultado el 4 de julio de 2018 .
- ↑ "FraunhoferIOSB/FROST-Client" . GitHub . Consultado el 4 de julio de 2018 .
- ↑ "SensorThings Highchart y DataTable (HcDT) | SensorUp" . www.sensorup.com . Archivado del original el 20 de agosto de 2016. Consultado el 31 de agosto de 2016 .
- ↑ "mozilla-sensorweb/sensorthings" . GitHub . Consultado el 5 de marzo de 2017 .
- ↑ 52North/sensorweb-server-sta , 52°North Initiative for Geospatial Open Source Software GmbH, 17/11/2020 , consultado el 24/11/2020
- ↑ "Comunicado de prensa: Ciencia y tecnología, industria y personal de respuesta se asocian para evaluar tecnología" . Departamento de Seguridad Nacional . 10 de junio de 2019. Consultado el 17 de julio de 2019 .
- ↑ "Manual de integración de NGFR" . Departamento de Seguridad Nacional . 6 de febrero de 2018. Consultado el 17 de julio de 2019 .
- ↑ "El programa piloto de sensores de Calgary te ayuda a planificar una carrera con la mejor calidad del aire | Metro News" . metronews.ca . Archivado del original el 4 de noviembre de 2016. Consultado el 4 de noviembre de 2016 .
- ↑ "Calidad del aire en Calgary" . calgary-air.sensorup.com . Consultado el 4 de noviembre de 2016 .
- ↑ colaboradores, Just van den Broecke - Geonovum original: Mark Otto, Jacob Thornton y Bootstrap. "Smart Emission" . data.smartemission.nl . Recuperado el 4 de noviembre de 2016 .
{{cite web}}:|last=tiene nombre genérico ( ayuda ) CS1 maint: nombres múltiples: lista de autores ( enlace ) - ↑ "Geonovum/smartemission" . GitHub . Consultado el 4 de noviembre de 2016 .
- ↑ Kepka, Michal; Černý, Lukáš; Brada, Premek (noviembre de 2020). «Un sistema abierto para el monitoreo de fenómenos ambientales: Resumen del póster». Actas de la 18.ª Conferencia sobre Sistemas de Sensores en Red Integrados . ACM. págs. 659–660 . doi : 10.1145/3384419.3430443 . ISBN 9781450375900. S2CID 227154703 .
- ↑ "Comparación de la API de SensorThings y el Servicio de Observación de Sensores" . Archivado del original el 6 de marzo de 2016. Consultado el 29 de febrero de 2016 .
- sistemas de información geográfica
- Internet de las cosas
- Consorcio Geoespacial Abierto
- Estándares abiertos
- Servicios web