TapHome

Denon HEOS

Packet Parser → TCP
Eingereicht von
Zuletzt aktualisiert: 04. 2026
Denon HEOS

Denon HEOS ist eine drahtlose Multiroom-Audio-Plattform, die auf dem HEOS Command Line Interface (CLI) aufbaut — einem textbasierten Protokoll, das jeden Lautsprecher, jede Soundbar, jeden Verstärker und jede HEOS-fähige Komponente im lokalen Netzwerk über TCP-Port 1255 verfügbar macht. TapHome nutzt dieses Protokoll, um Wiedergabe, Lautstärke, Stummschaltung und Wiedergabemodus von HEOS-Lautsprechern ohne Cloud-Abhängigkeit zu steuern.

Das Template deckt die gesamte kabellose HEOS-Produktreihe (HEOS 1, 3, 5, 7), die Soundbars HEOS Bar und HomeCinema, die Komponenten HEOS Amp / Link / Drive, den HEOS Sub sowie die neueren Denon Home 150 / 250 / 350 Lautsprecher und die Sound Bar 550 ab. Ein einziges HEOS-Gerät im LAN genügt — das CLI macht jeden anderen HEOS-Player im Netzwerk über den Endpunkt player/get_players erreichbar.

Dieses Template ist ausschließlich für HEOS-Lautsprecher, Soundbars und HEOS-fähige Verstärker gedacht. Denon- und Marantz-AVR-Receiver (AVR-X-Serie, SR-Serie usw.) verwenden ein separates Denon/Marantz Telnet-Control-Protokoll auf Port 23 und sind mit diesem Template nicht kompatibel — auch nicht auf Modellen mit integriertem HEOS Built-in.

Netzwerkverbindung

HEOS kommuniziert über TCP auf Port 1255 mit Klartext-ASCII-Befehlen, die mit \r\n abgeschlossen werden, und gibt JSON-Antworten zurück. Eine Authentifizierung ist nicht erforderlich — jedes Gerät im gleichen LAN kann sich mit dem CLI-Port verbinden.

Bevor TapHome das Gerät steuern kann, muss der HEOS-Lautsprecher über die HEOS-Mobile-App eingerichtet sein:

  1. Installieren Sie die HEOS App (Android / iOS) auf einem Smartphone oder Tablet im gleichen WLAN-Netzwerk.
  2. Verbinden Sie das HEOS-Gerät über den Einrichtungsassistenten der App mit WLAN oder Ethernet.
  3. Stellen Sie sicher, dass die Firmware aktuell ist (das Template basiert auf HEOS CLI v1.17, entspricht Firmware 2.41.140 oder neuer).
  4. Notieren Sie die IP-Adresse des Lautsprechers — zu finden in der HEOS-App unter Settings → My Devices → About oder in der DHCP-Client-Liste des Routers.

Verwenden Sie für das HEOS-Gerät, mit dem sich TapHome verbindet, eine statische IP oder eine DHCP-Reservierung. Der Lautsprecher dient als Gateway zu allen anderen HEOS-Playern, daher hält eine stabile Adresse das gesamte Ökosystem erreichbar.

Das HEOS CLI hat keine Authentifizierung. Halten Sie den Lautsprecher in einem vertrauenswürdigen LAN-Segment — jedes Gerät mit Netzwerkzugriff auf Port 1255 kann die Wiedergabe steuern.

Konfiguration

Verbindungsdaten in TapHome

Geben Sie beim Template-Import in der TapHome-App die IP-Adresse des HEOS-Lautsprechers in den Parameter IP Address ein. Der TCP-Port 1255 und das Protokoll-Framing sind im Template bereits festgelegt. TapHome öffnet eine einzige persistente TCP-Verbindung und leitet HEOS-CLI-Befehle gebündelt darüber.

PlayerId-Initialisierung

Jeder heos://player/*-Befehl benötigt eine Player ID (pid) — eine große vorzeichenbehaftete Ganzzahl, die HEOS jedem Lautsprecher im Netzwerk dynamisch zuweist. Das Template speichert sie in der benutzerdefinierten Variable PlayerId. Da HEOS die pid pro Netzwerk dynamisch generiert, enthält das Template einen Platzhalterwert (-1857880384), der bei der Ersteinrichtung ersetzt werden muss.

