Skip to content

Repository files navigation

LeitungsWächter — der Internetstörung auf die Spur kommen

⚠️ Dieses interne Repository ist abgeschlossen. Seit der Veröffentlichung auf GitHub (2026-07-31) findet hier keine neue fachliche Weiterentwicklung mehr statt. Aktueller Ort für Code, Issues und Pull Requests: https://github.com/Josbrig/FritzBoxAnalyse. Dieses Repo bleibt unverändert als vollständiges Archiv der Redmine/GitLab- Projektorganisation bestehen (222 Tickets, alle Branches, alle Merge Requests) — Details siehe Docs/UEBERGABE_Interne-zu-GitHub.md.

Aussetzer beim Online-Spielen, Videocall oder Streaming — und niemand weiß, woran es lag? Dieses Programm beobachtet Ihre Internetverbindung durchgehend im Hintergrund, hält fest, wann etwas auffällig war, und grenzt im Nachhinein ein, woran es gelegen haben könnte: an der Leitung, am Provider-Netz, am eigenen Heimnetz — oder an nichts davon, dann liegt es außerhalb (etwa an der Gegenstelle).

Auf Knopfdruck entsteht daraus ein verständlicher HTML-Bericht. War die eigene Leitung im fraglichen Zeitraum unauffällig, lässt sich das damit zeigen: „Bei mir war zu dem Zeitpunkt nichts auffällig — sieh bei deinem System nach."

  • ✅ Ampel statt Fachchinesisch — gedacht für alle, die ihr Internet nutzen, ohne Netzwerktechniker zu sein
  • ✅ Verändert nichts — reiner Lesezugriff auf die FritzBox, keine Einstellung wird angefasst
  • ✅ Bleibt bei Ihnen — keine Cloud, kein Konto, keine Telemetrie; alle Daten nur auf Ihrem Rechner
  • ✅ Nachvollziehbar — Vorfälle werden mit tatsächlich aufgezeichneten Leitungsereignissen (Reconnect, Resync, Fehler-Bursts, Ping-Ausfälle) zeitlich in Beziehung gesetzt
  • ℹ️ Eingrenzung, kein Beweis — vier grobe Kategorien statt exakter Ursachenbestimmung; das Programm sieht nur, was seine Messquellen hergeben (mehr dazu)

Voraussetzung: ein Windows-Rechner hinter einer AVM FritzBox. Das Programm läuft unauffällig im Hintergrund; ein Knopf genügt, um eine gerade erlebte Störung zu markieren.

KI — Mit Künstlicher Intelligenz erstellt: Code, Tests, Dokumentation und Projektorganisation stammen von einem KI-Agenten (Claude Code, Anthropic). Kennzeichnung im Sinne der EU-Transparenzpflicht (Verordnung (EU) 2024/1689, Artikel 50). Inhaltliche Verantwortung: Jörg Simbrig. → Was das für dieses Projekt bedeutet


Loslegen

Beim ersten Start fragt das Programm nach FritzBox-Benutzer und -Passwort, prüft beides live gegen die Box und merkt es sich erst bei Erfolg — danach meldet es sich ohne Rückfrage an. Welche Rechte der FritzBox-Benutzer braucht (und wie Sie einen eigenen Minimalbenutzer nur fürs Tool anlegen): Docs/ANLEITUNG_FritzBox_Benutzer_Einrichten.md

„Kann ich das gefahrlos laufen lassen? Gefährdet das meine FritzBox?" — diese berechtigte Frage beantwortet ausführlich und nachprüfbar: Docs/SICHERHEIT_Was_das_Tool_mit_Ihrem_Netz_macht.md (was das Tool tut, was nicht, was es könnte aber nie tut, und wie Sie das selbst überprüfen und einschränken können).

Ausführliche fachliche Beschreibung: Docs/KONZEPT.md Abschnitt 1–2.


Für Entwickler / Agenten

Überwacht die Internetverbindung hinter einer FritzBox (TR-064, rein lesend) durchgehend, erkennt Verbindungsprobleme zeitnah und ordnet sie im Nachhinein zeitlich ein. Beobachtete Vorfälle werden mit Leitungsereignissen (Reconnect, Resync, Fehler-Bursts, Ping-Ausfälle) korreliert. Ergebnis ist ein selbsterklärender HTML-Bericht, der jeden Vorfall einer von vier groben Kategorien zuordnet (korrelation.py): Leitung/Provider (Abriss), Leitung grenzwertig (Übertragungsfehler ohne Abriss), Provider-Netz (FritzBox erreichbar, Internet dahinter nicht), Heimnetz (PC erreicht die FritzBox nicht — WLAN oder Kabel, das Programm unterscheidet das nicht). War im fraglichen Zeitraum nichts davon auffällig, ist das selbst die Aussage: die Ursache lag dann außerhalb der eigenen Leitung.

