[Patch] fhemweb.js: noArg hängt nach Reading-Update „undefined“ an

Begonnen von FHEM-Tester, 19 Oktober 2026, 18:38:12

Vorheriges Thema - Nächstes Thema

FHEM-Tester

Hallo Rudi, hallo zusammen,

beim Set-Befehl eines Geräts wie vom Typ dummy bin ich auf einen Fehler im noArg-Widget gestoßen: Nach einem Live-Update des gleichnamigen Readings hängt FHEMWEB beim nächsten Set den zusätzlichen Parameter ,,undefined" an.

Entscheidend ist die Kombination aus einem ausgewählten noArg-Befehl, einem bereits auf der Detailseite angezeigten gleichnamigen Reading und einem Live-Update dieses Readings. noArg allein löst den Fehler nicht aus.

Ein kleiner Testaufbau:
define noArgTest dummy
attr noArgTest setList blaBlub:noArg
attr noArgTest readingList blaBlub
attr noArgTest webCmd blaBlub
setreading noArgTest blaBlub ready
Anschließend die Detailseite öffnen und blaBlub über die Set-Zeile oder über das webCmd ausführen. Der Dummy setzt das Reading dabei auf einen leeren Wert. Dieses Update abwarten und erneut auf ,,set" klicken, ohne die Seite neu zu laden oder zwischenzeitlich einen anderen Befehl auszuwählen.

Ohne Patch enthält die zweite Anfrage:
set noArgTest blaBlub undefinedKann man ebenso mit den Browser-DEV Tools einsehen.

Der Dummy übernimmt ,,undefined" in sein Reading.

Die Ursache liegt in www/pgm2/fhemweb.js:
FW_replaceWidget() gibt dem noArg-Widget die informId des betreffenden Readings. FW_createNoArg() erzeugt ein verstecktes div mit einem versteckten Eingabefeld, definiert aber keine setValueFn. Deshalb ersetzt FW_doUpdate() beim Reading-Event den Inhalt dieses div durch den Reading-Wert. Dabei geht das Eingabefeld verloren.

Beim nächsten Klick findet FW_inlineModify() kein Wertefeld mehr. Der Rückgabewert undefined wird anschließend beim Zusammensetzen des Befehls zum Text ,,undefined".

Der angehängte Patch ergänzt in FW_createNoArg() unmittelbar vor return(newEl); diese Zeile:
newEl.setValueFn = function() { /* No value to update. */ };Das argumentlose Widget ignoriert damit Reading-Werte und behält sein verstecktes Eingabefeld. Die eigentliche Reading-Anzeige wird weiterhin normal aktualisiert.

Mit dem Patch funktioniert das bei mir auch bei wiederholten Aufrufen.

Dasselbe sichtbare Symptom hatte Dominik bereits am 13.12.2020 beschrieben: fhemweb: Reload der Seite nach set cmd

Könntest du die Änderung bitte prüfen und übernehmen?

Anhang: fhemweb-fix-noArg-setCmd.patch

Dankeschön.