proyecto smart city uma€¦ · 1. intro: relación con fiware context broker iot agents sth portal...

57
Smart Cities Telefónica España 15.07.2019 PROYECTO SMART CITY UMA FIWARE y Plataforma Thinking Cities

Upload: others

Post on 21-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

Smart CitiesTelefónica España15.07.2019

PROYECTO SMART CITY UMAFIWARE y Plataforma Thinking Cities

Page 2: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

2

Proyecto Smart City UMA (I)

Red de Pruebas sobre Tecnologías Smart City en el campus de la Universidad de Málaga (UMA)

✓ Prueba de concepto de diferentes soluciones y

tecnologías de comunicaciones.

✓ Combinación hardware-software altamente

configurable, orientada a la investigación.

▪ Plataforma IoT

▪ Red de dispositivos (sensores, actuadores, cámaras)

▪ Firmware y programación específicos

Page 3: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

3

Proyecto Smart City UMA (II)✓ Sensores:

▪ Temperatura / Humedad / Presión

▪ Presencia / Proximidad (beacons)

▪ Luz

▪ Radiación ambiental (tubo Geiger)

▪ Gases

▪ Estación meteorológica (lluvia, viento)

▪ Grosor de tronco

▪ Radiación solar (piranómetro)

▪ Ultrasonidos (papeleras residuos)

▪ Cámaras infrarrojas

▪ Parking

✓ Actuadores ON/OFF: ▪ Iluminación

▪ Climatización

Page 4: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

4

Agenda Formación (4 días)

DÍA 1 (lun 15/07)

SESIÓN ALCANCE PONENTE

09:00 - 14:00 FIWARE y Plataforma Thinking Cities PLATAFORMA Telefónica

DÍAS 2 y 3 (mar 16/07 y mié 17/07)

SESIÓN ALCANCE PONENTE

09:00 - 14:00 Red de sensores WaspmoteDISPOSITIVOS Libelium14:00 - 15:00 COMIDA

15:00 - 17:00 Red de sensores Waspmote

DÍA 4 (jue 18/07)

SESIÓN ALCANCE PONENTE

09:00 - 14:00 Integración de sensores con la plataforma INTEGRACIÓN EDP

Page 5: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

5

FIWARE y Plataforma Thinking Cities

Page 6: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

6

Protocolo estándar

1. Intro: Plataforma basada en estándar FIWARE

LTEWiFi LoRaWAN

Sensores Actuadores Equipos Terminales

ZigBee

Thinking Cities

Sigfox

Capa estandarizada de acceso a la información para los diferentes dispositivos y tecnologías

Plataforma IoT

InvestigadoresProyecto 1 Proyecto 2 Proyecto 3 Proyecto n

Page 7: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

7

1. Intro: Arquitectura Plataforma FIWARE

CONTEXT BROKER (NGSI)

Short Term Historic (STH)

Complex Event Processing (CEP)

IoT Agents

IDM

& A

uth

Measures / Commands

Other Services

Apps

Legacy Systems

3rd Party

ActuatorsIoT Sensors

Queries / Subscriptions

Page 8: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

8

1. Intro: Interacción con el Context Broker

CONTEXT PRODUCERS CONTEXT BROKER CONTEXT CONSUMERS

suscriptions

update

update

update

2026

query

notify

notify

2026

Page 9: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

9

1. Intro: Relación con FIWARE

ContextBroker

IoT Agents

STH Portal de Configuración

Modelo multiusuario

CEP

PEP ProxyOAuth Server

IDM Plugins extra de seguridad

Entorno y equipode soporte dedicado

Módulos adicionales de Telefónica

Thinking Cities Platform

Page 10: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

10

1. Intro: Portal de configuración

Telefónica IoT Platform REST API Client

Facilita la gestión de:▪ Reglas del CEP▪ Subscripciones

▪ Servicios & Subservicios▪ Usuarios

▪ Entidades & Atributos▪ Dispositivos IoT

vs

Page 11: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

11

1. Intro: Gestión multiusuario

Service

(Fiware-Service)

Subservice

(Fiware-ServicePath)

Role User

1 N

N1

admin

ServiceCustomer SubServiceCustomer

SubServiceAdmin

Page 12: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

