muehlbronner.de

← Alle Projekte

So funktioniert’s

TV-Zapper

Ein Fernseher, der selbst umschaltet: Er sucht im laufenden Programm nach Sendungen, die mich interessieren, und schaltet hin. Kommt Werbung, weicht er auf einen werbefreien Sender aus und kehrt danach zurück. Die Werbung erkennt er daran, dass private Sender in der Pause ihr Logo ausblenden.

  • Google TV App
  • Home Assistant Integration
  • FRITZ!Box als zweiter Tuner
  • 100 % im Heimnetz

Auf einen Blick

Programm nach Interessen

Interessen mit Gewicht und Suchwörtern, zum Beispiel Hip-Hop/Rap, Erwachsenen-Cartoons, Mysterien/Aliens. Dazu eine Liste „Nie“ (Teleshopping …), gesperrte und bevorzugte Sender. Alle paar Minuten bewertet der Zapper, was gerade läuft, und schaltet auf den besten Treffer, aber nur, wenn der besser ist als das Laufende.

Werbung am Logo erkennen

Private Sender blenden in der Werbung ihr Senderlogo aus. Die App schaut ein paar Mal pro Sekunde in die Logo-Ecke. Fehlt das gelernte Logo lange genug, schaltet sie auf einen werbefreien Ausweichsender und kehrt zurück, sobald das Logo wieder dauerhaft da ist.

FRITZ!Box als zweiter Tuner

Der Fernseher gibt einer App weder Bild noch Ton des Tuners. Deshalb empfängt die FRITZ!Box den laufenden Sender nebenher übers Kabelnetz und reicht ihn als Stream an die App weiter. Geguckt wird weiter über den Tuner des Fernsehers.

Home Assistant

Dieselbe Logik als Integration: Schalter „Zapper an“, Sensor „Aktueller Treffer“, Laufzeit und Verweilzeit als Regler, Knopf „Jetzt prüfen“. Über die TV-App blendet Home Assistant im Fernsehbild ein, worauf umgeschaltet wurde und warum.

So sieht es aus

Bildschirmfotos der App auf dem Fernseher und der Integration in Home Assistant (27.10.2026). Das Fernsehbild selbst lässt sich nicht fotografieren – es bleibt wegen des Kopierschutzes schwarz.

TV-Zapper-App: Startseite mit Start, Stopp, Einmal prüfen, Berechtigungen, Laufzeit und Verweilzeit
Startseite: Laufzeit, nächste Prüfung, Zustand des Werbe-Sensors und Berechtigungen
TV-Zapper-App: Interessen mit Gewicht und Suchwörtern
Interessen mit Gewicht und Suchwörtern, alles mit der Fernbedienung einstellbar
TV-Zapper-App: Werbung umgehen, Ausweichsender, Zeitgrenze, gemessene Pausen und Protokoll
„Werbung umgehen“: Ausweichsender, Zeitgrenze, gemessene Pause; im Protokoll die Bewertung aller 36 Sender
TV-Zapper-App: Protokoll einer erkannten Werbepause auf ProSieben
Eine echte Werbepause: Logo-Wert fällt auf 0,00–0,13, nach 6 Minuten geht es zurück, die Pause dauerte 410 s
TV-Zapper-App: Einblendung oben links über dem Bild
So sieht die Einblendung aus (hier über der App, im Betrieb über dem Fernsehbild)
TV-Zapper-App: Senderliste, jeder Sender an, bevorzugt oder aus
Senderliste: OK schaltet je Sender zwischen an, bevorzugt ★ und aus
Home Assistant: Dashboard-Abschnitt TV-Zapper mit Schalter, laufender Sendung, Laufzeit, Verweilzeit und Prüfknopf
Home Assistant: Abschnitt auf dem Dashboard
Home Assistant: Gerät TV-Zapper mit Steuerung, Sensor und Aktivität
Home Assistant: das Gerät mit Steuerung, Sensor „Aktueller Treffer“ und Verlauf
Home Assistant: Integration TV-Zapper mit einem Gerät und fünf Entitäten
Home Assistant: die Integration mit eigenem Symbol