Grenzen der Aussage (bewusst hier und nicht nur im Disclaimer): Die Zuordnung ist eine Eingrenzung auf Basis zeitlicher Korrelation, kein Ursachenbeweis. Sie kann nur erfassen, was die Messquellen hergeben — bei Programm-Downtime oder unerreichbarer FritzBox entstehen Lücken (im Bericht als solche ausgewiesen). Einzelne Teilbereiche werden zwar erhoben (z. B. WLAN-Kanalwechsel, Signalstärke), fließen aber nicht als eigenständige Verdikt-Ebene ein.

Verbindliche Spezifikation: Docs/KONZEPT.md (Abschnitt 7 für die vollständige Architektur-/Modulübersicht) Glossar/Terminologie: Docs/GLOSSAR.md (Fach- und Projektbegriffe alphabetisch erklärt) Projektorganisation (Redmine/GitLab/Agent): Docs/KONZEPT_Projektorganisation_Redmine_GitLab_KI-Agent.md Änderungshistorie/Meilensteine: Docs/CHANGELOG.md Gebündeltes Governance-Regelwerk: Docs/Regelwerk/README.md Autor:innen: AUTHORS.md

Hinweis zur Anonymisierung dieses Repositories

Dieses Repository ist eine rückwirkend anonymisierte Fassung der ursprünglichen, internen Entwicklungshistorie. Vor der Veröffentlichung wurden interne Hostnamen, private IP-Adressen, Benutzernamen und Zugangsdaten-Fundorte über alle Commits und Branches hinweg durch generische Platzhalter ersetzt (z. B. gitserver.example.invalid statt des tatsächlichen internen Servernamens, nutzer-agent statt eines echten Benutzernamens). Details und die vollständige Liste der Ersetzungen stehen in Docs/HINWEIS_Anonymisierung.md.

Das erklärt gelegentlich seltsam wirkende Stellen — etwa Domainnamen, die auf .invalid enden (das ist nach RFC 2606 eine Endung, die nie an eine echte Domain vergeben werden kann, also absichtlich und erkennbar unecht ist), oder Bezeichner, die leicht anders klingen als man es von einem gewachsenen Projekt erwarten würde. Das ist keine Unsauberkeit im Code, sondern Absicht: Diese Fassung ist bewusst so bereinigt, dass sie ohne Rückschlüsse auf die private Infrastruktur des Autors gelesen werden kann.

Entwicklung

.\build\setup_dev.ps1

Richtet .venv ein, installiert das Projekt inklusive Entwicklungsabhängigkeiten und prüft das Ergebnis (Tests, ruff, mypy). Für einen echten Frisch-Test (z. B. nach Änderungen an pyproject.toml): .\build\setup_dev.ps1 -Neu.

Die einzelnen Schritte von Hand, falls gewünscht:

python -m venv .venv
.venv\Scripts\python -m pip install -e .[dev]
.venv\Scripts\python -m pytest
.venv\Scripts\python -m ruff check src tests
.venv\Scripts\python -m mypy

GUI-Version (primäre, für den Endnutzer vorgesehene Programmform — Einrichtungsassistent bei unbekannten Zugangsdaten, sonst dauerhaftes Hauptfenster mit optionalem Tray-Icon, siehe Docs/KONZEPT.md §6.1/§6.2):

.venv\Scripts\python -m fritzboxanalyse.gui

Konsolenversion (__main__.py, ursprünglicher Meilenstein-1-Einstieg ohne grafische Oberfläche — weiterhin lauffähig, aber nicht die für Endnutzer vorgesehene Form):

.venv\Scripts\python -m fritzboxanalyse

Alle CLI-Optionen der Konsolenversion:

Option Wirkung
--version Programmversion ausgeben und beenden
--zugangsdaten-aendern Benutzer/Passwort neu abfragen, live gegen die FritzBox prüfen, gespeicherte Werte ersetzen

Alle Messdaten bleiben lokal (SQLite in %LOCALAPPDATA%\FritzboxAnalyse\). Das FritzBox-Passwort liegt ausschließlich im Windows Credential Manager (Dienst fritzboxanalyse), niemals in Dateien oder Logs.

EXE-Build

Nuitka ist nicht Teil der Standard-Entwicklungsumgebung (setup_dev.ps1 installiert es bewusst nicht mit) und muss vor dem ersten Build einmalig zusätzlich installiert werden:

.venv\Scripts\python -m pip install -e .[build]

Reproduzierbarer Nuitka-Build (Einstiegspunkt gui.py, nicht __main__.py):

.\build\nuitka_build.ps1

Details zum Build-Vorgang selbst (warum Nuitka statt PyInstaller, welche Nuitka-Optionen und warum): Docs/Bericht_2026-07-23_EXE-Build-Erklaerung.md. Cross-Compilation ist nicht möglich — der Build muss auf einem Windows-System mit installiertem MSVC laufen.

