SensorThings API [1] es un estándar del Consorcio Geoespacial Abierto (OGC) que proporciona un marco abierto y unificado para interconectar dispositivos de detección de IoT , datos y aplicaciones a través de la Web. Es un estándar abierto que aborda la interoperabilidad sintáctica y la interoperabilidad semántica de Internet de las cosas. Complementa los protocolos de red de IoT existentes como CoAP , MQTT , HTTP , 6LowPAN. Si bien los protocolos de red de IoT mencionados anteriormente abordan la capacidad de diferentes sistemas de IoT para intercambiar información, la API de OGC SensorThings está abordando la capacidad de diferentes sistemas de IoT para usar y comprender la información intercambiada. Como estándar OGC, SensorThings API también permite una fácil integración en Infraestructuras de Datos Espaciales o Sistemas de Información Geográfica existentes .
Estado | Especificación de implementación estándar de OGC |
---|---|
Año iniciado | 2015 |
Ultima versión | 1.0 |
Editores | Steve Liang ( SensorUp ), Chih-Yuan Huang ( Universidad Nacional Central ), Tania Khalafbeigi ( SensorUp ) |
Estándares básicos | JSON , OGC / ISO 19156: 2011 O&M |
Dominio | Consorcio Geoespacial Abierto , Internet de las cosas |
Abreviatura | OGC STA |
Sitio web | Página de GitHub estándar de la API OGC SensorThings |
Estado | Especificación de implementación estándar de OGC |
---|---|
Año iniciado | 2018 |
Ultima versión | 1.0 |
Editores | Steve Liang ( SensorUp ), Tania Khalafbeigi ( SensorUp ) |
Estándares básicos | OGC SPS |
Dominio | Consorcio Geoespacial Abierto , Internet de las cosas |
Abreviatura | OGC STA |
Sitio web | Página de GitHub estándar de la API OGC SensorThings |
Estado | Documento de debate de OGC |
---|---|
Año iniciado | 2018 |
Ultima versión | 1.0 |
Editores | Steve Liang ( SensorUp ), Tania Khalafbeigi ( SensorUp ), Kan Luo (Universidad de Calgary) |
Estándares básicos | Sensor OGC Cosas |
Dominio | Consorcio Geoespacial Abierto , Internet de las cosas |
Abreviatura | OGC STA |
Sitio web | Página de descarga del documento de debate principal de tareas de la API de OGC SensorThings |
La API OGC SensorThings tiene dos partes: (1) Parte I - Detección y (2) Parte II - Tarea. OGC SensorThings API Part I - Sensing se publicó para comentarios públicos el 18 de junio de 2015. [2] El Comité Técnico (TC) de OGC aprueba el inicio de la votación electrónica el 3 de diciembre de 2015, y la SensorThings API Part I - Sensing aprobó el TC votación 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 Especificación técnica de UIT-T de las Naciones Unidas. [3]
OGC SensorThings API Part II - Tasking Core se publicó para comentarios públicos el 20 de febrero de 2018, [4] y pasó la votación del TC el 1 de junio de 2018. Se publicó la especificación estándar oficial de OGC para SensorThings API Part II - Tasking Core en línea el 8 de enero de 2019.
Con el fin de ofrecer una mejor experiencia para el desarrollador, el documento de debate de SensorThings API Part II - Tasking Core se publicó en línea el 18 de diciembre de 2018. El documento de debate Tasking Core proporciona 15 ejemplos JSON que muestran cómo se puede utilizar SensorThings API Part II - Tasking Core.
Diseño
La API SensorThings está diseñada específicamente para dispositivos IoT con recursos limitados y la comunidad de desarrolladores web. Sigue los principios REST , la codificación JSON y el protocolo OASIS OData y las convenciones de URL. Además, tiene una extensión MQTT que permite a los usuarios / dispositivos publicar y suscribirse actualizaciones desde los dispositivos, y puede usar CoAP además de HTTP.
La base de la API SensorThings es su modelo de datos que se basa en la ISO 19156 ( Observaciones y mediciones ISO / OGC ), que define un modelo conceptual para las observaciones y para las características involucradas en el muestreo al realizar observaciones. En el contexto de SensorThings, las características se modelan como Cosas , Sensores ( es decir , Procedimientos en O&M) y Característica de intereses . Como resultado, la API SensorThings proporciona una vista de enfoque de observación interoperable, que es particularmente útil para reconciliar las diferencias entre sistemas de detección heterogéneos (por ejemplo, sensores in situ y sensores remotos).
Un dispositivo o sistema de IoT se modela como una cosa . Una cosa tiene un número arbitrario de ubicaciones (incluidas 0 ubicaciones ) y una cantidad arbitraria de flujos de datos (incluidos 0 flujos de datos ). Cada flujo de datos observa una propiedad observada con un sensor y tiene muchas observaciones recopiladas por el sensor . Cada observación observa un FeatureOfInterest en particular . El modelo basado en O&M permite a SensorThings adaptarse a dispositivos IoT heterogéneos y los datos recopilados por los dispositivos. [5]
La API de SensorThings proporciona dos funcionalidades principales, cada una manejada por una parte. Los dos perfiles son la parte de detección y la parte de tareas. La parte de detección proporciona una forma estándar de administrar y recuperar observaciones y metadatos de sistemas de sensores de IoT heterogéneos, y las funciones de la parte de detección son similares al servicio de observación de sensores OGC . La parte de tareas proporciona una forma estándar para parametrizar, también llamada tarea, de dispositivos IoT con capacidad de tarea, como sensores o actuadores. Las funciones de la parte de tareas son similares al servicio de planificación de sensores OGC . La parte de detección está diseñada en base al modelo ISO / OGC Observations and Measurements (O&M) y permite que los dispositivos y aplicaciones de IoT CREAN, LEER, ACTUALIZAR y ELIMINAR ( es decir , HTTP POST, GET, PATCH y DELETE) datos de IoT y metadatos en un servicio SensorThings.
Entidades (recursos)
SensorThings API Part I - Sensing define los siguientes recursos. Como SensorThings es un servicio web RESTful, cada entidad se puede CREAR, LEER, ACTUALIZAR y ELIMINAR con verbos HTTP estándar ( POST , GET , PATCH y DELETE): [6] [7]
Thing
: Objeto del mundo físico (cosas físicas) o del mundo de la información (cosas virtuales) que es susceptible de ser identificado e integrado en redes de comunicación. [8]Locations
: Localiza la cosa o las cosas con las que está asociado.HistoricalLocations
: El conjunto proporciona la ubicación actual (es decir, la última conocida) y la ubicación anterior de la cosa con su tiempo.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
: 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 la asignación de 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 anteriores, SensorThings API Part II - Tasking Core define los siguientes recursos: [10]
TaskingCapabilities
: Especifica los parámetros aptos para tareas 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]
Carga útil de ejemplo
http://example.org/v1.0/Datastream(id)/Observations
{ "@ iot.count" : 2 , "valor" : [ { "@ iot.id" : 1 , "@ iot.selfLink" : "http://example.org/v1.0/Observations(1)" , " FenomenTime" : "2016-01-01T05: 00: 00.000Z" , "resultado" : "-9" , "resultTime" : nulo , "[email protected]" : "http://example.org/v1.0/Observations(1)/Datastream" , "[email protected]" : "http://example.org/v1.0/Observations(1)/FeatureOfInterest" }, { "@ iot.id" : 2 , "@ iot.selfLink" : "http://example.org/v1.0/Observations(2)" , " FenomenTime" : "2016-01-01T04: 00: 00.000Z" , "resultado" : "-10" , "resultTime" : nulo , "[email protected]" : "http://example.org/v1.0/Observations(2)/Datastream" , "[email protected]" : "http://example.org/v1.0/Observations(2)/FeatureOfInterest" } ]}
Extensiones de matriz 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 formatear las entidades en el formato dataArray. Cuando un servicio SensorThings devuelve una respuesta de dataArray, el servicio agrupa las entidades de observación por Datastream o MultiDatastream, lo que significa que las entidades de observación que se vinculan al mismo Datastream o al mismo MultiDatastream se agregan en un dataArray.
Solicitud de ejemplo de matriz de datos
http://example.org/v1.0/Observations?$resultFormat=dataArray
Respuesta de matriz de datos de ejemplo
{ "valor" : [ { "[email protected]" : "http://example.org/v1.0/Datastreams(1)" , "componentes" : [ "id" , "FenomenTime" , "resultTime" , "resultado" ], "[email protected]" : 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 SensorThing será una mejora importante para el middleware OpenIoT. Le dará a OpenIoT una interfaz estandarizada y realmente fácil de usar para los valores del sensor. Esto complementará los servicios de razonamiento semántico rico con una interfaz sencilla basada en recursos. Y el mapeo del modelo de datos coherente proporciona a ambos un contexto común para describir el Internet de las cosas ". [12]
Eficiencia de la API de SensorThings Una evaluación completa de la API de SensorThings se publicó en Jazayeri, Mohammad Ali, Steve HL Liang y Chih-Yuan Huang. "Implementación y evaluación de cuatro estándares abiertos interoperables para Internet de las cosas". Sensores 15.9 (2015): 24343-24373 .
Citas
SensorThings API 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, quedó "impresionado con el 'estado de lo práctico' en el que estos diversos sensores de la industria pueden integrarse hoy en día utilizando estándares abiertos que eliminan las limitaciones de las tecnologías únicas. [ 14] "
Especificación estándar de OGC SensorThings API
- API OGC® SensorThings Parte 1: Detección [6]
- Número de referencia interno de este documento OGC®: 15-078r6
- Fecha de envío: 2015-06-18
- Fecha de publicación: 2016-07-26
- Editor: Steve Liang ( Universidad de Calgary / SensorUp )
- Coeditores: Chih-Yuan Huang ( Universidad Nacional Central ) / Tania Khalafbeigi ( Universidad de Calgary / SensorUp )
- API OGC® SensorThings Parte 2: Núcleo de tareas [10]
- Número de referencia interno de este documento OGC®: 17-079r1
- Fecha de envío: 2017-10-13
- Fecha de publicación: 2019-01-08
- Editor: Steve Liang ( Universidad de Calgary / SensorUp )
- Coeditores: Tania Khalafbeigi ( Universidad de Calgary / SensorUp )
- Documentación de la API para desarrolladores
- Parte I - Detección
- Parte II - Tarea
- Sandbox de API de SensorThings
- Conjunto de pruebas de cumplimiento de SensorThings
Implementaciones de la API SensorThings de código abierto y gratuito
Bigotes
En marzo de 2016, SensorUp y el Laboratorio GeoSensorWeb de la Universidad de Calgary presentaron una propuesta de proyecto de software de código abierto a la Fundación Eclipse y fue aprobada. El proyecto se llama Bigotes . [15] Whiskers es un marco API de OGC SensorThings. Tendrá un cliente JavaScript y un servidor liviano para dispositivos de puerta de enlace de IoT (por ejemplo, Raspberry Pi o BeagleBone). Los bigotes tienen como objetivo fomentar un ecosistema de IoT saludable y abierto, en lugar de uno dominado por silos de información patentados. Whiskers tiene como objetivo facilitar el desarrollo de SensorThings para el gran y creciente mundo de los desarrolladores de IoT.
GOST
GOST [16] es una implementación de código abierto de la API SensorThings en el lenguaje de programación Go iniciada por Geodan. Contiene software de servidor de fácil implementación y un cliente JavaScript. Actualmente (junio de 2016) está 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 del sensor se almacenan en una base de datos PostgreSQL .
ESCARCHA
FROST-Server [17] es una implementación de servidor de código abierto de la API OGC SensorThings. FROST-Server implementa toda la especificación, incluidas todas las extensiones. Está escrito en Java y puede ejecutarse en Tomcat o Wildfly y está disponible como una imagen de Docker. Entre sus muchas características se encuentra la capacidad de utilizar identificadores de entidad basados en cadenas o UUID.
FROST-Client [18] es una biblioteca cliente de Java para comunicarse con un servidor compatible con la API de SensorThings.
SensorThings HcDT Charting SDK
SensorThings HcDT [19] es una biblioteca de gráficos de JavaScript para la API OGC SensorThings. Se basa en la biblioteca de código abierto [ aclaración necesaria ] Highcharts y DataTables . Es una biblioteca de gráficos de front-end que permite a los desarrolladores conectarse a flujos de datos desde cualquier servicio API OGC SensorThings y mostrar las observaciones del sensor en gráficos, tablas o widgets de tablero para aplicaciones web.
Mozilla STA
Mozilla desarrolló una implementación de nodo de la API OGC SensorThings. [20]
52 ° Norte STA
52N SensorThingsAPI [21] es una implementación de código abierto de la API OGC SensorThings. Sus características principales son la interoperabilidad con el 52N SOS que implementa el servicio de observación de sensores OGC , asignaciones de bases de datos personalizables y varias extensiones de conveniencia. Se puede implementar como un contenedor Docker, dentro de un Apache Tomcat o como una aplicación independiente.
Aplicaciones de ejemplo
Experimento operativo de S&T Shaken Fury del Departamento de Seguridad Nacional
En 2019, el experimento operativo Shaken Fury [22] para el programa DHS Next Generation First Responder muestra un escenario de un terremoto que causa un colapso estructural parcial y una fuga de HAZMAT en un estadio. La API OGC SensorThings se utiliza como interfaz estándar [23] que interconecta varios sensores y ofrece un conocimiento de la situación en tiempo real habilitado para IoT.
Ciudadanos inteligentes para ciudades inteligentes YYC: detección de la calidad del aire de origen colectivo
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 de origen colectivo. Todos los datos están disponibles públicamente a través de la API OGC SensorThings. [25] Estos esfuerzos de detección ciudadana aumentaron el número de sensores de calidad del aire de Calgary de 3 a más de 50.
Proyecto de emisión inteligente en Nijmegen, NL
La emisión inteligente [26] es un proyecto de monitoreo de la calidad del aire en la ciudad de Nijmegen, NL. El proyecto implementó 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 del sensor del proyecto en una API OGC SensorThings. [27]
Panel de SensorThings
Este panel proporciona una visualización del lado del cliente fácil de usar de los datos del sensor de Internet de las cosas de los servidores compatibles con la API OGC SensorThings. Se pueden organizar y configurar varios tipos de widgets en el tablero. Es una aplicación web y puede integrarse en cualquier sitio web. Una demostración en vivo está disponible en la página del proyecto . https://github.com/SensorThings-Dashboard/SensorThings-Dashboard
Panel de GOST v2
GOST Dashboard v2 es una biblioteca de código abierto de elementos HTML personalizados (componentes web) que admiten la API SensorThings. Estos elementos facilitan el desarrollo de aplicaciones HTML que integran la funcionalidad y los datos de los servicios compatibles con la API de SensorThings. Los componentes se desarrollan con Predix-UI y Polymer .
Comparación entre OGC SensorThings API y OGC Sensor Observation Services
La API SensorThings proporciona funciones similares al Servicio de observación de sensores OGC , una especificación OGC aprobada en 2005. Ambas especificaciones estándar están bajo el paquete estándar OGC Sensor Web Enablement . La siguiente tabla resume la diferencia técnica entre las dos especificaciones. [28]
API OGC SensorThings | Servicio de observación de sensores OGC (SOS) | |
---|---|---|
Codificación | JSON | XML |
Estilo de Arquitectura | Arquitectura orientada a recursos | Arquitectura orientada a Servicios |
Unión | DESCANSAR | JABÓN |
Insertar nuevos sensores u observaciones | HTTP POST (p. Ej., CRUD ) | utilizando interfaces específicas de SOS, por ejemplo, RegisterSensor (), InsertObservation () |
Eliminar sensores existentes | HTTP DELETE | utilizando interfaces específicas de SOS, es decir, DeleteSensor () |
Paginación | $ top, $ skip, $ nextLink | No soportado |
Soporte Pub / Sub | Extensión MQTT y SensorThings MQTT | No soportado |
Actualización de las propiedades de los sensores u observaciones existentes. | PATCH HTTP y PATCH JSON | No soportado |
Eliminar observaciones | HTTP DELETE | No soportado |
Soporte de datos vinculados | JSON-LD | No soportado |
Devuelve solo las propiedades seleccionadas por el cliente | $ seleccionar | No soportado |
Devolver múltiples entidades de O&M (por ejemplo, FeatureOfInterest y Observation) en una solicitud / respuesta | $ expandir | No soportado |
Enlaces
- API SensorThings - GitHub
- Presentación : Sensor de sus aplicaciones conectadas con OGC SensorThings API (FOSS4G)
- Capítulo: Asignación de la API OGC SensorThings al Middleware de OpenIoT
- Tutorial en YouTube: serie de introducción n. ° 1 , serie de tutoriales de SensorThings n. ° 2 y serie de tutoriales de SensorThings n. ° 3
- Aplicación : SensorThings Playground permite a las personas y organizaciones interesadas experimentar con un sistema SensorThings a través de un proceso amigable paso a paso.
Referencias
- ^ "API OGC SensorThings" . Consorcio Geoespacial Abierto . Consultado el 20 de febrero de 2018 .
- ^ "OGC busca comentarios públicos sobre el estándar API SensorThings para Internet de las cosas | OGC" . www.opengeospatial.org . Consultado el 26 de enero de 2016 .
- ^ "Especificación técnica D3.2 - API SensorThings - Detección" . www.itu.int . Consultado el 17 de julio de 2019 .
- ^ "OGC busca comentarios públicos sobre el estándar candidato 'SensorThings API Part 2 - Tasking Core' para su uso en el Internet de las cosas | OGC" . www.opengeospatial.org . Consultado el 21 de febrero de 2018 .
- ^ "Referencia API" . www.sensorup.com . Consultado el 26 de enero de 2016 .
- ^ a b Liang, Steve; Huang, Chih-Yuan; Khalafbeigi, Tania, eds. (26 de julio de 2016). API OGC® SensorThings Parte 1: Detección .
- ^ "Modelo de datos de SensorThings" . ogc-iot.github.io . Consultado el 26 de enero de 2016 .
- ^ tsbmail. "Y.2060: Visión general de Internet de las cosas" . www.itu.int . Consultado el 26 de enero de 2016 .
- ^ a b "ISO 19156: 2011 - Información geográfica - Observaciones y mediciones" . www.iso.org . Consultado el 26 de enero de 2016 .
- ^ a b Liang, Steve; Khalafbeigi, Tania, eds. (8 de enero de 2019). API OGC® SensorThings Parte 2: Núcleo de tareas .
- ^ "Lenguaje del modelo de sensor (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.). Mapeo de la API OGC SensorThings en OpenIoT Middleware . Apuntes de conferencias en Ciencias de la Computación. Springer International Publishing. págs. 62–70. doi : 10.1007 / 978-3-319-16546-2_6 . ISBN 9783319165455.
- ^ "OGC anuncia la finalización con éxito del piloto de IoT de intercambio de información de gestión de incidentes" .
- ^ "El piloto de Internet de las cosas de S&T demuestra el 'estado de la práctica ' " . 2016-01-25 . Consultado el 14 de febrero de 2016 .
- ^ "Bigote, una propuesta de proyecto Eclipse" . 2016-03-11 . 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 . 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, 2020-11-17 , consultado el 2020-11-24
- ^ "Comunicado de prensa: S&T, industria, socio de respuesta para evaluar la tecnología" . Departamento de Seguridad Nacional . 2019-06-10 . Consultado el 17 de julio de 2019 .
- ^ "Manual de integración NGFR" . Departamento de Seguridad Nacional . 2018-02-06 . Consultado el 17 de julio de 2019 .
- ^ "El piloto del sensor de Calgary le ayuda a planificar una carrera con la mejor calidad de aire | Noticias de Metro" . metronews.ca . 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 - original de Geonovum: Mark Otto, Jacob Thornton y Bootstrap. "Emisión inteligente" . data.smartemission.nl . Consultado el 4 de noviembre de 2016 .
- ^ "Geonovum / smartemission" . GitHub . Consultado el 4 de noviembre de 2016 .
- ^ "Comparación de SensorThings API y Sensor Observation Service" . Consultado el 29 de febrero de 2016 .