Test dataset for Grafana containing simulated metrics from a Voron 0 3D printer. Designed for learning Grafana variables, array-indexed data visualization, and time-series analysis.
- Open Grafana and navigate to Connections > Data sources > TestData DB
- Create a new dashboard and add a panel
- In the query editor, select Scenario: CSV Content
- Copy and paste the contents from
data/voron0_testdata.csv - Click Apply to visualize
- Install the Infinity Plugin: Connections > Add new connection > Infinity
- Add as data source
- In the query configuration:
- Type: CSV
- Source: URL
- URL:
https://raw.githubusercontent.com/YOUR_USERNAME/Grafana-Voron-0-Metrics/main/data/voron0_testdata.csv - Parser: Backend
- Apply configuration
If you have the CSV Datasource Plugin installed, use the GitHub raw URL directly as the source.
The CSV file contains the following columns:
- timestamp: Time in seconds (0-1233s, loops automatically)
- array_index: Sensor index (1-32)
- sensor_name: Human-readable sensor name
- value: Measured value
- unit: Unit of measurement (mm, C, %, s)
| Variable | Index | Description | Typical Use Case |
|---|---|---|---|
| Layer_Time | 21 | Time to complete each layer | Track cycle times, identify bottlenecks |
| X_Position | 1 | Toolhead X-axis position | Motion analysis, path visualization |
| Y_Position | 2 | Toolhead Y-axis position | Motion heatmaps, travel patterns |
| Z_Position | 3 | Current build height | Layer progression tracking |
| X_Speed | 4 | X-axis velocity | Speed optimization analysis |
| Y_Speed | 5 | Y-axis velocity | Acceleration profiling |
| Extruder_Temp_Actual | 10 | Current hotend temperature | Thermal stability monitoring |
| Extruder_Temp_Target | 11 | Target hotend temperature | Setpoint tracking |
| Bed_Temp_Actual | 12 | Current bed temperature | Heat distribution analysis |
| Bed_Temp_Target | 13 | Target bed temperature | Thermal control validation |
| Hotend_Fan_Speed | 14 | Hotend cooling fan | Thermal management |
| Part_Cooling_Fan | 15 | Part cooling fan speed | Print quality correlation |
| Layer_Number | 20 | Current layer count | Progress tracking |
| Total_Time | 22 | Elapsed print time | Duration analysis |
| Progress | 23 | Completion percentage | Real-time status |
| Flow_Rate | 24 | Extrusion flow rate | Material usage tracking |
| Extruder_Position | 30 | Filament fed distance | Material consumption |
| Print_Speed | 31 | Current print velocity | Performance monitoring |
| Acceleration | 32 | Motion acceleration | Dynamics analysis |
| Index Range | Category | Sensors |
|---|---|---|
| 1-5 | Motion | X/Y/Z position and velocity |
| 10-15 | Thermal | Temperatures and fans |
| 20-24 | Process | Layer info, timing, progress |
| 30-32 | Extruder | Position, speed, acceleration |
Configuration for a cycle time variable:
- Navigate to Dashboard Settings > Variables > Add variable
- Enter configuration:
Name: cycletime Type: Custom Label: Layer Time Custom options: Layer Time : 21 - Optional: Enable Multi-value and Include All
- Save variable
Usage in query:
WHERE array_index = ${cycletime}Configuration for multiple temperature sensors:
Name: temp_sensor
Type: Custom
Label: Temperature Sensor
Custom options:
Extruder Actual : 10
Extruder Target : 11
Bed Actual : 12
Bed Target : 13
This allows selecting between different temperature measurements in a single panel.
Configuration for axis position tracking:
Name: position
Type: Custom
Label: Axis Position
Custom options:
X-Position : 1
Y-Position : 2
Z-Position : 3
Step-by-step guide:
- Add a new panel to your dashboard
- Select TestData as the data source
- Choose CSV Content scenario and load your data
- In the Transform tab:
- Add transformation: Filter data by name
- Select columns 10, 11, 12, 13 (temperature metrics)
- Optional: Add transformation to rename fields for clarity
- In the panel options:
- Title: "Temperature Monitoring"
- Visualization: Time series
- Y-axis unit: Celsius (C)
- Y-axis min: 0, max: 250
- Legend: Show
- Add thresholds:
- Warning at 210C (red line)
- Target at 205C (green line)
- Apply and save
Configuration:
- Add new panel with TestData source
- Load CSV data
- Transform: Filter to column 21 (Layer_Time)
- Visualization: Bar chart or Time series
- Panel settings:
- Title: "Layer Time Analysis"
- Y-axis unit: seconds (s)
- Add threshold at 10 seconds for slow layer detection
- Optional: Add stat panel showing average layer time
Configuration:
- Create panel with TestData source
- Filter columns 1 and 2 (X_Position, Y_Position)
- Visualization: Scatter plot or Canvas with heatmap overlay
- Settings:
- Title: "Toolhead Motion Pattern"
- X-axis: X_Position (0-120mm)
- Y-axis: Y_Position (0-120mm)
- Point size: Based on speed or layer time
For TestData CSV datasource:
WHERE array_index = 21
For SQL-compatible datasources:
SELECT
timestamp as time,
value
FROM voron0_testdata
WHERE array_index = ${sensor}
AND timestamp >= $__from
AND timestamp <= $__to
ORDER BY timestampQuery multiple related sensors:
SELECT
timestamp as time,
sensor_name as metric,
value
FROM voron0_testdata
WHERE array_index IN (10, 11, 12, 13)
ORDER BY timestampCalculate statistics over time windows:
SELECT
$__timeGroup(timestamp, '1m') as time,
AVG(value) as avg_value,
MAX(value) as max_value,
MIN(value) as min_value
FROM voron0_testdata
WHERE array_index = 21
GROUP BY time
ORDER BY time- Start with a single metric: Begin by visualizing one temperature sensor (index 10)
- Add complexity gradually: Once comfortable, add more metrics to the same panel
- Use transformations: Learn to filter, rename, and calculate derived fields
- Experiment with visualizations: Try different chart types for the same data
- Create meaningful dashboards: Group related metrics logically
Units and Scales
- Always set appropriate units (C for temperature, mm for position, % for rates)
- Don't rely on auto-scaling for temperature plots
- Use consistent scales across related panels
Color Coding
- Use intuitive colors: red for hot, blue for cold, yellow for warnings
- Maintain consistency: same metric should have same color across panels
- Use threshold colors to highlight out-of-range conditions
Panel Organization
- Group related metrics together (all temperatures in one panel)
- Use rows to separate categories (Motion, Thermal, Process)
- Add text panels for context and documentation
Variable Usage
- Create variables for frequently changed parameters
- Use descriptive labels instead of numeric indices
- Enable multi-value selection for comparison views
Performance Monitoring
- Track layer times (index 21) to identify slow layers
- Monitor speeds (indices 4, 5, 31) for optimization
- Compare actual vs target temperatures (10 vs 11, 12 vs 13)
Quality Analysis
- Correlate temperature stability with print quality
- Analyze acceleration patterns during layer changes
- Track flow rate consistency (index 24)
Troubleshooting
- Identify thermal runaway conditions
- Detect motion anomalies through position tracking
- Monitor fan behavior during transitions
- Format: CSV with headers
- Duration: 1233 seconds (20 minutes 33 seconds)
- Data Points: Variable intervals (5-150 seconds)
- Metrics: 15 unique sensors across 4 categories
- Loop Behavior: Data automatically restarts after completion
- Device: Voron 0 (120×120×120mm build volume)
- Layers: 150 layers, 0.2mm layer height
├── data/
│ └── voron0_testdata.csv # Main CSV with all sensor data
├── docs/
│ └── sensor_mapping.md # Detailed sensor documentation
└── README.md # This file
For detailed sensor specifications, value ranges, and advanced usage patterns, see docs/sensor_mapping.md.
This dataset is ideal for:
- Learning Grafana query syntax and transformations
- Understanding time-series data visualization
- Practicing dashboard design and layout
- Testing alert and notification configurations
- Training sessions and workshops
- Prototyping monitoring solutions
Data Loop The dataset runs from timestamp 0 to 1233 seconds, then automatically loops back to the beginning. This simulates continuous operation for testing and demonstration purposes.
Query Performance For optimal performance with large time ranges:
- Use appropriate time filters
- Leverage query caching where available
- Consider aggregation for overview panels
Variable Best Practices
- Use meaningful variable names (e.g.,
temp_sensornotvar1) - Set appropriate default values
- Enable multi-value for comparison scenarios
- Use query variables for dynamic sensor lists
This dataset is provided for educational and testing purposes. Free to use for learning, prototyping, and demonstrations.
Ready to start visualizing? Load the CSV into Grafana and explore the data!