Upload
lehuong
View
215
Download
2
Embed Size (px)
Citation preview
Building an open Internet of Things with Java & Eclipse IoT
Benjamin Cabé – Eclipse Foundation
IoT is Big
Java for IoT? ● 9+ million Java developers ● Java 8 & embedded are fun ● Lots of IoT devices running on ARM ● Tooling
Open IoT Stack for Java
Actuators/Sensors +
Gateway +
[ Cloud ] +
User front-end
End-to-end IoT with Java?
Sensors / Actuators ● Manipulate sysfs directly
● Use Pi4J to have full support of GPIO/I2C/SPI
● Device I/O API with Java or Java ME
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
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();
Gateway
Gateway
Gateway
Gateway
Connect sensors to the world
Manage the hardware and software running
at the edge
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
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
MQTT: Publish & Subscribe
BROKER
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
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
Manage? ● Gateway itself
o wireless modem, firewall, … ● Applications
o Install/Uninstall software packages o Start/Stop applications
● Sensors o H/W abstraction layer
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
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
First steps with Kura ● Network management
o Cellular Modem, WiFi o Firewall o NAT
● OSGi and system administration
● IoT server communication settings
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
Demo time!
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
Kura is awesome! Go download it now!
http://eclipse.org/kura
If you had to remember only 3 things...
#1
Build your own greenhouse & follow the tutorial
http://iot.eclipse.org/java/tutorial
If you had to remember only 3 things...
#2
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
Get Involved!