auf der Suche nach einem Tool meinen Anschluss mit eigener 6690 durchgehend im Hinblick auf sporadische Rückwegstörer zu überwachen, bin ich auf das unten stehende Script gestoßen.
Denn wir wissen alle was VF macht wenn ein Rückwegstörer immer nur Kurzzeitig stört. Richtig - gar nichts.
Zu mir haben Sie dann immer gesagt weisen sie uns bitte nach das der Störer in unregelmäßig aktiv ist und sie somit beeinflusst.
Leider überwacht das nicht die Modulation des OFDMA Upstreams.
Habe schon versucht das mit ChatGPT zu erweitern mit dem Ergebnis das das Script nachher gar nichts mehr liefert.
Vielleicht hat jemand die zündende Idee was man wo im Shellscript noch erweitern müsste.
@arndl scheint das fast genau so zu haben wie man sich das wünscht. Er hat wohl über Java Programmiert? Villeicht teilt er mit uns sein wissen
Momentan sieht es bei mir so aus.
Ausgeführt und gesammelt wird alles auf eine Synology Diskstation.
Code: Alles auswählen
#!/bin/bash
#
# fritz_docsis_influx_lines.sh
#
# read DOCSIS informations from Fritzbox Cable Routers
# and write these infos in a format that can be
# written into an influx database
#
# example: fritz_docsis_influx_lines.sh | influx write -b <bucket>
# ---------------------------------------------
# please define your settings for your fritzbox
# ---------------------------------------------
fritzbox=192.168.178.1
user='<admin>'
pass='<password>'
#
# nothing to be changed from here
#
# --------------------
# cache Login with SID
# --------------------
sidfile=/run/shm/$fritzbox.sid
[ ! -f $sidfile ] && echo "0000000000000000" > $sidfile
sid=$(cat $sidfile)
# --------------------
# check Login with SID
# --------------------
result=$(curl -s "http://$fritzbox/login_sid.lua?sid=$sid" | grep -c "0000000000000000")
if [ $result -gt 0 -o "$sid" = "0000000000000000" ]; then
challenge=$(curl -s http://$fritzbox/login_sid.lua | grep -o "<Challenge>.*</Challenge>" | sed 's,</*Challenge>,,g')
hash=$(echo -n "$challenge-$pass" | sed -e 's,.,&\n,g' | tr '\n' '\0' | md5sum | grep -o "[0-9a-z]\{32\}")
curl -s "http://$fritzbox/login_sid.lua" -d "response=$challenge-$hash" -d 'username='${user} | grep -o "<SID>[a-z0-9]\{16\}" | cut -d'>' -f 2 > $sidfile
fi
sid=$(cat $sidfile)
# --------------------------------
# read DOCSIS-Infos (page=docInfo)
# --------------------------------
docsis=$(curl -s "http://$fritzbox/data.lua" -d "xhr=1&sid=$sid&lang=de&page=docInfo&xhrId=all&no_sidrenew")
# check docsis version 3.0 or 3.1
docsis_version=docsis30
if [ "_"$(echo ${docsis} | jq -r ".data.channelUs.${docsis_version}[0].powerLevel") = "_null" ]; then
docsis_version=docsis31
fi
# AVM may change the modulation entry from 'type' to 'modulation' in later OS version
if [ "_"$(echo ${docsis} | jq -r ".data.channelUs.${docsis_version}[0].type") = "_null" ]; then
qam="modulation"
else
qam="type"
fi
# get nr. of up-/downstream channels
channelUs=$(echo ${docsis} | jq ".data.channelUs.${docsis_version}[].powerLevel" | wc -l)
channelDs=$(echo ${docsis} | jq ".data.channelDs.${docsis_version}[].powerLevel" | wc -l)
#{"powerLevel":"40.0","modulation":"64QAM","multiplex":"ATDMA","channelID":2,"frequency":"41.800"}
# read upstream channels
for (( c=0; c<$channelUs; c++ )); do
channelID[$c]=$(echo ${docsis} | jq -r ".data.channelUs.${docsis_version}[$c].channelID")
modulation[$c]=$(echo ${docsis} | jq -r ".data.channelUs.${docsis_version}[$c].$qam" | sed 's/[^0-9.]//g')
powerLevel[$c]=$(echo ${docsis} | jq -r ".data.channelUs.${docsis_version}[$c].powerLevel")
frequency[$c]=$(echo ${docsis} | jq -r ".data.channelUs.${docsis_version}[$c].frequency")
multiplex[$c]=$(echo ${docsis} | jq -r ".data.channelUs.${docsis_version}[$c].multiplex")
echo "docsis,mode=up,channel=${channelID[$c]} Modulation=${modulation[$c]}"
echo "docsis,mode=up,channel=${channelID[$c]} PowerLevel=${powerLevel[$c]}"
echo "docsis,mode=up,channel=${channelID[$c]} Frequenz=${frequency[$c]}"
done
#{"powerLevel":"-0.2","nonCorrErrors":0,"modulation":"256QAM","corrErrors":16,"latency":0.32,"mse":"-38.6","channelID":5,"frequency":"186.000"}
# read downstream channels
for (( c=0; c<$channelDs; c++ )); do
channelID[$c]=$(echo ${docsis} | jq -r ".data.channelDs.${docsis_version}[$c].channelID")
modulation[$c]=$(echo ${docsis} | jq -r ".data.channelDs.${docsis_version}[$c].$qam" | sed 's/[^0-9.]//g')
powerLevel[$c]=$(echo ${docsis} | jq -r ".data.channelDs.${docsis_version}[$c].powerLevel")
frequency[$c]=$(echo ${docsis} | jq -r ".data.channelDs.${docsis_version}[$c].frequency")
latency[$c]=$(echo ${docsis} | jq -r ".data.channelDs.${docsis_version}[$c].latency")
corrErrors[$c]=$(echo ${docsis} | jq -r ".data.channelDs.${docsis_version}[$c].corrErrors")
nonCorrErrors[$c]=$(echo ${docsis} | jq -r ".data.channelDs.${docsis_version}[$c].nonCorrErrors")
mse[$c]=$(echo ${docsis} | jq -r ".data.channelDs.${docsis_version}[$c].mse")
echo "docsis,mode=down,channel=${channelID[$c]} Modulation=${modulation[$c]}"
echo "docsis,mode=down,channel=${channelID[$c]} PowerLevel=${powerLevel[$c]}"
echo "docsis,mode=down,channel=${channelID[$c]} Frequenz=${frequency[$c]}"
echo "docsis,mode=down,channel=${channelID[$c]} Latenz=${latency[$c]}"
echo "docsis,mode=down,channel=${channelID[$c]} korrFehler=${corrErrors[$c]}"
echo "docsis,mode=down,channel=${channelID[$c]} Fehler=${nonCorrErrors[$c]}"
echo "docsis,mode=down,channel=${channelID[$c]} MSE=${mse[$c]}"
done
Code: Alles auswählen
{
"__inputs": [
{
"name": "DS_CABLE6490",
"label": "cable6490",
"description": "",
"type": "datasource",
"pluginId": "influxdb",
"pluginName": "InfluxDB"
}
],
"__elements": [],
"__requires": [
{
"type": "grafana",
"id": "grafana",
"name": "Grafana",
"version": "9.0.0"
},
{
"type": "datasource",
"id": "influxdb",
"name": "InfluxDB",
"version": "1.0.0"
},
{
"type": "panel",
"id": "timeseries",
"name": "Time series",
"version": ""
}
],
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
}
]
},
"description": "Monitor FRITZ!Box DOCSIS",
"editable": true,
"fiscalYearStartMonth": 0,
"gnetId": 713,
"graphTooltip": 2,
"id": null,
"links": [],
"liveNow": false,
"panels": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "Modulation (QAM)",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"displayName": "Kanal ${__field.labels.channel}",
"mappings": [],
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "red",
"value": null
},
{
"color": "green",
"value": 32
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 0
},
"id": 33,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"hide": false,
"key": "Q-c3cf3bfe-2829-416d-820f-3f83507e420c-0",
"orderByTime": "ASC",
"policy": "default",
"query": "// v.windowPeriod is a variable referring to the current optimized window period (currently: $interval)\r\nfrom(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"docsis\" and \r\n r.mode == \"up\" and\r\n r._field == \"Modulation\"\r\n )\r\n |> drop(columns: [\"mode\",\"_measurement\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: min)\r\n ",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
}
],
"title": "Kanal Modulation QAM (Senderichtung)",
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "Modulation (QAM)",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"displayName": "Kanal ${__field.labels.channel}",
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 0
},
"id": 31,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"hide": false,
"key": "Q-f018d78e-e900-4e9b-a809-8858fdd6f673-0",
"orderByTime": "ASC",
"policy": "default",
"query": "// v.windowPeriod is a variable referring to the current optimized window period (currently: $interval)\r\nfrom(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"docsis\" and \r\n r.mode == \"down\" and\r\n r._field == \"Modulation\"\r\n )\r\n |> drop(columns: [\"mode\",\"_measurement\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: min)\r\n ",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
}
],
"title": "Kanal Modulation QAM (Empfangsrichtung)",
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "Modulation (QAM)",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 20,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "stepAfter",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "never",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"displayName": "Alle Kanäle (Summe)",
"links": [],
"mappings": [],
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "none"
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "Total"
},
"properties": [
{
"id": "custom.drawStyle",
"value": "line"
},
{
"id": "color",
"value": {
"fixedColor": "orange",
"mode": "fixed"
}
}
]
},
{
"__systemRef": "hideSeriesFrom",
"matcher": {
"id": "byNames",
"options": {
"mode": "exclude",
"names": [
"Alle Kanäle (Summe)"
],
"prefix": "All except:",
"readOnly": true
}
},
"properties": [
{
"id": "custom.hideFrom",
"value": {
"legend": false,
"tooltip": false,
"viz": true
}
}
]
}
]
},
"gridPos": {
"h": 7,
"w": 12,
"x": 0,
"y": 8
},
"hideTimeOverride": false,
"id": 32,
"interval": "1m",
"options": {
"legend": {
"calcs": [
"lastNotNull"
],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "asc"
}
},
"pluginVersion": "8.5.5",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"hide": false,
"orderByTime": "ASC",
"policy": "default",
"query": "// v.windowPeriod is a variable referring to the current optimized window period (currently: $interval)\r\nfrom(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"docsis\" and \r\n r.mode == \"up\" and\r\n r._field == \"Modulation\"\r\n )\r\n |> drop(columns: [\"mode\",\"_measurement\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: min)\r\n ",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
}
],
"title": "Gesamt Modulation QAM (Senderichtung)",
"transformations": [
{
"id": "calculateField",
"options": {
"mode": "reduceRow",
"reduce": {
"include": [
"Modulation 1",
"Modulation 2",
"Modulation 3",
"Modulation 4",
"Modulation 5",
"Modulation 6",
"Modulation 7",
"Modulation 8",
"Modulation 9",
"Modulation 10",
"Modulation 12",
"Modulation 13",
"Modulation 14",
"Modulation 15",
"Modulation 16"
],
"reducer": "sum"
},
"replaceFields": true
}
}
],
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "Modulation (QAM)",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 20,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "normal"
},
"thresholdsStyle": {
"mode": "off"
}
},
"displayName": "Alle Kanäle (Summe)",
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 12,
"y": 8
},
"id": 34,
"options": {
"legend": {
"calcs": [
"lastNotNull"
],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"hide": false,
"key": "Q-f018d78e-e900-4e9b-a809-8858fdd6f673-0",
"orderByTime": "ASC",
"policy": "default",
"query": "// v.windowPeriod is a variable referring to the current optimized window period (currently: $interval)\r\nfrom(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"docsis\" and \r\n r.mode == \"down\" and\r\n r._field == \"Modulation\"\r\n )\r\n |> drop(columns: [\"mode\",\"_measurement\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: last)\r\n",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
}
],
"title": "Gesamt Modulation QAM (Empfangsrichtung)",
"transformations": [
{
"id": "calculateField",
"options": {
"alias": "Total",
"mode": "reduceRow",
"reduce": {
"include": [
"Modulation 1",
"Modulation 2",
"Modulation 3",
"Modulation 4",
"Modulation 5",
"Modulation 6",
"Modulation 7",
"Modulation 8",
"Modulation 9",
"Modulation 10",
"Modulation 11",
"Modulation 12",
"Modulation 13",
"Modulation 14",
"Modulation 15",
"Modulation 16",
"Modulation 17",
"Modulation 18",
"Modulation 19",
"Modulation 20",
"Modulation 21",
"Modulation 22",
"Modulation 23",
"Modulation 24",
"Modulation 25",
"Modulation 26",
"Modulation 27",
"Modulation 28",
"Modulation 29",
"Modulation 30",
"Modulation 31",
"Modulation 32",
"Modulation 33",
"Modulation 34",
"Modulation 35",
"Modulation 36",
"Modulation 37",
"Modulation 38",
"Modulation 39",
"Modulation 40"
],
"reducer": "sum"
},
"replaceFields": true
}
}
],
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "Packet Loss",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "stepBefore",
"lineStyle": {
"fill": "solid"
},
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": true,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"displayName": "Packet Loss max (${__field.labels.name} ${__field.labels.host})",
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "percent"
},
"overrides": [
{
"matcher": {
"id": "byFrameRefID",
"options": "B"
},
"properties": [
{
"id": "custom.axisPlacement",
"value": "auto"
},
{
"id": "unit",
"value": "none"
},
{
"id": "custom.axisLabel",
"value": "RTT (ms)"
},
{
"id": "displayName",
"value": "RTT (${__field.labels.name})"
}
]
}
]
},
"gridPos": {
"h": 6,
"w": 12,
"x": 0,
"y": 15
},
"id": 35,
"maxDataPoints": 2000,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"hide": false,
"query": "from(bucket: \"ping\")\r\n |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\r\n |> filter(fn: (r) =>\r\n //r.host == \"193.168.248.1\" and\r\n //r.name = \"gateway\" and\r\n r._field == \"loss\"\r\n )\r\n |> aggregateWindow(every: \r\n v.windowPeriod, fn: max)\r\n //2m, fn: mean)\r\n //2m, fn: mean)\r\n ",
"refId": "A"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"hide": true,
"key": "Q-4651ec81-67d5-46a5-a28e-ebff61f8af6f-1",
"query": "from(bucket: \"ping\")\n |> range(start: v.timeRangeStart, stop:v.timeRangeStop)\n |> filter(fn: (r) =>\n //r.host == \"193.168.248.1\" and\n //r.name = \"gateway\" and\n r._field == \"avg\"\n )\n//|> aggregateWindow(every: 2m, fn: mean)\n\n",
"refId": "B"
}
],
"title": "Ping",
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "korrigiert",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 10,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "never",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "normal"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "short"
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "Fehler"
},
"properties": [
{
"id": "custom.axisPlacement",
"value": "right"
},
{
"id": "custom.axisLabel",
"value": "Fehler"
},
{
"id": "displayName"
}
]
},
{
"matcher": {
"id": "byName",
"options": "Fehler Total"
},
"properties": [
{
"id": "custom.axisPlacement",
"value": "right"
},
{
"id": "custom.axisLabel",
"value": "Fehler"
},
{
"id": "custom.axisPlacement",
"value": "right"
}
]
},
{
"__systemRef": "hideSeriesFrom",
"matcher": {
"id": "byNames",
"options": {
"mode": "exclude",
"names": [
"korrFehler Total",
"Fehler Total"
],
"prefix": "All except:",
"readOnly": true
}
},
"properties": [
{
"id": "custom.hideFrom",
"value": {
"legend": true,
"tooltip": false,
"viz": true
}
}
]
}
]
},
"gridPos": {
"h": 6,
"w": 12,
"x": 12,
"y": 15
},
"id": 25,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"pluginVersion": "8.5.5",
"targets": [
{
"alias": "nicht korrigierbar",
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"groupBy": [
{
"params": [
"1m"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"hide": false,
"measurement": "docsis",
"orderByTime": "ASC",
"policy": "default",
"query": "from(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r._measurement == \"docsis\" and \n r.mode == \"down\"\n )\n |> filter(fn: (r) => r._field == \"korrFehler\")\n |> drop(columns: [\"mode\",\"_measurement\"])\n |> aggregateWindow(every: v.windowPeriod, fn: last)\n",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "sum"
}
]
],
"tags": [
{
"key": "param",
"operator": "=",
"value": "nicht korrigierbare Fehler"
}
]
},
{
"alias": "korrigierbar",
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"groupBy": [
{
"params": [
"1m"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"hide": false,
"measurement": "docsis",
"orderByTime": "ASC",
"policy": "default",
"query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"docsis\" and \r\n r.mode == \"down\"\r\n )\r\n |> filter(fn: (r) => r._field == \"Fehler\")\r\n |> drop(columns: [\"mode\",\"_measurement\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: last)\r\n",
"rawQuery": false,
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "sum"
}
]
],
"tags": [
{
"key": "param",
"operator": "=",
"value": "korrigierbare Fehler"
}
]
}
],
"title": "Fehler (Empfangsrichtung)",
"transformations": [
{
"id": "calculateField",
"options": {
"alias": "korrFehler Total",
"mode": "reduceRow",
"reduce": {
"include": [
"korrFehler 1",
"korrFehler 2",
"korrFehler 3",
"korrFehler 4",
"korrFehler 5",
"korrFehler 6",
"korrFehler 7",
"korrFehler 8",
"korrFehler 9",
"korrFehler 10",
"korrFehler 11",
"korrFehler 12",
"korrFehler 13",
"korrFehler 14",
"korrFehler 15",
"korrFehler 16",
"korrFehler 17",
"korrFehler 18",
"korrFehler 19",
"korrFehler 20",
"korrFehler 21",
"korrFehler 22",
"korrFehler 23",
"korrFehler 24",
"korrFehler 25",
"korrFehler 26",
"korrFehler 27",
"korrFehler 28",
"korrFehler 29",
"korrFehler 30",
"korrFehler 31",
"korrFehler 32",
"korrFehler 33",
"korrFehler 34",
"korrFehler 35",
"korrFehler 36",
"korrFehler 37",
"korrFehler 38",
"korrFehler 39",
"korrFehler 40"
],
"reducer": "sum"
},
"replaceFields": false
}
},
{
"id": "calculateField",
"options": {
"alias": "Fehler Total",
"mode": "reduceRow",
"reduce": {
"include": [
"Fehler 1",
"Fehler 2",
"Fehler 3",
"Fehler 4",
"Fehler 5",
"Fehler 6",
"Fehler 7",
"Fehler 8",
"Fehler 9",
"Fehler 10",
"Fehler 11",
"Fehler 12",
"Fehler 13",
"Fehler 14",
"Fehler 15",
"Fehler 16",
"Fehler 17",
"Fehler 18",
"Fehler 19",
"Fehler 20",
"Fehler 21",
"Fehler 22",
"Fehler 23",
"Fehler 24",
"Fehler 26",
"Fehler 27",
"Fehler 28",
"Fehler 29",
"Fehler 30",
"Fehler 31",
"Fehler 32",
"Fehler 33",
"Fehler 34",
"Fehler 35",
"Fehler 36",
"Fehler 37",
"Fehler 38",
"Fehler 39",
"Fehler 40"
],
"reducer": "sum"
},
"replaceFields": false
}
}
],
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "Power Level (dBmV)",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "stepAfter",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "never",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"displayName": "Kanal ${__field.labels.channel}",
"links": [],
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "short"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 0,
"y": 21
},
"hideTimeOverride": false,
"id": 23,
"interval": "1m",
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "8.5.5",
"targets": [
{
"alias": "",
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"groupBy": [
{
"params": [
"channel"
],
"type": "tag"
}
],
"hide": false,
"measurement": "docsis",
"orderByTime": "ASC",
"policy": "default",
"query": "// v.windowPeriod is a variable referring to the current optimized window period (currently: $interval)\r\nfrom(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"docsis\" and \r\n r.mode == \"up\"\r\n )\r\n |> filter(fn: (r) => r._field == \"PowerLevel\")\r\n |> drop(columns: [\"_field\",\"mode\",\"_measurement\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean)",
"rawQuery": false,
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
}
]
],
"tags": [
{
"key": "mode",
"operator": "=",
"value": "down"
},
{
"condition": "AND",
"key": "param",
"operator": "=",
"value": "Power Level [dBmV]"
}
]
}
],
"title": "Power Level (Senderichtung)",
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "Power Level (dBmV)",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "stepAfter",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "never",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"displayName": "Kanal ${__field.labels.channel}",
"links": [],
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "short"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 12,
"y": 21
},
"hideTimeOverride": false,
"id": 27,
"interval": "1m",
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "8.5.5",
"targets": [
{
"alias": "",
"datasource": {
"type": "influxdb",
"uid": "${DS_CABLE6490}"
},
"groupBy": [
{
"params": [
"channel"
],
"type": "tag"
}
],
"hide": false,
"measurement": "docsis",
"orderByTime": "ASC",
"policy": "default",
"query": "// v.windowPeriod is a variable referring to the current optimized window period (currently: $interval)\r\nfrom(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r._measurement == \"docsis\" and \r\n r.mode == \"down\"\r\n )\r\n |> filter(fn: (r) => r._field == \"PowerLevel\")\r\n |> drop(columns: [\"_field\",\"mode\",\"_measurement\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: last)",
"rawQuery": false,
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
}
]
],
"tags": [
{
"key": "mode",
"operator": "=",
"value": "down"
},
{
"condition": "AND",
"key": "param",
"operator": "=",
"value": "Power Level [dBmV]"
}
]
}
],
"title": "Power Level (Empfangsrichtung)",
"type": "timeseries"
}
],
"refresh": "",
"schemaVersion": 36,
"style": "dark",
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "now-12h",
"to": "now"
},
"timepicker": {
"nowDelay": "90s",
"refresh_intervals": [
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"timezone": "",
"title": "Cable Modem + Ping Status",
"uid": "LBNE1T67z",
"version": 63,
"weekStart": ""
}