This document discusses connecting Internet of Things (IoT) devices to the FIWARE ecosystem. It outlines two main scenarios: 1) IoT consumers who access data through a single API and protocol, and 2) IoT providers who can connect any "thing" or IoT system to FIWARE Lab. It then provides steps to connect IoT devices to FIWARE Lab using the IDAS/SBC Ultralight 2.0 protocol, including registering a device, sending measurements, and sending commands. Other connection options like MQTT and OMA LWM2M/CoAP are also mentioned.
1. FIWARE IoT Proposal & Community
Pablo C. García
Gerente de Investigación, Chief Architect
@pc_garcia
2. FIWARE (IoT) Target: Developers
Context
Broker
App Logic
@FIWARE-Cloud
Desktop/Mobile/Tablet
User Interface
Web 3D GE / Advanced UI
Wirecloud GE / Dashboards
OAuth2.0
SANTANDER
SMARTSPACES
SEVILLA
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
MultiMedia
Events
Complex
Event
Processing
IoT
Smartcities
OpenData
BigData
Analytics
3. 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
Context
Broker
OAuth2.0
OMA NGSI10 - QueryContext
OMA NGSI10 - SubscribeContext
(type, entity_ID, attributes)
Entities
4. IoT Providers: Connect any “Thing”/IoT-System to FIWARE Lab
4
Context
Broker
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
Propietary
Zigbee
Zwave
CoAP/MTRunner
ETSIM2M
CoAP/LWM2M
5. FIWARE IoT: Most Common Scenarios (A & B)
5
Context
Broker
App Logic
FI-WARE Cloud
User
Interface
Dashboards
UI Prototyping
OAuth2.0
SANTANDER
SEVILLA
IDAS Portal/
ADMIN API
IDAS
SBCSMARTSPACES
Commands
Commands
(Future Delivery)
CommandsA
B
B
IDAS
SBC
Commands
(Future Delivery)
7. Success Stories: FIWARE Community Kick off @ CPE’13
7
1st
Prize………….SmartAds
Complete context-sensitive Ads solution developed
in just 4 days & nights.
Neelie Kroes FIWARE Lab Launch
Hackathon + Challenges Announcements
Massive, > 6K developers
Mainly young entrepreneurs
Talent
Day&Night
Involving developers, debugging, improving training sessions
8. 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
9. 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)
10. FIWARE Lab OpenData/IoT Resources Ecosystem is growing fast
10
SANTANDER
SEVILLA
MALAGA
TRENTO
18. 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
19. 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.
20. 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 IoT
Device Management
OMA NGSI API (northbound interface)
(southbound interfaces)
MQTTETSI M2M OMA
LWM2M/IETF
23. 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
24. 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:
28. 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_HUM
SENSOR_LUM
SENSOR_MOV
SENSOR_TEMP
SENSOR_TEMP_test2
SENSOR_ZWAVE_4IN1
29. 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"
},
30. 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
32. 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
38. 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.
39. 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.
40. 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)
41. 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