Modul für Denon (Marantz) AV Receiver

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

Vorheriges Thema - Nächstes Thema

olwaldi

#945
War "fleißig" und habe wieder einige Änderungen an 70_DENON_AVR/71_DENON_ZONE eingebaut:
  • Ein/ausschalten von unit verbessert
  • Internal FVERSION über FHEM::Meta eingebaut
  • neue Kommandos set/get delayTime
  • HTML-Dokumentation erweitert.
Merkwürdig bleibt, daß die Anzeige einiger Readings/Internals in der fhem-GUI bei Änderungen nicht automatisch aktualisiert werden. Dazu muß man die fhem-GUI im Browser mit F5 aktualisieren, d.h. funktional sind beide Module OK.

Das neue Internal FVERSION gibt eine Versionsnummer aus, wie erwartet UNSTABLE und das Änderungsdatum der Moduldatei. Man muß natürlich die Subversion-Marke auf $Id$ abändern, damit Meta funktionieren kann.


Grüßle, Michael


Bartimaus

Moin und vielen Dank.
Die FVVERSION wird mir nach F5 nicht angezeigt.
LG
B.


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

Shadow3561

Moin,
erst nach FHEM Neustart wird die FVVERSION geladen

olwaldi

Das FVERSION steht ganz oben bei den Internals, nicht bei den Readings.

Und mittlerweile funktioniert FVERSION auch bei 71_DENON_ZONE wie erwartet. Gerade eben oben korrigiert.

Grüßle, Michael

olwaldi

#949
Neuer Tag, neue Erkenntnis:

Ich wollte irgendwie 'rauskriegen, warum manche Internals oder Readings in der GUI nicht immer aktualisiert werden. Debuggen wäre somit eine gute Idee. Und dabei ist mir was ganz Anderes aufgefallen, nämlich daß DENON_AVR unnötig DoTrigger in DENON_AVR_Init absetzt. Das macht laut Doku schon DevIo_Open. Letztendlich hat somit DENON_AVR_Init eigentlich keine Aufgabe mehr.

Meine Sicht der Funktionsaufrufe beim "Starten" von DENON_AVR (z.B. nach einem fhem Restart):
  • DENON_AVR_Initialize
  • DENON_AVR_Define, ruft
  •   DENON_AVR_Connect, ruft
  •     DevIo_OpenDev, ruft
  •       DoTrigger CONNECTED
  • DENON_AVR_Notify verarbeitet CONNECTED Event, startet
  •   InternalTimer, ruft nach 5s
  •     DENON_AVR_UpdateConfig, ruft
  •       DENON_AVR_StatusRequest
Stimmt das grob so - insbesondere mit den CONNECTED Event?

Ähnlich auch bzgl. DISCONNECTED: DENON_AVR_ConnectionCheck prüft regelmäßig, ob der Receiver noch erreichbar ist. Wenn nicht, wird DevIo_Disconnected aufgerufen, was den Event DISCONNECTED auslöst.

Ich habe ja mit dem Überarbeiten von readingsBegin/EndUpdate angefangen, am Code zu basteln. Das habe ich jetzt soweit getrieben, daß diese Aufrufe möglichst den GESAMTEN Body einer sub einpacken, z.B.:
sub DENON_AVR_Notify($$) {
  my ($hash, $dev) = @_;
  my $name = $hash->{NAME};
  my $devName = $dev->{NAME};

  Log3 $name, 4, "DENON_AVR $name: entering DENON_AVR_Notify ($devName).";
  readingsBeginUpdate($hash);
...
  readingsEndUpdate($hash, 1);
  Log3 $name, 4, "DENON_AVR $name: leaving DENON_AVR_Notify ($devName).";
}
Zur Erleichterung vom Debuggen habe ich einige Log3-Meldungen überarbeite/ergänzt.

Und jetzt werden die Readings nicht mehr doppelt gesetzt, wenn man ein set-Kommando aufruft. Das passierte bislang, da durch die Bestätigungsmeldung vom Receiver die Readings erneut gesetzt wurden.


Grüßle, Michael
PS: Hier ist auch noch ein Tipfehler korrigiert für das get reconnect.
PPS: Alter Bug bzgl. unit in 71_DENON_ZONE gefixt.
PPPS: Überarbeitung der readingsBegin/EndUpdate Strukturen.

olwaldi

#950
So langsam scheinen meine Änderungen zuverlässiger zu funktionieren...

Habe nochmal die readingsBegin/EndUpdate stellenweise hin- und herverschoben und die notify- und Timer-Verarbeitung überarbeitet.

Und einen Tippfehler in DENON_AVR_StatusRequest korrigiert (statt VSMONI? stand bei mir MONI?) und die Kommandos dort alphabetisch sortiert. Jetzt wird die Anzeige der Readings in der Web-GUI automatisch aktualisiert.


Grüßle, Michael

olwaldi

Nachtrag: Doch noch einen Fehler entdeckt - ein readingsBeginUpdate war zuviel, oben korrigiert.

Bartimaus

Helau,

danke. Geladen, installiert, funktioniert und für gut befunden  :-*
LG
B.


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

olwaldi

Danke für's Testen und die Geduld. Aber ich lerne wohl immer noch dazu, siehe
https://forum.fhem.de/index.php?topic=143889.msg1357893#msg1357893
Da wird dann für mich fraglich, wie mit readingsBulkUpdate überhaupt umgegangen werden darf/soll.

Und natürlich habe ich nochwas in DENON_AVR_Parse geradeziehen können - ohne funktionale Auswirkung, aber Verbesserung der Code-Lesbarkeit des Riesen if-elsif-else, das finale else ist jetzt wirklich ein else:-)

Grüßle, Michael