Denon AV-Receiver mit FHEM in die Multimediasteuerung integrieren

Loxone im Einsatz? Dann schau dir unseren LoxKurs an und profitiere von unserem Wissen!

Zu einer halbwegs brauchbaren HiFi-Ausr√ľstung geh√∂rt selbstredend auch ein AV-Receiver, der nicht nur prim√§r die Lautsprecher befeuert, sondern auch als verl√§sslicher HDMI-Switch auftritt. Und das ist wirklich relevant, kann im heutigen 4K-HDR-HDMI2.2-Dolby-Atmos-HD-Schiess-Mich-Wahn aber gerade aus Anwendersicht schnell alles andere als trivial werden. Da man weiss Gott wieviele Einstellungen vornehmen kann bzw. manchmal sogar muss, um das gew√ľnschte audiovisuelle Erlebnis aus der jeweiligen Multimediaquelle herauszukitzeln, sollte so ein Wunderwerk der Technik nat√ľrlich auch ins Smart Home integrierbar sein, um Dinge nach und nach automatisieren zu k√∂nnen.

Wie diese Anbindung im Fall des Denon AVR-X1400H in FHEM aussieht und welche M√∂glichkeiten das f√ľr den Alltagsbetrieb mit sich bringt, ist Inhalt des nachfolgenden Blogpost.

AV-Receiver – Die Qual der Wahl

Neben dem von mir gew√§hlten und hier vorgestellten Denon AVR-X1400H (Affiliate-Link)¬†gibt es nat√ľrlich auch eine andere Reihe namhafter Hersteller wie Pioneer oder Marantz. Ich habe mir die letzten Jahre Einiges selbst angeschaut und bin mehrfach gewechselt, aus diversen Gr√ľnden. Immer hat mich irgendetwas gest√∂rt oder etwas hat nicht so funktioniert, wie ich es mir erhofft hatte. Umso gl√ľcklicher bin ich jetzt mit der Denon-Kiste, die mich technisch bisher am meisten √ľberzeugen konnte und gl√ľcklicherweise auch optisch unaufdringlich daherkommt.

Ein wirklich wichtiger Grund, der f√ľr den Denon spricht, ist f√ľr mich die perfekt funktionierende Intergration ins Smart Home. Einerseits l√§sst er sich ohne Probleme √ľber UDP-Nachrichten (z.B. √ľber Loxone) ansteuern, um „einfache“ Schaltvorg√§nge auszul√∂sen und andererseits √ľber das passende FHEM-Modul DENON_AVR einbinden, um neben den reinen Schaltvorg√§ngen auch auf den aktuellen Ger√§testatus zuzugreifen, um diese wiederum als Ausl√∂ser f√ľr bestimmte Aktionen nutzen zu k√∂nnen.

Das Beste f√ľr mich daran: Das FHEM-Modul – auch wenn es immer noch nicht im offiziellen Repository verf√ľgbar ist und deshalb manuell nachinstalliert werden muss – funktioniert seit Wochen ohne jeglichen Aussetzer und hat auch beim mehrfachen Neustart von FHEM oder des AV-Receivers keinerelei Verbindungsprobleme. Und gerade das hat mich auf lange Sicht beim zuvor verwendeten Pioneer langsam angefangen zu nerven.

Denon AV-Receiver in FHEM einbinden

Um den Denon-Receiver in FHEM nutzen zu können, muss also erstmal das von raman im FHEM-Forum bereitgestellte Plugin manuell heruntergeladen werden -> Direktdownload

Das geladene zip-Archiv „Denon_AVR.zip“ entpacken und die darin enthaltenen Dateien¬†70_DENON_AVR.pm und¬†71_DENON_AVR_ZONE.pm¬†in den passenden FHEM-Plugin-Ordner kopieren. Dieser ist gew√∂hnlich im Pfad¬†/opt/fhem/FHEM zu finden. Am einfachsten kopiert man das Ganze per FileZilla, indem man sich √ľber das Protokoll „SFTP – SSH File Transfer Protocol“ einloggt. Voraussetzung ist nat√ľrlich, dass SSH aktiviert ist – Bei Verwendung eines Raspbian-Images lautet der Benutzer dann „pi“ und das Standardpasswort „raspberry“.

