Autor Thema: 98_help.pm / FHEM Befehle mit Grossbuchstaben  (Gelesen 1125 mal)

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3454
    • _.:|:._
98_help.pm / FHEM Befehle mit Grossbuchstaben
« 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 und 54, ausgelöst.

Lässt sich dieses, aus meiner Sicht, unerwünschte Verhalten abstellen?

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3454
    • _.:|:._
Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
« Antwort #1 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>]"
  }
}

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15262
  • s/fhem\.cfg/configDB/g
Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
« Antwort #2 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.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 14.12.2018 - 18:30 Uhr

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3454
    • _.:|:._
Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
« Antwort #3 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 ;)

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3454
    • _.:|:._
Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
« Antwort #4 am: 29 September 2018, 09:26:09 »
Nachdem das Thema hier 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.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15262
  • s/fhem\.cfg/configDB/g
Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
« Antwort #5 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)
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 14.12.2018 - 18:30 Uhr

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19485
Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
« Antwort #6 am: 29 September 2018, 10:44:55 »
Zitat
Nachdem 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.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15262
  • s/fhem\.cfg/configDB/g
Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
« Antwort #7 am: 29 September 2018, 11:00:27 »
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.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 14.12.2018 - 18:30 Uhr

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3454
    • _.:|:._
Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
« Antwort #8 am: 29 September 2018, 13:27:55 »
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'.

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3454
    • _.:|:._
Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
« Antwort #9 am: 13 Oktober 2018, 11:11:00 »
Zitat
da 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.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15262
  • s/fhem\.cfg/configDB/g
Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
« Antwort #10 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.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 14.12.2018 - 18:30 Uhr

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19485
Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
« Antwort #11 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.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15262
  • s/fhem\.cfg/configDB/g
Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
« Antwort #12 am: 15 Oktober 2018, 10:39:43 »
Danke.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 14.12.2018 - 18:30 Uhr

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3454
    • _.:|:._
Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
« Antwort #13 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'
                         },
...
        };

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3454
    • _.:|:._
Antw:98_help.pm / FHEM Befehle mit Grossbuchstaben
« Antwort #14 am: 14 November 2018, 16:22:26 »
*push*

 

decade-submarginal