12

1. Intro: Servicios / Subservicios en la UMA

smart_campus_umasmart_uma

PLATAFORMA UMA

Servicios:

Subservicios: smart_city

(Red de Pruebas)

https://150.214.58.178/

formacion_uma

(Formación)

apicampusbiblio_smart

cai_umaciesc

conmetdias2p_streetqr

fraterni_labgreen_senti

hort_sostmahduma

microsolsmart_secure_ev_urban_lab

smart_treese4

usmartdrivetfg_visor_iot

Page 13: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

13

2. API NGSI: Información de contextoCity Governance System

City Services

3rd Party apps

Attributes

• Name• Type• Value

Entity

• EntityId• EntityType

1 n

“has”

NGSI API

APPLICATION / SERVICE

Bus- Location- Nº Passengers- Driver- License Plate

Shop- Location- Business Name- Franchise- Offerings

Citizen- Name - Surname- Birthday- Preferences- Location- ToDo list

CONTEXT BROKER

Page 14: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

14

2. API NGSI: Ejemplo de uso

GET /v2/entities/plant/attrs/humidity

Cambiando el valor del atributo

“status” a “watering” disparamos la

ejecución del proceso que inicia el

riego en el dispositivo IoT

Permite leer la humedad para

decidir cuándo regar la planta

PUT /v2/entities/plant/attrs/status/value“watering”

API NGSIAPI estándar para el manejo de información de contexto

API Restful, simplifica y acelera el desarrollo

Orion Context Broker

NGSI APINGSI API

ID de la entidadNombre del atributoValor del atributo

Page 15: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

15

2. API NGSI: CRUD de entidadesGET /v2/entitiesObtiene todas las entidades que se hayan creado

POST /v2/entitiesCrea una entidad

GET /v2/entities/{entityID}Obtiene una entidad dado su ID

[POST|PATCH|PUT] /v2/entities/{entityID}/attrsActualiza los atributos de una entidad

DELETE /v2/entities/{entityID}Borra una entidad

POST: Actualiza y si el atributo no existe lo crea.

PATCH: Actualiza y si el atributo no existe no lo crea.

PUT: Reemplaza todos los atributos de la entidad por

los nuevos que pongamos.

Page 16: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

16

2. API NGSI: CRUD de atributosGET /v2/entities/{entityID}/attrs/{attrName}Obtiene el dato (tipo y valor) de un atributo concreto

PUT /v2/entities/{entityID}/attrs/{attrName}Actualiza el dato (tipo y valor) de un atributo concreto

DELETE /v2/entities/{entityID}/attrs/{attrName}Borra un atributo concreto

GET /v2/entities/{entityID}/attrs/{attrName}/valueObtiene el valor de un atributo concreto

PUT /v2/entities/{entityID}/attrs/{attrName}/valueActualiza el valor de un atributo concreto

Page 17: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

17

2. API NGSI: Envío de datos al Context Broker

Creando entidad “car” Actualizando atributo “speed”

POST {{host}}:2026/v2/entities

Content-Type: application/json

{

"id": "Car1",

"type": "Car",

"speed": {

"type": "Number",

"value": 98

}

}

201 Created

PUT {{host}}:2026/v2/entities/Car1/attrs/speed

Content-Type: application/json

{

"type": "Number",

"value": 110

}

Page 18: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

18

2. API NGSI: Consulta de datos del Context BrokerConsultando atributo “speed”

GET {{host}}:2026/v2/entities/Car1/attrs/speed

200 OK

Content-Type: application/json

{

"type": "Number",

"value": 110,

"metadata": {}

}

Page 19: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

19

2. API NGSI: Modelo de datos completo

Attributes

• Name• Type• Value

Entity

• EntityId• EntityType

1 n

“has”

Metadata

• Name• Type• Value1 n

“has”

Uso de metadatos:

Amplían y/o particularizan la información de cada atributo

"id": "Car1",

"type": "Car",

"speed": {

"type": "Number",

"value": 110,

"metadata": {

"unit": {

"type": "Text",

"value": "km/h"

}

}

}

Page 20: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

20

3. Modelo de datos armonizados

En todos los sectores

Propuestas a través de GitHub

Superconjunto de los modelos de la GSMA

