Modul für Denon (Marantz) AV Receiver

Begonnen von raman, 03 Oktober 2016, 18:08:58

Vorheriges Thema - Nächstes Thema

olwaldi

Zitat von: Shadow3561 am 21 August 2025, 16:34:54Warum nicht etwas flexibler?

...
Danke für den Hinweis. Ich habe allerdings auch 88.2kHz gesehen, und das kann man so nicht von 192 unterscheiden. Vermutlich müßte man alle möglichen dreistelligen Werte in "gemeinte" Werte ummappen, etwa 4x 44.1 - gemeldet als 176 - gemeint 176.4

olwaldi

Bei meiner Analyse eines HDMI-Problems wegen recht langem Kabel ist mir aufgefallen, daß das Denon-Modul bei vielen set-Kommandos jeweils ZWEI gleiche Events generiert. Eigentlich nicht so tragisch und kann durch event-on-changed-readings problemlos abgefangen werden. Allerdings könnte es ja auch sein, daß derartige Kommandos tatsächlich 2x zum Denon geschickt werden, und das könnte z.B. mein HDMI-Problem erklären. Konkret gesehen habe ich's bei monitorOut und inputSound, z.B. bei
set Denon inputSound digital
Mir selber ist im Code nix aufgefallen. Und letztendlich kann das ja auch ein Denon-Feature sein, der ja viele Kommandos mit einer Art Echo beantwortet. Glaube ich aber nicht wirklich.


Grüßle, Michael

olwaldi

#872
Altes Problem revisited - vgl. Seite 46 hier:
Mir ist aufgefallen, daß das Reading state bei mir immer auf "opened" steht. Sollte aber eigentlich synchron zum Internal STATE gesetzt sein. Im Sourcecode 70_DENON_AVR.pm finde ich seit rund 2019 eine auskommentierte Stelle
#        readingsBulkUpdate($hash, "state", $power);wenn das PW-Kommando gesendet wird. Habe die Zeile re-aktiviert, und schon hat state den erwarteten Wert.

Aber: Das alte "opened" wird relevant für die Funktion reconnect. Mir ist unklar, wie ich beides zusammenbringen könnte. Es gibt auch einige Stellen in 70_DENON_AVR.pm, wo STATE auf "opened" gesetzt würde, wenn es nicht auskommentiert wäre. Das wiederum ist guter Stil, da STATE nicht aus dem Modul heraus geändert werden soll. DevIo.pm wiederum liest state, um STATE zu setzen.

Ideen?

Grüßle, Michael

Nachtrag: Irgendwo in meinem Code nutze ich $state via Readingsval("Denon", "state", "unknown") und benötige daher $state. Das habe ich jetzt auf Value("Denon") umgestellt, was STATE zurückgibt. Somit benötige ich $state nicht mehr. Trotzdem irritierend, wenn $state und $STATE verschiedene Werte enthalten.

Nachtrag2: Und wieder was 'rausgefunden. STATE und state/stateAV ändern sich zu unterschiedlichen Zeiten. Beim Einschalten ist STATE erst 10s später als state auf on. Macht auch Sinn, da erst dann der Denon mit der Tonausgabe beginnt. Nutze also dann doch wieder state.

olwaldi

Noch ein kleiner Fix: connectionCheck darf auf "off" stehen, dann gehen natürlich Berechnungen damit schief. Da ich mittlerweile connectionCheck auf "off" gesetzt habe, gibt's beim manuellen Re-connect die Fehlermeldung:
2025.11.26 17:23:50 1: PERL WARNING: Argument "off" isn't numeric in addition (+) at ./FHEM/70_DENON_AVR.pm line 3594.
2025.11.26 17:23:50 1: stacktrace:
2025.11.26 17:23:50 1:     main::__ANON__                      called by ./FHEM/70_DENON_AVR.pm (3594)
2025.11.26 17:23:50 1:     main::DENON_AVR_UpdateConfig        called by fhem.pl (3514)
2025.11.26 17:23:50 1:     main::HandleTimeout                 called by fhem.pl (710)
Die Lösung ist dann in Zeile 3594 ff.
my $connectionCheck = AttrVal($name, "connectionCheck", "60");
if ($connectionCheck ne "off") {
  RemoveInternalTimer($hash);
  InternalTimer(gettimeofday() + $connectionCheck, "DENON_AVR_ConnectionCheck", $hash, 0);
};
Anbei für Interessierte meine Version von 70_DENON_AVR.pm

Und man muß z.B. einen manuellen Re-connect machen, wenn der Denon AVR irgendwieso komplett ausgeschaltet wird. Das ist mir gestern Abend passiert, da ich ein Firmware-Update im Denon eingespielt habe.


Grüßle, Michael