FIWARE (https://www.fiware.org) is a collection of well-integrated Open Source tools (e.g. OpenStack, Hadoop, Docker, ...) that provides a set of RESTful APIs that allows for easy development of cloud-based applications. Haven't you yet heard about it? Sit down and enjoy the ride! The talk will present FIWARE main APIs and discuss a small example of FIWARE-based application for context-aware data management.
1. MILAN 20/21.11.2015
FIWARE Primer
Learn FIWARE in 60 Minutes
Federico M. Facca
CREATE-NET. FIWARE Evangelist
federico.facca@create-net.org, @chicco785 (twitter)
6. FIWARE Platform
An OpenStack-based cloud platform that allows the easy deployment and
composition of FIWARE services to create new applications
7. FIWARE Lab Nodes
16 FIWARE Lab Nodes
• Currently 16 nodes in Europe providing
up to 3000+ cores, 6TB+ Ram, 750TB+
HD
• 1 node in Mexico providing 1200+ cores
• 1 node in Brazil is being deployed in
these days
…and more to follow!
• Discussions with several European
regions and with Brazil and Chile already
started
• Discussions with other regions and
countries with high potential
• Open Call deadline on 16th November
8. FIWARE Smart Cities: Santander
7
Real-time open data coming from large
deployment of sensors (4500 IoT
devices, 150 mobile sensor units, 2500
RFIDs) offered through standard FI-
WARE APIs
Open data sets captured from sensors
since August 2013 uploaded on Big Data
platform and ready for analysis
Reference FI-WARE application
examples available (e.g. Management of
Parque de las Llamas public lighting)
60+ cities from 12 countries joined the Open and Agile
Smart Cities (OASC) initative commiting to adopt common
principles:
•Open APIs
•Standard Data Models
•Open Data/APIs publication platform
•Driven by implementation
14. Common Authorization, Access Control
and Privacy management framework for
all FIWARE GE interfaces
Authorization, Access Control framework in the
short term
Privacy Management capabilities to be
integrated next
13
15. Creating your identity in FIWARE
Access the Account Portal and click in “Sign Up” option
14
16. Sending Protected Requests to a
FIWARE Service
Authentication Example
GET /GE_URL_path HTTP/1.1
Host: GE_hostname
X-Auth-Token: access_token
Secure your backend
Install PEP Proxy
• git clone https://github.com/ging/fi‐ware-
pep‐proxy.git
• cd fi‐ware‐pep‐proxy/
npm install
• //Hostname to forward authenticated requests
config.app_host = 'www.google.es';
//Port where the HTTP server is running
config.app_port = '80';
• sudo node server
15
17. Support cloud native applications
development using cutting edge cloud
technologies
16
OpenStack-based IaaS to provide computing
and storage capacity across multiple data
centers
Docker-based PaaS to deploy and compose
scalable applications
18. Deploying FIWARE GEs on the FIWARE
Lab (using a Virtual Machine)
Launch a GE from the cloud portal
(http://cloud.lab.fiware.org)
• Click on images
• Launch the selected GE
Configure the VM
• Set flavor
• Set security groups
• Set network
17
19. Deploying FIWARE GEs on the FIWARE
Lab (using Docker Compose)
Configure the Lab
• Create a security group “docker-
machine-sg” with ports 2376 and 22
open
• Allocate at least one floating IP to
your project.
• Take a look a the VM images that
are used to when creating a docker
host.
Set-up docker on your local
workstation
• install docker
$ wget -qO- https://get.docker.com/ | sh
• install docker machine
$ curl -L
https://github.com/docker/machine/releases/download/v0.5.
0/docker-machine_linux-amd64.zip >machine.zip &&
unzip machine.zip && rm machine.zip && mv docker-
machine* /usr/local/bin
Set-up a docker machine
• Set Openstack environment variables
>export OS_REGION_NAME='Spain2‘
>export OS_TENANT_NAME='john-smith cloud'
>export OS_USERNAME='jsmith@gmail.com''
>export OS_PASSWORD='secret''
>export OS_AUTH_URL='http://cloud.lab.fi-ware.org:4730/v2.0/'
>export OS_AUTH_STRATEGY='keystone‘
• Create docker machine
>docker-machine create -d openstack --openstack-flavor-id="2" --
openstack-image-name="Ubuntu Server 14.04.1 (x64)" --
openstack-net-name="node-int-net-01" --openstack-floatingip-
pool="public-ext-net-01" --openstack-sec-groups="docker-
machine-sg" docker-host
Launch composition
• Describe docker-compose.yml
mongo:
image: mongo:2.6
command: --smallfiles
orion:
image: fiware/orion
links:
- mongo
ports:
- ":1026“
command: -dbhost mongo
• Deploy composition
>docker-compose up –d18
20. NGSI: the SNMP of the Internet of Things
Measures as values of attributes characterizing
context entities
Just need to change the value of an attribute to
trigger an action on a device
19
21. Playing with Context information 1
Updating context
POST <cb_host>:<cb_port>/v1/contextEntities/type/Rating/id/LeBistro::Client1234 {
"attributes" : [{
"name" : "score",
"type" : "integer",
"value" : "4" } ]
}
Querying a context
GET <cb_host>:<cb_port>/v1/contextEntities/type/Restaurant/id/LeBistro
//getting a JSON response such as the following one:
{ "contextElement":
{ "attributes": [ {
"name": "name",
"type": "string",
"value": "Le Bistro" },…],
},
"statusCode": { "code": "200", "reasonPhrase": "OK" }
}
20
22. Playing with Context information 2
Subscribe to context changes
POST <cb_host>:<cb_port>/v1/subscribeContext
{
"entities": [
{
"type": "Rating",
"isPattern": "true",
"id": ".*"
} ],
"attributes": [ "score" ],
"reference": "http://backend.niceeating.foo.com:1028/ratings",
"duration": "P1M",
"notifyConditions": [
{ "type": "ONCHANGE", "condValues": [ "score" ] }
]
}
21
23. IoT: Plug, Configure & Play
22
Connection of devices supporting most popular
protocols (MQTT, CoAP, …) should just imply to
plug, configure & play
Provide a framework that eases the
incorporation of new protocols
24. Playing with IoT devices 1
Create an IDAS Service
POST
<idas_host>:<idas_port>/iot/services
Headers: {'content-type':
'application/json’; 'X-Auth-Token' :
[TOKEN]; "Fiware-Service:
OpenIoT”; "Fiware-ServicePath: /"}
Payload:
{
"services": [
{ "apikey":
"4jggokgpepnvsb2uv4s40d59ov",
"token": "token2",
"cbroker":
"http://0.0.0.0:1026",
"entity_type": "thing",
"resource": "/iot/d" }
]
}
Register your IoT device
• POST
<idas_host>:<idas_port>/iot/devices
Headers: …
Payload:
{
"devices": [
{
"device_id": ”[DEV_ID]",
"entity_name": ”[ENTITY_ID]",
"entity_type": "thing",
“timezone": ”Europe/Madrid",
"attributes": [
{
"object_id": "t",
"name": "temperature",
"type": "int“
} ],
"static_attributes": …
}
]}23
25. Playing with IoT devices 2
Send Observations related to
your IoT device
• POST <idas_host>:
<idas_port>/d?k= <apikey>&i=
<device_ID
Headers:
{
'content-type': 'application/text’;
'X-Auth-Token' : [TOKEN];
"Fiware-Service: OpenIoT”;
"Fiware-ServicePath: /“
}
Payload: ‘ t|25‘
Reading measurements sent by
your IoT device
• GET
<cb_host>:<cb_port>/v1/contextEntit
ies/type/thing/id/[ENTITY_ID]
24
26. Powerful framework for publication of
datasets and APIs
Leveraging on CKAN (welcome on board !)
Support to self-publication by third parties
Integration with FIWARE Store GE in order to
support how access rights are obtained by users
25
27. Publish Open Data Sets in the FIWARE Data portal
(http://data.lab.fiware.org)
Add Dataset
Provide basic information
Upload data
Provide metadata
26
28. Integration of FIWARE Advanced Web-based
User Interface GEs with NGSI
Shared Context Information
End-to-End connection from UI to IoT resources
27
40. Don’t miss the Lab Session this afternoon!
Be aware!!! Build a Context
Aware Application using FIWARE
Presented by Attilio Broglio
Room BL27.0.6
14:10 - 16:00
42. MILAN 20/21.11.2015 - SPEAKER’S NAME
Leave your feedback on Joind.in!
https://m.joind.in/event/codemotion-milan-2015
Notas del editor
Highlight role of FIWARE Lab in the picture:
- The Lab is not only cloud hosting, is an ecosystem, while users may not care much if their App is in Italy or Spain,
having a node in your Region help you to learn the technology and get direct interaction with users
Highlight role of FIWARE Ops:
- We also have a set of tools to support operations, included automated deployment
So what you get when deploying a FIWARE Lab node?
Access for your users to all the building blocks
Generic Enablers are automatically installed on nodes
-> Recall customization of some elements of OpenStack (which it is the meaning of the cloud bullet across fiware and openstack)
How it looks today FIWARE Lab?
Old stuff but we haven’t work out the new one. Action on this.
[DEV_ID] the device identifier at IDAS.
[ENTITY_ID] the entity ID to be used at the ContextBroker will be “thing:[ENTITY_ID]”
"attributes" they should include an alias (a letter representing this attribute).
"static_attributes" only if your device needs to define static attributes (sent in every observation)