We've updated our Terms of Service and Privacy Policy. Please review the changes as you continue to interact with us.
Learn more
Plugins
PerfCurve logo

PerfCurve

sskgo

Get plugin

Grafana Plugin PerfCurve

Overview

PerfCurve is a grafana panel plugin to plot operation point of rotating machine, such as pump, compressor and etc., on a canvas with its performance curves. You can draw multiple performance curves on the canvas only by giving sample points on the performance curve. The panel plugin connects sample points smoothly.

Panel Example

Important notes !!

Select the plugin version in accordance with the following rule.

  • For Grafana >= 8.X.X, use version >= 1.5.X
  • For Grafana >= 7.4.X, use version >= 1.4.X
  • For Grafana <= 7.3.X, use version <= 1.3.X

Getting started

Axes

Specify Min., Max., Label, Unit and Decimals of X-axis amd Y-axis.

Axes

Static curve

Add performance curves to the canvas by specifying sample points in comma separated value format.
The number of values in X input box and Y input Box shall be same. Natural curves are drawn based on the sample points.

Static curve

Dynamic curve (Advanced)

In case performance curve data is availble in database, they can be used to draw peformance curve which dynamically move based on the data. (Example of query is written for InfluxDB datasource.)

Dynamic curve Query for dynamic curve

Operation points

Set field names for X box and Y box to plot operating points. Set Label, Color and Point Radius, too.
Table format is recommended as query option.

Operation points Query example

Sample with TestData DB

Refer to the attached sample input with TestData DB. TestData DB is available as default, if you add TestaData DB to data source.

Sample of input with TestDB Sample of panel with TestDB

Sample of Panel JSON:

{
  "id": 23763571993,
  "gridPos": {
    "h": 9,
    "w": 12,
    "x": 0,
    "y": 0
  },
  "type": "sskgo-perfcurve-panel",
  "title": "Panel Title",
  "pluginVersion": "7.5.6",
  "targets": [
    {
      "alias": "Field X",
      "csvWave": {
        "timeStep": 60,
        "valuesCSV": "0,0,2,2,1,1"
      },
      "lines": 10,
      "points": [],
      "pulseWave": {
        "offCount": 3,
        "offValue": 1,
        "onCount": 3,
        "onValue": 2,
        "timeStep": 60
      },
      "refId": "A",
      "scenarioId": "csv_metric_values",
      "stream": {
        "bands": 1,
        "noise": 2.2,
        "speed": 250,
        "spread": 3.5,
        "type": "signal"
      },
      "stringInput": "30"
    },
    {
      "alias": "Field Y",
      "csvWave": {
        "timeStep": 60,
        "valuesCSV": "0,0,2,2,1,1"
      },
      "hide": false,
      "lines": 10,
      "points": [],
      "pulseWave": {
        "offCount": 3,
        "offValue": 1,
        "onCount": 3,
        "onValue": 2,
        "timeStep": 60
      },
      "refId": "B",
      "scenarioId": "csv_metric_values",
      "stream": {
        "bands": 1,
        "noise": 2.2,
        "speed": 250,
        "spread": 3.5,
        "type": "signal"
      },
      "stringInput": "50"
    },
    {
      "scenarioId": "csv_metric_values",
      "refId": "C",
      "alias": "Curve X1",
      "csvWave": {
        "timeStep": 60,
        "valuesCSV": "0,0,2,2,1,1"
      },
      "hide": false,
      "lines": 10,
      "points": [],
      "pulseWave": {
        "offCount": 3,
        "offValue": 1,
        "onCount": 3,
        "onValue": 2,
        "timeStep": 60
      },
      "stream": {
        "bands": 1,
        "noise": 2.2,
        "speed": 250,
        "spread": 3.5,
        "type": "signal"
      },
      "stringInput": "10, 10"
    },
    {
      "scenarioId": "csv_metric_values",
      "refId": "D",
      "alias": "Curve Y1",
      "csvWave": {
        "timeStep": 60,
        "valuesCSV": "0,0,2,2,1,1"
      },
      "hide": false,
      "lines": 10,
      "points": [],
      "pulseWave": {
        "offCount": 3,
        "offValue": 1,
        "onCount": 3,
        "onValue": 2,
        "timeStep": 60
      },
      "stream": {
        "bands": 1,
        "noise": 2.2,
        "speed": 250,
        "spread": 3.5,
        "type": "signal"
      },
      "stringInput": "70, 65"
    },
    {
      "scenarioId": "csv_metric_values",
      "refId": "E",
      "alias": "Curve X2",
      "csvWave": {
        "timeStep": 60,
        "valuesCSV": "0,0,2,2,1,1"
      },
      "hide": false,
      "lines": 10,
      "points": [],
      "pulseWave": {
        "offCount": 3,
        "offValue": 1,
        "onCount": 3,
        "onValue": 2,
        "timeStep": 60
      },
      "stream": {
        "bands": 1,
        "noise": 2.2,
        "speed": 250,
        "spread": 3.5,
        "type": "signal"
      },
      "stringInput": "20, 20"
    },
    {
      "scenarioId": "csv_metric_values",
      "refId": "F",
      "alias": "Curve Y2",
      "csvWave": {
        "timeStep": 60,
        "valuesCSV": "0,0,2,2,1,1"
      },
      "hide": false,
      "lines": 10,
      "points": [],
      "pulseWave": {
        "offCount": 3,
        "offValue": 1,
        "onCount": 3,
        "onValue": 2,
        "timeStep": 60
      },
      "stream": {
        "bands": 1,
        "noise": 2.2,
        "speed": 250,
        "spread": 3.5,
        "type": "signal"
      },
      "stringInput": "68,63"
    }
  ],
  "options": {
    "xAxis": {
      "minValue": 0,
      "maxValue": 60,
      "label": "Flowrate"
    },
    "yAxis": {
      "minValue": 0,
      "maxValue": 100,
      "label": "Pressure"
    },
    "performanceCurveData": [
      {
        "color": "rgba(136, 136, 136, 0.6)",
        "performCurveX": "10,20,30,40,50",
        "performCurveY": "80,78,72,62,48"
      }
    ],
    "dynamicPerfCurve": [
      {
        "fieldGroup": [
          {
            "xField": "Curve X1",
            "yField": "Curve Y1"
          },
          {
            "xField": "Curve X2",
            "yField": "Curve Y2"
          }
        ],
        "color": "#FADE2A"
      }
    ],
    "plotSetting": [
      {
        "color": "#F2495C",
        "label": "Label Name",
        "xField": "Field X",
        "yField": "Field Y"
      }
    ],
    "pointRadius": 4
  },
  "timeFrom": null,
  "timeShift": null,
  "datasource": null
}
Version
1.5.0
Dependencies
Grafana >=7.0.0
Developer
sskgo
Last Updated
January 11, 2022