Halb sieben, Badezimmer, das Radio läuft. Musik, Nachrichten, Verkehrsservice – und dann der erste Werbejingle des Tages. Der bricht nach einem Wimpernschlag ab. Niemand hat auf eine Taste gedrückt. Der Lautsprecher hat sich selbst stumm geschaltet.
Dahinter steckt kein Sprachmodell, das Werbung erkennt, kein Audio-Fingerprinting und kein Abo. Dahinter steckt eine Automation mit zwei Auslösern – und ein Sender, der freiwillig mitteilt, dass jetzt Werbung läuft.
Das ist der eigentliche Witz an der Sache: Die Erkennung musste ich gar nicht bauen. SWR1 liefert sie gratis mit.

Der Sender verrät es selbst
Jeder Radiosender schickt neben dem Ton einen kleinen Textkanal mit. Bei UKW heißt das RDS-Radiotext, beim Internet-Stream kommt derselbe Text als Titel-Metadaten an. Ob der Sender dafür intern wirklich dieselbe Quelle anzapft, weiß ich nicht – für uns zählt nur, dass am Lautsprecher derselbe Text ankommt.
Der entscheidende Punkt: Dieses Textfeld ist kein statischer Sendername. Es wechselt ständig. Bei SWR1 stand dort in einer Stichprobe an einem einzigen Morgen unter anderem das hier:
| |
Titel, Interpret, Moderation, Verkehrsservice, Telefonnummern – und mittendrin die Ansage, dass gerade Werbung läuft. Der Sender sagt es, weil das Feld ohnehin gepflegt wird. Niemand hat sich dabei gedacht, dass jemand darauf eine Stummschaltung baut.
Mein Sonos-Lautsprecher liest diese Metadaten aus dem Stream, und die Sonos-Integration reicht sie in Home Assistant als Attribut media_title durch. Damit ist der Werbeblock ein ganz normaler Zustandswechsel im System – und alles, was Home Assistant mit Zustandswechseln kann, geht damit auch.
Die Signalkette ist kurz:
| |
Schritt 1: Finde den Marker deines Senders
Das ist der wichtigste Abschnitt dieses Artikels, denn Werbung in SWR1 funktioniert ausschließlich bei SWR1 Baden-Württemberg. Andere Sender formulieren anders oder senden gar keinen Marker. Bevor du irgendetwas baust, musst du also nachsehen, was dein Sender tatsächlich mitschickt.
So gehst du vor:
- Radio auf deinem Wunschsender laufen lassen – über den Lautsprecher, den du später steuern willst.
- In Home Assistant Entwicklerwerkzeuge → Zustände öffnen.
- Deine Media-Player-Entität heraussuchen, zum Beispiel
media_player.bad. - In der Attributspalte
media_titlebeobachten, während ein Werbeblock läuft. - Den Text exakt notieren: Groß- und Kleinschreibung, Leerzeichen, Sonderzeichen. Der Trigger vergleicht zeichengenau.
Schneller geht es unter Entwicklerwerkzeuge → Vorlage. Diese Zeile zeigt dir den aktuellen Radiotext live, ohne dass du in einer langen Attributliste suchen musst:
| |
Wenn du nicht neben dem Bildschirm sitzen und auf den Werbeblock warten willst, spiegle den Radiotext in einen Template-Sensor. Dann taucht er im Verlauf auf und du kannst in Ruhe nachlesen, was über den Tag so durchgelaufen ist:
| |
Findest du keinen brauchbaren Marker, ist an dieser Stelle Schluss – dann sendet dein Sender die Information schlicht nicht mit. Das ist ärgerlich, aber ehrlicherweise der wahrscheinlichere Fall. Bei SWR1 hatte ich Glück.
Schritt 2: Zwei Trigger, ein if
Jetzt kommt die Zutat, die viele nicht auf dem Schirm haben: Home Assistant kann auf die Änderung eines Attributs triggern, nicht nur auf einen Zustandswechsel.
Der Zustand meines Lautsprechers ist die ganze Zeit playing. Er ändert sich nicht, wenn die Werbung anfängt – es läuft ja weiter Ton. Was sich ändert, ist das Attribut media_title. Genau darauf horcht der Trigger über die Zeile attribute: media_title. Ohne die würde die Automation nie auslösen. Wenn dir die Trigger-Grundlagen noch fehlen, fang bei Home Assistant A-Z: A wie Automationen an.
Der zweite Trick ist die Symmetrie:
to: Werbung in SWR1– der Radiotext wechselt auf den Marker: Werbung fängt an, stumm schalten.from: Werbung in SWR1– der Radiotext wechselt weg vom Marker: Werbung ist vorbei, Ton wieder an.
Zwei Trigger, zwei IDs, ein if. Mehr ist es nicht:
| |
Zum Einbauen legst du die Datei in deiner Home-Assistant-Konfiguration unter blueprints/automation/<dein-name>/sonos_ad_mute.yaml ab, lädst die Blueprints unter Einstellungen → Automationen & Szenen → Blueprints neu und legst darüber deine Automationen an. Wie Blueprints grundsätzlich funktionieren, steht in Home Assistant A-Z: B wie Blueprints. Du kannst den Inhalt ab trigger: aber auch einfach als normale Automation einfügen und !input media_player durch deine Entität ersetzen.
Zwei Anmerkungen zum Code, die ich dir nicht unterschlagen will:
Die Schreibweise ist die klassische. platform: und service: sind die alte Form; neuere Home-Assistant-Versionen schreiben lieber triggers: und actions:. Die alte Form funktioniert weiterhin, und weil das hier mein produktiv laufender Blueprint ist, zeige ich ihn genau so, wie er bei mir liegt.
Der else-Zweig ist bewusst simpel – und genau deshalb eine Sackgasse. Er entstummt bei jedem Trigger, der nicht mute heißt. Bei exakt zwei Triggern ist das sauber. Sobald du einen dritten hinzufügst, entstummt der ebenfalls, und du hast einen Fehler, den du lange suchst. Wer erweitern will, baut das if/else vorher in ein choose um. Diese Art von Fallstricken sammle ich in 5 Automations-Fehler, die in Home Assistant jeder macht.
Wenn dein Sender nicht so eindeutig funkt
Bei SWR1 ist der Text immer identisch, deshalb reicht der exakte Vergleich. Sendet dein Sender variierende Texte – etwa mit angehängter Uhrzeit oder wechselnden Formulierungen –, brauchst du einen Trigger, der auf ein Textstück prüft statt auf den ganzen String:
| |
Achtung: Diese Variante läuft bei mir nicht im Einsatz – ich brauche sie nicht. Sie ist der naheliegende Weg, aber ungetestet. Wenn du sie nachbaust, prüfe besonders, dass das Wort nicht zufällig auch in Songtiteln oder Programmhinweisen auftaucht. Sonst schaltet dein Radio bei einem Beitrag über Werbeagenturen fröhlich stumm.
Eine Automation pro Lautsprecher
Der Blueprint ist bei mir fünfmal instanziiert – einmal pro Raum:
| Raum | Entität |
|---|---|
| Arbeitszimmer | media_player.arbeitszimmer |
| Schlafzimmer | media_player.schlafzimmer |
| Bad | media_player.bad |
| Wohnzimmer | media_player.wohnzimmer |
| Terrasse | media_player.terrasse |
Das sieht nach unnötiger Kopierarbeit aus, ist aber notwendig: Stummschaltung ist bei Sonos eine Eigenschaft des einzelnen Lautsprechers. Auch wenn mehrere Boxen zu einer Gruppe zusammengefasst sind, muss jede einzeln stumm geschaltet werden. Genau dafür ist ein Blueprint ja gemacht – fünfmal anklicken, fünfmal eine Entität auswählen, fertig. Was die fünf Lautsprecher sonst noch an Strom ziehen und wie ich sie nachts abschalte, steht in 5 Smart-Home-Automationen: Strom sparen mit Home Assistant.
Zehn Tage Recorder: Was macht das im Alltag?
So eine Automation läuft leise vor sich hin, und nach ein paar Wochen weiß man nicht mehr, ob sie überhaupt noch etwas tut. Also habe ich meine Home-Assistant-Datenbank ausgewertet, Zeitraum 17. bis 27. August 2026, also zehn Tage.
Ergebnis: 73 erkannte Werbeblöcke – und die Automation hat seit der Einrichtung zuverlässig funktioniert. Kein einziger Fall, in dem der Marker im Radiotext stand und die Stummschaltung ausblieb.
Fast alle Auslösungen liegen zwischen 6 und 9 Uhr morgens:
| Stunde | Werbeblöcke |
|---|---|
| 06:00 | 44 |
| 07:00 | 15 |
| 08:00 | 4 |
| 12:00 | 2 |
| 13:00 | 6 |
| 18:00 | 2 |
Bevor du daraus liest, SWR1 würde morgens besonders viel Werbung senden: Das zeigen diese Zahlen nicht. Sie zeigen nur, wann bei mir das Radio läuft – nämlich fast ausschließlich morgens, als Wecker und Frühstücksbegleitung. Ich habe keine Daten darüber, wie viele Stunden ich zu welcher Tageszeit höre, und ohne diesen Nenner ist die Verteilung kein Beleg für Werbezeiten, sondern schlicht ein Abbild meiner Hörgewohnheiten. Was die Zahlen tatsächlich zeigen: Immer wenn das Radio läuft, greift die Automation zuverlässig.
Zur Länge der Blöcke: Bei 31 Blöcken ließ sich ein sauberes Ende messen, 30 davon lagen im plausiblen Bereich.
- Median: 117 Sekunden – knapp zwei Minuten pro Werbeblock
- Mittelwert: 97 Sekunden
- Spanne: 17 bis 150 Sekunden
- Summe dieser 30 Blöcke: rund 49 Minuten Stille in zehn Tagen
Rechnet man den Median auf alle 73 Blöcke hoch, landet man bei gut zwei Stunden – das ist aber eine Schätzung, keine Messung, deshalb nenne ich lieber die 49 Minuten, die tatsächlich in den Daten stehen.
Eine Kleinigkeit aus der Auswertung, die ich mitnehme: Ein Block schlug mit 2216 Sekunden zu Buche, also über 36 Minuten. So lange ist kein Werbeblock. Was wirklich passiert war: Der Lautsprecher wurde mitten in der Werbung ausgeschaltet, der Radiotext blieb stehen, und das Ende wurde erst beim nächsten Einschalten registriert. Kein Fehler der Automation, aber ein gutes Beispiel dafür, warum man Rohdaten aus dem Recorder nicht ungefiltert in eine Statistik kippt.
Wo die Grenzen liegen
Damit du weißt, worauf du dich einlässt – fünf Einschränkungen, die alle real sind:
1. Der Marker ist hart verdrahtet und senderspezifisch. Werbung in SWR1 gilt für SWR1 Baden-Württemberg und sonst nirgends. Ob andere SWR-Sender denselben Text verwenden, habe ich nicht getestet. Deshalb steht der Beobachtungsschritt oben so weit vorne: Er ist der eigentliche Nachbau.
2. Es wird stumm geschaltet, nicht übersprungen. Die Werbezeit läuft weiter, es ist nur still. Bei einem Live-Stream geht das gar nicht anders – es gibt nichts, wohin man springen könnte.
3. Nur Radio-Streams mit Metadaten. Bei Spotify, bei Musik aus der eigenen Bibliothek oder über Line-In gibt es kein solches Feld. Das Verfahren hängt vollständig daran, dass ein Sender freiwillig etwas mitschickt.
4. Eine Automation pro Lautsprecher, siehe oben.
5. Die Automation ist der Chef über die Stummschaltung. Wenn du deinen Lautsprecher aus einem eigenen Grund stumm schaltest und in dieser Zeit ein Werbeblock endet, hebt die Automation deine Stummschaltung auf. Das passiert selten und tut nicht weh, aber durchdacht ist die Interaktion nicht.
Und eine Zahl, die ich mit der Stoppuhr nachgeprüft habe, statt sie zu schätzen: die Latenz. Wie viele Sekunden Werbung durchkommen, bevor der Ton weg ist, hängt daran, wie schnell der Lautsprecher die Stream-Metadaten aktualisiert und die Integration das Ereignis weiterreicht. Bei mir sind das im Schnitt ein bis zwei Sekunden – der Werbejingle ist gerade eben hörbar angesetzt, dann ist Ruhe.
Fazit
Der Reiz an dieser Automation ist nicht die Automation. Die ist trivial: zwei Trigger, eine Verzweigung, zwei Zeilen Aktion.
Der Reiz ist, dass ein Problem, das nach Machine Learning und Audioanalyse klingt, sich in Luft auflöst, sobald man an der richtigen Stelle nachsieht. Die Information war die ganze Zeit da. Sie stand nur in einem Feld, in das niemand schaut.
Das ist ein Muster, das im Smart Home öfter funktioniert, als man denkt: Bevor du anfängst, etwas zu erkennen, schau nach, ob es dir jemand schon sagt. Attribute von Entitäten sind dafür eine unterschätzte Fundgrube – und dass Home Assistant direkt auf sie triggern kann, macht sie sofort nutzbar.
Was steht bei dir in media_title, wenn dein Sender Werbung spielt? Schreib es mir in die Kommentare – ich bin neugierig, welche Sender das noch mitliefern.