Enlaces con los modelos de datos

https://www.fiware.org/developers/data-models

https://fiware-datamodels.readthedocs.io/

https://github.com/Fiware/dataModels

https://www.gsma.com/iot/wp-content/uploads/2016/11/CLP.26-v1.0.pdf

Alertas Transporte

Parking Residuos

AlumbradoPúblico

MedioAmbiente

Page 21: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

21

Elementos involucrados● IDM: Provee la identificación del usuario● PEP: Proxy que deja pasar las peticiones● PDP: Contiene los roles y permisos de los

distintos usuarios

Pasos:

1. Login en IDM con usuario y contraseñapara obtener un token (válido por 1 hora).

2. Hacer la petición al Context Broker a travésdel PEP facilitando el token.

4. Seguridad: Arquitectura

IDM

PEP

Proxy

App

1

2

Similar al modelo Oauth (utilizado por Google, Facebook, etc)

Page 22: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

22

4. Seguridad: Obtener token del IDM (I)POST /v3/auth/tokens

Host: {{host}}:{{idm_port}}

Content-Type: application/json

{ “auth": {

"identity": {

"methods": [

"password"

],

"password": {

"user": {

"domain": {

"name": "{{service}}"

},

"name": "{{user}}",

"password": "{{password}}"

}

}

},

"scope": {

"project": {

"domain": {

"name": "{{service}}"

},

"name": "{{subservice}}"

}

}}}

HTTP/1.1 201 Created

Server :nginx

Date :Wed, 03 Apr 2019 11:24:30 GMT

Content-Type :application/json

Content-Length :840

Connection :keep-alive

X-Subject-Token :b2a955dbb2c74caca59bf0bbdf1a44df

Vary :X-Auth-Token

X-Openstack-Request-Id :req-a662643f-72d3-4325-832e-b88cdfe51f08

X-Frame-Options :SAMEORIGIN

Strict-Transport-Security :max-age=31536000; includeSubdomains;

X-Content-Type-Options :nosniff

Cache-Control :no-cache, no-store, max-age=0, must-revalidate

Pragma :no-cache

Expires :0

X-XSS-Protection :1; mode=block

Referrer-Policy :same-origin

...

Page 23: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

23

4. Seguridad: Obtener token del IDM (II)

Page 24: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

24

5. Subscripciones: Flujo

Context BrokerUpdate Entity Notification

Registro de subscripción

POST /v2/subscriptions

POST /v2/entities POST myHTTPServerwww.putsreq.com

Webhook (Callback HTTP)

http://telefonicaid.github.io/fiware-orion/api/v2/stable/ (Apartado Subscriptions)

Page 25: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

25

5. Subscripciones: CRUD

Operaciones sobre la lista de subscripciones:

● Obtener subscripciones: GET /v2/subscriptions

● Crear nueva subscripción: POST /v2/subscriptions

Operaciones sobre una subscripción concreta (ID de susbcripción):

● Leer: GET /v2/subscriptions/subscriptionId

● Modificar: PATCH /v2/subscriptions/subscriptionId

● Borrar: DELETE /v2/subscriptions/subscriptionId

Page 26: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

26

5. Subscripciones: Herramientas de depuración

Permiten ver el contenido enviado por las notificaciones.

Algunas utilidades web gratuitas:

● webhook.site

● requestbin.net

● putsreq.com

Page 27: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

27

5. Subscripciones: Registro y envío de notificaciónPOST /v2/subscriptions HTTP/1.1

Host: {{host}}:{{cb_port}}

Fiware-Service: {{service}}

Fiware-ServicePath: {{subservice}}

X-Auth-Token: {{token}}

Content-Type: application/json

{

"description": "A subscription to get info about myEntity",

"subject": {

"entities": [

{

"id": "myEntity",

"type": "myType"

}

],

"condition": {

"attrs": [ ]

}

},

"notification": {

"http": {

"url": "https://webhook.site/6a29954a-1a55-43c2-8dd0-3a9c7f4d23b5"

},

"attrs": ["temperature"],

"attrsFormat": "normalized"

}

}

POST /aGSZ2hnoTXRaO4JHZNY1 HTTP/1.1

Host: putsreq.com

