API – Librerías

Encuentra información detallada sobre las API de SDS, incluyendo la autenticación, los métodos, los parámetros, los formatos de respuesta y los errores. Las guías de usuario y los manuales completos están disponibles para los socios activos.
Las guías de usuario y los manuales completos están disponibles para los socios activos.

DISPOSITIVOS API

El API para dispositivos está basada Sentilo, una plataforma de sensores y actuadores de código abierto liderada por el Ayuntamiento de Barcelona y respaldada por una comunidad de empresas y personas que garantizan la innovación y el apoyo continuos. Puede encontrar una descripción completa de todos sus objetos y métodos aquí.

 

Recursos

Recursos existentes:

  • Sensor (dispositivo): entidad de hardware o software con la capacidad de generar una lectura.
  • Componente: elemento de hardware o software, con ubicación geoespacial (fija o móvil) que puede contener uno o más Sensores.
  • Proveedor: Entidad que representa un grupo de componentes y les proporciona conectividad con la plataforma. Se utiliza para enviar datos y recibir comandos.
  • Aplicación Cliente/Módulo: entidad que consume los datos procesados por la plataforma.

 

Acciones disponibles:

Aplicaciones/Módulos:

  • Enviar las órdenes a los proveedores/sensores (servicio de pedidos).
  • Recibir datos de los proveedores/sensores (servicio de datos).
  • Suscribirse a eventos del sistema (servicio de suscripción).

Proveedores/sensores:

  • Registrarse en la plataforma (servicio de catálogo).
  • Suscribirse a eventos del sistema (servicio de suscripción).
  • Publicar datos (servicio de datos).

 

Identificador:

Cada recurso tiene una URL que lo identifica de forma única dentro del sistema según el formato que se describe a continuación:

[code lang=»php»][API URL]/[service] [/code]

Formato de los datos

Actualmente, la API admite JSON como formato de datos predeterminado.

[code lang=»php»][API URL]/service/[id_provider] ?[PARAMETER]=[VALUE] [/code]

Ejemplo de datos en formato JSON:

[code lang=»php»]{«observations»:[
{«value»:«12.3»,«timestamp»:«17/09/2012T12:34:45»}
]} [/code]

APLICACIONES API

Encuentra una descripción general de los métodos y objetos relacionados con los sitios de implementación, los sensores y las mediciones disponibles para los desarrolladores que desean diseñar aplicaciones externas en la plataforma que elijan o integrar las existentes.

La referencia completa de la API está disponible en la interfaz web de la plataforma.

Seguridad

La plataforma validará cualquier solicitud recibida por el sistema en base a la arquitectura AAA (Autenticación, Autorización y Contabilidad).
Los tokens de autenticación se proporcionan cuando un socio se activa en la plataforma.

Instalaciones

INSTALACIONES (Sitios de implementación)
A través de este servicio, puede recuperar la lista de instalaciones y los detalles relacionados asociados con tu usuario. Todas las solicitudes de este servicio deben tener el siguiente formato:

[code lang=»php»][API URL]/installations?[PARAMETER]=[VALUE] [/code]

Parámetros:

Key Description Mandatory
id Used to filter the list by the installation unique identifier No

 

Además del código de estado HTTP, esta acción devuelve la lista de instalaciones para las que tenemos permiso de lectura. Cada elemento de la lista tendrá la siguiente estructura:

Key Description
id Unique installation identifier
name Installation name
typology Installation typology
address Address of the installation
zip ZIP code of the installation
city City of the installation
State State of the installation
country Country of the installation
latitude GPS coordinates of the installation, latitude
longitude GPS coordinates of the installation, longitude

 

Ejemplo: Para recuperar detalles de la instalación con ID 142, tenemos que enviar la siguiente solicitud:

[code lang=»php»][API URL]/installations?id=142[/code]

En la respuesta recibiremos:

[code lang=»php»]{«installations»:[
{
«id»:142,
«name»:«Demo installation»,
«typology»:«Datacenter»,
«address»:«Passeig de Gràcia, 47»,
«zip»:«08007»,
«city»:«Barcelona»,
«state»:«Barcelona»,
«country»:«España»,
«latitude»:41.392408931363,
«longitude»:2.1645916698617
}
]} [/code]

Sensores

A través de este servicio, puedes recuperar la lista de sensores y los detalles relacionados asociados con tu usuario. Todas las solicitudes de este servicio deben tener el siguiente formato:

[code lang=»php»][API URL]/sensors?[PARAMETER]=[VALUE] [/code]

Parámetros:

Key Description Mandatory
id Used to filter the list by the sensor unique identifier No
installationid Used to filter the list by the installation unique identifier No

 

Además del código de estado HTTP, esta acción devuelve la lista de instalaciones para las que tenemos permiso de lectura. Cada elemento de la lista tendrá la siguiente estructura:

Key Description
id Unique sensor identifier
installationId Unique installation identifier
name Name of the sensor
measurementUnit Measurement unit associated with the sensor
granularity Time interval (seconds) between two measurements
multiplier Value which any measurement will be multiplied by
offset Constant value added to any measurement after the operation above

 

Ejemplo: Para recuperar la lista de sensores asociados a la instalación con ID 142, tenemos que enviar la siguiente solicitud:

[code lang=»php»][API URL]/sensors?installationid=142[/code]

En la respuesta recibiremos:

[code lang=»php»]{«sensors»:[
{
«id»:1517,
«installationId»:142,
«name»:«Datacenter temperature»,
«measurementUnit»:«°C»,
«granularity»:900,
«multiplier»:1,
«offset»:0
},{
«id»:1518,
«installationId»:142,
«name»:«Datacenter humidity»,
«measurementUnit»:«%»,
«granularity»:900,
«multiplier»:1,
«offset»:0
}
]} [/code]

