Externe Integration - Denon / Marantz AVR

Neue Version der Denon / Marantz-Integration: 1.2.4, veröffentlicht (sie erscheint im Store beim nächsten Indexer-Lauf). Sie erfordert Gladys 5.3.0 oder neuer; auf einer älteren Gladys bleibt die 1.2.3 installiert.

Der Verstärker wird ein Gladys-Musikplayer

Im Musik-Bereich des Dashboards und in der Szenenaktion „Musik abspielen“ von Gladys:

  • Durchsuchen der Musikdienste, die mit dem Verstärker in der HEOS-App verbunden sind, wie in der App: Ihre HEOS-Favoriten, Ihre HEOS-Playlists und jeder Dienst;
  • Suche nach einem Künstler, einem Album, einer Playlist oder einem Titel;
  • Abspielen durch Ersetzen der Warteschlange, Abspielen danach oder Hinzufügen am Ende;
  • Anzeigen der Warteschlange und Überspringen zu einem Track;
  • Anzeigen des aktuellen Titels, Künstlers, Albums und Covers.

Für einen bereits hinzugefügten Verstärker: Entdeckung, dann „Aktualisieren“ am Verstärker, um die neuen Funktionen zu erhalten.

Qobuz

Seit 2025 ist Qobuz in HEOS integriert: Es reicht, Ihr Konto in der HEOS-App zu verknüpfen. Die Integration spricht nur mit dem Verstärker, nie direkt mit Qobuz.

  • Die Szenenaktion „Verstärker: Qobuz abspielen“ spielt eine Ihrer Playlists, ein Album, das letzte Album eines Künstlers, einen Künstler oder einen Titel ab. Bereits erstellte Szenen funktionieren ohne Änderungen.
  • Fehlerbehebung: HEOS markiert Qobuz-Playlists als „nicht abspielbar“. Sie wurden daher ignoriert; jetzt werden sie gefunden und abgespielt.

Die anderen Dienste der HEOS-App

Neue Szenenaktion „Verstärker: Von einem HEOS-Dienst abspielen“, mit wählbarem Dienst:

  • TIDAL, Deezer, SoundCloud, Napster: Durchsuchen, Suche, Abspielen einer Playlist, eines Albums, des letzten Albums eines Künstlers, eines Künstlers oder eines Titels;
  • TuneIn, iHeartRadio: Ein Radio per Namen, z. B. FIP;
  • Amazon Music: Kann durchsucht werden, aber HEOS erlaubt keine Suche darin;
  • Netzwerk-Musikserver (DLNA), USB-Stick, AUX-Eingänge: Können durchsucht und abgespielt werden;
  • Spotify: In HEOS läuft Spotify nur über Spotify Connect, von der Spotify-App aus. Es hat kein Verzeichnis, das der Verstärker durchsuchen kann: Die Integration kann es daher nicht starten.

Eine Einstellung „Bevorzugter Musikdienst für die Suche“ wählt aus, wo gesucht wird: Qobuz, wenn es verbunden ist, sonst alle Dienste.

Bekannte Einschränkungen

  • HEOS gibt kein Datum für Alben an: Das „letzte Album“ wird von der Künstlerseite abgeleitet. Die Aktion zeigt an, wie sie es gefunden hat.
  • Gladys wartet 10 Sekunden auf einen Musikbefehl. Wenn ein Dienst langsam antwortet, bricht die Integration vorher ab und teilt dies mit, ohne etwas zu starten. Ausnahme: Wenn der Verstärker die allerletzte Bestätigung verzögert, kann die Musik trotzdem nach der Meldung starten.
  • Qobuz ist nicht in der offiziellen HEOS-Dokumentation. Ich konnte nicht alles an einem Verstärker testen: Ihr Feedback ist wertvoll.

Wenn Sie Zeit haben

  1. Einstellungen → „HEOS- und Qobuz-Dienste: Überprüfen“ (mit einem Künstler, wenn Sie möchten): Die Liste Ihrer Dienste wird angezeigt, und die „Qobuz-Check“-Zeilen der Logs zeigen, was der Verstärker antwortet. Posten Sie diese hier, ohne Ihren Kontonamen.
  2. Der Musik-Bereich: Durchsuchen und Suchen in Ihren Diensten.
  3. Eine Szene mit einer Playlist, einem Album und dem letzten Album eines Künstlers, den Sie gut kennen: Ist es das richtige?

Ein Problem? Melden Sie es hier oder in einem Issue des Repositories.

Hallo @lmilcent!

Zuerst einmal vielen Dank für die Integration, ich verwende sie jetzt für die Stimme meines Alarms: Gladys-Szenen, die den Wohnzimmerverstärker sprechen lassen, wenn nachts eine Tür geöffnet wird oder wenn der Alarm aktiviert ist. Und genau da bin ich auf zwei Probleme gestoßen, wenn der Verstärker aus dem Standby startet. Tagsüber ist das kein Problem, aber für einen Alarm ist es ärgerlich ^^

