help: Darstellungsfehler

Begonnen von Dr. Boris Neubert, 13 Februar 2016, 09:35:29

Vorheriges Thema - Nächstes Thema

Dr. Boris Neubert

Hallo,

folgende Situation:

KUbuntu 15.04, konsole oder xterm, Telnet zu fhem auf Port 7072 (Verbindung mit der FHEM-Kommandozeile/Konsole).

Bei Eingabe des Kommandos help
- bekomme ich eine überschüssige HTML-Kommentare,
- bekomme ich in der Description aber nicht bei Parameter &lt; und &gt; statt < und > angezeigt,
- fehlt der Befehl version.

Ausgabe unten.

Grüße
Boris


help
Possible commands:

Command        Parameter
               Description
----------------------------------------------------------------------
<!--header:command-->use "help <!--header:command-->" for more help

IF             use "help IF" for more help

apptime        [clear|<field>] [top|all] [<filter>]
               application function calls and duration
attr           <devspec> <attrname> [<attrval>]
               set attribute for &lt;devspec&gt;
attributes     use "help attributes" for more help

cancel         [<id> [quiet]]
               list sleepers, cancel sleeper with &lt;id&gt;
command        use "help command" for more help

commands       use "help commands" for more help

createlog      use "help createlog" for more help

define         <name> <type> <options>
               define a device
defmod         <name> <type> <options>
               define or modify a device
delete         <devspec>
               delete the corresponding definition(s)
deleteattr     <devspec> [<attrname>]
               delete attribute for &lt;devspec&gt;
deletereading  <devspec> [<attrname>]
               delete user defined reading for &lt;devspec&gt;
devspec        use "help devspec" for more help

displayattr    <devspec> [attrname]
               display attributes
encoding       [utf8|latin1]
               query and set the character encoding for the current telnet session
exit
               end the client session
fheminfo       use "help fheminfo" for more help

get            <devspec> <type dependent>
               request data from &lt;devspec&gt;
getstate       use "help getstate" for more help

global         use "help global" for more help

help           [<moduleName>]
               get help (this screen or module dependent docu)
include        <filename>
               read the commands from &lt;filenname&gt;
inform         {on|off|log|raw|timer|status}
               echo all events to this client
iowrite        <iodev> <data>
               write raw data with iodev
list           [devspec]
               list definitions and status info
modify         device <options>
               modify the definition (e.g. at, notify)
notice         use "help notice" for more help

perl           use "help perl" for more help

quit
               end the client session
reload         <module-name>
               reload the given module (e.g. 99_PRIV)
rename         <old> <new>
               rename a definition
rereadcfg      [configfile]
               read in the config after deleting everything
restore        [list] [<filename|directory>]
               restore files saved by update
save           [configfile]
               write the configfile and the statefile
set            <devspec> <type dependent>
               transmit code for &lt;devspec&gt;
setdefaultattr <attrname> <attrvalue>
               set attr for following definitions
setreading     <devspec> <reading> <value>
               set reading for &lt;devspec&gt;
setstate       <devspec> <state>
               set the state shown in the command list
shutdown       [restart|exitValue]
               terminate the server
sleep          <sec> [<id>] [quiet]
               sleep for sec, 3 decimal places
trigger        <devspec> <state>
               trigger notify command
