Hilfe im Modul.pl an den Anfang stellen ?

Begonnen von M.Schulze, 13 November 2019, 18:59:31

Vorheriges Thema - Nächstes Thema

M.Schulze

Hallo,

warum ist die Hilfe im Modul am Ende?

Perl wird so oder so immer die komplette File parsen (keine Spekulation) und keine Unterschiede in der Ausführungsgeschwindigkeit machen (reine Spekulation)
help.pm müsste immer durchparsen bis die Hilfe kommt (keine Spekulation)

MfG
Muss ich das Licht aus machen?

Icinger

ZitatPerl wird so oder so immer die komplette File parsen (keine Spekulation)
Stimmt so nicht ganz, für Perl-Module müssen immer mit einem "true" enden.
Deshalb enden die meisten Perl-Files mit einem
1;

Alles, was danach kommt, interessiert den Interpreter nicht mehr.
Daher kann man danach auch (so wie in diesem Falle) einfach HTML-Code (oder was auch immer) anhängen.

lg, Stefan[/code]
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

M.Schulze

Hatte ich auch gedacht. Dem ist aber nicht so. Der HTML-Code ist auch nicht einfach so angehängt sondern ein Perl-konformer Kommentar. Bau doch mal einen Fehler nach dem 1; ein.

MfG
Muss ich das Licht aus machen?

Icinger

Also, zB mein OBIS-Modul endet ganz normal mit "true" (naja gut, halt mit einer "Art" true)

Und danach folgt plain HTML-Code

if (length($msg)>$msgLength*2) {
$valu=substr($msg,0,$msgLength*2);
$tmp.=$valu;
$msg=substr($msg,$msgLength*2);
}
# Log 3,"   Split Msg: $tmp $msg";
return $msgLength,$msgType,$valu,$msg,$tmp;
};
}

"Cogito, ergo sum.";

=pod
=item device
=item summary    Collects data from Smartmeters that report in OBIS-Standard
=item summary_DE Wertet Smartmeter aus, welche ihre Daten im OBIS-Standard senden
=begin html

<a name="OBIS"></a>
<h3>OBIS</h3>
<ul>
  This module is for SmartMeters, that report their data in OBIS-Standard. It dosen't matter, wether the data comes as PlainText or SML-encoded.
  <br><br>

Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

loescher

Mit "=pod" beginnt der Pod Block. Das ist kein HTML.
Da macht erst der Pod Formatter ein HTML draus.
Bau doch mal zwischen "1;" und "=pod" einen "Unsinn" rein, dann kommt ein Fehler.  :)
LG,
Stephan.

CoolTux

Was genau ist Dein Wunsch oder Anliegen. Ich verstehe gerade die Diskussion nicht so wirklich.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

M.Schulze

Zitat von: CoolTux am 14 November 2019, 21:52:01
Was genau ist Dein Wunsch oder Anliegen. Ich verstehe gerade die Diskussion nicht so wirklich.

Hallo,

Es geht nur um die generelle Verbesserung der Ausführungsgeschwindigkeit. In help.pm ist ja noch Potential da.

Das einmaligen füllen von %cmds  dauert so wie es ist zu lange. Muss aber sein. Auch die Identifizierung command|helper|device ist sinnvoll.
Hlp => "Command $mod not loaded. Use \"help $mods{$mod}\" for more help" könnte man besser machen wenn man schon alle Dateien nach command|helper|device durchsucht ...


Wie man die ladbaren Helpers und Devices (analog Commands) mit help.pm abruft ist mir auch unklar / nicht implementiert. Die Informationen werden aktuell extrahiert und nicht verwendet. Die item summary ist auch noch nicht abrufbar.

MfG
Muss ich das Licht aus machen?

CoolTux

Ok ich verstehe nun was Du möchtest. Du hast ja definitive Thesen getroffen.
Der nächste Schritt wäre mit Messungen Deine Thesen Beweisbar zu machen. Um danach mittels besseren Code FHEM besser zu machen und die Community zu unterstützen.

Vielen Dank schon mal für Deine Mühe, die Community freut sich immer über Hilfe und Verbesserungen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

nils_

