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.
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.
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.
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.
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.
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.
The components that can be a part of the demo application are:
Note: Microsoft Azure supports different languages like .Net, Java, NodeJS and Python.
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 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:
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.
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,
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.
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.
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.
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.