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.

Building Applications with Eclipse IoT, Block by Block


Published on

Eclipse IoT provides a complete Java stack to build IoT gateway applications, including support for MQTT, CoAP, LWM2M, and remote configuration and management via Kura and OSGI.

With the programming tool Reactive Blocks you can connect these Eclipse technologies by plugging together Java-based building blocks graphically. This makes it much easier to build new applications, or understand and adapt existing ones. This talk shows you how we implemented the software for the Eclipse IoT Car. The demo takes advantage of MQTT, CoAP and Kura so you can experience these technologies in action.

Published in: Technology
  • Be the first to comment

Building Applications with Eclipse IoT, Block by Block

  1. 1. March 2012 - Business Confidential - Bitreactive AS Building Applications with Eclipse IoT, Block by Block Anne Nevin Bitreactive AS, Trondheim Eclipse DemoCamp Trondheim August 27th. 2015
  2. 2. Bitreactive ■ Founded June 2011, spinoff from NTNU ■ Delivers the software development tool Reactive Blocks which provides specific solutions to the programming challenges of the IoT industry. Jone S. Rasmussen General Manager M: +47 957 26 339 E: Frank Alexander Kraemer Technology Manager M: +47 959 28 555 E: Anne Nevin Sales M: +47 930 07 E: anne@bitre www.bitreactive Kathrin Winkler System Architect M: +4747914350 E: Ole Budde System Architect M: +47 406 32 522 E: Linda Ariani Gunawan System Architect M: +47 463 92 572 E: Alina Isaksen System Architect M: +47 980 28 536 E:
  3. 3. Cloud Gateway Make data smart with intelligent gateways
  4. 4. Cloud Gateway It is difficult to implement IoT gateway solutions • Tie together hardware and network resources • Different standards and legacy systems • Manage connectivity and network issues • Device management • Autonomous operation • Integrate data with existing enterprise systems and databases
  5. 5. Reactive Blocks 6 CoAP Resource ok getResponse init failed get post Config Listener initConfig start updatedConfig Kura CloudClient readypublish start stop waiting stopped failed msgArrived MQTT Core initOksubscribe init initFailed publishOk message error stopped disconnected unsubscribe publish stop RPi GPIO Digital In valuestop init initError initOk isLow isHigh stopped read initPS Config Listener initConfig start updatedConfig playing Modbus initOkexecutedReadIn init initFailed readDone writeDone readFailed stopped writeFailed deviceId executedWrite stop executeReadHold registerId 1 2 3 Config Listener initConfig start updatedConfig Makes it easy to combine Eclipse technologies to make new applications
  6. 6. Cloud Gateway JVM A 1 A 2 A 3
  7. 7. Cloud Gateway JVM A 1 A 2 A 3 App App
  8. 8. Kura is a Java/OSGi-based container for remote management and control MQTT is a lightweight messaging protocol based on the publish/subscribe model. PAHO provides the MQTT client implementation. CoAP (constrained application protocol) is a RESTful protocol, like HTTP over UDP. Californium implements the CoAP standard in Java
  9. 9. The Raspberry Pi Eclipse IoT Car Use a remote console to move the car around in different directions Publish pictures to an MQTT server for remote viewing Configure the proximity limit at runtime Kura MQTT CoAP
  10. 10. 11 Air VentilationMotor Control Battery WiFi dongle Distance sensor Camera
  11. 11. 12 This is the top level of the application
  12. 12. 13 Inside the MQTT interface block. It is composed of 5 blocks from the library of block
  13. 13. 14 The CoAP interface block interacts wih the front-end application via CoAP server
  14. 14. 15 Server Client The front end application used to vie and interact with the data was also implemented with Reactive Blocks. We used Java Swing.
  15. 15. 16 Inside the CoAP interface block which is composed of 6 block from the library of blocks
  16. 16. 17
  17. 17. 18 The motor control is composed of 4 blocks from the library of blocks
  18. 18. 19
  19. 19. 20 proximity limit The proximity detector is composed of 3 blocks from the library of blocks
  20. 20. 21 Config listener: Listens to changes in the configuration property Proximity limit. At runtime this property can be seen and set via the Kura´s web-console
  21. 21. 22
  22. 22. Manually written code Reusable code Generated code ~98% ~2% + Runtime
  23. 23. 24 Generic Functionality ■ Buffering ■ Counters ■ Flow Logic ■ Session Utilities ■ Iterator Timers ■ Timers ■ Periodic Timers ■ Watchdogs Application Prototyping ■ Java Swing ■ Java FX ■ Speech (Free TTS) ■ Properties Hardware Connections ■ Modbus ■ Serial I/O ■ Raspberry Pi GPIO ■ Berryclip for Raspberry Pi ■ Gertboard for Raspberry Pi ■ USB Camera Files ■ Files Utilities ■ File I/O ■ Properties End-User Communication ■ SMS: Twilio, Keyteq, Clickatell ■ Email ■ CMPP Client (Smack) Communication ■ HTTP/HTTPS ■ MQTT ■ CoAP ■ JSON-RPC ■ AMQP ■ Network Monitoring ■ OPC-UA Data Collection Services ■ Sierra Wireless AirVantage ■ IBM IoT Foundation ■ Eurotech ESF ■ Xively ■ Solair Security ■ Cryptography ■ OAuth 2.0 Transformation of Data ■ GSON ■ XML Parsing (DOM4J) ■ XSL Transformation Eclipse Kura and OSGi ■ Configuration Listener ■ Cloud Client Handler ■ Event Admin ■ Service Tracker ■ Termination ■ Service Register Location ■ Geofence ■ KML Data Processing ■ Video Recording ■ Image Processing Not just a tool but also a growing library of ready-to-use building blocks