Wie die Teile zusammenspielen

Aufbau des TV-Zappers Das Kabelsignal geht in den Tuner des Fernsehers und in die FRITZ!Box. Die FRITZ!Box streamt den laufenden Sender an die TV-Zapper-App auf dem Fernseher. Die App liest das Programm aus der Senderdatenbank, prüft die Logo-Ecke und schaltet den Tuner um. Home Assistant steuert über ADB im Heimnetz und lässt die App Einblendungen zeigen. Kabel-TV DVB-C FRITZ!Box 6660 Cable zweiter Tuner, streamt Kabel-TV per RTSP TCL-Fernseher · Google TV Tuner zeigt das Bild TV-Zapper-App Programm lesen nach Interessen bewerten Logo-Ecke prüfen umschalten, einblenden Senderdatenbank laufende Sendungen, Genre, Beschreibung Home Assistant Green Integration „TV-Zapper“ ADB im Heimnetz Stream des laufenden Senders Schalter, Einblendung
Geguckt wird über den Tuner des Fernsehers; die FRITZ!Box liefert nur den „Blick“ für die Werbeerkennung.

Programm nach Interessen

  1. Lesen: Die App holt Sender und laufende Sendungen direkt aus der Programmdatenbank von Android TV (gefüllt vom Tuner des Fernsehers) – samt Genre und Beschreibung. Auf dem Bildschirm passiert dabei nichts.
  2. Bewerten: Jede Sendung bekommt Punkte nach den Interessen (Gewicht × Treffer bei den Suchwörtern, doku* passt als Wortanfang). Bevorzugte Sender bekommen einen Bonus, aber nur, wenn die Sendung auch passt. Wörter aus „Nie“ schließen eine Sendung aus.
  3. Umschalten: Nur einmal pro Durchgang, auf den besten Treffer, und nur, wenn er besser ist als das Laufende. Danach blendet die App 6 Sekunden lang ein, worauf sie umgeschaltet hat und warum.
  4. Warten: Nach der eingestellten Verweilzeit beginnt der nächste Durchgang. Zeigt der Fernseher etwas anderes als Fernsehen (eine App, AirPlay) oder ist er aus, lässt der Zapper ihn in Ruhe.

Werbung erkennen

  1. Mitschauen: Die App holt den laufenden Sender per RTSP von der FRITZ!Box und entschlüsselt ihn mit dem Hardware-Decoder des Fernsehers – parallel zum Fernsehbild, in halber Auflösung, etwa 3 Bilder pro Sekunde.
  2. Logo lernen: In den oberen Bildecken werden Kanten gesucht, die in über 70 % der Bilder an derselben Stelle stehen – das ist das Senderlogo. Sechs Logos liegen fertig bei, andere lernt die App beim ersten Mal in etwa 5 Minuten.
  3. Entscheiden: Werbung = in 10 Sekunden mindestens 80 % der Bilder ohne Logo. Vorbei = in 30 Sekunden mindestens 80 % mit Logo. Dann geht es auf den besten werbefreien Ausweichsender (ZDFinfo, zdf_neo, arte, phoenix …) und danach zurück.
  4. Sicherheitsnetz: Spätestens nach einer Zeitgrenze geht es auf jeden Fall zurück: anfangs 6 Minuten, sobald für den Sender Pausen gemessen sind, deren Durchschnitt plus 1 Minute.

Gemessen

