All Projects → AzureIoTGBB → iot-edge-offline-dashboarding

AzureIoTGBB / iot-edge-offline-dashboarding

Licence: MIT license
Azure IoT Edge offline dashboarding/reporting sample. Guidance and sample dashboards

Programming Languages

javascript
184084 projects - #8 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to iot-edge-offline-dashboarding

ruuvitag-demo
Demo of reading Bluetooth Low Energy sensor measurements of RuuviTag environmental sensors and feeding them to MQTT, a database and dashboards
Stars: ✭ 14 (-54.84%)
Mutual labels:  influxdb, node-red, grafana
docker-iot-dashboard
A complete IoT server for LoRaWAN IoT projects: node-red + influxdb + grafana + ssl + let's encrypt using docker-compose.
Stars: ✭ 79 (+154.84%)
Mutual labels:  influxdb, node-red, grafana
cv4pve-metrics
Metrics for Proxmox VE, Grafana with dasboard, InfluxDb
Stars: ✭ 38 (+22.58%)
Mutual labels:  influxdb, grafana, dashboards
air-quality
Air quality sensing and monitoring
Stars: ✭ 17 (-45.16%)
Mutual labels:  influxdb, node-red, grafana
Wizzy
Manage & automate Grafana with easy wizzy
Stars: ✭ 461 (+1387.1%)
Mutual labels:  influxdb, grafana, dashboards
Grafana
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
Stars: ✭ 45,930 (+148061.29%)
Mutual labels:  influxdb, grafana
Pi Hole Influx
A python daemon to send Pi-Hole stats for Grafana to InfluxDB
Stars: ✭ 126 (+306.45%)
Mutual labels:  influxdb, grafana
Docker Influxdb Grafana
A Docker container which runs InfluxDB and Grafana ready for persisting data
Stars: ✭ 130 (+319.35%)
Mutual labels:  influxdb, grafana
Ohmgraphite
Export Open Hardware sensor data to Graphite / InfluxDB / Prometheus / Postgres / Timescaledb
Stars: ✭ 155 (+400%)
Mutual labels:  influxdb, grafana
Internet Speedtest Docker
Internet testing running on Docker Compose.
Stars: ✭ 88 (+183.87%)
Mutual labels:  influxdb, grafana
Gpu monitor
Monitor your GPUs whether they are on a single computer or in a cluster
Stars: ✭ 133 (+329.03%)
Mutual labels:  influxdb, grafana
Hargo
Hargo is a Go library and command line utility that parses HAR files, can convert to curl format, and serve as a load test driver.
Stars: ✭ 164 (+429.03%)
Mutual labels:  influxdb, grafana
Iotstack
docker stack for getting started on IOT on the Raspberry PI
Stars: ✭ 1,383 (+4361.29%)
Mutual labels:  influxdb, grafana
Wait4disney
Shanghai Disney Waiting Queue Statistics 上海迪士尼排队情况
Stars: ✭ 99 (+219.35%)
Mutual labels:  influxdb, grafana
Grafana Influx Dashboard
Grafana InfluxDB scripted dashboard
Stars: ✭ 130 (+319.35%)
Mutual labels:  influxdb, grafana
Trickster
Open Source HTTP Reverse Proxy Cache and Time Series Dashboard Accelerator
Stars: ✭ 1,306 (+4112.9%)
Mutual labels:  influxdb, dashboards
Appmetrics
App Metrics is an open-source and cross-platform .NET library used to record and report metrics within an application.
Stars: ✭ 1,986 (+6306.45%)
Mutual labels:  influxdb, grafana
InfluxDB
App Metrics Extensions for InfluxDB reporting
Stars: ✭ 17 (-45.16%)
Mutual labels:  influxdb, grafana
Pi Hole Monitoring
Monitoring Pi-Hole statistics with Grafana
Stars: ✭ 196 (+532.26%)
Mutual labels:  influxdb, grafana
netdata-influx
Netdata ➡️ InfluxDB metrics exporter & Grafana dashboard
Stars: ✭ 29 (-6.45%)
Mutual labels:  influxdb, grafana

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:

  • Retail stores that may need local dashboards for inventory or asset management
  • Warehouses that may need to manage the tracking and movement of product throughout the warehouse
  • Smart buildings who may need to manage energy or HVAC efficiency throughout the property
  • "Things that move" applications such as container or cruise ships that may need to operate for extended periods offline

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:

  • Replacing the data source(s) to be specific to the new use cases
  • Replacing the configuration files for the data ingestion and dashboards

Solution architecture & components

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

  • Azure IoT Edge is utilized to orchestrate and manage modules at the edge in addition to providing capabilities for offline operation and message routing.
  • Node-RED is an open-source flow programming tool utilized to easily integrate and route messages from edge devices to InfluxDB.
  • InfluxDB is an open-source, time series database for storing device telemetry.
  • Lastly, Grafana is an open-source analytics and dashboarding tool for visualizing device telemetry.

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:

  • Influx DB is a time series DB and as such is a natural fit for telemetry data from devices
  • Open-source with a large community following
  • Supports plugin to Grafana
  • Node-RED libraries for easy integration
  • Quick time to value and can be deployed as a Docker container
  • Ranked #1 for time series DBs according to DB-Engines

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:

  • Open-source with a large community following
  • This particular use case covers metric analysis vs log analysis
  • Flexibility with support for a wide array of plugins to different DBs and other supporting tools
  • Allows you to share dashboards across an organization
  • Quick time to value and can be deployed as a Docker container

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:

  • Open-source with a large community following
  • Readily available nodes for tapping into IoT Edge message routes
  • Readily available nodes for integrating and inserting data into InfluxDB as well as many other DBs
  • Large library of nodes to integrate with other tools and platforms
  • Easy flow-based programming allows manipulation and massaging of messages before inserted into a DB.
  • Can be deployed as a Docker container

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].