Passiert, wenn ich im Device ein "get ..." ausführe
(http://up.picr.de/22356081yx.png)
das ist die antwort des get. kann es sein das ein leerer string zurück kommt statt undef für keine ergebnis?
gruss
andre.
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?
Es ist völlig egal, ob ich die get-Funktion wie bisher mit "return" oder mit "return undef" beende - das leere Popup kommt immer.
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.
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.
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.
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.