diff --git a/examples/ioTSensorsOPCUA/grafana/dashboards/Power Generators Dashboard.json b/examples/ioTSensorsOPCUA/grafana/dashboards/Power Generators Dashboard.json deleted file mode 100755 index 8afaccb..0000000 --- a/examples/ioTSensorsOPCUA/grafana/dashboards/Power Generators Dashboard.json +++ /dev/null @@ -1,306 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "target": { - "limit": 100, - "matchAny": false, - "tags": [], - "type": "dashboard" - }, - "type": "dashboard" - } - ] - }, - "editable": true, - "fiscalYearStartMonth": 0, - "gnetId": null, - "graphTooltip": 0, - "id": 1, - "iteration": 1658339398004, - "links": [], - "liveNow": false, - "panels": [ - { - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 20, - "gradientMode": "opacity", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "smooth", - "lineWidth": 1, - "pointSize": 3, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 15, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 2, - "options": { - "legend": { - "calcs": [ - "last", - "min", - "max", - "mean" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "multi" - } - }, - "repeat": null, - "targets": [ - { - "query": "from(bucket: \"simulators\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"power-generators\")\r\n |> filter(fn: (r) => r[\"site\"] == \"${site}\")\r\n |> filter(fn: (r) => r[\"area\"] == \"${area}\")\r\n |> filter(fn: (r) => contains(value: r[\"generator\"], set: ${gens:json}))\r\n |> filter(fn: (r) => contains(value: r[\"tag\"], set: ${tags:json}))\r\n |> map(fn: (r) => ({ r with tag: r.generator + \"/\" + r.tag }))\r\n |> keep(columns: [\"_time\", \"_value\",\"tag\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\r\n |> yield(name: \"mean\")", - "refId": "A" - } - ], - "title": "${site} --> ${area} --> ${gens} --> ${tags}", - "transformations": [], - "transparent": true, - "type": "timeseries" - }, - { - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - } - }, - "mappings": [] - }, - "overrides": [] - }, - "gridPos": { - "h": 13, - "w": 12, - "x": 0, - "y": 15 - }, - "id": 3, - "maxPerRow": 2, - "options": { - "displayLabels": [ - "percent" - ], - "legend": { - "displayMode": "table", - "placement": "bottom", - "values": [ - "percent", - "value" - ] - }, - "pieType": "donut", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "tooltip": { - "mode": "multi" - } - }, - "repeat": "tags", - "repeatDirection": "h", - "targets": [ - { - "query": "from(bucket: \"simulators\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"power-generators\")\r\n |> filter(fn: (r) => r[\"site\"] == \"${site}\")\r\n |> filter(fn: (r) => r[\"area\"] == \"${area}\")\r\n |> filter(fn: (r) => contains(value: r[\"generator\"], set: ${gens:json}))\r\n |> filter(fn: (r) => r[\"tag\"] == \"${tags}\")\r\n |> map(fn: (r) => ({ r with tag: r.generator + \"/\" + r.tag }))\r\n |> keep(columns: [\"_time\", \"_value\",\"tag\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\r\n |> yield(name: \"mean\")", - "refId": "A" - } - ], - "title": "${site} --> ${area} --> ${gens} --> ${tags}", - "transformations": [], - "transparent": true, - "type": "piechart" - } - ], - "schemaVersion": 31, - "style": "dark", - "tags": [ - "pgmqtt" - ], - "templating": { - "list": [ - { - "allValue": null, - "current": { - "selected": false, - "text": "Dallas Expressway Plant", - "value": "Dallas Expressway Plant" - }, - "datasource": "InfluxDB", - "definition": "from(bucket: \"simulators\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"power-generators\")\r\n |> keep(columns: [\"site\"])\r\n |> group()\r\n |> distinct(column: \"site\")\r\n\r\n", - "description": null, - "error": null, - "hide": 0, - "includeAll": false, - "label": "Site", - "multi": false, - "name": "site", - "options": [], - "query": "from(bucket: \"simulators\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"power-generators\")\r\n |> keep(columns: [\"site\"])\r\n |> group()\r\n |> distinct(column: \"site\")\r\n\r\n", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - }, - { - "allValue": null, - "current": { - "selected": false, - "text": "CMOS Facility", - "value": "CMOS Facility" - }, - "datasource": "InfluxDB", - "definition": "from(bucket: \"simulators\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"power-generators\")\r\n |> filter(fn: (r) => r[\"site\"] == \"${site}\")\r\n |> keep(columns: [\"area\"])\r\n |> group()\r\n |> distinct(column: \"area\")", - "description": null, - "error": null, - "hide": 0, - "includeAll": false, - "label": "Area", - "multi": false, - "name": "area", - "options": [], - "query": "from(bucket: \"simulators\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"power-generators\")\r\n |> filter(fn: (r) => r[\"site\"] == \"${site}\")\r\n |> keep(columns: [\"area\"])\r\n |> group()\r\n |> distinct(column: \"area\")", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - }, - { - "allValue": null, - "current": { - "selected": true, - "text": [ - "Generator_1", - "Generator_3" - ], - "value": [ - "Generator_1", - "Generator_3" - ] - }, - "datasource": "InfluxDB", - "definition": "from(bucket: \"simulators\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"power-generators\")\r\n |> filter(fn: (r) => r[\"site\"] == \"${site}\")\r\n |> filter(fn: (r) => r[\"area\"] == \"${area}\")\r\n |> keep(columns: [\"generator\"])\r\n |> group()\r\n |> distinct(column: \"generator\")\r\n\r\n", - "description": null, - "error": null, - "hide": 0, - "includeAll": true, - "label": "Generators", - "multi": true, - "name": "gens", - "options": [], - "query": "from(bucket: \"simulators\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"power-generators\")\r\n |> filter(fn: (r) => r[\"site\"] == \"${site}\")\r\n |> filter(fn: (r) => r[\"area\"] == \"${area}\")\r\n |> keep(columns: [\"generator\"])\r\n |> group()\r\n |> distinct(column: \"generator\")\r\n\r\n", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "type": "query" - }, - { - "allValue": null, - "current": { - "selected": true, - "text": [ - "Fuel", - "FuelUsed" - ], - "value": [ - "Fuel", - "FuelUsed" - ] - }, - "datasource": "InfluxDB", - "definition": "from(bucket: \"simulators\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"power-generators\")\r\n |> filter(fn: (r) => r[\"site\"] == \"${site}\")\r\n |> filter(fn: (r) => r[\"area\"] == \"${area}\")\r\n |> filter(fn: (r) => contains(value: r[\"generator\"], set: ${gens:json}))\r\n |> keep(columns: [\"tag\"])\r\n |> group()\r\n |> distinct(column: \"tag\")", - "description": null, - "error": null, - "hide": 0, - "includeAll": true, - "label": "Tags", - "multi": true, - "name": "tags", - "options": [], - "query": "from(bucket: \"simulators\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"power-generators\")\r\n |> filter(fn: (r) => r[\"site\"] == \"${site}\")\r\n |> filter(fn: (r) => r[\"area\"] == \"${area}\")\r\n |> filter(fn: (r) => contains(value: r[\"generator\"], set: ${gens:json}))\r\n |> keep(columns: [\"tag\"])\r\n |> group()\r\n |> distinct(column: \"tag\")", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "type": "query" - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "Power Generators Dashboard", - "uid": "nHvFCAR4k", - "version": 19 -} \ No newline at end of file diff --git a/examples/ioTSensorsOPCUA/grafana/grafana.ini b/examples/ioTSensorsOPCUA/grafana/grafana.ini index 0588484..4a499a7 100755 --- a/examples/ioTSensorsOPCUA/grafana/grafana.ini +++ b/examples/ioTSensorsOPCUA/grafana/grafana.ini @@ -694,11 +694,12 @@ global_alert_rule = -1 [unified_alerting] # Specify the frequency of polling for admin config changes. admin_config_poll_interval_seconds = 60 +enabled = true #################################### Alerting ############################ [alerting] # Disable alerting engine & UI features -enabled = true + # Makes it possible to turn off alert rule execution but alerting UI is visible execute_alerts = true diff --git a/examples/ioTSensorsOPCUA/telegraf/telegraf.conf b/examples/ioTSensorsOPCUA/telegraf/telegraf.conf index 02cbc9b..ffef5b6 100644 --- a/examples/ioTSensorsOPCUA/telegraf/telegraf.conf +++ b/examples/ioTSensorsOPCUA/telegraf/telegraf.conf @@ -129,44 +129,6 @@ # INPUT PLUGINS # ############################################################################### -[[inputs.mqtt_consumer]] - ## Broker URLs for the MQTT server or cluster. - servers = ["tcp://broker.hivemq.com:1883"] - - ## Topics that will be subscribed to. - topics = [ - "+/+/Power-Generators/+/+" - ] - - # QoS. - qos = 1 - - ## Connection timeout for initial connection in seconds - connection_timeout = "30s" - - ## Data format to consume. - ## Each data format has its own unique set of configuration options, read - data_format = "json_v2" - data_type = "string" - - [[inputs.mqtt_consumer.topic_parsing]] - topic = "+/+/Power-Generators/+/+" - tags = "site/area/_/generator/tag" - [inputs.mqtt_consumer.topic_parsing.types] - site = "string" - area = "string" - generator = "string" - tag = "string" - - [[inputs.mqtt_consumer.json_v2]] - measurement_name = "power-generators" - [[inputs.mqtt_consumer.json_v2.object]] - path = "@this" - timestamp_format = "rfc3339" - timestamp_path = "ChangedTimestamp" - included_keys = ["ItemValue"] - [inputs.file.json_v2.object.fields] - ItemValue = "float" ###############################################################################