building an open internet of things with java & eclipse iot · building an open internet of...

31
Building an open Internet of Things with Java & Eclipse IoT Benjamin Cabé Eclipse Foundation

Upload: lehuong

Post on 17-Apr-2018

220 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Building an open Internet of Things with Java & Eclipse IoT

Benjamin Cabé – Eclipse Foundation

Page 2: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

IoT is Big

Page 3: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers
Page 4: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Java for IoT? ●  9+ million Java developers ●  Java 8 & embedded are fun ●  Lots of IoT devices running on ARM ●  Tooling

Page 5: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Open IoT Stack for Java

Page 6: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Actuators/Sensors +

Gateway +

[ Cloud ] +

User front-end

End-to-end IoT with Java?

Page 7: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Sensors / Actuators ●  Manipulate sysfs directly

●  Use Pi4J to have full support of GPIO/I2C/SPI

●  Device I/O API with Java or Java ME

Page 8: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Sensors / Actuators ●  Pi4J – http://pi4j.com

o  Complete access to GPIOs/I2C/SPI o  Very mature codebase, based on WiringPi o  Support for popular shields (PiFace, Gertboard, …) o  Lots of code samples

Page 9: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Pi4J in action

GpioController gpio = GpioFactory.getInstance(); GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin( RaspiPin.GPIO_01, "MyLED", PinState.HIGH); Thread.sleep(5000); pin.low(); Thread.sleep(5000); pin.toggle(); gpio.shutdown();

Page 10: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Gateway

Page 11: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Gateway

Page 12: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Gateway

Page 13: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Gateway

Connect sensors to the world

Manage the hardware and software running

at the edge

Page 14: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Connect? ●  CoAP

o  « HTTP over UDP » o  Expose your device as a resource to the Internet of

Things

●  MQTT o  Publish/Subscribe model o  More room for local processing

Page 15: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

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

Page 16: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

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

Page 17: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

MQTT: Publish & Subscribe

BROKER

Page 18: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Eclipse Paho ●  Open-source MQTT clients

●  Pick your language! o  Java o  JavaScript o  C/C++, Objective C o  Go, Lua, Python, .NET, WinRT, …

http://eclipse.org/paho

Page 19: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

MQTT brokers ●  Eclipse Mosquitto

o  C implementation

o  Scalable (1000 clients == 3MB RAM)

●  Eclipse Moquette o  Java implementation o  Based on Netty and LMAX disruptor

Page 20: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Manage? ●  Gateway itself

o  wireless modem, firewall, … ●  Applications

o  Install/Uninstall software packages o  Start/Stop applications

●  Sensors o  H/W abstraction layer

Page 21: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Java VM OSGi Application Container

Device Abstraction

Gateway Basic Services

Network Configuration Network Management Field Protocols

Connectivity and Delivery

Adm

inis

trat

ion

GU

I

Ope

ratio

n &

Man

agem

ent

Linux

Hardware

App 1 App 2 App n . . . . Applications

Eclipse Kura

Page 22: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Installing Kura cd  ~  

sudo  apt-­‐get  update  

wget  https://s3.amazonaws.com/kura_downloads/raspbian/release/  \                                                    1.1.0/kura_1.1.0_raspberry-­‐pi_armv6.deb  

sudo  dpkg  -­‐i  kura_1.1.0_raspberry-­‐pi_armv6.deb  

sudo  apt-­‐get  install  -­‐f  

sudo  reboot  

 

Page 23: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

First steps with Kura ●  Network management

o  Cellular Modem, WiFi o  Firewall o  NAT

●  OSGi and system administration

●  IoT server communication settings

Page 24: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Kura API ●  OSGi services that you can re-use in your own

components o  ClockService o  DataService, CloudService o  CryptoService (AES, base64, SHA-1) o  PositionService (geolocation) o  … and many others

●  And of course you can leverage a huge ecosystem of Java and OSGi libraries

Page 25: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Demo time!

Page 26: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

End-user interaction

●  JavaFX Charts

●  Eclipse BIRT

●  Smartphone app (e.g Android) o  https://www.eclipse.org/paho/clients/android

●  MQTT + WebSockets = ♡ o  https://www.eclipse.org/paho/clients/js

Page 27: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Kura is awesome! Go download it now!

http://eclipse.org/kura

If you had to remember only 3 things...

#1

Page 28: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Build your own greenhouse & follow the tutorial

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

If you had to remember only 3 things...

#2

Page 29: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Eclipse Open IoT Stack for Java is much more than Kura

http://iot.eclipse.org/java

If you had to remember only 3 things...

#3

Page 30: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Get Involved!

Page 31: Building an open Internet of Things with Java & Eclipse IoT · Building an open Internet of Things with Java & Eclipse IoT ... IoT is Big . Java for IoT? 9+ million Java developers

Thank you! Questions?

[email protected] @kartben

http://iot.eclipse.org