Upload
dmoranj
View
136
Download
2
Tags:
Embed Size (px)
Citation preview
IoT Agents (Advanced)OMA Lightweight M2M
Contact [email protected]
(Reference Orion Context Broker version: 0.21.0)
http://bit.ly/fiware-iotAgents-lwm2m
• Introduction• IOT Agents• Interaction models• Provisioning APIs• Lightweight M2M• IOT Agent development
Outline
FIWARE (IoT) Target: Developers
ContextBroker
App Logic @FIWARE-Cloud
Desktop/Mobile/TabletUser Interface
Web 3D GE / Advanced UIWirecloud 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
MultiMediaEvents
ComplexEvent Processing
IoT GEis
SmartcitiesOpenData
BigDataAnalytics
IoT – Typical Scenario I (fully tested, most used so far)
• Simplest scenario at FIWARE Wiki IoT Architecture.• Extensively tested with developers. Most Feedback Implemented. • New features are required (Edge management, more Agents).
IOT Agents
• IoT Architecturehttp://bit.ly/iotArchitecture
• Motivation:– Modular approach– Deployment flexibility– Custom IOT Agents
• NGSI Bridge– Constrained set of interactions– One entity per device
• Provisioning of devices and group of devices• Additional services (e.g.: security, device registration,
stats)
Interaction models: Active Attributes
IOT Agent
DB
DeviceProtocol
NGSI
Entity information
Interaction begins
Interaction models: Lazy Attributes
IOT Agent
DeviceProtocol
NGSI
Entity information
Interaction begins
Requires the IOT Agent to be registered as a Context Provider
Completely synchronous model
Interaction models: Commands
IOT Agent
DeviceProtocol
NGSI
CommandExecution
Interaction begins
Result Information
Requires the IOT Agent to be registered as a Context Provider
Device Provisioning: Models
9
Context Broker
IoT AgentThinking Things
NGSI
HTTP (2G)
IoT AgentThinking Things
Context BrokerApp Backend
Configuration APIDevice Provisioning API
Device Provisioning: Device Provisioning API
{ "name": "Light1", "entity_name": "TheFirstLight", "entity_type": "TheLightType", "attributes": [ { "name": "attr_name", "type": "string" } ], "lazy": [ { "name": "luminance", "type": "lumens" } ], "commands": [ { "name": "commandAttr", "type": "commandType" } ]}
• /iot/devices/:deviceId• REST CRUD:
– POST– GET– DELETE– PUT
• Service headers:– Fiware-service– Fiware-servicepath
• Mandatory– Name– Entity_type
• Internal_attributes
Device Provisioning: Configuration API
{ services: [ { resource: '/deviceTest', apikey: '801230BJKL23Y24HV8732', type: 'Light', trust: '8970A9078A803HAMS’, commands: [], lazy: [ { name: 'luminescence', type: 'Lumens' } ], active: [ { name: 'status', type: 'Boolean' } ] } ]}
• /iot/agents/default/services
• Not exactly REST (check doc)
• Service headers:– Fiware-service– Fiware-servicepath
• Mandatory– Resource– Api_key– Type
Security
• North bound: using PEP Proxies• South bound: IOTAgent specific• Use of trust tokens for communicating with other GEs
IOT Agent
PEP Proxy
PEP
Prox
y
Keystone
Simple Demo: Framework Node.js
• Installationnpm install –g iotagent-node-lib
• Command line interface for testing– agentConsole– iotAgentTester
• Testing of common IOTA features– Service management– Device management– Context Provider registration
Lightweight M2M IoT Agent
OMA Lightweight M2M
• Based on COAP:– UDP– Lightweight payload– REST Oriented
• Interfaces:– Bootstrapping– Client registration– Device management– Information reporting
• Object model– Based on Object and Resource hierarchy (e.g.: /1/12/3)– OMA Registry
OMA Lightweight M2M: operations
LWM2M Client
LWM2M Server
Register (host, port, endpoint, url)
Read /3304/0/5
Write/3304/0/5
Observe /3304/0/5
Notify /3304/0/5
Lightweight M2M IOT Agent
• Github projecthttps://github.com/telefonicaid/lightweightm2m-iotagent• Work in progress• Quickstart guides• OMA Registry mapping
– Default lazy mapping for attributes not declared– Attributes can be declared as active using the resource name– Custom mappings by type using Device Provisioning API:
"internal_attributes": { "lwm2mResourceMapping": { "TheTemperature" : { "objectType": 34000, "objectInstance": 0, "objectResource": 5 } }
Advanced Demo: Lightweight M2M
• Installationnpm install –g lwm2m-node-lib
• Command line interface for testing– iotagent-lwm2m-server– iotagent-lwm2m-client
• Test the protocol or the clients created
Advanced Demo: Lightweight M2M IOTA
• Installationnpm install –g lightweightm2m-iotagent
• Command line interfaces for testing– In the LWM2M IOTA Project
• Testing of specific LWM2M IOTA features– Client registering– Message sending– Context Providers
IoT Agent Development
Building an IoT Agent: Overview
• Frameworks: Node.js and C++• North bound features provided by the platform:
– NGSI Context Provision server– NGSI Client– Device Provisioning API– Configuration API
• All South bound features are protocol specific– External library– Ad-hoc development
IOT Agent
Building an IoT Agent: Node.js
• Device registry (in-memory or MongoDB)• Group Registry (in-memory or MongoDB)• Module provided in NPM Registry:
– Add it to your package.json– Require it as any other module
Context Server
NGSI Client
Dev
ice
Prot
ocol Device
Registry
GroupRegistry
Provision Server
Building an IoT Agent: Node.js
• Handlers– setDataQueryHandler()– setDataUpdateHandler()– setConfigurationHandler()– setCommandHandler()
• API Operations (most important)– Activate()– Deactivate()– Register()– Update()
• Registry operations– listDevices()– getDeviceByName()
Building an IoT Agent: Node.js
• Available IoT Agents– OMA Lightweight M2M– Sigfox– Thinking Things Closed
Exercises
• Suggestion: deploy your local IOT Agent.• Alternative: workshop IOTAgent
– IP: 130.206.80.48– Port: 9500
• Exercise descriptions (and this presentation) in SlideShare• Prerequisites:
– Rest clients– Node.js (environment)
• Nice to have:– Node.js programming skills
Resources
• Github Projects:– Node.js IOT Agent frameworkhttps://github.com/telefonicaid/iotagent-node-lib
– C++ IOT Agent frameworkhttps://github.com/telefonicaid/fiware-IoTAgent-Cplusplus
– Node.js LWM2M Libraryhttps://github.com/telefonicaid/lwm2m-node-lib
– LWM2M IOT Agenthttps://github.com/telefonicaid/lightweightm2m-iotagent
• IoT Architecture
http://bit.ly/iotArchitecture
• COAPhttps://tools.ietf.org/html/rfc7252
• Lightweight M2Mhttp://openmobilealliance.org/about-oma/work-program/m2m-enablers/
BACKUP SLIDESBackup slides
27