FHEM Forum

FHEM => Sonstiges => Thema gestartet von: betateilchen am 02 April 2014, 11:39:32

Titel: [patch] fhem.pl - Hinweismeldung im Frontend bei Fehlern während fhem-Start
Beitrag von: betateilchen am 02 April 2014, 11:39:32
ich schlage folgenden patch vor



Index: fhem.pl
===================================================================
--- fhem.pl (Revision 5411)
+++ fhem.pl (Arbeitskopie)
@@ -435,10 +435,14 @@

if($attr{global}{configfile} eq 'configDB') {
   my $ret = cfgDB_ReadAll(undef);
+  $attr{global}{motd} .= "\n\nError on loading fhem. Check your configuration!\n".
+                         "Set global attr motd to none to confirm and delete this message."  if($ret);
   Log 1, "configDB: $ret" if($ret);

} else {
   my $ret = CommandInclude(undef, $attr{global}{configfile});
+  $attr{global}{motd} .= "\n\nError on loading fhem. Check your configuration!\n".
+                         "Set global attr motd to none to confirm and delete this message."  if($ret);
   Log 1, "configfile: $ret" if($ret);

   if($attr{global}{statefile} && -r $attr{global}{statefile}) {



der diese Ausgabe erzeugt:

(http://up.picr.de/17840125sk.png)

falls während des Startens von fhem irgenwelche Fehler festgestellt wurden. Damit soll dem Anwender direkt signalisiert werden, dass irgendetwas nicht stimmt und er die Möglichkeit hat, seine Konfiguration zu prüfen BEVOR er das nächste "save config" durchführt und damit die nichtausgeführten defines etc. endgültig aus seiner Konfiguration löscht.

Diskussion dazu wurde z.B. hier geführt: http://forum.fhem.de/index.php/topic,22096.0.html
Titel: Antw:[patch] fhem.pl - Hinweismeldung im Frontend bei Fehlern während fhem-Start
Beitrag von: justme1968 am 02 April 2014, 12:51:18
ich schlage zusätzlich folgenden patch vor:--- /Users/andre/fhem-code/fhem/FHEM/98_telnet.pm 2014-02-08 10:10:07.000000000 +0100
+++ 98_telnet.pm 2014-04-02 12:48:57.000000000 +0200
@@ -187,8 +187,11 @@
     $chash->{encoding} = AttrVal($name, "encoding", "utf8");
     syswrite($chash->{CD}, sprintf("%c%c%c", 255, 253, 0) ) if( AttrVal($name, "encoding", "") ); #DO BINARY
     $chash->{CD}->flush();
-    syswrite($chash->{CD}, sprintf("%c%c%cPassword: ", 255, 251, 1)) # WILL ECHO
-        if(telnet_pw($name, $chash->{NAME}));
+    if(telnet_pw($name, $chash->{NAME})) {
+      syswrite($chash->{CD}, sprintf("%c%c%cPassword: ", 255, 251, 1)) # WILL ECHO
+    } else {
+      syswrite($chash->{CD}, $attr{global}{motd});
+    }
     return;
   }

@@ -238,6 +241,7 @@

         if($ret) {
           $hash->{pwEntered} = 1;
+          syswrite($hash->{CD}, $attr{global}{motd});
           next;
         } else {
           if($hash->{isClient}) {


damit wird die globale nachricht auch bei telnet verbinungen ausgegeben.
Titel: Antw:[patch] fhem.pl - Hinweismeldung im Frontend bei Fehlern während fhem-Start
Beitrag von: rudolfkoenig am 02 April 2014, 13:10:16
@betateilchen: habs etwas zusammengefasst, und auf "auto-delete" umgestellt, kannst du bitte pruefen, ob es noch funktioniert?

@justme1968: damit habe ich Probleme, da vermutlich etliche Programme, die per telnet was ausloesen, stoeren wuerde. Vermutlich waere es aber ok, wenn das motd vor dem ersten Prompt (fhem> ) kommen wuerde. Eure Meinung?
Titel: Antw:[patch] fhem.pl - Hinweismeldung im Frontend bei Fehlern während fhem-Start
Beitrag von: justme1968 am 02 April 2014, 13:29:37
du hast recht. ich habe aber leider keine gute idee wie man das vermeiden kann.

da sind wir übrigens auch wieder bei dem alten problem das ich so lange kein fhem> prompt habe bis ich eine leerzeile eingebe. das finde ich aber sehr positiv weil so copy und paste viel besser geht und ich mich jedes mal ärgere wenn der prompt kommt.
Titel: Antw:[patch] fhem.pl - Hinweismeldung im Frontend bei Fehlern während fhem-Start
Beitrag von: betateilchen am 02 April 2014, 13:47:36
ich hab grad nochwas entdeckt - momentchen.
Titel: Antw:[patch] fhem.pl - Hinweismeldung im Frontend bei Fehlern während fhem-Start
Beitrag von: betateilchen am 02 April 2014, 13:54:55
So, jetzt nochmal...

Zitat von: rudolfkoenig am 02 April 2014, 13:10:16
@betateilchen: habs etwas zusammengefasst, und auf "auto-delete" umgestellt, kannst du bitte pruefen, ob es noch funktioniert?

getestet und folgenden Bug gefunden:

falsch:


if($cfgRet) {
  $attr{global}{motd} = "$cfgErrMsg,\ncheck the Logfile for details.";


richtig:


if($cfgRet) {
  $attr{global}{motd} = "$cfgErrMsg\n$cfgRet\ncheck the Logfile for details.";


Sonst werden die gesammelten Fehlermeldungen nicht - wie vorgesehen - angezeigt.

Ansonsten habe ich den Positiv- wie den Negativfall sowohl mit fhem.cfg als auch mit configDB erfolgreich getestet.
Titel: Antw:[patch] fhem.pl - Hinweismeldung im Frontend bei Fehlern während fhem-Start
Beitrag von: betateilchen am 02 April 2014, 14:21:06
Zitat von: rudolfkoenig am 02 April 2014, 13:10:16Vermutlich waere es aber ok, wenn das motd vor dem ersten Prompt (fhem> ) kommen wuerde. Eure Meinung?

Dazu kann ich keine Meinung äußern, da ich mit telnet nicht arbeite.
Aber vermutlich hast Du mit der Ausgabe vor dem ersten Prompt recht.
Titel: Antw:[patch] fhem.pl - Hinweismeldung im Frontend bei Fehlern während fhem-Start
Beitrag von: betateilchen am 03 April 2014, 11:08:38
damit Rudi es nicht vergißt/übersieht: *hochschubs*
Titel: Antw:[patch] fhem.pl - Hinweismeldung im Frontend bei Fehlern während fhem-Start
Beitrag von: rudolfkoenig am 03 April 2014, 14:14:04
@betateilchen: Bug ist das sicher keins, hoechstens unpraktisch. Ich weise bereits in der Meldung darauf hin, dass die Details in der Log zu finden sind, wenn ich die Fehler auch ausgebe, dann kann ich den Hinweis sparen. Ich finde es so "ordentlicher", aber das ist sicher Ansichtssache.

@justme1968: habe gerade gesehen, dass telnet diese Meldung vor dem ersten Prompt bereits jetzt schon ausgibt.
Titel: Antw:[patch] fhem.pl - Hinweismeldung im Frontend bei Fehlern während fhem-Start
Beitrag von: betateilchen am 03 April 2014, 14:22:33
Zitat von: rudolfkoenig am 03 April 2014, 14:14:04
@betateilchen: Bug ist das sicher keins, hoechstens unpraktisch.

hm, dann hab ich Deine Intention im Coding falsch interpretiert. (Obwohl sich ja auch kein Problem daraus ergeben würde, gleich die gesammelten Fehlermeldungen mit auszugeben, wenn man schon darauf hinweist, dass welche exisiteren)

Ok, ich warte dann mal, bis der erste User danach fragt, warum man die eigentliche Fehlermeldung nicht gleich angezeigt bekommt  8)