As hardware gets cheaper and devices get smarter, the world moves towards being always-on and forever connected. This means that more and more data is constantly being sent and received. Traditionally it was only mobile phones, computers, and servers talking to each other, but nowadays, that list includes everything from light bulbs to fridges to automobiles. This is the Internet of Things. At its core, it's connected devices communicating bidirectionally with one another in real time. It's also the reason for our Data Stream Network.
Breaking down the Internet of Things
So what are the different components that make up an IoT application?
The Things that make up IoT
The ‘things’ make up the physical world of the Internet of Things. Let us consider those that have an IP address and can talk TCP/IP. They’re used in your home, factories, garden, hospitals, and your transportation fleet. These “things” come in a variety of shapes, sizes, and more importantly hardware platforms. They run different operating systems and communicate using different protocols. With so many different combinations, your head might be spinning with where to begin, what hardware to use, and down the road, how you’ll scale your network of ‘things’ to millions of users.
The Infrastructure / Software that powers IoT
Regardless of hardware, platform or operating system, the devices' most basic need is to communicate with each other. They need to send (publish) and receive (subscribe) messages, and take some actions based on the information passed around. A service or infrastructure is needed to route the messages, to store/cache them for later usage and to deliver them to other devices in real time, irrespective of their location in the world.
The End Devices / Platforms that contribute to IoT
The end users of any IoT application need to get as seamless an experience as possible, regardless of whether they use a mobile phone, a PC, or a tablet. They could be running different operating systems or using different browsers, but they all expect the same information, presented in a useful manner, with great visualization.
IoT Pain Points
Starting with the devices to the software running on them, to the infrastructure that runs the whole show, there are a number of pain points when it comes to building and scaling an Internet of Things application:
Bi-directional real-time communication: Most connected devices are able to do data collection, constantly monitoring a parameter (temperature, humidity, etc.), and sending it back to a central computer for data aggregation and analysis. But IoT applications should do more than just reading state. We need to be able to control the devices, not just locally, but from anywhere on Earth. The promise of Internet of Things is device control, not just about receiving the data from the devices. Thus bi-directional real-time communication between devices is of utmost importance. |
|
Cross platform support: Regardless of whether the IoT deployment is an embedded device, a mobile device, a browser, or server environment, you need to be able to send and receive messages between all of them in real time. |
|
Power drain: The “things” in the Internet of Things are usually microprocessors with sensors attached to them, which have certain memory and bandwidth restrictions. They need to utilize power optimally, so they don't die in the middle of an operation. The communication protocols and the software Application Programming Interfaces (APIs) for doing the computation should not be too chatty in order to reduce the power drain from the devices. |
|
Device provisioning: When you build an Internet of Things application with devices deployed across the world, they need to power up and function without any user action needed. The devices need to be plug-and-play for the best user experience, even through home and business firewalls. |
|
Security: Security is a top concern for everyone getting into Internet of Things, and it is absolutely necessary to be able to provide multiple levels of security, starting from having no open ports to the devices, to encrypting the messages and providing device level access control. |
|
Message storage: Embedded devices usually try to conserve battery as often as they can. You need to keep this in mind, and store the messages that the devices might miss when they go to “sleep”, and deliver it to them when they wake up. This kind of message storage and playback is crucial to an IoT application. |
|
Presence detection: With the price of the embedded devices/chips exponentially dropping, it becomes easy to deploy the devices in bulk, and device monitoring becomes a key concern. It is critical to track these devices, to know their exact state, and location and other metadata in real time. |
The Data Stream Network
When building any application, developing the application logic is only part of the process. Deployment and scaling the application worldwide and to several users are the ongoing problems that require more effort. One way to approach IoT is to build all the separate pieces(hardware, software, network, security etc.) individually, and put them together. Or you can use a solution off the shelf, that solves most of these pain points to begin with. All you are left with then is the application logic and user experience.
A data stream network does exactly the latter for you. It helps you build and scale always-on applications in a secure, reliable manner, connecting devices from anywhere in the world in real time. It provides services such as bi-directional communication between devices, visualizations and presence information about the devices on a channel for real-time data.
These networks have found their place across the vast landscape of IoT applications, from consumer apps like taxi dispatch, home automation, connected car, and wearables, all the the way to the industrial IoT, including freight and shipping, manufacturing, and agriculture. A Data Stream Network like PubNub will take care of everything from data streaming, security, data centers availability, scaling, multi platform support and also provide easy to use APIs to build applications on top. In short, it will solve all the problems mentioned above, and let developers to do what they do best… develop applications.
Credits:
This article is using icons from the Icons8 library.