Explicación General
Historian presenta una API REST para que software de terceros pueda interactuar con Historian.
Se trata de un método equivalente en muchas de sus funcionalidades con la ya conocida interfaz ODBC de Historian.
Así las cosas, la API REST de Historian permite realizar consultas sobre la información historizada. Más allá de la consulta de la información, la API REST ofrece también posibilidad de interactuar con la configuración de Historian.
Estas capacidades de interacción con la configuración, así como la tecnología de base utilizada, hacen de la API REST un método de interacción mucho más moderno y potente que la interfaz ODBC de Historian.
Procedimiento
Lo primero es verificar que el servicio "Historian Embedded Tomcat Container" esté arrancado en el servidor de Historian
Con este punto verificado, se puede instalar Postman y lanzar la aplicación para comenzar a configurar la conexión y las llamadas REST contra la API de Historian
En un primer paso, configuramos postman para deshabilitar la verificación de certificados SSL
(esto se consigue llamando al menú de postman "File / Settings" y en la pestaña "General", marcar el botón "OFF" para desactivar la funcionalidad "SSL certificate verification"
Seguidamente, antes de poder lanzar ninguna consulta o petición por el API REST de Historian, será necesario obtener el token de autenticación. Para ello definimos una petición REST contra el UAA:
- Request type: GET
- URL: https://<NombreServidorHistorian>:443/uaa/oauth/token?grant_type=client_credentials
(nótese que en versiones más antiguas de Historian como las 7.x, el puerto es 8443 y no 443) - Authorization TYPE: Basic Auth
- Username: admin Password: <password>
Esto se presenta de la siguiente forma en el menú de la petición REST en postman:
El resultado de esta petición es el token que deberemos acompañar en el resto de peticiones lanzadas a través de la API REST de Historian. A continuación se presenta un ejemplo de la respuesta a esta primera petición contra UAA, con el token obtenido:
Con este punto resuelto, ya es posible lanzar peticiones REST contra la API de Historian.
A continuación se presentan algunos ejemplos de peticiones, junto a una referencia a la descripción completa de la API de Historian invocada en cada caso
- Current Value API
Utilizada para leer de Historian el último valor recibido de un tag concreto- Request type: GET
- URL: https://<NombreServidorHistorian>:8443/historian-rest-api/v1/datapoints/currentvalue?tagNames=<NombreTag>
(nótese que en versiones más antiguas de Historian como las 7.x, el puerto es 8443 y no 443) - Authorization TYPE: Bearer Token
- Token: el código de token obtenido en la petición anterior, contra el servidor REST del UAA
A continuación se presenta un ejemplo de le formulación de la consulta y de la respuesta obtenida, ambos en postman
- TagList API
Utilizada para leer de Historian el listado de tags que se están historizando (de los múltiples colectores diferentes que pueda tener definidos)- Request type: GET
- URL: https://<NombreServidorHistorian>:8443/historian-rest-api/v1/tagslist
(nótese que en versiones más antiguas de Historian como las 7.x, el puerto es 8443 y no 443) - Authorization TYPE: Bearer Token
- Token: el código de token obtenido en la petición anterior, contra el servidor REST del UAA
A continuación se presenta un ejemplo de le formulación de la consulta y de la respuesta obtenida, ambos en postman
- Raw Data API
Utilizada para leer de Historian datos correspondientes a muestras "en crudo" (es decir sin interpolar o tratar).- Request type: GET
- URL: https://<NombreServidorHistorian>:8443/historian-rest-api/v1datapoints/raw/<NombreTag>
/2019-12-23T00:00:00.000Z/2019-12-23T15:00:00.000Z/0/10
(nótese que en versiones más antiguas de Historian como las 7.x, el puerto es 8443 y no 443) - Authorization TYPE: Bearer Token
- Token: el código de token obtenido en la petición anterior, contra el servidor REST del UAA
A continuación se presenta un ejemplo de le formulación de la consulta y de la respuesta obtenida, ambos en postman
Como último punto, señalar que Operations Hub cuenta con una serie de menús para implementar este tipo de queries contra cualquier servidor REST. El caso particular del servidor REST de Historian está lógicamente contemplado.
Se trata de un entorno algo más sencillo de utilizar que postman, que es un cliente REST de uso general, y como tal presenta muchas más opciones que no aplican en el caso concreto de la interacción con el servidor REST de Historian.
Para más información, puede consultarse la documentación online de Operations Hub, en lo referente a construir queries REST.