IoTivity:IoTivity: TheThe OpenOpen ConnectivityConnectivity FoundationFoundation andand thethe IoTIoT ChallengeChallenge ThiagoThiago MacieiraMacieira EmbeddedEmbedded LinuxLinux ConferenceConference // OpenOpen IoTIoT SummitSummit –– Berlin,Berlin, OctoberOctober 20162016 Who am I?
2 3 About the Open Connectivity Foundation
4 5 OCF Current members
Diamond
Platinum
Liaisons
For Gold, Basic and non-profit members, see openconnectivity.org Where the stack sits Applications & Services Data & Control Points Translation Layers
OCF Comms Framework (Single Resource & Data Model) Exte nsibl e *
d * * * a w
e ) e e e e v o E ) r w e L a * L B E o h B * e g L B L T W g i
IP IP v h ( i - B
t Z a h Z ( Z
E y t
IP o W
L g o y o * - r t i
B o g
e Z t r e F
r - e n e u i
e l 802. 802.
802. E u n
v l B W E
o 15.4 B 15.4 15.4
P
I
7 OCF Protocol Stack
Application Layer • Based on standard technologies OCF OCF server OCF client intermediary – Does not require TCP (only UDP) Application-specific resources • Resource Layer Security built in from the start Security Resource Manager (SRM) – “Security 2.0” will be end-to-end Security Resources Connectivity Layer • Hardening left as an exercise for Session management (CoAP, DDS, XMPP, MQTT, etc) the manufacturer Session protection (e.g., DTLS) UDP, TCP, Bluetooth* profile IP over Wi-Fi*, IP over 802.15.4, Bluetooth, …
Security Enforcement
8 Core Protocol
• OCF adopted RESTful APIs • Core framework defines 2 logical roles that devices can take: – OCF Server : A logical entity that exposes hosted resources – OCF Client : A logical entity that accesses resources on an OIC Server
OCF OCF Client Server • OCF Client • OCF Server R 1) Initiate an transaction (send a request) 1) host a Resource 2) access an OCF Server to get a service 2) send a response 3) provide a service
9 Organisation of an OCF device
Device concept:
Resource URI: /oic/p rt: oic.wk.p /oic/p if: oic.if.r n: homePlatform /oic/res /oic/res policy: bm:11 /oic/d /oic/d pi: at1908 mnmn: Samsung* /oic/mnt /oic/prs OCF Device 1 OCF Device 2 Mandatory Physical Device e.g., lightbulb Optional
10 Device Example: Light Device (oic.d.light)
• Example overview
– Smart light device with i) binary switch & ii) brightness resource • Device type: Light device (oic.d.light) • Associated resources
Device Device Associated Resource Type Mandatory Title Type /oic/res (oic.wk.core) Yes /oic/d (oic.d.light) Yes Light oic.d.light Binary switch (oic.r.switch.binary) Yes Brightness (oic.r.light.brightness) No
11 Ownership transfer and bootstrapping
Device OBT Bootstrapping / Gets on Device is Ownership Discovers Provisioning the Un-owned Transfer the Device (ACLs, certs) Network
12 OCF Data Models
• Starts with definition of individual elements Thermostat – Built on generic description strategy (e.g., RAML, JSON schemas)
– Starts with physical properties (e.g., temperature, mass, color …) Thermometer Switch Temperature • Devices are comprised of collections of elements / properties
– Including previously defined devices Temperature • Abstract devices can also be defined
– (e.g., Joe’s house, upstairs bedrooms …)
13 oneIoTa.org
• A crowd-sourced Integrated Development Environment (IDE)
– RAML & JSON validated and syntax aware editors with shared editing
• Automatic support for derived models and multiple organizations
• Submission and approval process per organization
14 IoTivity Project Overview
• An Open Source Project, hosted Steering by the Linux* Foundation Group
– License: Apache Version 2.0 Advisory Committee • Goal: implement the reference implementation of OCF specification
• Meritocratic, fair and open Projects Functions development process
15 IoTivity Main reference implementation
• An open source software OCF Client OCF Server framework implementing OCF P2P Direct
Standards OCF Client OCF Client
Cloud • Available on Android*, Linux*, Tunnel
Tizen* and Windows* CoAP over TCP OCF Intermediary • Notable features: Gateway Gateway – CoAP over TCP and over Bluetooth* LE OCF Servers – Bridge plugins to other ecosystems OCF Servers Cloud-based – Cloud integration Remote Access Intelligent Services
16 Other IoTivity reference implementations
IoTivity for constrained devices IoTivity for Node.js* • Designed from scratch for small • API in JavaScript*, provided as an devices (e.g., Intel® Quark™ npm package family) • “Feels” native for Node.js – Static memory allocation developers
• Fully compatible with OIC 1.1 • Easy to integrate with other specification and main IoTivity Node.js packages for richer experience • Support for Linux* and Zephyr
See session on IoTivity Constrained
17 IoTivity for Node.js* API Sample
Client Server Promise findResources(); Promise
Resource Events: update delete
18 IoTivity for Node.js* Example Code var device = require("iotivity-node")(); device.configure({role: "client"}); device.on("resourcefound", function(event) { console.log("client: resource found %s", event.resource.id.path);
if (event.resource.id.path == "/a/light") { device.retrieveResource(event.resource.id) .then(function(resource) { resource.properties.on = !resource.properties.on; // toggle device.updateResource(resource).then(function() { console.log("client: update OK"); process.exit(0); }); }); } }); device.findResources();
19 Other IoTivity Projects
• Bridge to UPnP
• Bridge to AllJoyn*
• Testing tool, with network simulation
20 Get Involved!
• Participate in developing the reference implementation IoTivity (https://www.iotivity.org/get-involved)
• Participate in creating the specification & certification program OCF (http://openconnectivity.org/join)
• Participate in developing the OCF data models oneIoTa tool (https://www.oneiota.org) Thiago Macieira [email protected] http://google.com/+ThiagoMacieira
22