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.