Troubleshooting

  • Kein Tray-Icon sichtbar: auf manchen Windows-Systemen registriert sich das pystray-Icon zwar bei Windows, wird aber trotzdem nicht angezeigt (real reproduziert, kein Bug dieses Projekts — Details: Docs/Bericht_2026-07-20_Tray-Icon-Systembefund.md). Kein Problem in der Praxis: seit dem dauerhaften Hauptfenster (Ticket #47) ist das Tray-Icon nur noch eine optionale Zusatzanzeige, die primäre Oberfläche ist das Hauptfenster.
  • SmartScreen-Warnung beim ersten EXE-Start: möglich, da die EXE unsigniert ist (kein Code-Signing-Zertifikat). Im dokumentierten Smoke-Test trat sie nicht auf, ist aber je nach System/Windows-Version nicht ausgeschlossen — „Weitere Informationen" → „Trotzdem ausführen".
  • Programm startet doppelt / scheint nichts zu tun: Einzelinstanz- Schutz (einzelinstanz.py) verhindert einen versehentlichen Doppelstart automatisch; ein zweiter Start beendet sich sofort wieder, ohne die laufende Instanz zu stören.
  • Zugangsdaten falsch/FritzBox-Benutzer ohne ausreichende Rechte: siehe Docs/ANLEITUNG_FritzBox_Benutzer_Einrichten.md für die benötigten Mindestrechte und wie man einen eigenen Minimalbenutzer anlegt.

KI-generiert — was das hier bedeutet

Dieses gesamte Projekt — Code, Tests, Dokumentation und die komplette Projektorganisation (Tickets, Merge Requests, Branches, Governance-Regelwerk) — wurde von einem KI-Agenten (Claude Code, Anthropic) erstellt. Das ist hier kein Nebenaspekt, sondern ein ausdrücklicher Zweck des Projekts: Es demonstriert, wie ein KI-Agent ein Softwareprojekt eigenständig mit Redmine/GitLab führen kann — einschließlich der Fehlschläge, Korrekturen und der Weiterentwicklung des eigenen Arbeitsprozesses. Siehe Docs/KONZEPT_Projektorganisation_Wiki-Nutzung.md Abschnitt 7a und AUTHORS.md.

Kennzeichnung im Sinne der EU-Transparenzpflicht (Verordnung (EU) 2024/1689, Artikel 50). Inhaltliche Verantwortung: Jörg Simbrig.

Lizenz

Apache License 2.0 — siehe LICENSE. Drittanbieter-Komponenten und deren Lizenzen: NOTICE.

Haftungsausschluss und rechtliche Hinweise

Keine Gewährleistung, keine Haftung. Diese Software wird „wie besehen" (as is) bereitgestellt, ohne jede ausdrückliche oder stillschweigende Gewährleistung — insbesondere ohne Zusicherung der Marktgängigkeit, der Eignung für einen bestimmten Zweck oder der Fehlerfreiheit. Die Nutzung erfolgt auf eigenes Risiko. Eine Haftung für Schäden jeglicher Art, die aus der Nutzung oder Nichtnutzbarkeit dieser Software entstehen, ist im gesetzlich zulässigen Umfang ausgeschlossen. Maßgeblich ist der vollständige Haftungsausschluss in Abschnitt 7 und 8 der Apache License 2.0; dieser Absatz fasst ihn nur allgemeinverständlich zusammen. Zwingende gesetzliche Haftung (etwa bei Vorsatz oder grober Fahrlässigkeit sowie nach dem Produkthaftungsgesetz) bleibt davon unberührt.

Kein zertifiziertes Messmittel. Das Programm führt Eigenmessungen mit Bordmitteln durch (TR-064-Abfragen der FritzBox, Ping-Laufzeiten, Windows-Systemwerte). Die erzeugten Berichte sind eine nachvollziehbare Eigendokumentation — sie sind keine eichrechtlich, behördlich oder gerichtlich anerkannte Messung und ersetzen weder eine Messung durch den Provider noch ein Sachverständigengutachten. Ob ein Provider, Vermieter oder Gericht eine solche Eigendokumentation berücksichtigt, liegt außerhalb des Einflusses dieses Projekts. Aussagen der Berichte („die eigene Leitung war in Ordnung") beschreiben das, was die verwendeten Messquellen im jeweiligen Zeitraum hergaben, und können systembedingt Lücken haben (z. B. bei Programm-Downtime oder wenn die FritzBox selbst nicht erreichbar war).

Marken. FRITZ!Box und AVM sind Marken der AVM Computersysteme Vertriebs GmbH, Berlin. Dieses Projekt steht in keiner Verbindung zu AVM, wird von AVM weder unterstützt noch geprüft oder gebilligt. Die Marken werden ausschließlich beschreibend verwendet, um die Kompatibilität des Programms mit diesen Geräten zu benennen (nominative Markennutzung). Alle weiteren genannten Produkt- und Firmennamen sind Eigentum ihrer jeweiligen Inhaber.

Nutzung auf eigenen Geräten. Das Programm ist für den Einsatz an der eigenen FritzBox bzw. an einer FritzBox gedacht, für die eine Zugriffserlaubnis vorliegt. Der Zugriff erfordert gültige FritzBox-Zugangsdaten; für deren rechtmäßige Verwendung ist die nutzende Person verantwortlich.

Diese Hinweise wurden nach bestem Wissen erstellt und stellen keine Rechtsberatung dar.

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages