Internet of Things includes a lot of different technologies. So, before starting to learn IoT or implement some project related to the Internet of Things, it is important to know the different layers of IoT technology stack.
The blog is also divided into categories based on the layers which will be explained below. This makes it easier to categorize and follow which category certain technology belongs to. That said, there can be other ways one can categorize IoT into different technology stacks. The categories explained in the article is to make you understand the technology in a simple way as possible. The category names are inspired by articles from one of the frontrunners in the IoT world, Daniel Elizalde.
At the first glance, IoT may seem complicated. So, it is important to take a step back and look at the IoT as a whole. If you really think about it, it is just a bunch of sensors, hardware, and computer networks put together. All of these things should work in harmony just like an orchestra to make the product work as a whole.
Think of the whole IoT stack as a stream where data flows from Device Hardware to the Cloud applications. This data has to originate somewhere. The device hardware is the layer where the data originates. The device hardware is nothing but electronic devices which are embedded with sensors and actuators.
On a side note, a device can also be considered as an IoT device without sensors and actuators. In this case, the device is getting the data from some other source.
So, a general IoT device should be able to do these things:
- sense and gather the data using sensors or another data source
- do light processing of data, nothing performance-hungry
- connect to a network and send the data to the next layers
Also, these devices should also contain hardware that enables communication to the cloud. More on this in the Communications section.
Some examples of IoT devices that you can use in your project can be found in the article Recommended boards for IoT development and prototyping.
Device Software is the one that makes the device hardware smart. These are embedded devices that need some software to tell them what to do. This means the device hardware and device software should work together.
Depending on the software, the hardware can be made to behave the way you want. Also, in most cases, the device can be reprogrammed to behave in a whole another way by flashing the different software. Also, device software, in the Internet of Things context, has to tell the hardware to communicate or send data to the next layers.
Another thing is, this device software should also be able to update over the air, which is called OTA in short. This is not a hard rule for IoT devices in general. But this makes it more convenient to update the software in the field without actually going to the field and doing it manually. More on OTA will be written in the next articles.
Device Software can either contain an Operating System and Software applications that run on top of that OS. However, it is also possible to use "bare-metal" IoT devices that do not need an OS. An advanced example of an IoT device with OS and Applications is your smartphone. It might run on Android or IOS, which are operating systems. And you can run an application that sends the data to the cloud via WiFi or mobile data.
Communication is an integral part of the Internet of Things which connects the two worlds. Communication enables the connectivity of an IoT device. It includes the physical network infrastructure and also the protocols which you use to communicate the data to the cloud.
It is a critical decision to any IoT project lifecycle to decide what kind of communication concepts you are going to use. For example, you can have 100 devices that are getting the data and communicating this data to the cloud at once, or, a gateway collecting all the data from these 100 devices and sending it to the cloud at once. These things can be based on the application. For example, if all devices are in some place where network connectivity is unavailable, the devices can be made to communicate with each other and send data to a gateway which has communication enabled to the cloud. These kinds of decisions impact the whole system topology.
Communications also include how you send the data into the cloud, "the protocols". There are various protocols one can use like MQTT, WiFi, 4G, 5G, NB-IoT, LORA, BLE, Bluetooth, etc., This can impact the power consumed by the system and speed of data transfer and also cost incurred for sending the data to the cloud.
More on MQTT protocol is coming soon in the next articles.
The cloud platform is another critical layer in the IoT technology stack. If you have ever worked with the data, you are aware that, you can not use the data as it is. It needs to be processed. That is where the cloud platform comes in.
The cloud platform is usually hosted in the cloud and provides various offerings that one can use to analyze and process, and send the data to the next layers. Some examples include the SaaS (Software as a Service) offerings by AWS, Azure, or Google Cloud Platform.
For example, This layer includes a services that can collect the data such as AWS IoT, which can later be processed using AWS Lambda and then sent to AWS Kinesis to analyze the data and finally AWS quick sight to visualize it. This can also include the device management service which is used to add and remove the devices to the fleet, send software updates, and so on. There are a million ways to do these things a lot of companies are providing different services which you can directly use. Alternatively, you can also build it yourself. But, it can be really time-consuming.
One more thing that can be included in the cloud platform is Cloud APIs. API stands for Application Programming Interface which lets the Cloud Application, which we will see in the next layer, interact with the devices or exchange the data.
Last but not the least, the Application layer. All these data might not be useful if there is no application that reaches it to the customer or the end-user.
The cloud application can be web-based. This means, they can be opened in the web browser, for example, or it can also run on android or IOS devices. Another interesting place to see the cloud application is on the device itself. Smartphones are a well-known example of this.
Cloud applications can include a dashboard or a virtual button that controls the device. Web development or app development technologies are important to develop cloud applications. Also, the deployment of cloud applications plays an important role in how available it is to the end-user. The high-availability or zero-downtime of the applications can be achieved using open-source platforms like Kubernetes. More on these things in the next articles.
Also, if the application has to be appealing to the user, the usability of the applications plays an important role. This is where the UI/UX (User Interface/User Experience) comes into the picture.
To sum it all up...
Every layer mentioned above can have A LOT to learn and you do not need to know or work in all the layers to become an IoT Developer. But, knowing the basics of every layer helps in having the bigger picture and making you an all-round IoT developer. If you are already a master of one of these layers above or planning to master it, you can use the skill in the field of IoT.
If you have read till here, you might now understand that IoT is not just one technology but a bunch of technologies grouped together. So, the long term goal should be to keep mastering as many layers as possible. It is impossible to master all the layers. But, If you master a couple of layers and know a decent amount of stuff about other layers, you can still be considered as a unicorn IoT developer.