März 22, 2025

fritz.box Widget für verbundene Geräte

Leider bietet AVM nicht selbst ein grafisches Widget an, welches außerhalb der Benutzeroberfläche der fritz!box anzeigt, welche Geräte aktuell mit der fritz!box verbunden sind, deswegen haben wir selbst ein solches Widget mit Python programmiert. So braucht sich niemand ständig über den Browser in die Router-Verwaltung einzuloggen und sieht sofort, welche Geräte aktuell angemeldet sind.

from fritzconnection import FritzConnection
from fritzconnection.lib.fritzhosts import FritzHosts
import tkinter as tk
from tkinter import ttk
import threading
import time
# Fritzbox Zugangsdaten (anpassen!)
FRITZ_IP = 'fritz.box' (am besten die IP zum Router)
FRITZ_USERNAME = 'dein_benutzername' # leer lassen, wenn nicht gesetzt
FRITZ_PASSWORD = 'dein_passwort'

class FritzboxGUI:
def __init__(self, root):
self.root = root
self.root.title("Verbundene Geräte - Fritzbox")
self.root.geometry("600x400")
self.root.configure(bg="#f0f0f0")

# Tabelle mit Geräten erstellen
self.tree = ttk.Treeview(self.root, columns=("Name", "IP", "MAC"), show="headings")
self.tree.heading("Name", text="Gerätename")
self.tree.heading("IP", text="IP-Adresse")
self.tree.heading("MAC", text="MAC-Adresse")
self.tree.column("Name", width=200)
self.tree.column("IP", width=150)
self.tree.column("MAC", width=200)
self.tree.pack(fill="both", expand=True, padx=10, pady=10)

# Statuszeile unten
self.status = tk.Label(self.root, text="Verbinde mit Fritzbox...", bg="#f0f0f0")
self.status.pack(side="bottom", pady=5)

# Hintergrundaktualisierung starten
self.running = True
self.thread = threading.Thread(target=self.update_devices, daemon=True)
self.thread.start()

# Fenster schließen behandeln
self.root.protocol("WM_DELETE_WINDOW", self.on_closing)

def get_connected_devices(self):
try:
conn = FritzConnection(address=FRITZ_IP, user=FRITZ_USERNAME, password=FRITZ_PASSWORD)
hosts = FritzHosts(conn)
devices = hosts.get_hosts_info()
return devices
except Exception as e:
self.status.config(text=f"Fehler: {str(e)}")
return []

def update_devices(self):
while self.running:
devices = self.get_connected_devices()

# Tabelle vorher leeren
for item in self.tree.get_children():
self.tree.delete(item)

# Aktive Geräte hinzufügen
for device in devices:
if device['status']: # nur verbundene Geräte anzeigen
name = device['name'] or "Unbekannt"
ip = device['ip'] or "N/A"
mac = device['mac'] or "N/A"
self.tree.insert("", "end", values=(name, ip, mac))

# Status aktualisieren
self.status.config(text="Letzte Aktualisierung: " + time.strftime("%H:%M:%S"))

time.sleep(60) # alle 60 Sekunden aktualisieren

def on_closing(self):
self.running = False
self.root.destroy()

def main():
root = tk.Tk()
app = FritzboxGUI(root)
root.mainloop()

if __name__ == "__main__":
main()

Dieses Python-Skript speichern wir ab als  fritzbox_gui.pyw

Die Endung .pyw stellt sicher, dass die Konsole beim späteren Ausführen der kombilierte Exe-Datei nicht geladen wird. Wir wollen ja ein sauberes Widget, ohne ein Bash-Fenster zu sehen.

Wir kombilieren das Skript mit folgenden Befehl am Terminal:

pyinstaller --onefile --windowed fritzbox_gui.pyw

Damit das alles funktioniert, muss natürlich Python auf dem Windows-PC installiert sein. Außerdem benötigen wir das Modul Fritzconnection. Dieses installieren wir, bevor das Skript kombiliert wird mit:

pip install fritzconnection

Wir verwenden für die grafische Oberfläche das Standdartmodul von Python GUI tkinter. Wenn Sie alles richtig gemacht haben, können Sie nun ihr sehr hilfreiches Widget direkt auf dem Windows-PC ausführen und sehen in Echtzeit, oder mit wenig Verzögerung, welche Geräte an der fritz!box angemeldet sind.

Nachtrag:

Wir haben das Widget nun noch einmal mit neuen Funktionen überarbeitet und stellen Ihnen die fertige direkt ausführbare Datei hier kostenlos zur Verfügung.

Entpacken Sie das Zip-Archiv. Wenn Sie die Datei fritzbox_gui.exe das erste mal ausführen, dann klicken Sie oben rechts den Button „Optionen“. Hier tragen Sie die Zugangsdaten zu Ihrer fritz!box ein, meistens nur ein Passwort oder den WLAN-Key. Darauf hin wird eine Datei erzeugt mit dem Dateinamen fritzbox_config.json. In dieser Datei werden die Zugangsdaten gespeichert. Beenden Sie das Programm und öffnen erneut die fritzbox_gui.exe. Nach wenigen Augenblicken können Sie alle verbundenen Geräte sehen. In Zukunft wird sich das Widget automatisch mit der fritz!box verbinden wenn Sie es starten, und alle verbundenen Geräte zuverlässig auflisten.

Beachten Sie, dass dieses Widget nur mit Fritzboxen funktioniert und keine anderen Router unterstützt! Falls ein Virenscanner Alarm schlägt, dann ist das eine Falsch-Positive Meldung. Sie können die Datei gerne zu einer forensischen Untersuchung einreichen.

Hier können Sie das Widget downloaden.

Published On: März 22nd, 2025Categories: Allgemein, IT-Sicherheit, Wolfram Consult BlogTags: , Views: 84