Jetzt geht es in der FHEM-Oberfläche weiter. Über den FHEM-Konsolenbefehl

define Denon DENON_AVR 192.168.3.87:23

wird der AV-Receiver eingebunden. Die IP-Adresse des Denon (hier: 192.168.3.87) muss jeder selbst ausfindig machen. Entweder √ľber das OnScreen-Interface des Denon oder „konventionell“ √ľber den heimischen Router. Wer DHCP (automatische IP-Vergabe durch den Router) verwendet, sollte hier sowieso sicherstellen, dass sich die IP sp√§ter nicht mehr √§ndert. Das geht bspw. bei der Fritz!Box √ľber die Option: „Diesem Netzwerkger√§t immer die gleiche IPv4-Adresse zuweisen.“

Aber zur√ľck zu FHEM. Jetzt noch den FHEM-Konsolenbefehl

attr Denon room Wohnzimmer

absetzen und schon ist der Denon im richtigen Raum zugewiesen.

Bei meinem Setup habe ich dann noch das Attribut „event-on-change-reading“ angepasst, um Ereignisse bei den mir wichtigen Reading zu erzeugen (das ist bei mir wichtig, da ich Status√§nderungen per UDP an Loxone weiterschicke):

attr Denon event-on-change-reading presence,state,zoneMain,input,volume,mute,signal,sound

Abschlie√üend dann noch oben¬†links auf „Save config“ klicken, um die √Ąnderungen dauerhaft zu speichern.

Hat man das Ger√§t ausgew√§hlt, sollten sich die „Readings“ schnell f√ľllen.

Um erste Schaltvorgang zu testen, bietet sich bspw. das Einschalten des AV-Receivers an:

set Denon on

Oder beim eingeschaltenem AV-Receiver bspw. der Stummschalten-Befehl:

set Denon mute toggle

Ein weiteres Absetzen des Befehls schaltet den Stummodus dann wieder aus.

Hat das geklappt, kann man sich munter daran machen verschiedene Szenarien umzusetzen.

Denon AV-Receiver in Multimediasteuerung integrieren

Denkbar sind selbstredend unterschiedlichste Szenarien, von denen ich einfach mal einige herausgreife, die ich praktisch finde.

Oft gest√∂rt hat mich die Tatsache, dass die meisten HDMI-Zuspielger√§te unterschiedliche Audio-Pegel liefern. Steht der AV-Receiver dann bspw. auf 30%, was beim Fernsehen √ľber die VU+ (Input TV) lautst√§rketechnisch passt, ist dieser Wert beim Wechsel zum Apple TV (Input DVD) schlicht zu leise. Dieses Problem l√§sst sich dann √ľber passende notify-Befehle adressieren, um beim Eingangswechsel die Laust√§rke entsprechend zu setzen:

define DenonInputTVSetVol notify Denon.input:.TV set Denon volume 30
define DenonInputDVDSetVol notify Denon.input:.DVD set Denon volume 40

Spannender wird es nat√ľrlich, wenn beim Eingangswechsel auch andere Ger√§te getriggert werden. So z.B. meine VU+, welche beim Wechsel des Denon auf den Input TV eingeschaltet und Ausschalten des AV-Receivers in den Standby f√§hrt:

define DenonInputTVSetVUOn notify Denon.input:.TV set VUSolo4k on
define DenonOffSetVUOff notify Denon.off set VUSolo4k off

Da ich eine Harmony Elite (Affiliate-Link) nutze, liese sich das Ein- und Ausschalten der VU+ nat√ľrlich auch augenscheinlich einfacher √ľber eine Harmony-Aktion l√∂sen. Hier hat man jedoch die Einschr√§nkung, dass die VU+ lediglich einen „Toggle On/Standby“ entgegennimmt und nicht wie bei der FHEM-L√∂sung den Trigger „On“ bzw. „Standby“. Manchmal findet das Infrarot-Signal der Harmony nicht seinen Weg zur VU+ und der Status ist verdreht. Dazu kommt, dass die Harmony schlicht tr√§ger beim Starten einer Aktion wird, je mehr Start-Befehle nacheinander abgearbeitet werden m√ľssen. Deshalb hab ich es mittlerweile so eingerichtet, dass die Harmony wirklich nur die relevanten Befehle sendet und der Rest √ľber FHEM abgewickelt wird. Das geht einfach einen guten Rutsch schneller und funktioniert zudem noch viel zuverl√§ssiger.

