Open IoT

Mike Milinkovich @mmilinkov [email protected] 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++, Python, Go, .Net, …

→IoT Standards →Services & Frameworks

* and counting! Eclipse IoT Projects End-to-end IoT? End-to-end IoT? End-to-end IoT? End-to-end IoT? CONNECT CONNECT MANAGE CONNECT MANAGE ANALYZE Connecting things to the IoT? Network is often not reliable Bandwidth == $$$ Different communication patterns Connecting things to the IoT CoAP « HTTP over UDP » Expose your device as a resource on the Internet of Things MQTT Publish/Subscribe model TCP-based CoAP: The web-of-things /on

/on /on /red /green /blue /mtbf

/walk /buttons /hand/left/raise /buttons/1/push /eye/picture /bat-level

/engine/status /position /CO2 /fuel /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 Eclipse Kura

Applications

App 1 App 2 . . . . App n

Connectivity and Delivery

Network Configuration

Network Management Field Operation &

Management Protocols

Gateway Basic Services Administration GUI

Device Abstraction

OSGi Application Container Java VM

Linux Hardware 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?

[email protected] @mmilinkov

http://iot.eclipse.org http://iot.eclipse.org/java