3 Software Stacks for IoT Solutions
Ian SkerrettEclipse Foundation
@ianskerrett
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Eclipse Foundation
• Not-for-profit open source foundation responsible for the Eclipse community
• 320+ open source projects• Working groups for Geo-spatial tech, IoT,
System engineering and embedded dev., Science, Automotive, …
• 250+ members
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
IoT?
Applications Collect, exchange & analyze data
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
IoT?
Applications
Sensing / Actuating
Interact with the physical world
Collect, exchange & analyze data
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
IoT?
Applications
Networking & Data
Communications
Sensing / Actuating
Interact with the physical world
Bridge the physical world to the Internet
Collect, exchange & analyze data
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Typical IoT Architecture
Devices(sensors & actuators)
Applications
telemetry
commands
telemetry
commands
IoT Cloud Platform
Gateways
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Role & CharacteristicsDEVICE GATEWAY / SMART OBJECT CLOUD PLATFORM
constrained
low-power
specialized
connectivity
messaging
edge computing
scale out
integration
data analytics
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
The 3 IoT Software StacksTOOLS &
SDKsONTOLOGIESSECURITY
CONSTRAINED DEVICES
Hardware Abstraction Layer (HAL)
OS / RTOS
CommunicationRe
mot
e M
anag
emen
tField protocols
IoT protocols
IOT CLOUD PLATFORM
Conn
ecti
vity
Mes
sage
Rou
ting
OS / PaaS
Device Management
Data Management
Event Management, Analytics & UI
Device Registry
Application Enablement
GATEWAYS AND SMART DEVICES
Rem
ote
Man
agem
ent
Application Runtime
Data Management & Messaging
OS / RTOS
Connectivity
Field protocols IoT protocols
Network Management
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Communication
IoT Device StackOS / RTOS*
* optional
timers, tasks, file system, …
API enabling access to memory, GPIOs, MEMS, serial interfaces ,…
Protocols such as Bluetooth, Z-Wave, Thread, CAN bus, MQTT, CoAP, …
over-the-air firmware upgrade, health monitoring, factory reset, …
OS / RTOS
Hardware Abstraction Layer (HAL)
RemoteManagement
Hardware Abstraction Layer (HAL)
OS / RTOS
CommunicationRe
mot
e M
anag
emen
tField protocols
IoT protocols
CONSTRAINED DEVICES
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Application Runtime
Network Management
Data Management& Messaging
IoT Gateway Stack
connect to different types of networksensure reliability, security (VPN, firewall, …)
local persistence (network latency)offline modedata analytics at the edge
Virtual Machine / Application container
GATEWAYS AND SMART DEVICES
Re
mot
e M
anag
emen
t
Application Runtime
Data Management & Messaging
OS / RTOS
Connectivity
Field protocols IoT protocols
Network Management
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
IoT Cloud Platform Stack
ingest and normalize huge amounts of data into an enterprise backend
identify devices, allow for over-the-air software provisioning, configuration changes, …
scalable data store, time seriesIOT CLOUD PLATFORM
Conn
ecti
vity
Mes
sage
Rou
ting
OS / PaaS
Device Management
Data Management
Event Management,
Analytics & UI
Device Registry
Application Enablement
Connectivity Message Routing
Device Registry
Device Management
Data Management
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
IoT Cloud Platform Stack (cont’d)
scalable event processingcreate reports, graphs, dashboards, …make decisions based on the data
expose API for application integration
Event Management, Analytics & UI
Application Enablement
IOT CLOUD PLATFORM
Conn
ecti
vity
Mes
sage
Rou
ting
OS / PaaS
Device Management
Data Management
Event Management, Analytics & UI
Device Registry
Application Enablement
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Cross-layer concerns
SECURITY ONTOLOGIES
TOOLS
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Characteristics of Open IoT Stacks
loosely coupled
modular
platform-independant
based on open standards
API
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Eclipse IoT?
Eclipse IoT is an open source community aimed atbuilding and promoting
open source software, open standards & open collaboration models
needed to create an Open Internet of Things
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Our members
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Eclipse IoT…
from building blocks … to
stacks
…
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Hardware Abstraction Layer (HAL)
OS / RTOS
CommunicationRe
mot
e M
anag
emen
tField protocols
IoT protocols
CONSTRAINED DEVICES
OS Stack for IoT Devices
Wakaama C implementation of OMA LWM2MPortable on any POSIX-compliant system
C implementation of MQTT 3.1.1< 2,000 lines of C ANSI code
JAVA API for MCUs“Android for IoT”
Hardware Abstraction Layer (HAL)
OS / RTOS
CommunicationRe
mot
e M
anag
emen
tField protocols
IoT protocols
CONSTRAINED DEVICES
OS Stack for IoT Devices
Wakaama C implementation of OMA LWM2MPortable on any POSIX-compliant system
C implementation of MQTT 3.1.1< 2,000 lines of C ANSI code
JAVA API for MCUs“Android for IoT”
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Eclipse Edje
Hardware Abstraction Java API for IoT embedded systemsPeripheral managementController Communication Interfaces (Serial connection,
CAN, SPI, I²C)Digital and Analog I/O (GPIO, ADC, DAC)
ScopeTarget resource-constrained micro-controllersProvide ready-to-use software packages for target
hardwareDefine a modular and easy to port framework
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Eclipse Edje requirements
Processor: 32-bits (e.g. Cortex-M0)Frequency: 16 MHzRAM: 32 KBFlash: 128 KB
Example: STM32F4 Discovery Processor: 32-bits Cortex-M4 (STM32F407VGT6)Frequency: 168 MHzRAM: 192 KBFlash: 1 MB
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
OS Stack for IoT Gateways
OSGi implementation
Native support for MQTTSerial, RS-485, BLE, MODBUS, OPC-UA, CAN Bus, …
NAT, firewall, modem configuration, …
Remote Management over MQTT
Milo
GATEWAYS AND SMART DEVICES
Re
mot
e M
anag
emen
t
Application Runtime
Data Management & Messaging
OS / RTOS
Connectivity
Field protocols
IoT protocols
Network Management
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Java VMOSGi Application Container
Device Abstraction
Gateway Basic Services
Network ConfigurationNetwork Management Field
Protocols
Connectivity and Delivery
Adm
inis
trat
ion
GU
I
Ope
rati
on &
M
anag
emen
t
LinuxHardware
App 1 App 2 App n. . . .
Applications
Eclipse Kura
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
GATEWAYS AND SMART DEVICES
Re
mot
e M
anag
emen
t
Application Runtime
Data Management & Messaging
OS / RTOS
Connectivity
Field protocols
IoT protocols
Network Management
OS Stack for Home Automation
OSGi implementation
Rule engine to orchestrate “things”Home automation protocols such asBelkin WeMo, LIFX, Philips Hue, …
Remote firmware update through the GWWeb UI and API for remote control
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Eclipse SmartHome
Extension Points
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
OS Stack for IoT Cloud
IOT CLOUD PLATFORM
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
OS Stack for IoT Cloud
Device Management
Device Registry
IOT CLOUD PLATFORM
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Device Management
Device Registry
OS Stack for IoT Cloud
OMA LWM2M implementation in Javabuilt on top of Eclipse Californium (CoAP)
Manage software upgrade campaignsindependently of the actual DM protocol
IOT CLOUD PLATFORM
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Eclipse Leshan
Java implementation of OMA LWM2MSandbox hosted at http://leshan.eclipse.org
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Eclipse hawkBit
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
IOT CLOUD PLATFORM
Conn
ecti
vity
OS Stack for IoT Cloud
C implementation of an MQTT serverMQTT 3.1.1 compliantScalable (1000 clients = 3MB RAM)Extensible (e.g authentication plug-ins)
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
IOT CLOUD PLATFORM
Conn
ecti
vity
Mes
sage
Rou
ting
OS / PaaS
Device Management
Data Management
Event Management, Analytics & UI
Device Registry
Application Enablement
OS Stack for IoT Cloud Platform
Abstract the actual communication protocols via “protocol adapters”
Deploy on:
An Integration Platform for IoT Services
NoSQL data store
REST API
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Eclipse Hono
Eclipse Hono provides a uniform API for interacting with millions of devices connected to the cloud via arbitrary protocolsExample:
<<Protocol Adapter>>
MQTT<<Application>>
‘Track my
Tools’
BT LE
AMQP 1.0AMQP 1.0MQTT
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Eclipse Kapua
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Cross-layer concerns
SECURITY ONTOLOGIES
TOOLS
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Cross-layer concerns
SECURITY ONTOLOGIES
TOOLS
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Eclipse Keti (proposed)
Ability to maintain access-decision data as policies and attributes
Exclusive security for multiple clients using the service (ACS services are tenant-aware)
Support for fine-grained authorization policies
Contributed by GE, from the Predix platformSee http://tinyurl.com/eclipse-acs-proposal
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Cross-layer concerns
SECURITY ONTOLOGIES
TOOLS
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Eclipse Vorto
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Cross-layer concerns
SECURITY ONTOLOGIES
TOOLS
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Eclipse Paho – mqtt-spy
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Eclipse Paho – mqtt-spy
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Eclipse IoT Community
2.2 26* 210+ 110Kmillion
lines of codeprojects developers monthly
visitors
* and counting!
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Join us!
2.2 26* 210+ 110Kmillion
lines of codeprojects developers monthly
visitors
* and counting!
http://iot.eclipse.org
Thank you!
Backup slides
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
The 3 IoT Software StacksTOOLS &
SDKsONTOLOGIESSECURITY
CONSTRAINED DEVICES
Hardware Abstraction Layer (HAL)
OS / RTOS
CommunicationRe
mot
e M
anag
emen
tField protocols
IoT protocols
IOT CLOUD PLATFORM
Conn
ecti
vity
Mes
sage
Rou
ting
OS / PaaS
Device Management
Data Management
Event Management, Analytics & UI
Device Registry
Application Enablement
GATEWAYS AND SMART DEVICES
Rem
ote
Man
agem
ent
Application Runtime
Data Management & Messaging
OS / RTOS
Connectivity
Field protocols IoT protocols
Network Management
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
Eclipse IoT stack on Cloud Foundry
R
oute
r
Eclipse ACS
<<Hono Adapter>>
<<Hono Adapter>>
Kapua Web
Console
Kapua
UAA
Copyright © 2016 The Eclipse Foundation. All Rights Reserved
OS Stack for IoT Cloud
Great! But… what if:
↳I want my platform to archive the data?↳I want to support more than just MQTT?↳I want a multi-tenant solution?↳…