Fiware-Service: smart_uma

Fiware-ServicePath: /formacion_uma

X-Auth-Token: 077ceb500f34419e87c5776e17f86605

Content-Type: application/json

NGSIV2-ATTRSFORMAT: normalized

CONTENT-LENGTH: 146

{

"subscriptionId": "5c90d94515853173859be497",

"data": [

{

"id": "myEntity",

"type": "myType",

"temperature": {

"type": "Number",

"value": 26,

"metadata": {}

}

}

]

}

Ejemplo de subscripción

Ejemplo de notificación

"legacy"→ NGSIv1"normalized"→ NGSIv2

Para obtener todos los ids de un determinado tipo habría que poner: "id" : ".*"

La notificación puede configurarse en

NGSIv1 o NGSIv2 dependiendo del

valor establecido en "attrsFormat".

Actualmente, si la subscripción se

crea o edita desde el portal web, se

establece por defecto en formato

NGSIv1 aunque es posible modificarlo

con POSTMAN.

Page 28: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

28

5. Subscripciones: Condiciones

POST /v2/subscriptions HTTP/1.1

Host: {{host}}:{{cb_port}}

Fiware-Service: {{service}}

Fiware-ServicePath: {{subservice}}

X-Auth-Token: {{token}}

Content-Type: application/json

{

"description": "A subscription to get info about myEntity",

"subject": {

"entities": [{

"id": "myEntity",

"type": "myType"

}],

"condition": {

"attrs": ["temperature"],

"expression": {"q": "temperature<10;temperature>0"}

}

},

"notification": {

"http": {"url": "https://webhook.site/6a29954a-1a55-43c2-8dd0-3a9c7f4d23b5"},

"attrs": ["temperature"]

}

}

Permiten enviar la notificación sólo

cuando se cumple una determinada

condición:

● attrs: cuando se actualiza alguno de los

atributos especificados en el campo attrs.

● expression: cuando se cumple la

expresión especificada. Tipos de

expresiones: q, mq, georel, geometry y

coords

Page 29: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

29

5. Subscripciones: Custom Notificacions

Permiten modificar el contenido

de los headers y payload de la

notificación

● Uso del patrón ${..} para sustituir por

los datos de la entidad

● Uso del campo httpCustom en vez del

campo http en la creación de la

subscripción. Permite modificar

método, cabeceras y contenido de la

petición (no tiene por qué ser JSON).

POST /v2/subscriptions HTTP/1.1

Host: {{host}}:{{cb_port}}

Fiware-Service: {{service}}

Fiware-ServicePath: {{subservice}}

X-Auth-Token: {{token}}

Content-Type: application/json

