Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Android &
Eclipse M2M:
will it blend?

December 18th, 2013

EclipseDay Googleplex 2013
Who I am

•  Benjamin Cabé
•  Open Source M2M
Evangelist at Sierra Wireless
•  Eclipse M2M WG chairperson
M2M?
M2M?
IoT?
Technology that supports
wired or wireless
communication
between devices
Typical architecture
Healthcare example
IOT
IOT
However…
It’s not as easy as it looks
Network is unreliable
Network is unreliable
Objects need to be ID’d
Network is unreliable
Objects need to be ID’d
Embedded is complex
When all you want to do…
POST /turnOn
GET /temperature
Eclipse M2M
building blocks
Eclipse M2M
building blocks
protocols
frameworks
tools
Network is unreliable
MQTT
MQTT?
MQTT?
M = Messaging
MQTT?
M = Messaging
Publish/subscribe protocol
MQTT?
M = Messaging
Publish/subscribe protocol
Lightweight (bandwidth, battery, …)
21.3

21.3
Show me the code!
embedded device
Show me the code!
var mqtt = require('mqtt');	
var c = mqtt.createClient(1883, 

	 	 	 	 	 	 	 	 	'm2m.eclipse.org');	
cli...
Show me the code!
var mqtt = require('mqtt');	
var c = mqtt.createClient(1883, 

	 	 	 	 	 	 	 	 	'm2m.eclipse.org');	
cli...
Show me the code!
var mqtt = require('mqtt');	
var c = mqtt.createClient(1883, 

	 	 	 	 	 	 	 	 	'm2m.eclipse.org');	
cli...
Show me the code!
var mqtt = require('mqtt');	
var c = mqtt.createClient(1883, 

	 	 	 	 	 	 	 	 	'm2m.eclipse.org');	
