Icecast Smart-Home-Integration, kostenlos und Open Source

Deine Icecast-Streams in Gladys: Sendestatus, Zuhörer, aktueller Titel, Szenen bei jeder Änderung.
Icecast ist der freie Streaming-Server hinter vielen Webradios: Quellen (ein Encoder, BUTT, Mixxx, Liquidsoap, ffmpeg…) senden Audio an seine Mountpoints, und die Zuhörer spielen sie ab. Diese Integration bringt deine Mountpoints in Gladys: ob ein Stream auf Sendung ist, die Zahl der Zuhörer, den aktuellen Titel, die Bitrate, und Szenen, die auf einen Stream reagieren, der startet oder stoppt, auf einen neuen Titel oder auf eine Zuhörerschwelle.
Icecast kann bei dir zu Hause oder auf einem gemieteten Server laufen: Die Integration funktioniert mit beiden (das Badge des Geräts zeigt „lokal“ oder „Cloud“ je nach Adresse). Du nutzt AzuraCast? Dafür gibt es eine eigene Integration, die seine Sender, Live-Sendungen und den AutoDJ kennt.
Getestet mit einem echten Icecast 2.4.4 in Docker, mit zwei von ffmpeg gesendeten Quellen (MP3 und Ogg Vorbis), über die Administration geänderten Titeln, mit curl simulierten Zuhörern sowie gestoppten und neu gestarteten Quellen. Rückmeldungen sind willkommen in den Issues.
Was du brauchst
- Gladys Assistant 5.1.0 oder neuer.
- Einen Icecast-Server 2.4 oder neuer, den Gladys erreicht (standardmäßig Port 8000).
- Seine Statusseite offen (
/status-json.xsl, standardmäßig öffentlich). Es wird kein Passwort gebraucht.
Erste Schritte
1. Die Adresse von Icecast finden
Es ist die Adresse seiner Webseite, mit dem Port, zum Beispiel
http://192.168.1.2:8000 oder https://radio.example.org. Eine aus dem
Browser kopierte URL geht auch (die Statusseite …/status.xsl, ein Stream
…/radio.mp3): Die Integration behält ihren Anfang.
2. Die Integration konfigurieren
Öffne in Gladys die Integration und fülle aus:
- Icecast-Adresse.
- Aktualisierungsintervall: standardmäßig 15 Sekunden. Jedes Mal eine leichte Anfrage für alle Mountpoints.
- Sprache der Namen: die Sprache der Funktionsnamen und der Szenen-Ergebnisse.
Nutze dann Verbindung testen: Die Integration liest Icecast und nennt, was jeder Mountpoint auf Sendung spielt.
3. Die Geräte hinzufügen
Öffne den Tab Entdecken: Jeder Mountpoint auf Sendung ist ein Gerät, nach
dem Stream und seinem Mountpoint benannt (Mein Radio (/radio.mp3)). Füge die
gewünschten hinzu. Icecast listet einen Mountpoint nur, solange eine Quelle
dorthin sendet: Starte zuerst deinen Stream. Die Integration merkt ihn sich
danach, sodass ein gestoppter Stream ein Gerät bleibt, nicht auf Sendung.
Die Geräte
| Funktion | Was sie sagt |
|---|---|
| Auf Sendung | Ja, solange eine Quelle zum Mountpoint sendet |
| Zuhörer | Personen, die gerade zuhören |
| Zuhörerspitze heute | Die meisten Zuhörer seit Mitternacht |
| Aktueller Titel | „Interpret – Titel“, von der Quelle gesendet („—“ ohne Sendung) |
| Bitrate | In kb/s, wenn die Quelle sie nennt (Ogg- und Opus-Streams) |
| Auf Sendung seit | Minuten seit dem Start des Streams |
Ein Stream stoppt nach einer Minute ohne seinen Mountpoint (oder ohne Antwort von Icecast): Eine kurze Unterbrechung der Quelle ändert nichts. MP3-Quellen senden einen einzigen Text „Interpret - Titel“: Die Integration trennt ihn am ersten „ - “.
Dashboard
Das Widget Icecast-Streams zeigt ohne Einstellung alle Mountpoints: die Summe der Zuhörer, wie viele Streams auf Sendung sind, eine Zeile pro Mountpoint mit seinen Zuhörern und den Titel des ersten Streams, der einen hat. Wähle einen Mountpoint in den Einstellungen des Widgets, um ihn im Detail zu sehen: Titel und Interpret, Zuhörer und Spitze des Tages, Bitrate und wie lange er schon auf Sendung ist. Die Schaltfläche Anhören öffnet den Stream, wenn die Adresse von Icecast mit https:// beginnt.
Szenen
Auslöser
Jeder Auslöser lässt sich auf einen Mountpoint beschränken (leer: jeder Mountpoint) und liefert den Namen des Streams.
- Ein Stream startet: Eine Quelle verbindet sich und geht auf Sendung, mit dem aktuellen Titel. Löst auch für einen neuen Mountpoint auf einem bereits beobachteten Server aus.
- Ein Stream stoppt: Der Mountpoint ist seit einer Minute nicht auf Sendung (oder Icecast stumm), mit der Dauer des Streams in Minuten.
- Ein neuer Titel läuft: Die Quelle sendet einen anderen Titel (auch wenn ein Stream mit einem Titel startet), mit Titel, Interpret und Songtitel.
- Zuhörer erreichen eine Schwelle: Wähle 1, 5, 10, 25, 50, 100, 250, 500 oder 1000; löst aus, wenn die Zuhörer des Mountpoints sie erreichen, höchstens einmal pro Tag (eine Schwelle, die ein Stream auf Sendung um Mitternacht schon überschritten hat, wird nicht erneut gemeldet). 1 heißt „jemand hört zu“.
Die Integration behält, was sie gesehen hat: Ein Neustart von Gladys meldet einen Stream oder eine Schwelle nicht zweimal, und ein zwischenzeitlich gestarteter Titel wird einmal gemeldet.
Aktionen
- Aktueller Titel: liest einen Mountpoint für die nächsten Aktionen: auf Sendung oder nicht, Titel, Interpret, Songtitel, Zuhörer, Spitze des Tages, Bitrate, Minuten auf Sendung und einen fertigen Satz („Mein Radio (/radio.mp3): Auf Sendung, Interpret – Titel, 12 Zuhörer“).
Szenen-Ideen
- On-Air-Lampe: „Ein Stream startet“ auf dem Mountpoint
/liveschaltet die Studiolampe auf Rot; „Ein Stream stoppt“ schaltet sie aus und schickt dir die Dauer. - Der Titel auf dem Fernseher: „Ein neuer Titel läuft“ zeigt den Titel auf dem Bildschirm im Wohnzimmer oder sagt ihn über den Lautsprecher an.
- Publikum: „Zuhörer erreichen eine Schwelle“ (10) schickt dir eine Benachrichtigung; eine Morgenszene sagt den Satz von „Aktueller Titel“.
Fehlerbehebung
- Icecast antwortet nicht: Prüfe Adresse und Port von dem Rechner aus, auf dem Gladys läuft.
- Kein Icecast-2.4-Status unter dieser Adresse: Die Adresse führt zu einem
anderen Dienst oder zu einem Icecast älter als 2.4 (ohne
/status-json.xsl). - Die Statusseite verlangt ein Passwort: Ein Reverse-Proxy schützt sie;
öffne
/status-json.xslfür das Netzwerk von Gladys. - Die Adresse leitet um: Gib die https://-Adresse ein.
- Kein Gerät in Entdecken: Gerade sendet keine Quelle; starte eine und klicke dann erneut auf Suchen.
Grenzen
- Ein Icecast-Server pro Integration; versteckte Mountpoints
(
<hidden>1</hidden>) stehen nicht auf der öffentlichen Statusseite. - Icecast wird im gewählten Intervall gelesen (standardmäßig 15 Sekunden), nicht in Echtzeit: Ein Titel, der kürzer als das Intervall ist, kann verpasst werden.
- Der Titel ist der, den die Quelle sendet: Manche Encoder senden keinen oder einen Dateinamen.
- Die Spitze des Tages misst die Integration bei jedem Lesen.
- Nur lesend: Die Integration startet, stoppt und verschiebt keine Quelle.
- Nicht mit dem Icecast-Projekt oder der Xiph.Org Foundation verbunden.
Konfigurationseinstellungen
Diese Einstellungen fragt Icecast in seinem Konfigurationsbildschirm in Gladys ab.
| Einstellung | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
| Dein Icecast-Server | section | Nein | Gib die Adresse deines Icecast-Servers ein (2.4 oder neuer). Seine Mountpoints auf Sendung erscheinen im Tab „Entdecken“: Füge die gewünschten hinzu. Kein Passwort: Die Integration liest die öffentliche Statusseite. |
| Icecast-Adresse | string | Ja | Adresse des Icecast-Servers, mit seinem Port (standardmäßig 8000). |
| Optionen | section | Nein | |
| Aktualisierungsintervall | select | Nein | Wie oft Icecast gelesen wird: eine leichte Anfrage für alle Mountpoints. |
| Sprache der Namen | select | Nein | Sprache der Funktionsnamen (beim Anlegen des Geräts festgelegt) und der Szenen-Ergebnisse. |
So installierst du Icecast in Gladys
- Öffne in Gladys Integrationen: Icecast erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
- Klicke auf Installieren. Gladys lädt das Docker-Image (
ghcr.io/guim31/gladys-icecast:1.0.0) herunter, startet es in einer vom Kern isolierten Sandbox und erzeugt die Oberfläche der Integration (Geräte, Erkennung und Konfiguration). - Öffne den Bildschirm Konfiguration der Integration, fülle die Einstellungen aus und speichere.
- Du kannst sie auch direkt über die URL ihres Repositorys installieren: https://github.com/guim31/gladys-icecast.
Icecast benötigt Gladys >=5.1.0. Der Katalog in Gladys wird stündlich aktualisiert, eine neue Version ist also spätestens eine Stunde nach ihrer Veröffentlichung verfügbar.
Du nutzt Gladys noch nicht? Es ist kostenlos und Open Source: folge der Installationsanleitung, um loszulegen.
Über externe Integrationen
Icecast ist eine externe Integration: eine Community-Integration, die als Docker-Container verpackt und auf GitHub veröffentlicht wird. Gladys installiert sie mit einem Klick und führt sie in einer vom Kern isolierten Sandbox aus. Sie wird von guim31 veröffentlicht und gepflegt, nicht vom Gladys-Kernteam.
- Alle Integrationen durchsuchen, native und aus der Community
- Deine eigene externe Integration bauen und veröffentlichen
- Quellcode auf GitHub — Quelle dieser Dokumentation