WasErgebnis
20 Minuten Aufnahme von 6 Sendern, Bilder einzeln angesehenIn allen Lücken ohne Logo liefen echte Werbespots, mit Logo lief die Sendung
Logo-Wert (Anteil der Logo-Kanten, die gerade da sind)Sendung meist 0,97–1,0 · Werbung meist 0,05–0,2
Erkennung des Pausenbeginnsnach 7–19 Sekunden, keine Fehlalarme in der Sendung
Lautstärke als Merkmaltaugt nicht: Werbung und Sendung gleich laut (62–64 dB)
Am Fernseher, knapp eine Stunde auf kabel eins DokuLogo-Wert in der Sendung stabil 0,93–1,0; einmal 74 s „Werbung“ erkannt und hin- und zurückgeschaltet – ob das eine echte Werbepause war, ist nicht belegt
Echte Werbepause am Fernseher (ProSieben, 27.10.2026, mit Kontrollbildern belegt)Werbung erkannt 2 Sekunden vor dem offiziellen „WERBUNG“-Trenner des Senders, umgeschaltet auf ZDFinfo; Logo-Wert in der Pause 0,00–0,13. Zurück nach der Zeitgrenze von 6 Minuten – das Logo kam fast gleichzeitig wieder. Gemessene Pause 410 s; die nächste Zeitgrenze für den Sender richtet sich danach
Programm-Zapper am Fernseher377 Sender in der Datenbank, 36 eingeschaltet, alle mit laufender Sendung; umgeschaltet auf den besten Treffer und im Hintergrund weitergelaufen

Hardware

GerätRolle
TCL Smart TV Pro (Google TV, Android 14, MediaTek MT9689)Zeigt das Programm über den eigenen Kabeltuner; die TV-Zapper-App läuft darauf und nutzt den Hardware-Decoder des Chips für den zweiten Stream
FRITZ!Box 6660 CableEmpfängt Kabel-TV (DVB-C) über den Kabelanschluss als zweiter Tuner und streamt den laufenden Sender per RTSP ins Heimnetz. Das Netzwerkprotokoll dafür heißt „SAT>IP“ – der Name stammt vom Satellitenempfang, die FRITZ!Box nutzt es aber für Kabelfernsehen; Satellit ist nicht im Spiel
Home Assistant Green (Home Assistant OS)Optional: Integration „TV-Zapper“ mit Schalter, Sensoren und Automationen; spricht ADB über das Netzwerk mit dem Fernseher
MacEntwicklung; der erste Prototyp war ein Python-Skript, das die Programmzeitschrift des Fernsehers per ADB vom Bildschirm las und per Fernbedienungstasten umschaltete

Welche FRITZ!Box geht?

Gebraucht wird eine FRITZ!Box für den Kabelanschluss mit eingebautem TV-Tuner, die Kabelfernsehen ins Heimnetz streamt. Getestet ist der TV-Zapper nur mit der 6660 Cable. Laut Hersteller können das auch diese Modelle:

ModellLaut Hersteller
FRITZ!Box 6690 Cablebis zu vier Kabel-TV-Sender gleichzeitig auf verschiedenen Geräten 2
FRITZ!Box 6670 Cablebis zu vier Kabel-TV-Sender gleichzeitig auf verschiedenen Geräten 3
FRITZ!Box 6660 Cable (hier im Einsatz)Fernsehempfang über DVB-C einrichtbar 1
FRITZ!Box 6591 CableQuad-Tuner, vier Sender gleichzeitig 1
FRITZ!Box 6590 / 6490 Cable (ältere Modelle)Fernsehempfang über DVB-C einrichtbar 1
  1. FRITZ! Wissensdatenbank, Artikel 1528: FRITZ!Box für Fernsehempfang über DVB-C einrichten (für 6490, 6590, 6591 und 6660 Cable). fritz.com
  2. FRITZ!Box 6690 Cable – Details. fritz.com
  3. FRITZ!Box 6670 Cable – Details. fritz.com
  4. Google: Debugging Android TV receivers (ADB auf Android-TV-Geräten freigeben). developers.google.com

Installieren

Zwei Wege, die man nicht gleichzeitig zappen lassen sollte: die App direkt auf dem Fernseher (mit Werbeerkennung) oder die Integration für Home Assistant (nur Programm nach Interessen, nur TCL).

App auf dem Fernseher