Meine Anlage: Nvidia Shield → Denon AVR-S650H → LG-TV, mit überall aktiviertem HDMI-CEC (das ist das, was den Fernseher einschaltet, wenn die Shield geweckt wird). Version 1.2.4, announcement_volume auf 50, announcement_restore aktiviert.

1. Aus dem Standby wird das Volume ignoriert und der Anfang des Satzes geht verloren

In den Logs sendet die Integration PWON, dann das Volume und den play_stream etwa 1,5 Sekunden später (das settle(timing.zoneSwitchDelayMs) von ensureZoneOn). Mein Verstärker braucht eher 4 bis 5 Sekunden, um wirklich aufzuwachen:

  • Der Volume-Befehl kommt zu früh, er wird ignoriert: die Ansage kommt mit dem Volume vor dem Standby (bei mir 20, also kaum hörbar);
  • die ersten eine bis zwei Sekunden des Tons gehen verloren: eine kurze Ansage wie „Nachtüberwachung aktiviert“ verschwindet vollständig.

Wenn der Verstärker bereits eingeschaltet ist, funktioniert alles perfekt.

2. Die Rückkehr zum vorherigen Zustand weckt die Shield auf, die alles wieder einschaltet

In restore() wird die ursprüngliche Quelle (bei mir der HDMI-Eingang der Shield) vor dem Rückkehr in den Standby gesetzt. Aber die Auswahl eines HDMI-Eingangs veranlasst den Verstärker, eine CEC-Nachricht <Routing Change> an das daran angeschlossene Gerät zu senden. Im Logcat der Shield:

HDMI-CEC: onReceiveCommand: <Routing Change> 5F:80:40:00:45:00
HDMI-CEC: go wakeup and send active source
PowerManagerService: Waking up from Asleep (reason=WAKE_REASON_HDMI)
OneTouchPlayAction: HDMI-CEC: start OneTouchPlay action

Die Shield wacht auf, führt einen „One Touch Play“ aus und schaltet den Verstärker und den Fernseher kurz nach dem PWSTANDBY wieder ein. Ergebnis: Bei jeder Ansage, nachts, schaltet sich der Wohnzimmerfernseher auf den Startbildschirm der Shield ein :sweat_smile:

Was ich vorschlagen würde

Zwei kleine Änderungen, die ich nicht selbst testen konnte, da der Container der Integration schreibgeschützt ist (sie laufen nur mit node --check):

  1. In ensureZoneOn (control.js), länger warten, wenn der Verstärker aus dem Standby kommt:
const wakingUp = state.power !== 1;
// ...
if (switched) {
  await settle(wakingUp ? Math.max(timing.zoneSwitchDelayMs, 5000) : timing.zoneSwitchDelayMs);
}

(Besser wäre es, zu warten, bis der Verstärker PWON bestätigt und dann eine kleine Verzögerung, aber ich weiß nicht, wie das bei anderen Modellen aussieht.)

  1. In restore() (announcements.js), die Quelle nicht zurücksetzen, wenn man in den Standby zurückkehrt:
if (
  snapshot.power !== 0 &&
  snapshot.source &&
  snapshot.source !== HEOS_SOURCE_CODE &&
  state.source === HEOS_SOURCE_CODE
) {
  setSource(externalId, snapshot.source, zone);
}

Der Verstärker geht dann im Standby auf die Netzwerkquelle. Beim nächsten Einschalten durch die Shield stellt das CEC ihn ohnehin auf die richtige Quelle.

Kleine Sache nebenbei: Wie du im Code vermerkt hast, geht das in der Szenenaktion angeforderte Volume im Kern verloren. Daher kann man keine leisen Ansagen nachts und einen lauten Alarm mit demselben Verstärker haben. Wenn der Kern eines Tages die Optionen überträgt, wäre das toll ^^

Bis dahin habe ich die Stimmen meines Alarms deaktiviert. Ich kann eine korrigierte Version testen, sobald du möchtest. Sag mir, wenn ich deinen Code falsch gelesen habe!

Danke @guim31 für diese perfekte Diagnose, inklusive Logcat der Shield: Du hast den Code richtig gelesen, die beiden Ursachen waren genau die. Es ist in der v1.2.5: Release v1.2.5 · LM1LC3N7/gladys-denon-avr · GitHub (sie kommt im Store beim nächsten Indexer-Lauf).

