AzureIoTGBB / iot-edge-offline-dashboarding

Azure IoT Edge offline dashboarding/reporting sample. Guidance and sample dashboards
MIT License
34 stars 18 forks source link
azure dashboards edge grafana influxdb iot node-red offline

IoT Edge Offline Dashboarding

This project provides a set of modules that can be used with Azure IoT Edge to perform dashboarding at the edge.

The goal is to provide both guidance as well as a sample implementation to enable dashboards that run on the edge at sites in the field, while still sending data to the cloud for centralized reporting and monitoring.

If you want to jump right into the sample implementation, please start here.

Table of contents

Engage and contribute

Solution goals

The purpose of this solution is to provide both general purpose guidance for dashboarding on the edge as well as a sample implementation. While our sample implementation focuses on manufacturing, there are plenty of other potential use cases for this technology. Some examples include:

The main thing in common in these scenarios is the potential need to not only send important 'site' data to the cloud for centralized reporting and analytics, but also the ability to continue local operations in the event of an internet outage.

The goal of this project is to demonstrate how this can be done for a specific manufacturing use case, but also give an example that can be re-used for other use cases by:

Solution architecture & components

The architecture for this solution utilizes four main components in addition to Azure IoT Hub.

This architecture and its components are intended to be general purpose and apply across several industries and use cases by simply switching out the data sources and dashboards. However, by far the customer segment where this need comes up the most often is manufacturing. Therefore, the sample implementation below focuses on that use case.

Reasons for selecting this architecture

The main purpose of this solution is to provide an ability for local operators to view dashboards at the edge regardless of whether the edge device was online or offline. This is a natural scenario that IoT Edge supports. To support dashboarding however, there was a need to also select both a storage component as well as a visualization component.

Storage component

Several storage solutions were reviewed and the team selected InfluxDB for the following reasons:

Although InfluxDB was chosen to support storage, other DBs were considered and could potentially be used as well. For example, Graphite, Prometheus and Elasticsearch were also considered. Azure Time Series Insights was also considered but at the time of this activity was not yet available on Azure IoT Edge.

Visualization component

Several visualization solutions were reviewed and the team selected Grafana for the following reasons:

Although Grafana was chosen to support visualization and dashboarding, other tools were considered and could potentially be used as well. For example, Kibana may be a better fit for visualization and analyzing of log files and is a natural fit if working with Elasticsearch. Chronograf was considered but was limited to InfluxDB as a data source. PowerBI Report Server was also investigated, but lack of support for being able to containerize the PowerBI Report Server meant it could not be used directly with Azure IoT Edge. Additionally, PowerBI Report Server does not support the real-time "live" dashboarding required for this solution.

Integration component

Node-RED was chosen as the tool to ease integration between IoT Edge and InfluxDB. Although the integration component could be written in several programming languages and containerized, Node-RED was selected for the following reasons:

Offline Dashboards sample

The "Offline Dashboards" sample is built upon Azure IoT Edge technology. Azure IoT Edge is responsible for deploying and managing lifecycle of a set of modules (described later) that make up Offline Dashboards sample.

Diagram showing the offline dashboard architecture

Offline Dashboards runs on the IoT Edge device, continuously recording data that is sent from devices to IoT Hub. It contains 3 modules:

  1. A Node-Red module that collects data from one or more data sources, in our case off of the edgeHub message bus, and writes that data into InfluxDB.
  2. An InfluxDB module which stores data in time series structure.
  3. A Grafana module which serves data from InfluxDB in dashboards.

Diagram showing the Azure IoT Edge solution architecture

The sample implementation leverages data from two OPC-UA servers. For many reasons, OPC-UA is Microsoft's recommended manufacturing integration technology, where possible. However, the OPC-UA publisher that generates data for the dashboard could be substituted with other data sources including Modbus, MQTT, or other custom protocols.

Start learning about the actual sample implementation here.