Voraussetzungen: Fernseher mit Google TV oder Android TV und eingebautem Tuner, dessen Sender in der Programmdatenbank von Android TV landen. Getestet nur auf einem TCL Smart TV Pro (Android 14); andere Marken sind nicht ausprobiert. Für die Werbeerkennung zusätzlich eine FRITZ!Box Cable mit DVB-C (siehe oben).

TV-Zapper für Google TV (.apk) Version v0.3.0 · alle Versionen

  1. Im Play Store die App „Downloader by AFTVnews“ installieren und öffnen. Die Cookie-Abfrage auf der Startseite von Downloader muss man nicht beantworten.
  2. Oben ins Feld „Hier klicken, um eine URL … einzugeben“ die Adresse muehlbronner.de/download/tv-zapper eintippen und „Laden“ – sie führt immer zur neuesten Version.
  3. Es erscheint „Aus Sicherheitsgründen kannst du … keine unbekannten Apps aus dieser Quelle installieren“: „Einstellungen“ → auf der Seite „Installieren unbekannter Apps“ Downloader auf „Zugelassen“ stellen → Zurück → „Installieren“.
  4. TV-Zapper öffnen – die Einrichtung startet von selbst und fragt drei Rechte nacheinander ab:
    • Android-Dialog „Fernsehprogramm lesen“ → „Zulassen“
    • Seite „Zugriff auf Nutzungsdaten“: TV-Zapper suchen (steht weiter unten in der Liste) → „Zugelassen“ → Zurück. Ohne dieses Recht schaltet die App nie um.
    • Seite „Einblendung über anderen Apps zulassen“: TV-Zapper ist schon markiert → OK → Zurück. Ohne dieses Recht verbietet Android das Umschalten aus dem Hintergrund und die Einblendung.
    Fehlt später ein Recht, holt der Knopf „Einrichten“ in der App es nach.
  5. FRITZ!Box (nur für die Werbeerkennung): in der Oberfläche unter „DVB-C“ Live-TV einschalten und den Senderlauf starten 1. In der App steht als Adresse fritz.box – passt meistens.
  6. „Start“ drücken – die App öffnet das Fernsehbild, danach einfach fernsehen. Ab Werk läuft sie ohne Ende; Interessen, Sender (OK schaltet zwischen an, bevorzugt ★ und aus), Laufzeit und Ausweichsender lassen sich in der App anpassen.

Die Menüwege sind die eines TCL-Fernsehers mit Android 14, am 27.10.2026 genau so durchgeklickt; auf anderen Fernsehern können sie anders heißen. Ein Sender, dessen Logo die App noch nicht kennt, braucht beim ersten Mal etwa 5 Minuten zum Lernen. Prüfsumme der aktuellen APK (SHA-256): eaf33296ce43ce68cda8c0f95eb92723f273e5bbe01df48c9acedfd9b8652d3d; signiert mit dem eigenen Schlüssel „TV-Zapper“, Zertifikat SHA-256 8c371cfa71878151cb0a7520afc30b0822b329dc5a4a50a0228b3541a33f06ee.

Integration für Home Assistant