1. Ankündigung seit gestern: Warten auf den Verstärker
Ich habe deine „noch bessere“ Version genommen: Seit gestern wartet die Ankündigung, dass der Verstärker PWON bestätigt (maximal 5 Sekunden, dann geht es trotzdem weiter), lässt 2 Sekunden mehr, wechselt den Eingang und wartet, bis der Verstärker das angeforderte Volumen zurücksendet (maximal 4 Sekunden, der Lautstärkebefehl wird jede Sekunde gesendet) bevor der Ton gestartet wird. Alle Wartezeiten sind begrenzt, im schlimmsten Fall etwa 12,5 Sekunden. Die Szenenaktion antwortet sofort an Gladys und der Rest läuft im Hintergrund weiter.
Weitere Fälle, die abgedeckt wurden:

  • Zwei nahe beieinander liegende Ankündigungen teilen denselben Weckruf, und die zweite wartet auch auf ihr Volumen;
  • Wenn du den Verstärker während des Weckrufs (Szene, Widget oder Fernbedienung) ausschaltest, stoppt die Ankündigung sofort und nichts wird danach gesendet;
  • Ein durch die Integration geweckter Verstärker geht immer wieder in den Standby, selbst wenn er nie sein Einschalten bestätigt hat.
    Wenn der Verstärker bereits eingeschaltet ist, ändert sich nichts.

2. Kein HDMI-Eingang mehr vor dem Standby
Wie du es vorgeschlagen hast: Wenn der Verstärker in den Standby zurückkehrt, wird der ursprüngliche Eingang nicht mehr zurückgesetzt, also kein <Routing Change> mehr zur Shield. Der Verstärker geht im Netzwerkeingang schlafen und der CEC stellt ihn auf den richtigen Eingang, wenn die Shield ihn wieder einschaltet. Wenn der Verstärker vor der Ankündigung eingeschaltet war, wird der Eingang wie zuvor zurückgesetzt.

Das Volumen der Szenenaktion
Immer noch verloren im Kern in 5.3.2: Die Szene gibt { volume } korrekt weiter, aber der Proxy der externen Integrationen überträgt nur den Wert. Nichts zu tun auf der Integrationsseite im Moment; es wird auf der SDK-Seite verfolgt.

Ich habe keinen S650H: Alles wurde an einem Fake-Verstärker getestet. Wenn du die Stimmen deines Alarms zurücksetzt, sag mir, ob seit dem Standby das Volumen richtig ist, ob der Anfang des Satzes zu hören ist und ob das TV ausgeschaltet bleibt. Wenn dein Verstärker mehr als 5 Sekunden braucht, um PWON zu bestätigen, werden mir die DEBUG-Logs das sagen.

Danke @lmilcent für die 1.2.5, super schnell! :folded_hands:

Erster Versuch seit gestern: Die Shield bleibt nach der Ansage schön ausgeschaltet, das ist erledigt :+1:

Beim Satzanfang ist es viel besser, aber es fehlen bei mir noch etwa 2 Sekunden. In den Logs startet der Stream 4,9 Sekunden nach dem PWON:

13:33:07.224 power on (before an announcement) -> sent PWON
13:33:10.225 the receiver is still waking up, the announcement goes on
13:33:12.080 HEOS accepted the "Speak on a speaker" stream

Bei „Alarme wird aktiviert. Sie haben eine Minute, um das Haus zu verlassen.“ höre ich nur „Sie haben eine Minute…“. Mir kommt es so vor, als ob mein AVR-S650H „eingeschaltet“ sagt, lange bevor die Audioausgabe bereit ist.

Könntest du das wakeSettleMs in der Konfiguration einstellbar machen (oder auf 4-5 Sekunden erhöhen)? In der Zwischenzeit beginne ich meine Nachrichten mit „Achtung, Achtung.“, dann ist das, was wegfällt, nicht so schlimm ^^

Danke @guim31 für den Test und die Zeitstempel, das ist sehr klar. Es ist in der v1.2.6 enthalten: Release v1.2.6 · LM1LC3N7/gladys-denon-avr · GitHub (sie kommt im Store beim nächsten Indexer-Lauf).

  • Neue Einstellung: „Verzögerung nach dem Einschalten vor einer Ansage (Sekunden)“, von 0 bis 15 s, in der Integrationskonfiguration.
  • Neuer Fehler: 4 s statt 2. Mit deinen Messungen sollte das für den Satzanfang ausreichen; falls noch ein Wort fehlt, erhöhe auf 5 oder 6.
  • Ausschalten des Verstärkers während dieser Wartezeit beendet die Ansage sofort.
  • Schlimmster Fall seit gestern: etwa 25 s mit den maximalen 15 s (das Detail steht in der Dokumentation). Die Szenen haben immer noch ihre Antwort in 3 s.

Dein Feedback mit dem S650H ist willkommen, besonders um herauszufinden, welcher Wert für dich passt.