{

"description": "Custom payload example",

"subject": {

"entities": [ {"id": "myEntity", "type": "myType"} ],

"condition": {"attrs": [ ]}

},

"notification": {

"httpCustom": {

"url": "https://webhook.site/6a29954a-1a55-43c2-8dd0-3a9c7f4d23b5",

"headers": {"MyHeader": "MyValue“},

"method": "POST",

"payload": "La temperatura de la entidad %22${id}%22 es: ${temperature} grados C"

},

"attrs": ["temperature"]

}

}

Page 30: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

30

5. Subscripciones: Custom NotificacionsEjemplo:

"httpCustom": {

"url": "http://foo.com/entity/${id}",

"headers": {

"Content-Type": "text/plain"

},

"method": "PUT",

"qs": {

"type": "${type}"

},

"payload": "The temperature is ${temp} degrees"

}

PUT http://foo.com/entity/DC_S1-D41?type=Room

Content-Type: text/plain

Content-Length: 31

The temperature is 23.4 degrees

PUT /v2/entities/DC_S1-D41/attrs/temp/value?type=Room

23.4

Creación de la Custom Notification

update

notification

Page 31: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

31

5. Subscripciones: Estado de las notificaciones

La información detallada está en el elemento notification con los siguientes campos:

● timesSent: número total de intentos (fallidos y satisfactorios)

● lastSuccess: última vez que se notificó con éxito

● lastFailure: última vez que hubo un fallo en la notificación

● lastNotification: última vez que se envió una notificación (con o sin éxito)

200 OK

Content-Type: application/json

[{

"id": " 51c0ac9ed714fb3b37d7d5a8 ",

"expires": "2026-04-05T14:00:00.00Z",

"status": "failed",

"subject": { … },

"notification": {

"timesSent": 3,

"lastNotification": "2016-05-31T11:19:32.00Z",

"lastSuccess": "2016-05-31T10:07:32.00Z",

"lastFailure": "2016-05-31T11:19:32.00Z",

}

}]

Status failed significa que el último intento de notificación ha fallado.

Page 32: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

32

6. IoT Agent: Arquitectura

Ventajas

● No necesitan ir securizados (o puedenusar otro tipo de securización)

● Emplean protocolos IoT

● Proveen una capa de abstracción (mapeode parámetro con atributo)

● Permite gestionar grupos de dispositivoscomunes (grupos de provisionamiento) Grupo de prov 1

DEV

Grupo de prov 2

DEV

Grupo de prov 3

DEV...

Ultralight 2.0 JSON Sigfox

Los IoT Agents traducen el protocolo que hablan los dispositivos a NGSI

Page 33: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

33

6. IoT Agent: Protocolos disponibles en la UMA

● Ultralight 2.0 (transporte HTTP o MQTT)https://fiware-iotagent-ul.readthedocs.io/

● JSON (transporte HTTP o MQTT)https://fiware-iotagent-json.readthedocs.io/

● SigFoxhttps://github.com/telefonicaid/sigfox-iotagent

Page 34: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

34

6. IoT Agent: Tipos de Mensajes

Active Attributes Lazy Attributes

Commands

Page 35: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

35

6. IoT Agent: Grupos de provisionamiento

Al crear un grupo de provisionamiento se

especifica:

● Protocolo

● Apikey

● Mapeo de atributos

● Autoprovisionamiento de entidades

POST /iot/services HTTP/1.1

Host: {{host_iota}}:{{iota_port}}

Fiware-Service: {{service}}

Fiware-ServicePath: {{subservice}}

X-Auth-Token: {{token}}

Content-Type: application/json

{

"services": [

{

"attributes": [],

"static_attributes": [],

"apikey": "AAFF9977",

"protocol": [

"IoTA-UL"

],

"entity_type": "lamp"

}

]

}

Page 36: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

36

6. IoT Agent: Provisión de dispositivosPOST /iot/devices HTTP/1.1

Host: {{host_iota}}:{{iota_port}}

Fiware-Service: {{service}}

Fiware-ServicePath: {{subservice}}

X-Auth-Token: {{token}}

Content-Type: application/json

{"devices": [

{ "device_id": "id_sen1",

"entity_name": "myEntity",

"entity_type": "myType",

"attributes": [

{ "object_id": "t", "name": "temperature", "type": "Number" },

{ "object_id": "h", "name": "humidity", "type": "Number" }

],

"lazy":[{ "object_id": "l", "name": "luminosity", "type": "Number" }

],

"commands": [{ "object_id": "c", "name": "cmd", "type": "command" }

],

"static_attributes": [{ "name": "serialID", "type": "Text", "value":"02598347" }

],

"protocol": "IoTA-UL",

"transport": "HTTP"

}]}

Page 37: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

37

6. IoT Agent: Transformación de medidasOperaciones numéricas: multiplicar (‘*’), dividir (‘/’),

sumar (‘+’), restar (‘-’), negar (‘-’), potencia (‘^’)

Operaciones de cadena:

● Concatenar ('#'):

● Localización de substrings (indexOf(<variable>,

<substring>)): devuelve el índice de la 1º

coincidencia de <substring> en la cadena

<variable>.

● substring (substr(<variable>, <start> <end>)):

● Eliminar espacios en blanco (trim(<string>)):

https://iotagent-node-

lib.readthedocs.io/en/latest/expressionLanguage/index.html

POST /iot/devices HTTP/1.1

Host: {{host_iota}}:{{iota_port}}

Fiware-Service: {{service}}

Fiware-ServicePath: {{subservice}}

X-Auth-Token: {{token}}

Content-Type: application/json

{"devices": [

{"device_id": "id_sen1",

"entity_name": "myEntity",

"entity_type": "myType",

"attributes": [

{ "object_id": "t",

"name": "temperature",

"type": "Number"

},

{ "name": "humidity",

"type": "Number",

"expression":"${@h*100}"

},

{ "name": "location",

"type": "geo:point",

"expression":"${@latitude}, ${@longitude}"

}

],

"protocol": "IoTA-UL",

"transport": "HTTP"

}]}

Page 38: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

38

6. IoT Agent: Envío de datos con Ultralight 2.0HTTP POST:

http://{{host_iota}}:{{ul_port}}/iot/d?k={{UL_apikey}}&i=id_dev1

Headers:

{Content-Type: text/plain; Fiware-Service: {{service}}; Fiware-ServicePath: {{subservice}} }

Payload:

2019-07-01T15:15Z|t|25#h|80

Payload

▪ Si las medidas tienen diferente TimeInstant (formato ISO 8601), usar como separador la “#”:

<fecha_medida1>|<param1>|<valor>#<fecha_medida2>|<param2>|<valor> …

▪ Si las medidas comparten el mismo TimeInstant, usar como separador la “|”:

<fecha_medida>|<param1>|<valor>|<param2>|<valor> …

▪ Si no se especifica el TimeInstant de la medida se coge la fecha y hora del sistema. En este caso, se puede

usar como separador tanto la “|” como la “#”:

<param1>|<valor>|<param2>|<valor> … ò <param1>|<valor>#<param2>|<valor> …

Page 39: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

39

6. IoT Agent: Envío de comandos con Ultralight 2.0

{

"devices": [ {

"device_id": “id_sen",

"entity_name": “myEntity",

"entity_type": “myType",

"protocol":"IoTA-UL",

"transport": "HTTP“,

...

"commands": [{

"name": “cmd",

"type": "command"

}]

...

} ]

}

PUT /v1/contextEntities/type/myType/id/myEntity/attributes/cmd

Fiware-Service:{{service}}

Fiware-ServicePath:{{subservice}}

X-Auth-Token:{{token}}

Content-Type:application/json

{

"value":{

"sleep": "10min“

},

"type": "command“

}

Provisionamiento (IOTA) Escritura comando (Context Broker)POST /iot/d?k={{UL_apikey}}&i=id_sen&getCmd=1

HTTP/1.1

Host: {{host_iota}}:{{UL_port}}

Content-Type: text/plain

2019-07-12T00:35:30Z|h|60|t|31.5

200 OK

id_sen@cmd|sleep=10min

Lectura (Dispositivo)

● El dato se envía al dispositivo cuando éste manda un nuevo update a la plataforma.

● Si el dispositivo tuviera un servidor de peticiones se podría configurar una URL de envío (no es común en IoT)

Page 40: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

40

7. Uso Avanzado del Context Broker

• Operaciones batch• Filtrado de entidades• Geo-localización• Soporte de fechas• Paginación

• Federación & proveedores de contexto

Page 41: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

41

7. Uso Avanzado: Operaciones batch

Posibles operaciones:

● Update: Crea, actualiza o borra una lista de entidades en

una sola petición.

● Query: Permite hacer una búsqueda avanzada.

● Notify: Envía o consume el payload de notificaciones

ENTRANTES y lo persiste. Sirve para sincronizar los datos

entre distintos Context Brokers (Federación)

POST /v2/op/updateConten-Type: application/json... {

"actionType": "APPEND","entities": [

{"id": "Room1","type": "Room","temperature": {"value": 21.2,"type": "Number" }},

{ "id": "Room2","type": "Room","temperature": { "value": 31.8, "type": "Number"}}

]}

http://fiware.github.io/specifications/ngsiv2/stable/ ( Apartado Batch Operations)

Page 42: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

42

7. Uso Avanzado: Filtrado de entidades (I)Tipos de filtros

Para la operación GET /v2/entities:

● Por tipo de entidad: GET <cb_host>:<cb_port>/v2/entities?type=Room

● Por ID: GET <cb_host>:<cb_port>/v2/entities?id=Room1,Room2

● Por patrón de ID (regex): GET <cb_host>:<cb_port>/v2/entities?idPattern=^Room[2-5]

● Por patrón de tipo (regex): GET <cb_host>:<cb_port>/v2/entities?typePattern=T[ABC]

● Por valor de atributo (q): GET <cb_host>:<cb_port>/v2/entities?q=temperature>25

● Por valor de metadata (mq): GET <cb_host>:<cb_port>/v2/entities?mq=temperature.avg>25

● Por ubicación geográfica

● Se pueden anidar varios filtros (como una condición AND)

Page 43: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

43

7. Uso Avanzado: Filtrado de entidades (II)Operadores

● Equal (==) Busca la coincidencia exacta. Se puede usar en combinación con:

○ Un sólo elemento: ?q=temperature==40

○ Valores separados por comas: ?q=color==black,red

○ Rangos: ?q=temperature==10..20

● Unequal (!=) Se pueden hacer búsquedas por elemento, valores separados o rango.

● Greater than (>)

● Less than (<)

● Greater or equal than (>=)

● Less or equal than (<=)

● Match pattern: (~=) Patron regex para string.

○ Ej: ?q=color~=ow. Encontraría los colores brown and yellow

http://fiware.github.io/specifications/ngsiv2/stable/ (Apartado Simple Query Language)

Page 44: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

44

7. Uso Avanzado: Datos geoespaciales

Tipos de atributos geospaciales

● geo:point

● geo:line

● geo:box

● geo:polygon

● geo:json

http://fiware.github.io/specifications/ngsiv2/stable/

(Apartado Geospatial properties of entities)

POST /v2/entities

{

"type": "City",

"id": "Madrid",

"position": {

"type": "geo:point",

"value": "40.418889, -3.691944"

}

}

POST /v2/entities

{

"type": "City",

"id": "Barcelona",

"position": {

"value": {

"type": "Point",

"coordinates": [2.186447514, 41.3763726]

},

"type": "geo:json"

}

}

Page 45: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

45

7. Uso Avanzado: Geoqueries● Georel: Identifica la relación espacial entre la referencia (geometry) y las entidades sobre las que se

va a hacer la búsqueda. Puede ser del tipo:

○ georel=near: Busca entidades a una determinada distancia. Soporta los modificadores:

■ maxDistance: Dentro del círculo

■ minDistance: Fuera del círculo

○ georel=coveredBy: Puntos dentro de un polígono

○ georel=intersects: Dos polígonos intersectan

○ georel=equals: Dos polígonos son idénticos

○ georel=disjoint: No intersectan

● Geometry: Es la referencia a la figura sobre la que se resuelve la query. Puede ser de tipo:

○ geometry=point: define un punto (posición geográfica)

○ geometry=line: define una línea

○ geometry=polygon: define un polígono

○ geometry=box: define un cuadrado delimitador

Ejemplo: &georel=coveredBy&geometry=polygon&coords=25.774,-80.190;18.466,-66.118;32.321,-64.757;25.774,-80.190

Page 46: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

46

7. Uso Avanzado: Geoqueries

Page 47: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

47

7. Uso Avanzado: Geoqueries

GET /v2/entities?georel=near;maxDistance:13500&geometry=point&coords=40.418889,-3691944

Page 48: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

48

7. Uso Avanzado: Geoqueries

GET /v2/entities?georel=near;minDistance:13500&geometry=point&coords=40.418889,-3691944

Page 49: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

49

7. Uso Avanzado: Soporte de fechas

Basado en ISO8601 y con un tipo de atributo reservado: DateTime

Permite hacer búsquedas por fechas:

GET /v2/entities?q=birthDate<1985-01-01T00:00:00

Las entidades y los atributos tienen fecha de modificación y

de creación. Se pueden consultar con las siguientes queries:

GET /v2/entities/myEntity?options=dateModified,dateCreated

GET /v2/entities/myEntity?attrs=dateModified,dateCreated

GET /v2/entities/myEntity?metadata=dateModified,dateCreated

Más detalles en: https://fiware-orion.readthedocs.io/en/master/user/ngsiv2_implementation_notes/index.html#datetime-support

POST /v2/entities…{"id": "John","birthDate": {"type": "DateTime","value": "1979-10-14T07:21:24.238Z"

}}

Ejemplo: entidad John, con atributo birthDate usando el tipo DateTime

Page 50: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

50

7. Uso Avanzado: Paginación

Cuando se tienen grandes conjuntos de datos, ayuda a dividir y obtener la información en diferentes

bloques/peticiones.

Cuatro parámetros:

● limit: Números de elementos por página (por defecto 20, máximo 1000)

● offset: Números de elementos a saltar (desde el principio)

● count (opcional): Devuelve sólo el número total de elementos de la petición

● orderBy (opcional): Atributos por los que se puede ordenar los resultados

○ Por defecto se ordenan por fecha de creación

○ Se pueden usar los atributos especiales dateCreated y dateModified

GET /v2/entities?limit=20&offset=0&orderBy=temp,!humidity

Page 51: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

51

7. Uso Avanzado: Proveedores de contextoApplication

Context Broker

Context Provider

1. registerContext(provider= )

db

2. query 3. query

4. data5. dataContext

Consumer

http://fiware.github.io/specifications/ngsiv2/stable/ (Apartado Registrations)

Page 52: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

52

Referencias

✓ Documentación de la plataforma Thinking Cities:

▪ https://thinking-cities.readthedocs.io/

✓ Modelos normalizados FIWARE

▪ https://fiware-datamodels.readthedocs.io/

✓ Especificación FIWARE NGSIv2

▪ http://fiware.github.io/specifications/ngsiv2/stable/

✓ Orion Context Broker

▪ https://fiware-orion.readthedocs.io/

✓ IoT Agent UL2.0

▪ https://fiware-iotagent-ul.readthedocs.io/

Page 53: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

53

ANEXOS

Page 54: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

54

HTTP

Códigos de respuesta1xx: Respuestas informativas. Indica que la petición ha sido recibida y se está procesando.2xx: Respuestas correctas. Indica que la petición ha sido procesada correctamente.3xx: Respuestas de redirección. Indica que el cliente necesita realizar más acciones para finalizar la petición.4xx: Errores causados por el cliente. Indica que ha habido un error en el procesado de la petición a causa de que el cliente ha hecho algo mal.5xx: Errores causados por el servidor. Indica que ha habido un error en el procesado de la petición a causa de un fallo en el servidor.

Método Acción

GET Obtiene un recurso

POST Envía datos por el cuerpo

PUT Sube un recurso o fichero (más eficiente

que post)

DELETE Elimina un recurso

Page 55: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

55

HTTP

Page 56: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

56

CONTEXT BROKER (NGSI)

IoT Agent Manager

IoT Agent UL 2.0

…IoT Agent JSON

• Crear nuevo IoT Agent (con otro protocolo)• Provisionar configuración dispositivo lógico• Consultar dispositivos provisionados

Puerto 8088

device_ID: sensor1

Protocolo: UL 2.0

Transporte: HTTP

Entidad: entity1

Parámetros → atributos:

t → temperature

h→ humidity

…Puerto 8085

UL_apikey

Payload:

t|25#h|80

device_ID: sensor2

Protocolo: JSON

Transporte: HTTP

Entidad: entity2

Parámetros → atributos:

temp → temperature

humid → humidity

sensor1 sensor2

Puerto 8185JSON_apikey

Payload:

{

"temp": 4,

"humid": 31.5

}

{

"id": "entity1",

"type": "myType",

"temperature": {

"type": "Number",

"value": 25

},

"humidity": {

"type": "Number",

"value": 80

}

}

{

"id": "entity2",

"type": "myType",

"temperature": {

"type": "Number",

"value": 4

},

"humidity": {

"type": "Number",

"value": 31.5

}

}

HTTP / MQTT

IDAS

Page 57: PROYECTO SMART CITY UMA€¦ · 1. Intro: Relación con FIWARE Context Broker IoT Agents STH Portal de Configuración Modelo multiusuario CEP PEP Proxy OAuth Server IDM Plugins extra

57

Plataforma UMA: Datos de acceso

Servicio Host Puerto

Identity Manager (IDM) https://150.214.58.178/ 6001

Context Broker* (API NGSI) https://150.214.58.178/ 2026

IoT Agent Manager https://150.214.58.178/ 9082

IoT Agent Ultralight 2.0 https://150.214.58.178/ 7896

* Realmente lo que atacamos en el puerto 2026 es el PEP Proxy