+ All Categories
Home > Software > FIWARE Internet of Things

FIWARE Internet of Things

Date post: 07-Aug-2015
Category:
Upload: miguel-gonzalez
View: 1,103 times
Download: 0 times
Share this document with a friend
Popular Tags:
13
Pasquale Vitale Engineering Ingegneria Informatica FIWARE Internet of Things
Transcript

Pasquale VitaleEngineering Ingegneria Informatica

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

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

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

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

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”

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

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” }

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” 

} }

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‘

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])

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\“ />“} 

Thanks!Thanks!


Recommended