Industrial Data Visualization with Grafana: Real-Time Monitoring and Dashboard Design
Introduction
In industrial facilities, data flows from dozens of sensors every second: temperature, pressure, weight, vibration... However, if this data is not made meaningful, it remains just "numbers." This is where Grafana stands out as the most powerful open-source tool for visualizing and making industrial data meaningful.
In this article, we'll cover how to use Grafana in industrial IoT projects, its integration with our ZMA/GDT devices, and professional dashboard design.
What is Grafana?
Grafana is an open-source platform used to visualize data from time-series databases (InfluxDB, Prometheus, TimescaleDB, Amazon Timestream, etc.). It's particularly preferred in IoT and industrial monitoring systems because:
- Real-Time Data Flow: Can update at millisecond intervals.
- Flexible Dashboard Design: Create rich visualization panels with drag-and-drop.
- Alarm System: Generates automatic alarms at defined threshold values (email, Slack, Telegram, etc.).
- Multiple Data Sources: Can combine multiple databases in a single dashboard.
Grafana Architecture for Industrial IoT
A typical industrial Grafana integration works like this:
ZMA/GDT Devices → MQTT/Modbus → IoT Gateway → Time Series DB (InfluxDB) → Grafana Dashboard
1. Data Collection: ZMA and GDT
Our ZMA Data Acquisition and GDT Digital Transmitter devices:
- Collect high-precision data with 24-bit resolution
- Communicate via Modbus RTU/TCP
- Transmit to cloud/local servers via MQTT or HTTP
2. Time Series Database
Data sources that work best with Grafana:
- InfluxDB: Open-source, high-performance time-series DB
- Amazon Timestream: Cloud-based, managed service (Our Amazon Timestream article)
- TimescaleDB: PostgreSQL-based time-series extension
3. Grafana Dashboard
Dashboards consist of different panels:
- Graph Panel: Time series charts
- Gauge Panel: Instant value indicator (RPM, temperature, etc.)
- Stat Panel: Single numerical value display
- Table Panel: Tabular data display
- Heatmap: Density maps
Real-World Application: Weighing System Dashboard
Example Grafana dashboard structure for a milk tank monitoring system:
Panel 1: Current Weight (Gauge)
SELECT last("weight") FROM "tank_data"
WHERE ("device_id" = 'GDT-001') AND time > now() - 5m
Panel 2: Fill Trend (Graph)
SELECT mean("weight") FROM "tank_data"
WHERE time > now() - 24h
GROUP BY time(10m)
Panel 3: Temperature Monitoring
SELECT "temperature" FROM "sensor_data"
WHERE ("sensor_id" = 'ZMA-TEMP-01') AND time > now() - 1h
Panel 4: Alarm Status (Stat Panel)
SELECT count("alarm") FROM "alerts"
WHERE time > now() - 1h
Grafana Alert Configuration
Automatic alarm setup for critical situations:
alert:
name: "Tank Overflow Warning"
condition:
- query: SELECT last("weight") FROM "tank_data"
- threshold: > 950 kg
notification:
- email: [email protected]
- telegram: @factory_alarms
ZMA/GDT Integration with Grafana
Step 1: MQTT Broker Setup
# Mosquitto MQTT broker installation
sudo apt-get install mosquitto mosquitto-clients
Step 2: InfluxDB Installation
# InfluxDB 2.x installation
wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.1-amd64.deb
sudo dpkg -i influxdb2-2.7.1-amd64.deb
Step 3: Data Flow with Node-RED
// Writing ZMA data from MQTT to InfluxDB
msg.payload = {
measurement: 'sensor_data',
tags: {
device_id: msg.topic.split('/')[1],
},
fields: {
weight: parseFloat(msg.payload.weight),
temperature: parseFloat(msg.payload.temp),
},
timestamp: new Date(),
}
return msg
Step 4: Grafana Data Source Configuration
URL: http://localhost:8086
Organization: amazeng
Token: [InfluxDB API Token]
Default Bucket: industrial_data
Dashboard Design Tips
1. Color Coding
- 🟢 Green: Normal operation (0-80%)
- 🟡 Yellow: Caution (80-95%)
- 🔴 Red: Critical (95-100%)
2. Panel Organization
- Top row: Instant values (Gauge, Stat)
- Middle section: Trend graphs (Graph)
- Bottom section: Alarm logs (Table)
3. Variable Usage
Add dynamism to your dashboard:
$device_id = InfluxDB Query: SHOW TAG VALUES WITH KEY = "device_id"
Grafana Cloud vs. Self-Hosted
| Feature | Grafana Cloud | Self-Hosted |
|---|---|---|
| Cost | Limited free, then paid | Server cost only |
| Maintenance | None | Updates and backups required |
| Performance | High | Hardware-dependent |
| Data Control | In cloud | On-premise |
Amazeng Recommendation: Self-hosted InfluxDB + Grafana setup for critical data.
Example Dashboard: ZMA Desk Integration
You can visualize data generated by our ZMA Desk software in Grafana:
- ZMA Desk → CSV/JSON export
- Transfer to InfluxDB via Telegraf
- Create custom dashboard in Grafana
Advanced Features
1. Annotations
Mark important events (maintenance, failures, etc.) on the timeline.
2. Variables and Templating
Monitor all devices with a single dashboard:
SELECT * FROM "data" WHERE "device_id" = '$device'
3. Grafana Loki (Log Management)
Search and analyze device logs within Grafana.
Real Project: Fully Integrated Solution
Our fully integrated weighing system offered by Amazeng:
- GDT → Modbus → ZMA → MQTT → InfluxDB → Grafana
- HMI Panel (local) + Grafana (remote monitoring)
- Cloud integration with AWS IoT Core
Conclusion and Recommendations
Grafana is a powerful tool that makes industrial data meaningful and accelerates decision-making processes. When integrated with our ZMA and GDT devices:
✅ Real-time factory monitoring
✅ Proactive maintenance (predictive maintenance)
✅ Data-driven decision making
✅ Remote access and mobile monitoring
For more information about Grafana-based monitoring systems and ZMA/GDT integration, contact our engineers.