fiware iot proposal & community

41
FIWARE IoT Proposal & Community Pablo C. García Gerente de Investigación, Chief Architect @pc_garcia

Upload: tidchile

Post on 07-Aug-2015

201 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Fiware IoT Proposal & Community

FIWARE IoT Proposal & CommunityPablo C. GarcíaGerente de Investigación, Chief Architect@pc_garcia

Page 2: Fiware IoT Proposal & Community

FIWARE (IoT) Target: Developers

ContextBroker

App Logic @FIWARE-Cloud

Desktop/Mobile/TabletUser Interface

Web 3D GE / Advanced UIWirecloud GE / Dashboards

OAuth2.0

SANTANDER

SMARTSPACESSEVILLA

2) IoT Providers. Pretty Heterogeneous solutions/skills.• An incremental approach. Public/Private instances.• KISS philosophy for most (web)developers.• Advanced IoT architecture, e.g. for IoT Advanced Devel.

1) IoT Consumers. Normally not just IoT.• A single point, API & Protocol for IoT, OpenData, etc.• Context: Data Entities + Data Entities events.• A Public & Secured Ecosystem at FIWARE Lab

MultiMediaEvents

ComplexEvent Processing

IoT

SmartcitiesOpenData

BigDataAnalytics

Page 3: Fiware IoT Proposal & Community

IoT Consumers: Northbound Single Point (API/Protocol): ContextBroker

3

Developers need to know/discover the Ecosystem conventions. Examples:

Developers may:•Query an Entity (whole set or specific attributes) or Subscribe to changes of attributes of Entities.•Discover all Entities (entity_IDs) or all Entities with a specific “type”.•Discover all Attributes of an specific Entity (entity_ID).

Full List of FIWARE Lab (Global Context Broker) conventions (section 3.5):https://forge.fi-ware.org/plugins/mediawiki/wiki/fiware/index.php/Publish/Subscribe_Broker_-_Orion_Context_Broker_-_User_and_Programmers_Guide

My FIWARE-App

ContextBroker

OAuth2.0

OMA NGSI10 - QueryContext

OMA NGSI10 - SubscribeContext

(type, entity_ID, attributes)

Entities

Page 4: Fiware IoT Proposal & Community

IoT Providers: Connect any “Thing”/IoT-System to FIWARE Lab

4

ContextBroker

OAuth2.0

Your IoT IoT

Backend

Gateway GEs Backend GEs

NGSI9/10

A) NGSI Agent

B) IoT BE (IDAS/SBC -> IoT Agents)

C) Advanced Scenarios

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

NGSI

PropietaryZigbeeZwave

CoAP/MTRunnerETSIM2M

CoAP/LWM2M

Page 5: Fiware IoT Proposal & Community

FIWARE IoT: Most Common Scenarios (A & B)

5

ContextBroker

App Logic FI-WARE Cloud

UserInterface

DashboardsUI Prototyping

OAuth2.0

SANTANDER

SEVILLA

IDAS Portal/ADMIN API

IDASSBCSMARTSPACES

Commands

Commands

(Future Delivery)CommandsA

BB

IDASSBC

Commands

(Future Delivery)

Page 6: Fiware IoT Proposal & Community

FIWARE IoT: Advanced Scenario (C)

6

http://wiki.fi-ware.org/Internet_of_Things_(IoT)_Services_Enablement_Architecture

Page 7: Fiware IoT Proposal & Community

Success Stories: FIWARE Community Kick off @ CPE’13

7

1st Prize………….SmartAdsComplete context-sensitive Ads solution developed in just 4 days & nights.

Neelie Kroes FIWARE Lab LaunchHackathon + Challenges Announcements

Massive, > 6K developersMainly young entrepreneurs

TalentDay&Night

Involving developers, debugging, improving training sessions

Page 8: Fiware IoT Proposal & Community

Success Stories: Smartcities IoT Data & SMEs involvement

8

Smartcity resources exploitation, involve local market & public policies makers

