The growth of the Internet of Things (IoT) has enterprises wondering how easy it is to build their own IoT applications to take advantage of it, and the best way to go about IoT app development. The good news is that IoT app development is easier than you may imagine, thanks to ready-to-use IoT platforms.
First, a few basics. The Internet of Things is the collection of everyday objects and specialized sensors connected to the Internet and capable of communicating with computer systems and with each other. It's big, and it's becoming bigger every month.
How big? Gartner forecasts that 4.9 billion connected things will be in use in 2015, up 30 percent from 2014, and the total number will reach 25 billion by 2020.
For enterprises, the promise of the Internet of Things is clear: by sensing (and to a lesser extent controlling) the physical world through networked "things" it is possible to exploit previously invisible opportunities, expand revenue and optimize operational systems and processes.
Networkable sensors (and these could be anything from cameras and GPS receivers to temperature, pressure or humidity sensors) are available off the shelf and are cheap to buy. They may also be incorporated into equipment your company already owns or purchases, like vending machines, vehicles or refrigeration units.
Getting Data into IoT Apps
But how do you incorporate the data they collect with an application you may want to develop? How do you get the vehicle location data from a fleet of trucks, for example, into a delivery scheduling application?
To answer that question, let's look at the components of an IoT application and how they are put together. Put simply, you start at one end with one or more sensors. These send data via a network connection to an IoT application layer that can collect incoming data and either store it or send it on to a separate storage location, perhaps within your enterprise data center or in the cloud.
This data must then be made available to your application for processing. Finally, end users access and interact with the application in any standard way: using a client application, through a mobile app or perhaps from a Web interface.
This is an oversimplification, of course. Enterprises must determine how "things" are enrolled and provisioned, establish messaging and routing protocols, and create authentication and permissions that dictate which users can access data from which "things."
If that sounds complicated, that's because it is. Because building a system like this from scratch can be a huge and daunting undertaking, some enterprises are turning to ready-built cloud-based IoT platforms.
IoT Development Platforms
Companies like Xively, ThingWorx, Buglabs, Carriots and SeeControl offer Internet of Things infrastructure with various degrees of completeness, so that enterprises can concentrate on building the applications that access data supplied by "things." These platforms handle provisioning and enrollment of "things," authentication, data ingestion and so on. They also scale to accommodate companies that may start with a limited number of users and things but grow to many thousands of both.
For example, Xively's cloud platform offers the following components:
- Storage for handling archived time-series and blob data
- Messaging and routing protocols that can accommodate real-time device data
- Infrastructure and application security that addresses secure cloud handling of consumer or operations data
- Trust engine for secure permissions from messaging to infrastructure
- A directory that is searchable and able to set varied permissions based on object or group properties
- Management of users and devices in a Web interface for admins and other users
- APIs that allow for easy access of data based on standard messaging protocols by way of public RESTful APIs, HTTP, HTTPS, MQTT, etc.
- Analysis and automation to build business intelligence dashboards, reporting, basic analytics, predictive analytics, and automated action and response
Xively has a library of connectors -- small pieces of code -- that can be inserted onto various sensor manufacturers' control boards. This embedded client takes data from the sensor, packages it up and sends it in a published message format to the Xively platform. The platform then stores the data ready for an application to make use of it.
You can build your application however you like, in whatever language you like, and access your data on Xively's platform using the Xively API, https or other standard means. This means that most companies can get something up and running in a matter of hours, and building a first prototype application can take as little as a week.
Australia's Turbid Stormwater Solutions used the Xively platform to create a solution that monitors water quality from remote sensors at various sites around the country, removing the need for staff to visit the sites and take readings manually. Using Xively's cloud-based platform it was able to build a solution in two months.
"Building it ourselves would have taken about a year and distracted us from our main business," said Brett Hocking, the company's IT manager.
Sean Lorenz, Xively's senior product marketing manager, said that the coding itself is easy. The hardest thing for most companies is understanding the interplay between users and things.
"That is the biggest challenge, and many customers make use of our professional services. They want help with best practices and advice on how to offer directory schemas and so on," he said.
Examples of IoT applications that have been built with cloud platforms include an application that monitors the stock levels in freezers, and a farm management system that takes moisture readings from field sensors, combines it with other data from external sources and presents it to farm managers.
How One IoT Development Platform Works
Buglabs' system illustrates how quick and simple an IoT application can be to create. Visit http://dweet.io on any mobile device and click the "Try It Now" button, and your device will be given a name made up of two random words separated by a hyphen. Then on any browser visit https://dweet.io/follow/[hyphenated-name] and you'll be presented with a dashboard showing your device's location, longitude and latitude, and the angle that your device is resting using x, y, and z co-ordinates. This illustrates Buglabs' dweet protocol, which is essentially an RSS for "things."
"It provides a way for machines to publish and subscribe to data feeds," said Peter Semmelhack, Buglabs' CEO.
Any application or device can "follow" the device that is dweeting (the name is derived from "device" and "tweeting") and consume the data. A dweet can have a payload of up to 2,000 characters. In the example above, the information is being displayed using a Buglabs application called Freeboard, but any suitable application could consume the data.
To get a device dweeting, you'll need someone with embedded C skills if it is running an embedded operating system. If the device -- such as a vending machine -- is running a Linux operating system, the few lines of code can be written in Java or C++, Semmelhack said.
When you use dweets, Buglabs acts as a broker, receiving the dweets and then sending them on to wherever you like. "Buglabs doesn't store the data but offers APIs to places that can store it. So you could send dweets to Amazon or your own MySQL database," Semmelhack explained.
"You could then run your application on your own application server, or perhaps on Salesforce. It would make an API call to us, authenticate and get access to the data (wherever it is being stored)."
What about security, which is a definite concern with IoT applications? "We use https," Semmelhack said. "If you are comfortable with that, then you should be comfortable with us."
What all this shows is that IoT app development needn't be that hard -- if you are willing to take advantage of the platforms that have already been developed for the purpose. In fact, developing an application for the Internet of Things will be pretty much the same as developing any other type of application.
Paul Rubens has been covering enterprise technology for over 20 years. In that time he has written for leading UK and international publications including The Economist, The Times, Financial Times, the BBC, Computing and ServerWatch.