Recently, the Microsoft Azure IoT Edge platform was updated with more features, better documentation and lots of goodies. Version two is brand new and still in Public Preview. The new features and fixes are both very welcome and promising.
Yes, the learning curve of this new version is steep, especially if you are new (like me) to Docker. But once you have started building your own Edge solution, things seem to fall into place quite well.
A logical flow, on learning this new platform, seems to be described in the Microsoft documentation:
- Simulate an IoT Edge device in Windows
- Simulate an IoT Edge device in Linux
- Develop and deploy a C# module
- Deploy Azure Stream Analytics as a module
- Deploy Azure Machine Learning as a module
- Deploy Azure Functions as a module
Looks easy, doesn’t it?
But by reading the comments on the different pages, it seems people are still confused.
The biggest tip is: DO NOT MIX VERSION ONE AND VERSION TWO DOCUMENTATION.
Version one is/was based on one executable (gw.exe) which injects classes from DLL’s (a configuration file has to be supplied). Modules are just classes in the DLL’s.
Version two is based on Docker Containers, each module is a separate container and therefore each module is a separate executable. These modules share the same logic on how to connect to a shared message bus which provides the routing of messages between the modules. This ‘runtime’ has to be installed on the Edge machine, next to/outside the Docker containers.
Note: the good thing is that the architecture still stands, multiple modules on top of a message bus and messages are routed. The best thing is that the new routing solution is far more intelligent, different messages are separated from each other. And Microsoft has provided some guidance for migration for your ‘old’ modules.
So work your way through the documentation provided above. After that, check out my recent blogs:
- Deploy an Azure StreamAnalytics Job on the IotEdge
- Introduction to the Microsoft Azure IoTEdge Modbus-tcp-iotedge module
- Better property roundtrip for Azure IoIEdge Module Twin
OK, I know, the learning curve is still steep.
How about if I add an example of a simple but functional module?