Mediciones

A través de este servicio, puedes recuperar la lista de mediciones recibidas a través de la plataforma. Todas las solicitudes de este servicio deben tener el siguiente formato:

[code lang=»php»][API URL]/measurements?[PARAMETER]=[VALUE] [/code]

Parámetros

Key Description Mandatory
sensorid Used to select the sensor Yes
begin Begin of the time interval, EPOCH format Yes
end End of the time interval, EPOCH format Yes
sampling Output data format (view table below) No
timeoffset Time offset (seconds) applied to any timestamp and sampling interval No

 

Formatos de datos de salida disponibles

Value Description
0 (Default) Individual measurements (raw values)
10 Hourly sampling, average value
11 Hourly sampling, minimum value
12 Hourly sampling, maximum value
13 Hourly sampling, minimum and maximum value
20 Daily sampling, average value
21 Daily sampling, minimum value
22 Daily sampling, maximum value
23 Daily sampling, minimum and maximum value
30 Monthly sampling, average value
31 Monthly sampling, minimum value
32 Monthly sampling, maximum value
33 Monthly sampling, minimum and maximum value
40 Yearly sampling, average value
41 Yearly sampling, minimum value
42 Yearly sampling, maximum value
43 Yearly sampling, minimum and maximum value

 

Además del código de estado HTTP, esta acción devuelve una lista de mediciones. Esta es la estructura de salida si el formato de datos de salida seleccionado es 0 (mediciones individuales):

Key Description
timestamp Timestamp of the measurement
value Value of the measurement

 

En el caso de que el formato de datos de salida especificado sea 10, 11, 12, 20, 21, 22, 30, 31 o 32, la estructura de salida será la misma, pero con un significado ligeramente diferente:

Key Description
timestamp Timestamp of the begin of the sampling interval
value Average, lowest (minimum) or highest (maximum) value received in the sampling interval

 

En el caso de que el formato de datos de salida especificado sea 13, 23, 33 o 43, cada elemento de la lista tendrá esta estructura alternativa:

Key Description
timestamp Timestamp of the begin of the sampling interval
low Lowest (minimum) value received in the sampling interval
high Highest (maximum) value received in the sampling interval

 

Si no se ha especificado el huso horario, todas las marcas de tiempo y los intervalos de muestreo se referirán a la zona horaria GMT.

Nota: Se incluirán las mediciones con marca de tiempo al comienzo del intervalo de tiempo. Se excluirá la medición con marca de tiempo al final del intervalo de tiempo.

Ejemplo 1: Necesitamos recuperar la lista de mediciones recibidas del sensor con ID 1517, desde el 10 de octubre de 2015 a las 08:00:00 CEST hasta el 10 de octubre de 2015 a las 10:00:00 CEST, y queremos que nuestro resultado esté en la Zona horaria GMT. Entonces, tenemos que enviar la siguiente solicitud:

[code lang=»php»][API URL]/measurements?sensorid=1517&begin=1444456800&end=1444464000[/code]

En la respuesta recibiremos:

[code lang=»php»][
{«measurements»:[
{
«timestamp»:«2015-10-10 06:00:01»,
«value»:27.5
},{
«timestamp»:«2015-10-10 06:15:02»,
«value»:27.9
},{
«timestamp»:«2015-10-10 06:30:01»,
«value»:28.1
},{
«timestamp»:«2015-10-10 06:45:02»,
«value»:27.7
},{
«timestamp»:«2015-10-10 07:00:02»,
«value»:27.4
},{
«timestamp»:«2015-10-10 07:15:00»,
«value»:26.9
},{
«timestamp»:«2015-10-10 07:30:01»,
«value»:26.8
},{
«timestamp»:«2015-10-10 07:45:01»,
«value»:27.3
}
]} [/code]

Ejemplo 2: Necesitamos recuperar la lista promedio por hora de mediciones recibidas del sensor con ID 1517, desde el 10 de octubre de 2015 a las 08:00:00 CEST hasta el 10 de octubre de 2015 a las 12:00:00 CEST, y queremos que nuestro resultado esté en nuestra zona horaria CEST local. Entonces, tenemos que enviar la siguiente solicitud:

[code lang=»php»][API URL]/measurements?sensorid=1517&begin=1444456800&end=1444464000[/code]

En la respuesta recibiremos:

[code lang=»php»]{«measurements»:[
{
«timestamp»:«2015-10-10 08:00:00»,
«value»:27.6
},{
«timestamp»:«2015-10-10 09:00:00»,
«value»:27.7
},{
«timestamp»:«2015-10-10 10:00:00»,
«value»:28.0
},{
«timestamp»:«2015-10-10 11:00:00»,
«value»:27.9
}
]} [/code]

jemplo 3: necesitamos recuperar la lista de mediciones diarias mínima + máxima recibidas del sensor con ID 1517, desde el 8 de octubre de 2015 a las 00:00:00 CEST hasta el 10 de octubre de 2015 a las 00:00:00 CEST, y queremos que nuestro resultado esté en nuestra zona horaria CEST local. Por eso, tenemos que enviar la siguiente solicitud:

[code lang=»php»][API URL]/measurements?sensorid=1517&begin=1444255200&end=1444428000&sampling=23&timeoffset=7200[/code]

En la respuesta recibiremos:

[code lang=»php»]{«measurements»:[
{
«timestamp»:«2015-10-08 00:00:00»,
«low»:25.4
«high»:29.6
},{
«timestamp»:«2015-10-09 00:00:00»,
«low»:25.8
«high»:30.3
}
]}[/code]