Das Modul bietet zwei Service-Aktionen zur Ermittlung und Zuweisung der pid. Führen Sie diese nach dem Template-Import einmalig aus:

  1. Get Players — sendet heos://player/get_players und speichert die JSON-Antwort in der Modulvariable PlayersResponse. Das Service-Attribut Players des Moduls zeigt danach die Liste der im Netzwerk sichtbaren HEOS-Player mit Name, pid, Modell und IP-Adresse.
  2. Set Player Id — nimmt einen Index-Parameter entgegen (0-basierte Position im Players-Array) und schreibt die zugehörige pid in die benutzerdefinierte Variable PlayerId. Wählen Sie den Index des Lautsprechers, den TapHome steuern soll — ein TapHome-Modul ist jeweils an einen HEOS-Player gebunden.

Nach diesen beiden Schritten arbeiten alle untergeordneten Geräte (Volume, Mute, Play, Pause usw.) mit dem gewählten Lautsprecher. Um einen zweiten HEOS-Player zu steuern, importieren Sie eine zweite Template-Instanz gegen dieselbe (oder eine andere) HEOS-IP und wiederholen den Set-Player-Id-Schritt mit einem anderen Index.

Wenn das Players-Attribut beim ersten Aufruf leer ist, befindet sich das HEOS-CLI-Modul möglicherweise im Ruhezustand. Starten Sie Get Players nach einigen Sekunden erneut — HEOS bringt den CLI-Kern beim ersten Verbindungsaufbau hoch und benötigt einen Moment, bis alle Player aufgezählt sind.

Gerätevariablen

Zwei untergeordnete Geräte verfügen nach dem Template-Import über konfigurierbare Variablen:

GerätVariableStandardHinweise
Play URLURLPixabay-Türklingel MP3Beliebige direkte HTTP(S)-URL zu einem Audio-Stream oder einer Audiodatei
Volume Up / Volume DownStep5Lautstärkeänderung pro Tastendruck; die HEOS-Spezifikation begrenzt den Bereich auf 1–10

Öffnen Sie in der TapHome-App das Detail jedes Geräts und setzen Sie diese Variablen auf die gewünschten Werte. URL-codierte Sonderzeichen in der Stream-URL (&, =, %) übernimmt das Template-Skript.

Gerätefunktionen

Das Template stellt 12 untergeordnete Geräte bereit, die Wiedergabe, Lautstärke, Stummschaltung und URL-Streaming für einen HEOS-Player abdecken.

Lautstärkesteuerung

Das Gerät Volume ist ein Dimmer, der heos://player/get_volume liest (Pegel 0–100) und auf den Dimmer-Bereich 0.0–1.0 skaliert (Le := level / 100). Beim Schreiben wird heos://player/set_volume mit ROUND(Le * 100) gesendet. Die Lautstärke wird alle 2,5 Sekunden gepollt — externe Lautstärkeänderungen aus der HEOS-App oder einem anderen Controller werden in TapHome im nächsten Zyklus übernommen.

Volume Up und Volume Down sind Taster, die heos://player/volume_up und heos://player/volume_down mit der konfigurierbaren Schrittweite Step senden. Praktisch zur Anbindung an physische Wandschalter oder Smart Rules.

Mute

Mute ist ein Schalter, der heos://player/get_mute liest und heos://player/set_mute mit state=on|off schreibt. Bei Stummschaltung wird der Lautsprecher leise geschaltet, ohne den eigentlichen Lautstärkepegel zu verändern.

Transport

Vier Taster decken den grundlegenden Transport ab:

  • Play — schreibt heos://player/set_play_state?state=play
  • Pause — schreibt heos://player/set_play_state?state=pause
  • Stop — schreibt heos://player/set_play_state?state=stop
  • Next Track — schreibt heos://player/play_next
  • Previous Track — schreibt heos://player/play_previous

Es handelt sich um reine Schreibaktionen — das Template pollt den aktuellen Wiedergabestatus nicht zurück, die Transport-Taster spiegeln daher nicht wider, ob der Lautsprecher tatsächlich abspielt.

Wiedergabemodus

Play Mode ist ein Multi-Value-Schalter, der die HEOS-Flags repeat und shuffle in einen einzelnen 6-Wert-Enum kombiniert. Er wird über heos://player/get_play_mode und heos://player/set_play_mode gelesen und geschrieben:

WertModus
0Keine Wiederholung, keine Zufallswiedergabe
1Alles wiederholen
2Einzeltitel wiederholen
3Zufall, keine Wiederholung
4Zufall, alles wiederholen
5Zufall, Einzeltitel wiederholen

