This is the third and final instalment of the Sensors to Servers demonstration blog. Today we’ll talk about the server side of the story, and the visualisation we provided to client devices.
One of the catalysts for building this demonstration was the availability of real, ARMv8a 64-bit server silicon. For our first deployment of the demo at the Consumer Electronics Show® 2015 in Las Vegas, we were able to get an Applied Micro® X-C1 development kit, a board featuring a real, production ready ARMv8-A 64-bit server on a chip (the ***883208 XGene® SoC). What was particularly impressive about this platform was just how easy it was to install our choice of Linux distribution and Java. We were ready to deploy our software within an hour of powering up the server. For anyone who has worked to get a Linux distribution running on an ARM powered system over the past several years, this is a significant mark of progress. Linaro and other initiatives have really made a difference.
We chose to run Ubuntu Linux 14.4. Following some relatively straight forward instructions to boot and install this, we used Ubuntu’s built in package manager to install Java… and that was that. The mbed Device Server is a Java application. We wrote an additional Java app that used Device Server’s Restful API to subscribe to all inbound notifications. This app then logged these to a local SQLite database.
To really bring the data to life, we built a series of rich web pages with Javascript. Our custom Java app used the Jetty framework to host these pages. More details on the pages can be found in the next section.
Whilst our server ran on a local network on the booth, it could just as easily have been deployed remotely – as we demonstrated, the requisite software is available for this application and many others. Whilst our server was a development kit, real rack-mountable ARM powered servers are now coming to market. Connecting this demonstration to a cloud-hosted mbed Device Server and client application would have been just as straight forward.
We chose to implement our data visualisation as a series of rich web pages. Any ARM powered Smartphone, Tablet or other client device (Chromebook, Smart TV etc) would thus be able to display the live data from the booth. The ubiquity of these devices and the accessibility they give to anything that is online is incredible – we didn’t need to develop any special software on the client side to provide an extremely rich experience of the data from our sensors.
We developed some of our own custom visualisations, but also used Flot and Heatmap.js, two freely available online Javascript libraries, to present the data. Heatmaps were drawn on top of floor plans of the booth, with ‘hot’ representing more frequent activations of the various presence sensors. Most other data was presented either ‘weather map’ style on top of the booth floor plan or as a graph drawn by Flot. We also highlighted some specific statistics, such as the noisiest sensor station, or most frequently used door. A sample of the visualisation is provided below.
That concludes our blog series on the Sensors to Servers demonstration – an end-to-end IoT system. We hope that providing some of the detail of how this system was built was informative, but also that it might help inspire or advance your own projects. An instrumented trade show booth is an interesting demonstration, but the real world applications of this technology are the real story. As an engineer I also found a real change here in the difficulty of developing a system like this compared to when I started as a young intern many years ago. It is easier to obtain development platforms suitable for your application, easier to deploy software to these platforms, and easier to connect this software to distributed networks and services. All this allows much more freedom to focus on the applications of this technology, and has widened the audience of makers, developers and entrepreneurs who can access it. Exciting times! Thanks for reading, and watch for future updates on this and other ARM demos.
Thank you for writing these great articles; I've enjoyed reading ever one of them.
I have a bit of experience installing Linux on servers and usually it takes me weeks to get the things I need installed (mainly due to build-problems and missing tools).
-But I believe that in the future, we will see a lot of servers being changed from whatever huge power-drains into ARM.
I've noticed that Western Digital recently changed from intel to ARM Cortex-A, which means that I will now be buying a few MyClouds (these can be used as servers in addition to just being NAS).