fiware internet of things

13
Pasquale Vitale Engineering Ingegneria Informatica FIWARE Internet of Things

Upload: miguel-garcia-gonzalez

Post on 17-Jul-2015

128 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: FIWARE Internet of Things

Pasquale VitaleEngineering Ingegneria Informatica

FIWARE Internet of Things

Page 2: FIWARE Internet of Things

Connection to the Internet of Things

“Things” mean sensors/actuators

it collects all observations and translates them in data

IoT manages the context information from:

external systems

end users interacting with your application using some web portal

IDAS is an implementation of FIWARE IoT Backend Device Management GE

to connect to Context Broker GE

it translates observations into NGSI events

Page 3: FIWARE Internet of Things

FIWARE IoT Backend Device Management

FIWARE Context Broker

IoT Agent-1

IoTAgent-2

IoT Agent-n

IoT AgentManager

create/monitor

FIWARE Backend IoTDevice Management

OMA NGSI API (northbound interface)

(southbound interfaces)

MQTTETSI M2M IETF CoAPEach IoT Agent handles interaction with a given set of devices

Page 4: FIWARE Internet of Things

Connect any thing

Three way to connect to Context Broker

ContextBroker

Your IoTIoT

Backend

Gateway GEs Backend GEs

NGSI9/10

B) IoT Backend (IDAS/SBC)

SML, UL2.0, MQTT, ETSIM2M, CoAP/OMA‐LW

NGSI

ProprietaryZigbeeZwave

CoAP/MTRunnerETSIM2M

CoAP/LWM2M

OAuth2.0

Page 5: FIWARE Internet of Things

How to read measures captured from IoT devices

IDAS translates information into NGSI and sends to a Context Broker.

Example - connection of device using UltraLight 2.0 protocol:

Step 1 - know the details of the IDAS (IoT Agent)

Step 2 - create a model for your IoT device

Step 3 - create (register) an asset/device for your IoT device

Step 4 - send observations related to your IoT device

Step 5 - reading measurements sent by your IoT device

Page 6: FIWARE Internet of Things

Connection to the Internet of Things – Step 1

know the details of the IDAS (IoT Agent) you will be sending the measurements to

IP Address (<idas_host>): in this case 130.206.80.47

REST Admin Port (<idas_admin_port>): the port used to access the administrative API of IDAS, 5073

REST Devices Port (<idas_ul20_port>): the port used by your IoT devices to send observations or request commands, in this case 8002

Service (<service>): IDAS is able to manage different tenants, for instance for different cities or smartspaces. You can always use our “OpenIoT” service for testing, as we actually do in this example

APIKEY (<apikey>): This is a shared secret your IoT devices need to know prior to communicate to IDAS regarding a specific Service. Each service/tenant has its own APIKEY, in the case of the testing service “OpenIoT” it is the string “4jggokgpepnvsb2uv4s40d59ov”

Page 7: FIWARE Internet of Things

Connection to the Internet of Things – Step 2

Create a Model for your IoT device

In the OpenIoT model there are:

SENSOR_TEMP: for a generic Temperature sensor

SENSOR_HUM: for a generic Humidity sensor

SENSOR_LUM: for a generic Illuminance sensor

SENSOR_MOV: for a generic Presence sensor

SENSOR_ZWAVE_4IN1: for the specific Everspring Zwave 4IN1 (Temperature, Humidity, Light, Presence) sensor

Page 8: FIWARE Internet of Things

Connection to the Internet of Things – Step 2

Create an own Model is pretty simple (use REST ADMIN API)

Payload JSON Format:

Check IDAS doc in the Catalogue

TOKEN = FIWARE Oauth Token

Measurements have an “alias”

e.g: Temperature = t

