Simplifying IoT App Development

Simplifying IoT App Development

Executive Summary

Hello connected world!

Who wouldn’t want to wake up to a smart coffee maker, a smart refrigerator, connected cars, smarter energy management systems, intelligent fleet tracking and many such things?

With Internet of Things (IoT) technology growing leaps and bounds, we are moving towards a future where devices have become smarter and humans are in control of the devices. As this technology brings in a lot of curiosity and uncertainty among people and enterprises alike, many startups and global corporations are embarking on a journey to build innovative IoT applications.

“Business Insider predicts that total business spending on IoT solutions will reach $6 trillion by 2021.”

This paper illustrates a step by step approach on building an IoT application without using complex hardware. This paper is a guide for technical and Executive Summary non- technical professionals to get started on IoT development. It explains how you can build and try out a basic solution using a simulator device on your PC that can send trigger events to the Azure IoT Hub rather than having a need to buy or build an actual hardware device.

Note: There are various IoT platforms like Predix, Amazon Web Services (AWS), ThingWorx, Azure, IBM Watson etc. with different capabilities available in the market which provide quick deployment of IoT applications. You can select the platform based on your business requirements and existing IT systems that your enterprises use, along with other aspects such as functionality, protocols supported, scalability, security and adaptability. For demonstration purpose, we have tried to outline a methodical approach to build a basic IoT application on top of Azure platform using simulated device. This can trigger sensor’s readings. Readers can try a similar approach on other platforms as well.

Simplifying IoT App Development

How does IoT work?

Let’s take an simple example, a fleet scheduling application, which provides the information about the location of the vehicle from fleet of trucks. Let’s begin with the data of location, for instance, location of the truck which is sent via a GPS device enabled in the truck. This device is connected to network using a GSM or cellular connectivity to send the data to IoT hub. The IoT hub in turn receives data and stores it on the cloud. This data is then made available to the application and the users can access and interact with the application using a mobile app or a web interface.

Simplifying IoT App Development

Rise of IoT

The rise of IoT has left many enterprises wondering how to build a secured IoT application. As a thumb rule, any new area that is explored usually starts with an experimentation phase. In case of IoT applications, enterprises are following the same principles of Proof of Concepts (POCs) and pilots. They want to look at a quick win simplified use case and leverage many of the ready to use IoT platforms to try out their solution. Solution providers are going through the dilemma of how to internally build capabilities and knowledge base for helping their customers in these kinds of POC engagements.

The first stepping stone for these POCs are, at a developer level, getting familiarized with the platforms, solution stack and how to get started developing some application before buying some complex hardware.

Simplifying IoT App Development

Setting the context for building the demo application


We are building a smart bin monitoring application to monitor the garbage bins remotely. This application will allow users to monitor the capacity of the bin and notify them when it is full or almost full for collection of garbage.

Problem statement

Typically, the bins have to be checked on a regular basis for disposal whenever it is full and the process is time consuming and costly, where someone has to manually check every now and then.

Solution brief

This smart bin application will help monitoring the capacity in real-time and sending notification or alerts to the users about the capacity of the bin. The application is aimed at reducing the manual efforts for checking and collecting the garbage. The alerts can be set based on the user preferences.

Components of the demo app

The components that can be a part of the demo application are:

  • Simulator app
  • Smart phone/tablet/PC
  • Data collection, analysis and visualization
  • Stream processing
  • Protocol – AMQP
  • Message brokers
  • Security and authentication
  • Language – NodeJS

Note: Microsoft Azure supports different languages like .Net, Java, NodeJS and Python.

Simplifying IoT App Development

Simplified architecture

For this demo app, we will use a simulator device which will send continuous data to Azure IoT hub on the level of garbage or how full the bin is. The data sent will be in the unit of percentage of the total capacity. The Azure IoT hub will receive the data and later we can pull that data and store it in a database and visualize it in a web/mobile application.

Below is the pictorial representation of the same.

Event Producer

Event producer produces telemetry data from the simulator application. This application will simulate data like an IR sensor. These simulators have to follow a network prototype (like AMQP, MQTT or HTTP) to send the telemetry data. The data will be in increasing percentage values across time series until a maximum of 100% is reached. Once it reaches the maximum it will again be reset to zero.