Das XML-Template reserviert in der Multi-Value-Konfiguration die Slots 6–9, diese sind jedoch ungenutzt — nur die Werte 0–5 sind erreichbare Zustände.

QuickSelect-Presets

Quick Select ist ein reiner Schreib-Multi-Value-Schalter (1–9), der ein HEOS-QuickSelect-Preset über heos://player/play_quickselect?id={1-9} auslöst. Quick Selects werden direkt im Player abgelegt (typischerweise über einen gekoppelten Denon AVR oder HEOS Bar) und können einen voreingestellten Eingang, eine Quelle oder einen Sender speichern.

Quick Select ist in der HEOS-Spezifikation §4.2.24 als AVR-only-Befehl definiert. Er funktioniert auf HEOS Amp, HEOS Link, HEOS Bar und HEOS-fähigen AVR-/Receiver-Produkten, liefert jedoch auf eigenständigen kabellosen HEOS-Lautsprechern wie HEOS 1, 3, 5 und 7 einen Fehler zurück.

Play URL (benutzerdefinierter Stream)

Play URL ist ein Taster, der eine beliebige HTTP(S)-Audio-URL über heos://browse/play_stream?pid={PlayerId}&url={URL} an den gewählten HEOS-Player streamt. Die Gerätevariable URL hält das Stream-Ziel — standardmäßig eine Pixabay-Türklingel-MP3 als Beispiel und wird typischerweise mit einem Internetradio-Stream, Benachrichtigungston oder einer beliebigen direkten Audio-URL überschrieben.

Sinnvolle Anwendungen: Türklingelbenachrichtigungen, Sprachdurchsagen von einem lokalen HTTP-Server, Wiedergabe einer festen Internetradio-URL ohne HEOS Favorites.

Weitere Funktionen

