#IoT is believed to be the next big thing in the information and technology world which brings in all the internet connected devices together to a single platform. A thing in internet of things is a device that can be connected to internet to send/receive information through internet, which has an IP assigned to it, in layman terms.
IoT is an umbrella term that includes multiple different categories:
- Wearable devices including health & fitness bands, monitoring devices and watches.
- Human implanted devices.
- Home automation systems, security systems and lighting controls.
- Smartphones that are increasingly being used to measure the world around them.
- Wireless sensor networks that measure weather, flood defenses, tides and more.
No fixed architecture will suit all these areas and the requirements each
area brings. However, an architecture that supports the customization of requirements across a wide variety of these use cases is possible. The supposed architecture should support cloud or server-side architecture and allows monitor, manage, manipulate with the data received from the devices. These devices may or may not have UIs, we should be able to manage these devices remotely, to collect and analyse data.
The communication to and from the devices that are connected to the internet are of different types, like Wi-Fi connectivity, NFC (Near field communication), Bluetooth, Zig Bee or RF-ID. There arises a necessity to come up with an architecture which solves the increasing usage of such devices round the globe, 24×7, the system should also be scalable to the increase in the usage and should be reliable too.
We can summarize the requirements in to the following categories.
Even a 8-bit controller can create simple GET and POST requests and HTTP provides an important connectivity. But the usage of HTTP might reflect in the memory size of the program and the power requirements also shoots up high. In order to overcome this, wwe need a simple protocol to communicate data to and from the devices (with cloud through gateways or with the server).
We should be able to manage the devices in the following categories,
- Ability to disconnect,
- Ability to update,
- Updating Security,
- Remotely enabling/disabling the device (like locking the mobile phone and erasing the data if stolen)
- Locating the lost device (again, like locating the mobile phones)
Data collection and analysis
The IoT devices which don’t have UI will have sensors to sense and send the data, like fitness bands. The architecture should be able to handle the large amount of devices and data that can be received from the devices, analyse and process on it.
Any architecture should be able to handle millions of devices all constantly sending, receiving, and acting on data. Elastic scalability and the ability to deploy in a cloud infrastructure are essential.
The devices often carry the sensible and personal data, hence security takes high importance as the data is communicated through internet, anyone can access if the data isn’t secured properly. The devices should be secured with an identity and access related credentials, in simple, identity and access management is the term. The data can be accessed only through “Attribute based access control” or “Policy based access control”.
The architecture consists of the set of components we have discussed above.
The layers are
• Communications – Web/Portal, Dashboard, APIs
• Event processing and analytics (including data storage)
• Aggregation/bus layer – ESB and message broker
• Relevant transports – MQTT/HTTP/XMPP/CoAP/AMQP, etc.
The cross-cutting layers are
• Device manager
• Identity and access management
PS : This article is based understanding and studies based on the references given below and the contents are the collection of more than one sources, modified as per my understandings.