Building complete and functional IoT projects can be a puzzle full of surprises if you are not aware of all the building pieces that must be taken into account. The IoT market offers a wide range of technologies, products and applications. All these options are confusing when you face the design and development of a specific IoT project with specific needs. Fortunately, all IoT projects share the same building blocks from an architectural point of view. If you have a clear understanding of these building blocks, it will be easier for you to design a successful IoT system.
Sensors and devices
Sensors and devices are the “thing” part of your IoT projects. Sensors and other devices interact with the physical environment. It is not only important that they accurately read the phenomenon your application needs (air temperature, power consumption, water flow, traffic density, etc.), but they have to be integrated with the overall system architecture too. When selecting the devices, you must check that they support the necessary networking protocols and that your system platform can decode the message formats they send. Device configuration is other important feature. Some devices provide configuration programs while others require internal reprogramming to change their behavior. Finally, you have to evaluate the power source the use (batteries, solar panels, AC, etc.) since it has a strong impact in the system maintenance.
Although the “i” in IoT stands for internet, you have different kinds of networks available for communications among devices and with the platform. Choosing the right networking technology depends on the characteristics and requirements of the project. It is common to use more than one technology in an IoT project. The main factors to take into account when choosing a networking technology for your IoT projects are:
- Devices spread: If devices are located in a small area like a building, an industrial plant or even a neighborhood, short-range technologies like Wi-Fi or ZigBee would be a good choice. If devices are widespread in a city or country, long-range technologies like LoRa or Sigfox can be the right choice.
- Required data rates: Some networking protocols are not suitable depending on the amount of data that the devices send. For instance, Sigfox and LoRa do not provide enough bandwidth when a sensor must send the temperature of a room or the state of a parking lot every minute.
- Network coverage: You can deploy your own network for your project or use one available network provided by third parties (2G, Sigfox, NB-IoT, etc.). While the former usually involves higher deployment costs, the latter can have coverage problems that cannot be solved on your own.
The software platform of your IoT projects will be in charge of managing the devices (onboarding process, monitoring, etc.) and receiving and processing the messages. It also must provide APIs for reading the gathered data. Your IoT software platform must be flexible enough to support different communication protocols (MQTT, REST, XMPP, WebSockets, etc.). Once the data is received, the platform must provide capabilities to understand both standard message formats (like MBus) as well as custom formats from the devices. Platforms are usually deployed in the cloud, but you should check if they can be deployed on-premises in case the project is big enough and investing in computing hardware is an option. In addition to basic functionalities, some platforms provide other interesting features like data mining, multitenancy, deriving data, etc.
All IoT projects are carried out for a purpose. Maybe the goal is receiving an alarm when a laboratory room reaches a certain temperature, or optimizing the water supply of a city. In other cases IoT projects are used for reducing the power consumption of a building or predicting the maintenance of an industrial engine. IoT applications are just software systems which use the data that is received by the devices and the functionality that they provide. Depending on the level of customization, three categories can be defined:
- IoT vertical applications, which provide out-of-the-box functionalities for a specific application domain like smart waste management, smart building monitoring, smart water metering, smart irrigation, etc.
- Toolboxes and frameworks for building your own dashboards, reports, alarms, graphics, etc. These can be independent products which integrate with external data sources or they can be provided as a part of the IoT software platform.
- Custom software applications which are developed from the ground up using standard software development technologies. These applications will use the IoT software platform APIs as the foundation for building their functionality.
End clients looking for a solution to their fit needs, engineering firms designing IoT projects and technology providers in the IoT ecosystem must know these basic building blocks well. At the end of the day, all projects will need them. In some case it can be tempting to use closed solutions which provide all these blocks using private technologies. Usually such decisions will compromise the evolution and maintenance of the project.
For all of this, it is easy to realize that the ideal situation is to work with providers that can supply all the building blocks using open and standard technologies. On the contrary, you will have to expend the necessary time to carefully build the technological puzzle for your IoT projects. In any case, having these basic visions of any IoT project will help you to build or choose the system you need.
All IoT Agenda network contributors are responsible for the content and accuracy of their posts. Opinions are of the writers and do not necessarily convey the thoughts of IoT Agenda.