Readingsproxy mit shellkommando erzeugt unklares popup

Begonnen von fettgu, 25 November 2023, 23:21:27

Vorheriges Thema - Nächstes Thema

fettgu

Guten Abend,

ich habe mir ein readingsProxy gebaut, um die configdb nicht über Tastatureingaben steuern zu müssen. Einfach mal mit den Befehlen info, filelist und fileshow.

Das funktioniert soweit auch (mit der Ausgabe der configdb dann im Log). Allerdings erscheint im Readingsproxy ein Popup mit diesem Text


ZitatUnknown argument -----------------------------------------------------------------
, choose one of info filelist fileshow

Das macht für mich keinen Sinn und ich würde es gerne loswerden. Hat jemand eine Idee wie das geht?

Unten das listing...

Viele Grüße
Guido Fett



Zitatdefmod rp.configdb readingsProxy rp.configdb
attr rp.configdb getFn {\
Log3 $DEVICE, 3, "Log-Meldung cmd $CMD ARGS $ARGS";;\
\
if ($CMD eq 'info') \
   { fhem('configDB info');;\
   }\
elsif ($CMD eq 'filelist')\
   { fhem('configDB filelist');;\
   }\
elsif ($CMD eq 'fileshow')\
   { fhem('configDB fileshow $ARGS');;\
   }\
}
attr rp.configdb getList info filelist fileshow
attr rp.configdb room System->FHEM

setstate rp.configdb 2023-11-25 23:03:22 lastCmd info



betateilchen

Was Du da tust, ist weder ein sinnvolles Szenario für ein readingsproxy, noch ist die configDB dafür konzipiert.

configDB ist, technisch betrachtet, kein klassisches FHEM-device, sondern eine Erweiterung der fhem.pl. Da gibt es nix zu "steuern".

Wenn ich es in den vergangenen zehn Jahren jemals für sinnvoll gehalten hätte, dafür ein eigenes device im Frontend bereitzustellen, hätte ich es längst getan.

Der Befehl "configdb" ist schon ein Wrapper um bestimmte Funktionen der configDB, darum jetzt nochmal eine Schicht zu bauen, halte ich für Unfug.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Es wäre schön, wenn Du anstatt quote-Tags künftig code-Tags (direkt das Symbol links daneben im Editor) verwenden würdest.

Die Lösung für Dein (für mich nach wie vor unsinniges Vorhaben) steht übrigens in der commandref zu readingsproxy.

ZitatgetFn
perl expresion that will return the get command forwarded to the parent device. has access to $DEVICE, $READING, $CMD and $ARGS.
undef -> do nothing
"" -> pass through
(<value>,1) -> directly return <value>, don't call parent getFn
everything else -> use this instead
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

fettgu

Danke für das Feedback. Ich bin auf ein Dummy und ein notify umgestiegen.

Viele Grüße
Guido Fett

PS: Ist für mich viel einfacher configDB so zu benutzen - muss ich mir die Befehle nicht merken

betateilchen

#4
Zitat von: fettgu am 26 November 2023, 18:31:42Danke für das Feedback. Ich bin auf ein Dummy und ein notify umgestiegen.

Du hättest es doch nur in Deinem readingsproxy richtig angeben müssen, so wie ich Dir das aus der commandref zitiert habe?

attr rp.configdb getFn {\
Log3 $DEVICE, 3, "Log-Meldung cmd $CMD ARGS $ARGS";;\
\
if ($CMD eq 'info') \
   { (fhem('configdb info'),1);;\
   }\
elsif ($CMD eq 'filelist')\
   { (fhem('configdb filelist'),1);;\
   }\
elsif ($CMD eq 'fileshow')\
   { (fhem('configdb fileshow $ARGS'),1);;\
   }\
}
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

fettgu

Danke,

ich hatte mir das angeschaut, nicht verstanden :-) und dann ein dummy und notify benutzt.

Ich habe gerade deinen Vorschlag getestet, damit schicke ich meinen Raspberry ins vertiefte grübeln, und er redet nicht mehr mit mir.

Das macht er heute mit dummy und notify aber auch - muss mal schauen, was er hat.

Viele Grüße
Guiod