End-to-end IoT solutions
with Java and the
End-to-end IoT?
Actuators/Sensors + Gateway + [ Cloud ] + User front-end1. Sensors/Actuators
➔ Sense the physical environment ➔ Act on it
1. Sensors/Actuators
➔ Sense the physical environment ➔ Act on it
That was
easy, eh?
1. Sensors/Actuators
➔ Manipulate sysfs directly
➔ Use Pi4J to have full support of GPIO/I2C/SPI
Sensors/Actuators
➔ Pi4J – http://pi4j.com
✓ Complete access to GPIOs/I2C/SPI
✓ Very mature codebase, based on WiringPi ✓ Support for popular shields (PiFace,
Gertboard, …)
Pi4J in action
Gp o on o e p o Gp oFa o . e Ins an e();
Gp oP nD a Ou pu p n p o.p o s onD a Ou pu P n(
Rasp P n.GPIO_01, "M LED", P nS a e.HIGH);
Th ead.s eep(5000);
p n. ow();
Th ead.s eep(5000);
p n. o e();
Gateway
Connect
sensors to the world and software running at Manage the hardware the edge
Connect?
➔ CoAP
✓ « HTTP over UDP »
✓ Expose your device as a resource to the Internet of Things
➔ MQTT
✓ Publish/Subscribe model
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/onEclipse Californium
➔ Focus on scalability and usability ➔ To be used in IoT cloud servers or
M2M/IoT devices running Java ➔ Includes DTLS implementation
(Scandium),
Californium 101
oapSe e , oapResou e, oapEx han e
1. Implement custom resources (extend oapResou e)
2. Add resources to the CoAP server 3. Start the server
Californium 101
mpo s a o .e pse. a o n um. o e. oap. oAP.Response ode.*; // sho u s pub ass M Resou e ex ends oapResou e {
@O e de
pub o d hand eGET( oapEx han e ex han e) {
ex han e. espond("he o wo d"); // ep w h 2.05 pa oad ( ex /p a n)
}
@O e de
pub o d hand ePOST( oapEx han e ex han e) {
ex han e.a ep (); // ma e a sepa a e esponse
(ex han e. e Reques Op ons() ...) {
// do some h n spe o he eques op ons
}
ex han e. espond( REATED); // ep w h esponse ode on (sho u )
} }
MQTT: Publish & Subscribe
Sub KETTLE232/# Pub KETTLE232/temp Payload: 21°C Pub KETTLE232/temp Payload: 21°C BROKEREclipse Paho
➔ Open-source MQTT clients ➔ Pick your language!
✓ Java
✓ JavaScript
✓ C/C++, Objective C
Paho 101 (Java)
Mq en new Mq en (" p:// o .e pse.o :1883",
Mq en . ene a e en Id()); mq en .se a ba (new Mq a ba () {
@O e de
pub o d messa eA ed(S n op , Mq Messa e messa e) h ows Ex ep on { // p o ess e e ed messa e // ... } }); mq en . onne ();
MQTT brokers
➔ Eclipse Mosquitto
✓ C implementation
✓ Scalable (1000 clients == 3MB RAM)
➔ Eclipse Moquette
✓ Java implementation
Manage?
➔ Gateway itself
✓ wireless modem, firewall, …
➔ Applications
✓ Install/Uninstall software packages ✓ Start/Stop applications
➔ Sensors
Java VM
OSGi Application Container
Device Abstraction Gateway Basic Services
Network Configuration
Network Management Field Protocols Connectivity and Delivery
Administration GUI
Operation & Management
Linux Hardware
App 1 App 2 . . . . App n
Applications
Installing Kura
d ~
sudo ap - e upda e
w e h ps://s3.amazonaws. om/ u a_down oads/ aspb an/ e ease/1.1.0/ \
u a_1.1.0_ aspbe -p _a m 6.deb
sudo dp - u a_1.1.0_ aspbe -p _a m 6.deb
sudo ap - e ns a
First steps with Kura
➔ Network management
✓ Cellular Modem, WiFi ✓ Firewall
✓ NAT
➔ OSGi and system administration
Kura API
➔ OSGi services that you can re-use in your own components
✓ o Se e
✓ Da aSe e, oudSe e
✓ p oSe e (AES, base64, SHA-1) ✓ Pos onSe e (geolocation)
Practical example: Greenhouse
➔ A Senso Se e implementation leveraging Pi4J
for GPIO/I2C
➔ A configurable G eenhousePub she component that:
✓ consumes a Senso Se e (GPIO manipulation)
✓ consumes a Da aSe e (MQTT communication)
✓ exposes a Senso han edL s ene (be notified of external GPIO updates)
Talk is cheap…
And how about CoAP?
➔ Californium can easily be embedded in a Kura bundle
➔ Another OSGi component can:
✓ consume the Senso Se e ✓ expose CoAP resources
End-user interaction
➔ JavaFX Charts ➔ Eclipse BIRT
➔ Smartphone app (e.g Android)
✓ https://www.eclipse.org/paho/clients/android
➔ MQTT + WebSockets = ♡
If you had to remember only 3 things...
Kura is awesome! Go download it now! http://eclipse.org/kura
If you had to remember only 3 things...
Build your own greenhouse & follow the tutorial
http://iot.eclipse.org/java/tutorial
If you had to remember only 3 things...
Eclipse Open IoT Stack for Java is much more than Kura
http://iot.eclipse.org/java