FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: Sidey am 15 November 2019, 23:18:41

Titel: Rückgabewerte X_Get / X_Set
Beitrag von: Sidey am 15 November 2019, 23:18:41
Hallo,

meine Frage dreht sich um den Rückgabewert der

X_Get bzw. X_Set Funktion.

https://wiki.fhem.de/wiki/DevelopmentModuleIntro#X_Get (https://wiki.fhem.de/wiki/DevelopmentModuleIntro#X_Get)

Wenn eine unbekannte Option an die Get-Funktion übergeben wird, so muss als Rückgabewert der Funktion eine bestimmte Syntax einhalten um FHEM mitzuteilen, welche Optionen für einen Get-Befehl aktuell unterstützt werden. Die Rückgabe muss dabei folgender Syntax entsprechen:

unknown argument [Parameter] choose one of [Liste möglicher Optionen]
....
Die Ausgabe einer solchen Meldung ist sehr wichtig, da sie im GUI-Modul verwendet wird um die möglichen get-Optionen zu ermitteln und als Auswahl anzubieten.



https://wiki.fhem.de/wiki/DevelopmentModuleIntro#X_Set (https://wiki.fhem.de/wiki/DevelopmentModuleIntro#X_Set)


Wenn eine unbekannte Option an die Set-Funktion übergeben wird, so muss als Rückgabewert der Funktion eine bestimmte Syntax eingehalten werden um FHEM mitzuteilen, welche Optionen für einen Set-Befehl aktuell unterstützt werden. Die Rückgabe muss dabei folgender Syntax entsprechen:

unknown argument [Parameter] choose one of [Liste möglicher Optionen]
...
Das GUI-Modul FHEMWEB kann für die einzelnen Set-Optionen, die das Modul versteht, automatisch Eingabehilfen wie Drop-Down Boxen oder Slider erzeugen. In der Detailansicht der GUI kann der Anwender dann die jeweiligen Werte komfortabel auswählen. Dafür muss die Set-Funktion, wenn sie mit der Option ? aufgerufen wird, nicht nur einen Text mit "Unknown ... choose one of ..." zurückgeben sondern den einzelnen Set-Optionen in diesem Rückgabetext nach einem Doppelpunkt entsprechende Zusatzinformationen anhängen.




Meine Frage / Feststellung bezieht sich auf die Formulierung, dass bei jedem unbekannten Befehl eine bestimmte Syntax einzuhalten ist.
Ist es nicht so, dass die Syntax ausschließlich für FHEMWEB wichtig ist, welches die Optionen mit ? abruft? Für die Anderen unbekannten Aufrufe könnte ja eine abweichende Syntax ausgegeben werden oder?


Grüße Sidey
Titel: Antw:Rückgabewerte X_Get / X_Set
Beitrag von: Byte09 am 15 November 2019, 23:30:51
Zitat von: Sidey am 15 November 2019, 23:18:41
Hallo,

......  Für die Anderen unbekannten Aufrufe könnte ja eine abweichende Syntax ausgegeben werden oder?


... womit sie dann ja nicht mehr unbekannt wären sondern eher nur unzugeordnet, irgendwie ;-)

mache ich auch so und verursacht scheinbar keine Probleme, d.H ich gebe unter bestimmten Bedingungen auch nur explizit auf "?" diese Syntax in meinen Modulen zurück.

gruss Byte09

nachtrag:
ZitatIst es nicht so, dass die Syntax ausschließlich für FHEMWEB wichtig ist, welches die Optionen mit
ob man es so stehenlassen kann weiss ich ja nicht wirklich , ich frage aus meinem Modul z.B auch alle Devices mit set device ? ab
Titel: Antw:Rückgabewerte X_Get / X_Set
Beitrag von: rudolfkoenig am 16 November 2019, 09:16:20
Zitatich frage aus meinem Modul z.B auch alle Devices mit set device ? ab.
Dafuer sollte man getAllSets($device, $client) verwenden, es gibt analog auch getAllGets und getAllAttr.

