Aktualisierung von GUI-Elementen

Begonnen von olwaldi, 01 Februar 2026, 14:47:17

Vorheriges Thema - Nächstes Thema

olwaldi

Wieder in DENON_AVR aufgefallen ...

Wenn man in der WebGUI über den set-Button z.B. die Aktion volumeUp (kein zugehöriges Reading) ändert, um die Lautstärke (volumeStraight) um einen wählbaren Betrag zu erhöhen, wird der damit verbundene slider volumeStraight in webCmd nicht aktualisiert. Konkret wird zwar die Lautstärke um den gewählten Betrag vergrößert (auch das Reading volumeStraight wird aktualisiert), aber der Slider volumeStraight verharrt auf dem vorigen Wert. Wenn man nur im Web-Browser die WebGUI neu lädt, stimmt volumeStraight wieder. Noch merkwürdiger: In dem Moment, wenn man den set-Button drückt, wechselt das Auswahlmenü überraschenderweise auf volumeStraight mit richtigem Wert. Anbei ein Screenshot mit dem "Widerspruch" der gleichen zwei Slider.

Im Supportforum für DENON_AVR habe ich quasi dieselbe Frage auch gestellt, ist aber m.E. eher eine "Entwicklerfrage". Ich selber versuche gerade, in dem Modul den ein oder anderen Bug zu fixen.

Grüßle, Michael


rudolfkoenig

Ich habe kein Denon, und ein Versuch im FHEM eine Instanz zu definieren hat nicht wirklich geholfen.

Mit folgender dummy Definition sehe ich kein Problem:
define da dummy
attr da setList    volumeStraight:slider,0,1,100
attr da readingList volumeStraight
attr da webCmd      volumeStraight

Generell: der Wert ders Widgets wird aus einem Reading mit dem gleichen Namen ausgelesen.

olwaldi

Zitat von: rudolfkoenig am 01 Februar 2026, 18:15:55Generell: der Wert ders Widgets wird aus einem Reading mit dem gleichen Namen ausgelesen.

Genau so hatte ich's auch verstanden. Aber im Modul DENON_AVR ist's nunmal vom ursprünglichen Autor anders implementiert worden (hab's ohne wirklichen Erfolg mal testweise geändert).

Meine Erwartung wäre, daß OHNE existierendes Reading ein Eingabefeld in der set-Zeile aufgebaut wird (funktioniert). Aber warum "springt" die set-Zeile auf einen ANDEREN Eintrag, wenn man den set-Knopf drückt? Erwartet hätte ich keine Änderung (aber klar, fhem kann ja kein Reading auslesen). Und warum immer auf denselben Eintrag volumeStraight? Ist alphabetisch weder das erste noch das letzte.

Ich habe eine Vermutung - könnte es mit dem return-String der DENON_AVR_Set-Routine zu tun haben (obwohl der meistens undef ist)?

Die Änderung in der set-Zeile ist ja auch nur ein Symptom. Das eigentliche Problem ist, das die zwei GLEICHEN Slider (mit dem Reading volumeStraight verbunden) UNTERSCHIEDLICHE Werte anzeigen. Genauer, der in webCmd ist genau ein Event "hinterher". Und als "Fix" reicht ein reload der fhem-Seite im Browser.


Grüßle, Michael

rudolfkoenig

Ich helfe gerne, aber ich brauche was zum Nachstellen.
Zum Beispiel eine Variante des Moduls, was ohne Hardware auskommt.
Oder eine passende Konfiguration mit dummy.

olwaldi

#4
Das ist mir schon klar. Daher habe ich mal versucht, das DENON_AVR-Modul so abzuändern, daß man es direkt nutzen kann. Dazu habe ich das Modul in das neue Modul DENON_DUMMY umkopiert und dort alle DevIo-Aufrufe in DevIoDummy-Aufrufe ohne Effekt umgebogen. Erstaunlicherweise funktioniert das DENON_DUMMY-Modul:-)
define denondummy DENON_DUMMY 1.2.3.4
Meine GUI-Probleme kann man damit nachvollziehen. Insbesondere kann man die beiden gleichen slider volume/volumestraight unabhängig voneinander (in webCmd bzw. bei set) bewegen. Das sollte m.E. eigentlich nicht so sein, da dasselbe Reading volume bzw. volumeStraight verwendet wird. Auch das Springen in der Auswahlliste auf den Eintrag volumeStraight z.B. von volumeUp tritt damit auf.

Das gefakete Modul habe ich hier angehängt.

Danke schonmal vorab für's Angucken, Michael

Nachtrag: Vermutlich funktioniert mein DENON_DUMMY doch etwas anders, da das DENON_AVR_Set die Lautstärke im Receiver ändert, nicht aber das Reading. Das funktioniert erst als Reaktion auf die Bestätigung durch den Receiver in DENON_AVR_Read - zeitlich etwas versetzt. Das erklärt, warum die zwei slider verschiedene Werte anzeigen können.
Ich habe DENON_AVR so angepaßt, daß die zwei zugehörigen Readings direkt in DENON_AVR_Set mit geändert werden, statt auf die Antwort des Receivers im DENON_AVR_Read zu warten. Trotzdem sollte doch eigentlich der (fehlerhafte) Wert automatich beim Read aktualisiert werden. D.h. ich habe eigentlich "nur" einen Workaround gefunden.

Habe gerade das Attribute longpoll an FHEMWEB entdeckt - habe mal 1 oder websocket ohne Verbesserung ausprobiert. Ist "mein" Problem ggf. hiermi verwandt https://forum.fhem.de/index.php?topic=141435.0 ?

Zusatzfrage zum Slider: Im Code ist manchmal im Reading eine Einheit dB oder % (zusätzlich zur Zahl) enthalten. Ist das OK?