End-to-End IoT Solutions with Java and the Eclipse IoT...
Transcript of End-to-End IoT Solutions with Java and the Eclipse IoT...
The Internet of Things
will be built on open source
The Internet of Things
is NOT a Market
Scale
Innovation
Open Source enables:
• Permissionless innovation
• Innovation through integration
• Far higher levels of experimentation
Connect and Interoperate
Developers
The Power of Developer Choice
A Current Example
Google Trends for “MQTT”
Open sourced
here
The Money Will Not Be In Software
Source: http://www.bloomberg.com/news/articles/2015-02-05/six-things-technology-has-made-insanely-cheap
Connect and Manage Devices
IoT?
In reality...
In reality...
… Internet of Silos
fragmentation
fragmentation complexity
fragmentation complexity lock-in
Eclipse IoT
Vision
Founded in 2011 by IBM,
Eurotech, Sierra Wireless
Founded in 2011 by IBM,
Eurotech, Sierra Wireless
20 open-source projects*
Lots of Java but also C,
C++, Python, Go, .Net, …
* and counting!
→IoT Standards
→Services & Frameworks
Eclipse IoT Projects
End-to-end IoT?
End-to-end IoT?
End-to-end IoT?
End-to-end IoT?
CONNECT
CONNECT MANAGE
ANALYZE CONNECT MANAGE
Connecting things to the IoT?
Network is often not reliable
Bandwidth == $$$
Different communication patterns
CoAP
« HTTP over UDP »
Expose your device as a resource on the Internet of
Things
MQTT
Publish/Subscribe model
TCP-based
Connecting things to the IoT
CoAP: The web-of-things
/walk
/hand/left/raise
/eye/picture
/on
/red
/green
/blue
/mtbf
/on
/on
/buttons
/buttons/1/push
/bat-level
/engine/status
/position
/fuel /CO2
/noise
/lights/on
Eclipse Californium
Focus on scalability and usability
To be used in IoT cloud servers or M2M/IoT
devices running Java
Includes DTLS implementation (Scandium),
HTTP/CoAP bridge, Plugtests, …
http://eclipse.org/californium
Californium 101
CoapServer, CoapResource, CoapExchange
1.Implement custom resources
(extend CoapResource)
2.Add resources to the CoAP server
3.Start the server
MQTT: Publish & Subscribe
BROKE
R
Eclipse Paho
Open-source MQTT clients
Pick your language!
Java
JavaScript
C/C++, Objective C
Go, Lua, Python, .NET, WinRT, …
http://eclipse.org/paho
Open source MQTT brokers
Eclipse Mosquitto (iot.eclipse.org)
C implementation
Pretty scalable (1000 clients == 3MB RAM)
But also…
Moquette (Java, Based on Netty and LMAX disruptor)
VerneMQ (Erlang)
Mosca (Node.js)
⇒ https://github.com/mqtt/mqtt.github.io/wiki/servers
CONNECT MANAGE
✔ ANALYZE
CONNECT MANAGE
✔ ??? ANALYZE
Yup, lots of aspects to manage
Network → PPP cellular connection, WiFi hotspot, Zigbee
coordination, VPN, firewall …
→ offline/online mode
Applications → Remote install, start, stop, configure, …
→ Sandboxing
Hardware
Gateways to the rescue!
Gateway
Gateway
Java VM
OSGi Application Container
Device Abstraction
Gateway Basic Services
Network Configuration Network Management Field
Protocols
Connectivity and Delivery
Ad
min
istr
ati
on
GU
I
Op
era
tio
n &
Ma
nag
em
en
t
Linux
Hardware
App 1 App 2 App n . . . .
Applications
Eclipse Kura
Kura API
OSGi services that you can re-use in your
own components
ClockService
DataService, CloudService
CryptoService (AES, base64, SHA-1)
PositionService (geolocation)
… and many others
And of course you can leverage a huge
ecosystem of Java and OSGi libraries
Device Management is also...
LightweightM2M
LWM2M is an Open Mobile Alliance Standard
Device Management on top of CoAP
Eclipse Leshan and Wakaama are two
implementations
CONNECT MANAGE
✔ ✔ ANALYZE
End-user interaction
JavaFX Charts
Eclipse BIRT
Smartphone app (e.g Android) https://www.eclipse.org/paho/clients/android
MQTT + WebSockets = ♡ https://www.eclipse.org/paho/clients/js
CONNECT MANAGE
✔ ✔ ✔ ANALYZE
Eclipse IoT is also…
Flexible Framework
Based on Java and OSGi
Huge number of “bindings”:
KNX, Nest, Philips HUE, …
Eclipse IoT is also...
Server Platform
Software provisioning https://projects.eclipse.org/proposals/hawkbit
Uniform service interface for Telemetry and Command
& Control
https://projects.eclipse.org/proposals/hono
Eclipse IoT is also…
Industrial IoT
Open source implementations of IEC standards Eclipse neoSCADA: Siemens S7 PLC, IEC 60870-4-
105, …
4DIAC: 61499
Rise V2G: IEC 15118
Eclipse IoT is also...
Information Models
Eclipse Vorto allows to create and manage
device descriptions + associated toolchains
(code generators)
Get Involved! Use Eclipse IoT Technology
in your products
Open bugs / fix bugs
Request new features
Write articles, tutorials
Participate on the mailing
lists
Come to EclipseCon/IoT!
Propose your project!
Thank you! Questions?
@mmilinkov
http://iot.eclipse.org
http://iot.eclipse.org/java