by Paul Rubens

How to Develop Applications for the Internet of Things

Nov 05, 20146 mins
Consumer ElectronicsDeveloperDevelopment Tools

What's the best way to build an application that could do anything from control home appliances remotely to gather meteorological data from sensors to produce a weather forecast? Startups offering data ingestion platforms take much of the hard work out of developing for the Internet of Things.

internet of things control touch user
Credit: Thinkstock

The Internet of Things is exploding, and it’s not hard to explain why it’s happening now. The sensors, networking chips and other technology required to connect to the Internet devices ranging from light bulbs to smartwatches to industrial equipment have all become inexpensive.

These connected “things” send and receive data through the network relating to a variety of physical characteristics – temperature, moisture level, pulse rate, light level, velocity or revolutions per minute – as well as more complex data such as maintenance requirements, sounds, and static or moving images.

Most analysts agree that that the Internet of Things will be huge. Two-thirds of consumers expect to buy connected technology for their homes by 2019, according to Acquity Group (a part of Accenture); nearly half expect to buy wearable technology. Gartner predicts that the total number of connected consumer, business and industrial “things” to grow to 26 billion units by 2020, representing an almost 30-fold increase over the 900 million things in 2009. (Gartner also says the Internet of Things has reached its hype peak.)

To be of any practical use, things collecting and transmitting data have to be connected to what Jeffrey Hammond, an analyst at Forrester, calls a system of automation. Such a software system intelligently manages the things and the networks they use, organizes and stores the vast amounts of data they generate, and processes it before finally presenting it to end uses in a useful way.

Building Internet of Things Apps Begs Important Questions

This begs some important questions for developers. What’s the best way to build an “Internet of Things application” that could do anything from control home appliances remotely, to inform an aero-engine manufacturer that one of its engines somewhere in the world needs servicing, to gather meteorological data from sensors to produce a weather forecast? What skills are needed to do so? Where do you even begin?

[ Analysis: What the Internet of Things Will Mean for CIOs ]

The starting point for Internet of Things applications are the things themselves. These edge devices typically have no screen (although that’s not always the case), a low-power processor, some sort of embedded operating system and a way of communicating (usually wirelessly) using one or more communication protocols. The things may connect directly to the Internet, to neighboring things or to an Internet gateway device – typically a plastic box with blinking lights.

The next tier of the system, an ingestion tier, is software and infrastructure that runs in a corporate data center or in the cloud and receives and organizes the streams of data coming from the things. Software running in the ingestion tier is usually also responsible for managing things and updating their firmware when necessary.

After this comes the analytics tier; this takes the organized data and processes it. Finally, there’s the end-user tier, the application that the end user actually sees and interacts with. This may be an enterprise application, a Web app or, perhaps, a mobile app.

If you’re looking to build an Internet of Things application, the last two tiers are the ones you’re most likely to have to work on, according to Frank Gillett, a principal analyst at Forrester. “As a developer, you’re unlikely to have the tools for dealing with the edge devices or gateways, or capabilities suitable for the ingestion tier anyway.”

That’s why it usually makes more sense to build an application on top of a ready-made “Internet of Things platform,” Gillett adds. These platforms usually include an ingestion tier that carries out time-series archiving for incoming data, as well as an analytics tier, thin provisioning, activation and management capabilities, a real-time message bus, and an API to allow communication between the platform and applications built on top of it.

[ More: 10 Hot Internet of Things Startups ]

A large number of new companies offer these sorts of platforms. They include Xively, Mnubo, Bug Labs and ThingWorx , and they have the capability to communicate with a range of “things” produced by a large number of manufacturers.

More established companies such as Microsoft, with its Intelligent Systems Service, and enterprise software vendors likes SAP, with its Internet of Things Solutions, are also adding Internet of Things capabilities to their offerings.

“We are likely to see some of these companies acquired by the likes of Oracle and other enterprise software vendors in the future,” says Gillett, “but I think that many of these specialized (Internet of Things) platforms will endure for particular industry use cases.”

Building IoT Platform From Scratch ‘Considerable Amount of Work’

California-based OnFarm used ThingWorx’s cloud-based Internet of Things platform to develop its Web-based farm information application. This collects data from a variety of connected things, such as soil moisture sensors, and integrates it with data from other sources, such as weather information providers. It then presents the information on a customizable dashboard to its farmer customers.

OnFarm CEO Lance Donny briefly considered hiring developers to build an Internet of Things platform from scratch, but the idea was quickly rejected. “That would have been a considerable amount of work. Building our own back end would have slowed us by about one or two years,” he says. “We would be significantly behind if we had done that.”

[ Also: An Internet of Things Prediction for 2025 – With Caveats ]

By using ThingWorx to manage all the data ingestion, he says the amount of programming work was largely reduced to creating the Web dashboard that connects to the data through ThingWorx’s APIs.

The company employs one developer to write connectors in JavaScript that allow new sensors to communicate with the ThingWorx platform as manufacturers develop them. This code resides in ThingWorx. “Customer come to us and say they want to use a particular sensor with our solution,” Donny says. “We form a relationship with the vendor and get [its] API, which is often poorly documented, and build a connector to ThingWorx for that product.”

The company also employs four developers who work on the OnFarm Web application front end itself, mostly programming using Bootstrap, AngularJS, and JavaScript. This front end connects back to ThingWorx using RESTful APIs. “This process is very straightforward, which allows us to focus on data performance and flexibility in how we call and use data on the front end,” he says.

OnFarm currently takes readings from more than 5,000 “things” for its customers, taking in more than 7 million pieces of data per month. This figure grows at a rate of 30 percent annually, Donny says.

Another advantage of the pre-built platform, he adds, is that its scalability has already been proven. This matters, as Internet of Things applications are relatively new. If the Internet of Things is to succeed as many people expect, then applications vendors such as OnFarm may be required to scale their offerings very rapidly in the coming years.