Ingestor is to scale and handle incoming data quickly without decelerating down the entire process. Once the simulator app is registered and it sends telemetry data, Azure IoT hub ingests device events and scales it. Azure IoT hub scales by considering these factors:

  • Size of the message
  • Frequency at which it sends telemetry
  • Number of active devices

It also, provides different packages from where you can choose based on the number of devices and messages you require. To begin with, we can go with a free plan since we are simulating the data with one simulator app and with limited messages per day.


Once data is ingested from the Ingestor, transformation layer needs to pick subsets of events based on business need, transform the shape of the data and route to specific storage location.

Simplifying IoT App Development

Five steps to build a simple Azure IoT application

  • Set up Azure IoT hub
  • Create new Azure IoT device
  • Create simulator device app
  • Create telemetry receiver app
  • Monitor data using web/mobile application
01 Set up Azure IoT hub
  • Navigate to the Azure portal and login to the account. If you do not have an account you can create an account quickly using your email id.
  • Click on new menu option in the upper-left. Select ‘Internet of Things’ and then, Azure IoT hub.

  • Create IoT hub by giving it a name,select or create a new resource group and location (choose the one closest to your location).

  • After the IoT hub is created, navigate into it and click on the shared access policies.
  • In the next blade, click on the iot hub owner.
  • Copy the connection string – the primary key to your clipboard.

02 Create new Azure IoT device

In this step, we will create a new device identity. This will ensure an entry point to Azure IoT hub. The connection is established between IoT hub and devices based on the TLS (Transport Layer Security). Thus, the communication of the device is encrypted in the IoT hub to guarantee the data confidentiality. To get started, download the code from this link. After the device identity is created, a new token will be generated as below which is used to create a simulator app.

After the device is registered in IoT hub, for confirmation you can check the Azure IoT hub as below,

03 Create simulator device app

The simulator [D2C – device to cloud app] will send messages to the cloud both as telemetry data and meta data. Here, we have created one simulator device which sends continuous telemetry data (i.e., micron reading) along with meta data (i.e., DeviceID, deviceName, processor and other information) to the cloud.

  • To get started, download code from this link to create a simple simulator app.
  • Run the simulator app.

04 Create telemetry receiver app

Telemetry receiver [C2D – cloud to device] app will receive the command from the Ingestor and executes the required action. Receiver app is a backend system which receives messages from simulator devices. The backend system can even receive a confirmation message or faulty delivery message to understand if the device has received the command or not.

  • To get started, download code from this link to create a simple receiver app.
  • Run the receiver app.

05 Graphical view of the data in web application

The below graphical view of the web application displays capacity information of the bin. This plot illustrates the data simulated by the simulator app (simulated by IR sensor in this instance) in the timeseries chart where X axis refers to time and Y axis refers to the capacity of the bin in percentage. In the graph you can see the data from the simulator and get to know how full the bin is. Alerts will be generated once it reaches the 80% mark. We can also develop one screen for notification alerts for the demo app.

Simplifying IoT App Development


Thus, we were able to build a bin monitoring application using Azure IoT hub. This is the first step towards IoT application development. As a next step, you can experiment with devices and sensors and can also, improvise the IoT application development by adding multiple sensors and actuators to a physical device where each sensor will give different telemetry data to the IoT hub. In that case, the architecture may include gateways to communicate through a network to a backend system based on the device interoperability.

We foresee a great potential in IoT implementation in several areas. IoT creates opportunities for more direct alliance of the real world that result in economic benefit and better efficiency. The IoT applications simplify our lives and enhance comfort. It provides a lot of opportunities for the app development in aspects like smart home, wearable application, smart cities, healthcare and retail applications, transportation and many more. There is a growing demand for IoT apps in the market which has resulted in a rise in demand for quality IoT application development. It is essential to simplify IoT app development and deliver scalable and highly secure IoT applications which are instrumental in transforming the smart dreams into reality.

This paper is written by Raakesh Rajan, Nandhini C and Sudhakar Jonnakuti.

If you’d like to learn more on our test automation solutions and services, please write to us at We’d be happy to hear from you.

How can we help you?