FHEM Forum

FHEM => Frontends => Thema gestartet von: betateilchen am 26 Juni 2015, 09:19:06

Titel: was will mir fhem da sagen?
Beitrag von: betateilchen am 26 Juni 2015, 09:19:06
Passiert, wenn ich im Device ein "get ..." ausführe

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

Titel: Antw:was will mir fhem da sagen?
Beitrag von: justme1968 am 26 Juni 2015, 09:23:14
das ist die antwort des get. kann es sein das ein leerer string zurück kommt statt undef für keine ergebnis?

gruss
  andre.
Titel: Antw:was will mir fhem da sagen?
Beitrag von: betateilchen am 26 Juni 2015, 09:54:01
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?
Titel: Antw:was will mir fhem da sagen?
Beitrag von: betateilchen am 26 Juni 2015, 09:59:14
Es ist völlig egal, ob ich die get-Funktion wie bisher mit "return" oder mit "return undef" beende - das leere Popup kommt immer.
Titel: Antw:was will mir fhem da sagen?
Beitrag von: rudolfkoenig am 26 Juni 2015, 10:05:45
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.
Titel: Antw:was will mir fhem da sagen?
Beitrag von: justme1968 am 26 Juni 2015, 10:19:05
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.
Titel: Antw:was will mir fhem da sagen?
Beitrag von: betateilchen am 26 Juni 2015, 10:47:45
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.

Titel: Antw:was will mir fhem da sagen?
Beitrag von: rudolfkoenig am 26 Juni 2015, 11:19:02
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.