├── doc ├── OutputScript.png ├── FritzBoxDashboard.png └── FritzBoxDashboard2.png ├── telegrafFritzBox.conf ├── telegrafFritzSmartHome.conf ├── LICENSE ├── testNonDSLuplink.py ├── telegrafFritzSmartHome.py ├── README.md ├── telegrafFritzBox.py └── GrafanaFritzBoxDashboard.json /doc/OutputScript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Schmidsfeld/TelegrafFritzBox/HEAD/doc/OutputScript.png -------------------------------------------------------------------------------- /doc/FritzBoxDashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Schmidsfeld/TelegrafFritzBox/HEAD/doc/FritzBoxDashboard.png -------------------------------------------------------------------------------- /doc/FritzBoxDashboard2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Schmidsfeld/TelegrafFritzBox/HEAD/doc/FritzBoxDashboard2.png -------------------------------------------------------------------------------- /telegrafFritzBox.conf: -------------------------------------------------------------------------------- 1 | [[inputs.exec]] 2 | commands = ["python3 /usr/local/bin/telegrafFritzBox.py -i 192.168.178.1 -p PASSWORD"] 3 | timeout = '30s' 4 | data_format = 'influx' 5 | -------------------------------------------------------------------------------- /telegrafFritzSmartHome.conf: -------------------------------------------------------------------------------- 1 | [[inputs.exec]] 2 | commands = ["python3 /usr/local/bin/telegrafFritzSmartHome.py -i 192.168.178.1 -p PASSWORD"] 3 | timeout = '30s' 4 | data_format = 'influx' 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Schmidsfeld 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /testNonDSLuplink.py: -------------------------------------------------------------------------------- 1 | #!/opt/bin/python3 2 | 3 | # This script is for exporting FritzBox metrics into Telegraf in InfluxDB format. 4 | # https://github.com/Schmidsfeld/TelegrafFritzBox 5 | # License: MIT (https://opensource.org/licenses/MIT) 6 | # Author: Alexander von Schmidsfeld 7 | 8 | # This script requires the FritzConnection package 9 | # Install with: 10 | # pip3 install fritzconnection 11 | 12 | from fritzconnection import FritzConnection 13 | from fritzconnection.cli.utils import get_cli_arguments 14 | import sys 15 | import itertools 16 | 17 | 18 | # This script uses optionally the environment variables for authentification: 19 | # FRITZ_IP_ADDRESS IP-address of the FritzBox (Default 169.254.1.1) 20 | # FRITZ_TCP_PORT Port of the FritzBox (Default: 49000) 21 | # FRITZ_USERNAME Fritzbox authentication username (Default: Admin) 22 | # FRITZ_PASSWORD Fritzbox authentication password 23 | 24 | 25 | # Helper modules for extracting and parsing variables 26 | def readfritz(module, action): 27 | try: 28 | answer = fc.call_action(module, action) 29 | except: 30 | answer = dict() # return an empty dict in case of failure 31 | return answer 32 | 33 | def extractvar(answer, variable, integer=False, string=True, name=""): 34 | if variable in answer.keys(): 35 | avar = str(answer[variable]) 36 | avar = avar.replace('"','') 37 | if name == "": 38 | name = variable 39 | if integer: 40 | avar = name + '=' + avar +'i' # format for integers in influxDB 41 | else: 42 | if string: 43 | avar = name + '="' + avar +'"' # format for strings in influxDB 44 | else: 45 | avar = name + '=' + avar # format for float/double in influxDB 46 | else: 47 | avar = '' 48 | return avar 49 | 50 | # Connect to the FritzBox 51 | args = get_cli_arguments() 52 | if not args.password: 53 | print('Password required.') 54 | print() 55 | print('Options:') 56 | print('-i [ADDRESS], IP-address of the FritzBox (Default 169.254.1.1)') 57 | print('-p [PASSWORD], Fritzbox authentication password') 58 | print('-u [USERNAME], Fritzbox authentication username (Default: Admin)') 59 | print('--port [PORT], Port of the FritzBox (Default: 49000)') 60 | print('-e [ENCRYPT], use secure connection (Default: Off)') 61 | print() 62 | print('Hint: if this script is not working often IP or password is missing') 63 | sys.exit(1) 64 | else: 65 | try: 66 | #fc = FritzConnection(args) # Dosn't seem to work dirctly 67 | fc = FritzConnection(address=args.address, user=args.username, password=args.password, port=args.port, timeout=2.0) 68 | except BaseException: 69 | print(BaseException) 70 | print("Cannot connect to fritzbox. ") 71 | print() 72 | print('Options:') 73 | print('-i [ADDRESS], IP-address of the FritzBox (Default 169.254.1.1)') 74 | print('-p [PASSWORD], Fritzbox authentication password') 75 | print('-u [USERNAME], Fritzbox authentication username (Default: Admin)') 76 | print('--port [PORT], Port of the FritzBox (Default: 49000)') 77 | print('-e [ENCRYPT], Use secure connection (Default: Off)') 78 | print() 79 | print('Hint: if this script is not working often IP or password is missing') 80 | sys.exit(1) 81 | 82 | # print out connection type and device information 83 | deviceInfo = readfritz('DeviceInfo1', 'GetInfo') 84 | firmware = 'Firmware="'+ fc.device_manager.system_version+'"' 85 | model = extractvar(deviceInfo, 'NewModelName', False) 86 | print('The current active device is') 87 | print(model+firmware) 88 | print() 89 | 90 | connectionType = readfritz('Layer3Forwarding', 'GetDefaultConnectionService') 91 | print('Connection Type is:') 92 | print(connectionType) 93 | print() 94 | connection = str(connectionType['NewDefaultConnectionService']) 95 | connection = connection.replace("1.","") 96 | connection = connection.replace(".","") 97 | availStats= readfritz(connection, 'GetInfo') 98 | print('Available Stats are:') 99 | print(availStats) 100 | -------------------------------------------------------------------------------- /telegrafFritzSmartHome.py: -------------------------------------------------------------------------------- 1 | #!/opt/bin/python3 2 | 3 | # This script is for exporting FritzBox metrics into Telegraf in InfluxDB format. 4 | # https://github.com/Schmidsfeld/TelegrafFritzBox 5 | # License: MIT (https://opensource.org/licenses/MIT) 6 | # Author: Alexander von Schmidsfeld 7 | 8 | # This script requires the FritzConnection package 9 | # Install with: 10 | # pip3 install fritzconnection 11 | 12 | from fritzconnection import FritzConnection 13 | from fritzconnection.cli.utils import get_cli_arguments 14 | import sys 15 | import itertools 16 | 17 | 18 | FRITZBOX_ID = 'FritzBoxSmartHome' # Name of the InfluxDB database. 19 | 20 | 21 | # This script uses optionally the environment variables for authentification: 22 | # FRITZ_IP_ADDRESS IP-address of the FritzBox (Default 169.254.1.1) 23 | # FRITZ_TCP_PORT Port of the FritzBox (Default: 49000) 24 | # FRITZ_USERNAME Fritzbox authentication username (Default: Admin) 25 | # FRITZ_PASSWORD Fritzbox authentication password 26 | 27 | 28 | # Helper modules for extracting and parsing variables 29 | def readfritz(module, action): 30 | try: 31 | answer = fc.call_action(module, action) 32 | except: 33 | answer = dict() # return an empty dict in case of failure 34 | return answer 35 | 36 | def extractvar(answer, variable, integer=False, string=True, name=""): 37 | if variable in answer.keys(): 38 | avar = str(answer[variable]) 39 | avar = avar.replace('"','') 40 | if name == "": 41 | name = variable 42 | if integer: 43 | avar = name + '=' + avar +'i' # format for integers in influxDB 44 | else: 45 | if string: 46 | avar = name + '="' + avar +'"' # format for strings in influxDB 47 | else: 48 | avar = name + '=' + avar # format for float/double in influxDB 49 | else: 50 | avar = '' 51 | return avar 52 | 53 | def assemblevar(*args): 54 | data = ','.join(list(args))+',' 55 | #cleaning up output 56 | data = data.replace("New", "") 57 | data = data.replace(",,",",") 58 | data = data.replace(",,",",") 59 | data = data.replace(",,",",") 60 | data = data.replace(",,",",") 61 | data = data[:-1] 62 | return data 63 | 64 | def influxrow(tag, data): 65 | influx = FRITZBOX_ID + ',source=' + tag + ' ' + data 66 | print(influx) 67 | 68 | # Connect to the FritzBox 69 | args = get_cli_arguments() 70 | if not args.password: 71 | print('Password required.') 72 | print() 73 | print('Options:') 74 | print('-i [ADDRESS], IP-address of the FritzBox (Default 169.254.1.1)') 75 | print('-p [PASSWORD], Fritzbox authentication password') 76 | print('-u [USERNAME], Fritzbox authentication username (Default: Admin)') 77 | print('--port [PORT], Port of the FritzBox (Default: 49000)') 78 | print('-e [ENCRYPT], use secure connection (Default: Off)') 79 | print() 80 | print('Hint: if this script is not working often IP or password is missing') 81 | sys.exit(1) 82 | else: 83 | try: 84 | #fc = FritzConnection(args) # Dosn't seem to work dirctly 85 | fc = FritzConnection(address=args.address, user=args.username, password=args.password, port=args.port, timeout=2.0) 86 | except BaseException: 87 | print(BaseException) 88 | print("Cannot connect to fritzbox. ") 89 | print() 90 | print('Options:') 91 | print('-i [ADDRESS], IP-address of the FritzBox (Default 169.254.1.1)') 92 | print('-p [PASSWORD], Fritzbox authentication password') 93 | print('-u [USERNAME], Fritzbox authentication username (Default: Admin)') 94 | print('--port [PORT], Port of the FritzBox (Default: 49000)') 95 | print('-e [ENCRYPT], Use secure connection (Default: Off)') 96 | print() 97 | print('Hint: if this script is not working often IP or password is missing') 98 | sys.exit(1) 99 | 100 | # Iterate over all known smarthome device and generate one influxDB line per device 101 | for n in itertools.count(): 102 | try: 103 | #device = self.get_device_information_by_index(n) 104 | #return self._action('GetGenericDeviceInfos', NewIndex=n) 105 | device = fc.call_action('X_AVM-DE_Homeauto1', 'GetGenericDeviceInfos', NewIndex=n) 106 | except IndexError: 107 | break 108 | name = extractvar(device, 'NewDeviceName', False, False) 109 | name = name.replace('NewDeviceName=','') 110 | power = extractvar(device, 'NewMultimeterPower', True, False, 'Power') # Power currently consumed in W *100 111 | energy = extractvar(device, 'NewMultimeterEnergy', True, False, 'Energy') # Energy consumed in Wh 112 | temperature = extractvar(device, 'NewTemperatureCelsius', True, False, 'Temperature') # Temperature in celcius * 10 113 | homeDevice = assemblevar(power, energy, temperature) 114 | influxrow(name, homeDevice) 115 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![MIT license](https://img.shields.io/github/license/Schmidsfeld/TelefrafFritzBox?color=blue)](https://opensource.org/licenses/MIT) 2 | [![made-with-python](https://img.shields.io/badge/Python-3.7%2C%203.8-green)](https://www.python.org) 3 | [![HitCount](http://hits.dwyl.com/Schmidsfeld/TelefrafFritzBox.svg)](http://hits.dwyl.com/Schmidsfeld/TelefrafFritzBox) 4 | 5 | # TelegrafFritzBox 6 | A Telegraf collector written in Phthon, gathering several crucial metrics for the Fritz!Box router by AVM via the TR-064 protocol. This collection includes a main phyton3 script, a telegraf config file and a Grafana dashboard. 7 | 8 | The communication with the router is based on the FritzConnection library https://github.com/kbr/fritzconnection by Klaus Bremer. 9 | 10 | For some future development of this script (especially with cable internet access) additional help is required. The script now has been sanatized not to crash if a varible is nout found. Please send me examples of your 11 | `http://fritz.box:49000/tr64desc.xml` 12 | If you have another connection type please check it there is an equivalent to the DSL statistics in there... 13 | 14 | Forking and modifying this script is explicitly encouraged (hence you most likely need to adjust for your situation). I would appreciate if you drop me a note f you implement other stuff so I can backport it into the main script. 15 | 16 | 17 | ## The End Result 18 | Information that you get 19 | * Full status of your current and past transfer speeds 20 | * Current and possible line speeds 21 | * The line dampening and noise margin 22 | * The errors occurring the line 23 | * Local networks (LAN and WLAN traffic) 24 | * connected WLAN clients 25 | 26 | ![Grafana dashboard](doc/FritzBoxDashboard2.png?raw=true) 27 | 28 | ## Details 29 | ### Concept 30 | The script utilizes a single connection to the FritzBox router with the FritzConnection library. From there it reads out several service variable collections via TR-064. Note, that for performance reasons only one connection is established and every statistics output is only requested once. From the dictionary responses containing several variables each, the desired variables are extracted manually and parsed. The parsed arguments are then formatted appropriately as integers or strings according to the influxDB naming scheme. Lastly the gathered information is output as several lines in the format directly digested by Telegraf / InfluxDB. 31 | 32 | ### Output 33 | * The output is formatted in the influxDB format. 34 | * By default the influxDB dataset FritzBox will be generated 35 | * All datasets are tagged by the hostname of the router and grouped into different sources 36 | * All names are sanitized (no "New" in variable names) 37 | * All variables are cast into appropriate types (integer for numbers, string for expressions and float for 64bit total traffic) 38 | 39 | ![InfluxDB compatible output](doc/OutputScript.png?raw=true) 40 | 41 | ## Install 42 | Several prerequisites need to be met to successfully install this script and generate the metrics. Some seem to be obvious but will be mentioned here for sake of complete documentation. 43 | * Have an operational TIG stack (Telegraf, InfluxDB, Grafana) with all of them installed and operational. 44 | * Activate the TR-064 protocoll in the Fritzbox (Heimnetz -> Netzwerk -> Netzwerkeinstellungen) 45 | * Optional: Have a dedicated user on the Fritz!Box (for example :Telegraf) 46 | * download and install the script (example for debian/ubuntu) 47 | ``` 48 | apt install python3-pip 49 | pip3 install fritzconnection 50 | git clone https://github.com/Schmidsfeld/TelegrafFritzBox/ 51 | chmod +x ./TelegrafFritzBox/telegrafFritzBox.py 52 | chmod +x ./TelegrafFritzBox/telegrafFritzSmartHome.py 53 | cp ./TelegrafFritzBox/telegrafFritzBox.py /usr/local/bin 54 | cp ./TelegrafFritzBox/telegrafFritzSmartHome.py /usr/local/bin 55 | ``` 56 | * Edit the telegraf file and adjust the credentials (`nano ./TelegrafFritzBox/telegrafFritzBox.conf`) 57 | * If you want to use the FritzBox smarthome features also in (`nano ./TelegrafFritzBox/telegrafFritzSmartHome.conf`) 58 | ``` 59 | cp ./TelegrafFritzBox/telegrafFritzBox.conf /etc/telegraf/telegraf.d 60 | cp ./TelegrafFritzBox/telegrafFritzSmartHome.conf /etc/telegraf/telegraf.d 61 | python3 ./TelegrafFritzBox/telegrafFritzBox.py 62 | systemctl restart telegraf 63 | ``` 64 | * Load your Grafana dashboard (grafana/GrafanaFritzBoxDashboard.json) 65 | 66 | ## This script uses optionally the environment variables for authentification: 67 | The required IP and Password can be set from environment variables 68 | * ``FRITZ_IP_ADDRESS`` IP-address of the FritzBox (Default 169.254.1.1) 69 | * ``FRITZ_TCP_PORT`` Port of the FritzBox (Default: 49000) 70 | * ``FRITZ_USERNAME`` Fritzbox authentication username (Default: Admin) 71 | * ``FRITZ_PASSWORD`` Fritzbox authentication password 72 | 73 | ## Non DSL Uplink 74 | This version should at least not crash if other uplinks than DSL are used. Some stats will be missing. This can be partly circumvented by setting the variable `` IS_DSL = False`` in the python file. Since I don't have the information or devices to test non DSL uplinks, I put together a testfile. 75 | If you have a non DSL line (Cable / Fiber / LTE etc.) and a fritzbox, please consider sending me the output of 76 | ``` 77 | python3 testNonDSLuplink.py -p PASSWORD 78 | ``` 79 | 80 | 81 | ## Future Plans 82 | This Project is ready and tested locally, to ensure it is suiteable for publications, but not yet finished. For some parts I need help with additional testing (especially other connections than DSL). There are several things planned for future releases: 83 | * Gather more stats about signals strengths 84 | * Getting data about active phones and calls etc 85 | * Gather upstream information for cable based uplinks 86 | 87 | ## Changelog 88 | Since the last major milestone the following parts have been changed 89 | * IP and password in environment variabe or telegraf config file 90 | * Fixed crash on non DSL connection (some stats still missing) 91 | * Added statistics about connected LAN / WLAN devices 92 | * First beta for smarthome devices (in a seperate file) 93 | * No more dedicated user required (admin account is the default iy only password is given) 94 | -------------------------------------------------------------------------------- /telegrafFritzBox.py: -------------------------------------------------------------------------------- 1 | #!/opt/bin/python3 2 | 3 | # This script is for exporting FritzBox metrics into Telegraf in InfluxDB format. 4 | # https://github.com/Schmidsfeld/TelegrafFritzBox 5 | # License: MIT (https://opensource.org/licenses/MIT) 6 | # Author: Alexander von Schmidsfeld 7 | 8 | # This script requires the FritzConnection package 9 | # Install with: 10 | # pip3 install fritzconnection 11 | 12 | from fritzconnection import FritzConnection 13 | from fritzconnection.cli.utils import get_cli_arguments 14 | import sys 15 | import itertools 16 | 17 | 18 | FRITZBOX_ID = 'FritzBox' # Name of the InfluxDB database. 19 | IS_DSL = True # Switch to False for Cable or IP Connections 20 | 21 | 22 | # This script uses optionally the environment variables for authentification: 23 | # FRITZ_IP_ADDRESS IP-address of the FritzBox (Default 169.254.1.1) 24 | # FRITZ_TCP_PORT Port of the FritzBox (Default: 49000) 25 | # FRITZ_USERNAME Fritzbox authentication username (Default: Admin) 26 | # FRITZ_PASSWORD Fritzbox authentication password 27 | 28 | 29 | # Helper modules for extracting and parsing variables 30 | def readfritz(module, action): 31 | try: 32 | answer = fc.call_action(module, action) 33 | except: 34 | answer = dict() # return an empty dict in case of failure 35 | return answer 36 | 37 | def extractvar(answer, variable, integer=False, string=True, name=""): 38 | if variable in answer.keys(): 39 | avar = str(answer[variable]) 40 | avar = avar.replace('"','') 41 | if name == "": 42 | name = variable 43 | if integer: 44 | avar = name + '=' + avar +'i' # format for integers in influxDB 45 | else: 46 | if string: 47 | avar = name + '="' + avar +'"' # format for strings in influxDB 48 | else: 49 | avar = name + '=' + avar # format for float/double in influxDB 50 | else: 51 | avar = '' 52 | return avar 53 | 54 | def assemblevar(*args): 55 | data = ','.join(list(args))+',' 56 | #cleaning up output 57 | data = data.replace("New", "") 58 | data = data.replace(",,",",") 59 | data = data.replace(",,",",") 60 | data = data.replace(",,",",") 61 | data = data.replace(",,",",") 62 | data = data[:-1] 63 | return data 64 | 65 | def influxrow(tag, data): 66 | influx = FRITZBOX_ID +','+ fbName + ',source=' + tag + ' ' + data 67 | print(influx) 68 | 69 | # Speccialist Stats that have to be assembled (counted) ourselfes 70 | def gethosts(): 71 | hostsKnown = 0 72 | hostsActive = 0 73 | lanHostsActive = 0 74 | wlanHostsActive = 0 75 | lanHosts = 0 76 | wlanHosts = 0 77 | for n in itertools.count(): 78 | try: 79 | host = fc.call_action('Hosts1', 'GetGenericHostEntry', NewIndex=n) 80 | except IndexError: 81 | break 82 | hostsKnown = hostsKnown +1 83 | if host['NewActive']: 84 | hostsActive = hostsActive +1 85 | if host['NewInterfaceType'] == 'Ethernet': lanHostsActive = lanHostsActive +1 86 | if host['NewInterfaceType'] == '802.11': wlanHostsActive = wlanHostsActive +1 87 | if host['NewInterfaceType'] == 'Ethernet': lanHosts = lanHosts +1 88 | if host['NewInterfaceType'] == '802.11': wlanHosts = wlanHosts +1 89 | hosts = {'HostsKnown':hostsKnown, 'HostsActive':hostsActive, 'HostsKnownLAN':lanHosts, 'HostsActiveLAN':lanHostsActive, 'HostsKnownWLAN':wlanHosts, 'HostsActiveWLAN':wlanHostsActive,} 90 | return hosts 91 | 92 | 93 | # Connect to the FritzBox 94 | args = get_cli_arguments() 95 | if not args.password: 96 | print('Password required.') 97 | print() 98 | print('Options:') 99 | print('-i [ADDRESS], IP-address of the FritzBox (Default 169.254.1.1)') 100 | print('-p [PASSWORD], Fritzbox authentication password') 101 | print('-u [USERNAME], Fritzbox authentication username (Default: Admin)') 102 | print('--port [PORT], Port of the FritzBox (Default: 49000)') 103 | print('-e [ENCRYPT], use secure connection (Default: Off)') 104 | print() 105 | print('Hint: if this script is not working often IP or password is missing') 106 | sys.exit(1) 107 | else: 108 | try: 109 | #fc = FritzConnection(args) # Dosn't seem to work dirctly 110 | fc = FritzConnection(address=args.address, user=args.username, password=args.password, port=args.port, timeout=2.0) 111 | except BaseException: 112 | print(BaseException) 113 | print("Cannot connect to fritzbox. ") 114 | print() 115 | print('Options:') 116 | print('-i [ADDRESS], IP-address of the FritzBox (Default 169.254.1.1)') 117 | print('-p [PASSWORD], Fritzbox authentication password') 118 | print('-u [USERNAME], Fritzbox authentication username (Default: Admin)') 119 | print('--port [PORT], Port of the FritzBox (Default: 49000)') 120 | print('-e [ENCRYPT], Use secure connection (Default: Off)') 121 | print() 122 | print('Hint: if this script is not working often IP or password is missing') 123 | sys.exit(1) 124 | 125 | 126 | # Get FritzBox data so it isn't requested mutiple times 127 | deviceInfo = readfritz('DeviceInfo1', 'GetInfo') 128 | if IS_DSL: 129 | connectionInfo = readfritz('WANPPPConnection1', 'GetInfo') 130 | else: 131 | connectionInfo = readfritz('WANIPConn1', 'GetStatusInfo') 132 | wanInfo = readfritz('WANCommonIFC1', 'GetCommonLinkProperties') 133 | trafficInfo = readfritz('WANCommonIFC1', 'GetAddonInfos') 134 | dslInfo = readfritz('WANDSLInterfaceConfig1', 'GetInfo') 135 | dslError = readfritz('WANDSLInterfaceConfig1', 'GetStatisticsTotal') 136 | fritzInfo = readfritz('LANHostConfigManagement1', 'GetInfo') 137 | dhcpInfo = readfritz('Hosts1', 'GetHostNumberOfEntries') 138 | hostInfo = gethosts() 139 | lanStat = readfritz('LANEthernetInterfaceConfig1', 'GetStatistics') 140 | wlanStat24 = readfritz('WLANConfiguration1', 'GetStatistics') 141 | wlanStat50 = readfritz('WLANConfiguration2', 'GetStatistics') 142 | wlanStatGuest = readfritz('WLANConfiguration3', 'GetStatistics') 143 | wlanInfo24 = readfritz('WLANConfiguration1', 'GetInfo') 144 | wlanInfo50 = readfritz('WLANConfiguration2', 'GetInfo') 145 | wlanInfoGuest = readfritz('WLANConfiguration3', 'GetInfo') 146 | wlanAssoc24 = readfritz('WLANConfiguration1', 'GetTotalAssociations') 147 | wlanAssoc50 = readfritz('WLANConfiguration2', 'GetTotalAssociations') 148 | wlanAssocGuest = readfritz('WLANConfiguration3', 'GetTotalAssociations') 149 | 150 | 151 | # Parse single variables into influxdb compatible strings 152 | 153 | # General Fritzbox information 154 | firmware = 'Firmware="'+ fc.device_manager.system_version+'"' 155 | model = extractvar(deviceInfo, 'NewModelName', False) 156 | serial = extractvar(deviceInfo, 'NewSerialNumber', False) 157 | fbName = extractvar(fritzInfo, 'NewDomainName', False, False, 'host') 158 | 159 | # Connection Information 160 | upTime = extractvar(deviceInfo, 'NewUpTime', True) 161 | connectionTime = extractvar(connectionInfo, 'NewUptime', True, False, 'ConnectionTime') 162 | connectionStatus = extractvar(connectionInfo, 'NewConnectionStatus', False) 163 | connectionError = extractvar(connectionInfo, 'NewLastConnectionError', False, True, 'LastError') 164 | connectionType = extractvar(wanInfo, 'NewWANAccessType', False, True) 165 | maxDownRate = extractvar(wanInfo, 'NewLayer1DownstreamMaxBitRate', True) 166 | maxUpRate = extractvar(wanInfo, 'NewLayer1UpstreamMaxBitRate', True) 167 | 168 | # Traffic information 169 | downRate = extractvar(trafficInfo, 'NewByteReceiveRate', True) 170 | upRate = extractvar(trafficInfo, 'NewByteSendRate', True) 171 | downPackageRate = extractvar(trafficInfo, 'NewPacketReceiveRate', True) 172 | upPackageRate = extractvar(trafficInfo, 'NewPacketSendRate', True) 173 | #downTotal = extractvar(trafficInfo, 'NewTotalBytesReceived', True) #depreciated since 64bit is more usefull 174 | #upTotal = extractvar(trafficInfo, 'NewTotalBytesSent', True) #depreciated since 64bit is more usefull 175 | downTotal64 = extractvar(trafficInfo, 'NewX_AVM_DE_TotalBytesReceived64', False, False, 'TotalBytesReceived64' ) 176 | upTotal64 = extractvar(trafficInfo, 'NewX_AVM_DE_TotalBytesSent64', False, False, 'TotalBytesSent64') 177 | 178 | # Network Information 179 | externalIP = extractvar(connectionInfo, 'NewExternalIPAddress', False ) 180 | dns = extractvar(connectionInfo, 'NewDNSServers', False) 181 | localDns = extractvar(fritzInfo, 'NewDNSServers', False, True, 'LocalDNSServer') 182 | hostsEntry = extractvar(dhcpInfo, 'NewHostNumberOfEntries', True) 183 | hostsKnown = extractvar(hostInfo, 'HostsKnown', True) 184 | hostsKnownLAN = extractvar(hostInfo, 'HostsKnownLAN', True) 185 | hostsKnownWLAN = extractvar(hostInfo, 'HostsKnownWLAN', True) 186 | hostsActive = extractvar(hostInfo, 'HostsActive', True) 187 | hostsActiveLAN = extractvar(hostInfo, 'HostsActiveLAN', True) 188 | hostsActiveWLAN = extractvar(hostInfo, 'HostsActiveWLAN', True) 189 | 190 | # DSL specific input 191 | if IS_DSL: 192 | dslDown = extractvar(dslInfo, 'NewDownstreamCurrRate', True) 193 | dslUp = extractvar(dslInfo, 'NewUpstreamCurrRate', True) 194 | dslMaxDown = extractvar(dslInfo, 'NewDownstreamMaxRate', True) 195 | dslMaxUp = extractvar(dslInfo, 'NewUpstreamMaxRate', True) 196 | noiseDown = extractvar(dslInfo, 'NewDownstreamNoiseMargin', True) 197 | noiseUp = extractvar(dslInfo, 'NewUpstreamNoiseMargin', True) 198 | powerDown = extractvar(dslInfo, 'NewDownstreamPower', True) 199 | powerUp = extractvar(dslInfo, 'NewUpstreamPower', True) 200 | attenuationDown = extractvar(dslInfo, 'NewDownstreamAttenuation', True) 201 | attenuationUp = extractvar(dslInfo, 'NewUpstreamAttenuation', True) 202 | fecError = extractvar(dslError, 'NewFECErrors', True) 203 | fecErrorLocal = extractvar(dslError, 'NewATUCFECErrors', True) 204 | crcError = extractvar(dslError, 'NewCRCErrors', True) 205 | crcErrorLocal = extractvar(dslError, 'NewATUCCRCErrors', True) 206 | hecError = extractvar(dslError, 'NewHECErrors', True) 207 | hecErrorLocal = extractvar(dslError, 'NewATUCHECErrors', True) 208 | 209 | # Local network Statistics 210 | lanPackageUp = extractvar(lanStat, 'NewPacketsSent', True) 211 | lanPackageDown = extractvar(lanStat, 'NewPacketsReceived', True) 212 | wlanPackageUp24 = extractvar(wlanStat24, 'NewTotalPacketsSent', True, False, 'PacketsSent' ) 213 | wlanPackageDown24 = extractvar(wlanStat24, 'NewTotalPacketsReceived', True, False, 'PacketsReceived') 214 | wlanPackageUp50 = extractvar(wlanStat50, 'NewTotalPacketsSent', True, False, 'PacketsSent') 215 | wlanPackageDown50 = extractvar(wlanStat50, 'NewTotalPacketsReceived', True, False, 'PacketsReceived') 216 | wlanPackageUpGuest = extractvar(wlanStatGuest, 'NewTotalPacketsSent', True, False, 'PacketsSent') 217 | wlanPackageDownGuest = extractvar(wlanStatGuest, 'NewTotalPacketsReceived', True, False, 'PacketsReceived') 218 | wlanName24 = extractvar(wlanInfo24, 'NewSSID', False) 219 | wlanName50 = extractvar(wlanInfo50, 'NewSSID', False) 220 | wlanNameGuest = extractvar(wlanInfoGuest, 'NewSSID', False) 221 | wlanChannel24 = extractvar(wlanInfo24, 'NewChannel', True) 222 | wlanChannel50 = extractvar(wlanInfo50, 'NewChannel', True) 223 | wlanChannelGuest = extractvar(wlanInfoGuest, 'NewChannel', True) 224 | wlanClients24 = extractvar(wlanAssoc24, 'NewTotalAssociations', True, False, 'ClientsNumber') 225 | wlanClients50 = extractvar(wlanAssoc50, 'NewTotalAssociations', True, False, 'ClientsNumber') 226 | wlanClientsGuest = extractvar(wlanAssocGuest, 'NewTotalAssociations', True, False, 'ClientsNumber') 227 | 228 | 229 | # Output variables as sets of influxdb compatible lines 230 | general = assemblevar(model, connectionType, serial, firmware) 231 | influxrow('general', general) 232 | 233 | status = assemblevar(upTime,connectionStatus,connectionError) 234 | influxrow('status', status) 235 | 236 | wan = assemblevar(connectionTime, maxDownRate, maxUpRate, downRate, upRate, downPackageRate, upPackageRate, downTotal64, upTotal64) 237 | influxrow('wan', wan) 238 | 239 | if IS_DSL: 240 | dsl = assemblevar(dslDown, dslUp, dslMaxDown, dslMaxUp, noiseDown, noiseUp, powerDown, powerUp, attenuationDown, attenuationUp, hecError, hecErrorLocal, crcError, crcErrorLocal, fecError, fecErrorLocal ) 241 | influxrow('dsl', dsl) 242 | 243 | network = assemblevar(externalIP, dns, localDns, hostsEntry, hostsKnown, hostsKnownLAN, hostsKnownWLAN, hostsActive, hostsActiveLAN, hostsActiveWLAN) 244 | influxrow('network', network) 245 | 246 | lan = assemblevar(lanPackageUp, lanPackageDown) 247 | influxrow('lan', lan) 248 | 249 | wlan24 = assemblevar(wlanName24, wlanChannel24, wlanClients24, wlanPackageUp24, wlanPackageDown24) 250 | influxrow('wlan_2.4GHz', wlan24) 251 | 252 | wlan50 = assemblevar(wlanName50, wlanChannel50, wlanClients50, wlanPackageUp50, wlanPackageDown50) 253 | influxrow('wlan_5GHz', wlan50) 254 | 255 | wlanGuest = assemblevar(wlanNameGuest, wlanChannelGuest, wlanClientsGuest, wlanPackageUpGuest, wlanPackageDownGuest) 256 | influxrow('wlan_Guest', wlanGuest) 257 | -------------------------------------------------------------------------------- /GrafanaFritzBoxDashboard.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [ 4 | { 5 | "builtIn": 1, 6 | "datasource": "-- Grafana --", 7 | "enable": true, 8 | "hide": true, 9 | "iconColor": "rgba(0, 211, 255, 1)", 10 | "name": "Annotations & Alerts", 11 | "type": "dashboard" 12 | } 13 | ] 14 | }, 15 | "editable": true, 16 | "gnetId": null, 17 | "graphTooltip": 0, 18 | "id": 3, 19 | "links": [], 20 | "panels": [ 21 | { 22 | "datasource": null, 23 | "fieldConfig": { 24 | "defaults": { 25 | "custom": {}, 26 | "mappings": [], 27 | "thresholds": { 28 | "mode": "absolute", 29 | "steps": [ 30 | { 31 | "color": "green", 32 | "value": null 33 | }, 34 | { 35 | "color": "red", 36 | "value": 80 37 | } 38 | ] 39 | } 40 | }, 41 | "overrides": [] 42 | }, 43 | "gridPos": { 44 | "h": 2, 45 | "w": 4, 46 | "x": 0, 47 | "y": 0 48 | }, 49 | "id": 38, 50 | "options": { 51 | "colorMode": "value", 52 | "graphMode": "none", 53 | "justifyMode": "auto", 54 | "orientation": "auto", 55 | "reduceOptions": { 56 | "calcs": [ 57 | "lastNotNull" 58 | ], 59 | "fields": "", 60 | "values": false 61 | }, 62 | "textMode": "auto" 63 | }, 64 | "pluginVersion": "7.0.6", 65 | "targets": [ 66 | { 67 | "groupBy": [], 68 | "measurement": "FritzBox", 69 | "orderByTime": "ASC", 70 | "policy": "default", 71 | "refId": "A", 72 | "resultFormat": "time_series", 73 | "select": [ 74 | [ 75 | { 76 | "params": [ 77 | "ModelName" 78 | ], 79 | "type": "field" 80 | } 81 | ] 82 | ], 83 | "tags": [] 84 | } 85 | ], 86 | "timeFrom": null, 87 | "timeShift": null, 88 | "title": "", 89 | "type": "stat" 90 | }, 91 | { 92 | "datasource": null, 93 | "fieldConfig": { 94 | "defaults": { 95 | "custom": {}, 96 | "mappings": [], 97 | "max": 110000000, 98 | "min": 0, 99 | "thresholds": { 100 | "mode": "percentage", 101 | "steps": [ 102 | { 103 | "color": "green", 104 | "value": null 105 | }, 106 | { 107 | "color": "#EAB839", 108 | "value": 50 109 | }, 110 | { 111 | "color": "orange", 112 | "value": 75 113 | }, 114 | { 115 | "color": "red", 116 | "value": 95 117 | } 118 | ] 119 | }, 120 | "unit": "bps" 121 | }, 122 | "overrides": [] 123 | }, 124 | "gridPos": { 125 | "h": 6, 126 | "w": 4, 127 | "x": 4, 128 | "y": 0 129 | }, 130 | "id": 32, 131 | "options": { 132 | "orientation": "auto", 133 | "reduceOptions": { 134 | "calcs": [ 135 | "mean" 136 | ], 137 | "fields": "", 138 | "values": false 139 | }, 140 | "showThresholdLabels": false, 141 | "showThresholdMarkers": true 142 | }, 143 | "pluginVersion": "7.0.6", 144 | "targets": [ 145 | { 146 | "groupBy": [], 147 | "measurement": "FritzBox", 148 | "orderByTime": "ASC", 149 | "policy": "default", 150 | "refId": "A", 151 | "resultFormat": "time_series", 152 | "select": [ 153 | [ 154 | { 155 | "params": [ 156 | "ByteReceiveRate" 157 | ], 158 | "type": "field" 159 | }, 160 | { 161 | "params": [], 162 | "type": "last" 163 | }, 164 | { 165 | "params": [ 166 | "*8" 167 | ], 168 | "type": "math" 169 | } 170 | ] 171 | ], 172 | "tags": [] 173 | } 174 | ], 175 | "timeFrom": null, 176 | "timeShift": null, 177 | "title": "Downstream", 178 | "type": "gauge" 179 | }, 180 | { 181 | "datasource": null, 182 | "fieldConfig": { 183 | "defaults": { 184 | "custom": {}, 185 | "mappings": [], 186 | "max": 45000000, 187 | "min": 0, 188 | "thresholds": { 189 | "mode": "percentage", 190 | "steps": [ 191 | { 192 | "color": "green", 193 | "value": null 194 | }, 195 | { 196 | "color": "#EAB839", 197 | "value": 50 198 | }, 199 | { 200 | "color": "orange", 201 | "value": 75 202 | }, 203 | { 204 | "color": "red", 205 | "value": 95 206 | } 207 | ] 208 | }, 209 | "unit": "bps" 210 | }, 211 | "overrides": [] 212 | }, 213 | "gridPos": { 214 | "h": 6, 215 | "w": 4, 216 | "x": 8, 217 | "y": 0 218 | }, 219 | "id": 16, 220 | "options": { 221 | "orientation": "auto", 222 | "reduceOptions": { 223 | "calcs": [ 224 | "mean" 225 | ], 226 | "fields": "", 227 | "values": false 228 | }, 229 | "showThresholdLabels": false, 230 | "showThresholdMarkers": true 231 | }, 232 | "pluginVersion": "7.0.6", 233 | "targets": [ 234 | { 235 | "groupBy": [], 236 | "measurement": "FritzBox", 237 | "orderByTime": "ASC", 238 | "policy": "default", 239 | "refId": "A", 240 | "resultFormat": "time_series", 241 | "select": [ 242 | [ 243 | { 244 | "params": [ 245 | "ByteSendRate" 246 | ], 247 | "type": "field" 248 | }, 249 | { 250 | "params": [], 251 | "type": "last" 252 | }, 253 | { 254 | "params": [ 255 | "*8" 256 | ], 257 | "type": "math" 258 | } 259 | ] 260 | ], 261 | "tags": [] 262 | } 263 | ], 264 | "timeFrom": null, 265 | "timeShift": null, 266 | "title": "Upstream", 267 | "type": "gauge" 268 | }, 269 | { 270 | "datasource": null, 271 | "fieldConfig": { 272 | "defaults": { 273 | "custom": {}, 274 | "mappings": [], 275 | "thresholds": { 276 | "mode": "percentage", 277 | "steps": [ 278 | { 279 | "color": "green", 280 | "value": null 281 | }, 282 | { 283 | "color": "red", 284 | "value": 80 285 | } 286 | ] 287 | }, 288 | "unit": "bps" 289 | }, 290 | "overrides": [] 291 | }, 292 | "gridPos": { 293 | "h": 6, 294 | "w": 4, 295 | "x": 12, 296 | "y": 0 297 | }, 298 | "id": 34, 299 | "options": { 300 | "colorMode": "value", 301 | "graphMode": "area", 302 | "justifyMode": "auto", 303 | "orientation": "auto", 304 | "reduceOptions": { 305 | "calcs": [ 306 | "mean" 307 | ], 308 | "fields": "", 309 | "values": false 310 | }, 311 | "textMode": "auto" 312 | }, 313 | "pluginVersion": "7.0.6", 314 | "targets": [ 315 | { 316 | "groupBy": [ 317 | { 318 | "params": [ 319 | "$__interval" 320 | ], 321 | "type": "time" 322 | }, 323 | { 324 | "params": [ 325 | "previous" 326 | ], 327 | "type": "fill" 328 | } 329 | ], 330 | "measurement": "FritzBox", 331 | "orderByTime": "ASC", 332 | "policy": "default", 333 | "refId": "A", 334 | "resultFormat": "time_series", 335 | "select": [ 336 | [ 337 | { 338 | "params": [ 339 | "ByteReceiveRate" 340 | ], 341 | "type": "field" 342 | }, 343 | { 344 | "params": [], 345 | "type": "mean" 346 | }, 347 | { 348 | "params": [ 349 | "*8" 350 | ], 351 | "type": "math" 352 | } 353 | ] 354 | ], 355 | "tags": [] 356 | } 357 | ], 358 | "timeFrom": null, 359 | "timeShift": null, 360 | "title": "Average Down", 361 | "type": "stat" 362 | }, 363 | { 364 | "datasource": null, 365 | "fieldConfig": { 366 | "defaults": { 367 | "custom": {}, 368 | "mappings": [], 369 | "thresholds": { 370 | "mode": "percentage", 371 | "steps": [ 372 | { 373 | "color": "green", 374 | "value": null 375 | }, 376 | { 377 | "color": "red", 378 | "value": 80 379 | } 380 | ] 381 | }, 382 | "unit": "bps" 383 | }, 384 | "overrides": [] 385 | }, 386 | "gridPos": { 387 | "h": 6, 388 | "w": 4, 389 | "x": 16, 390 | "y": 0 391 | }, 392 | "id": 40, 393 | "options": { 394 | "colorMode": "value", 395 | "graphMode": "area", 396 | "justifyMode": "auto", 397 | "orientation": "auto", 398 | "reduceOptions": { 399 | "calcs": [ 400 | "mean" 401 | ], 402 | "fields": "", 403 | "values": false 404 | }, 405 | "textMode": "auto" 406 | }, 407 | "pluginVersion": "7.0.6", 408 | "targets": [ 409 | { 410 | "groupBy": [ 411 | { 412 | "params": [ 413 | "$__interval" 414 | ], 415 | "type": "time" 416 | }, 417 | { 418 | "params": [ 419 | "previous" 420 | ], 421 | "type": "fill" 422 | } 423 | ], 424 | "measurement": "FritzBox", 425 | "orderByTime": "ASC", 426 | "policy": "default", 427 | "refId": "A", 428 | "resultFormat": "time_series", 429 | "select": [ 430 | [ 431 | { 432 | "params": [ 433 | "ByteSendRate" 434 | ], 435 | "type": "field" 436 | }, 437 | { 438 | "params": [], 439 | "type": "mean" 440 | }, 441 | { 442 | "params": [ 443 | "*8" 444 | ], 445 | "type": "math" 446 | } 447 | ] 448 | ], 449 | "tags": [] 450 | } 451 | ], 452 | "timeFrom": null, 453 | "timeShift": null, 454 | "title": "Average Up", 455 | "type": "stat" 456 | }, 457 | { 458 | "datasource": null, 459 | "fieldConfig": { 460 | "defaults": { 461 | "custom": {}, 462 | "mappings": [], 463 | "thresholds": { 464 | "mode": "absolute", 465 | "steps": [ 466 | { 467 | "color": "green", 468 | "value": null 469 | } 470 | ] 471 | }, 472 | "unit": "Kbits" 473 | }, 474 | "overrides": [] 475 | }, 476 | "gridPos": { 477 | "h": 6, 478 | "w": 4, 479 | "x": 20, 480 | "y": 0 481 | }, 482 | "id": 24, 483 | "options": { 484 | "colorMode": "value", 485 | "graphMode": "area", 486 | "justifyMode": "auto", 487 | "orientation": "auto", 488 | "reduceOptions": { 489 | "calcs": [ 490 | "mean" 491 | ], 492 | "fields": "", 493 | "values": false 494 | }, 495 | "textMode": "auto" 496 | }, 497 | "pluginVersion": "7.0.6", 498 | "targets": [ 499 | { 500 | "alias": "Current Speed", 501 | "groupBy": [ 502 | { 503 | "params": [ 504 | "$__interval" 505 | ], 506 | "type": "time" 507 | }, 508 | { 509 | "params": [ 510 | "previous" 511 | ], 512 | "type": "fill" 513 | } 514 | ], 515 | "measurement": "FritzBox", 516 | "orderByTime": "ASC", 517 | "policy": "default", 518 | "refId": "C", 519 | "resultFormat": "time_series", 520 | "select": [ 521 | [ 522 | { 523 | "params": [ 524 | "Layer1DownstreamMaxBitRate" 525 | ], 526 | "type": "field" 527 | }, 528 | { 529 | "params": [], 530 | "type": "mean" 531 | }, 532 | { 533 | "params": [ 534 | " / 1024" 535 | ], 536 | "type": "math" 537 | } 538 | ] 539 | ], 540 | "tags": [] 541 | }, 542 | { 543 | "alias": "DSL Sync Rate", 544 | "groupBy": [ 545 | { 546 | "params": [ 547 | "$__interval" 548 | ], 549 | "type": "time" 550 | }, 551 | { 552 | "params": [ 553 | "previous" 554 | ], 555 | "type": "fill" 556 | } 557 | ], 558 | "measurement": "FritzBox", 559 | "orderByTime": "ASC", 560 | "policy": "default", 561 | "refId": "A", 562 | "resultFormat": "time_series", 563 | "select": [ 564 | [ 565 | { 566 | "params": [ 567 | "DownstreamCurrRate" 568 | ], 569 | "type": "field" 570 | }, 571 | { 572 | "params": [], 573 | "type": "mean" 574 | } 575 | ] 576 | ], 577 | "tags": [] 578 | }, 579 | { 580 | "alias": "DSL Max Sync Rate", 581 | "groupBy": [ 582 | { 583 | "params": [ 584 | "$__interval" 585 | ], 586 | "type": "time" 587 | }, 588 | { 589 | "params": [ 590 | "previous" 591 | ], 592 | "type": "fill" 593 | } 594 | ], 595 | "measurement": "FritzBox", 596 | "orderByTime": "ASC", 597 | "policy": "default", 598 | "refId": "B", 599 | "resultFormat": "time_series", 600 | "select": [ 601 | [ 602 | { 603 | "params": [ 604 | "DownstreamMaxRate" 605 | ], 606 | "type": "field" 607 | }, 608 | { 609 | "params": [], 610 | "type": "mean" 611 | } 612 | ] 613 | ], 614 | "tags": [] 615 | } 616 | ], 617 | "timeFrom": null, 618 | "timeShift": null, 619 | "title": "Downstream Sync.", 620 | "type": "stat" 621 | }, 622 | { 623 | "datasource": null, 624 | "fieldConfig": { 625 | "defaults": { 626 | "custom": { 627 | "align": null 628 | }, 629 | "mappings": [], 630 | "thresholds": { 631 | "mode": "absolute", 632 | "steps": [ 633 | { 634 | "color": "green", 635 | "value": null 636 | }, 637 | { 638 | "color": "red", 639 | "value": 80 640 | } 641 | ] 642 | } 643 | }, 644 | "overrides": [] 645 | }, 646 | "gridPos": { 647 | "h": 2, 648 | "w": 4, 649 | "x": 0, 650 | "y": 2 651 | }, 652 | "id": 4, 653 | "options": { 654 | "colorMode": "value", 655 | "graphMode": "none", 656 | "justifyMode": "auto", 657 | "orientation": "auto", 658 | "reduceOptions": { 659 | "calcs": [ 660 | "lastNotNull" 661 | ], 662 | "fields": "", 663 | "values": false 664 | }, 665 | "textMode": "auto" 666 | }, 667 | "pluginVersion": "7.0.6", 668 | "targets": [ 669 | { 670 | "groupBy": [], 671 | "measurement": "FritzBox", 672 | "orderByTime": "ASC", 673 | "policy": "default", 674 | "refId": "A", 675 | "resultFormat": "time_series", 676 | "select": [ 677 | [ 678 | { 679 | "params": [ 680 | "ConnectionStatus" 681 | ], 682 | "type": "field" 683 | } 684 | ] 685 | ], 686 | "tags": [] 687 | } 688 | ], 689 | "timeFrom": null, 690 | "timeShift": null, 691 | "title": "", 692 | "type": "stat" 693 | }, 694 | { 695 | "datasource": null, 696 | "fieldConfig": { 697 | "defaults": { 698 | "custom": {}, 699 | "mappings": [], 700 | "thresholds": { 701 | "mode": "absolute", 702 | "steps": [ 703 | { 704 | "color": "green", 705 | "value": null 706 | }, 707 | { 708 | "color": "red", 709 | "value": 80 710 | } 711 | ] 712 | } 713 | }, 714 | "overrides": [] 715 | }, 716 | "gridPos": { 717 | "h": 2, 718 | "w": 4, 719 | "x": 0, 720 | "y": 4 721 | }, 722 | "id": 6, 723 | "options": { 724 | "colorMode": "value", 725 | "graphMode": "none", 726 | "justifyMode": "auto", 727 | "orientation": "auto", 728 | "reduceOptions": { 729 | "calcs": [ 730 | "lastNotNull" 731 | ], 732 | "fields": "", 733 | "values": false 734 | }, 735 | "textMode": "value" 736 | }, 737 | "pluginVersion": "7.0.6", 738 | "targets": [ 739 | { 740 | "groupBy": [], 741 | "measurement": "FritzBox", 742 | "orderByTime": "ASC", 743 | "policy": "default", 744 | "refId": "A", 745 | "resultFormat": "time_series", 746 | "select": [ 747 | [ 748 | { 749 | "params": [ 750 | "ExternalIPAddress" 751 | ], 752 | "type": "field" 753 | } 754 | ] 755 | ], 756 | "tags": [] 757 | } 758 | ], 759 | "timeFrom": null, 760 | "timeShift": null, 761 | "title": "Public IP", 762 | "type": "stat" 763 | }, 764 | { 765 | "datasource": null, 766 | "fieldConfig": { 767 | "defaults": { 768 | "custom": {}, 769 | "mappings": [], 770 | "thresholds": { 771 | "mode": "absolute", 772 | "steps": [ 773 | { 774 | "color": "green", 775 | "value": null 776 | }, 777 | { 778 | "color": "red", 779 | "value": 80 780 | } 781 | ] 782 | } 783 | }, 784 | "overrides": [] 785 | }, 786 | "gridPos": { 787 | "h": 2, 788 | "w": 4, 789 | "x": 0, 790 | "y": 6 791 | }, 792 | "id": 8, 793 | "options": { 794 | "colorMode": "value", 795 | "graphMode": "none", 796 | "justifyMode": "center", 797 | "orientation": "auto", 798 | "reduceOptions": { 799 | "calcs": [ 800 | "lastNotNull" 801 | ], 802 | "fields": "", 803 | "values": false 804 | }, 805 | "textMode": "value" 806 | }, 807 | "pluginVersion": "7.0.6", 808 | "targets": [ 809 | { 810 | "groupBy": [], 811 | "measurement": "FritzBox", 812 | "orderByTime": "ASC", 813 | "policy": "default", 814 | "refId": "A", 815 | "resultFormat": "time_series", 816 | "select": [ 817 | [ 818 | { 819 | "params": [ 820 | "DNSServers" 821 | ], 822 | "type": "field" 823 | } 824 | ] 825 | ], 826 | "tags": [] 827 | } 828 | ], 829 | "timeFrom": null, 830 | "timeShift": null, 831 | "title": "DNS Servers", 832 | "type": "stat" 833 | }, 834 | { 835 | "aliasColors": {}, 836 | "bars": false, 837 | "dashLength": 10, 838 | "dashes": false, 839 | "datasource": null, 840 | "fieldConfig": { 841 | "defaults": { 842 | "custom": { 843 | "align": null 844 | }, 845 | "mappings": [], 846 | "thresholds": { 847 | "mode": "absolute", 848 | "steps": [ 849 | { 850 | "color": "green", 851 | "value": null 852 | }, 853 | { 854 | "color": "red", 855 | "value": 80 856 | } 857 | ] 858 | } 859 | }, 860 | "overrides": [] 861 | }, 862 | "fill": 1, 863 | "fillGradient": 5, 864 | "gridPos": { 865 | "h": 17, 866 | "w": 16, 867 | "x": 4, 868 | "y": 6 869 | }, 870 | "hiddenSeries": false, 871 | "id": 12, 872 | "legend": { 873 | "alignAsTable": true, 874 | "avg": true, 875 | "current": true, 876 | "hideEmpty": true, 877 | "max": true, 878 | "min": false, 879 | "show": true, 880 | "total": false, 881 | "values": true 882 | }, 883 | "lines": true, 884 | "linewidth": 1, 885 | "nullPointMode": "null", 886 | "options": { 887 | "dataLinks": [] 888 | }, 889 | "percentage": false, 890 | "pluginVersion": "7.1.1", 891 | "pointradius": 2, 892 | "points": false, 893 | "renderer": "flot", 894 | "seriesOverrides": [], 895 | "spaceLength": 10, 896 | "stack": false, 897 | "steppedLine": true, 898 | "targets": [ 899 | { 900 | "alias": "Downstream", 901 | "groupBy": [ 902 | { 903 | "params": [ 904 | "$__interval" 905 | ], 906 | "type": "time" 907 | }, 908 | { 909 | "params": [ 910 | "previous" 911 | ], 912 | "type": "fill" 913 | } 914 | ], 915 | "measurement": "FritzBox", 916 | "orderByTime": "ASC", 917 | "policy": "default", 918 | "refId": "A", 919 | "resultFormat": "time_series", 920 | "select": [ 921 | [ 922 | { 923 | "params": [ 924 | "ByteReceiveRate" 925 | ], 926 | "type": "field" 927 | }, 928 | { 929 | "params": [], 930 | "type": "mean" 931 | }, 932 | { 933 | "params": [ 934 | "*8" 935 | ], 936 | "type": "math" 937 | } 938 | ] 939 | ], 940 | "tags": [] 941 | }, 942 | { 943 | "alias": "Upstream", 944 | "groupBy": [ 945 | { 946 | "params": [ 947 | "$__interval" 948 | ], 949 | "type": "time" 950 | }, 951 | { 952 | "params": [ 953 | "previous" 954 | ], 955 | "type": "fill" 956 | } 957 | ], 958 | "measurement": "FritzBox", 959 | "orderByTime": "ASC", 960 | "policy": "default", 961 | "refId": "B", 962 | "resultFormat": "time_series", 963 | "select": [ 964 | [ 965 | { 966 | "params": [ 967 | "ByteSendRate" 968 | ], 969 | "type": "field" 970 | }, 971 | { 972 | "params": [], 973 | "type": "mean" 974 | }, 975 | { 976 | "params": [ 977 | "*8" 978 | ], 979 | "type": "math" 980 | } 981 | ] 982 | ], 983 | "tags": [] 984 | } 985 | ], 986 | "thresholds": [], 987 | "timeFrom": null, 988 | "timeRegions": [], 989 | "timeShift": null, 990 | "title": "DSL Traffic", 991 | "tooltip": { 992 | "shared": true, 993 | "sort": 0, 994 | "value_type": "individual" 995 | }, 996 | "type": "graph", 997 | "xaxis": { 998 | "buckets": null, 999 | "mode": "time", 1000 | "name": null, 1001 | "show": true, 1002 | "values": [] 1003 | }, 1004 | "yaxes": [ 1005 | { 1006 | "format": "bits", 1007 | "label": null, 1008 | "logBase": 1, 1009 | "max": null, 1010 | "min": null, 1011 | "show": true 1012 | }, 1013 | { 1014 | "format": "short", 1015 | "label": null, 1016 | "logBase": 1, 1017 | "max": null, 1018 | "min": null, 1019 | "show": true 1020 | } 1021 | ], 1022 | "yaxis": { 1023 | "align": false, 1024 | "alignLevel": null 1025 | } 1026 | }, 1027 | { 1028 | "datasource": null, 1029 | "fieldConfig": { 1030 | "defaults": { 1031 | "custom": {}, 1032 | "mappings": [], 1033 | "thresholds": { 1034 | "mode": "absolute", 1035 | "steps": [ 1036 | { 1037 | "color": "green", 1038 | "value": null 1039 | } 1040 | ] 1041 | }, 1042 | "unit": "Kbits" 1043 | }, 1044 | "overrides": [] 1045 | }, 1046 | "gridPos": { 1047 | "h": 6, 1048 | "w": 4, 1049 | "x": 20, 1050 | "y": 6 1051 | }, 1052 | "id": 26, 1053 | "options": { 1054 | "colorMode": "value", 1055 | "graphMode": "area", 1056 | "justifyMode": "auto", 1057 | "orientation": "auto", 1058 | "reduceOptions": { 1059 | "calcs": [ 1060 | "mean" 1061 | ], 1062 | "fields": "", 1063 | "values": false 1064 | }, 1065 | "textMode": "auto" 1066 | }, 1067 | "pluginVersion": "7.0.6", 1068 | "targets": [ 1069 | { 1070 | "alias": "Current Speed", 1071 | "groupBy": [ 1072 | { 1073 | "params": [ 1074 | "$__interval" 1075 | ], 1076 | "type": "time" 1077 | }, 1078 | { 1079 | "params": [ 1080 | "previous" 1081 | ], 1082 | "type": "fill" 1083 | } 1084 | ], 1085 | "measurement": "FritzBox", 1086 | "orderByTime": "ASC", 1087 | "policy": "default", 1088 | "refId": "C", 1089 | "resultFormat": "time_series", 1090 | "select": [ 1091 | [ 1092 | { 1093 | "params": [ 1094 | "Layer1UpstreamMaxBitRate" 1095 | ], 1096 | "type": "field" 1097 | }, 1098 | { 1099 | "params": [], 1100 | "type": "mean" 1101 | }, 1102 | { 1103 | "params": [ 1104 | " / 1024" 1105 | ], 1106 | "type": "math" 1107 | } 1108 | ] 1109 | ], 1110 | "tags": [] 1111 | }, 1112 | { 1113 | "alias": "DSL Sync Rate", 1114 | "groupBy": [ 1115 | { 1116 | "params": [ 1117 | "$__interval" 1118 | ], 1119 | "type": "time" 1120 | }, 1121 | { 1122 | "params": [ 1123 | "previous" 1124 | ], 1125 | "type": "fill" 1126 | } 1127 | ], 1128 | "measurement": "FritzBox", 1129 | "orderByTime": "ASC", 1130 | "policy": "default", 1131 | "refId": "A", 1132 | "resultFormat": "time_series", 1133 | "select": [ 1134 | [ 1135 | { 1136 | "params": [ 1137 | "UpstreamCurrRate" 1138 | ], 1139 | "type": "field" 1140 | }, 1141 | { 1142 | "params": [], 1143 | "type": "mean" 1144 | } 1145 | ] 1146 | ], 1147 | "tags": [] 1148 | }, 1149 | { 1150 | "alias": "DSL Max Sync Rate", 1151 | "groupBy": [ 1152 | { 1153 | "params": [ 1154 | "$__interval" 1155 | ], 1156 | "type": "time" 1157 | }, 1158 | { 1159 | "params": [ 1160 | "previous" 1161 | ], 1162 | "type": "fill" 1163 | } 1164 | ], 1165 | "measurement": "FritzBox", 1166 | "orderByTime": "ASC", 1167 | "policy": "default", 1168 | "refId": "B", 1169 | "resultFormat": "time_series", 1170 | "select": [ 1171 | [ 1172 | { 1173 | "params": [ 1174 | "UpstreamMaxRate" 1175 | ], 1176 | "type": "field" 1177 | }, 1178 | { 1179 | "params": [], 1180 | "type": "mean" 1181 | } 1182 | ] 1183 | ], 1184 | "tags": [] 1185 | } 1186 | ], 1187 | "timeFrom": null, 1188 | "timeShift": null, 1189 | "title": "Upstream Sync.", 1190 | "type": "stat" 1191 | }, 1192 | { 1193 | "datasource": null, 1194 | "fieldConfig": { 1195 | "defaults": { 1196 | "custom": {}, 1197 | "mappings": [], 1198 | "thresholds": { 1199 | "mode": "absolute", 1200 | "steps": [ 1201 | { 1202 | "color": "green", 1203 | "value": null 1204 | } 1205 | ] 1206 | }, 1207 | "unit": "s" 1208 | }, 1209 | "overrides": [] 1210 | }, 1211 | "gridPos": { 1212 | "h": 2, 1213 | "w": 2, 1214 | "x": 0, 1215 | "y": 8 1216 | }, 1217 | "id": 18, 1218 | "options": { 1219 | "colorMode": "value", 1220 | "graphMode": "none", 1221 | "justifyMode": "auto", 1222 | "orientation": "auto", 1223 | "reduceOptions": { 1224 | "calcs": [ 1225 | "lastNotNull" 1226 | ], 1227 | "fields": "", 1228 | "values": false 1229 | }, 1230 | "textMode": "auto" 1231 | }, 1232 | "pluginVersion": "7.0.6", 1233 | "targets": [ 1234 | { 1235 | "groupBy": [ 1236 | { 1237 | "params": [ 1238 | "$__interval" 1239 | ], 1240 | "type": "time" 1241 | }, 1242 | { 1243 | "params": [ 1244 | "null" 1245 | ], 1246 | "type": "fill" 1247 | } 1248 | ], 1249 | "measurement": "FritzBox", 1250 | "orderByTime": "ASC", 1251 | "policy": "default", 1252 | "refId": "A", 1253 | "resultFormat": "time_series", 1254 | "select": [ 1255 | [ 1256 | { 1257 | "params": [ 1258 | "UpTime" 1259 | ], 1260 | "type": "field" 1261 | }, 1262 | { 1263 | "params": [], 1264 | "type": "mean" 1265 | } 1266 | ] 1267 | ], 1268 | "tags": [] 1269 | } 1270 | ], 1271 | "timeFrom": null, 1272 | "timeShift": null, 1273 | "title": "Uptime", 1274 | "type": "stat" 1275 | }, 1276 | { 1277 | "datasource": null, 1278 | "fieldConfig": { 1279 | "defaults": { 1280 | "custom": {}, 1281 | "mappings": [], 1282 | "thresholds": { 1283 | "mode": "absolute", 1284 | "steps": [ 1285 | { 1286 | "color": "green", 1287 | "value": null 1288 | } 1289 | ] 1290 | }, 1291 | "unit": "s" 1292 | }, 1293 | "overrides": [] 1294 | }, 1295 | "gridPos": { 1296 | "h": 2, 1297 | "w": 2, 1298 | "x": 2, 1299 | "y": 8 1300 | }, 1301 | "id": 20, 1302 | "options": { 1303 | "colorMode": "value", 1304 | "graphMode": "none", 1305 | "justifyMode": "auto", 1306 | "orientation": "auto", 1307 | "reduceOptions": { 1308 | "calcs": [ 1309 | "lastNotNull" 1310 | ], 1311 | "fields": "", 1312 | "values": false 1313 | }, 1314 | "textMode": "auto" 1315 | }, 1316 | "pluginVersion": "7.0.6", 1317 | "targets": [ 1318 | { 1319 | "groupBy": [ 1320 | { 1321 | "params": [ 1322 | "$__interval" 1323 | ], 1324 | "type": "time" 1325 | }, 1326 | { 1327 | "params": [ 1328 | "null" 1329 | ], 1330 | "type": "fill" 1331 | } 1332 | ], 1333 | "measurement": "FritzBox", 1334 | "orderByTime": "ASC", 1335 | "policy": "default", 1336 | "refId": "A", 1337 | "resultFormat": "time_series", 1338 | "select": [ 1339 | [ 1340 | { 1341 | "params": [ 1342 | "ConnectionTime" 1343 | ], 1344 | "type": "field" 1345 | }, 1346 | { 1347 | "params": [], 1348 | "type": "mean" 1349 | } 1350 | ] 1351 | ], 1352 | "tags": [] 1353 | } 1354 | ], 1355 | "timeFrom": null, 1356 | "timeShift": null, 1357 | "title": "ConnectionTime", 1358 | "type": "stat" 1359 | }, 1360 | { 1361 | "aliasColors": {}, 1362 | "bars": false, 1363 | "dashLength": 10, 1364 | "dashes": false, 1365 | "datasource": null, 1366 | "decimals": null, 1367 | "fieldConfig": { 1368 | "defaults": { 1369 | "custom": { 1370 | "align": null 1371 | }, 1372 | "mappings": [], 1373 | "thresholds": { 1374 | "mode": "absolute", 1375 | "steps": [ 1376 | { 1377 | "color": "green", 1378 | "value": null 1379 | }, 1380 | { 1381 | "color": "red", 1382 | "value": 80 1383 | } 1384 | ] 1385 | } 1386 | }, 1387 | "overrides": [] 1388 | }, 1389 | "fill": 1, 1390 | "fillGradient": 0, 1391 | "gridPos": { 1392 | "h": 6, 1393 | "w": 4, 1394 | "x": 0, 1395 | "y": 10 1396 | }, 1397 | "hiddenSeries": false, 1398 | "id": 52, 1399 | "legend": { 1400 | "alignAsTable": true, 1401 | "avg": false, 1402 | "current": true, 1403 | "max": true, 1404 | "min": true, 1405 | "rightSide": true, 1406 | "show": true, 1407 | "total": false, 1408 | "values": true 1409 | }, 1410 | "lines": true, 1411 | "linewidth": 1, 1412 | "nullPointMode": "null", 1413 | "options": { 1414 | "dataLinks": [] 1415 | }, 1416 | "percentage": false, 1417 | "pluginVersion": "7.0.6", 1418 | "pointradius": 2, 1419 | "points": false, 1420 | "renderer": "flot", 1421 | "seriesOverrides": [], 1422 | "spaceLength": 10, 1423 | "stack": false, 1424 | "steppedLine": false, 1425 | "targets": [ 1426 | { 1427 | "alias": "Hosts Active Total", 1428 | "groupBy": [ 1429 | { 1430 | "params": [ 1431 | "$__interval" 1432 | ], 1433 | "type": "time" 1434 | }, 1435 | { 1436 | "params": [ 1437 | "none" 1438 | ], 1439 | "type": "fill" 1440 | } 1441 | ], 1442 | "measurement": "FritzBox", 1443 | "orderByTime": "ASC", 1444 | "policy": "default", 1445 | "refId": "A", 1446 | "resultFormat": "time_series", 1447 | "select": [ 1448 | [ 1449 | { 1450 | "params": [ 1451 | "HostsActive" 1452 | ], 1453 | "type": "field" 1454 | }, 1455 | { 1456 | "params": [], 1457 | "type": "mean" 1458 | } 1459 | ] 1460 | ], 1461 | "tags": [ 1462 | { 1463 | "key": "source", 1464 | "operator": "=", 1465 | "value": "network" 1466 | } 1467 | ] 1468 | }, 1469 | { 1470 | "alias": "Lan Active", 1471 | "groupBy": [ 1472 | { 1473 | "params": [ 1474 | "$__interval" 1475 | ], 1476 | "type": "time" 1477 | }, 1478 | { 1479 | "params": [ 1480 | "none" 1481 | ], 1482 | "type": "fill" 1483 | } 1484 | ], 1485 | "measurement": "FritzBox", 1486 | "orderByTime": "ASC", 1487 | "policy": "default", 1488 | "refId": "B", 1489 | "resultFormat": "time_series", 1490 | "select": [ 1491 | [ 1492 | { 1493 | "params": [ 1494 | "HostsActiveLAN" 1495 | ], 1496 | "type": "field" 1497 | }, 1498 | { 1499 | "params": [], 1500 | "type": "mean" 1501 | } 1502 | ] 1503 | ], 1504 | "tags": [ 1505 | { 1506 | "key": "source", 1507 | "operator": "=", 1508 | "value": "network" 1509 | } 1510 | ] 1511 | }, 1512 | { 1513 | "alias": "WLAN Active", 1514 | "groupBy": [ 1515 | { 1516 | "params": [ 1517 | "$__interval" 1518 | ], 1519 | "type": "time" 1520 | }, 1521 | { 1522 | "params": [ 1523 | "none" 1524 | ], 1525 | "type": "fill" 1526 | } 1527 | ], 1528 | "measurement": "FritzBox", 1529 | "orderByTime": "ASC", 1530 | "policy": "default", 1531 | "refId": "C", 1532 | "resultFormat": "time_series", 1533 | "select": [ 1534 | [ 1535 | { 1536 | "params": [ 1537 | "HostsActiveWLAN" 1538 | ], 1539 | "type": "field" 1540 | }, 1541 | { 1542 | "params": [], 1543 | "type": "last" 1544 | } 1545 | ] 1546 | ], 1547 | "tags": [ 1548 | { 1549 | "key": "source", 1550 | "operator": "=", 1551 | "value": "network" 1552 | } 1553 | ] 1554 | }, 1555 | { 1556 | "alias": "Hosts Known Total", 1557 | "groupBy": [ 1558 | { 1559 | "params": [ 1560 | "$__interval" 1561 | ], 1562 | "type": "time" 1563 | }, 1564 | { 1565 | "params": [ 1566 | "none" 1567 | ], 1568 | "type": "fill" 1569 | } 1570 | ], 1571 | "measurement": "FritzBox", 1572 | "orderByTime": "ASC", 1573 | "policy": "default", 1574 | "refId": "D", 1575 | "resultFormat": "time_series", 1576 | "select": [ 1577 | [ 1578 | { 1579 | "params": [ 1580 | "HostsKnown" 1581 | ], 1582 | "type": "field" 1583 | }, 1584 | { 1585 | "params": [], 1586 | "type": "mean" 1587 | } 1588 | ] 1589 | ], 1590 | "tags": [ 1591 | { 1592 | "key": "source", 1593 | "operator": "=", 1594 | "value": "network" 1595 | } 1596 | ] 1597 | }, 1598 | { 1599 | "alias": "Hosts Known LAN", 1600 | "groupBy": [ 1601 | { 1602 | "params": [ 1603 | "$__interval" 1604 | ], 1605 | "type": "time" 1606 | }, 1607 | { 1608 | "params": [ 1609 | "none" 1610 | ], 1611 | "type": "fill" 1612 | } 1613 | ], 1614 | "measurement": "FritzBox", 1615 | "orderByTime": "ASC", 1616 | "policy": "default", 1617 | "refId": "E", 1618 | "resultFormat": "time_series", 1619 | "select": [ 1620 | [ 1621 | { 1622 | "params": [ 1623 | "HostsKnownLAN" 1624 | ], 1625 | "type": "field" 1626 | }, 1627 | { 1628 | "params": [], 1629 | "type": "mean" 1630 | } 1631 | ] 1632 | ], 1633 | "tags": [ 1634 | { 1635 | "key": "source", 1636 | "operator": "=", 1637 | "value": "network" 1638 | } 1639 | ] 1640 | }, 1641 | { 1642 | "alias": "Hosts Known WLAN", 1643 | "groupBy": [ 1644 | { 1645 | "params": [ 1646 | "$__interval" 1647 | ], 1648 | "type": "time" 1649 | }, 1650 | { 1651 | "params": [ 1652 | "none" 1653 | ], 1654 | "type": "fill" 1655 | } 1656 | ], 1657 | "measurement": "FritzBox", 1658 | "orderByTime": "ASC", 1659 | "policy": "default", 1660 | "refId": "F", 1661 | "resultFormat": "time_series", 1662 | "select": [ 1663 | [ 1664 | { 1665 | "params": [ 1666 | "HostsKnownWLAN" 1667 | ], 1668 | "type": "field" 1669 | }, 1670 | { 1671 | "params": [], 1672 | "type": "mean" 1673 | } 1674 | ] 1675 | ], 1676 | "tags": [ 1677 | { 1678 | "key": "source", 1679 | "operator": "=", 1680 | "value": "network" 1681 | } 1682 | ] 1683 | } 1684 | ], 1685 | "thresholds": [], 1686 | "timeFrom": null, 1687 | "timeRegions": [], 1688 | "timeShift": null, 1689 | "title": "DHCP Pool", 1690 | "tooltip": { 1691 | "shared": true, 1692 | "sort": 0, 1693 | "value_type": "individual" 1694 | }, 1695 | "type": "graph", 1696 | "xaxis": { 1697 | "buckets": null, 1698 | "mode": "time", 1699 | "name": null, 1700 | "show": true, 1701 | "values": [] 1702 | }, 1703 | "yaxes": [ 1704 | { 1705 | "format": "short", 1706 | "label": null, 1707 | "logBase": 1, 1708 | "max": null, 1709 | "min": null, 1710 | "show": true 1711 | }, 1712 | { 1713 | "format": "short", 1714 | "label": null, 1715 | "logBase": 1, 1716 | "max": null, 1717 | "min": null, 1718 | "show": true 1719 | } 1720 | ], 1721 | "yaxis": { 1722 | "align": false, 1723 | "alignLevel": null 1724 | } 1725 | }, 1726 | { 1727 | "aliasColors": {}, 1728 | "bars": false, 1729 | "dashLength": 10, 1730 | "dashes": false, 1731 | "datasource": null, 1732 | "fieldConfig": { 1733 | "defaults": { 1734 | "custom": {}, 1735 | "unit": "dB" 1736 | }, 1737 | "overrides": [] 1738 | }, 1739 | "fill": 1, 1740 | "fillGradient": 0, 1741 | "gridPos": { 1742 | "h": 7, 1743 | "w": 4, 1744 | "x": 20, 1745 | "y": 12 1746 | }, 1747 | "hiddenSeries": false, 1748 | "id": 30, 1749 | "legend": { 1750 | "avg": false, 1751 | "current": false, 1752 | "max": false, 1753 | "min": false, 1754 | "show": true, 1755 | "total": false, 1756 | "values": false 1757 | }, 1758 | "lines": true, 1759 | "linewidth": 1, 1760 | "nullPointMode": "null", 1761 | "options": { 1762 | "dataLinks": [] 1763 | }, 1764 | "percentage": false, 1765 | "pluginVersion": "7.1.1", 1766 | "pointradius": 2, 1767 | "points": false, 1768 | "renderer": "flot", 1769 | "seriesOverrides": [], 1770 | "spaceLength": 10, 1771 | "stack": false, 1772 | "steppedLine": false, 1773 | "targets": [ 1774 | { 1775 | "alias": "Downstream Attenuation", 1776 | "groupBy": [ 1777 | { 1778 | "params": [ 1779 | "$__interval" 1780 | ], 1781 | "type": "time" 1782 | }, 1783 | { 1784 | "params": [ 1785 | "previous" 1786 | ], 1787 | "type": "fill" 1788 | } 1789 | ], 1790 | "measurement": "FritzBox", 1791 | "orderByTime": "ASC", 1792 | "policy": "default", 1793 | "refId": "A", 1794 | "resultFormat": "time_series", 1795 | "select": [ 1796 | [ 1797 | { 1798 | "params": [ 1799 | "DownstreamAttenuation" 1800 | ], 1801 | "type": "field" 1802 | }, 1803 | { 1804 | "params": [], 1805 | "type": "mean" 1806 | }, 1807 | { 1808 | "params": [ 1809 | " / 10" 1810 | ], 1811 | "type": "math" 1812 | } 1813 | ] 1814 | ], 1815 | "tags": [] 1816 | }, 1817 | { 1818 | "alias": "Upstream Attenuation", 1819 | "groupBy": [ 1820 | { 1821 | "params": [ 1822 | "$__interval" 1823 | ], 1824 | "type": "time" 1825 | }, 1826 | { 1827 | "params": [ 1828 | "previous" 1829 | ], 1830 | "type": "fill" 1831 | } 1832 | ], 1833 | "measurement": "FritzBox", 1834 | "orderByTime": "ASC", 1835 | "policy": "default", 1836 | "refId": "B", 1837 | "resultFormat": "time_series", 1838 | "select": [ 1839 | [ 1840 | { 1841 | "params": [ 1842 | "UpstreamAttenuation" 1843 | ], 1844 | "type": "field" 1845 | }, 1846 | { 1847 | "params": [], 1848 | "type": "mean" 1849 | }, 1850 | { 1851 | "params": [ 1852 | " / 10" 1853 | ], 1854 | "type": "math" 1855 | } 1856 | ] 1857 | ], 1858 | "tags": [] 1859 | }, 1860 | { 1861 | "alias": "Downstream Noise Margin", 1862 | "groupBy": [ 1863 | { 1864 | "params": [ 1865 | "$__interval" 1866 | ], 1867 | "type": "time" 1868 | }, 1869 | { 1870 | "params": [ 1871 | "previous" 1872 | ], 1873 | "type": "fill" 1874 | } 1875 | ], 1876 | "measurement": "FritzBox", 1877 | "orderByTime": "ASC", 1878 | "policy": "default", 1879 | "refId": "C", 1880 | "resultFormat": "time_series", 1881 | "select": [ 1882 | [ 1883 | { 1884 | "params": [ 1885 | "DownstreamNoiseMargin" 1886 | ], 1887 | "type": "field" 1888 | }, 1889 | { 1890 | "params": [], 1891 | "type": "mean" 1892 | }, 1893 | { 1894 | "params": [ 1895 | " / 10" 1896 | ], 1897 | "type": "math" 1898 | } 1899 | ] 1900 | ], 1901 | "tags": [] 1902 | }, 1903 | { 1904 | "alias": "Upstream Noise Margin", 1905 | "groupBy": [ 1906 | { 1907 | "params": [ 1908 | "$__interval" 1909 | ], 1910 | "type": "time" 1911 | }, 1912 | { 1913 | "params": [ 1914 | "previous" 1915 | ], 1916 | "type": "fill" 1917 | } 1918 | ], 1919 | "measurement": "FritzBox", 1920 | "orderByTime": "ASC", 1921 | "policy": "default", 1922 | "refId": "D", 1923 | "resultFormat": "time_series", 1924 | "select": [ 1925 | [ 1926 | { 1927 | "params": [ 1928 | "UpstreamNoiseMargin" 1929 | ], 1930 | "type": "field" 1931 | }, 1932 | { 1933 | "params": [], 1934 | "type": "mean" 1935 | }, 1936 | { 1937 | "params": [ 1938 | " / 10" 1939 | ], 1940 | "type": "math" 1941 | } 1942 | ] 1943 | ], 1944 | "tags": [] 1945 | } 1946 | ], 1947 | "thresholds": [], 1948 | "timeFrom": null, 1949 | "timeRegions": [], 1950 | "timeShift": null, 1951 | "title": "Line Damping", 1952 | "tooltip": { 1953 | "shared": true, 1954 | "sort": 0, 1955 | "value_type": "individual" 1956 | }, 1957 | "type": "graph", 1958 | "xaxis": { 1959 | "buckets": null, 1960 | "mode": "time", 1961 | "name": null, 1962 | "show": true, 1963 | "values": [] 1964 | }, 1965 | "yaxes": [ 1966 | { 1967 | "format": "dB", 1968 | "label": null, 1969 | "logBase": 1, 1970 | "max": null, 1971 | "min": null, 1972 | "show": true 1973 | }, 1974 | { 1975 | "format": "short", 1976 | "label": null, 1977 | "logBase": 1, 1978 | "max": null, 1979 | "min": null, 1980 | "show": true 1981 | } 1982 | ], 1983 | "yaxis": { 1984 | "align": false, 1985 | "alignLevel": null 1986 | } 1987 | }, 1988 | { 1989 | "aliasColors": {}, 1990 | "bars": false, 1991 | "dashLength": 10, 1992 | "dashes": false, 1993 | "datasource": null, 1994 | "fieldConfig": { 1995 | "defaults": { 1996 | "custom": {} 1997 | }, 1998 | "overrides": [] 1999 | }, 2000 | "fill": 1, 2001 | "fillGradient": 0, 2002 | "gridPos": { 2003 | "h": 7, 2004 | "w": 4, 2005 | "x": 0, 2006 | "y": 16 2007 | }, 2008 | "hiddenSeries": false, 2009 | "id": 42, 2010 | "legend": { 2011 | "avg": false, 2012 | "current": false, 2013 | "max": false, 2014 | "min": false, 2015 | "show": true, 2016 | "total": false, 2017 | "values": false 2018 | }, 2019 | "lines": true, 2020 | "linewidth": 1, 2021 | "nullPointMode": "null", 2022 | "options": { 2023 | "dataLinks": [] 2024 | }, 2025 | "percentage": false, 2026 | "pluginVersion": "7.1.1", 2027 | "pointradius": 2, 2028 | "points": false, 2029 | "renderer": "flot", 2030 | "seriesOverrides": [], 2031 | "spaceLength": 10, 2032 | "stack": false, 2033 | "steppedLine": false, 2034 | "targets": [ 2035 | { 2036 | "alias": "LAN", 2037 | "groupBy": [ 2038 | { 2039 | "params": [ 2040 | "$__interval" 2041 | ], 2042 | "type": "time" 2043 | }, 2044 | { 2045 | "params": [ 2046 | "previous" 2047 | ], 2048 | "type": "fill" 2049 | } 2050 | ], 2051 | "measurement": "FritzBox", 2052 | "orderByTime": "ASC", 2053 | "policy": "default", 2054 | "refId": "D", 2055 | "resultFormat": "time_series", 2056 | "select": [ 2057 | [ 2058 | { 2059 | "params": [ 2060 | "HostsActiveLAN" 2061 | ], 2062 | "type": "field" 2063 | }, 2064 | { 2065 | "params": [], 2066 | "type": "last" 2067 | } 2068 | ] 2069 | ], 2070 | "tags": [ 2071 | { 2072 | "key": "source", 2073 | "operator": "=", 2074 | "value": "network" 2075 | } 2076 | ] 2077 | }, 2078 | { 2079 | "alias": "2.4 GHz", 2080 | "groupBy": [ 2081 | { 2082 | "params": [ 2083 | "$__interval" 2084 | ], 2085 | "type": "time" 2086 | }, 2087 | { 2088 | "params": [ 2089 | "previous" 2090 | ], 2091 | "type": "fill" 2092 | } 2093 | ], 2094 | "measurement": "FritzBox", 2095 | "orderByTime": "ASC", 2096 | "policy": "default", 2097 | "refId": "A", 2098 | "resultFormat": "time_series", 2099 | "select": [ 2100 | [ 2101 | { 2102 | "params": [ 2103 | "ClientsNumber" 2104 | ], 2105 | "type": "field" 2106 | }, 2107 | { 2108 | "params": [], 2109 | "type": "last" 2110 | } 2111 | ] 2112 | ], 2113 | "tags": [ 2114 | { 2115 | "key": "source", 2116 | "operator": "=", 2117 | "value": "wlan_2.4GHz" 2118 | } 2119 | ] 2120 | }, 2121 | { 2122 | "alias": "5 GHz", 2123 | "groupBy": [ 2124 | { 2125 | "params": [ 2126 | "$__interval" 2127 | ], 2128 | "type": "time" 2129 | }, 2130 | { 2131 | "params": [ 2132 | "previous" 2133 | ], 2134 | "type": "fill" 2135 | } 2136 | ], 2137 | "measurement": "FritzBox", 2138 | "orderByTime": "ASC", 2139 | "policy": "default", 2140 | "refId": "B", 2141 | "resultFormat": "time_series", 2142 | "select": [ 2143 | [ 2144 | { 2145 | "params": [ 2146 | "ClientsNumber" 2147 | ], 2148 | "type": "field" 2149 | }, 2150 | { 2151 | "params": [], 2152 | "type": "last" 2153 | } 2154 | ] 2155 | ], 2156 | "tags": [ 2157 | { 2158 | "key": "source", 2159 | "operator": "=", 2160 | "value": "wlan_5GHz" 2161 | } 2162 | ] 2163 | }, 2164 | { 2165 | "alias": "Gast", 2166 | "groupBy": [ 2167 | { 2168 | "params": [ 2169 | "$__interval" 2170 | ], 2171 | "type": "time" 2172 | }, 2173 | { 2174 | "params": [ 2175 | "previous" 2176 | ], 2177 | "type": "fill" 2178 | } 2179 | ], 2180 | "measurement": "FritzBox", 2181 | "orderByTime": "ASC", 2182 | "policy": "default", 2183 | "refId": "C", 2184 | "resultFormat": "time_series", 2185 | "select": [ 2186 | [ 2187 | { 2188 | "params": [ 2189 | "ClientsNumber" 2190 | ], 2191 | "type": "field" 2192 | }, 2193 | { 2194 | "params": [], 2195 | "type": "last" 2196 | } 2197 | ] 2198 | ], 2199 | "tags": [ 2200 | { 2201 | "key": "source", 2202 | "operator": "=", 2203 | "value": "wlan_Guest" 2204 | } 2205 | ] 2206 | } 2207 | ], 2208 | "thresholds": [], 2209 | "timeFrom": null, 2210 | "timeRegions": [], 2211 | "timeShift": null, 2212 | "title": "Network Clients", 2213 | "tooltip": { 2214 | "shared": true, 2215 | "sort": 0, 2216 | "value_type": "individual" 2217 | }, 2218 | "type": "graph", 2219 | "xaxis": { 2220 | "buckets": null, 2221 | "mode": "time", 2222 | "name": null, 2223 | "show": true, 2224 | "values": [] 2225 | }, 2226 | "yaxes": [ 2227 | { 2228 | "format": "short", 2229 | "label": null, 2230 | "logBase": 1, 2231 | "max": null, 2232 | "min": null, 2233 | "show": true 2234 | }, 2235 | { 2236 | "format": "short", 2237 | "label": null, 2238 | "logBase": 1, 2239 | "max": null, 2240 | "min": null, 2241 | "show": true 2242 | } 2243 | ], 2244 | "yaxis": { 2245 | "align": false, 2246 | "alignLevel": null 2247 | } 2248 | }, 2249 | { 2250 | "aliasColors": {}, 2251 | "bars": false, 2252 | "dashLength": 10, 2253 | "dashes": false, 2254 | "datasource": null, 2255 | "fieldConfig": { 2256 | "defaults": { 2257 | "custom": {}, 2258 | "mappings": [], 2259 | "thresholds": { 2260 | "mode": "absolute", 2261 | "steps": [ 2262 | { 2263 | "color": "green", 2264 | "value": null 2265 | }, 2266 | { 2267 | "color": "red", 2268 | "value": 80 2269 | } 2270 | ] 2271 | } 2272 | }, 2273 | "overrides": [] 2274 | }, 2275 | "fill": 1, 2276 | "fillGradient": 0, 2277 | "gridPos": { 2278 | "h": 8, 2279 | "w": 4, 2280 | "x": 20, 2281 | "y": 19 2282 | }, 2283 | "hiddenSeries": false, 2284 | "id": 28, 2285 | "legend": { 2286 | "avg": false, 2287 | "current": false, 2288 | "max": false, 2289 | "min": false, 2290 | "show": true, 2291 | "total": false, 2292 | "values": false 2293 | }, 2294 | "lines": true, 2295 | "linewidth": 1, 2296 | "nullPointMode": "null", 2297 | "options": { 2298 | "dataLinks": [] 2299 | }, 2300 | "percentage": false, 2301 | "pluginVersion": "7.1.1", 2302 | "pointradius": 2, 2303 | "points": false, 2304 | "renderer": "flot", 2305 | "seriesOverrides": [], 2306 | "spaceLength": 10, 2307 | "stack": false, 2308 | "steppedLine": false, 2309 | "targets": [ 2310 | { 2311 | "alias": "Downstream HEC", 2312 | "groupBy": [ 2313 | { 2314 | "params": [ 2315 | "$__interval" 2316 | ], 2317 | "type": "time" 2318 | }, 2319 | { 2320 | "params": [ 2321 | "previous" 2322 | ], 2323 | "type": "fill" 2324 | } 2325 | ], 2326 | "measurement": "FritzBox", 2327 | "orderByTime": "ASC", 2328 | "policy": "default", 2329 | "refId": "A", 2330 | "resultFormat": "time_series", 2331 | "select": [ 2332 | [ 2333 | { 2334 | "params": [ 2335 | "ATUCHECErrors" 2336 | ], 2337 | "type": "field" 2338 | }, 2339 | { 2340 | "params": [], 2341 | "type": "mean" 2342 | }, 2343 | { 2344 | "params": [], 2345 | "type": "non_negative_difference" 2346 | } 2347 | ] 2348 | ], 2349 | "tags": [] 2350 | }, 2351 | { 2352 | "alias": "Downstream CRC", 2353 | "groupBy": [ 2354 | { 2355 | "params": [ 2356 | "$__interval" 2357 | ], 2358 | "type": "time" 2359 | }, 2360 | { 2361 | "params": [ 2362 | "previous" 2363 | ], 2364 | "type": "fill" 2365 | } 2366 | ], 2367 | "measurement": "FritzBox", 2368 | "orderByTime": "ASC", 2369 | "policy": "default", 2370 | "refId": "B", 2371 | "resultFormat": "time_series", 2372 | "select": [ 2373 | [ 2374 | { 2375 | "params": [ 2376 | "ATUCCRCErrors" 2377 | ], 2378 | "type": "field" 2379 | }, 2380 | { 2381 | "params": [], 2382 | "type": "mean" 2383 | }, 2384 | { 2385 | "params": [], 2386 | "type": "non_negative_difference" 2387 | } 2388 | ] 2389 | ], 2390 | "tags": [] 2391 | }, 2392 | { 2393 | "alias": "Downstream FEC", 2394 | "groupBy": [ 2395 | { 2396 | "params": [ 2397 | "$__interval" 2398 | ], 2399 | "type": "time" 2400 | }, 2401 | { 2402 | "params": [ 2403 | "previous" 2404 | ], 2405 | "type": "fill" 2406 | } 2407 | ], 2408 | "measurement": "FritzBox", 2409 | "orderByTime": "ASC", 2410 | "policy": "default", 2411 | "refId": "C", 2412 | "resultFormat": "time_series", 2413 | "select": [ 2414 | [ 2415 | { 2416 | "params": [ 2417 | "ATUCFECErrors" 2418 | ], 2419 | "type": "field" 2420 | }, 2421 | { 2422 | "params": [], 2423 | "type": "mean" 2424 | }, 2425 | { 2426 | "params": [], 2427 | "type": "non_negative_difference" 2428 | } 2429 | ] 2430 | ], 2431 | "tags": [] 2432 | }, 2433 | { 2434 | "alias": "Upstream HEC", 2435 | "groupBy": [ 2436 | { 2437 | "params": [ 2438 | "$__interval" 2439 | ], 2440 | "type": "time" 2441 | }, 2442 | { 2443 | "params": [ 2444 | "previous" 2445 | ], 2446 | "type": "fill" 2447 | } 2448 | ], 2449 | "measurement": "FritzBox", 2450 | "orderByTime": "ASC", 2451 | "policy": "default", 2452 | "refId": "D", 2453 | "resultFormat": "time_series", 2454 | "select": [ 2455 | [ 2456 | { 2457 | "params": [ 2458 | "HECErrors" 2459 | ], 2460 | "type": "field" 2461 | }, 2462 | { 2463 | "params": [], 2464 | "type": "mean" 2465 | }, 2466 | { 2467 | "params": [], 2468 | "type": "non_negative_difference" 2469 | } 2470 | ] 2471 | ], 2472 | "tags": [] 2473 | }, 2474 | { 2475 | "alias": "Upstream CRC", 2476 | "groupBy": [ 2477 | { 2478 | "params": [ 2479 | "$__interval" 2480 | ], 2481 | "type": "time" 2482 | }, 2483 | { 2484 | "params": [ 2485 | "previous" 2486 | ], 2487 | "type": "fill" 2488 | } 2489 | ], 2490 | "measurement": "FritzBox", 2491 | "orderByTime": "ASC", 2492 | "policy": "default", 2493 | "refId": "E", 2494 | "resultFormat": "time_series", 2495 | "select": [ 2496 | [ 2497 | { 2498 | "params": [ 2499 | "CRCErrors" 2500 | ], 2501 | "type": "field" 2502 | }, 2503 | { 2504 | "params": [], 2505 | "type": "mean" 2506 | }, 2507 | { 2508 | "params": [], 2509 | "type": "non_negative_difference" 2510 | } 2511 | ] 2512 | ], 2513 | "tags": [] 2514 | }, 2515 | { 2516 | "alias": "Upstream FEC", 2517 | "groupBy": [ 2518 | { 2519 | "params": [ 2520 | "$__interval" 2521 | ], 2522 | "type": "time" 2523 | }, 2524 | { 2525 | "params": [ 2526 | "previous" 2527 | ], 2528 | "type": "fill" 2529 | } 2530 | ], 2531 | "measurement": "FritzBox", 2532 | "orderByTime": "ASC", 2533 | "policy": "default", 2534 | "refId": "F", 2535 | "resultFormat": "time_series", 2536 | "select": [ 2537 | [ 2538 | { 2539 | "params": [ 2540 | "FECErrors" 2541 | ], 2542 | "type": "field" 2543 | }, 2544 | { 2545 | "params": [], 2546 | "type": "mean" 2547 | }, 2548 | { 2549 | "params": [], 2550 | "type": "non_negative_difference" 2551 | } 2552 | ] 2553 | ], 2554 | "tags": [] 2555 | } 2556 | ], 2557 | "thresholds": [], 2558 | "timeFrom": null, 2559 | "timeRegions": [], 2560 | "timeShift": null, 2561 | "title": "Errors", 2562 | "tooltip": { 2563 | "shared": true, 2564 | "sort": 0, 2565 | "value_type": "individual" 2566 | }, 2567 | "type": "graph", 2568 | "xaxis": { 2569 | "buckets": null, 2570 | "mode": "time", 2571 | "name": null, 2572 | "show": true, 2573 | "values": [] 2574 | }, 2575 | "yaxes": [ 2576 | { 2577 | "format": "short", 2578 | "label": null, 2579 | "logBase": 1, 2580 | "max": null, 2581 | "min": null, 2582 | "show": true 2583 | }, 2584 | { 2585 | "format": "short", 2586 | "label": null, 2587 | "logBase": 1, 2588 | "max": null, 2589 | "min": null, 2590 | "show": true 2591 | } 2592 | ], 2593 | "yaxis": { 2594 | "align": false, 2595 | "alignLevel": null 2596 | } 2597 | }, 2598 | { 2599 | "datasource": null, 2600 | "fieldConfig": { 2601 | "defaults": { 2602 | "custom": {}, 2603 | "mappings": [], 2604 | "thresholds": { 2605 | "mode": "absolute", 2606 | "steps": [ 2607 | { 2608 | "color": "green", 2609 | "value": null 2610 | } 2611 | ] 2612 | }, 2613 | "unit": "decbytes" 2614 | }, 2615 | "overrides": [] 2616 | }, 2617 | "gridPos": { 2618 | "h": 3, 2619 | "w": 4, 2620 | "x": 0, 2621 | "y": 23 2622 | }, 2623 | "id": 48, 2624 | "options": { 2625 | "colorMode": "value", 2626 | "graphMode": "area", 2627 | "justifyMode": "auto", 2628 | "orientation": "auto", 2629 | "reduceOptions": { 2630 | "calcs": [ 2631 | "mean" 2632 | ], 2633 | "fields": "", 2634 | "values": false 2635 | }, 2636 | "textMode": "auto" 2637 | }, 2638 | "pluginVersion": "7.0.6", 2639 | "targets": [ 2640 | { 2641 | "alias": "1 hour", 2642 | "groupBy": [ 2643 | { 2644 | "params": [ 2645 | "1h" 2646 | ], 2647 | "type": "time" 2648 | } 2649 | ], 2650 | "measurement": "FritzBox", 2651 | "orderByTime": "ASC", 2652 | "policy": "default", 2653 | "refId": "C", 2654 | "resultFormat": "time_series", 2655 | "select": [ 2656 | [ 2657 | { 2658 | "params": [ 2659 | "TotalBytesReceved64" 2660 | ], 2661 | "type": "field" 2662 | }, 2663 | { 2664 | "params": [], 2665 | "type": "last" 2666 | }, 2667 | { 2668 | "params": [], 2669 | "type": "non_negative_difference" 2670 | } 2671 | ] 2672 | ], 2673 | "tags": [] 2674 | }, 2675 | { 2676 | "alias": "1 day", 2677 | "groupBy": [ 2678 | { 2679 | "params": [ 2680 | "1d" 2681 | ], 2682 | "type": "time" 2683 | } 2684 | ], 2685 | "measurement": "FritzBox", 2686 | "orderByTime": "ASC", 2687 | "policy": "default", 2688 | "refId": "A", 2689 | "resultFormat": "time_series", 2690 | "select": [ 2691 | [ 2692 | { 2693 | "params": [ 2694 | "TotalBytesReceved64" 2695 | ], 2696 | "type": "field" 2697 | }, 2698 | { 2699 | "params": [], 2700 | "type": "last" 2701 | }, 2702 | { 2703 | "params": [], 2704 | "type": "non_negative_difference" 2705 | } 2706 | ] 2707 | ], 2708 | "tags": [] 2709 | }, 2710 | { 2711 | "alias": "1 week", 2712 | "groupBy": [ 2713 | { 2714 | "params": [ 2715 | "7d" 2716 | ], 2717 | "type": "time" 2718 | } 2719 | ], 2720 | "measurement": "FritzBox", 2721 | "orderByTime": "ASC", 2722 | "policy": "default", 2723 | "refId": "B", 2724 | "resultFormat": "time_series", 2725 | "select": [ 2726 | [ 2727 | { 2728 | "params": [ 2729 | "TotalBytesReceved64" 2730 | ], 2731 | "type": "field" 2732 | }, 2733 | { 2734 | "params": [], 2735 | "type": "last" 2736 | }, 2737 | { 2738 | "params": [], 2739 | "type": "non_negative_difference" 2740 | } 2741 | ] 2742 | ], 2743 | "tags": [] 2744 | } 2745 | ], 2746 | "timeFrom": null, 2747 | "timeShift": null, 2748 | "title": "TotalBytesReceived", 2749 | "type": "stat" 2750 | }, 2751 | { 2752 | "aliasColors": {}, 2753 | "bars": false, 2754 | "dashLength": 10, 2755 | "dashes": false, 2756 | "datasource": null, 2757 | "fieldConfig": { 2758 | "defaults": { 2759 | "custom": {}, 2760 | "unit": "pps" 2761 | }, 2762 | "overrides": [] 2763 | }, 2764 | "fill": 1, 2765 | "fillGradient": 0, 2766 | "gridPos": { 2767 | "h": 6, 2768 | "w": 16, 2769 | "x": 4, 2770 | "y": 23 2771 | }, 2772 | "hiddenSeries": false, 2773 | "id": 22, 2774 | "legend": { 2775 | "alignAsTable": true, 2776 | "avg": true, 2777 | "current": true, 2778 | "max": true, 2779 | "min": true, 2780 | "rightSide": true, 2781 | "show": true, 2782 | "total": false, 2783 | "values": true 2784 | }, 2785 | "lines": true, 2786 | "linewidth": 1, 2787 | "nullPointMode": "null", 2788 | "options": { 2789 | "dataLinks": [] 2790 | }, 2791 | "percentage": false, 2792 | "pluginVersion": "7.1.1", 2793 | "pointradius": 2, 2794 | "points": false, 2795 | "renderer": "flot", 2796 | "seriesOverrides": [], 2797 | "spaceLength": 10, 2798 | "stack": false, 2799 | "steppedLine": false, 2800 | "targets": [ 2801 | { 2802 | "alias": "LAN Upstream", 2803 | "groupBy": [ 2804 | { 2805 | "params": [ 2806 | "$__interval" 2807 | ], 2808 | "type": "time" 2809 | }, 2810 | { 2811 | "params": [ 2812 | "none" 2813 | ], 2814 | "type": "fill" 2815 | } 2816 | ], 2817 | "hide": false, 2818 | "measurement": "FritzBox", 2819 | "orderByTime": "ASC", 2820 | "policy": "default", 2821 | "refId": "A", 2822 | "resultFormat": "time_series", 2823 | "select": [ 2824 | [ 2825 | { 2826 | "params": [ 2827 | "PacketsReceived" 2828 | ], 2829 | "type": "field" 2830 | }, 2831 | { 2832 | "params": [], 2833 | "type": "mean" 2834 | }, 2835 | { 2836 | "params": [], 2837 | "type": "non_negative_difference" 2838 | } 2839 | ] 2840 | ], 2841 | "tags": [ 2842 | { 2843 | "key": "source", 2844 | "operator": "=", 2845 | "value": "lan" 2846 | } 2847 | ] 2848 | }, 2849 | { 2850 | "alias": "LAN Downstream", 2851 | "groupBy": [ 2852 | { 2853 | "params": [ 2854 | "$__interval" 2855 | ], 2856 | "type": "time" 2857 | }, 2858 | { 2859 | "params": [ 2860 | "none" 2861 | ], 2862 | "type": "fill" 2863 | } 2864 | ], 2865 | "measurement": "FritzBox", 2866 | "orderByTime": "ASC", 2867 | "policy": "default", 2868 | "refId": "B", 2869 | "resultFormat": "time_series", 2870 | "select": [ 2871 | [ 2872 | { 2873 | "params": [ 2874 | "PacketsSent" 2875 | ], 2876 | "type": "field" 2877 | }, 2878 | { 2879 | "params": [], 2880 | "type": "mean" 2881 | }, 2882 | { 2883 | "params": [], 2884 | "type": "non_negative_difference" 2885 | } 2886 | ] 2887 | ], 2888 | "tags": [ 2889 | { 2890 | "key": "source", 2891 | "operator": "=", 2892 | "value": "lan" 2893 | } 2894 | ] 2895 | }, 2896 | { 2897 | "alias": "WLAN 2.4 GHz Upstream", 2898 | "groupBy": [ 2899 | { 2900 | "params": [ 2901 | "$__interval" 2902 | ], 2903 | "type": "time" 2904 | }, 2905 | { 2906 | "params": [ 2907 | "none" 2908 | ], 2909 | "type": "fill" 2910 | } 2911 | ], 2912 | "measurement": "FritzBox", 2913 | "orderByTime": "ASC", 2914 | "policy": "default", 2915 | "refId": "C", 2916 | "resultFormat": "time_series", 2917 | "select": [ 2918 | [ 2919 | { 2920 | "params": [ 2921 | "PacketsReceived" 2922 | ], 2923 | "type": "field" 2924 | }, 2925 | { 2926 | "params": [], 2927 | "type": "mean" 2928 | }, 2929 | { 2930 | "params": [], 2931 | "type": "non_negative_difference" 2932 | } 2933 | ] 2934 | ], 2935 | "tags": [ 2936 | { 2937 | "key": "source", 2938 | "operator": "=", 2939 | "value": "wlan_2.4GHz" 2940 | } 2941 | ] 2942 | }, 2943 | { 2944 | "alias": "WLAN 2.4 GHz Downstream", 2945 | "groupBy": [ 2946 | { 2947 | "params": [ 2948 | "$__interval" 2949 | ], 2950 | "type": "time" 2951 | }, 2952 | { 2953 | "params": [ 2954 | "none" 2955 | ], 2956 | "type": "fill" 2957 | } 2958 | ], 2959 | "measurement": "FritzBox", 2960 | "orderByTime": "ASC", 2961 | "policy": "default", 2962 | "refId": "D", 2963 | "resultFormat": "time_series", 2964 | "select": [ 2965 | [ 2966 | { 2967 | "params": [ 2968 | "PacketsSent" 2969 | ], 2970 | "type": "field" 2971 | }, 2972 | { 2973 | "params": [], 2974 | "type": "mean" 2975 | }, 2976 | { 2977 | "params": [], 2978 | "type": "non_negative_difference" 2979 | } 2980 | ] 2981 | ], 2982 | "tags": [ 2983 | { 2984 | "key": "source", 2985 | "operator": "=", 2986 | "value": "wlan_2.4GHz" 2987 | } 2988 | ] 2989 | }, 2990 | { 2991 | "alias": "WLAN 5 GHz Upstream", 2992 | "groupBy": [ 2993 | { 2994 | "params": [ 2995 | "$__interval" 2996 | ], 2997 | "type": "time" 2998 | }, 2999 | { 3000 | "params": [ 3001 | "none" 3002 | ], 3003 | "type": "fill" 3004 | } 3005 | ], 3006 | "measurement": "FritzBox", 3007 | "orderByTime": "ASC", 3008 | "policy": "default", 3009 | "refId": "E", 3010 | "resultFormat": "time_series", 3011 | "select": [ 3012 | [ 3013 | { 3014 | "params": [ 3015 | "PacketsReceived" 3016 | ], 3017 | "type": "field" 3018 | }, 3019 | { 3020 | "params": [], 3021 | "type": "mean" 3022 | }, 3023 | { 3024 | "params": [], 3025 | "type": "non_negative_difference" 3026 | } 3027 | ] 3028 | ], 3029 | "tags": [ 3030 | { 3031 | "key": "source", 3032 | "operator": "=", 3033 | "value": "wlan_5GHz" 3034 | } 3035 | ] 3036 | }, 3037 | { 3038 | "alias": "WLAN 5 GHz Upstream", 3039 | "groupBy": [ 3040 | { 3041 | "params": [ 3042 | "$__interval" 3043 | ], 3044 | "type": "time" 3045 | }, 3046 | { 3047 | "params": [ 3048 | "none" 3049 | ], 3050 | "type": "fill" 3051 | } 3052 | ], 3053 | "measurement": "FritzBox", 3054 | "orderByTime": "ASC", 3055 | "policy": "default", 3056 | "refId": "F", 3057 | "resultFormat": "time_series", 3058 | "select": [ 3059 | [ 3060 | { 3061 | "params": [ 3062 | "PacketsReceived" 3063 | ], 3064 | "type": "field" 3065 | }, 3066 | { 3067 | "params": [], 3068 | "type": "mean" 3069 | }, 3070 | { 3071 | "params": [], 3072 | "type": "non_negative_difference" 3073 | } 3074 | ] 3075 | ], 3076 | "tags": [ 3077 | { 3078 | "key": "source", 3079 | "operator": "=", 3080 | "value": "wlan_5GHz" 3081 | } 3082 | ] 3083 | } 3084 | ], 3085 | "thresholds": [], 3086 | "timeFrom": null, 3087 | "timeRegions": [], 3088 | "timeShift": null, 3089 | "title": "Local Traffic", 3090 | "tooltip": { 3091 | "shared": true, 3092 | "sort": 0, 3093 | "value_type": "individual" 3094 | }, 3095 | "type": "graph", 3096 | "xaxis": { 3097 | "buckets": null, 3098 | "mode": "time", 3099 | "name": null, 3100 | "show": true, 3101 | "values": [] 3102 | }, 3103 | "yaxes": [ 3104 | { 3105 | "format": "pps", 3106 | "label": null, 3107 | "logBase": 1, 3108 | "max": null, 3109 | "min": null, 3110 | "show": true 3111 | }, 3112 | { 3113 | "format": "short", 3114 | "label": null, 3115 | "logBase": 1, 3116 | "max": null, 3117 | "min": null, 3118 | "show": true 3119 | } 3120 | ], 3121 | "yaxis": { 3122 | "align": false, 3123 | "alignLevel": null 3124 | } 3125 | }, 3126 | { 3127 | "datasource": null, 3128 | "fieldConfig": { 3129 | "defaults": { 3130 | "custom": {}, 3131 | "mappings": [], 3132 | "thresholds": { 3133 | "mode": "absolute", 3134 | "steps": [ 3135 | { 3136 | "color": "green", 3137 | "value": null 3138 | } 3139 | ] 3140 | }, 3141 | "unit": "decbytes" 3142 | }, 3143 | "overrides": [] 3144 | }, 3145 | "gridPos": { 3146 | "h": 3, 3147 | "w": 4, 3148 | "x": 0, 3149 | "y": 26 3150 | }, 3151 | "id": 50, 3152 | "options": { 3153 | "colorMode": "value", 3154 | "graphMode": "area", 3155 | "justifyMode": "auto", 3156 | "orientation": "auto", 3157 | "reduceOptions": { 3158 | "calcs": [ 3159 | "mean" 3160 | ], 3161 | "fields": "", 3162 | "values": false 3163 | }, 3164 | "textMode": "auto" 3165 | }, 3166 | "pluginVersion": "7.0.6", 3167 | "targets": [ 3168 | { 3169 | "alias": "1 hour", 3170 | "groupBy": [ 3171 | { 3172 | "params": [ 3173 | "1h" 3174 | ], 3175 | "type": "time" 3176 | } 3177 | ], 3178 | "measurement": "FritzBox", 3179 | "orderByTime": "ASC", 3180 | "policy": "default", 3181 | "refId": "C", 3182 | "resultFormat": "time_series", 3183 | "select": [ 3184 | [ 3185 | { 3186 | "params": [ 3187 | "TotalBytesSent64" 3188 | ], 3189 | "type": "field" 3190 | }, 3191 | { 3192 | "params": [], 3193 | "type": "last" 3194 | }, 3195 | { 3196 | "params": [], 3197 | "type": "non_negative_difference" 3198 | } 3199 | ] 3200 | ], 3201 | "tags": [] 3202 | }, 3203 | { 3204 | "alias": "1 day", 3205 | "groupBy": [ 3206 | { 3207 | "params": [ 3208 | "1d" 3209 | ], 3210 | "type": "time" 3211 | } 3212 | ], 3213 | "measurement": "FritzBox", 3214 | "orderByTime": "ASC", 3215 | "policy": "default", 3216 | "refId": "A", 3217 | "resultFormat": "time_series", 3218 | "select": [ 3219 | [ 3220 | { 3221 | "params": [ 3222 | "TotalBytesSent64" 3223 | ], 3224 | "type": "field" 3225 | }, 3226 | { 3227 | "params": [], 3228 | "type": "last" 3229 | }, 3230 | { 3231 | "params": [], 3232 | "type": "non_negative_difference" 3233 | } 3234 | ] 3235 | ], 3236 | "tags": [] 3237 | }, 3238 | { 3239 | "alias": "1 week", 3240 | "groupBy": [ 3241 | { 3242 | "params": [ 3243 | "7d" 3244 | ], 3245 | "type": "time" 3246 | } 3247 | ], 3248 | "measurement": "FritzBox", 3249 | "orderByTime": "ASC", 3250 | "policy": "default", 3251 | "refId": "B", 3252 | "resultFormat": "time_series", 3253 | "select": [ 3254 | [ 3255 | { 3256 | "params": [ 3257 | "TotalBytesSent64" 3258 | ], 3259 | "type": "field" 3260 | }, 3261 | { 3262 | "params": [], 3263 | "type": "last" 3264 | }, 3265 | { 3266 | "params": [], 3267 | "type": "non_negative_difference" 3268 | } 3269 | ] 3270 | ], 3271 | "tags": [] 3272 | } 3273 | ], 3274 | "timeFrom": null, 3275 | "timeShift": null, 3276 | "title": "TotalBytesSent", 3277 | "type": "stat" 3278 | }, 3279 | { 3280 | "datasource": null, 3281 | "fieldConfig": { 3282 | "defaults": { 3283 | "custom": {}, 3284 | "mappings": [], 3285 | "thresholds": { 3286 | "mode": "absolute", 3287 | "steps": [ 3288 | { 3289 | "color": "green", 3290 | "value": null 3291 | }, 3292 | { 3293 | "color": "red", 3294 | "value": 80 3295 | } 3296 | ] 3297 | } 3298 | }, 3299 | "overrides": [] 3300 | }, 3301 | "gridPos": { 3302 | "h": 2, 3303 | "w": 4, 3304 | "x": 20, 3305 | "y": 27 3306 | }, 3307 | "id": 36, 3308 | "options": { 3309 | "colorMode": "value", 3310 | "graphMode": "none", 3311 | "justifyMode": "auto", 3312 | "orientation": "auto", 3313 | "reduceOptions": { 3314 | "calcs": [ 3315 | "lastNotNull" 3316 | ], 3317 | "fields": "", 3318 | "values": false 3319 | }, 3320 | "textMode": "auto" 3321 | }, 3322 | "pluginVersion": "7.0.6", 3323 | "targets": [ 3324 | { 3325 | "groupBy": [], 3326 | "measurement": "FritzBox", 3327 | "orderByTime": "ASC", 3328 | "policy": "default", 3329 | "refId": "A", 3330 | "resultFormat": "time_series", 3331 | "select": [ 3332 | [ 3333 | { 3334 | "params": [ 3335 | "LastError" 3336 | ], 3337 | "type": "field" 3338 | } 3339 | ] 3340 | ], 3341 | "tags": [] 3342 | } 3343 | ], 3344 | "timeFrom": null, 3345 | "timeShift": null, 3346 | "title": "", 3347 | "type": "stat" 3348 | } 3349 | ], 3350 | "refresh": "10s", 3351 | "schemaVersion": 25, 3352 | "style": "dark", 3353 | "tags": [], 3354 | "templating": { 3355 | "list": [] 3356 | }, 3357 | "time": { 3358 | "from": "now-6h", 3359 | "to": "now" 3360 | }, 3361 | "timepicker": {}, 3362 | "timezone": "", 3363 | "title": "FritzBoxDashboard", 3364 | "uid": "INoNQciRk", 3365 | "version": 21 3366 | } 3367 | --------------------------------------------------------------------------------