Aendert aber nichts an der Aussage, dass der Rueckgabewert von GetFn/SetFn einen bestimmten Syntax folgen muss, wenn der erste Parameter ungueltig ist.
In den anderen Faellen wird der Rueckgabewert nicht weiter analysiert, sondern nur angezeigt.
Titel: Antw:Rückgabewerte X_Get / X_Set
Beitrag von: Sidey am 17 November 2019, 22:10:08
Zitat von: rudolfkoenig am 16 November 2019, 09:16:20
Aendert aber nichts an der Aussage, dass der Rueckgabewert von GetFn/SetFn einen bestimmten Syntax folgen muss, wenn der erste Parameter ungueltig ist.
In den anderen Faellen wird der Rueckgabewert nicht weiter analysiert, sondern nur angezeigt.

Ich habe da noch ein Verständnis Problem.

Wieso ist die Einhaltung der Syntax bei allen ungültigen Parametern wichtig. FHEM weiss doch vom Prinzip nicht, welche Parameter gültig sind und welche es nicht sind. Das wird doch vom Modul selbst festgelegt oder gibt es einen Unterschied zwischen gültigen Befehlen und implementierten?

Dass es bei dem Parameter "?" wichtig ist habe ich ja durchaus verstanden, da nur so FHEMWEB in der Lage ist die unterstützten Parameter herauszufinden.

Warum die Syntax bei allen anderen Parameter ebenfalls wichtig ist, würde ich gerne verstehen. Meine Idee war tatsächlich den Befehl "?" etwas anders zu behandeln als andere Parameter. :) Wenn das negative Auswirkungen hat, taugt das aber vermutlich nichts.


Grüße Sidey



Titel: Antw:Rückgabewerte X_Get / X_Set
Beitrag von: rudolfkoenig am 18 November 2019, 08:51:01
ZitatWieso ist die Einhaltung der Syntax bei allen ungültigen Parametern wichtig.
Strenggenomen ist dieser Syntax nur bei ? wichtig, mir faellt bloss kein Anwendungsbeispiel ein, bei dem man bei anderen _ungueltigen_ Parametern was Anderes anzeigen muss.
Titel: Antw:Rückgabewerte X_Get / X_Set
Beitrag von: Markus Bloch am 21 November 2019, 18:31:43
Habe ich im Wiki nochmal präzisiert.

Gruß
Markus
Titel: Antw:Rückgabewerte X_Get / X_Set
Beitrag von: Sidey am 21 November 2019, 19:58:37
Hi,

Anpassungen im Wiki finde ich gut.
Allerdings hätte ich da einen weiteren Vorschlag die Formulierung ein wenig eindeutiger zu formulieren, dass es bei den anderen eher eine Empfehlung und keine Pflicht ist den Syntax zu verwenden.

Erst mal am Beispiel get:

Wenn eine die Option ? (get <NAME> ?) an die Get-Funktion übergeben wird, so muss als Rückgabewert der Funktion eine bestimmte Syntax eingehalten werden um FHEM (z.B. FHEMWEB) mitzuteilen, welche Optionen für einen Get-Befehl aktuell unterstützt werden. Die Rückgabe muss dabei folgender Syntax entsprechen:

unknown argument [Parameter] choose one of [Liste möglicher Optionen]

Hierbei sind die fett gedruckten Teile der Rückmeldung besonders wichtig <schnipp ... schnapp>

Alle anderen nicht im Modul verfügbaren Befehle können die gleiche oder eine andere Syntax verwenden müssen jedoch immer einen Rückgabewert liefern, welcher dem Anwender angezeigt wird

Titel: Antw:Rückgabewerte X_Get / X_Set
Beitrag von: Markus Bloch am 23 November 2019, 12:50:21
Hallo Sidey,

du kannst das im Wiki gerne anpassen. Ich hab den Artikel nicht für mich gepachtet ;-)

Viele Grüße

Markus