cli...
Show me the code!
Android device
Show me the code!
MqttClient mqttClient = new MqttClient

	 	 	 	(

	 	 	 	 "tcp://m2m.eclipse.org:1883",

	 	 	 	 MqttCli...
Show me the code!
MqttClient mqttClient = new MqttClient

	 	 	 	(

	 	 	 	 "tcp://m2m.eclipse.org:1883",

	 	 	 	 MqttCli...
Show me the code!
MqttClient mqttClient = new MqttClient

	 	 	 	(

	 	 	 	 "tcp://m2m.eclipse.org:1883",

	 	 	 	 MqttCli...
Show me the code!
MqttClient mqttClient = new MqttClient

	 	 	 	(

	 	 	 	 "tcp://m2m.eclipse.org:1883",

	 	 	 	 MqttCli...
Show me the code!
Callback code:
mqttClient.setCallback(new MqttCallback() {	
	@Override	
	public void messageArrived(Stri...
Show me the code!
Callback code:
mqttClient.setCallback(new MqttCallback() {	
	@Override	
	public void messageArrived(Stri...
Simple but not Stupid
•  QoS
–  at most once, at least once, exactly once, …

•  “Last will & Testament”
–  automatically ...
More about MQTT

http://eclipse.org/paho

http://mqtt.org

http://eclipse.org/mosquitto
Network is unreliable
Objects need to be ID’d
So… now my objects talk
… to me?
NFC

RFID

QR Code

Bluetooth LE
How about
*

*?
AR

Augmented Reality
Demo!
Connected greenhouse
Raspberry Pi +
NodeJS MQTT client
Raspberry Pi +
NodeJS MQTT client
MQTT broker
m2m.eclipse.org

Raspberry Pi +
NodeJS MQTT client
MQTT broker
m2m.eclipse.org

Raspberry Pi +
NodeJS MQTT client
MQTT broker
m2m.eclipse.org

Raspberry Pi +
NodeJS MQTT client

Nexus 10 +
Java MQTT client +
metaio SDK
Network is unreliable
Objects need to be ID’d
Embedded is complex
Lua

Java
ation
e autom
Hom
Ready to Play?
Ready to Play?
Data consolidation
Ready to Play?
Data consolidation
Alerting
Ready to Play?
Data consolidation
Alerting
User management
Ready to Play?
Data consolidation
Alerting
User management
etc.
Management dashboards
System diagnostics
(Big!) Data history
Register for a free trial!

http://airvantage.net
Get a greenhouse kit!

http://airvantage.github.io/devkit
http://m2m.eclipse.org
Thanks!
Benjamin Cabé

bcabe@sierrawireless.com | @kartben
Android and Eclipse M2M - EclipseDay Googleplex
Android and Eclipse M2M - EclipseDay Googleplex
Android and Eclipse M2M - EclipseDay Googleplex
Android and Eclipse M2M - EclipseDay Googleplex
Android and Eclipse M2M - EclipseDay Googleplex
Android and Eclipse M2M - EclipseDay Googleplex
Android and Eclipse M2M - EclipseDay Googleplex
Android and Eclipse M2M - EclipseDay Googleplex
Android and Eclipse M2M - EclipseDay Googleplex
Android and Eclipse M2M - EclipseDay Googleplex
Android and Eclipse M2M - EclipseDay Googleplex
Upcoming SlideShare
Loading in …5
×

Android and Eclipse M2M - EclipseDay Googleplex

58 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Android and Eclipse M2M - EclipseDay Googleplex

  1. 1. Android & Eclipse M2M: will it blend? December 18th, 2013 EclipseDay Googleplex 2013
  2. 2. Who I am •  Benjamin Cabé •  Open Source M2M Evangelist at Sierra Wireless •  Eclipse M2M WG chairperson
  3. 3. M2M?
  4. 4. M2M? IoT?
  5. 5. Technology that supports wired or wireless communication between devices
  6. 6. Typical architecture Healthcare example
  7. 7. IOT
  8. 8. IOT
  9. 9. However… It’s not as easy as it looks
  10. 10. Network is unreliable
  11. 11. Network is unreliable Objects need to be ID’d
  12. 12. Network is unreliable Objects need to be ID’d Embedded is complex
  13. 13. When all you want to do…
  14. 14. POST /turnOn GET /temperature
  15. 15. Eclipse M2M building blocks
  16. 16. Eclipse M2M building blocks protocols frameworks tools
  17. 17. Network is unreliable
  18. 18. MQTT
  19. 19. MQTT?
  20. 20. MQTT? M = Messaging
  21. 21. MQTT? M = Messaging Publish/subscribe protocol
  22. 22. MQTT? M = Messaging Publish/subscribe protocol Lightweight (bandwidth, battery, …)
  23. 23. 21.3 21.3
  24. 24. Show me the code! embedded device
  25. 25. Show me the code! var mqtt = require('mqtt'); var c = mqtt.createClient(1883, 
 'm2m.eclipse.org'); client.on('message’, cb); client.subscribe('/kettle232/switch'); client.publish('/kettle232/temp', '21.3'); var cb = function(topic, message) { // turn the kettle on/off }
  26. 26. Show me the code! var mqtt = require('mqtt'); var c = mqtt.createClient(1883, 
 'm2m.eclipse.org'); client.on('message’, cb); client.subscribe('/kettle232/switch'); client.publish('/kettle232/temp', '21.3'); var cb = function(topic, message) { // turn the kettle on/off }
  27. 27. Show me the code! var mqtt = require('mqtt'); var c = mqtt.createClient(1883, 
 'm2m.eclipse.org'); client.on('message’, cb); client.subscribe('/kettle232/switch'); client.publish('/kettle232/temp', '21.3'); var cb = function(topic, message) { // turn the kettle on/off }
  28. 28. Show me the code! var mqtt = require('mqtt'); var c = mqtt.createClient(1883, 
 'm2m.eclipse.org'); client.on('message’, cb); client.subscribe('/kettle232/switch'); client.publish('/kettle232/temp', '21.3'); var cb = function(topic, message) { // turn the kettle on/off }
  29. 29. Show me the code! Android device
  30. 30. Show me the code! MqttClient mqttClient = new MqttClient
 (
 "tcp://m2m.eclipse.org:1883",
 MqttClient.generateClientId()
 ); mqttClient.setCallback(…); mqttClient.connect(); mqttClient.subscribe("/teapot24232/#"); // the rest of your app
  31. 31. Show me the code! MqttClient mqttClient = new MqttClient
 (
 "tcp://m2m.eclipse.org:1883",
 MqttClient.generateClientId()
 ); mqttClient.setCallback(…); mqttClient.connect(); mqttClient.subscribe("/teapot24232/#"); // the rest of your app
  32. 32. Show me the code! MqttClient mqttClient = new MqttClient
 (
 "tcp://m2m.eclipse.org:1883",
 MqttClient.generateClientId()
 ); mqttClient.setCallback(…); mqttClient.connect(); mqttClient.subscribe("/teapot24232/#"); // the rest of your app
  33. 33. Show me the code! MqttClient mqttClient = new MqttClient
 (
 "tcp://m2m.eclipse.org:1883",
 MqttClient.generateClientId()
 ); mqttClient.setCallback(…); mqttClient.connect(); mqttClient.subscribe("/teapot24232/#"); // the rest of your app
  34. 34. Show me the code! Callback code: mqttClient.setCallback(new MqttCallback() { @Override public void messageArrived(String topic, 
 MqttMessage message) throws Exception { // process received message
 // e.g. display temperature value } // ... });
  35. 35. Show me the code! Callback code: mqttClient.setCallback(new MqttCallback() { @Override public void messageArrived(String topic, 
 MqttMessage message) throws Exception { // process received message
 // e.g. display temperature value } // ... });
  36. 36. Simple but not Stupid •  QoS –  at most once, at least once, exactly once, … •  “Last will & Testament” –  automatically publish a message when a client goes offline
  37. 37. More about MQTT http://eclipse.org/paho http://mqtt.org http://eclipse.org/mosquitto
  38. 38. Network is unreliable Objects need to be ID’d
  39. 39. So… now my objects talk … to me?
  40. 40. NFC RFID QR Code Bluetooth LE
  41. 41. How about * *? AR Augmented Reality
  42. 42. Demo! Connected greenhouse
  43. 43. Raspberry Pi + NodeJS MQTT client
  44. 44. Raspberry Pi + NodeJS MQTT client
  45. 45. MQTT broker m2m.eclipse.org Raspberry Pi + NodeJS MQTT client
  46. 46. MQTT broker m2m.eclipse.org Raspberry Pi + NodeJS MQTT client
  47. 47. MQTT broker m2m.eclipse.org Raspberry Pi + NodeJS MQTT client Nexus 10 + Java MQTT client + metaio SDK
  48. 48. Network is unreliable Objects need to be ID’d Embedded is complex
  49. 49. Lua Java ation e autom Hom
  50. 50. Ready to Play?
  51. 51. Ready to Play? Data consolidation
  52. 52. Ready to Play? Data consolidation Alerting
  53. 53. Ready to Play? Data consolidation Alerting User management
  54. 54. Ready to Play? Data consolidation Alerting User management etc.
  55. 55. Management dashboards
  56. 56. System diagnostics
  57. 57. (Big!) Data history
  58. 58. Register for a free trial! http://airvantage.net
  59. 59. Get a greenhouse kit! http://airvantage.github.io/devkit
  60. 60. http://m2m.eclipse.org
  61. 61. Thanks! Benjamin Cabé bcabe@sierrawireless.com | @kartben

×