Enterprise Developer's Journey to the IoT presentation will be delivered at QCon San Francisco on Nov 17th 2015.
The IoT presentations and demonstrations have been some of my most popular content throughout 2015. I have a typical enterprise developer background - mostly working on business-focused applications - leveraging a variety of 4GLs, GUI design tools (e.g. SilverStream, Visual Basic) and Java EE technologies (e.g. JBoss, Tomcat, Struts, Spring, Hibernate, etc.). I have spent a couple of decades building business applications for ChUI, GUI, web, mobile and now things - connecting the physical world to enterprise software.
My research focus has been on connecting sensors and actuators to enterprise middleware like Apache ActiveMQ (JBoss Fuse A-MQ), Apache Camel and Apache Spark.
The Apache Camel demonstration can use various temp sensors, in the case of the recording, I use a TI SensorTag which is connected to an Intel Edison (works the same if connected to a Raspberry Pi), the Edison pulls the sensor data via Bluetooth, wraps the data as MQTT messages and submits those messages to ActiveMQ. Then an Apache Camel process picks up the messages and makes a determination if it is HOT or NORMAL. Camel pushes out another message where another Intel Edison has subscribed and it connects to a Lightblue Bean driving a servo.
TI SensorTag -> Bluetooth -> Intel Edison -> MQTT -> WiFi -> Apache ActiveMQ on the laptop
ActiveMQ -> Apache Camel -> ActiveMQ -> WiFi -> Intel Edison -> Bluetooth -> Lightblue Bean -> Servo
The Apache Spark demonstration uses Raspberry Pis with both Bluetooth and WiFi USB adapters. The Raspberry Pi includes a Vert.x-based Bluetooth Low Energy scanner (leverages bluez library) to look for BLE advertising packets. It then sends those raw messages via AMQP into the Apache ActiveMQ/JBoss Fuse A-MQ broker running on the laptop. Apache Spark is running in another process, reviewing the raw messages from all the scanners/Pis (two in this case) and making calculations as two how close a beacon is to a particular scanner (Pi). Based on proximity, Spark is making decisions - check-ins vs check-outs. There are then two Rx.js with Node.js backends UIs that show the real-time message flow and a real-time map that shows how the objects are moving around the physical world. Using this technique, we were able to deploy several hundred BLE beacons ($5 Gimbal) and over a dozen Raspberry Pis to track conference attendees at the 2015 DevNation in Boston. Scott Stark is the genius behind the Raspberry Pi BLE scanner. Matt Farrellee crafted the Python-based Apache Spark Streaming program and Brian Leathem made the killer real-time web UIs seen throughout the keynote demonstration.
I have a lot of other experiments with different sensors and a few actuators, some of which are shown in my various YouTube recordings. Please check those out and if you have any questions, please reach out to me via Twitter @burrsutter.