Autor Thema: fhem.save und at-Devices mit VOLATILE=1 -> Messages collected bei FHEM Start  (Gelesen 1085 mal)

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8418
Hallo zusammen,

ich habe manchmal at-Devices (automatisch) definiert, welche mit VOLATILE=1 angelegt werden.
D.h. diese Definition wird in der fhem.save gesichert.
Im DEF der Devices ist ein kleiner Perl-Code definiert wie z.B.:

2022-06-09T01:15:00 {
  my $dev        = "SynFile";
  my $folder     = "/FHEM-Prod/%Y_%m_";
  my $folderres  = strftime "$folder", localtime(time-1728000);  # heute - 20 Tage
 
  for my $d (1..31) {
      my $d     = sprintf "%02d", $d;
      my $fstr  = $folderres.$d;
      my $fstr1 = $folderres.$d."_Full";
      CommandSet (undef, qq{$dev deleteRemoteObject "$fstr"});
      CommandSet (undef, qq{$dev deleteRemoteObject "$fstr1"});
  }
}

Beim Start von FHEM erscheint dann die Meldung:

Messages collected while initializing FHEM:./log/fhem.save: Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command for, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command CommandSet, try help.
Unknown command CommandSet, try help.
Unknown command }, try help.
Unknown command }, try help.

Die at-Definition wird dennoch völlig korrekt angelegt, aber die Meldung stört doch.

Ich bin nun der Meinung, dass in fhem.pl die sub WriteStatefile() evtl. ergänzt werden müsste.
Es werden dort bereits die ";" escaped mit

$def =~ s/;/;;/g;

Müssten nicht auch die Zeilenumbrüche mit "\" escaped werden damit am Ende so etwas in die fhem.save geschrieben wird ?:

2022-06-09T01:15:00 {\
  my $dev        = "SynFile";;\
  my $folder     = "/FHEM-Prod/%Y_%m_";;\
  my $folderres  = strftime "$folder", localtime(time-1728000);;  # heute - 20 Tage\
  \
  for my $d (1..31) {\
      my $d     = sprintf "%02d", $d;;\
      my $fstr  = $folderres.$d;;\
      my $fstr1 = $folderres.$d."_Full";;\
      CommandSet (undef, qq{$dev deleteRemoteObject "$fstr"});;\
      CommandSet (undef, qq{$dev deleteRemoteObject "$fstr1"});;\
  }\
}

Vielleicht liege ich falsch, aber in der fhem.cfg werden solche Strukturen in dieser Form abgelegt. Bei fhem.save fehlt das "\".

Schöne Pfingsten !
Heiko
ESXi 6.5 @NUC6i5SYH mit FHEM auf Debian 10, DbLog/DbRep mit MariaDB auf VM
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25819
Zitat
Müssten nicht auch die Zeilenumbrüche mit "\" escaped werden ...
Doch, habs eingebaut, mit deinem Beispiel getestet und eingecheckt.

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8418
Danke Rudi  :)
ESXi 6.5 @NUC6i5SYH mit FHEM auf Debian 10, DbLog/DbRep mit MariaDB auf VM
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

 

decade-submarginal