Introduction: Fritzmeter

About: Software engineer since a couple of years :-) Since the early days of the Arduino and the Raspberry Pi hocked to the diy section. Now feeling the spirit to share my ideas.

Did you ever wanted to know what the current usage of your internet connection is?

I was interested in checking whether the internet service or my internet connection was the bottleneck. After a couple of days, I now know that some services I use like the PlayStation network or the Nintendo Network are not always using the full bandwidth.

Now I am always satisfied seeing the usage off my network connection fully used when I am downloading some apps or files :-)

Hopefully this will satisfy you the same.


Important notice

This application only works with routers using the TR064 protocol. Most of the AVM Fr!tzBoxes do. Other routers may not provide this service. They may only support the SNMP protocol.

Keep track of the changes on the GitHub repo. Maybe this will be added in the future.

Inspired through this project: https://github.com/reischle/fritzmeter

TLDR

Get the Python application from GitHub: https://github.com/iEduard/FritzMeter_RaspberryPi

Supplies

Here is my list of the Hardware

  • Raspberry Pi (Zero with header)
  • Some jumper wires
  • An old IKEA wooden flowerpot
  • Two analog gauges 0-5V (https://www.pollin.de/messtechnik/einbauinstrumente-zaehler/analoge-einbauinstrumente/)
  • Two digital analog converters: https://learn.adafruit.com/mcp4725-12-bit-dac-tutorial
  • Micro USB power supply (From an old phone. Enough energy for the Raspberry Pi Zero)


But you can use any Raspberry Pi you like. There is not much to do, so u can also use an old Raspberry Pi 1. If you are ordering new analog gauges, you can also consider buying 3.3V DC gauges. In This case, just set the Voltage of the Digital to analog converters to the 3.3V of the Raspberry Pi.

Step 1: Set Up the FritzBox

By default, the TR064 Protocol is active. But check the settings will do no harm. So log in to your Fritzbox and Enable the Advanced view.


After that, go to: "Home Network / Network / Network Settings" and check the option "Allow access for applications"

Step 2: Put the Electric Together

Wire up the Raspberry Pi with the digital analog converters and the gauges. You can use a breadboard with some breadboard jumper wires.

Step 3: Create the Gauge Background

In order to not constantly converting the gauges labels from volt to Mpbs we will create a background with the right labels.

In the GitHub Repository, you will find the CreateGaugesBackground.py file. (GitHub Link) Here you can set the Max Values of your Network connection for the up and download. After running the python script, you will get two .svg files.

In order to use the python code, you need to install some dependencies. The code is using cairo in order to draw the svg files.


Prepare

To install pycairo we also need the dependencies of the C Headers. Here is the explanation, depending on which OS the script should run. Link

Add the Python library with

$ pip install pycairo


Set up the gauge parameters

On top of the Python file, you can adjust the background to fit your requests

MAX_DOWNLOAD_SPEED = 200        #Set the max download speed here
MAX_UPLOAD_SPEED = 30           #Set the max upload speed here

BACKGROUND_SIZE_X = 650         #Fixed background settings. Do not change these.
BACKGROUND_SIZE_Y = 400         #Fixed background settings. Do not change these.


#Define the style of the gauges  
FONT_LABEL = "Helvetica"            #Font of the labels
FONT_LABEL_SIZE = 40                #Font size of the labels
FONT_DESCRIPTION = "Helvetica"      #Font of the description
FONT_DESCRIPTION_SIZE = 48          #Font size of the description


UPLOAD_AXIS_DEVISION = 6            #Divisions of the upload gauges labels
DOWNLOAD_AXIS_DEVISION = 4          #Divisions of the upload gauges labels


Run It

Run the script with

python3 CreateGaugesBackground.py


The output will show the file path of the two generated .svg files.

Upload File saved here:/Users/esc/Git/FritzMeter_RaspberryPi/Hardware/upload.svg
Download File saved here:/Users/esc/Git/FritzMeter_RaspberryPi/Hardware/download.svg
Done


Print it

Import those two files to your preferred text editor (Word, Pages, OpenOffice Writer) and set the width of the two backgrounds matching to your gauges.

Print them and put them on your gauges.

Mount it

Most of the gauges can be opened by two screws. Afterwords, there are another two screws holding the measurement equipment and the background. Open these two as well and glue the cut-outs on the metal plates.

Step 4: Set Up the Raspberry Pi

Get the current Raspberry Pi image

Download from https:\\raspberrypi.org


Create the image with the Raspberry Pi imager

Press the shortcut SHIFT + CTRL + X to get the option's menu of the application.

  • Set up your Wi-Fi
  • Turn on ssh and SPI


Update the Raspberry Pi


$ sudo apt-get update 


$ sudo apt-get upgrade


Install the requested dependencies


$ pip install fritzconnection adafruit-circuitpython-mcp4725 netifaces


Get the repository

Clone the repository in the home directory.

$ cd
$ git clone https://github.com/iEduard/FritzMeter_RaspberryPi.git


The Service

In order to start the python application with every start of the Raspberry Pi we will create a service and start it.

Copy the service from the Repository to the system path

$ cd FritzMeter_RaspberryPi/Software
$ sudo cp Fritzmeter.service /lib/systemd/system/fritzmeter.service

Change the service rights

$ sudo chmod 644 /lib/systemd/system/fritzmeter.service

Restart the service daemon and start the created service.

$ sudo systemctl daemon-reload
$ sudo systemctl start fritzmeter.service

Set the service to start with the boot of the Raspberry Pi

$ sudo systemctl enable fritzmeter.service


And done 😃...