Das HEOS-CLI-Protokoll stellt deutlich mehr Funktionen bereit, als das Template aktuell implementiert. Folgende Punkte lassen sich in einem künftigen Template-Update ergänzen:

  • Now-Playing-Metadaten (player/get_now_playing_media) — aktueller Titel, Künstler, Album und Cover-URL als String-Attribute.
  • Wiedergabestatus-Feedback (player/get_play_state) — Rücklesen von play / pause / stop, damit Transport-Taster den tatsächlichen Status widerspiegeln.
  • Toggle Mute (player/toggle_mute) — einzelner Befehl zum Umschalten der Stummschaltung ohne vorheriges Lesen des Status.
  • Queue-Verwaltung (player/get_queue, play_queue, clear_queue) — Durchsuchen und Manipulieren der aktuellen Wiedergabeliste.
  • Favoriten und Presets (browse/play_preset) — Auslösen gespeicherter HEOS Favorites über die Preset-Nummer, einfacher als rohes Play URL für gespeicherte Sender.
  • Auswahl physischer Eingänge (browse/play_input) — Umschalten auf AUX / Line-In an HEOS Amp-, Link- und AVR-Modellen.
  • Multiroom-Gruppierung (group/*) — Erstellen, Auflösen und gesammelte Lautstärkeregelung von HEOS-Gruppen für synchrone Wiedergabe im gesamten Haus.
  • Firmware-Wartung (system/check_update, system/reboot) — Auslösen von Firmware-Update-Prüfungen und Fern-Neustart.
  • Change Events (system/register_for_change_events) — optionale Push-Benachrichtigungen für Lautstärke-, Status- und Now-Playing-Änderungen statt Polling.
  • HEOS-Konto-Anmeldung (system/sign_in) — erforderlich für den Zugriff auf kostenpflichtige Streaming-Dienste (Tidal, Amazon Music, Deezer, eigene TuneIn-Sender) aus TapHome.

Fehlerbehebung

Players-Attribut bleibt nach Get Players leer

HEOS betreibt sein CLI-Modul im Ruhezustand und startet den Kern beim ersten Socket-Verbindungsaufbau, was einige Sekunden dauern kann. Warten Sie 5–10 Sekunden und führen Sie Get Players erneut aus. Ist es weiterhin leer, überprüfen Sie:

  1. Die TapHome CCU kann die IP des Lautsprechers auf TCP-Port 1255 erreichen (gleiches LAN / Subnetz, keine Firewall dazwischen).
  2. Das HEOS-Gerät ist in der HEOS-Mobile-App vollständig online — das CLI ist erst verfügbar, nachdem die erste WLAN-Einrichtung abgeschlossen ist.
  3. Die IP-Adresse im Modul entspricht weiterhin dem Lautsprecher — DHCP-Erneuerungen können sie ändern. Verwenden Sie eine DHCP-Reservierung oder eine statische IP.
Alle Gerätebefehle liefern “ID Not Valid”

Die benutzerdefinierte Variable PlayerId enthält entweder noch den Template-Default (-1857880384) oder verweist auf eine pid, die nicht mehr existiert (z. B. nach einem Werksreset). Führen Sie Get Players und anschließend Set Player Id mit dem korrekten Index erneut aus.

Play-URL-Aktion bleibt wirkungslos oder liefert einen Fehler

Das Play-URL-Skript im aktuellen Template hat eine bekannte Eigenart: Es referenziert playerId (Kleinschreibung) statt der benutzerdefinierten Variable PlayerId. Bleibt die Aktion wirkungslos, öffnen Sie in der TapHome-App das Skript des Play-URL-Geräts und korrigieren Sie den Variablennamen zu PlayerId. Nach dieser Korrektur sendet die Aktion heos://browse/play_stream korrekt. Stellen Sie außerdem sicher, dass die Stream-URL vom HEOS-Lautsprecher aus erreichbar ist und ein unterstütztes Audioformat verwendet (MP3, AAC, WAV — HLS-Streams werden nicht zuverlässig akzeptiert).

Quick Select liefert einen Fehler

Quick Select funktioniert nur auf HEOS-fähigen AVR-, Verstärker- und Soundbar-Produkten. Verwenden Sie auf kabellosen HEOS-Lautsprechern (HEOS 1, 3, 5, 7 und Denon Home Lautsprecher ohne Soundbar-Funktionen) stattdessen Play URL oder Favoriten-Streams.

Änderungen in der HEOS-App sind in TapHome nicht sichtbar

Das Template pollt den Status alle 2,5 Sekunden für Volume, Mute und Play Mode. Der Transport-Status (Play / Pause / Stop) wird nicht gepollt — das sind reine Taster. Hat ein externer Controller den Wiedergabemodus geändert oder ein neues Streaming-Konto gekoppelt, erzwingt das Trennen und erneute Verbinden des TapHome-Moduls mit dem Lautsprecher eine neue CLI-Sitzung.

Mehrere HEOS-Player — wie steuert man mehr als einen?

Ein TapHome-Modul steuert genau einen HEOS-Player (eine pid). Für einen zweiten Lautsprecher importieren Sie eine zweite Instanz des Denon-HEOS-Templates. Die IP-Adresse kann auf dasselbe HEOS-Gerät zeigen — das CLI eines Lautsprechers erreicht jeden anderen HEOS-Player im Netzwerk — und die Aktion Set Player Id mit einem anderen Index bindet das zweite Modul an einen anderen Lautsprecher.

Verfügbare Geräte

Denon HEOS Lautsprecher Modul
Serviceattribute
PlayerJSON-Array der im Netzwerk erreichbaren HEOS-Player (Name, pid, Modell, IP, Version). Wird durch die Aktion Get Players gefüllt und dient zur Auswahl des Index für Set Player Id.
Serviceaktionen
Player abrufenErkennt alle HEOS-Player im Netzwerk durch Senden von heos://player/get_players. Die Antwort wird im Attribut Player zwischengespeichert und muss vor Set Player Id ausgeführt werden.
Player Id setzenBindet dieses TapHome-Modul an einen HEOS-Player. Übernimmt den 0-basierten Index aus der Player-Liste und schreibt die zugehörige pid in die benutzerdefinierte Variable PlayerId. Erforderlich nach Get Players, damit die untergeordneten Geräte funktionieren.
Benutzerdefinierte Variablen

Denon HEOS speaker

Schreiben (Modul)
# 1. Run Get Players action
					# 2. Save and go back
					# 3. Review the Players attribute in the top of page
					# 4. Run Set Player Id with index of your choice
Listener
VAR response := TOSTRING(RECEIVEDBYTES);
					VAR command := PARSEJSON(response, "heos.command", 1);
					VAR result := PARSEJSON(response, "heos.result", 1);
					VAR message := PARSEJSON(response, "heos.message", 1);

					IF (result = "fail" AND INDEXOF(message, "ID Not Valid") >= 0)
					ADDERROR("PlayerId is not set properly.");
					END

					IF (command = "player/get_players")
					IF (result = "fail")
					ADDERROR("Error: " + message);
					ELSE
					PlayersResponse := response;
					END
					END
Serviceattribute
Players
PARSEJSON(PlayersResponse, "payload");
Serviceaktionen
Get Players
SENDDATA("heos://player/get_players");
Set Player Id
Parameter: Index (0–20 Index)
PlayerId := PARSEJSON(PlayersResponse,"payload[" + Index + "].pid");
Lautsprecher stummschalten Schalter

Schaltet die Audioausgabe des gewählten HEOS-Players stumm oder wieder laut, ohne den zugrunde liegenden Lautstärkepegel zu verändern.

boolean switch
Werte / Zustände: Muted · Unmuted

Lautsprecher stummschalten

Schaltzustand lesen
SENDDATA("heos://player/get_mute?pid=" + PlayerId);
Schaltzustand schreiben
VAR mute := SWITCH(St, 0, "off", 1, "on", "off");
							SENDDATA("heos://player/set_mute?pid=" + PlayerId + "&state=" + mute);
Listener
VAR responseJson := TOSTRING(RECEIVEDBYTES);

							IF(PARSEJSON(responseJson, "heos.command", 1) = "player/get_mute")
							VAR mute := PARSETEXT(responseJson, "state=");
							St := SWITCH(mute, "off", 0, "on", 1, 0);
							END
Nächster Titel Taster
button push

Nächster Titel

Tastenstatus schreiben
SENDDATA("heos://player/play_next?pid=" + PlayerId);
Pause Taster
button push

Pause

Tastenstatus schreiben
SENDDATA("heos://player/set_play_state?pid=" + PlayerId + "&state=pause")
Wiedergabe Taster
button push

Wiedergabe

Tastenstatus schreiben
SENDDATA("heos://player/set_play_state?pid=" + PlayerId + "&state=play");
Wiedergabemodus Mehrwertschalter

Kombinierter Wiederhol- und Zufallswiedergabestatus als 6-Werte-Enum — 0 keine Wiederholung, 1 alles wiederholen, 2 Einzeltitel wiederholen, 3 Zufall, 4 Zufall + alles wiederholen, 5 Zufall + Einzeltitel wiederholen.

enum multi-value
Werte / Zustände: No repeat · Repeat all · Repeat 1 · Shuffle, no repeat · Shuffle, repeat all · Shuffle, repeat one

Wiedergabemodus

Schaltzustand lesen
SENDDATA("heos://player/get_play_mode?pid=" + PlayerId);
Schaltzustand schreiben
VAR repeat := SWITCH( IF(Mu > 2, Mu - 3, Mu), 0, "off", 1, "on_all", 2, "on_one", "off");
							VAR shuffle := IF(Mu > 2, "on", "off");
							SENDDATA("heos://player/set_play_mode?pid=" + PlayerId + "&repeat=" + repeat + "&shuffle=" + shuffle);
Listener
VAR responseJson := TOSTRING(RECEIVEDBYTES);
							VAR command := PARSEJSON(responseJson, "heos.command", 1);
							VAR result := PARSEJSON(responseJson, "heos.result", 1);

							IF (command = "player/get_play_mode")
							IF (result = "fail")
							VAR errorMessage := PARSEJSON(responseJson, "heos.message", 1);
							ADDERROR("Error: " + errorMessage);
							ELSE
							VAR repeat := PARSETEXT(responseJson, "repeat=", "&");
							VAR shuffle := PARSETEXT(responseJson, "shuffle=");
							Mu := SWITCH(repeat, "off", 0, "on_all", 1, "on_one", 2, 0) + SWITCH(shuffle, "off", 0, "on", 3, 0);
							END
							END
URL wiedergeben Taster

Streamt eine beliebige HTTP(S)-Audio-URL an den HEOS-Player (Türklingeltöne, Internetradio, Sprachdurchsagen). Die URL wird pro Gerät über die benutzerdefinierte Variable URL konfiguriert.

button push
Variable: URL

URL wiedergeben

Tastenstatus schreiben
SENDDATA("heos://browse/play_stream?pid=" + playerId + "&url=" + URL);
Listener
VAR response := TOSTRING(RECEIVEDBYTES);
							VAR command := PARSEJSON(response, "heos.command", 1);
							VAR result := PARSEJSON(response, "heos.result", 1);
							VAR message := PARSEJSON(response, "heos.message", 1);

							IF (command = "browse/play_stream")
							IF (result = "fail")
							ADDERROR("Error: " + message);
							ELSE
							VAR success := response;
							END
							END
Vorheriger Titel Taster
button push

Vorheriger Titel

Tastenstatus schreiben
SENDDATA("heos://player/play_previous?pid=" + PlayerId);
Quick Select Mehrwertschalter

Löst eines der auf dem Player gespeicherten HEOS-QuickSelect-Presets 1–9 aus. Nur AVR / HEOS Bar / HEOS Amp — auf eigenständigen kabellosen HEOS-Lautsprechern nicht unterstützt.

enum multi-value

Quick Select

Schaltzustand schreiben
IF(Mu != 0)
							SENDDATA("heos://player/play_quickselect?pid=" + PlayerId + "&id=" + Mu);
							END

							# To make this work like a switch, create a following script.
							#
							# IF(Mu != 0)
							#   SLEEP(100);
							#   Mu := 0;
							# END
Stop Taster
button push

Stop

Tastenstatus schreiben
SENDDATA("heos://player/set_play_state?pid=" + PlayerId + "&state=stop")
Lautstärke Dimmer

Dimmer-Steuerung der HEOS-Player-Lautstärke. Der HEOS-Pegel 0–100 wird auf den Dimmer-Bereich 0.0–1.0 abgebildet und alle 2,5 Sekunden gepollt.

numeric Einheit: % dimmer

Lautstärke

Level lesen
SENDDATA("heos://player/get_volume?pid=" + PlayerId)
Level schreiben
SENDDATA("heos://player/set_volume?pid=" + PlayerId + "&level=" + ROUND(Le*100))
Listener
VAR responseJson := TOSTRING(RECEIVEDBYTES);
							VAR command := PARSEJSON(responseJson, "heos.command", 1);
							VAR result := PARSEJSON(responseJson, "heos.result", 1);

							IF (command = "player/get_volume")
							IF (result = "fail")
							VAR errorMessage := PARSEJSON(responseJson, "heos.message", 1);
							ADDERROR("Error: " + errorMessage);
							ELSE
							Le := PARSETEXT(responseJson, "level=") / 100.0;
							END
							END
Lautstärke verringern Taster

Verringert die Lautstärke um die konfigurierte Schrittweite Step (Standard 5, HEOS erlaubt 1–10) über den Befehl heos://player/volume_down.

button push
Variable: Step

Lautstärke verringern

Tastenstatus schreiben
SENDDATA("heos://player/volume_down?pid=" + PlayerId + "&step=" + Step);
Lautstärke erhöhen Taster

Erhöht die Lautstärke um die konfigurierte Schrittweite Step (Standard 5, HEOS erlaubt 1–10) über den Befehl heos://player/volume_up.

button push
Variable: Step

Lautstärke erhöhen

Tastenstatus schreiben
SENDDATA("heos://player/volume_up?pid=" + PlayerId + "&step=" + Step);
Verbindung: Packet Parser → TCP
Mögliche Verbesserungen (14)
  • Now Playing Metadata — Current track artist, album, title, artwork URL, media_id — would require string attributes and a listener to cache the response
  • Play State (read) — Reads play|pause|stop back from the player. Template only writes play state (Play/Pause/Stop buttons) without feedback
  • Toggle Mute — Single-command mute toggle without reading current state; could be a second push-button
  • Check Firmware Update — Trigger firmware update check — useful as maintenance action
  • Heart Beat / Connection Health — Periodic heart_beat command for connection liveness; could map to a module-level online/offline sensor
  • Reboot Speaker — Remote reboot of the HEOS device — natural service action
  • Play Queue — Full queue management (get, play item, remove, save as playlist, clear, move). Template has no queue exposure
  • Music Sources / Browse — Browse and search streaming services (TuneIn, local library, favorites, playlists). Not exposed in template
  • Favorites / Preset Stations — Play a favorite station by preset number 1–N; simpler than Play URL for saved stations
  • Input Source (AUX / Line-In) — Switch to a physical input (inputs/aux_in_1, inputs/line_in_1, etc.) — only applicable to AVR/Amp/Link models
  • Group / Multi-Room Control — Create/destroy groups, group volume, group mute — enables multi-room synchronized playback across HEOS speakers. Not exposed in template
  • Player Info (name, model, version, IP) — Static metadata about the player; useful for diagnostics
  • Change Events (unsolicited push) — Register for change events via system/register_for_change_events and receive push updates (volume, state, now playing, queue). Template relies on polling only
  • HEOS Account Sign In / Out — Required for access to paid streaming services and cloud favorites; no hooks in template

Quellen