Microsoft MVP on Azure IoT | International Speaker | Principle architect | Providing real-time insights from 2026 til now
Auteur: Sander van de Velde | Microsoft MVP Azure IoT | IoT Solution Architect | Speaker | Advisor
I started as an IT consultant in 1993. I like to get my hands dirty with software innovations and I try to implement these in my daily work.
Currently, I am involved in the IoT Platform part of Azure (eg. IoT Hubs, IoT Edge, StreamAnalytics, Azure Functions, etc.) and Azure in general.
I've been presented with the 2017, 2018, 2019, 2020, 2021, 2022, 2023 Microsoft Most Valuable Professional (MVP) Award and I'm a member of the Microsoft Azure Advisory Board.
For me, it is important to share knowledge. And I am committed to doing so by writing blogs, articles for magazines, and giving lots of presentations.
When offline, I like cutting down trees using Gränsfors Bruks axes, sailing, motorcycling or geocaching with my wife and my sons.
Because I only had twenty minutes for explaining what TSI is and for demonstrating how it works, I had to skip some topics.
In this blog, I give an overview of what I demonstrated plus I add some extra goodies and in-depth information because there luckily is no time limit to this blog 🙂
In the past, I have written about that perfect NodeRed node for Azure IoT. Using this node, you can connect to eg. Azure IoT and Azure IoT Central from any NodeRed solution.
I came across the Advantech ICR devices which offer cellular (4G) router connectivity in a ruggedized format and you can add your own custom logic:
You can either put C or Python apps on them and you also can use NodeRed on the V3 and V4 platforms.
Let’s dive into this NodeRed support and have an ICR connected to Azure:
Update: Videos of various sessions are now available (if applicable).
November 2-4 2021, there is another Microsoft Ignite. Again, this is a virtual events. So, all event sessions are online and Microsoft offers free registration and access.
Join us November 2–4, 2021 to explore the latest tools, training sessions, technical expertise, networking opportunities, and more.
As always, here is a list of IoT related sessions.
Update: It was a blizz! The airplane in Budapest after a successful flight. landed The recording is available here:
On Monday, November 15th a great team of MVPs will walk you through the simple process of setting up an Azure IoT solution.
What to expect?
We will take you through an end-to-end solution from real flight tracking data like speed, altitude and location from a flight departing London. During the event we’ll track the flight’s progress to its destination and show how to get that data from an IoT device at the edge into Microsoft Azure IoT and the cloud where it can be processed for display on a dashboard or stored for later processing. We won’t be able to teach you how to become an IoT expert in the 2.5 hours we have – but what we can do is show you how to build on your current developer skills to integrate IoT into your business applications (and passion projects!) and set you up on your journey to become certified in IoT with the Microsoft AZ220 qualification.
I myself will show the power of Time Series Insights to capture data, let you understand how that data can support business objectives, and show how to surface that data from an engineer’s perspective.
The interactive, online, event takes place at 10:00-12:45 GMT (UTC±0).
Azure IoT Edge runs on both Windows 10 and Linux, let’s talk about how to set up that Azure IoT Edge runtime.
The current LTS 1.1.* version of Azure IoT Edge still supports Windows containers on Windows devices.
The newest version of Azure IoT Edge, the 1.2.* version supports running only Linux containers on Windows. This is called EFLOW (Edge for Linux on Windows).
So, Microsoft supports both Linux containers on Linux and Windows too. Technically, you have to write only one solution running on both operating systems.
Still, you have to build and push separate container versions of the same logic based on the processor architecture.
Azure IoT Edge runs on most flavors of (Linux) operating systems that can run containers; however, not all of these systems are equally supported. There is documentation available with an up-to-date list of supported operating systems. Check out if your operating system gets either Tier 1 or Tier 2 support.
As an example, Ubuntu 20.04LTS is currently not officially supported in Tier 1.
Update 21-10-2021: During the recent Azure IoT Edge Summit – Technical Track it is announced Ubuntu 20.04 is on the product team near term roadmap and coming soon.
Still, the Azure IoT Edge runtime can be installed and is considered compatible.
That runtime is built up in a few parts:
A daemon (process) that secures the runtime and start the local part of an Azure IoT Edge solution
The open-source Moby container runtime where the modules will be hosted in
A local directory structure for configuration
Regarding the installation of the runtime, you can follow the original documentation.
This guide does not point you to a simple installation. You need to have technical skills to roll out the runtime. And the rollout is done by hand.
Now, a script is provided and maintained by the Microsoft product team that can be used to automate the roll out of the runtime, including support for DPS.
IoT Plug and Play enables solution builders to integrate IoT devices with their solutions without any manual configuration.
It introduces a model as a public description of a device. This device model advertises the capabilities of the logic on your IoT device like telemetry, properties, and commands. These elements are bundled as an interface. These interfaces are described using the Digital Twins Definition Language (DTDL).
Implementing IPnP in your solution is not that hard. The Azure IoT Device SDKs have you covered. Just interact with the cloud as usual. Only, when setting up the connection, the device exposes a ModelId. This id is compared with public models available in a repository so the actual model can be restored.
Next to direct-internet-connected devices, Azure IoT also support this concept of edge compute:
The way Azure IoT Edge devices are connected to the cloud differs quite a lot.
Azure IoT Edge devices lack the support for a ModelId. So there is no direct reference to any model is a model repository. But each type of edge device comes with a Deployment Manifest, describing the logic to be rolled out on the edge device and related settings.
These differences have an impact on how to implement IoT Plug and Play device templates.
Let’s see how to get started with IPnP for edge devices in IoT Central.
Azure IoT Edge makes it possible to run extensive logic within your factory, building, vehicle, etc. while it’s connected to the cloud.
This way, we can monitor the underlying sensors and protocols and measure what’s happening on the Edge. We are even capable of making predictions, both on the Edge and in the Cloud, of what is going to happen based on the current measurements and the data received over the last second, minute, hour, etc.
On a meta-level, Azure IoT Edge also comes with features for monitoring the edge device itself. Think about monitoring metrics and logging.
These features are mostly centralized around the edge modules and runtime. Due to the edge logic being sand-boxed, this is fine.
Still, we want to be able to go beyond the logic we deployed.
It would be nice if we would be able to break out of that sandbox and get some information about the Docker/Moby environment, IoT Edge runtime daemon, network, etc.:
This is actually offered!
Azure IoT Edge offers a so-called ‘support bundle’.
It is just a bundle of files with eg. logs, taken from various sources on the edge device and it is made available so you can support your edge device.
It contains:
Module logs
IoT Edge security manager logs
Container engine logs
‘iotedge check‘ JSON output
Other useful debug information
It’s even possible to retrieve these files ‘over-the-air’. This makes remote diagnostics possible for all your Azure IoT Edge devices!
Right from the start back in 2015, The Things Network supported connecting their LoraWan backend platform to other (cloud) platforms.
Connecting to the Azure cloud was no exception to this.
There was no default integration but the support for the MQTT protocol opened this door. Back then, I already blogged about using MQTT to connect. Based on that logic, bridges appeared for both uplink and downlink messages.
Later on, Microsoft also introduced the secure and flexible IoT Central bridge to connect to The Things Network, based on uplink support for webhooks.
Still, even with the new V3 portal of The Things Network, this integration was still based on either the Webhook integration or the original V3 MQTT interface.
All these techniques require an extra layer of logic between the two clouds.
The main features of the Azure IoT Hub Integration are:
Devices only need to be registered in the Azure IoT Hub. The related TTN application device registrations are kept in sync by TTN. Just use IoT Hub Device Twin tags to control your TTN device registration
Uplink messages appear both as telemetry and as Device Twin reported property updates
Downlink messages are sent using the Device Twin desired properties
The current documentation is pretty straight forward (although the DPS service logo is shown, it’s not part of the standard solution).
Let’s check out how this integration works and let’s dive deeper into this solution architecture.
Azure Maps tiles live inside the browser. I also needed something like Websockets to update the page representing the map. For this, I wanted to use Azure SignalR Service.
Last but not least, I was looking for a lightweight website because I need to host the pages somewhere.