ich les mal mit und bin gespannt auf die messergebnisse :)
viele Wege in FHEM es gibt!

M.Schulze

Eine weitere Idee:

- es könnten auch noch 10-20 Dummy-Module einfügt werden (Befehle aus FHEM.pl, Global - siehe Beispiel).
'help define' würde dann funktionieren.

- 'help' (Übersicht) könnte dann auch mehrsprachig funktionieren wenn %cmds{Befehl}Hlp = item summary (_DE) entspricht (damit gefüllt wird), keine Ahnung ob das so angedacht ist ???

- das Befüllen von %cmds{Befehl}Hlp in sub_command_Initialize ist sinnvoll,  aber nicht brauchbar, da ja nicht alle Befehle geladen sind.

- einsprachige Hilfe aus Fhem.pl könnte dann auch raus.

MfG

Beispiel: 98_define.pm

=pod
=item command
=item summary [option] <name> <type> <options>, define a device
=item summary_DE [option] <name> <type> <options>, define a device

=begin html
<a name="define"></a>
<h3>define</h3>
<ul>
  <code>define [option] &lt;name&gt; &lt;type&gt; &lt;type-specific&gt;</code><br>
  <br>
  Define a device. You need devices if you want to manipulate them (e.g.
  set on/off), and the logfile is also more readable if it contains e.g.
  "lamp off" instead of "Device 5673, Button 00, Code 00 (off)". <br>
  After definition, the global event "DEFINED" will be generated, see the
  notify section for details.<br>
  <br><br>

  Each device takes different additional arguments at definition, see the
  corresponding device section for details.<br>
  <br>
  Options:<br>
  <ul>
    <li>-temporary<br>
      Add the TEMPORARY flag to the definition, which will prevent saving the
      device to fhem.cfg.
      </li><br>
    <li>-ignoreErr<br>
      Reduce the number of errors displayed when a certain FHEM-module cannot
      be loaded. Used by fhem.cfg.demo, as using the RSS example requires the
      installation of several uncommon perl modules.
      </li><br>
  </ul>
</ul>
=end html

=begin html_DE
<a name="define"></a>
<h3>define</h3>
<ul>
  <code>define [option] &lt;name&gt; &lt;type&gt; &lt;type-specific&gt;</code>
  <br>
  <br>

  Definiert ein Ger&auml;t. Sie m&uuml;ssen Ger&auml;te einrichten um sie zu
  beeinflussen (z.B. das Kommando set on/off auszuf&uuml;hren). Gleichfalls
  ist das Logfile besser lesbar wenn es z.B.  "lamp off" anstatt "Device 5673,
  Button 00, Code 00 (off)" als Text enth&auml;lt. <br>

  Nach der Durchf&uuml;hrung wird das globale Ereignis "DEFINED" generiert.
  <br><br>

  Je nach Typ ben&ouml;tigt man unterscheidliche Argumente, lesen Sie sich
  bitte die zu dem jeweiligen Ger&auml;t geh&ouml;renden Abschnitte durch.
  <br><br>
  Optionen:<br>
  <ul>
    <li>-temporary<br>
      Setzt den TEMPORARY Marker, was das Abspeichern dieser Definition in
      fhem.cfg verhindert.
      </li><br>
    <li>-ignoreErr<br>
      Reduziert die Anzahl der Fehlermeldungen, falls ein FHEM-Modul nicht
      geladen werden kann. Wird in fhem.cfg.demo verwendet, da das RSS Beispiel
      etliche, normalerweise nicht installierte perl-Module ben&ouml;tigt.
      </li><br>
  </ul>
</ul>
=end html_DE

=cut

1;

Muss ich das Licht aus machen?

Prof. Dr. Peter Henning

Ich stelle fest, dass der Threadersteller bisher eigentlich keinerlei konstruktive Beiträge geliefert hat. Alle seiner Posts laufen darauf hinaus, dass "man" in FHEM irgendwelche generellen Dinge ändern müsste oder sollte. Mag ja sein, dass so etwas als "Principal Strategist" zum Selbstverständnis gehört- aber ich stelle doch mal die ketzerische Frage nach der "hidden agenda".

LG

pah