External integration - Denon / Marantz AVR

Hi everyone!

Denon / Marantz AVR — Gladys Assistant Integration

Introduction

This external integration allows you to control a Denon or Marantz AV receiver from Gladys Assistant, locally, without a cloud account or internet dependency. It relies on the native « AVR Control » protocol (Telnet, shared by almost all Denon/Marantz network receivers) and, for HEOS-equipped models, on the dedicated HEOS CLI protocol for streaming. The receiver itself pushes every state change to Gladys in real-time — no periodic hardware polling.

What It Does Today

  • Automatic discovery of the receiver on the network (SSDP/UPnP), with fallback to manual IP (one or more, separated by commas) if multicast is blocked.
  • Power, volume, mute: controllable from the dashboard, synchronized in real-time with the physical remote or Denon/HEOS app.
  • Input source: dropdown menu on the dashboard, with custom renaming or hiding of each input (e.g., display « Chromecast » instead of « SAT/CBL »).
  • Sound mode: dropdown menu of surround modes (Movie, Stereo, Pure Direct…).
  • Playback controls (Play/Pause/Next/Previous) via a « Music » card on the dashboard. For streaming sources managed by HEOS (Qobuz, Spotify Connect, TIDAL…), commands automatically use the HEOS CLI protocol; otherwise, they use the classic Telnet channel.
  • Current playing title (artist/track), refreshed both by HEOS push notifications and by an active check every 30 seconds, to stay up-to-date even in case of a temporary HEOS connection drop.
  • « Test Connection » action for a quick diagnostic of the receiver’s status.
  • Docker image published automatically (multi-architecture amd64/arm64) with each new version. I’ve also worked on the Docker image security to minimize the attack surface.

Current Limitations

  • Tested in real conditions on a single model (Denon AVR-S970H) — behavior may vary slightly depending on the model or firmware version.
  • Sound mode: the list of proposed modes is generic and may not cover all names across receiver generations.
  • HEOS: implemented from community libraries and documentation (including the library used by the official Home Assistant integration), not yet tested in real paid streaming conditions by the developer. In case of unexpected behavior, the integration automatically falls back to the classic channel without breaking the rest.
  • No multi-zone: Zone 2/3 not managed (for now, depending on needs).
  • Manual multi-receiver discovery: requires a fixed IP or DHCP reservation per receiver, the entry does not follow automatic IP changes.

I’ll test this tomorrow with my Denon s650h!

Well, I can cross this integration off my to-do list :sweat_smile:
Thanks @lmilcent, even though I still don’t have my Marantz Stereo 70 (or the upcoming Cinema 70 planned for the end of the year).

Ahaha perfect :wink:
If you need to, you can ask your Claude to make a PR on my repo, and I’ll ask mine to implement your plan :rofl:

It’s missing the local tag to be perfect :wink:

Thanks, I’ll add that!