IoT-based solutions consist of multiple devices that produce a massive amount of data. One common challenge is how to collect and make sense of all this information. Another one is managing these devices themselves: connecting to them, monitoring them, and securing them. This is where Azure services for the Internet of Things (IoT) can be very helpful.
In this article I will go over a few Azure cloud services dedicated specifically to IoT solutions. I will highlight a few approaches on how to collect data from the IoT devices and how to enable communication between them, both device-to-cloud and cloud-to-device.
Azure IoT Hub
The Azure IoT Hub provides reliable and secure communication between IoT devices. It also establishes bi-directional communication between each device and the Azure cloud. With Azure IoT Hub you can send messages:
- from a device to the cloud – e.g. temperature values provided by a sensor connected to an IoT device, sent for analysis, and
- from the cloud to a device – e.g. a message with software update payload.
The IoT Hub supports multiple messaging patterns, such as device-to-cloud telemetry, file upload from devices and health monitoring of connected devices.
Here is an example solution where IoT Hub sends SMS alerts once a motion sensor detects activity. When the sensor is triggered, the device communicates with the Hub, which, in turn, analyzes the message. Finally, the solution sends an SMS alert with the information on motion detection.
The easiest way to think about the Hub is as a gateway between IoT devices and the cloud. It is worth mentioning that you can integrate your IoT solution with other Azure cloud services, such as Azure Stream Analytics or Azure Storage.
With regards to security, IoT Hub provides secured communication between devices and the cloud. All data is encrypted. There are multiple authentication types supported by the Hub:
- SAS token-based authentication – to quickly connect devices
- Individual X.509 certificate – for secure, standards-based authentication
- X.509 CA authentication – for simple, standards-based enrolment.
To summarize, the Azure IoT Hub enables:
- Collecting device-to-cloud telemetry
- Monitoring and diagnosing connected IoT devices
- Sending cloud-to-device messages
- Provisioning new connected IoT devices through Device Provisioning Service
- Using HTTP, AMQP, and MQTT communication protocols.
I encourage you to read my technical article about Azure IoT Hub where I go into more detail on how to connect an IoT device to Azure IoT Hub, so that it sends automatic SMS alerts once motion is detected.
Azure IoT Edge
Azure IoT Edge enables moving cloud analytics and custom business logic to IoT devices. The device can process logic directly without pushing data to the cloud.
You can create Azure IoT Edge modules with the same programming model as other Azure IoT services: using Java, .NET Core 2.0, Node.js, C, or Python. Azure IoT Edge supports both Linux and Windows.
Take a look at a sample application that uses this service:
Here is what each part does:
The Azure IoT Edge runtime
The runtime enables custom logic and cloud logic on IoT Edge devices.
It is located on the IoT Edge device, and executes management and communication operations.
This can include maintaining Azure IoT Edge security standards on the device, installing and updating workloads or facilitating communication between the device and the cloud.
IoT Edge modules are units that consist of custom logic (for instance to analyze temperature) or cloud logic (like Azure Functions, Azure Stream Analytics and Azure Machine Learning).
The Azure Container Registry stores these modules as Docker containers.
When a module is being deployed on a device, the IoT Hub contacts the Azure IoT Edge runtime, which in turn pulls the image from the Azure Container Registry and starts running it.
The Azure IoT Edge runtime connects to Azure IoT Hub to facilitate communication between the Edge device and the cloud. If data has to be pushed to the cloud or a new module needs to be deployed on the device, it is done through the IoT Hub.
Azure IoT Central
Azure IoT Central is a fully-managed Software-as-a-Service (SaaS) solution that makes it easy to connect, monitor and manage IoT assets. It simplifies the initial setup of an IoT solution via a dedicated application.
An Azure IoT Central application can be easily created, deployed and customized right in your browser. There are device templates available to choose from and set up.
A device template is a blueprint of a real device model that defines the characteristics and behavior of the device. This includes telemetry, settings that determine the behavior of the device, or thresholds that the application responds to.
The Azure IoT Central can also generate test data, so that you can immediately test your selected device templates.
You can customize the application’s user interface by defining the layout of properties and settings on a device template, and by configuring custom analytics to explore data from your devices.
The service uses Azure IoT Hub Device Provisioning service (DPS), which allows you to on-board and connect IoT devices.
One of the biggest benefits of using Azure IoT Central is that you don’t need any coding skills.
In this article I described the three main Microsoft Azure services dedicated to IoT solutions. The one you should choose depends on your specific use case.
If you need to process your data locally, Azure IoT Edge is the way to go.
If you need to collect data from different devices or you need to pass some information/messages to the devices, Azure IoT Hub can be very helpful.
Finally, you can use Azure IoT Central to easily connect, monitor and manage your IoT assets at scale.
You can start using all these services with an active Azure cloud subscription. If you do not have one yet, you can create and try it here.
If you wish to learn more – get in touch!