update         [<fileName>|all|check|force] [http://.../controlfile]
               update FHEM
usb            use "help usb" for more help

xmllist
               list definitions and status info as xml
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Markus Bloch

Zitat von: Dr. Boris Neubert am 13 Februar 2016, 09:35:29
- fehlt der Befehl version.

Der Befehl "version" taucht erst auf, sobald er einmalig ausgeführt wurde seit Systemstart. Das Modul ist mit der Ordnungszahl 98 versehen und wird erst beim ausführen geladen.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Dr. Boris Neubert

Verstehe, Markus. Mit update wäre es wohl genauso. Aber das hatte ich vorher ausgeführt.

Stellen wir uns help wirklich so vor? Was nützt mir die Übersicht über die Befehle, wenn sie mir nur die Befehle anzeigt, die aus fhem.pl kommen, während ich die anderen Befehle bereits kennen muss, um sie ausgeführt zu haben und dann angezeigt zu bekommen.

Ich brauche das persönlich alles nicht, und ich weiß auch, wie man commandref bedient. Aber dann können wir uns zumindest die Übersicht auch gleich schenken, statt den Benutzer in die Irre zu führen.

help version gibt mir übrigens was zurück, ohne version vorher ausgeführt zu haben. Danach ist version immer noch nicht geladen. Erst wenn ich version einmal ausführe, erscheint es dann in der Übersicht.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

#3
Zitat von: Dr. Boris Neubert am 13 Februar 2016, 09:52:20
help version gibt mir übrigens was zurück, ohne version vorher ausgeführt zu haben.

Logisch. Help mit Angabe eines Modulnamens liest den commandref-Teil der Moduldatei direkt aus dem Dateisystem, genau wie bei "Device specific help" in der Detailansicht eines devices auch.

Zitat von: Dr. Boris Neubert am 13 Februar 2016, 09:35:29
- bekomme ich eine überschüssige HTML-Kommentare,

Das kommt aus der kürzlich neu eingeführten Klassifizierung der Module, das muss ich mir bei Gelegenheit anschauen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Markus Bloch

"help version" extrahiert ja die commandref zu 98_version.pm direkt aus dem Perl-Modul, ohne es zu laden.

Wenn man jetzt sagen würde, alle Command-Module bekommen Ordnungszahl 99 und werden somit immer geladen, wäre das bei apptime bspw. fatal, weil es dann sofort loslegt sich einzuklinken. Somit würden aber alle Command-Befehle die als Modul separiert sind in der help usage sofort auftauchen.

Prinzipiell wird ja was sowas angeht eigentlich immer auf die commandref verwiesen in der alle möglichen Befehle aufgelistet und dokumentiert sind. Die Ausgabe von "help" soll ja nur als Gedankenstütze dienen und weniger als vollwertige Referenz aller möglichen Befehle. So verstehe ich das zumindest.

Gruß
Markus

Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

betateilchen

#5
Zitat von: Markus Bloch am 13 Februar 2016, 09:59:17
Die Ausgabe von "help" soll ja nur als Gedankenstütze dienen und weniger als vollwertige Referenz aller möglichen Befehle. So verstehe ich das zumindest.

so verstehe ich das auch.

Es ist ausserdem schon immer so, dass commands, die eigene Moduldateien besitzen, nicht in "help" angezeigt werden, solange der Befehl noch nicht ausgeführt wurde (und das Modul somit noch nicht geladen ist).
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dr. Boris Neubert

Vermutlich wäre es die sauberste und einfachste Lösung, wenn fhem.pl eim Start alle Module abläuft und CommandFoobar abholt und sich merkt.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

aaahhh... jetzt verstehe ich das von Boris beschriebene Problem erst in seinem ganzen Ausmaß.

Früher habe ich in 98_help.pm die Liste der möglichen Befehle direkt aus der commandref_frame gelesen.
Das geht nun nicht mehr, bzw. nur noch für die Befehle, die nach wie vor in der commandref_frame stehen.

Da muss ich mir grundsätzlich eine andere Lösung ausdenken.

Zitat von: Dr. Boris Neubert am 13 Februar 2016, 10:18:30
Vermutlich wäre es die sauberste und einfachste Lösung, wenn fhem.pl eim Start alle Module abläuft und CommandFoobar abholt und sich merkt.

Das meinst Du aber jetzt hoffentlich nicht ernst...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Markus Bloch

Zu deinem ursprünglichen Beitrag:

Zitat von: Dr. Boris Neubert am 13 Februar 2016, 09:35:29
- bekomme ich eine überschüssige HTML-Kommentare,

bekomme ich bei mir nicht:


fhem> help
Possible commands:

Command        Parameter
               Description
----------------------------------------------------------------------
addstruct      <structure> <devspec>
               add &lt;devspec&gt; to &lt;structure&gt;
attr           <devspec> <attrname> [<attrval>]
               set attribute for &lt;devspec&gt;
cancel         [<id> [quiet]]
               list sleepers, cancel sleeper with &lt;id&gt;
createlog      <device>
               create log/weblink for &lt;device&gt;
define         <name> <type> <options>
               define a device
defmod         <name> <type> <options>
               define or modify a device
delete         <devspec>
               delete the corresponding definition(s)
deleteattr     <devspec> [<attrname>]
               delete attribute for &lt;devspec&gt;
deletereading  <devspec> [<attrname>]
               delete user defined reading for &lt;devspec&gt;
delstruct      <structure> <devspec>
               delete &lt;devspec&gt; from &lt;structure&gt;
displayattr    <devspec> [attrname]
               display attributes
encoding       [utf8|latin1]
               query and set the character encoding for the current telnet sessi                                                                                                                                                             on
exit
               end the client session
fheminfo       [send]
               show or send Fhem statistics
get            <devspec> <type dependent>
               request data from &lt;devspec&gt;
help           [<moduleName>]
               get help (this screen or module dependent docu)
include        <filename>
               read the commands from &lt;filenname&gt;
inform         {on|off|log|raw|timer|status}
               echo all events to this client
iowrite        <iodev> <data>
               write raw data with iodev
list           [devspec]
               list definitions and status info
modify         device <options>
               modify the definition (e.g. at, notify)
quit
               end the client session
reload         <module-name>
               reload the given module (e.g. 99_PRIV)
rename         <old> <new>
               rename a definition
rereadcfg      [configfile]
               read in the config after deleting everything
restore        [list] [<filename|directory>]
               restore files saved by update
save           [configfile]
               write the configfile and the statefile
set            <devspec> <type dependent>
               transmit code for &lt;devspec&gt;
setdefaultattr <attrname> <attrvalue>
               set attr for following definitions
setreading     <devspec> <reading> <value>
               set reading for &lt;devspec&gt;
setstate       <devspec> <state>
               set the state shown in the command list
shutdown       [restart|exitValue]
               terminate the server
sleep          <sec> [<id>] [quiet]
               sleep for sec, 3 decimal places
trigger        <devspec> <state>
               trigger notify command
update         [<fileName>|all|check|force] [http://.../controlfile]
               update FHEM
usb            [scan|create]
               display or create fhem-entries for USB devices
version        [<filter>] [noheader]
               print SVN version of loaded modules

fhem>





Zitat von: Dr. Boris Neubert am 13 Februar 2016, 09:35:29
- bekomme ich in der Description aber nicht bei Parameter &lt; und &gt; statt < und > angezeigt,

Patch:

Index: FHEM/98_help.pm
===================================================================
--- FHEM/98_help.pm     (revision 10807)
+++ FHEM/98_help.pm     (working copy)
@@ -137,12 +137,9 @@
       next if($cl && $cmds{$cmd}{ClientFilter} &&
            $cl->{TYPE} !~ m/$cmds{$cmd}{ClientFilter}/);
       my @a = split(",", $cmds{$cmd}{Hlp}, 2);
- #     $a[0] =~ s/</&lt;/g;
- #     $a[0] =~ s/>/&gt;/g;
       $a[1] //= "";
       $a[1]  = "               $a[1]";
-      $a[1] =~ s/</&lt;/g;
-      $a[1] =~ s/>/&gt;/g;
+
       $str .= sprintf("%-15s%-50s\n%s\n", $cmd, $a[0], $a[1]);
     }



getestet mit telnet und FHEMWEB. In FHEMWEB wird der Output in <pre>-Tags ausgegeben, dadurch werden html-Entities nicht ersetzt.
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

betateilchen

Die überschüssigen html-Kommentare bekomme ich aber auch.

(http://up.picr.de/24571262vg.png)

Wie schon geschrieben, die kommen aus  commandref_frame
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Markus Bloch

Wahrscheinlich weil bei euch das IF command geladen ist.
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

betateilchen

bei mir mit Sicherheit nicht.

Vermutlich hast Du bei Dir einfach nicht die aktuellen Dateiversionen von commandref.* in Verwendung
Die beiden Probleme mit der Kommentarzeile und dem &lt; habe ich inzwischen beseitigt.

Das andere Problem - die unvollständige Liste - muss ich von Grund auf überdenken.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Markus Bloch

Zitat von: betateilchen am 13 Februar 2016, 10:40:28
Vermutlich hast Du bei Dir einfach nicht die aktuellen Dateiversionen von commandref.* in Verwendung
Die beiden Probleme mit der Kommentarzeile und dem &lt; habe ich inzwischen beseitigt.

Hab gerade mal nachgeforscht. Liegt daran, dass die Ordnerstruktur bei mir anders ist. Ich nutze das fhem-Paket für Synology-NAS von Martin Fischer (http://www.fischer-net.de/hausautomation/downloads/category/4-synology.html). Dort ist die Ordnerstruktur etwas anders:

/usr/local/FHEM/bin/fhem.pl
/usr/local/FHEM/share/fhem/FHEM/XX_modules.pm

In global ist als modpath konfiguriert: /usr/local/FHEM/share/fhem

In cref_search_cmd nutzt du als Pfad zur commandref_frame.html "./docs/commandref_frame.html", daher kann er bei mir die verfügbaren Commands aus der commandref Frame nicht parsen. Hier müsste man den Pfad aus modpath benutzen.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

betateilchen

nun warte doch mal ab...


  • Ich werde künftig den command-Block der lokalen commandref lesen.
  • Wenn die lokale commandref nicht vorhanden ist bzw. per exclude_from_update nicht regelmäßig generiert wird, wird eine entsprechende Fehlermeldung ausgegeben.

Punkt 1 funktioniert hier schon
Punkt 2 wird im Laufe des Wochenendes funktionieren
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!