JBoss Booth IoT Demo at DevConf 2015

DevConf 2015 (http://devconf.cz/)

Spanning 3 days, DevConf.cz brought together around 1000 developers, quality engineers, administrators, and users from the Fedora, JBoss, and Red Hat communities. With almost 100 talks and workshops spread over 6 different tracks, DevConf.cz was one of the largest events celebrating free software in the region.

Together with my colleagues we prepared a booth for this great event, demonstrating JBoss/Java IoT capabilities. Our main goal was to show visitors that JBoss Middleware can be used to create an IoT solution very easily. 

Demo Use Case Description


1. Device Controller (CubieBoard)

  • User presses a doorbell. Notification containing his picture is sent to IoT Gateway.
  • Upon receiving user access approval from External IT System the doors are unlocked.

2. IoT Gateway (Raspberry Pi)

  • Receives a notification from Device Controller and sends approval request to External IT System.
  • Waits for user approval and forwards it to Device Controller.

3. External IT System (JBoss BPM Suite)

  • Once an approval request is made, a new business process is started and waits for user decision whether to open the door.
  • If request is approved then a notification of it is sent back to the IoT Gateway.


CubieBoard 2 (http://cubieboard.org/model/cb2/)

  • Exposed a standalone web application and a JMS API to control low-level IO operations to open the door lock using Apache Camel:
  1. <route customId="true" id="iot-door-lock-route">  
  2.      <from uri="mqtt://iot-demo-lock?subscribeTopicName=IotDemoDoorLock"/>  
  3.      <to uri="gpio://pb10?value=HIGH"/>  
  4.      <to uri="gpio://pb10?value=LOW"/>  
  5. </route>  
  • Used Apache Camel to integrates GPIOs, WebCam and JMS routes:
  1. <route customId="true" id="iot-door-bell-route">  
  2.   <from uri="gpio://ph7?value=HIGH" />  
  3.   <to uri="bean:webCamBean?method=getPicture" />  
  4.   <multicast>  
  5.     <to uri="mqtt://iot-demo-bell?host=tcp://localhost:1883&amp;publishTopicName=IotDemoDoorBell"/>  
  6.     <to uri="mqtt://iot-demo-bell-sbunciak?host=tcp://rapsberrypi:1883&amp;publishTopicName=doorQueue"/>  
  7.   </multicast>  
  8. </route>  

Raspberry Pi B+ (http://www.raspberrypi.org/introducing-raspberry-pi-model-b-plus/)

  • Orchestrated requests from/to BPM Suite via REST.
  1. <route customId="true" id="bpm-route">  
  2.   <from uri="mqtt://bpm?subscribeTopicName=doorQueue" />  
  3.   <to uri="bean:bpmBean" />  
  4. </route>  
  • Exposed 2 REST API Endpoints via Camel REST DSL:
    • Temperature Sensor – returning current temperature in the room.
    • Door Opener – forwarding request approval to Device Controller via MQTT.
  1. <rest path="/rest">  
  2.   <post uri="/doorLock" consumes="application/json">  
  3.     <to uri="mqtt://iot-demo-door-lock?host=tcp://{{remoteBroker}}:1883&amp;publishTopicName=IotDemoDoorLock" />  
  4.   </post>  
  5.   <get uri="/temperature">  
  6.     <to uri="bean:tempBean?method=getTemperature" />  
  7.   </get>  
  8. </rest>  




Java GPIO Library: http://www.silverspoon.io
Apache Camel: http://camel.apache.org
Apache ActiveMQ: http://activemq.apache.org


Popular posts from this blog

Manage Fuse APIs with apiman