POST <idas_host>:<idas_admin_port>/m2m/v2/services/<service>/models/(Example: POST:  http://130.206.80.47:5073/m2m/v2/services/OpenIoT/models/)

Headers: {'content‐type': 'application/json’; 'X‐Auth‐Token' : <Oauth2.0 TOKEN>}

{  "name": "SENSOR_TEMP", "capabilities" : [  { "name" : "Temperature", "property" : "temperature", "format" : { "name" : "Temperature", "alias" : "t" , "phenomenon": "urn:x‐ogc:def:phenomenon:IDAS:1.0:temperature", "type" : "Quantity", "uom": "celsius” 

}   }  ], "protocol": "ul‐2_0” }

Page 9: FIWARE Internet of Things

Connection to the Internet of Things – Step 3

Create (register) an asset/device for your IoT device (use REST ADMIN API)

Payload JSON Format:

Check IDAS doc in the Catalogue

TOKEN = FIWARE Oauth Token

Must reuse an existing model

DEV_ID = 1st “name”

ASSET_ID = 2nd (asset) “name”

POST <idas_host>:<idas_admin_port>/m2m/v2/services/<service>/assets/ (Example: POST:  http://130.206.80.47:5371/m2m/v2/services/OpenIoT/assets/)

Headers: {'content‐type': 'application/json’; 'X‐Auth‐Token' : <Oauth2.0 TOKEN>}

{  "name": "RPI:79:ed:af:zwave:temp:1", "model": "SENSOR_TEMP", "asset": {  "name": "TEMP‐LivingRoom", "description": "asset model protocol” 

} }

Page 10: FIWARE Internet of Things

Connection to the Internet of Things – Step 4

Send observations from IoT device (use UL2.0 DEVICE API)

Payload JSON Format:

TOKEN = FIWARE Oauth Token

DEV_ID = asset name (step 3)

POST: http://130.206.80.47:8002/d?k=[APIKEY]&i=[DEV_ID]http://130.206.80.47:8002/d?k=4jggokgpepnvsb2uv4s40d59ov&i=RPI:79:ed:af:zwave:temp:1 

Headers: {'content‐type': 'application/text’; 'X‐Auth‐Token' : [TOKEN]}

Payload: ‘ t|25‘

Sending multiple measurements with one request (4IN1):POST:http://130.206.80.47:8002/d?k=4jggokgpepnvsb2uv4s40d59ov&i=RPI:79:ed:af:4IN1‐Room Headers: {'content‐type': 'application/text’; 'X‐Auth‐Token' : [TOKEN]}Payload: ‘t|23#h|80#l|95#m|Quiet‘

Page 11: FIWARE Internet of Things

Connection to the Internet of Things – Step 5

Read measurements sent by your IoT device

Use NGSI API to read NSGI entity

Entity ID = <asset_name> (TEMP-LivingRoom)

Entity Type = Sensor

Attributes = phenomena (Temperature, Humidity, Light, Presence)

GET <idas_host>:<idas_admin_port>/m2m/v2/services/<service>/assets/ (Example: GET:  http://130.206.80.47:5371/m2m/v2/services/OpenIoT/assets/[ASSET_ID])

Page 12: FIWARE Internet of Things

How to act upon IoT devices

Send commands to device:

register command URL (PUSH)

command = true to know what attribute is related

get commands from device (POOLING)

HTTP POST body can be empty or containing a measure

send commands via IDAS ADMIN API

Command XML can be escaped when used in REST API

PUT: <sbc_host>/m2m/v2/services/WorkshopSBC/assets/AssetSemaphoreDemo

Headers: {'content‐type': 'application/json’}

{  "DeviceProps": {  "commandURL": "http://movistarfoto.tid.es:80/CommandSimulator/ping", "command": "true","manufacturer": "Test Manufacturer","model": "A123","serialNumber": "123456","version": "1.0",

} }

GET or POST: <idas_host:8002/d?k=5qmnuj9du3qOr3slifhvqgkuif&i=SemaphoreDemo&ip=http://movistarfoto.tid.es:80/CommandSimulator/ping

tm|32.3

POST: <sbc_host>/m2m/v2/services/WorkshopSBC/assets/AssetSemaphoreDemo/command

{ “commandXML": “<paid:command name=\“ping\“ />“} 

Page 13: FIWARE Internet of Things

Thanks!Thanks!