JMS, WebSocket, and the Internet of Things - Controlling Physical Devices on the Real Time Web
- 1. © 2013 Kaazing Corporation. All Rights Reserved.
1
Controlling Physical Devices on
the Real Time Web
David Witherspoon
Prashant Khanal
Sep 25, 2013
- 2. © 2013 Kaazing Corporation. All Rights Reserved.
About Us
§ Prashant Khanal
§ Software Engineer – Kaazing
§ Prashant.Khanal@kaazing.com
§ Twitter: @ipras
§ David Witherspoon
§ Software Engineer – Kaazing
§ David.Witherspoon@kaazing.com
§ Twitter: @dpwspoon
- 4. © 2013 Kaazing Corporation. All Rights Reserved.
Agenda
§ Requirements for the IoT
§ Creating a reference architecture for IoT
§ Live Demos, Live Demos, Live Demos
§ Source Code, Source Code, Source Code
§ WoT and IoT
- 5. © 2013 Kaazing Corporation. All Rights Reserved.
Internet of Things
Ubiquitous/Pervasive
Heterogeneous
Highly Interconnected
Event-Driven/Real Time
Identifiable Components
Always On
Scalable
Manageable
- 6. © 2013 Kaazing Corporation. All Rights Reserved.
Raspberry Pi
Image source: http://www.oracle.com/technetwork/articles/java/raspberrypi-1704896.html
- 7. © 2013 Kaazing Corporation. All Rights Reserved.
Raspberry Pi Resources
§ RaspberryPi.org
§ Wheezy (OS)
§ Oracle JVM
§ Pi4J (Raspberry Pi Java Library)
- 10. © 2013 Kaazing Corporation. All Rights Reserved.
Raspberry Pi Controlling the Light Directly
- 11. © 2013 Kaazing Corporation. All Rights Reserved.
Raspberry Pi Controlling the Light Directly
- 12. © 2013 Kaazing Corporation. All Rights Reserved.
Raspberry Pi Controlling the Light Directly
- 13. © 2013 Kaazing Corporation. All Rights Reserved.
Raspberry Pi Controlling the Light Directly
- 15. © 2013 Kaazing Corporation. All Rights Reserved.
Raspberry Pi Reading from a Toggle Switch
- 16. © 2013 Kaazing Corporation. All Rights Reserved.
Raspberry Pi Reading from a Toggle Switch
- 17. © 2013 Kaazing Corporation. All Rights Reserved.
Raspberry Pi Reading from a Toggle Switch
- 19. © 2013 Kaazing Corporation. All Rights Reserved.
Messaging for the IoT
§ Messaging Style
§ Interconnected / Bidirectional
§ Dynamic States (Could be on or off)
§ Messaging Protocol Requirements
§ Identity
§ Data formats
§ Transactions
§ Acknowledgments
§ And more …
- 20. © 2013 Kaazing Corporation. All Rights Reserved.
Message Systems/Protocols for the IoT
§ Java Message Service (JMS)
§ Standard messaging API
§ Vendor independent
§ Pub / Sub
§ Loosely Coupled
- 21. © 2013 Kaazing Corporation. All Rights Reserved.
Controlling the Light Remotely Using Pub-Sub
- 23. © 2013 Kaazing Corporation. All Rights Reserved.
LightJmsTcpController Using JMS to Control a Light
- 24. © 2013 Kaazing Corporation. All Rights Reserved.
LightJmsTcpController Using JMS to Control a Light
- 25. © 2013 Kaazing Corporation. All Rights Reserved.
LightJmsTcpController Using JMS to Control a Light
- 26. © 2013 Kaazing Corporation. All Rights Reserved.
LightJmsTcpController Using JMS to Control a Light
- 27. © 2013 Kaazing Corporation. All Rights Reserved.
ToggleJmsTcpListener Using JMS to Send Events
- 28. © 2013 Kaazing Corporation. All Rights Reserved.
ToggleJmsTcpListener Using JMS to Send Events
- 29. © 2013 Kaazing Corporation. All Rights Reserved.
Controlling the Light Remotely Using Pub-Sub
- 30. © 2013 Kaazing Corporation. All Rights Reserved.
Challenges with TCP
§ Isolated networks
§ Firewalls
§ Ports
§ Web browsers
- 31. © 2013 Kaazing Corporation. All Rights Reserved.
How to Extend This to the Web
- 32. © 2013 Kaazing Corporation. All Rights Reserved.
Controlling the Light Remotely Using Pub-Sub Over the Web
- 33. © 2013 Kaazing Corporation. All Rights Reserved.
HTML5 WebSocket: TCP for the Web
§ Standard Protocol (IETF): RFC-6455
§ Standard API:
§ W3C: JavaScript
§ JSR 356: Java EE
§ Single socket, full-duplex
§ Low overhead: <1% of HTTP
§ Low latency: low milliseconds
§ SSL support
Full duplex
- 34. © 2013 Kaazing Corporation. All Rights Reserved.
Protocol Layering
TCP
JMS XMPP AMQP B2B FTP VNC mktdata etc
Browsers, Native Applications and IoT Devices
WebSocket
Gateway
Internet
WebSocket
Gateway
- 35. © 2013 Kaazing Corporation. All Rights Reserved.
Controlling the Light Remotely Using Pub-Sub Over the Web
- 37. © 2013 Kaazing Corporation. All Rights Reserved.
WebSocket with Brokers
- 38. © 2013 Kaazing Corporation. All Rights Reserved.
WebSocket with Brokers
- 39. © 2013 Kaazing Corporation. All Rights Reserved.
WebSocket with Brokers
- 40. © 2013 Kaazing Corporation. All Rights Reserved.
Internet of Things
- 41. © 2013 Kaazing Corporation. All Rights Reserved.
Internet of Things == Web of Things
- 43. © 2013 Kaazing Corporation. All Rights Reserved.
The Web of Things
- 44. © 2013 Kaazing Corporation. All Rights Reserved.
WebSocket Powering the Web of Things
WS
WS
WS
WS WS WS
WS
WS
WS
- 45. © 2013 Kaazing Corporation. All Rights Reserved.
Extending Protocols to the Web of Things
MQTT/WS
AMQP/WS
JMS/WS
STOMP/WS
XMPP/WS
- 46. © 2013 Kaazing Corporation. All Rights Reserved.
Raspberry Pi Resources
§ RaspberryPi.org
§ http://www.raspberrypi.org/
§ Wheezy (OS)
§ http://www.raspberrypi.org/downloads
§ Oracle JVM on the Pi
§ http://www.oracle.com/technetwork/articles/java/raspberrypi-1704896.html
§ Pi4J (Raspberry Pi Java Library)
§ http://pi4j.com/
- 47. © 2013 Kaazing Corporation. All Rights Reserved.
Find Out More
§ The Zinger – Blog:
§ http://blog.kaazing.com
§ HTML5 Developer Conference
§ October 22-23, 2013, San Francisco, Moscone North
§ JMS WebSocket Tutorial
§ http://tutorial.kaazing.com
§ More developer content
§ http://developer.kaazing.com
§ RC Car / Light and Switch Code
§ https://github.com/dpwspoon/kaazingPi
§ The Definitive Guide to HTML5 WebSocket, (Apress, 2013)
§ First comprehensive guide on WebSocket
§ Use WSK214 for 40% of the e-book
47