was will mir fhem da sagen?

Begonnen von betateilchen, 26 Juni 2015, 09:19:06

Vorheriges Thema - Nächstes Thema

betateilchen

Passiert, wenn ich im Device ein "get ..." ausführe

(http://up.picr.de/22356081yx.png)

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

das ist die antwort des get. kann es sein das ein leerer string zurück kommt statt undef für keine ergebnis?

gruss
  andre.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

betateilchen

Ich hab an der Stelle seit Ewigkeiten nichts geändert. Das get tut genau was es soll (es füllt readings), es gibt (und gab) da nie einen Rückgabewert zur Anzeige.

Das mit dem undef wäre dann aber neu, oder?
-----------------------
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 ist völlig egal, ob ich die get-Funktion wie bisher mit "return" oder mit "return undef" beende - das leere Popup kommt immer.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Neuerdings wird der Rueckgabewert von get in einem Dialog angezeigt, weil ich bei ZWave leid war, bei Abfragen von mehreren Werten jeweils "Back" auszufuehren.

Get sollte immer irgendeine Antwort liefern, sonst gehoert es zu set, in der Form set requestSetting/reportSetting/etc statt get Setting. Set ist mAn generell zu bevorzugen, da es damit schwieriger ist FHEM zu blockieren.

justme1968

auch wenn das geschmacksache ist denke ich das es fälle gibt bei denen auch ein get nichts zurück liefern kann. unabhängig von der asynchron / könnte blockieren diskussion.

da es in perl die schöne unterscheidung zwischen einem leeren string und undef gibt würde ich vorschlagen das ein leerer string eine antwort ist die angezeigt wird und undef eine leere antwort die nicht angezeigt wird. dann ist beides abgedeckt. wenn der undef fall dir ohne rückmeldung zu unsicher ist könnte man kurz eine meldung 'get returned no value' in der status zeile einblenden. die würde automatisch wieder verschwinden.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

betateilchen

Zitat von: rudolfkoenig am 26 Juni 2015, 10:05:45
Get sollte immer irgendeine Antwort liefern,

Die Antwort muss aber nicht zwingend etwas sein, das der Anwender bestätigen muss. Im vorliegenden Fall ist die Antwort so umfangreich, dass sämtliche von "get" gelieferten Werte in eine Liste von readings geschrieben wird. Die readings sind das Einzige, das den Anwender interessiert.

Eine Erfolgsmeldung auszugeben, wäre völlig verfehlt, denn die ist schon dadurch gegeben, dass die readings angelegt und mit Daten gefüllt werden.
Im Fehlerfall gibt es keine Readings - auch dieser Fall ist also schon eindeutig abgebildet.

Man sollte auch einmal darüber nachdenken, was "get" in seiner Übersetzung bedeutet: "Etwas bekommen" - und im get bekomme ich Daten zurückgeliefert.
Mit "set" will man irgendwas setzen/festlegen. Und das ist hier definitiv nicht der Fall.

Wenn von get ein "undef" zurückkommt, sollte das Popup einfach nicht erscheinen und auch sonst nichts weiter passieren. Das wäre doch die einfachste Lösung.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Ab sofort wir ein Dialog nur dann angezeigt, falls im Antwort nicht nur \r\n vorkommt.
Sonst:
- man kann "" und undef nicht unterscheiden, AnalyzeCommand macht aus "" undef, wuesste gerne, warum
- Falls get nichts zurueckliefert, dann gibt es in FHEMWEB eine Warnung in FW_addLinks, das habe ich auch gefixt.