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:
-
[API URL]/[service]
Formato de los datos
Actualmente, la API admite JSON como formato de datos predeterminado.
-
[API URL]/service/[id_provider] ?[PARAMETER]=[VALUE]
Ejemplo de datos en formato JSON:
-
{«observations»:[
-
{«value»:«12.3»,«timestamp»:«17/09/2012T12:34:45»}
-
]}
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.
Servicios
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:
-
[API URL]/installations?[PARAMETER]=[VALUE]
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:
-
[API URL]/installations?id=142
En la respuesta recibiremos:
-
{«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
-
}
-
]}
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:
-
[API URL]/sensors?[PARAMETER]=[VALUE]
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:
-
[API URL]/sensors?installationid=142
En la respuesta recibiremos:
-
{«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
-
}
-
]}
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:
-
[API URL]/measurements?[PARAMETER]=[VALUE]
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:
-
[API URL]/measurements?sensorid=1517&begin=1444456800&end=1444464000
En la respuesta recibiremos:
-
{«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
-
}
-
]}
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:
-
[API URL]/measurements?sensorid=1517&begin=1444456800&end=1444464000
En la respuesta recibiremos:
-
{«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
-
}
-
]}
Ejemplo 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:
-
[API URL]/measurements?sensorid=1517&begin=1444255200&end=1444428000&sampling=23&timeoffset=7200
En la respuesta recibiremos:
-
{«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
-
}
-
]}