Modul für Denon (Marantz) AV Receiver

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

Vorheriges Thema - Nächstes Thema

olwaldi

Hab' mal wieder was geändert ...

  • Ich habe im on/off gestern einen Bug eingebaut, wodurch das Ausschalten nicht mehr funktioniert hat. Gefixt.
  • Ich habe das Power-Management jetzt wieder zurückgebaut, wie es sich @vneise gewünscht hat und es ursprünglich auch war. Grund: Der Receiver hat tatsächlich zwei verschiedene(!) Kommandos zum ein/ausschalten: PWON/OFF und ZMON/OFF. Im ersten Fall werden alle Zonen geschaltet, im zweiten nur die mainZone. Und genau so hat es der Modul-Autor (richtigerweise) auch implementiert. Somit funktioniert das EinAusschalten jetzt wie folgt:
    set Denon on|off|toggle   -> alle Zonen werden gemeinsam geschaltet
    set Denon zoneMain on|off -> nur main-Zone wird geschaltet
    Um Zugriff auf die anderen Zonen zu bekommen, muß man ein entsprechendes DENON_AVR_ZONE Device anlegen.
  • Ich habe die Funktionen DENON_AVR_Connectioncheck, _Ready, _Connect und _OnConnect "unkommentiert" von @vbs übernommen, aber leicht modifiziert. Insbesonder vermute ich, daß @vbs in der _Connect das $reopen an DevIo_Open übergeben wollte. Unklar ist mir, ob man für USBDev "was anderes" zurückgeben sollte.
  • In DENON_AVR_Define habe ich versucht, Rechnernamen beim Aufruf zu unterstützen. Um serielle von IP-Devices unterscheiden zu können, muß für serielle Devices zwingend die Baudrate an den Devicenamen angehängt werden (COM1 wäre ja auch ein gültiger Rechnername).

Ich habe in ein paar subs als Return-Wert undef zurückgegeben, da mir nicht klar ist, welche Instanz den return verarbeiten mag. Freue mich, wenn's jemand besser wüßte.

Bitte testen. Insbesondere würde ich mich freuen, wenn @vbs checkt, ob ich seine Änderungen "richtig" übernommen habe. Zum Testen habe ich bei mir jetzt wieder connectionCheck ohne Probleme eingeschaltet ...

Die Skripte habe ich wie üblich weiter oben aktualisiert.


Grüßle, Michael

olwaldi

Wenn man ein Modul überschläft ... versteht man ggf. wieder was:

Eigentlich war ich der Meinung, daß das Reading state nur von DevIo verändert werden sollte. So ist es aber m.M.n. gar nicht gedacht - state soll vom Modul selber gepflegt werden. DevIo speichert lediglich Fehler beim Zugreifen in state, oder aber "opened", wenn das Gerät erfolgreich geöffnet werden konnte. Auf das muß dann das Modul reagieren.

Allerdings erwartet DevIo_Expect den Wert "opened", aber Dank @vbs gibts dafür ja besseren Ersatz.

STATE hingegen wird "automatisch" von fhem gepflegt und automatisch auf den Wert des Readings state gesetzt.

Also habe ich nochmal 70_DENON_AVR verändert, so daß state wieder on/off annehmen darf. Gleichzeitig habe ich auch wieder mainOff aus devStateIcon 'rausgenommen.


Grüßle, Michael

olwaldi

#917
Hoffentlich jetzt meine letzte Änderung:-)
  • Beim StatusRequest wird der aktuelle DAB-Zustand jetzt explizit abgefragt.
  • Es wird eine Fehlermeldung ausgegeben, wenn der DNS-Name im define unbekannt ist.
  • Im Reading multiEQ steht jetzt der Wert aus Anwendersicht (also z.B. reference statt AUDYSSEY). Sollte schon länger "falsch" gewesen sein.
  • DENON_AVR_Parse direkt aufrufbar (zum einfacheren Debugggen des Moduls). Jetzt kann man z.B. Readings direkt setzen durch
    { my ($hash) = $defs{<devicename>};; DENON_AVR_Parse($hash, "DASTNDasIstMeinDABSender")}
  • Das userreading brand wird -wenn möglich- automatisch gesetzt.
  • Input Sat/Cbl umbenannt in Cbl/Sat wie bei den Zonen. Außerdem benennt Denon diesen Input Cbl/Sat.
  • WebGUI & online-Doku verbessert (get zone entfernt, Attribut do_not_notify hinzugefügt)
Würde mich über Rückmeldungen von euch freuen.

Gerne auch Hinweise, ob der Kopf bzgl. Autor in den perl-Skripten so stimmt

Grüßle, Michael

Bartimaus

Danke, ich hoffe ich komme heute Abend endlich mal wieder dazu die Änderungen (insb. DAB) zu testen....
LG
B.


FHEM@AMD-Ryzen7-5825U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Bartimaus

#919
Moin,

sodele, es (DAB) funktioniert.... zwar anders als bisher, aber das ist ja egal....

Die bisherigen Readings "DAB_*" werden nicht aktualisiert, dafür aber die Readings: "dab*".
DAB-Sender kann ich problemlos wechseln
LG
B.


FHEM@AMD-Ryzen7-5825U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

olwaldi

#920
Prima!

Ich war so frei und habe die DAB-readings alle umbenannt, da die readings in CamelCase geschrieben werden "sollten". Mir selber waren immer die Level-Readings aufgefallen - in level... umbenannt.

Die alten readings kannst Du löschen durch
deletereading <device-name> DAB.*Oder einfach das device neu anlegen.

Gerade beim Hören einen neuen Bug entdeckt und gefixt - im reading multiEQ steht der Wert aus "Denon-Sicht" statt "Anwendersicht - also z.B. AUDYSSEY anstelle von reference.

Frisch gefixt...

Grüßle, Michael

Nachtrag: Wenn man einmal angefangen hat ... Habe doch noch ein paar Kleinigkeiten korrigiert s.o.

olwaldi

Mir ist aufgefallen, daß in der WebGUI von DENON_AVR die set-Zeile immer bei volumeStraight startet. Warum nicht beim ersten Eintrag?

Wenn man dann dort volumeUp oder volumeDown auswählt und auf set drückt, wird die Lautstärke wie gewünscht angepaßt. Aber die set-Zeile springt sofort wieder auf volumeStraight (mit der neuen Lautstärke). "Schlimmer", in der webCmd-Zeile darüber wird der angezeigte Lautstärkewert nicht aktualisiert. Das passiert erst nach einem refresh im Browser.

Ist wirklich eine Kleinigkeit und stört nicht wirklich. Aber es könnte ja auch sein, daß irgendwas im Code nicht stimmt. Andererseits tritt dasselbe Problem auch in einer alten Version von 2018 auf, hat dann wohl nix mit meinen Änderugen zu tun.

Grüßle, Michael