FHEM Forum

FHEM => Sonstiges => Thema gestartet von: dev0 am 31 Juli 2017, 08:42:37

Titel: 98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: dev0 am 31 Juli 2017, 08:42:37
Wenn ein FHEM Befehl, der Großbuchstaben im Namen enthält (zB. getURL), existiert und "help getURL" aufgerufen wird, dann ist danach dieser Befehl nicht mehr aufrufbar: "Unknown command geturl, try help". Anscheinend wird dieses Verhalten durch die Umwandlung in Kleinbuchstaben, in den 98_help.pm Zeilen 37 (https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/98_help.pm?rev=13694#L37) und 54 (https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/98_help.pm?rev=13694#L54), ausgelöst.

Lässt sich dieses, aus meiner Sicht, unerwünschte Verhalten abstellen?
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: dev0 am 02 August 2017, 06:45:18
Ein Workaround (oder die Lösung?) ist im Befehls Modul den Key im globalen command name hash %cmds klein zu schreiben:


sub getURL_Initialize($$)
{
  $cmds{geturl} = {
    Fn  => "CommandGetURL",
    Hlp => "Usage: getURL <url> [<device>:<reading>]"
  }
}
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: betateilchen am 02 August 2017, 23:49:28
Danke für den Hinweis.

*grübel*

Aus irgendeinem Grund musste ich in 98_help.pm damals die Konvertierung in Kleinbuchstaben einbauen, im Moment fällt mir aber nicht mehr ein, was der Grund war.

Den Befehl in %cmds in Kleinbuchstaben einzutragen, ist auf jeden Fall ein Workaround, der das Problem behebt.

Noch besser fände ich es, wenn man eine Regel "FHEM Befehle müssen in Kleinbuchstaben in %cmds eingetragen werden" hätte, die in die Entwicklungsrichtlinien aufgenommen wird.




Nach einigem Nachdenken meine ich mich daran zu erinnern, warum ich die Kleinbuchstaben damals verwenden musste.

Die Kleinbuchstabenkonvertierung wurde eingebaut, damit der Benutzer bei "help <irgendwas>" nicht wissen muss, ob <irgendwas> in Kleinbuchstaben, Großbuchstaben oder gemischt geschrieben werden muss, um die Hilfe zu erhalten.

Wobei es aktuell nur ein einziges Modul gibt, das tatsächlich Großbuchstaben in %cmds einträgt, nämlich 98_CULflash.pm (zumindest habe ich bei der Suche eben kein weiteres Modul gefunden, das sich so verhält)

Wir sollten mal im Developer-Bereich darüber diskutieren, ob man sich auf eine generelle Kleinschreibung in %cmds verständigen kann.
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: dev0 am 03 August 2017, 06:48:06
Ich dachte mir schon, dass Du das nicht "einfach so" eingebaut hast, sonst hätte ich auch einen Patch angehangen.
Danke für's grübeln ;)
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: dev0 am 29 September 2018, 09:26:09
Nachdem das Thema hier (https://forum.fhem.de/index.php/topic,75007) weiter erörtert, gibt es (erneut?) ein Problem mit der Gross/Kleinschreibung.
Nach einem FHEM Neustart sind die FHEM Befehle case-insensitive. Nach dem beliebigen Aufruf von 'help' in einer Telnet Sitzung sind die FHEM Befehle case-sensitive und zwar so, wie sie in der Command Reference angezeigt werden.
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: betateilchen am 29 September 2018, 10:39:25
Um welchen Befehl geht es?

Nachdem Rudi entschieden hat, dass telnet künftig gar nicht mehr standardmäßig in FHEM vorhanden sein wird, frage ich mich, ob ich mich darum überhaupt noch kümmern sollte  8)
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: rudolfkoenig am 29 September 2018, 10:44:55
ZitatNachdem Rudi entschieden hat, dass telnet künftig gar nicht mehr standardmäßig in FHEM vorhanden sein wird,
Das ist zwar nicht falsch, suggeriert aber, dass ich telnet abschaffen will, was keineswegs der Fall ist.
Ich will nur die Anfaenger etwas weniger verwirren.
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: betateilchen am 29 September 2018, 11:00:27
Zitat von: rudolfkoenig am 29 September 2018, 10:44:55
Ich will nur die Anfaenger etwas weniger verwirren.

das schaffst Du trotzdem (und nicht nur bei Anfängern), sogar ganz ohne telnet :) :)

