SlideShare a Scribd company logo
LwM2M Workshop 2015
Julien Vermillard - Sierra Wireless
Julien Vermillard / @vrmvrm
Software Engineer at Sierra Wireless
http://airvantage.net M2M Cloud
Apache foundation member
Eclipse committer on Californium, Wakaama
Eclipse Leshan project lead
Eclipse Foundation & Eclipse IoT
Open Standards and Open Source for the Internet of Things
5-Nov-2014
Eclipse History
• Launched by IBM in 2001
– Initial release of the Eclipse technology platform (Platform,
JDT,PDT)
– Founding consortium board comprised Borland, IBM, Red
Hat, …
• Eclipse Foundation formed in 2004
– Independent not-for-profit organization formed in 2004
– Definition of bylaws, membership model, initial IP process
• Eclipse Foundation today, 2014
– Members include IBM, Oracle, SAP, CA, Google, Bosch, etc.
– 204 members, (10 strategic members), ~1000 committers
– ~270 Open Source Projects
2Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0
Eclipse at a Glance
• Organization
– 501(c)6 not-for-profit, USA (Delaware) incorporated,
headquarters in Ottawa, Canada
– 18 employees
• License
– Eclipse Public License is the default
– Other licenses possible by approval of the Board
• Focus areas
– Most project implementations are in Java, but starting to
move into web (JavaScript) and C/C++
– “Eclipse plug-in model”
– Development tools, modeling tools, runtimes, web
development, IoT, Cloud
3Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0
Eclipse: a sustainable ecosystem
“Eclipse is a vendor-neutral consortium of major
software vendors, solution providers,
corporations, educational and research institutions
and individuals working together
to create a sustainable eco-system that enhances,
promotes and cultivates the Eclipse open platform
with complementary products, services and capabilities.”
4Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0
Governance
IP Mgt
& Licensing
Projects &
Process
Ecosystem
Development
Infrastructure
What do you need for open
collaboration?
5Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0
Governanc
e
IP Mgt
& Licensing
Projects &
Process
Ecossytem
Developmen
t
Infra-
structure
Eclipse Working Groups
• Eclipse is the industry’s best model for vendor-
neutral collaboration
• Eclipse Working Groups:
– Licensing model for sharing co-developed innovation
– IP management to maximize commercialization opportunities
– Project model for coordinating investments and activities
– Governance model to ensure a level playing field for all participants
Eclipse gives you these “out of the box”
6Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0
7Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0
IoT Architectures
Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 8
New and existing
devices
IoT Gateways Backend systemsNetwork carriers
Open Source, Open Standards and Community
for IoT
IoT Architectures
Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 9
New and existing
devices
IoT Gateways Backend systemsNetwork carriers
Protocols
• MQTT
– OASIS standard
– Client and server implementations in Paho,
Mosquitto and Moquette
– Wide commercial adoption: IBM MessageSight,
Facebook Messenger, Eurotech ESF, Sierra Wireless
AirVantage, …
• CoAP
– IETF standard
– Java implementation in Californium
– Lots of traction in the WSN space (Thingsquare,
Everythng, …)
– Foundation for LWM2M – supported by
Sierra Wireless, Bosch SI, Zebra Technologies
5 June 2014 Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 10
Frameworks
• Application framework for IoT: Kura
– Built on top of Java and OSGi
– Foundation for Eurotech’s Everyware Software
Framework
• ETSI SmartM2M and oneM2M
implementation: OM2M
5 June 2014 Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 11
Solutions
• Home Automation: Eclipse SmartHome
– Based on Java and OSGi
– Very active community with ~100 home automation
driver implementations
– Foundation for Deutsche Telekom’s QIVICON
• IoT network management: Krikkit
– Rules engine for IoT devices
– Powering Cisco’s Data in Motion.
• Industrial control: EclipseSCADA
5 June 2014 Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 12
Tools
• Eclipse Vorto
– Information model for « things » + code generators
– Bosch SI leading
5 June 2014 Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 13
Eclipse IoT Members
5 June 2014 Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 14
Eclipse IoT in Numbers
• 17 projects
• 90+ committers & contributors
• 1.7 Million lines of code
• 700K+ combined unique visitors
• 3 developer sandboxes (MQTT, CoAP, LWM2M)
5 June 2014 Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 15
iot.eclipse.org
5 June 2014 Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 16
Thanks! Questions?
5 June 2014 Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 17
Leshan
Open-source Lightweight M2M for Java
Directly as a library?
Copy/pasted some code? Like TLV parser?
Testing?
Leshan: Who is using it?
?
Leshan
A Java library for implementing LwM2M
servers (and clients)
Friendly for any Java developer (no framework,
few dependencies)
But also a Web UI for discovering and testing
the protocol
History
Started 22 Jul. 2013 @ Sierra Wireless
First external contribution 10 March 2014
Public sandbox Jul. 2014
Proposed as an Eclipse project Sep. 2014
Client contributed Oct. 2014
Details
Who?
Move under Eclipse rules
New sandbox: http://leshan.eclipse.org
Committers
Simon Bernard - Sierra Wireless
Kai Hudalla - Bosch Software Innovations
J.F. Schloman - Zebra Technologies, Zatar
Manuel SangoĂŻ - Sierra Wireless
Julien Vermillard - Sierra Wireless
Features
Client initiated bootstrap
Registration/Deregistration
Read, Write, Create objects
TLV encoding/decoding
OSGi friendly
Features
DTLS Pre shared key
DTLS Raw public key
Standalone web-UI for testing
Modules
leshan-core commons elements
leshan-server-core server lwm2m logic
leshan-server-cf californium server
leshan-client client
leshan-all everything above in 1 jar
leshan-client-example
leshan-standalone application with web UI
leshan-bs-server standalone bootstrap
leshan-integration-tests
Server
Simple Java library
Build using “mvn install”
Based on Californium and Scandium
Under refactoring for accepting other CoAP lib
Server API example
public void start() {
// Build LWM2M server
LeshanServerBuilder builder = new LeshanServerBuilder();
lwServer = builder.build();
lwServer.getClientRegistry().addListener(new ClientRegistryListener() {
@Override
public void registered(Client client) {
System.out.println("New registered client with endpoint: " + client.getEndpoint());
}
@Override
public void updated(Client clientUpdated) {
System.out.println("Registration updated”);
}
@Override
public void unregistered(Client client) {
System.out.println("Registration deleted”);
}
});
// start
lwServer.start();
System.out.println("Demo server started");
}
Server API example
// prepare the new value
LwM2mResource currentTimeResource = new LwM2mResource(13,
Value.newDateValue(new Date()));
// send a write request to a client
WriteRequest writeCurrentTime = new WriteRequest(client, 3, 0, 13,
currentTimeResource, ContentFormat.TEXT, true);
ClientResponse response = lwServer.send(writeCurrentTime);
System.out.println("Response to write request from client " +
client.getEndpoint() + ": " + response.getCode());
Implements your own store
ClientRegistry:
Store currently registered clients
SecurityRegistry:
Store security informations
Default implementations are “in-memory”
for demo only!
Client
Under construction! API will probably change
Create objects, answer to server requests
DTLS supported in master
Checkout: leshan-client-example
Next steps
Eclipse.org migration
DTLS X.509
CoAP shim, CoAP TCP
Stable API for June
To be done:
Json
SMS
Server initiated bootstrap
How to help?
Use it! Report bugs, issue, missing features
Write documentation
Talk about it (in your company, IoT meetup,...)
Contribute code
Questions?
https://dev.eclipse.org/mailman/listinfo/leshan-dev
Eclipse Wakaama
Lightweight M2M implementation in C
Photo credits: https://www.flickr.com/photos/30126248@N00/2890986348
Wakaama: Who is using it?
Directly as a library?
Copy/pasted some code?
Testing?
?
Wakaama
A C client and server implementation of LwM2M
Not a shared library (.so/.dll)
Embedded friendly but using malloc/free
Plug your own IP stack and DTLS implementation
History
Started as liblwm2m by Intel on May 2013
https://github.com/01org/liblwm2m
Proposed as Eclipse project Dec. 2013
Code imported at Eclipse July 2014
Who?
David Navarro - Intel
Julien Vermillard - Sierra Wireless
Features
Register, registration update, deregister
Read, write resources
Read, write, create, delete object instances
TLV or plain text
Observe
Structure
core :
internals.h liblwm2m.c liblwm2m.h
list.c management.c objects.c observe.c
packet.c registration.c tlv.c transaction.c
uri.c utils.c
core/er-coap-13 :
er-coap-13.c er-coap-13.h
Structure
tests/client:
lwm2mclient.c object_device.c
object_firmware.c object_location.c
object_security.c object_server.c test_object.c
tests/server: lwm2mserver.c
lwm2m_object_t * get_object_device()
{
lwm2m_object_t * deviceObj;
deviceObj = (lwm2m_object_t *)lwm2m_malloc(sizeof(lwm2m_object_t));
if (NULL != deviceObj)
{
memset(deviceObj, 0, sizeof(lwm2m_object_t));
deviceObj->objID = 3;
deviceObj->readFunc = prv_device_read;
deviceObj->writeFunc = prv_device_write;
deviceObj->executeFunc = prv_device_execute;
deviceObj->userData = lwm2m_malloc(sizeof(device_data_t));
if (NULL != deviceObj->userData)
{
((device_data_t*)deviceObj->userData)->time = 1367491215;
strcpy(((device_data_t*)deviceObj->userData)->time_offset, "+01:00");
}
else
{
lwm2m_free(deviceObj);
deviceObj = NULL;
}
}
return deviceObj;
}
Create objects!
objArray[0] = get_object_device();
if (NULL == objArray[0])
{
fprintf(stderr, "Failed to create Device objectrn");
return -1;
}
objArray[1] = get_object_firmware();
if (NULL == objArray[1])
{
fprintf(stderr, "Failed to create Firmware objectrn");
return -1;
}
objArray[2] = get_test_object();
if (NULL == objArray[2])
{
fprintf(stderr, "Failed to create test objectrn");
return -1;
}
lwm2mH = lwm2m_init(prv_connect_server, prv_buffer_send, &data);
if (NULL == lwm2mH)
{
fprintf(stderr, "lwm2m_init() failedrn");
return -1;
}
result = lwm2m_configure(lwm2mH, "testlwm2mclient", BINDING_U, NULL, OBJ_COUNT, objArray);
...
result = lwm2m_start(lwm2mH);
Configure
Wakaama
while (0 == g_quit)
{
struct timeval tv;
tv.tv_sec = 60;
tv.tv_usec = 0;
/*
* This function does two things:
* - first it does the work needed by liblwm2m (eg. (re)sending some packets).
* - Secondly it adjust the timeout value (default 60s) depending on the state of the transaction
* (eg. retransmission) and the time between the next operation
*/
result = lwm2m_step(lwm2mH, &tv);
if (result != 0)
{
fprintf(stderr, "lwm2m_step() failed: 0x%Xrn", result);
return -1;
}
Active loop
Next?
Device initiated bootstrap
More example: https://github.
com/jvermillard/Wakaama-mbed
Server?
Block transfer?
Hack it into real devices!
Courtesy of Bosch Software Innovations!
Spark Core
Cortex-M3 STM32,
RAM/ROM 20/128k, 72MHz
WiFi
wakaama (old: 09.2014 version)+TinydTLS-0.5:
ROM/RAM: 75,6kB/13,1kB
U-blox MBed.org
Cortex-M3 (NXP LPC1768),
RAM/ROM 20/128k, 96MHz
GPRS
Current BOSCH wakaama-snapshot:
Function: observe, attribute:
Objects: server, security, device, conn_m, firmware, location,
ROM/RAM: 84kB/22kB
Arduino
AVR, ATmega2560,
RAM/ROM 8/256k, 16MHz
Ethernet
Current BOSCH wakaama-snapshot:
Function: observe, attribute:
Objects: server, security, device, conn_m, firmware, location,
ROM/RAM: 67kB/5kB
Lua binding
https://github.com/sbernard31/lualwm2m
With DTLS support using:
https://github.com/sbernard31/luadtls
binding on
http://tinydtls.sf.net
Thanks!
More questions?
jvermillard@sierrawireless.com
http://twitter.com/vrmvrm

More Related Content

PPT
Standards Drive the Internet of Things
PDF
Open source IoT gateway
PPTX
Delivering Composable NFV Services for Business, Residential and Mobile Edge
PPTX
Lightweight M2M 1.1 - LwM2M 1.1 Protocol Overview & New Features
PPTX
Monitoring Security Policies for Container and OpenStack Clouds
PDF
How to Implement SDN Technology in ITB
ODP
Using open source for IoT
PPTX
SDN Scale-out Testing at OpenStack Innovation Center (OSIC)
Standards Drive the Internet of Things
Open source IoT gateway
Delivering Composable NFV Services for Business, Residential and Mobile Edge
Lightweight M2M 1.1 - LwM2M 1.1 Protocol Overview & New Features
Monitoring Security Policies for Container and OpenStack Clouds
How to Implement SDN Technology in ITB
Using open source for IoT
SDN Scale-out Testing at OpenStack Innovation Center (OSIC)

What's hot (20)

PPTX
Enabling IoT Devices’ Hardware and Software Interoperability, IPSO Alliance (...
PDF
Building Open Source IoT Cloud
 
PPTX
Hands-on Lab: Test Drive Your OpenStack Network
PDF
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
PDF
1 - SDNRG ITB, 10 minutes intro by Affan Basalamah
PDF
CSTA - Cisco Security Technical Alliances, New Ecosystem Program Built on the...
PDF
Brocade Software Networking (SDN NFV Day ITB 2016)
PPTX
7 - Introduction to OpenStack & SDN by Ady Saputra
PDF
End-to-end IoT solutions with Java and Eclipse IoT
PDF
Building the Internet of Things with Eclipse IoT - IoTBE meetup
PDF
OpenStack Summit Austin 2016 v1.3
PPTX
You Can Build Your OpenStack and Consume it Too
PPTX
Design and Deploy Secure Clouds for Financial Services Use Cases
PDF
Gateway Design with Eclipse Kura - Taking Kura to heights
PDF
10 (IDNOG01) Introduction about ICANN by Champika Wijayatunga
PDF
OpenStack NFV Edge computing for IOT microservices
PPTX
Protocols for internet of things
PPTX
How to Quickly Implement a Secure Cloud for Government and Military | Webinar
PPTX
CompTIA Security Plus Mini Bootcamp Session
PPTX
Securing Micro Services in Cloud Foundry
Enabling IoT Devices’ Hardware and Software Interoperability, IPSO Alliance (...
Building Open Source IoT Cloud
 
Hands-on Lab: Test Drive Your OpenStack Network
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
1 - SDNRG ITB, 10 minutes intro by Affan Basalamah
CSTA - Cisco Security Technical Alliances, New Ecosystem Program Built on the...
Brocade Software Networking (SDN NFV Day ITB 2016)
7 - Introduction to OpenStack & SDN by Ady Saputra
End-to-end IoT solutions with Java and Eclipse IoT
Building the Internet of Things with Eclipse IoT - IoTBE meetup
OpenStack Summit Austin 2016 v1.3
You Can Build Your OpenStack and Consume it Too
Design and Deploy Secure Clouds for Financial Services Use Cases
Gateway Design with Eclipse Kura - Taking Kura to heights
10 (IDNOG01) Introduction about ICANN by Champika Wijayatunga
OpenStack NFV Edge computing for IOT microservices
Protocols for internet of things
How to Quickly Implement a Secure Cloud for Government and Military | Webinar
CompTIA Security Plus Mini Bootcamp Session
Securing Micro Services in Cloud Foundry
Ad

Viewers also liked (20)

PDF
Hands on with lightweight m2m and Eclipse Leshan
PDF
Manage all the things, small and big, with open source LwM2M implementations ...
PPTX
Top 5 system engineer cover letter samples
PDF
Securing Millions of Devices
PPT
OMA Lightweight M2M Tutorial
PDF
ARM CoAP Tutorial
PDF
OMA LwM2M Workshop - Antonio Jara, OMA LabKit
ODP
The Yocto Project
PDF
IoT Seminar (Oct. 2016) Hatem Oueslati - IOTEROP
PDF
Reactive Java Robotics and IoT - IPT Presentation @ Voxxed Days 2016
PPTX
Device Management with OMA Lightweight M2M
PDF
Reactive Java Robotics IoT - jPrime 2016
PDF
IPT High Performance Reactive Java BGOUG 2016
PPTX
Eclipse IoT Day, March 2017 - LightweightM2M Protocol & Ecosystem
PDF
SemIoT (Semantic technologies for Internet of Things) - Project Overview
PDF
IPT High Performance Reactive Programming with JAVA 8 and JavaScript
PPTX
OMA LWM2M Tutorial by ARM to IETF ACE
PDF
Hands on with CoAP and Californium
PDF
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
PDF
IoT Seminar (Oct. 2016) Pilgrim Beart - DevicePilot & Duncan Purves - Connect...
Hands on with lightweight m2m and Eclipse Leshan
Manage all the things, small and big, with open source LwM2M implementations ...
Top 5 system engineer cover letter samples
Securing Millions of Devices
OMA Lightweight M2M Tutorial
ARM CoAP Tutorial
OMA LwM2M Workshop - Antonio Jara, OMA LabKit
The Yocto Project
IoT Seminar (Oct. 2016) Hatem Oueslati - IOTEROP
Reactive Java Robotics and IoT - IPT Presentation @ Voxxed Days 2016
Device Management with OMA Lightweight M2M
Reactive Java Robotics IoT - jPrime 2016
IPT High Performance Reactive Java BGOUG 2016
Eclipse IoT Day, March 2017 - LightweightM2M Protocol & Ecosystem
SemIoT (Semantic technologies for Internet of Things) - Project Overview
IPT High Performance Reactive Programming with JAVA 8 and JavaScript
OMA LWM2M Tutorial by ARM to IETF ACE
Hands on with CoAP and Californium
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
IoT Seminar (Oct. 2016) Pilgrim Beart - DevicePilot & Duncan Purves - Connect...
Ad

Similar to OMA LwM2M Workshop - Julien Vermillard, OMA LwM2M Projects in Eclipse Foundation (20)

PPTX
Creating the open source building blocks for IoT
PPTX
Why IoT needs Open Source Communities
PDF
2019.02 Eclipse Foundation and Eclipse IoT presentation at Eclipse IoT Day Gr...
PPTX
Defining an Open IoT Stack - Presented at IoT World 2015
PPTX
Eclipse m2m
PDF
Eclipse IoT presentation
PPTX
Why the Community Needs Open Source for IoT
PPTX
Eclipse IoT: Open source technology for IoT developers
PPTX
Why Open Source with Drive M2M Innovation
PPTX
EclipseDay Lyon: What’s happening these days at Eclipse?
PPTX
Open Source IoT at Eclipse
PPTX
Why Open Source with Drive IoT Innovation - Thingmonk
PDF
Open Source Internet of Things 101 – EclipseCon 2016
PDF
Building the Internet of Things with open source and Eclipse IoT projects (Be...
PDF
On making standards organizations & open source communities work hand in hand
PPTX
Eclipse IoT for Industry 4.0
PPTX
Open source IoT
 
PDF
2018.11 eclipse overview (japan meeting)
PDF
Eclipse IoT Talk (Montreal JUG)
PPTX
Eclipse Foundation: Openness and M2M
Creating the open source building blocks for IoT
Why IoT needs Open Source Communities
2019.02 Eclipse Foundation and Eclipse IoT presentation at Eclipse IoT Day Gr...
Defining an Open IoT Stack - Presented at IoT World 2015
Eclipse m2m
Eclipse IoT presentation
Why the Community Needs Open Source for IoT
Eclipse IoT: Open source technology for IoT developers
Why Open Source with Drive M2M Innovation
EclipseDay Lyon: What’s happening these days at Eclipse?
Open Source IoT at Eclipse
Why Open Source with Drive IoT Innovation - Thingmonk
Open Source Internet of Things 101 – EclipseCon 2016
Building the Internet of Things with open source and Eclipse IoT projects (Be...
On making standards organizations & open source communities work hand in hand
Eclipse IoT for Industry 4.0
Open source IoT
 
2018.11 eclipse overview (japan meeting)
Eclipse IoT Talk (Montreal JUG)
Eclipse Foundation: Openness and M2M

More from Open Mobile Alliance (20)

PDF
IoT projects in Eclipse Foundation using LwM2M (IoT World 2017 Workshop)
PDF
Prospective of LwM2M for Smart City Use Cases (IoT World 2017 Workshop)
PPTX
IETF building block in the LwM2M Ecosystem (IoT World 2017 Workshop)
PPTX
Introduction to OMA LightweightM2M by OMA Device Management Chairman (IoT Wor...
PPTX
Intro to IoT & the role of LwM2M Technologies (Internet of Things World 2017,...
PPTX
The LightweightM2M Ecosystem
PDF
IoT Seminar (Oct. 2016) Juan Perez - Microsoft
PDF
IoT Seminar (Oct. 2016) Jong Young Lee - MDS Technology
PDF
IoT Seminar (Oct. 2016) Alex Edelmann - Bosch Singapore
PDF
IoT Seminar (Oct. 2016) Tao Lin - Movimento Group
PDF
IoT Seminar (Oct. 2016) Nicolas Damour - Sierra Wireless
PDF
IoT Seminar (Oct. 2016) CK Vishwakarma - IOTSG
PDF
OMA Open Source Industry Survey Results
PPTX
NXP FRDM-K64F Platform with ARM mbed Demo - Edinburgh 2016 Workshop
PPTX
LWM2M Introduction - Edinburgh 2016 Workshop with ARM
PDF
IoT Seminar (Jan. 2016) - (9) kenneth lowe - fast track your lwm2m developmen...
PDF
IoT Seminar (Jan. 2016) - (7) joaquin prado - oma developer toolkit
PDF
IoT Seminar (Jan. 2016) - (6) sunil marolia - taming the iot beast, one manag...
PDF
IoT Seminar (Jan. 2016) - (5) dr antonio jara - oma lwm2m + oma gotapi the mo...
PDF
IoT Seminar (Jan. 2016) - (4) friedhelm rodermund - lwm2m and lpwa
IoT projects in Eclipse Foundation using LwM2M (IoT World 2017 Workshop)
Prospective of LwM2M for Smart City Use Cases (IoT World 2017 Workshop)
IETF building block in the LwM2M Ecosystem (IoT World 2017 Workshop)
Introduction to OMA LightweightM2M by OMA Device Management Chairman (IoT Wor...
Intro to IoT & the role of LwM2M Technologies (Internet of Things World 2017,...
The LightweightM2M Ecosystem
IoT Seminar (Oct. 2016) Juan Perez - Microsoft
IoT Seminar (Oct. 2016) Jong Young Lee - MDS Technology
IoT Seminar (Oct. 2016) Alex Edelmann - Bosch Singapore
IoT Seminar (Oct. 2016) Tao Lin - Movimento Group
IoT Seminar (Oct. 2016) Nicolas Damour - Sierra Wireless
IoT Seminar (Oct. 2016) CK Vishwakarma - IOTSG
OMA Open Source Industry Survey Results
NXP FRDM-K64F Platform with ARM mbed Demo - Edinburgh 2016 Workshop
LWM2M Introduction - Edinburgh 2016 Workshop with ARM
IoT Seminar (Jan. 2016) - (9) kenneth lowe - fast track your lwm2m developmen...
IoT Seminar (Jan. 2016) - (7) joaquin prado - oma developer toolkit
IoT Seminar (Jan. 2016) - (6) sunil marolia - taming the iot beast, one manag...
IoT Seminar (Jan. 2016) - (5) dr antonio jara - oma lwm2m + oma gotapi the mo...
IoT Seminar (Jan. 2016) - (4) friedhelm rodermund - lwm2m and lpwa

Recently uploaded (20)

PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Advanced IT Governance
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Modernizing your data center with Dell and AMD
PDF
GamePlan Trading System Review: Professional Trader's Honest Take
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PDF
cuic standard and advanced reporting.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
 
PDF
Spectral efficient network and resource selection model in 5G networks
DOCX
The AUB Centre for AI in Media Proposal.docx
 
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Approach and Philosophy of On baking technology
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Cloud computing and distributed systems.
Network Security Unit 5.pdf for BCA BBA.
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
“AI and Expert System Decision Support & Business Intelligence Systems”
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Advanced IT Governance
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Modernizing your data center with Dell and AMD
GamePlan Trading System Review: Professional Trader's Honest Take
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
cuic standard and advanced reporting.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
 
Spectral efficient network and resource selection model in 5G networks
The AUB Centre for AI in Media Proposal.docx
 
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Review of recent advances in non-invasive hemoglobin estimation
Approach and Philosophy of On baking technology
NewMind AI Weekly Chronicles - August'25 Week I
Advanced methodologies resolving dimensionality complications for autism neur...
Chapter 3 Spatial Domain Image Processing.pdf
Cloud computing and distributed systems.

OMA LwM2M Workshop - Julien Vermillard, OMA LwM2M Projects in Eclipse Foundation

  • 1. LwM2M Workshop 2015 Julien Vermillard - Sierra Wireless
  • 2. Julien Vermillard / @vrmvrm Software Engineer at Sierra Wireless http://airvantage.net M2M Cloud Apache foundation member Eclipse committer on Californium, Wakaama Eclipse Leshan project lead
  • 3. Eclipse Foundation & Eclipse IoT Open Standards and Open Source for the Internet of Things 5-Nov-2014
  • 4. Eclipse History • Launched by IBM in 2001 – Initial release of the Eclipse technology platform (Platform, JDT,PDT) – Founding consortium board comprised Borland, IBM, Red Hat, … • Eclipse Foundation formed in 2004 – Independent not-for-profit organization formed in 2004 – Definition of bylaws, membership model, initial IP process • Eclipse Foundation today, 2014 – Members include IBM, Oracle, SAP, CA, Google, Bosch, etc. – 204 members, (10 strategic members), ~1000 committers – ~270 Open Source Projects 2Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0
  • 5. Eclipse at a Glance • Organization – 501(c)6 not-for-profit, USA (Delaware) incorporated, headquarters in Ottawa, Canada – 18 employees • License – Eclipse Public License is the default – Other licenses possible by approval of the Board • Focus areas – Most project implementations are in Java, but starting to move into web (JavaScript) and C/C++ – “Eclipse plug-in model” – Development tools, modeling tools, runtimes, web development, IoT, Cloud 3Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0
  • 6. Eclipse: a sustainable ecosystem “Eclipse is a vendor-neutral consortium of major software vendors, solution providers, corporations, educational and research institutions and individuals working together to create a sustainable eco-system that enhances, promotes and cultivates the Eclipse open platform with complementary products, services and capabilities.” 4Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0
  • 7. Governance IP Mgt & Licensing Projects & Process Ecosystem Development Infrastructure What do you need for open collaboration? 5Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0
  • 8. Governanc e IP Mgt & Licensing Projects & Process Ecossytem Developmen t Infra- structure Eclipse Working Groups • Eclipse is the industry’s best model for vendor- neutral collaboration • Eclipse Working Groups: – Licensing model for sharing co-developed innovation – IP management to maximize commercialization opportunities – Project model for coordinating investments and activities – Governance model to ensure a level playing field for all participants Eclipse gives you these “out of the box” 6Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0
  • 9. 7Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0
  • 10. IoT Architectures Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 8 New and existing devices IoT Gateways Backend systemsNetwork carriers
  • 11. Open Source, Open Standards and Community for IoT IoT Architectures Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 9 New and existing devices IoT Gateways Backend systemsNetwork carriers
  • 12. Protocols • MQTT – OASIS standard – Client and server implementations in Paho, Mosquitto and Moquette – Wide commercial adoption: IBM MessageSight, Facebook Messenger, Eurotech ESF, Sierra Wireless AirVantage, … • CoAP – IETF standard – Java implementation in Californium – Lots of traction in the WSN space (Thingsquare, Everythng, …) – Foundation for LWM2M – supported by Sierra Wireless, Bosch SI, Zebra Technologies 5 June 2014 Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 10
  • 13. Frameworks • Application framework for IoT: Kura – Built on top of Java and OSGi – Foundation for Eurotech’s Everyware Software Framework • ETSI SmartM2M and oneM2M implementation: OM2M 5 June 2014 Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 11
  • 14. Solutions • Home Automation: Eclipse SmartHome – Based on Java and OSGi – Very active community with ~100 home automation driver implementations – Foundation for Deutsche Telekom’s QIVICON • IoT network management: Krikkit – Rules engine for IoT devices – Powering Cisco’s Data in Motion. • Industrial control: EclipseSCADA 5 June 2014 Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 12
  • 15. Tools • Eclipse Vorto – Information model for ÂŤ things Âť + code generators – Bosch SI leading 5 June 2014 Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 13
  • 16. Eclipse IoT Members 5 June 2014 Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 14
  • 17. Eclipse IoT in Numbers • 17 projects • 90+ committers & contributors • 1.7 Million lines of code • 700K+ combined unique visitors • 3 developer sandboxes (MQTT, CoAP, LWM2M) 5 June 2014 Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 15
  • 18. iot.eclipse.org 5 June 2014 Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 16
  • 19. Thanks! Questions? 5 June 2014 Copyright (c) 2014, Eclipse Foundation, Inc. Made available under the Eclipse Public License 1.0 17
  • 21. Directly as a library? Copy/pasted some code? Like TLV parser? Testing? Leshan: Who is using it? ?
  • 22. Leshan A Java library for implementing LwM2M servers (and clients) Friendly for any Java developer (no framework, few dependencies) But also a Web UI for discovering and testing the protocol
  • 23. History Started 22 Jul. 2013 @ Sierra Wireless First external contribution 10 March 2014 Public sandbox Jul. 2014 Proposed as an Eclipse project Sep. 2014 Client contributed Oct. 2014
  • 24. Details Who? Move under Eclipse rules New sandbox: http://leshan.eclipse.org
  • 25. Committers Simon Bernard - Sierra Wireless Kai Hudalla - Bosch Software Innovations J.F. Schloman - Zebra Technologies, Zatar Manuel SangoĂŻ - Sierra Wireless Julien Vermillard - Sierra Wireless
  • 26. Features Client initiated bootstrap Registration/Deregistration Read, Write, Create objects TLV encoding/decoding OSGi friendly
  • 27. Features DTLS Pre shared key DTLS Raw public key Standalone web-UI for testing
  • 28. Modules leshan-core commons elements leshan-server-core server lwm2m logic leshan-server-cf californium server leshan-client client leshan-all everything above in 1 jar leshan-client-example leshan-standalone application with web UI leshan-bs-server standalone bootstrap leshan-integration-tests
  • 29. Server Simple Java library Build using “mvn install” Based on Californium and Scandium Under refactoring for accepting other CoAP lib
  • 30. Server API example public void start() { // Build LWM2M server LeshanServerBuilder builder = new LeshanServerBuilder(); lwServer = builder.build(); lwServer.getClientRegistry().addListener(new ClientRegistryListener() { @Override public void registered(Client client) { System.out.println("New registered client with endpoint: " + client.getEndpoint()); } @Override public void updated(Client clientUpdated) { System.out.println("Registration updated”); } @Override public void unregistered(Client client) { System.out.println("Registration deleted”); } }); // start lwServer.start(); System.out.println("Demo server started"); }
  • 31. Server API example // prepare the new value LwM2mResource currentTimeResource = new LwM2mResource(13, Value.newDateValue(new Date())); // send a write request to a client WriteRequest writeCurrentTime = new WriteRequest(client, 3, 0, 13, currentTimeResource, ContentFormat.TEXT, true); ClientResponse response = lwServer.send(writeCurrentTime); System.out.println("Response to write request from client " + client.getEndpoint() + ": " + response.getCode());
  • 32. Implements your own store ClientRegistry: Store currently registered clients SecurityRegistry: Store security informations Default implementations are “in-memory” for demo only!
  • 33. Client Under construction! API will probably change Create objects, answer to server requests DTLS supported in master Checkout: leshan-client-example
  • 34. Next steps Eclipse.org migration DTLS X.509 CoAP shim, CoAP TCP Stable API for June To be done: Json SMS Server initiated bootstrap
  • 35. How to help? Use it! Report bugs, issue, missing features Write documentation Talk about it (in your company, IoT meetup,...) Contribute code Questions? https://dev.eclipse.org/mailman/listinfo/leshan-dev
  • 36. Eclipse Wakaama Lightweight M2M implementation in C Photo credits: https://www.flickr.com/photos/30126248@N00/2890986348
  • 37. Wakaama: Who is using it? Directly as a library? Copy/pasted some code? Testing? ?
  • 38. Wakaama A C client and server implementation of LwM2M Not a shared library (.so/.dll) Embedded friendly but using malloc/free Plug your own IP stack and DTLS implementation
  • 39. History Started as liblwm2m by Intel on May 2013 https://github.com/01org/liblwm2m Proposed as Eclipse project Dec. 2013 Code imported at Eclipse July 2014
  • 40. Who? David Navarro - Intel Julien Vermillard - Sierra Wireless
  • 41. Features Register, registration update, deregister Read, write resources Read, write, create, delete object instances TLV or plain text Observe
  • 42. Structure core : internals.h liblwm2m.c liblwm2m.h list.c management.c objects.c observe.c packet.c registration.c tlv.c transaction.c uri.c utils.c core/er-coap-13 : er-coap-13.c er-coap-13.h
  • 44. lwm2m_object_t * get_object_device() { lwm2m_object_t * deviceObj; deviceObj = (lwm2m_object_t *)lwm2m_malloc(sizeof(lwm2m_object_t)); if (NULL != deviceObj) { memset(deviceObj, 0, sizeof(lwm2m_object_t)); deviceObj->objID = 3; deviceObj->readFunc = prv_device_read; deviceObj->writeFunc = prv_device_write; deviceObj->executeFunc = prv_device_execute; deviceObj->userData = lwm2m_malloc(sizeof(device_data_t)); if (NULL != deviceObj->userData) { ((device_data_t*)deviceObj->userData)->time = 1367491215; strcpy(((device_data_t*)deviceObj->userData)->time_offset, "+01:00"); } else { lwm2m_free(deviceObj); deviceObj = NULL; } } return deviceObj; } Create objects!
  • 45. objArray[0] = get_object_device(); if (NULL == objArray[0]) { fprintf(stderr, "Failed to create Device objectrn"); return -1; } objArray[1] = get_object_firmware(); if (NULL == objArray[1]) { fprintf(stderr, "Failed to create Firmware objectrn"); return -1; } objArray[2] = get_test_object(); if (NULL == objArray[2]) { fprintf(stderr, "Failed to create test objectrn"); return -1; } lwm2mH = lwm2m_init(prv_connect_server, prv_buffer_send, &data); if (NULL == lwm2mH) { fprintf(stderr, "lwm2m_init() failedrn"); return -1; } result = lwm2m_configure(lwm2mH, "testlwm2mclient", BINDING_U, NULL, OBJ_COUNT, objArray); ... result = lwm2m_start(lwm2mH); Configure Wakaama
  • 46. while (0 == g_quit) { struct timeval tv; tv.tv_sec = 60; tv.tv_usec = 0; /* * This function does two things: * - first it does the work needed by liblwm2m (eg. (re)sending some packets). * - Secondly it adjust the timeout value (default 60s) depending on the state of the transaction * (eg. retransmission) and the time between the next operation */ result = lwm2m_step(lwm2mH, &tv); if (result != 0) { fprintf(stderr, "lwm2m_step() failed: 0x%Xrn", result); return -1; } Active loop
  • 47. Next? Device initiated bootstrap More example: https://github. com/jvermillard/Wakaama-mbed Server? Block transfer?
  • 48. Hack it into real devices! Courtesy of Bosch Software Innovations!
  • 49. Spark Core Cortex-M3 STM32, RAM/ROM 20/128k, 72MHz WiFi wakaama (old: 09.2014 version)+TinydTLS-0.5: ROM/RAM: 75,6kB/13,1kB
  • 50. U-blox MBed.org Cortex-M3 (NXP LPC1768), RAM/ROM 20/128k, 96MHz GPRS Current BOSCH wakaama-snapshot: Function: observe, attribute: Objects: server, security, device, conn_m, firmware, location, ROM/RAM: 84kB/22kB
  • 51. Arduino AVR, ATmega2560, RAM/ROM 8/256k, 16MHz Ethernet Current BOSCH wakaama-snapshot: Function: observe, attribute: Objects: server, security, device, conn_m, firmware, location, ROM/RAM: 67kB/5kB
  • 52. Lua binding https://github.com/sbernard31/lualwm2m With DTLS support using: https://github.com/sbernard31/luadtls binding on http://tinydtls.sf.net