Autor Thema: help (was: Templates in FHEM)  (Gelesen 709 mal)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13525
  • Das "S" in "IoT" steht für "Security"
Antw:help (was: Templates in FHEM)
« Antwort #15 am: 13 März 2017, 20:31:40 »
Wenn alle Command-Module nämlich intern als solche gekennzeichnet sind, läßt sich auch für "help" ohne Parameter eine entsprechende Liste erzeugen (so wie es commandref_join ja auch tut)

Ich bin jetzt testweise einen anderen Weg gegangen. Eben habe ich eine Modulversion von 98_help.pm eingecheckt, die commands zumindest in der Liste aufführt, auch wenn das Modul selbst noch nicht geladen ist. In diesem Fall erscheint ein Hinweis, dass mit "help <name>" mehr Infos zu bekommen sind.
(siehe screenshot). Sobald der Befehl dann einmal ausgeführt wurde, wird in der Liste auch der Hilfetext aus der Moduldatei angezeigt.

Wenn man die hierfür in 98_help.pm neu eingebaute Funktion cref_fill_list() (die weitgehend aus commandref_join.pl kopiert wurde) in die fhem.pl übernehmen und beim Systemstart aufrufen würde, wäre der erste Aufruf von "help" erheblich schneller (und nicht blockierend).

sub cref_fill_list(){

  my %mods;
  my %modIdx;
  my @modDir = ("FHEM");

  foreach my $modDir (@modDir) {
    opendir(DH, $modDir) || die "Cant open $modDir: $!\n";
    while(my $l = readdir DH) {
      next if($l !~ m/^\d\d_.*\.pm$/);
      my $of = $l;
      $l =~ s/.pm$//;
      $l =~ s/^[0-9][0-9]_//;
      $mods{$l} = "$modDir/$of";
      $modIdx{$l} = "device";
      open(MOD, "$modDir/$of") || die("Cant open $modDir/$l");
      while(my $cl = <MOD>) {
        if($cl =~ m/^=item\s+(helper|command|device)/) {
          $modIdx{$l} = $1;
          last;
        }
      }
      close(MOD);
    }
  }

  foreach my $mod (sort keys %mods) {
    my %h = (  Fn => undef,
      Hlp => "Command $mod not loaded. Use \"help $mod\" for more help" );
    $cmds{$mod} = \%h if ( ($modIdx{$mod} eq "command") && !(defined($cmds{$mod})) );
  }
}

« Letzte Änderung: 13 März 2017, 20:50:16 von betateilchen »
-----------------------
Nächster Hamburg-Stammtisch: 15.12.2017