Trotzdem kann ich das aktuelle Thema nicht nachvollziehen, da bei der Aufbereitung der Daten keine Unterscheidung nach telnet oder web in 98_help.pm gemacht wird. Die Unterscheidung betrifft nur die Ergebnisdarstellung.

Deshalb hatte ich nach dem "problematischen" Befehl gefragt, damit ich das eventuell bei mir nachstellen kann.
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: dev0 am 29 September 2018, 13:27:55
Zitat von: betateilchen am 29 September 2018, 10:39:25
Um welchen Befehl geht es?
Vermutlich um alle, die in der Command nicht nur in Kleinbuchstaben geschrieben sind: Getestet habe ich JsonList, JsonList2, XmlList, MSG und meinen eigenen Befehl getURL.

Vor dem Aufruf von help gibt es nur einen Key 'jsonlist2' in %cmds. Nach dem Aufruf von help gibt es zwei Einträge: 'jsonlist2' und 'JsonList2'.
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: dev0 am 13 Oktober 2018, 11:11:00
Zitatda bei der Aufbereitung der Daten keine Unterscheidung nach telnet oder web in 98_help.pm gemacht wird
Es macht auch keinen Unterschied ob telnet oder FHEMWEB als Frontend verwendet wird. Auch nach dem Aufruf von zB. "help jsonlist2" in der FHEMWEB Gui tritt der beschriebene Effekt ebenfalls auf: Die Befehle sind case-sensitive und %cmds wird modifiziert. mMn ein No-Go, dass gefixt werden sollte.
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: betateilchen am 13 Oktober 2018, 18:14:37
Ja. Aber zuerst klang es ja so, dass es nur bei telnet auftritt. Sobald ich wieder etwas mehr Luft habe, werde ich mich darum kümmern.

Wobei die Frage bleibt, ob die Auswertung von %cmds nicht tatsächlich innerhalb von fhem.pl als case-insensitiv erfolgen sollte.
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: rudolfkoenig am 14 Oktober 2018, 14:04:09
Ich habe den Aufruf in fhem.pl gefixt, d.h. nach einem "help JsonList2" funktioniert der Aufruf als jsonlist2.
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: betateilchen am 15 Oktober 2018, 10:39:43
Danke.
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: dev0 am 18 Oktober 2018, 06:49:53
Ich danke ebenfalls.

Allerdings wird weiterhin der %cmds Hash vom help Befehl modifiziert, wenn man beispielsweise erst 'jsonlist2' und dann 'help jsonlist2' aufruft:

fhem-dev#> {Dumper \%cmds}
$VAR1 = {
...
          'jsonlist2' => {
                           'Hlp' => '[<devspec>],list definitions as JSON',
                           'Fn' => 'CommandJsonList2'
                         },
          'JsonList2' => {
                           'Fn' => undef,
                           'Hlp' => 'Command JsonList2 not loaded. Use "help JsonList2" for more help'
                         },
...
        };
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: dev0 am 14 November 2018, 16:22:26
*push*
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: betateilchen am 14 November 2018, 17:48:04
*achselzuck* na und?
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: dev0 am 15 November 2018, 18:51:06
Vielen Dank für die nicht erfolgte Unterstützung.  :-X
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: betateilchen am 19 Januar 2019, 18:44:08
Zitat von: dev0 am 18 Oktober 2018, 06:49:53
Allerdings wird weiterhin der %cmds Hash vom help Befehl modifiziert, wenn man beispielsweise erst 'jsonlist2' und dann 'help jsonlist2' aufruft:

Das beschriebene Fehlverhalten im help-Modul habe ich heute bearbeitet und ich gehe davon aus, dass mit der aktuell in SVN eingecheckten Version das Problem mit den unterschiedlich groß-/kleingeschriebenen Werten im cmds Hash nicht mehr auftritt.

Über eine Rückmeldung nach einem erneuten Test würde ich mich freuen.
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: dev0 am 20 Januar 2019, 07:29:27
Ich konnte das beschriebene Verhalten mit der neuen 98_help.pm nicht mehr reproduzieren, auch mit verschiedensten Groß-/Kleinschreibungen nicht.

Danke.
Titel: Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
Beitrag von: betateilchen am 20 Januar 2019, 11:10:10
Danke fürs Testen und die Rückmeldung.