1st Prize………….MagicBox…………………………………………….….…..…TVs displaying Smartcities & Smartspaces.2nd Prize………….FI-BOT……………………………………………………..….…Robotics exploiting opendata & sensors.3rd Prize.…………OpenAlerts……..…..............................................Interfaces for citizens (mobile If-Then App). 4th Prize………….Traffic Heatmap…..............................................Traffic routing based on city real-time Info.

Winning Teams

33 succeeded building a product-like working App (of 77 registered developers)

Several participants own a Start-up & keep on using FIWARE

Page 9: Fiware IoT Proposal & Community

Success Stories: Emerging IoT Trends fast adoption

9

iBeacons in FI-WARE by Context Team.

•3rd prize within SmartBusiness FIWARE challenge.(Jan 2014 @ CPBR7 Sao Paulo)

Page 10: Fiware IoT Proposal & Community

FIWARE Lab OpenData/IoT Resources Ecosystem is growing fast

10

SANTANDER

SEVILLA

MALAGA

TRENTO

Page 11: Fiware IoT Proposal & Community

Connect your IoT to FIWARE Lab: IDAS/SBC Ultralight2.0 (Option B.1)

For testing use:- Service: OpenIoT

Step 1 – Create ModelStep 2 – Create Asset (device)Step 3 – Send MeasurementsStep 4 – Send Commands

IDAS/SBC Testing details: •IPv4: 130.206.80.47 •IPv6: 2001:720:1514:80::47•Devices API (UL2.0). Port: 8002 (IPv4)•ADMIN API. Port: 5371 (IPv4/IPv6)•Testing Service: OpenIoT•APIKEY: 4jggokgpepnvsb2uv4s40d59ov•Service URL: <SBC_HOST>/m2m/v2/services/OpenIoT

Page 12: Fiware IoT Proposal & Community

Connect your IoT to FIWARE Lab: IDAS Ultralight2.0 (B.1)

Step 1 – Create Model(REST ADMIN API)

Payload JSON Format: - Check IDAS documentsAt FIWARE Catalogue.- TOKEN = FIWARE Oauth Token.- Measurements have an “alias”. E.g: Temperature=t

“Open IoT” example Models:•SENSOR_TEMP•SENSOR_HUM•SENSOR_LUM•SENSOR_MOV•SENSOR_ZWAVE_4IN1

HTTP POST: http://130.206.80.47:5371/m2m/v2/services/OpenIoT/models/Headers: {'content-type': 'application/json’; 'X-Auth-Token' : [TOKEN]}Payload:{ "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 13: Fiware IoT Proposal & Community

Connect your IoT to FIWARE Lab: IDAS Ultralight2.0 (B.1)

Step 2 – Create AssetASSET = LOGICAL DEVICE(REST ADMIN API)

Payload JSON Format: - Check IDAS documentsAt FIWARE Catalogue.- TOKEN = FIWARE Oauth Token.- Must reuse an existing Model.- DEV_ID = 1st “name” - ASSET_ID = 2nd (asset) “name”

HTTP POST: http://130.206.80.47:5371/m2m/v2/services/OpenIoT/assets/ Headers: {'content-type': 'application/json’; 'X-Auth-Token' : [TOKEN]}Payload:{ "name": ”gateway02:Arduino01-Temp-Garden", "model": "SENSOR_TEMP", "asset": { "name": ”TEMP-Garden-Madrid28027", "description": "asset model protocol” } }

IDASIDASDevice ID

ASSET ID

Devices API

ADMIN API

Page 14: Fiware IoT Proposal & Community

Connect your IoT to FIWARE Lab: IDAS Ultralight2.0 (B.1)

Step 3 – Send Measurements(UL2.0 DEVICE API)

Payload JSON Format: - TOKEN = FIWARE Oauth Token.- DEV_ID = Asset name (Step 2).

* Read Last Measurements:HTTP GET:/m2m/v2/services/OpenIoT/assets/[ASSET_ID]