Voraussetzungen: TCL-Fernseher mit Google TV und eingebautem Tuner, Sprache Deutsch (die Programmzeitschrift von TCL wird an ihren Texten gelesen), eine eigene Senderliste darin (z. B. „Favorit1“) und ADB über das Netzwerk. Home Assistant mit Zugriff auf den Ordner config, etwa über das Add-on „Samba share“. Getestet mit Home Assistant 2026.10.4 auf einem Home Assistant Green; kein HACS-Paket.

  1. ADB freigeben: am Fernseher die Entwickleroptionen freischalten (in den Einstellungen unter „Info“ mehrmals auf die Build-Nummer), dort USB-Debugging einschalten. Hört der Fernseher danach noch nicht im Netz, einmal per USB-Kabel von einem Rechner adb tcpip 5555 ausführen 4. Dem Fernseher im Router eine feste Adresse geben.
  2. Auf GitHub Code → Download ZIP, entpacken.
  3. Den Ordner homeassistant/custom_components/tv_zapper nach config/custom_components/ kopieren – am Mac im Finder mit ⌘K smb://homeassistant.local/config (Zugangsdaten aus der Konfiguration des Samba-Add-ons). Mit Finder oder cp kopieren, nicht mit rsync.
  4. Home Assistant neu starten (Einstellungen → System → Neu starten).
  5. Einstellungen → Geräte & Dienste → Integration hinzufügen → „TV-Zapper“: Adresse des Fernsehers, Port 5555 und den Namen der Senderliste eintragen.
  6. Am Fernseher erscheint „USB-Debugging zulassen?“ – mit der Fernbedienung „Immer zulassen“ (60 Sekunden Zeit; zu spät, dann einfach noch einmal „Absenden“).
  7. Unter „Konfigurieren“ Interessen, ausgeschlossene Wörter und Sender, Laufzeit und Verweilzeit einstellen; zum Ausprobieren „Nur lesen“ einschalten und „Jetzt prüfen“ drücken. Ein Dashboard-Abschnitt liegt als homeassistant/dashboard-beispiel.yaml bei.

Ist die TV-App installiert, erscheinen die Meldungen im Fernsehbild. Zeigt homeassistant.local auf eine alte Adresse, die IP von Home Assistant nehmen. Umschalten aus Home Assistant heraus ist am Gerät noch nicht gelaufen; ein Durchgang dauert einige Minuten, weil die Programmzeitschrift Seite für Seite gelesen wird.

Drei Fassungen

  • Python-Skript (Prototyp): öffnet die Programmzeitschrift, liest sie per uiautomator als Text und tippt die Sendernummer Ziffer für Ziffer ein (mit 0,8 s Pause, sonst verschluckt der Fernseher die erste).
  • Google-TV-App: braucht keinen Rechner und keine Tasten. Liest die Senderdatenbank (TvContract), schaltet per Intent direkt auf den Sender und erkennt Werbung. Alles mit der Fernbedienung einstellbar: Interessen, Laufzeit, Verweilzeit, Sender an/bevorzugt/aus, Ausweichsender.
  • Home-Assistant-Integration: dieselbe Bewertung, eingestellt in der Home-Assistant-Oberfläche. Ein Ereignis nach jedem Durchgang macht eigene Automationen möglich. Mit 12 automatischen Tests in einem echten Home Assistant geprüft.

Grenzen

  • Sender, die in der Werbung ihr Logo nicht ausblenden, erkennt die App nicht; Trailer ohne Logo gelten als Werbung.
  • Eine Frequenz im Kabelnetz liefert die FRITZ!Box nicht (unter anderem MTV und Comedy Central) – dort keine Werbeerkennung.
  • Bisher ist am Fernseher erst eine echte Werbepause mit Kontrollbildern belegt. Einige Sender (etwa mit Spielstand oder Laufband in der Ecke) lernt die App erst seit der Beschränkung auf die oberen Ecken sauber.
  • Ein zweites Gerät, das neben dem Fernseher denselben Sender von der FRITZ!Box holte, lief im Test nur etwa 3 Minuten mit.
  • Bildschirmfotos vom Fernsehbild bleiben schwarz (Kopierschutz). Dass die Einblendung über dem laufenden Fernsehbild erscheint, meldet Android – mit eigenen Augen bestätigt ist es noch nicht.
  • Umschalten aus Home Assistant heraus ist noch nicht am Gerät gelaufen; die Integration wird bisher im Modus „nur lesen“ genutzt.

Technik

JavaAndroid TV / TvContractMediaCodecRTSP / RTPDVB-CPythonHome Assistantadb-shelluiautomator

Entstanden im Oktober 2026, Quellcode öffentlich auf GitHub. Alles läuft im eigenen Heimnetz. Im Betrieb wird nichts aufgezeichnet; die App legt nur zur Kontrolle ihrer Entscheidungen einzelne Bilder auf dem Fernseher ab.