Smart Home

HEOS-Geräte per CLI steuern

Hifi-Geräte von Denon und Marantz bieten Zugriff per HEOS-CLI

Das Home Entertainment Operating System (HEOS) ist Denons nunmehr schon 10 Jahre alte System für Multiroom-Audio und Streaming im Netzwerk. Und natürlich ist es auch für die Schwester Marantz verfügbar. Die App ist eigentlich völlig in Ordnung und es gibt auch kostenpflichtige Tools für den Desktop. Viel interessanter: Es gibt eine Schnittstelle für die Konsole!

"Wie kann ich auf das Teil per Terminal zugreifen?" Ist das bei Euch auch immer die erste Frage bei neuen Geräten? Nein? Wie kommt Ihr dann nur hier hin ... ;) Egal, machen wir es kurz: Ich musste meinen alten Denon-Stereo-Verstärker ersetzen und habe mich für den Denon DRA-900H 2.2 entschieden - mehr dazu kommt demnächst. Und erfreulicherweise lässt sich auf HEOS-Geräte sehr sehr einfach per API zugreifen, nämlich per Telnet. Leider ist die Kommandostruktur eher so meh ...

Zugriff per API

Unter Windows habt Ihr standardmäßig kein Telnet mehr, unter Linux schon - gegebenenfalls müsst Ihr also nachinstallieren, zum Beispiel aus Chocolatey heraus. Und dann geht es fix:

telnet 192.168.178.148 1255

Fertig! Ihr benötigt kein Konto, kein Passwort, keinen Nutzernamen, nichts - nur die IP-Adresse Eures HEOS-Geräts. Ihr bekommt die Meldung:

Escape character is '^]'.

Diese Meldung sagt Euch, wie Ihr die Telnet-Verbindung beenden könnt. Auf einer normalen DE-Tastatur: Strg+AltGr+9 drücken, um Strg+] zu bekommen. Danach landet Ihr auf dem Telnet-Prompt, den Ihr mit Strg+D verlassen könnt.

Interessanter sind aber natürlich die Befehle. Zunächst solltet Ihr Euch die verfügbaren Player auflisten lassen, da Ihr zum Steuern die jeweilige ID benötigt:

heos://player/get_players

Die JSON-Ausgabe hier (allerdings aufgehübscht):

{
    "heos": {
        "command": "player/get_players",
        "result": "success",
        "message": ""
    },
    "payload": [
        {
            "name": "Denon DRA-900H",
            "pid": -1234567890,
            "model": "Denon DRA-900H",
            "version": "3.34.410",
            "ip": "192.168.178.148",
            "network": "wired",
            "lineout": 0,
            "serial": "DCGJ11111111"
        }
    ]
}

Notiert die PID oder kopiert sie in die Zwischenablage oder speichert sie in einer Variablen - und schon lässt sich etwa der Player-Status abfragen:

heos://player/get_play_state?pid=-1234567890

Wichtig: Das - gehört zur ID! Die komplette Befehlsreferenz gibt es hier bei Denons Muttergesellschaft D+M Group als PDF.

Bonus-Tipp: Angenommen, Ihr wollt einfach nur den Status auslesen, ohne eine interaktive Telnet-Sitzung zu betreten und eine komplette JSON-Ausgabe zu bekommen. Folgendes Konstrukt gibt den Status lesbar in einer separaten Zeile aus:

{ echo "heos://player/get_play_state?pid=-1234567890"; sleep 2; } | \
telnet 192.168.178.148 1255 | \
sed -r ' s/.*state=(\w+).*/\n\n\1\n\n/g '

Das {}-Konstrukt gruppiert schlicht den HEOS-Befehl und ein Sleep-Kommando, welches benötigt wird, um die Telnet-Sitzung so lange offen zu halten bis der HEOS-Befehl auch ausgeführt wird. Das sed-Konstrukt reduziert die Ausgabe dann auf das eine Wort (\w+) hinter "state=".

Und wenn es wirklich nur und ausschließlich der Status sein soll, ohne jegliche Telnet-eigenen Ausgaben:

( { echo "heos://player/get_play_state?pid=-1234567890"; sleep 2; } |  \
telnet 192.168.178.148 1255 | \
sed -n -r ' s/.*state=(\w+).*/\1/p ' ) 2>&1 | \
grep -v ^Connection

Mit 2>$1 und grep wird einfach nur etwas mehr aufgeräumt - ist auch nur als Inspiration gedacht.

Mit diesen Beispielen solltet Ihr den Einstieg in eigene Spielereien schaffen. Natürlich gibt es auch "fertige" API-Integrationen: Zum Beispiel Heos CLI Client für den Terminal (hat hier nicht funktioniert) und heos-api für Node.js.

48% sparen
Denon DRA-900H 2.2-Kanal 145W 8K-AV-Verstärker mit HEOS Built-in - Silber
899,00 €
467,50 €
(Stand: 23.01.2025 05:25 - Details)
Verkäufer: Best of Electronic
Zum Angebot bei Amazon ↗ *
(* = Affiliate-Link / Bildquelle: Amazon-Partnerprogramm)
×
Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Schaltfläche "Zurück zum Anfang"