HTTP POST: http://130.206.80.47:8002/d?k=[APIKEY]&i=[DEV_ID]http://130.206.80.47:8002/d?k=4jggokgpepnvsb2uv4s40d59ov&i=GW02:Arduino01-Temp-Garden

Headers: {'content-type': 'application/text’; 'X-Auth-Token' : [TOKEN]}Payload: ‘ t|25‘

- Sending multiple measurements with one request:

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 15: Fiware IoT Proposal & Community

Connect your IoT to FIWARE Lab: IDAS Ultralight2.0 (B.1)

Step 4 – Sending Commands to Devices

Page 16: Fiware IoT Proposal & Community

Connect your IoT to FIWARE Lab: IDAS Ultralight2.0 (B.1)

Step 4.2 - Send Commands via IDAS REST ADMIN API

Step 4.1a (PUSH)– Define Command & Register Commands URL

HTTP POST: http://130.206.80.47:5371/m2m/v2/services/[SERVICE]/assets/[ASSET_ID]/command

Headers: {'content-type': 'application/json’; 'X-Auth-Token' : [TOKEN]}Payload:{"name": ” [COMMAND]", "params": [ { "name":” [PARAMETER]", "value": ” [VALUE]" } ] }

HTTP PUT: http://130.206.80.47:5371/m2m/v2/services/[SERVICE]/assets/[ASSET_ID] Headers: {'content-type': 'application/json’; 'X-Auth-Token' : [TOKEN]}Payload:{ "commands" : [ { "name" : "RawCommand”, "parameters" : [{ "name" : "Command", "type" : "Text", "phenomenon" : "urn:x-ogc:def:phenomenon:IDAS:1.0:unknown" }]}],}

Page 17: Fiware IoT Proposal & Community

Connect your IoT to FIWARE Lab: IDAS Ultralight2.0 (B.1)

Step 4.2 - Send Commands via IDAS REST ADMIN API

Step 4.1b (POOLING) - Define Command & Get Commands from Device

HTTP GET: http://130.206.80.47:8002/d?k=[APIKEY]&i=[DEV_ID]

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

HTTP POST: http://130.206.80.47:5371/m2m/v2/services/[SERVICE]/assets/[ASSET_ID]/command

Headers: {'content-type': 'application/json’; 'X-Auth-Token' : [TOKEN]}Payload:{"name": ” [COMMAND]", "params": [ { "name":” [PARAMETER]", "value": ” [VALUE]" } ] }

HTTP PUT: http://130.206.80.47:5371/m2m/v2/services/[SERVICE]/assets/[ASSET_ID] Headers: {'content-type': 'application/json’; 'X-Auth-Token' : [TOKEN]}Payload:{ "commands" : [ { "name" : ” [COMMAND]”, "parameters" : [{ "name" : ” [PARAMETER]", "type" : "Text", "phenomenon" : "urn:x-ogc:def:phenomenon:IDAS:1.0:unknown" }]}],}

Page 18: Fiware IoT Proposal & Community

Connect your IoT to FIWARE Lab: More IDAS Southbound Options (B.2)

Option B.2: MQTT3.1•SW Ready, manuals coming up soon.•Devices publish measures as MQTT clients.•Devices subscribe for commands at SBC (MQTT broker).

Receiving Commands•Collect pending Commands: <api-key>/<device_id>/cmdget•Receive Commands: <api-key>/<device_id>/cmd/+

Commands received:•Topic: <api-key>/<device_id>/cmd/<new_topic_level>•Payload: cmdid|<cmid>#<param1>|<value1>…

Message formatting aligned to UL2.0•Topic: <api-key>/</device-id>/<alias> or <api-key>/</device-id>/multi•Payload: <measure_value> or <alias1>|<value1>#<alias2>|<value2>..

SBC

Page 19: Fiware IoT Proposal & Community

Connect your IoT to FIWARE Lab: More IDAS Southbound Options (B.3)

Option B.3: OMA-LWM2M/CoAP.•Adopted by OneM2M•Compatible with ETSI-M2M architecture •Planned for JAN 2015.

Extra tools: FIGWAY https://github.com/telefonicaid/fiware-figway/

New Release (Nov 2014):•Coded in Python for RaspberryPI, MACOS & Linux.•UL2.0 Sensors via IDAS/SBC (UL2.0 REST API)•Tools to access a ContextBroker.

Page 20: Fiware IoT Proposal & Community

Evolution: IDAS/SBC.26 versus IoT Agents (Jan’2015)

•Monolithic vs Modular -> Easier Installation, Cloud Blueprints•Coded in C++ vs Coded in any language -> Higher flexibility •Extensibility via C++ plugins vs a new IoT Agent -> Easier to get contribs/extensions•Scalability by design

FIWARE Context Broker

IoT Agent-1

IoT Agent-2

IoT Agent-n

IoT Agent Manager

create/monitor

FIWARE Backend IoTDevice Management

OMA NGSI API (northbound interface)

(southbound interfaces)MQTTETSI M2M OMA

LWM2M/IETF CoAP

Page 21: Fiware IoT Proposal & Community

Thanks!Thanks!

Page 22: Fiware IoT Proposal & Community

Annex I: FIGWAY – Architecture of FIWARE Lab IoT scenario

Testing

Page 23: Fiware IoT Proposal & Community

Annex I: FIGWAY - Configuration

figway/python/config.ini

[user]# Please, configure here your username at FIWARE Cloud and a valid Oauth2.0 TOKEN for your user (you can use get_token.py to obtain a valid TOKEN). username=token=

[local]#Choose here your System type. Examples: RaspberryPI, MACOSX, Linux, ...host_type=RaspberryPI# Here please add a unique identifier for you. Suggestion: the 3 lower hexa bytes of your Ethernet MAC. E.g. 79:ed:af# Also you may use your e-mail address.host_id=3F:2A:1A

Page 24: Fiware IoT Proposal & Community

Annex I: FIGWAY – Registering a (UL2.0I) Sensor

SensorsUL20/> python RegisterDevice.py [DEV_MODEL] [DEV NAME] [ASSET]

> python RegisterDevice.py SENSOR_TEMP Sensor1 Temperature-Madrid28001

* YOUR DEVICE details:*** DEVICE ID = 3F:2A:1A:Sensor2*** ASSET ID = 3F:2A:1A:Temperature-Madrid28002

* This device will be sent to the ContextBroker with the following configuration*** Entity ID = SENSOR_TEMP.3F:2A:1A:Temperature-Madrid28001*** Entity Type = Device*** FIWARE_SERVICE = OpenIoT…* Status Code: 201* Response:

Page 25: Fiware IoT Proposal & Community

Annex I: FIGWAY - Sending Sensor Observations/Measurements

ContextBroker/> python SendObservation.py [DEV_ID] ‘[alias1|value1]’

> python SendObservation.py 3F:2A:1A:Sensor1 't|26'

* Asking to http://130.206.80.47:8002/d?k=4jggokgpepnvsb2uv4s40d59ov&i=3F:2A:1A:Sensor1

* Headers: {'content-type': 'application/text', 'X-Auth-Token’: 'Zvcg**********************************************************************qvD6g'}* Sending PAYLOAD: t|26...* Status Code: 200* Response:

Page 26: Fiware IoT Proposal & Community

Annex I: FIGWAY – Check observation was correctly sent

SensorsUL20/> python ReadObservation.py [DEV_ID]

> Python ReadDeviceStatus.py 3F:2A:1A:Temperature-Madrid28001

{ "data": { "status": "Active", "isConcentrator": false, "name": "3F:2A:1A:Sensor1", "registrationTime": "2014-11-28T12:59:53Z", "creationTime": "2014-11-28T12:59:53Z", "commands": [], "sensorData": [ { "ms": { "p": "Temperature", "u": "celsius", "v": 26.0 },

Page 27: Fiware IoT Proposal & Community

Annex I: FIGWAY – Read your Sensor data at the ContextBroker

ContextBroker/> python GetEntity.py [ENTITY_ID]

> python GetEntity.py SENSOR_TEMP.3F:2A:1A:Temperature-Madrid28001

*Asking to http://130.206.80.47:1026/ngsi10/queryContext* Headers: {'Fiware-Service': 'OpenIoT', 'content-type': 'application/json', 'accept': 'application/json', 'X-Auth-Token': 'xn6V**********************************************************************kDwxw'}

* Response: … "contextElement" : { "type" : "device", "isPattern" : "false", "id" : "SENSOR_TEMP.3F:2A:1A:Temperature-Madrid28001", "attributes" : [… "name" : "Temperature", "type" : "Quantity", "value" : ”26", "metadatas" : [

Page 28: Fiware IoT Proposal & Community

Annex I: FIGWAY – What if I want to create other kind of sensors?

SensorsUL20/> python DiscoverModels.py

> Python DiscoverModels.py

* Asking to http://130.206.80.47:5371/m2m/v2/services/OpenIoT/models* Headers: {'content-type': 'application/json', 'X-Auth-Token': 'Zvcg**********************************************************************qvD6g'}…* Status Code: 200* Total Number of Models: 8

* Full List of Models:SENSOR_HUMSENSOR_LUMSENSOR_MOVSENSOR_TEMPSENSOR_TEMP_test2SENSOR_ZWAVE_4IN1

Page 29: Fiware IoT Proposal & Community

Annex I: FIGWAY – What if I want to create other kind of sensors? (II)

SensorsUL20/> python GetModel.py [DEV_TYPE]

> python GetModel.py SENSOR_TEMP

** Asking to http://130.206.80.47:5371/m2m/v2/services/OpenIoT/models/SENSOR_TEMP* Headers: {'content-type': 'application/json', 'X-Auth-Token': 'Zvcg**********************************************************************qvD6g'}…* Status Code: 200{"capabilities": [ { "format": { "alias": "t", "type": "Quantity", "name": "Temperature", "uom": "celsius", "phenomenon": "urn:x-ogc:def:phenomenon:IDAS:1.0:temperature" },

Page 30: Fiware IoT Proposal & Community

Annex I: FIGWAY – What if I want to create other kind of sensors? (III)

SensorsUL20/> python CreateModel.py [MODEL_FILE]

> python CreateModel.py SENSOR_TEMP

** Asking to http://130.206.80.47:5371/m2m/v2/services/OpenIoT/models/SENSOR_TEMP* Headers: {'content-type': 'application/json', 'X-Auth-Token': 'Zvcg**********************************************************************qvD6g'}…* Status Code: 201

Page 31: Fiware IoT Proposal & Community

Annex I: FIGWAY – What if I want to connect Actuators?

SensorsUL20/> python CreateModel.py SWITCH

{ "name": "SWITCH", "commands" : [ { "name" : "RawCommand",

"parameters" : [{ "name" : "Command", "type" : "Text", "phenomenon" : "urn:x-ogc:def:phenomenon:IDAS:1.0:unknown" }] } ], "capabilities": [ …"protocol": "ul-2_0" }

Page 32: Fiware IoT Proposal & Community

Annex I: FIGWAY – What if I want to connect Actuators? (II)

SensorsUL20/> python RegisterDevice.py SWITCH lamp3 lamp3-Madrid

* YOUR DEVICE details:*** DEVICE ID = 3F:2A:1A:lamp3*** ASSET ID = 3F:2A:1A:lamp3-Madrid

* This device will be sent to the ContextBroker with the following configuration*** Entity ID = SWITCH.3F:2A:1A:lamp3-Madrid*** Entity Type = Device*** FIWARE_SERVICE = OpenIoT

* Status Code: 201

Page 33: Fiware IoT Proposal & Community

Annex I: FIGWAY – What if I want to connect Actuators? (III)

python SendCommand.py [ASSET_ID] RawCommand Command ‘[COMMAND]‘

> python SendCommand.py 3F:2A:1A:lamp3-Madrid RawCommand Command 'Set 95-10-23'

* Asking to http://130.206.80.47:5371/m2m/v2/services/OpenIoT/assets/3F:2A:1A:lamp3-Madrid/command* Headers: {'content-type': 'application/json', 'X-Auth-Token': 'xn6V**********************************************************************kDwxw'}* Sending PAYLOAD: {"name": "RawCommand", "params": [ { "name":"Command", "value": "Set 95-10-23" } ] }

...

* Status Code: 200* Response: {"commandResultML":"<commandResultML>Pending<\/commandResultML>"}

Page 34: Fiware IoT Proposal & Community

Annex I: FIGWAY – What if I want to connect Actuators (IV)

python GetPoolingCommands.py [ASSET_ID]

> python GetPoolingCommands.py 3F:2A:1A:lamp3

* Asking to http://130.206.80.47:8002/d?k=4jggokgpepnvsb2uv4s40d59ov&i=3F:2A:1A:lamp3* Headers: {'content-type': 'application/text', 'X-Auth-Token': 'xn6V**********************************************************************kDwxw'}* Sending PAYLOAD: ...* Status Code: 200* Response: 3F:2A:1A:lamp3@RawCommand|Command=Set 95-10-23

Page 35: Fiware IoT Proposal & Community

Annex I: FIGWAY – What if I want to connect Actuators (V)

Python DebugCommand.py [ASSET_ID

> python DebugCommand.py 3F:2A:1A:lamp3-Madrid

* Asking to http://130.206.80.47:5371/m2m/v2/services/OpenIoT/assets/3F:2A:1A:lamp3-Madrid/command* Headers: {'content-type': 'application/json', 'X-Auth-Token': 'xn6V**********************************************************************kDwxw'}* Sending PAYLOAD:

...

* Status Code: 200* Response: {"count":1,"data":[{"command_id":"3F:2A:1A:lamp3@RawCommand","timestamp":"2014-12-02T15:21:08.313135+01:00","status":"DELIVERED"}]}

Page 36: Fiware IoT Proposal & Community

Thanks!Thanks!

Page 37: Fiware IoT Proposal & Community

Thanks!

Annex II: FIGWAY – Architecture of FIWARE Lab Exercises scenario

Exercises

Page 38: Fiware IoT Proposal & Community

Annex II: FIGWAY Exercises

Excersise 1

Goal: Create a Sensor Model for SmartMining.

Description:

Crete one Model of sensor related to Mining activities within the “OpenIoT” service at idas4.

Duration: 15 Minutes.

Page 39: Fiware IoT Proposal & Community

Annex II: FIGWAY Exercises

Excersise 2

Goal: Create 2 instances of virtual SmartMining Sensors

Description:

Create two Sensors instances based on the model created in exercise one, within “OpenIoT” service at idas4.Check out how the entity has been created at the ContextBroker Orion4.

Duration: 15 Minutes.

Page 40: Fiware IoT Proposal & Community

Annex II: FIGWAY Exercises

Excersise 3

Goal: Send Observations and Read data at the ContextBroker

Description:

Send Observations for the two sensors and check they are correctly received at the ContextBroker.

Optional: create a script to send different observations every minute Optional 2: create a subscription to receive notifications from the ContextBroker.

Duration: 15min (+10 min)(+15 min)

Page 41: Fiware IoT Proposal & Community

Annex II: FIGWAY Exercises

Excersise 4

Goal: Create an Actuator (Pooling mode) for SmartMining activities.

Description:

Create an SmartMining actuator device Model and one virtual instance within “OpenIoT” service at idas4.Check the entity created at ContextBroker orion4.Send Commands using idas4 ADMIN API. Check the Commands queue for the created asset/device. Read the Command from the virtual device host and check the Commands queue again.

Duration: 20min