Was ich in dieser Form nicht nutze, was ich mir aber gut vorstellen k√∂nnte, wenn ich nicht eh bereits den Play-Status meiner Plex-Clients auslesen w√ľrde, w√§re die Regelung der Beleuchtung anhand der Lautst√§rke. Sobald die Lautst√§rke aufgedreht wird, kann man davon ausgehen, dass ein Film l√§uft und entsprechend wird die Beleuchtung ausgeschaltet (bzw. ein Dummy namens „Moviemode“ getriggert).

define DenonMovieModeOn notify Denon.volume.* { if ((ReadingsVal("Denon","volume",0) > 45) && (ReadingsVal("Denon","input",0) eq "DVD")) { fhem("set Moviemode on")}

Denkbar w√§re auch, dass ab einem gewissen Volume-Werts der Surround-Modus angepasst wird, der entsprechend auf „Movie“ wechselt:

define DenonSurroundModeMovie notify Denon.volume.* { if ((ReadingsVal("Denon","volume",0) > 45) && (ReadingsVal("Denon","input",0) eq "DVD")) { fhem("set Denon surroundMode Movie")}

Und bitte schlagt mich nicht, weil ich immer noch notify-Befehle benutze und kein DOIF. Ich besch√§ftige mich damit zu wenig, da ich den Gro√üteil der Regeln aktuell √ľber Loxone umsetze. W√§re aber dennoch froh, wenn jemand die DOIF-Pendants zu obigen Befehlen durchschicken k√∂nnte, dann pflege ich das im Artikel direkt nach. Vielleicht finde ich dann auch endlich mal den Zugang dazu. Danke schonmal f√ľr die Hilfe!

Und hier die DOIF-Befehle. Vielen Dank an Denis f√ľr die Hilfe!

define DenonInput DOIF 	([Denon] eq "on" and [Denon:input] eq "TV")(set VUSolo4k on)(set Denon volume 30) DOELSEIF
						([Denon] eq "on" and [Denon:input] eq "DVD")(set Denon volume 40) DOELSEIF
						([Denon] eq "off")(set VUSolo4k off)

define DenonMovieMode ([Denon] eq "on" and [Denon:volume] > 45 and [Denon:input] eq "DVD")(set Moviemode on)(set Denon surroundMode Movie)

Achso und hier noch der Auszug aus meiner 99_myUtils.pm zur √úbermittlung der Denon-Status-Informationen in Richtung Loxone:

#DenonToLoxone
#device:
#1 presence present/absent
#2 state on/off
#3 zoneMain on/off
#4 input DVD
#5 volume 23.5
#6 mute on/off
#7 signal PCM 
#8 sound Stereo

sub DenonToLoxone($)
{
 my ($device) = @_;
 my $presence = ReadingsVal("$device","presence","-1");
 if ($presence eq "absent") {
  $presence = "0";
 }
 if ($presence eq "present") {
  $presence = "1";
 }
 my $state = ReadingsVal("$device","state","-1");
 if ($state eq "off") {
  $state = "0";
 }
 if ($state eq "on") {
  $state = "1";
 }
 my $zoneMain = ReadingsVal("$device","zoneMain","-1");
 if ($zoneMain eq "off") {
  $zoneMain = "0";
 }
 if ($zoneMain eq "on") {
  $zoneMain = "1";
 }
 my $power = ReadingsVal("$device","power","-1");
 if ($power eq "off") {
  $power = "0";
 }
 my $input = ReadingsVal("$device","input","-1");
 if ($input eq "Blu-Ray") {
  $input = "1";
 }
 if ($input eq "Cbl/Sat") {
  $input = "2";
 }
 if ($input eq "DVD") {
  $input = "3";
 }
 my $volume = ReadingsVal("$device","volume","-1");
 my $mute = ReadingsVal("$device","mute","-1");
 if ($mute eq "off") {
  $mute = "0";
 }
 if ($mute eq "on") {
  $mute = "1";
 }
 my $signal = ReadingsVal("$device","signal","-1");
 if ($signal eq "PCM") {
  $signal = "1";
 }
 my $sound = ReadingsVal("$device","sound","-1");
 if ($sound eq "Direct") {
  $sound = "1";
 }
 if ($sound eq "Movie") {
  $sound = "2";
 }
 if ($sound eq "Stereo") {
  $sound = "3";
 }
 if ($sound eq "Multichannel Stereo") {
  $sound = "4";
 }
 if ($sound eq "Dolby Surround") {
  $sound = "5";
 }
 if ($sound eq "DTS Surround") {
  $sound = "6";
 }
 if ($sound eq "Music") {
  $sound = "7";
 }
 if ($sound eq "Auto") {
  $sound = "8";
 }
 UDP_Msg("192.168.3.5" , "7001" , "$device: $presence $state $zoneMain $input $volume $mute $signal $sound");
}


#UDP Befehle senden
sub UDP_Msg($$$)
{
my ($dest,$port,$cmd) = @_;
my $sock = IO::Socket::INET->new(
Proto => 'udp',
PeerPort => $port,
PeerAddr => $dest
) or die "Could not create socket: $!n";
$sock->send($cmd) or die "Send error: $!n";
return "send $cmd";
}

Damit Status√§nderungen √ľbermittelt werden dann abschlie√üend noch der Trigger in FHEM:

define DenonToLoxone notify .*Denon.* {DenonToLoxone("$NAME")}

Der virtuelle UDP-Eingang in Loxone f√ľr den f√ľnften Wert „Input“ hat dann bspw. die Befehlserkennung:

Denon: \# \# \# \# \v

Sind alle UDP-Eing√§nge definiert und mit passenden Status-Elementen verkn√ľpft, sieht es bei mir in der Loxone Visualisierung so aus:

Aus meinem täglichen Leben

Wirklich sinnvoll automatisieren l√§sst sich die Multimediasteuerung erst dann, wenn alle dazu genutzten Ger√§te zentral gesteuert werden k√∂nnen. Der¬†Denon AVR-X1400H (Affiliate-Link) ist einer der zentralen Devices, die mir in meinem Setup bisher noch gefehlt haben. Mit der Integration in FHEM bin ich wirklich sehr gl√ľcklich, da die Status√§nderungen in Echtzeit weiterverarbeitet werden k√∂nnen. Auch wenn bspw. die Lautst√§rke direkt am AV-Receiver „h√§ndisch“ verstellt wird, erf√§hrt FHEM sofort davon. Echt genial!

Vielleicht stelle ich auch mal meine Multimedia-Integration in Loxone vor, denn hier laufen alle Fäden zusammen. Wenn jemand Interesse daran hat einfach per Kommetar mitteilen.

Loxone im Einsatz? Dann schau dir unseren LoxKurs an und profitiere von unserem Wissen!

Verpasse keine Inhalte mehr! Trage dich in den Newsletter ein und folge uns auf Facebook.

Was ist ein Affiliate-Link? Wenn du auf einen Affiliate-Link klickst und √ľber diesen Link einkaufst, bekomme ich vom betreffenden Online-Shop oder Anbieter eine Provision, was mich u.A. bei den laufenden Kosten den Blogs unterst√ľtzt. F√ľr dich ver√§ndert sich der Preis nicht.

Jörg

hat meintechblog.de ins Leben gerufen, um seine Technikbegeisterung und Erkenntnisse zu teilen. Er veröffentlicht regelmäßig Howtos in den Bereichen Smart Home und Home Entertainment. Mehr Infos

22 Gedanken zu „Denon AV-Receiver mit FHEM in die Multimediasteuerung integrieren“

    1. Hi Manuel,
      alles klar, ich werde dazu am besten einen eigenständigen Blogpost schreiben, um der Thematik gerecht zu werden. Ist hiermit auf meiner ToDo-Liste.

      Gr√ľ√üe
      Jörg

  1. Hallo,

    Vielen Dank daf√ľr.
    Ich habe mir vor kurzem einen X3400H von Denon gekauft.
    Die Inbetriebnahme war eine ziemliche Herausforderung.
    Ich hätte da eine Frage zu einem anderen Thema. Bisher konnte ich nämlich nirgendwo was dazu finden.
    Vielleicht kann mir hier jemand helfen?

    An einem scheitere ich bis jetzt.
    Die Integration des AVR mit dem Fernseher und meinem Kodi w√ľrde am besten √ľber HDMI klappen
    Leider hat mein √§lterer Fernseher kein ARC, sondern hat nur die Ton-Ausgabe f√ľr TOSLink.

    Kennt jemand eine Möglichkeit den Ton des Fernsehers in den ARC eines HDMI einzukoppeln?
    Bis jetzt habe ich nur Geräte gefunden, die z.B. den Ton austauschen.

    Ich bin f√ľr jede Hilfe dankbar.
    Danke im Voraus
    Lg, Gerhard

  2. Hallo, mich w√ľrde interessieren wir ihr diverse Internet-streams an den denon sendet?
    Problem1 es werden nicht alle Arten von streams unterst√ľtzt oder ich wei√ü nicht wie ich diese angeben soll.
    Problem2 mit unter lässt sich der Denon nicht mehr richtig bedienen nach dem man einen Stream gestartet hat.
    Problem3 der Denon wird nicht als dnla device erkannt…
    Ich habe denn X2400.

  3. Hallo Jörg,

    ja das ist echt Interessant, das die Integration schon soweit fortgeschritten ist, das in Loxone wird mich nat.auch interessieren. Verfolge dein TechBlog immer mal wieder.

    Danke f√ľr die vielen guten Tipps und Tricks

    Gruß
    GSi

  4. Hi Jörg,
    ich habe mal deine notify-defines als DOIF umgesetzt und zusammengefasst (ungetestet):

    define DenonInput DOIF ([Denon] eq „on“ and [Denon:input] eq „TV“)(set VUSolo4k on)(set Denon volume 30) DOELSEIF
    ([Denon] eq „on“ and [Denon:input] eq „DVD“)(set Denon volume 40) DOELSEIF
    ([Denon] eq „off“)(set VUSolo4k off)

    define DenonMovieMode ([Denon] eq „on“ and [Denon:volume] > 45 and [Denon:input] eq „DVD“)(set Moviemode on)(set Denon surroundMode Movie)

  5. Hi J√∂rg…

    Schöne Ostern :-)

    Klasse Anleitung und die Idee finde ich Super.

    Bei mir funktioniert das setzten der Lautst√§rke nur, wenn ich ein „sleep“ ins notify einbaue. Schaltet das bei dir so wie du oben beschrieben hast zuverl√§ssig die Lautst√§rke um?

    HomeCinema_Audio:input:.Sat/Cbl {
    fhem(„sleep 2“);
    fhem(„set HomeCinema_Audio volume 10“);
    }

    Beste Gr√ľsse
    Marco

    1. Marco, Deine Antwort ist zwar schon etwas länger her, aber bei mir geht es mit dem AVR-X2500H auch nur mit der Pause.

  6. Hallo Jörg,
    klasse Beitrag zum Thema Denon Integration.

    Habe noch eine Frage zu folgenden Punkt: “ Deshalb hab ich es mittlerweile so eingerichtet, dass die Harmony wirklich nur die relevanten Befehle sendet und der Rest √ľber FHEM abgewickelt wird.“ Hattest du dazu schon einmal was geschrieben bzw. k√∂nntest du mal kurz ein Beispiel darstellen wie du es genau realisiert hast. Mich nerven diese Verz√∂gerungen bei Harmony n√§mlich ebenfalls.

    VG David

    1. Hi David!
      Nope, dazu hatte ich bisher noch keine weiteren Infos geliefert.

      Ich habe beim Aktivieren einer Harmony-Aktion alle Harmony-Startbefehle f√ľr die einzelnen Ger√§te deaktiviert. Darum k√ľmmert sich dann komplett FHEM.

      Beispiel f√ľr die Ansteuerung des Denon-Receivers:

      #DENON via IP (FHEM)
      define DenonOnDVD notify HarmonyHub.currentActivity:.starting.Apple set Denon input DVD
      define DenonOnCblSat notify HarmonyHub.currentActivity:.starting.Fernsehen set Denon input Cbl/Sat
      define DenonOnPlex notify HarmonyHub.currentActivity:.starting.Plex set Denon input Blu-Ray
      define DenonOff notify HarmonyHub.activity:.PowerOff set Denon zoneMain off

      Oder hier f√ľr den TV (hier werden die Start- bzw. Stopbefehle mit zwei sek√ľndiger Verz√∂gerung erneut gesendet, da der TV den Infrarotbefehl manchmal nicht frisst):

      #LG via IR (FHEM)
      define LGOn notify HarmonyHub.currentActivity:.starting.* set HarmonyHub command LG PowerOn;; sleep 2;; set HarmonyHub command LG PowerOn
      define LGOff notify HarmonyHub.activity:.PowerOff set HarmonyHub command LG PowerOff;; sleep 2;; set HarmonyHub command LG PowerOff

      Und hier bspw. noch f√ľr die VUPlus (Enigma2-Receiver):
      #VUPlus via IP (FHEM)
      define VUStart notify HarmonyHub.currentActivity:.starting.Fernsehen set VUSolo4k on;; set VUSolo4k input tv;; set VUSolo4k volume 85
      define VUStandby1 notify HarmonyHub.currentActivity:.stopping.Fernsehen set VUSolo4k off
      define VUStandby2 notify HarmonyHub.currentActivity:.starting.Apple set VUSolo4k off
      define VUStandby3 notify HarmonyHub.currentActivity:.starting.Plex set VUSolo4k off

      Hoffe damit wird es etwas klarer.

      Gr√ľ√üe
      Jörg

    1. Kannst du vielleicht noch ein Beispiel zeigen, wie das in Kombination aussieht.

      Also zum Beispiel Aktion Fernsehen -> Fernseher an -> VU+ an

      Wäre ganz lieb. :)

  7. Hi Jörg,

    Am I understanding correctly that this receiver sends updates when e.g. the volume has been changed manually without the need to send a pull command (just like your old Pioneer in one of your earlier articles)?

    I read your articles translated through google and it works quite well, I enjoy reading them, thanks!

  8. Hallo Jörg,
    hallo Community,

    mich beschäftigt derzeit ein Thema, welches wie ich finde gut zu diesem Blog-Beitrag passt.

    Ich m√∂chte meinen Denon AVR (X3500H) gerne √ľber die Sonos App steuern. Das Ganze funktioniert im ersten Schritt ja mit dem Sonos Connect, welcher als „Lautsprecher“ ins Sonos System eingebunden wird und die Musik z. B √ľber Toslink an den AVR ausgibt.

    Leider muss bei dieser Konstellation der AVR manuell eingeschaltet und ggfs. auf die richtige Eingangsquelle gestellt werden.

    Gibt es eine M√∂glichkeit mittels (FHEM-)Automatisierung den AVR ein-/auszuschalten, die richtige Eingangsquelle zu w√§hlen und die Lautst√§rke √ľber die Sonos App zu regulieren?

    Ich freue mich √ľber Input.

  9. Hi Jörg,

    Am I understanding correctly that this receiver sends updates when e.g. the volume has been changed manually (manually turning the volume nobe on the receiver) without the need to send a pull command (just like your old Pioneer in one of your earlier articles)?

  10. Ich bin von einem AVR-X1100W (ging kaputt) auf neu den AVR-X1400H gewechselt. Der X1100W hatte im Fhem auch ordentliche Werte fuer die MediaInfo (z.B. Felder currentAlbum, currentArtist) geliefert. Beim AVR-X1400H vermisse ich das schmerzlich – hatte es fuer meine Smartvisu verwendet. Gibt es einen Trick, wieder daran zukommen oder eine andere Loesung, diese Werte auszulesen?

  11. Hallo zusammen,

    kann es sein das oben im DOIF von Denis nach „define DenonMovieMode“ noch ein DOIF stehen m√ľsste? Nur als Verst√§ndnis Frage.

    VG Daniel

Schreibe einen Kommentar

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