The above design pattern uses a combination of technologies to collect information from distributed systems.

The Azure IOT hub provides a central point for receiving updates from devices in the field.

Stream analytics processes the incoming updates and forwards them to the appropriate storage solution.

To facilitate real time querying and analysis of the data, the data is stored in a structured SQL database over which the Power Platform analytics are built.

The Power platform consumes ‘views’ of the raw data – This decouples the database structure from the power platform allowing updates to both without necessarily impacting the other.

It also allows granular control over what components of the information are made available.

Alerting for errors and variations in trends is handled through azure functions analysing the data periodically and pushing the updates to email and teams channels for user awareness.

The key to the design pattern is that it allows a variety of devices to push updates into the IOT hub.

Devices with a programmable ability can send updates into Azure IOT Hub directly using MTQTT, AMQP or HTTPS for transport.

Industrial and legacy devices without an ability to use one of these technologies are managed through a protocol converter.

In the above example, the protocol converter is a python application running inside docker on a Cisco IR1101. The application polls the PLC periodically using it’s proprietary protocol and send the updated values into the Azure IOT Hub.